diff options
Diffstat (limited to 'fontconfig')
-rw-r--r-- | fontconfig/conf.d/10-scale-bitmap-fonts.conf | 32 | ||||
-rw-r--r-- | fontconfig/doc/fontconfig-user.sgml | 2 | ||||
-rw-r--r-- | fontconfig/src/fcfreetype.c | 84 |
3 files changed, 30 insertions, 88 deletions
diff --git a/fontconfig/conf.d/10-scale-bitmap-fonts.conf b/fontconfig/conf.d/10-scale-bitmap-fonts.conf index e3bcd46cd..b4e9cb4f2 100644 --- a/fontconfig/conf.d/10-scale-bitmap-fonts.conf +++ b/fontconfig/conf.d/10-scale-bitmap-fonts.conf @@ -2,8 +2,13 @@ <!DOCTYPE fontconfig SYSTEM "fonts.dtd"> <fontconfig> +<!-- + If font is bitmap, calculate scale factor. + Note that color bitmap fonts have scalable=true, while + non-color ones have scalable=false. Both groups have outline=false. + --> <match target="font"> - <test name="scalable" compare="eq"> + <test name="outline" compare="eq"> <bool>false</bool> </test> <edit name="pixelsizefixupfactor" mode="assign"> @@ -13,10 +18,20 @@ </divide> </edit> </match> +<!-- + For non-scalable bitmap fonts (ie. non-color), skip + minor scaling if hinting is enabled. + --> <match target="font"> + <test name="outline" compare="eq"> + <bool>false</bool> + </test> <test name="scalable" compare="eq"> <bool>false</bool> </test> + <test name="hinting" compare="eq"> + <bool>true</bool> + </test> <edit name="scalingnotneeded" mode="assign"> <and> <less> @@ -30,20 +45,7 @@ </and> </edit> </match> -<!-- - So far we determined the scale factor. Now, check and if - scaling is NOT desirable, just reset the scale factor to 1.0. - --> <match target="font"> - <test name="scalable" compare="eq"> - <bool>false</bool> - </test> - <test name="pixelsize" target="pattern" compare="less"> - <double>64</double> - </test> - <test name="hinting" compare="eq"> - <bool>true</bool> - </test> <test name="scalingnotneeded" compare="eq"> <bool>true</bool> </test> @@ -55,7 +57,7 @@ If we *are* going to scale, go ahead and do it. --> <match target="font"> - <test name="scalable" compare="eq"> + <test name="outline" compare="eq"> <bool>false</bool> </test> <test name="pixelsizefixupfactor" compare="not_eq"> diff --git a/fontconfig/doc/fontconfig-user.sgml b/fontconfig/doc/fontconfig-user.sgml index 7b4ad7408..5803929f7 100644 --- a/fontconfig/doc/fontconfig-user.sgml +++ b/fontconfig/doc/fontconfig-user.sgml @@ -322,7 +322,7 @@ will be used to store the cache files. If it starts with '~', it refers to a directory in the users home directory. If 'prefix' is set to "xdg", the value in the XDG_CACHE_HOME environment variable will be added as the path prefix. please see XDG Base Directory Specification for more details. The default directory is ``$XDG_CACHE_HOME/fontconfig'' and it contains the cache files named ``<literal><hash value></literal>-<literal><architecture></literal>.cache-<literal><version></literal>'', -where <literal><version></literal> is the font configureation file +where <literal><version></literal> is the font configuration file version number (currently 5). </para></refsect2> <refsect2><title><literal><include ignore_missing="no" prefix="default"></literal></title><para> diff --git a/fontconfig/src/fcfreetype.c b/fontconfig/src/fcfreetype.c index 50ff3489c..afbd9ac1e 100644 --- a/fontconfig/src/fcfreetype.c +++ b/fontconfig/src/fcfreetype.c @@ -978,76 +978,6 @@ FcNoticeFoundry(const FT_String *notice) return 0; } -static FcBool -FcVendorMatch(const FT_Char vendor[4], const FT_Char *vendor_string) -{ - /* vendor is not necessarily NUL-terminated. */ - int i, len; - - len = strlen((char *) vendor_string); - if (memcmp(vendor, vendor_string, len) != 0) - return FcFalse; - for (i = len; i < 4; i++) - if (vendor[i] != ' ' && vendor[i] != '\0') - return FcFalse; - return FcTrue; -} - -/* This table is partly taken from ttmkfdir by Joerg Pommnitz. */ - -/* It should not contain useless entries (such as UNKN) nor duplicate - entries for padding both with spaces and NULs. */ - -static const struct { - const FT_Char vendor[5]; - const FcChar8 foundry[13]; -} FcVendorFoundries[] = { - { "ADBE", "adobe"}, - { "AGFA", "agfa"}, - { "ALTS", "altsys"}, - { "APPL", "apple"}, - { "ARPH", "arphic"}, - { "ATEC", "alltype"}, - { "B&H", "b&h"}, - { "BITS", "bitstream"}, - { "CANO", "cannon"}, - { "CLM", "culmus"}, - { "DYNA", "dynalab"}, - { "EPSN", "epson"}, - { "FJ", "fujitsu"}, - { "IBM", "ibm"}, - { "ITC", "itc"}, - { "IMPR", "impress"}, - { "LARA", "larabiefonts"}, - { "LEAF", "interleaf"}, - { "LETR", "letraset"}, - { "LINO", "linotype"}, - { "MACR", "macromedia"}, - { "MONO", "monotype"}, - { "MS", "microsoft"}, - { "MT", "monotype"}, - { "NEC", "nec"}, - { "PARA", "paratype"}, - { "QMSI", "qms"}, - { "RICO", "ricoh"}, - { "URW", "urw"}, - { "Y&Y", "y&y"} -}; - -#define NUM_VENDOR_FOUNDRIES (int) (sizeof (FcVendorFoundries) / sizeof (FcVendorFoundries[0])) - -static const FcChar8 * -FcVendorFoundry(const FT_Char vendor[4]) -{ - int i; - - if (vendor) - for(i = 0; i < NUM_VENDOR_FOUNDRIES; i++) - if (FcVendorMatch (vendor, FcVendorFoundries[i].vendor)) - return FcVendorFoundries[i].foundry; - return 0; -} - typedef struct _FcStringConst { const FcChar8 *name; int value; @@ -1239,7 +1169,7 @@ FcFreeTypeQueryFace (const FT_Face face, #if 0 FcChar8 *family = 0; #endif - FcChar8 *complex_; + FcChar8 *complex_, *foundry_ = NULL; const FcChar8 *foundry = 0; int spacing; TT_OS2 *os2; @@ -1315,7 +1245,15 @@ FcFreeTypeQueryFace (const FT_Face face, */ if (os2 && os2->version >= 0x0001 && os2->version != 0xffff) - foundry = FcVendorFoundry(os2->achVendID); + { + if (os2->achVendID && os2->achVendID[0] != 0) + { + foundry_ = (FcChar8 *) malloc (sizeof (os2->achVendID) + 1); + memcpy ((void *)foundry_, os2->achVendID, sizeof (os2->achVendID)); + foundry_[sizeof (os2->achVendID)] = 0; + foundry = foundry_; + } + } if (FcDebug () & FC_DBG_SCANV) printf ("\n"); @@ -1946,6 +1884,8 @@ bail2: FcCharSetDestroy (cs); bail1: FcPatternDestroy (pat); + if (foundry_) + free (foundry_); bail0: return NULL; } |