X-Git-Url: https://git.wh0rd.org/?a=blobdiff_plain;f=src%2Ffcname.c;h=b4ce944214fa1fdada6ce63ac771c8e6731549b7;hb=2e44cbe1b9bf466718167e9e05077743df36ab21;hp=f55190d9e85bde1da58313e7a53b37213c64c533;hpb=551b6b2cd7d94dd90a9eb22bdb752f264afc48ce;p=fontconfig.git diff --git a/src/fcname.c b/src/fcname.c index f55190d..b4ce944 100644 --- a/src/fcname.c +++ b/src/fcname.c @@ -1,5 +1,5 @@ /* - * $RCSId: xc/lib/fontconfig/src/fcname.c,v 1.15 2002/09/26 00:17:28 keithp Exp $ + * fontconfig/src/fcname.c * * Copyright © 2000 Keith Packard * @@ -13,9 +13,9 @@ * representations about the suitability of this software for any purpose. It * is provided "as is" without express or implied warranty. * - * KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, + * THE AUTHOR(S) DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO - * EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR + * EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY SPECIAL, INDIRECT OR * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR @@ -73,7 +73,9 @@ static const FcObjectType _FcBaseObjectTypes[] = { { FC_CAPABILITY, FcTypeString }, { FC_FONTFORMAT, FcTypeString }, { FC_EMBOLDEN, FcTypeBool }, - { FC_EMBEDDED_BITMAP, FcTypeBool }, /* 39 */ + { FC_EMBEDDED_BITMAP, FcTypeBool }, + { FC_DECORATIVE, FcTypeBool }, + { FC_LCD_FILTER, FcTypeInteger }, /* 41 */ }; #define NUM_OBJECT_TYPES (sizeof _FcBaseObjectTypes / sizeof _FcBaseObjectTypes[0]) @@ -325,6 +327,20 @@ FcObjectFromName (const char * name) return 0; } +FcObjectSet * +FcObjectGetSet (void) +{ + int i; + FcObjectSet *os = NULL; + + + os = FcObjectSetCreate (); + for (i = 0; i < FcObjectsNumber; i++) + FcObjectSetAdd (os, FcObjects[i].object); + + return os; +} + FcBool FcObjectInit (void) { @@ -390,6 +406,7 @@ static const FcConstant _FcBaseConstants[] = { { (FcChar8 *) "extrabold", "weight", FC_WEIGHT_EXTRABOLD, }, { (FcChar8 *) "ultrabold", "weight", FC_WEIGHT_EXTRABOLD, }, { (FcChar8 *) "black", "weight", FC_WEIGHT_BLACK, }, + { (FcChar8 *) "heavy", "weight", FC_WEIGHT_HEAVY, }, { (FcChar8 *) "roman", "slant", FC_SLANT_ROMAN, }, { (FcChar8 *) "italic", "slant", FC_SLANT_ITALIC, }, @@ -421,6 +438,22 @@ static const FcConstant _FcBaseConstants[] = { { (FcChar8 *) "hintslight", "hintstyle", FC_HINT_SLIGHT }, { (FcChar8 *) "hintmedium", "hintstyle", FC_HINT_MEDIUM }, { (FcChar8 *) "hintfull", "hintstyle", FC_HINT_FULL }, + + { (FcChar8 *) "antialias", "antialias", FcTrue }, + { (FcChar8 *) "hinting", "hinting", FcTrue }, + { (FcChar8 *) "verticallayout", "verticallayout", FcTrue }, + { (FcChar8 *) "autohint", "autohint", FcTrue }, + { (FcChar8 *) "globaladvance", "globaladvance", FcTrue }, + { (FcChar8 *) "outline", "outline", FcTrue }, + { (FcChar8 *) "scalable", "scalable", FcTrue }, + { (FcChar8 *) "minspace", "minspace", FcTrue }, + { (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]) @@ -553,6 +586,8 @@ FcNameConvert (FcType type, FcChar8 *string, FcMatrix *m) break; case FcTypeString: v.u.s = FcStrStaticName(string); + if (!v.u.s) + v.type = FcTypeVoid; break; case FcTypeBool: if (!FcNameBool (string, &v.u.b)) @@ -567,9 +602,13 @@ FcNameConvert (FcType type, FcChar8 *string, FcMatrix *m) break; case FcTypeCharSet: v.u.c = FcNameParseCharSet (string); + if (!v.u.c) + v.type = FcTypeVoid; break; case FcTypeLangSet: v.u.l = FcNameParseLangSet (string); + if (!v.u.l) + v.type = FcTypeVoid; break; default: break; @@ -660,7 +699,7 @@ FcNameParse (const FcChar8 *name) for (;;) { name = FcNameFindNext (name, ":,", save, &delim); - if (t && strcmp (t->object, _FcBaseObjectTypes[0].object)) + if (t) { v = FcNameConvert (t->type, save, &m); if (!FcPatternAdd (pat, t->object, v, FcTrue)) @@ -696,8 +735,20 @@ FcNameParse (const FcChar8 *name) { if ((c = FcNameGetConstant (save))) { - if (!FcPatternAddInteger (pat, c->object, c->value)) - goto bail2; + t = FcNameGetObjectType ((char *) c->object); + switch (t->type) { + case FcTypeInteger: + case FcTypeDouble: + if (!FcPatternAddInteger (pat, c->object, c->value)) + goto bail2; + break; + case FcTypeBool: + if (!FcPatternAddBool (pat, c->object, c->value)) + goto bail2; + break; + default: + break; + } } } } @@ -732,7 +783,7 @@ FcNameUnparseString (FcStrBuf *buf, return FcTrue; } -static FcBool +FcBool FcNameUnparseValue (FcStrBuf *buf, FcValue *v0, FcChar8 *escape) @@ -767,7 +818,7 @@ FcNameUnparseValue (FcStrBuf *buf, return FcFalse; } -static FcBool +FcBool FcNameUnparseValueList (FcStrBuf *buf, FcValueListPtr v, FcChar8 *escape) @@ -847,3 +898,6 @@ bail0: FcStrBufDestroy (&buf); return 0; } +#define __fcname__ +#include "fcaliastail.h" +#undef __fcname__