]> git.wh0rd.org - fontconfig.git/commitdiff
Fontconfig options for freetype sub-pixel filter configuration
authorSylvain Pasche <sylvain.pasche@gmail.com>
Sun, 4 May 2008 02:33:45 +0000 (19:33 -0700)
committerKeith Packard <keithp@keithp.com>
Sun, 4 May 2008 02:33:45 +0000 (19:33 -0700)
David Turner has modified FreeType to be able to render sub-pixel decimated
glyphs using different methods of filtering. Fontconfig needs new
configurables to support selecting these new filtering options. A patch
follows that would correspond to one available for Cairo in bug 10301.

doc/fontconfig-devel.sgml
doc/fontconfig-user.sgml
fontconfig/fontconfig.h
src/fcint.h
src/fcname.c

index 8231b3f06734a63a3961b3060080c9f32ded63b8..6ca8e6049f8e116863dd9ce47d6181dba5002400 100644 (file)
@@ -177,6 +177,7 @@ convenience for the applications rendering mechanism.
     dpi            FC_DPI               Double  Target dots per inch
     rgba           FC_RGBA              Int     unknown, rgb, bgr, vrgb,
                                                 vbgr, none - subpixel geometry
+    lcdfilter      FC_LCD_FILTER        Int     Type of LCD filter
     minspace       FC_MINSPACE          Bool    Eliminate leading from line
                                                 spacing
     charset        FC_CHARSET           CharSet Unicode chars encoded by
index 10077828f85b8a9535c8de7aab9684645850315c..22fadbb5e4a29af61b1fa7ed6f91d9570589ba2c 100644 (file)
@@ -120,6 +120,7 @@ convenience for the applications' rendering mechanism.
   dpi             Double  Target dots per inch
   rgba            Int     unknown, rgb, bgr, vrgb, vbgr,
                           none - subpixel geometry
+  lcdfilter       Int     Type of LCD filter
   minspace        Bool    Eliminate leading from line spacing
   charset         CharSet Unicode chars encoded by the font
   lang            String  List of RFC-3066-style languages this
@@ -476,6 +477,10 @@ symbolic names for common font values:
   vrgb            rgba            3
   vbgr            rgba            4
   none            rgba            5
+  lcdnone         lcdfilter       0
+  lcddefault      lcdfilter       1
+  lcdlight        lcdfilter       2
+  lcdlegacy       lcdfilter       3
   hintnone        hintstyle       0
   hintslight      hintstyle       1
   hintmedium      hintstyle       2
index 36e4ccc87b1726060a06bc734a332b9977d881c0..8280a3a34e8c728ed694be4f133d59b230cbb720 100644 (file)
@@ -111,6 +111,7 @@ typedef int         FcBool;
 #define FC_EMBOLDEN        "embolden"          /* Bool - true if emboldening needed*/
 #define FC_EMBEDDED_BITMAP  "embeddedbitmap"   /* Bool - true to enable embedded bitmaps */
 #define FC_DECORATIVE      "decorative"        /* Bool - true if style is a decorative variant */
+#define FC_LCD_FILTER      "lcdfilter"         /* Int */
 
 #define FC_CACHE_SUFFIX                    ".cache-"FC_CACHE_VERSION
 #define FC_DIR_CACHE_FILE          "fonts.cache-"FC_CACHE_VERSION
@@ -171,7 +172,13 @@ typedef int                FcBool;
 #define FC_HINT_SLIGHT      1
 #define FC_HINT_MEDIUM      2
 #define FC_HINT_FULL        3
+
+/* LCD filter */
+#define FC_LCD_NONE        0
+#define FC_LCD_DEFAULT     1
+#define FC_LCD_LIGHT       2
+#define FC_LCD_LEGACY      3
+
 typedef enum _FcType {
     FcTypeVoid, 
     FcTypeInteger, 
index ddeb7459b3e74432783bfcac1e451f74014a80c0..8912d16686628078edddfb1c8d204ada15719538 100644 (file)
@@ -848,7 +848,8 @@ FcListPatternMatchAny (const FcPattern *p,
 #define FC_EMBOLDEN_OBJECT     38
 #define FC_EMBEDDED_BITMAP_OBJECT      39
 #define FC_DECORATIVE_OBJECT   40
-#define FC_MAX_BASE_OBJECT     FC_DECORATIVE_OBJECT
+#define FC_LCD_FILTER_OBJECT   41
+#define FC_MAX_BASE_OBJECT     FC_LCD_FILTER_OBJECT
 
 FcPrivate FcBool
 FcNameBool (const FcChar8 *v, FcBool *result);
index 21e6da17295c9a8696bdb56c683668563a8caaf0..7a5371b54a2a06bcfefba663022ce698ae8c692e 100644 (file)
@@ -74,7 +74,8 @@ static const FcObjectType _FcBaseObjectTypes[] = {
     { FC_FONTFORMAT,   FcTypeString },
     { FC_EMBOLDEN,     FcTypeBool },
     { FC_EMBEDDED_BITMAP,   FcTypeBool },
-    { FC_DECORATIVE,   FcTypeBool }, /* 40 */
+    { FC_DECORATIVE,   FcTypeBool },
+    { FC_LCD_FILTER,   FcTypeInteger }, /* 41 */
 };
 
 #define NUM_OBJECT_TYPES    (sizeof _FcBaseObjectTypes / sizeof _FcBaseObjectTypes[0])
@@ -435,6 +436,10 @@ static const FcConstant _FcBaseConstants[] = {
     { (FcChar8 *) "embolden",      "embolden",     FcTrue },
     { (FcChar8 *) "embeddedbitmap", "embeddedbitmap",  FcTrue },
     { (FcChar8 *) "decorative",            "decorative",   FcTrue },
+    { (FcChar8 *) "lcdnone",       "lcdfilter",    FC_LCD_NONE },
+    { (FcChar8 *) "lcddefault",            "lcdfilter",    FC_LCD_DEFAULT },
+    { (FcChar8 *) "lcdlight",      "lcdfilter",    FC_LCD_LIGHT },
+    { (FcChar8 *) "lcdlegacy",     "lcdfilter",    FC_LCD_LEGACY },
 };
 
 #define NUM_FC_CONSTANTS   (sizeof _FcBaseConstants/sizeof _FcBaseConstants[0])