Linux Font Rendering Stack
-
0:06 - 0:09Okay, good morning everyone.
-
0:09 - 0:13I'm going to talk about the
Linux Font Rendering stack, -
0:13 - 0:19and that is what I learned the last
four and a half years. -
0:19 - 0:22I worked at the
city administration of Munich. -
0:23 - 0:28For introduction to font rendering,
-
0:30 - 0:35I can say writing is
the most used interface, -
0:35 - 0:39or probably the most used interface
between humans and the machines. -
0:39 - 0:46So all of you probably use it everyday
on your computer. -
0:48 - 0:53Screen text is replacing text on paper
more and more -
0:53 - 0:57and this is still an ongoing process.
-
1:01 - 1:09The way from a string in a computer to
display text is surprisingly complex, -
1:09 - 1:15And writing in itself is quite profound.
-
1:15 - 1:25For example, it's influenced by history
so probably all, or at least most, -
1:25 - 1:31writing systems are derived from some
pictograph writing systems. -
1:31 - 1:34This is also true for Roman letters.
-
1:36 - 1:44And also the Roman letters themselves,
they changed a lot since 2000 years ago. -
1:44 - 1:51In the Roman Empire they used some
different letters than we use now. -
1:51 - 1:57So the goal of this talk is to raise
awareness of font rendering in computing, -
1:57 - 2:01with the focus on the Linux desktop.
-
2:05 - 2:12Now to the history,
and then I talk about typography. -
2:14 - 2:17Text display in early computing.
-
2:17 - 2:25In early computing it was just
a way to display results. -
2:26 - 2:30Before that there were
only flashing lights -
2:30 - 2:34where you can read the results
and... -
2:36 - 2:40[audience member] ??... BT100
?? raise your hand -
2:43 - 2:48[Max] And the output device receives
a page or a character stream, -
2:48 - 2:52and then the presentation is the job
of the output device. -
2:52 - 2:58So for example, a typewriter
or a printer or a terminal. -
2:58 - 3:06And this is a BT100
you can see on the right side. -
3:06 - 3:08So this is a real terminal.
-
3:13 - 3:19But going on in history
there's the home computer era. -
3:22 - 3:26In the home computer era you have
fixed character sets -
3:26 - 3:32and most of the time due to system
limitations, memory limitations, -
3:32 - 3:36you have graphics mode and text mode.
-
3:38 - 3:47In the graphics mode you can basically
set the pixels more or less as you want, -
3:47 - 3:53and in the text mode you can use fonts.
-
3:56 - 4:00The screen configuration at that time
is more or less defined -
4:00 - 4:02by the state of technology.
-
4:02 - 4:08So every screen at that time has more or
less the same resolution, -
4:08 - 4:16and that's something that the engineers
of that time relied on, -
4:16 - 4:18and also software engineers relied on.
-
4:20 - 4:25The text rendering was just
using bitmap fonts. -
4:25 - 4:37That means you have a fixed size character
and you just define it pixelwise -
4:39 - 4:45so it's some kind of hand-crafted
characters. -
4:45 - 4:51You have a given raster and then
you really display -
4:51 - 4:54these hard-defined characters.
-
5:00 - 5:07So then I need to introduce a few
typography terms. -
5:12 - 5:16First, there's glyph or a character.
-
5:21 - 5:25That's...well you can say a symbol.
-
5:27 - 5:32So I think most people can understand what
that means. -
5:32 - 5:36Then a font, this is a set of glyphs.
-
5:38 - 5:45And then we have a collection of fonts,
that is called typeface or font family. -
5:45 - 5:53Those are closely related fonts with
the same visual appearance, -
5:53 - 6:00And they differ only in slopes or widths
or weights for example. -
6:04 - 6:12Usually with typesetting, with moving
letters in the printing press, -
6:12 - 6:25you really had, for weight for example,
different pieces/letters/hardware. -
6:28 - 6:31And then the point size,
or typographic unit. -
6:33 - 6:42This is a measure of the size, and
derives directly from the printing press -
6:42 - 6:45with moving letters.
-
6:48 - 6:56There are different definitions, and what
we probably all use as point size is the -
6:56 - 7:04DTP point – desktop publishing point,
-
7:04 - 7:19where one point is defined as 1/72 inch,
which is 0.3527 period millimeters. -
7:19 - 7:26It is interesting to note that this has
nothing to do with pixels. -
7:29 - 7:31[audience] (unintelligible question)
-
7:31 - 7:35[Max] Please use the microphone
if you a question. -
7:36 - 7:39[audience] ...3257, what's the bar
over the 7 mean? -
7:39 - 7:43[Max] It means that the 7 goes
on and on and on forever. -
7:51 - 7:58So this is typography of the
Latin alphabet...terminology. -
7:58 - 8:02There's something called kerning.
-
8:02 - 8:08You can see an example of kerning
on the right side. -
8:08 - 8:19So in the printing press you have letters
and they usually have a gap. -
8:21 - 8:30To improve the readability, and to
make all the text appear more uniform -
8:31 - 8:34the typesetter reduces the gap.
-
8:36 - 8:40With moving letters they have special
letter pairs... -
8:41 - 8:46if you go on with this
there are ligatures, -
8:46 - 8:51which are replacement glyphs for close
standing characters. -
8:52 - 8:57An example of this is
a double f, fi or fl. -
8:58 - 9:05So you can see also in the slides here
that double f is such a ligature. -
9:06 - 9:09It's one connected glyph.
-
9:11 - 9:16And then there's a speciality
if you reverse all of the ?? [static]. -
9:18 - 9:20The term non-proportional font.
-
9:20 - 9:27So you have a font where very character,
every glyph, has the same width. -
9:27 - 9:31This is also called monospace font.
-
9:34 - 9:41Sometimes you distinguish half-width
and full width letters. -
9:41 - 9:46This is also something you would see
on a typewriter for example. -
9:47 - 9:54Early bitmap fonts are usually
monospaced fonts. -
9:56 - 10:02Okay, let's go to
the text rendering stack. -
10:07 - 10:09Text rendering today.
-
10:10 - 10:15In all computing nowadays,
typography is introduced. -
10:15 - 10:24So won't find many devices on the market
which don't use accurate typography. -
10:28 - 10:32Glyphs are now represented as
size-independent outlines. -
10:32 - 10:38We can see on the right side there's
a font editor: Font Forge. -
10:38 - 10:42This is the way that such fonts
are created. -
10:42 - 10:47So you can see here in the picture
the outline of the "S". -
10:49 - 10:56It's a size-independent outline and
you can just use that for -
10:56 - 10:59every kind of display.
-
10:59 - 11:04And then you do something that is called
rasterization, or sampling, or rendering -
11:04 - 11:08for displaying it at the actual display.
-
11:10 - 11:14In the past this allowed for new
applications for computers. -
11:14 - 11:20First it allowed word processing and
computer-based typesetting. -
11:21 - 11:26Before that typesetting was
a very hard job. -
11:27 - 11:31It allowed internationalization.
-
11:37 - 11:42It allows universal graphical interface
which goes -
11:42 - 11:45hand-in-hand with internationalization.
-
11:46 - 11:52Come to think of it, not so long ago it
was not so common that you could -
11:52 - 11:58buy devices where you can easily switch
the language to -
11:58 - 12:02any language you would like.
-
12:02 - 12:05This is just a recent development.
-
12:07 - 12:16So now I will give you an overview of
the formats we see on Linux systems. -
12:16 - 12:19First I talk about the bitmap formats.
-
12:19 - 12:27Today we have bitmap formats in the
PC Screen Font format, -
12:27 - 12:29PSF or PSFU.
-
12:29 - 12:36These are the fonts that are used for the
Linux VT, also known as the console. -
12:36 - 12:46Usually you can store in such a font
256 or 512 glyphs. -
12:46 - 12:53Some of them contain
a Unicode translation table. -
12:54 - 13:00And on the other hand there are
X Window System Bitmap Fonts. -
13:00 - 13:03There are three formats:
-
13:03 - 13:07There's a Sever Normal Format (SNF).
-
13:07 - 13:11Glyph Bitmap Distribution Format (BDF).
-
13:11 - 13:14And Portable Compiled Format (PCF).
-
13:14 - 13:23Nowadays PCF is the only letter that
you can find on a Linux system if so, -
13:23 - 13:29and the first two are deprecated.
-
13:29 - 13:40And also the X Window Bitmap Fonts
themselves are not very common these days. -
13:45 - 13:47To the outline font formats.
-
13:49 - 13:52There are Postscript Formats.
-
13:54 - 14:05Postscript Formats have different versions
as I would call them. It's called types. -
14:05 - 14:12Type 1 is the one that is still relevant,
to a certain degree. -
14:12 - 14:17Those are the ones you can probably
-
14:17 - 14:21find on a standard Debian installation
for example. -
14:21 - 14:24It uses cubic bezier curves.
-
14:26 - 14:36The file format is divided into
different files. -
14:36 - 14:40So for every font you have
Printer Font ASCII -
14:40 - 14:44or a Printer Font Binary file,
and you have -
14:44 - 14:49a Print Font Metric or
Adobe Font Metric file. -
14:55 - 15:01Then you have the Truetype file format.
-
15:03 - 15:08This is more common. I guess everyone
heard of that already. -
15:09 - 15:12It uses quadratic bezier curves.
-
15:14 - 15:21It can contain optional code for
TrueType Hinting Virtual Machine. -
15:21 - 15:25What that means I will explain latter.
-
15:25 - 15:31There's a third format,
the OpenType format, -
15:31 - 15:35which has two possible glyph formats:
one is TrueType, -
15:35 - 15:41and the other is Compact Font Format,
which is based on Postscript Type 2. -
15:41 - 15:48So you can say what is new in this format,
or what's the difference? -
15:48 - 15:52Well it supports so-called Smartfonts.
-
15:54 - 16:00That means you can have language-specific
ligatures or character substitutions. -
16:01 - 16:10For example, kerning classes, which means
you have a class of characters like -
16:10 - 16:14the A and different variations.
-
16:14 - 16:20So these are A with different diacritic
symbols, -
16:20 - 16:31and you can just use one kerning class for
all of those characters and don't have to -
16:31 - 16:38invent the wheel for every A with
diacritic symbols anew. -
16:44 - 16:50Now to the font rendering techniques that
I use today. -
16:54 - 17:02This only applies to the outline fonts
because well rendering bitmap fonts is -
17:02 - 17:11obviously quite easy. You just paint the
pixels that are in the bitmap. -
17:11 - 17:17So rasterization is all about using
outline fonts. -
17:19 - 17:25The one library library that is used all
over the free and open source world -
17:25 - 17:26is FreeType.
-
17:26 - 17:41It is used on Linux system, BSD desktops,
Android, and ReactOS, and some others. -
17:41 - 17:47For example it is contained in Ghostscript
and therefore in most of the printers. -
17:49 - 17:52It's also on iOS [exhale].
-
17:53 - 18:00So the naive rasterization algorithm would
be just lay a pixel raster over the -
18:00 - 18:06outline font, over the character you want
to display, and if the center of the pixel -
18:06 - 18:10is inside the outline then you
set the color to black. -
18:15 - 18:19The problem is the so called
aliasing effect. -
18:19 - 18:24This is what you can see
in the picture below. -
18:24 - 18:30So those are the same words,
rendered at different resolutions. -
18:30 - 18:36The left one has 10x the resolution
of the right one. -
18:39 - 18:50You can see that, for example,
the 'w' is quite deformed. -
18:50 - 18:55Or the curl of the 'g';
there's even a part missing. -
18:55 - 19:00So you have details of the font
which are lost, -
19:00 - 19:02and you have artefacts.
-
19:04 - 19:12Somehow, especially in the early computing
days you wanted to reduce those, -
19:12 - 19:15and therefore you used a technique
called hinting. -
19:15 - 19:21This is to avoid such artefacts and
improve the readability -
19:21 - 19:23at lower resolutions.
-
19:23 - 19:35Therefore the outline is adjusted to fit
the pixel raster at the rasterization. -
19:37 - 19:42Some of the fonts can contain
instructions, the so-called hints -
19:42 - 19:46where the the name comes from:
"hinting". -
19:51 - 19:59You can see in the example here,
in the picture above, -
19:59 - 20:08that it's quite a good result.
-
20:08 - 20:15This is much more readable
than the word above. -
20:15 - 20:23However, with the use of hinting, there
are also characteristics of the font lost -
20:24 - 20:28which is obvious because
if you change the outline -
20:28 - 20:31then obviously characteristics get lost.
-
20:31 - 20:37And especially important for
word processing, -
20:37 - 20:40what you see is what you get
word processing, -
20:40 - 20:44is that the tracking
of the font is changed. -
20:46 - 20:50So tracking means the width
of single characters. -
20:50 - 20:57The picture below, this is a picture I
took from LibreOffice. -
20:57 - 21:05If you have a close look, you can see
that the gap between those 'i' characters -
21:05 - 21:07is not always the same.
-
21:08 - 21:17But if do word processing, you actually
want to have a result which looks the same -
21:17 - 21:19as on the printout.
-
21:20 - 21:27So I would recommend not
to hint fonts in -
21:27 - 21:30a what you see is what you get
word processor. -
21:34 - 21:41If you have a look beyond the backyard,
on macOS there exists no hinting, -
21:41 - 21:46and in the Windows world, hint can't
be turned off, -
21:46 - 21:52so this is hardwired in the
font rendering of the Windows system. -
21:56 - 22:03Well another approach to improve
readability is anti-aliasing -
22:03 - 22:08which applies multisampling.
-
22:08 - 22:16So for every pixel you take samples at
different spots -
22:16 - 22:22and then you compute from
that a gray value, -
22:22 - 22:29which is a measure of how much of the
area of the pixel is covered by the glyph. -
22:33 - 22:40On the picture you can see again
the simple raster word, -
22:40 - 22:46and then in the middle you see the word
with anti-aliasing, -
22:46 - 22:56and below you can see a combination of
hinting and antialiasing. -
22:59 - 23:03Suddenly the text becomes very readable
also on low resolutions. -
23:05 - 23:12This is what was usually used in
computing in the 90s. -
23:18 - 23:24So there is another approach to improve
and therefore I have to -
23:24 - 23:27talk a bit about LCD displays.
-
23:27 - 23:37So in the picture on the left, above you
can see tube monitor pixels and -
23:37 - 23:41on the bottom you can see
LCD monitor pixels. -
23:41 - 23:50All of the pixels consist of so-called
subpixels with different colors. -
23:52 - 23:56The mixture of the three different colors
-
23:56 - 24:02gives them a wide range
of different colors. -
24:05 - 24:13With the tube monitors this is not used,
but with LCD display -
24:13 - 24:19depending on the
configuration of the subpixels -
24:19 - 24:23it can be used to improve improve the
resolution in one direction. -
24:23 - 24:29Therefore you have to know how the
configuration of the display is. -
24:29 - 24:37So usually, one pixel, which you can see
in the picture below right? -
24:37 - 24:40These are the usual computer monitors.
-
24:40 - 24:52One pixel consists of a red, green and a
blue subpixel in this order. -
24:52 - 24:58But you have to keep in mind, especially
with tablets, or smartphones, -
24:58 - 25:05you can rotate the screen, so you have to
keep that in mind. -
25:06 - 25:11Also there are other subpixel
configurations. -
25:11 - 25:18For example, depending on the technology
there can be additional red or green -
25:18 - 25:20or even white subpixels.
-
25:24 - 25:30So there are also multiple possibilities
of the configuration. -
25:34 - 25:40We can use this configuration as I said
to improve the resolution -
25:40 - 25:45and in the usual case
this is horizontally. -
25:45 - 25:50You can see on the picture
on the left side, -
25:53 - 25:59first there's the naive,
simple rendered character, -
25:59 - 26:04then the character
just using anti-aliasing, -
26:04 - 26:08and then there's the
subpixel rendered character. -
26:10 - 26:16This one is the most readable
or most sharp character. -
26:16 - 26:25Not sharp!... but it's most correctly
rendered according to the outline font. -
26:26 - 26:31Depending on the technique of the display,
-
26:31 - 26:41you can see a color haze
around the characters. -
26:44 - 26:49So this happens when the software
and the display technology -
26:49 - 26:52don't match each other.
-
26:54 - 26:59So this is what you can see
on the picture on the right. -
27:01 - 27:08Okay, let's talk about the font rendering
software parts in the Linux desktop. -
27:11 - 27:15There's the so-called server-side
text rendering. -
27:17 - 27:22So in the X server there's the
Core Font subsystem. -
27:25 - 27:32With that, X11 clients can request the
server to display a text -
27:32 - 27:36by sending a string via libXfont
-
27:36 - 27:45and using the so-called
X Logical Font Description (XLFD). -
27:45 - 27:53Here's an example for Adobe Career font,
-
27:53 - 28:03then the X server has to
render the text using the font. -
28:06 - 28:11If you imagine a terminal server setup
with thin clients, -
28:11 - 28:18then the thin client runs the X server
and the terminal server runs the X client -
28:18 - 28:28and every thin client then has to
handle the font rendering. -
28:28 - 28:35So I don't know if
this is the only reason, -
28:35 - 28:41but nowadays server-side font
rendering is not so common. -
28:41 - 28:48Probably not used anymore.
-
28:53 - 28:56Now I have to talk first
about font management. -
28:56 - 29:02In Linux systems there is
a software called fontconfig, -
29:02 - 29:05which manages installed fonts
on the system -
29:05 - 29:16and it configures for example how to
substitute fonts. -
29:17 - 29:24For example if in a document there's a
font to render a text -
29:24 - 29:27and the font is not
available on the system -
29:27 - 29:34then in the font config system there can
be rules to replace the font -
29:34 - 29:37with a similar font.
-
29:37 - 29:41This is heavily used in Linux systems.
-
29:41 - 29:48There are also rules for what font to
use if the current selected font -
29:48 - 29:51doesn't contain a character
you want to display. -
29:53 - 29:59You can see on the picture on the right
that this is also used... -
29:59 - 30:02although I have to admit,
-
30:02 - 30:08I had to take this picture on a Debian 5.0
system in LibreOffice -
30:08 - 30:12because nowadays
it works a bit different, -
30:12 - 30:18but this is a good example where
you can see that those characters -
30:18 - 30:21come from different fonts actually.
-
30:23 - 30:28There's also a command line tool
which is quite nice. -
30:28 - 30:30fc-match command line tool.
-
30:30 - 30:37So for example if you want to see what is
the replacement font for, let's say, Arial -
30:37 - 30:41then you get the output:
okay, it's Nimbus Sans. -
30:45 - 30:48And you can also set rendering options,
-
30:48 - 30:56which means you can set anti-aliasing
or you can turn off hinting. -
31:00 - 31:07Usually these configurations are stored in
/etc/fonts -
31:07 - 31:12and there is also a per-user configuration
in .config/fontconfig -
31:12 - 31:20and it's in XML file format snippets.
-
31:22 - 31:25In the picture you can see an example.
-
31:25 - 31:33This is the replacement rule for
Carlito and Calibri. -
31:36 - 31:42Carlito is a replacement font for the
nowadays often used -
31:42 - 31:44Calibri font from Microsoft.
-
31:46 - 31:54So this configuration says the one way,
Carlito is the same as Calibri, -
31:54 - 31:56and the other way around.
-
31:56 - 31:58This is just an example,
-
31:58 - 32:04you can have a look at /etc/fonts
and a lot of such snippets. -
32:07 - 32:13It defines how fonts are
displayed on the system. -
32:16 - 32:24Another thing, and this is the reason
why I had to take the screenshot -
32:24 - 32:30on an older system, there's a piece of
software called HarfBuzz. -
32:30 - 32:35HarfBuzz is Persian for OpenType,
-
32:35 - 32:41so this software relies on the OpenType
font format. -
32:41 - 32:46You can see on the right side
the HarfBuzz logo -
32:46 - 32:50that actually says
HarfBuzz in Persian. -
32:54 - 32:56Before I talked about ligatures,
-
32:56 - 33:03In some languages ligatures are required
to render fonts correctly -
33:03 - 33:09and this is an example on the left of
Devanagari, which is an Indic script. -
33:12 - 33:18So if you have the first two characters
combined then this is the rule -
33:18 - 33:24of how to replace those characters
with a third glyph. -
33:29 - 33:34There were early implementations
by Qt and Pango -
33:34 - 33:39and those were integrated in HarfBuzz.
-
33:41 - 33:45Well those parts are now known as
Harfbuzz Old, -
33:45 - 33:50and the current HarfBuzz is a rewrite.
-
33:52 - 33:57Nowadays it's also used for
the so-called simple script, -
33:59 - 34:04meaning especially Latin script,
-
34:04 - 34:12and is integrated into Qt, GTK,
LibreOffice, Firefox, Android, and XETEX. -
34:12 - 34:15This is what I use for the slides here,
-
34:15 - 34:21so all the slides here are
also rendered using HarfBuzz. -
34:21 - 34:25And of course the whole
font rendering stack. -
34:26 - 34:35HarfBuzz also has fancy features like
variable widths or weight -
34:35 - 34:46with only one font or you can define
in the font characters with -
34:46 - 34:56variable widths and without stepping you
can change it using HarfBuzz. -
35:00 - 35:05Those techniques are used in
client-side rendering. -
35:07 - 35:15One library often was
until recently often used, Xft. -
35:18 - 35:22Well this is the applications meaning the
X clients render the text -
35:24 - 35:27based on FreeType and fontconfig.
-
35:28 - 35:31Then the X server
only displays the results. -
35:32 - 35:36Well, there is some caching involved,
-
35:36 - 35:42and it requires
an extension to the protocol. -
35:51 - 35:56In the widget libraries this was also
used a long time, -
35:56 - 36:02but now Qt, for example, has its own
code for font rendering -
36:02 - 36:05based on HarfBuzz, FreeType,
and fontconfig. -
36:05 - 36:09There's the combination of
Pango and Cairo, -
36:09 - 36:13which is used in the GTK environment.
-
36:13 - 36:23Pango derives from Greek and Japanese:
pan means all and go means languages. -
36:23 - 36:30So this is the background to write
in all languages. -
36:30 - 36:34This also uses HarfBuzz, FreeType,
and fontconfig. -
36:34 - 36:40And if you look at Wayland clients,
they only do client-side rendering. -
36:43 - 36:48To sum it up, we have a variety of
techniques for text display. -
36:50 - 36:54Some have historical than
practical value nowadays. -
36:54 - 36:59The modern font rendering stack
is quite complex. -
37:04 - 37:09But writing is one of the
main interface to computers, -
37:09 - 37:12so developers should be aware
of the complexity. -
37:14 - 37:17Keep that in mind.
-
37:18 - 37:19Thank you.
-
37:20 - 37:24[applause]
-
37:34 - 37:35Are there any questions?
-
37:41 - 37:45[audience] More a request than a question,
I find the topic very interesting -
37:45 - 37:51and I'd like to check it again. I know
your video was not recorded -
37:51 - 37:54or I think it was not recorded...
-
37:54 - 37:57[Max] Well it was I think.
-
37:58 - 38:05[audience] Okay so nevermind, but still
if you are able to share your presentation -
38:05 - 38:05[Max] Yes
-
38:05 - 38:08[audience] I would be very
happy to look at it. Thank you. -
38:17 - 38:26[audience] [tests mic] What's
the problem due to the -
38:26 - 38:33complexity from the software stack
in your open ??. -
38:33 - 38:36[Max] The problem of what?
-
38:36 - 38:48[audience] What's the problem it came from
this complex software stack -
38:48 - 38:50in your open ??.
-
38:50 - 38:59There's no problem with that,
or there's some problem -
38:59 - 39:11with these lot of layers, very lot of
components to render the font. -
39:11 - 39:17[Max] Okay, I try to rephrase the question
[audience] Please. -
39:17 - 39:23[Max] What is the reason there is so many
layers in the font rendering stack today. -
39:23 - 39:24[Max] Is that correct?
-
39:24 - 39:38[audience] And it caused some problem. Do
you know any problem -
39:38 - 39:42with current font rendering system.
-
39:42 - 39:44[Max] Colored font rendering system?
-
39:44 - 39:46[audience] Current, now.
-
39:48 - 39:49[Max] Ah current font-
-
39:49 - 39:52[audience 2] The question is
whether the complexity -
39:52 - 39:56means that there are
difficulties for developers. -
39:56 - 39:57Is it too complex?
-
39:57 - 39:58Does that cause problems?
-
39:58 - 40:03[Max] Well the complexity is hidden behind
the font rendering stack. -
40:03 - 40:11So it's a huge collection of software,
-
40:11 - 40:18usually there's HarfBuzz, fontconfig,
and FreeType heavily used nowadays. -
40:18 - 40:22But it's all encapsulated
in these libraries -
40:22 - 40:29and it's used all over
the free software world -
40:30 - 40:39and it makes it easy to write applications
which are easily translatable. -
40:40 - 40:48[audience] Yes but for example,
the fontconfig is not so flexible. -
40:48 - 40:55For example, when we're using
mainly Japanese -
40:55 - 41:02and other display of the language,
-
41:02 - 41:13then the font of config chooses the
non-Japanese font like the Chinese one. -
41:13 - 41:28I know some distributions like Ubuntu make
language specific fontconfig file -
41:28 - 41:36for each language to deal with but
Debian doesn't have such a mechanism. -
41:39 - 41:48So in my opinion the fontconfig
is a bit terrible so -
41:48 - 41:55is there any ?? meant or any hack for it?
-
41:55 - 42:05[Max] Okay, the fontconfig system comes
from the time where XML was popular. -
42:05 - 42:07[audience] Mhmm
[Max] As you can see. -
42:09 - 42:15Well the problem here is
not so much the software stack -
42:15 - 42:19more than the Unicode system.
-
42:19 - 42:25So in the Unicode system there are
same code points for -
42:25 - 42:31Japanese and Chinese characters somewhere
although they have different appearances. -
42:31 - 42:39In the fontconfig system there are
replacement rules for characters -
42:39 - 42:48and it is just a list and usually Chinese
fonts are listed first. -
42:48 - 42:55So that is the reason why in the Japanese
language you get Chinese characters -
42:55 - 42:57instead of Japanese characters.
-
42:57 - 43:02So I also think there's room to improve
the software stack, yes. -
43:02 - 43:03[audience] Thank you.
-
43:16 - 43:20[Max] Okay, done. Thank you.
-
43:20 - 43:25[applause]
- Title:
- Linux Font Rendering Stack
- Description:
-
Displaying text is the most common interface to convey information from computer systems to humans. On a Linux system there is a variety of techniques for rendering text some of which are used more or less on modern systems. Many of those text rendering techniques originate from different time periods of computing history and rendering text in graphical environments is more complex than often thought off.
We find two approaches in Linux systems for displaying text: - using bitmap fonts designed for fixed resolution displays - rendering text based on scalable glyph shapes using a stack of software components for rasterisation, text shaping and text layout.
This talk will give an overview on the different techniques, software and standards for font rendering on Linux systems in the context of their historical origins.
Speaker: Max Harmathy
At: DebConf18 - Video Language:
- English
- Team:
- Debconf
- Project:
- 2018_debconf18
- Duration:
- 43:31
scribblemaniac edited English subtitles for Linux Font Rendering Stack | ||
scribblemaniac edited English subtitles for Linux Font Rendering Stack | ||
scribblemaniac edited English subtitles for Linux Font Rendering Stack | ||
scribblemaniac edited English subtitles for Linux Font Rendering Stack |