2nd revision of my post. Reorganized headings and tried to better
explain the blending examples.
diff --git a/index.html b/index.html
index c92d541..e4493a0 100644
--- a/index.html
+++ b/index.html
@@ -106,71 +106,9 @@
<p>FreeType 2.6.2 ships with three interesting details for
users and developers of rendering libraries that deal with
- text.</p>
-
-
- <h5>The default LCD filter for subpixel rendering has been
- changed</h5>
-
- <a href="image/freetype-262-new-old-filter.png">
- <img src="image/freetype-262-new-old-filter-thumbnail.jpg"
- alt="Comparison of the old and new filter."></a>
-
- <p>When you look at subpixel-rendered text, no matter
- whether it is on some kind of Unix, Windows, or Mac
- OS X, you might notice that it is slightly colored.
- Using subpixel rendering on LCD panels is a trade-off; you
- get three times higher resolution in the direction of the
- pixel-substripe (usually horizontal RGB) in exchange for
- color artifacts, also called <em>color fringing</em>. For
- this reason it is necessary to filter a subpixel-rendered
- glyph to reduce those color-fringing before putting it
- somewhere on the screen. The filter distributes the
- values of a subpixel to its neighbors, sacrificing some of
- the higher resolution and making the resulting glyph image
- blurrier â but the positioning improvement remains! The
- ideal filter for you depends on your screen (gamma
- curves!), the capabilities of the used rendering system
- (linear alpha blending and gamma correction!), your vision
- and your taste, probably in that order.</p>
-
- <p>A filter should have two properties: it should be
- normalized, meaning the values used in the filter should
- sum up to a figurative 1 (here: 0x100 or 256) and it
- should be color-balanced, meaning that values for one
- subpixel are equally distributed to all other subpixels of
- a pixel to sacrifice some of the higher resolution to
- drastically reduce color-fringes.</p>
-
- <p>Previously, FreeType's default LCD filter was neither
- normalized nor color-balanced. That was a deliberate
- choice because there is still no rendering system on
- *nixes that does linear alpha blending and gamma
- correction by default to render glyphs correctly. Going
- above a filter sum of 1 increased contrast somewhat
- at the expense of slight distortions and increased
- color-fringing, so this can be seen as a hack. You might
- have noticed that thumbnails in various places on your
- computer that show text could be quite colorful. Now you
- know why.</p>
-
- <p>The new default filter is both normalized and
- color-balanced. It is indeed ever so slightly blurrier
- than the previous default one, but also lacks its
- harshness and is less color-happy. The blurriness also
- means higher tolerance for non-ideal gamma of screens
- (viewing angles!) and rendering systems without linear
- alpha blending. Note that color-fringing can only be
- really minimized when the rendering system will do linear
- alpha blending of text.</p>
-
- <p>The ‘light’ filter that has accompanied the
- default one for so long stays unchanged: it already is
- normalized and color-balanced. It is sharper than the
- default one but less tolerant of uncalibrated screens and
- rendering systems without linear alpha blending, producing
- more color-fringes.</p>
-
+ text. <em>This is the 2nd revision of my post, done on 2015-12-06.
+ I reorganized the headings and tried to better explain the blending
+ examples.</em></p>
<h5>(S)light hinting will invoke the native hinter if possible</h5>
@@ -243,8 +181,7 @@
one, as Ubuntu has proven over the years.</p>
- <h5>Stem darkening for the auto-hinter (disabled by default), also
- disabling stem darkening for the OpenType/CFF driver</h5>
+ <h5>Experimental: Stem darkening for the auto-hinter</h5>
<a href="image/freetype-262-autohinter-stem-darkening-demo1.png">
<img src="image/freetype-262-autohinter-stem-darkening-demo1-thumbnail.jpg"
@@ -292,7 +229,7 @@
rather than the exception.</p>
<p>This is relevant because all our screens have a second
- problem: they are not linear. 1 + 1 is
+ problem: they are not linear. 1 + 1 is
not 2. Twice the value does not result in twice the
brightness. When a pixel is only 50% covered, the
coverage map says 50% black, and this translates to a
@@ -332,13 +269,6 @@
with <a href="http://lists.nongnu.org/archive/html/freetype-devel/2015-11/msg00020.html">as
little color-fringing as possible</a>.</p>
- <a href="image/BlendingExamples.png">
- <img src="image/BlendingExamples-thumbnail.jpg"
- alt="Comparison of different ways of blending."></a>
-
- <p>We want to get to ‘Gamma 1.8, darkened’.
- Note how it is the cleanest rendering of all.</p>
-
<h6>Back to stem darkening.</h6>
<p>Assume we render fonts correctly. Gamma correction
@@ -358,20 +288,49 @@
prevents ‘thinning out’ of glyphs. Text
remains readable at smaller sizes.</p>
+ <a href="image/BlendingExamples.png">
+ <img src="image/BlendingExamples-thumbnail.jpg"
+ alt="Comparison of different ways of blending."></a>
+
+ <p>"Gamma 1.0" shows what happens when you take a grayscale coverage
+ bitmap from FreeType and blend it onto a surface in linear space.
+ Black-on-white is heavier than white-on-black and red-on-green has
+ dark halos or ‘dirt’ around it. Note that this picture is unrealistic
+ in the sense that no rendering system on X11 does linear alpha
+ blending, so imagine something worse. “Gamma 1.8” is the
+ result of linear alpha blending <em>and</em> gamma correction. It is
+ much better, but text ‘thins out’, making it harder to read. Adding
+ stem darkening gets us to “Gamma 1.8, darkened”. Note how it's the
+ cleanest rendering of all. “Gamma 1.0, darkened”, meaning linear
+ alpha blending without gamma correction but with stem darkening,
+ exaggerates the effects of “Gamma 1.0”. Stem darkening should only be
+ enabled when doing gamma correction, so ideally always ;)</p>
+
<a href="image/freetype-262-autohinter-stem-darkening-demo2.png"><img src="image/freetype-262-autohinter-stem-darkening-demo2-thumbnail.jpg" alt="Waterfall comparison of non-emboldening and emboldening autohinter."></a>
+ <p>The autohinter has a new toggable stem darkening property that
+ works like the stem darkener in Adobe's CFF engine. Note how it makes
+ text slightly bolder with the default parameters, down to small pixel
+ sizes. Gamma correction active to demonstrate the ‘thinning out’ of
+ text especially at smaller pixel sizes with lots of gray pixels.</p>
<p>And that is the story behind this feature.</p>
- <p>It is disabled by default because no library supports
- linear alpha blending and gamma correction out of the box.
- Existing libraries will get the same glyphs they have
- always gotten. Qt5 actually had gamma correction enabled
+ <h5>Disabled stem darkening for the autohinter and Adobe's CFF (.otf) engine</h5>
+
+ <p>No library supports linear alpha blending and gamma correction out
+ of the box on X11. Turning on stem darkening leads to heavy and fuzzy
+ looking glyphs as in “Gamma 1.0, darkened” above, so it's
+ better to disable it.</p>
+
+ <p>Qt5 actually had gamma correction enabled
for a short while until someone complained that text was
too light and unlike rendering in other toolkits, so the
maintainers <a href="https://bugreports.qt.io/browse/QTBUG-41590">disabled
it for the XCB-backend</a>. Skia (Chrome) can do
- gamma-correction, but turns it off for X11. I see the
- this feature as a technology preview for playing around
+ gamma-correction, but turns it off for X11.</p>
+
+ <p>I see autohinter stem
+ darkening as a technology preview for playing around
with until we get stem darkening generic within FreeType.
The plan is to provide it for all font drivers and make it
toggable per <code>FT_Library</code> just like
@@ -386,6 +345,68 @@
no longer heavy and fuzzy. Slight hinting will result in
consistent font rendering.</p>
+ <h5>The default LCD filter for subpixel rendering has been
+ changed</h5>
+
+ <a href="image/freetype-262-new-old-filter.png">
+ <img src="image/freetype-262-new-old-filter-thumbnail.jpg"
+ alt="Comparison of the old and new filter."></a>
+
+ <p>When you look at subpixel-rendered text, no matter
+ whether it is on some kind of Unix, Windows, or Mac
+ OS X, you might notice that it is slightly colored.
+ Using subpixel rendering on LCD panels is a trade-off; you
+ get three times higher resolution in the direction of the
+ pixel-substripe (usually horizontal RGB) in exchange for
+ color artifacts, also called <em>color fringing</em>. For
+ this reason it is necessary to filter a subpixel-rendered
+ glyph to reduce those color-fringing before putting it
+ somewhere on the screen. The filter distributes the
+ values of a subpixel to its neighbors, sacrificing some of
+ the higher resolution and making the resulting glyph image
+ blurrier â but the positioning improvement remains! The
+ ideal filter for you depends on your screen (gamma
+ curves!), the capabilities of the used rendering system
+ (linear alpha blending and gamma correction!), your vision
+ and your taste, probably in that order.</p>
+
+ <p>A filter should have two properties: it should be
+ normalized, meaning the values used in the filter should
+ sum up to a figurative 1 (here: 0x100 or 256) and it
+ should be color-balanced, meaning that values for one
+ subpixel are equally distributed to all other subpixels of
+ a pixel to sacrifice some of the higher resolution to
+ drastically reduce color-fringes.</p>
+
+ <p>Previously, FreeType's default LCD filter was neither
+ normalized nor color-balanced. That was a deliberate
+ choice because there is still no rendering system on
+ *nixes that does linear alpha blending and gamma
+ correction by default to render glyphs correctly. Going
+ above a filter sum of 1 increased contrast somewhat
+ at the expense of slight distortions and increased
+ color-fringing, so this can be seen as a hack. You might
+ have noticed that thumbnails in various places on your
+ computer that show text could be quite colorful. Now you
+ know why.</p>
+
+ <p>The new default filter is both normalized and
+ color-balanced. It is indeed ever so slightly blurrier
+ than the previous default one, but also lacks its
+ harshness and is less color-happy. The blurriness also
+ means higher tolerance for non-ideal gamma of screens
+ (viewing angles!) and rendering systems without linear
+ alpha blending. Note that color-fringing can only be
+ really minimized when the rendering system will do linear
+ alpha blending of text.</p>
+
+ <p>The ‘light’ filter that has accompanied the
+ default one for so long stays unchanged: it already is
+ normalized and color-balanced. It is sharper than the
+ default one but less tolerant of uncalibrated screens and
+ rendering systems without linear alpha blending, producing
+ more color-fringes.</p>
+
<p class="footnote"><a name="ft-262-1">[1]</a> This process
can cost performance. There is an approximation that does
not need to know about the background
_______________________________________________
Freetype-devel mailing list
Freetype-devel@nongnu.org
https://lists.nongnu.org/mailman/listinfo/freetype-devel