Index: include/freetype/ftlcdfil.h |
diff --git a/include/freetype/ftlcdfil.h b/include/freetype/ftlcdfil.h |
index 0b55ebee65cb39a7b80535b50ec83951196fba87..8b253f118bee14f9d406596aa86521df9456c820 100644 |
--- a/include/freetype/ftlcdfil.h |
+++ b/include/freetype/ftlcdfil.h |
@@ -53,6 +53,44 @@ FT_BEGIN_HEADER |
* *not* implemented in default builds of the library. You need to |
* #define FT_CONFIG_OPTION_SUBPIXEL_RENDERING in your `ftoption.h' file |
* in order to activate it. |
+ * |
+ * FreeType generates alpha coverage maps, which are linear by nature. |
+ * For instance, the value 0x80 in bitmap representation means that |
+ * (within numerical precision) 0x80/0xff fraction of that pixel is |
+ * covered by the glyph's outline. The blending function for placing |
+ * text over a background is |
+ * |
+ * { |
+ * dst = alpha * src + (1 - alpha) * dst , |
+ * } |
+ * |
+ * which is known as OVER. However, when calculating the output of the |
+ * OVER operator, the source colors should first be transformed to a |
+ * linear color space, then alpha blended in that space, and transformed |
+ * back to the output color space. |
+ * |
+ * When linear light blending is used, the default FIR5 filtering |
+ * weights (as given by FT_LCD_FILTER_DEFAULT) are no longer optimal, as |
+ * they have been designed for black on white rendering while lacking |
+ * gamma correction. To preserve color neutrality, weights for a FIR5 |
+ * filter should be chosen according to two free parameters `a' and `c', |
+ * and the FIR weights should be |
+ * |
+ * { |
+ * [a - c, a + c, 2 * a, a + c, a - c] . |
+ * } |
+ * |
+ * This formula generates equal weights for all the color primaries |
+ * across the filter kernel, which makes it colorless. One suggested |
+ * set of weights is |
+ * |
+ * { |
+ * [0x10, 0x50, 0x60, 0x50, 0x10] , |
+ * } |
+ * |
+ * where `a' has value 0x30 and `b' value 0x20. The weights in filter |
+ * may have a sum larger than 0x100, which increases coloration slightly |
+ * but also improves contrast. |
*/ |