From 76a8dfa3378fc1bd0397a95f2da56d5c6fb2540c Mon Sep 17 00:00:00 2001 From: Keith Packard Date: Sat, 5 Mar 2005 23:50:55 +0000 Subject: [PATCH] Include space and remove numbers from valid script tags. This ensures that tags like 'lao ' work while rejecting those which have any digits. Eliminate a spurious debugging variable (len) --- ChangeLog | 8 ++++++++ src/fcfreetype.c | 20 ++++++++++++-------- 2 files changed, 20 insertions(+), 8 deletions(-) diff --git a/ChangeLog b/ChangeLog index 12182a3..7faa1e0 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2005-03-05 Keith Packard + + * src/fcfreetype.c: (addtag), (FcFontCapabilities): + Include space and remove numbers from valid script tags. + This ensures that tags like 'lao ' work while rejecting + those which have any digits. + Eliminate a spurious debugging variable (len) + 2005-03-05 Keith Packard * src/fcfreetype.c: (addtag), (GetScriptTags), diff --git a/src/fcfreetype.c b/src/fcfreetype.c index 7f6ca37..4ca1ba0 100644 --- a/src/fcfreetype.c +++ b/src/fcfreetype.c @@ -2649,8 +2649,13 @@ FcFreeTypeCharSet (FT_Face face, FcBlanks *blanks) /* space + head + id */ #define OTLAYOUT_LEN (1 + OTLAYOUT_HEAD_LEN + OTLAYOUT_ID_LEN) -#define FcIsNumber(x) (060 <= (x) && (x) <= 071) -#define FcIsAlNum(x) (FcIsLower(x) || FcIsUpper (x) || FcIsNumber (x)) +/* + * This is a bit generous; the registry has only lower case and space + * except for 'DFLT'. + */ +#define FcIsSpace(x) (040 == (x)) +#define FcIsValidScript(x) (FcIsLower(x) || FcIsUpper (x) || FcIsSpace(x)) + static void addtag(FcChar8 *complex, FT_ULong tag) { @@ -2662,13 +2667,13 @@ addtag(FcChar8 *complex, FT_ULong tag) tagstring[3] = (FcChar8)(tag); tagstring[4] = '\0'; - /* skip tags which aren't alphanumeric, under the assumption that + /* skip tags which aren't alphabetic, under the assumption that * they're probably broken */ - if (!FcIsAlNum(tagstring[0]) || - !FcIsAlNum(tagstring[1]) || - !FcIsAlNum(tagstring[2]) || - !FcIsAlNum(tagstring[3])) + if (!FcIsValidScript(tagstring[0]) || + !FcIsValidScript(tagstring[1]) || + !FcIsValidScript(tagstring[2]) || + !FcIsValidScript(tagstring[3])) return; if (*complex != '\0') @@ -2806,7 +2811,6 @@ FcFontCapabilities(FT_Face face) strcpy(complex, "ttable:Silf "); while ((indx1 < gsub_count) || (indx2 < gpos_count)) { - int len = strlen (complex); if (indx1 == gsub_count) { addtag(complex, gpostags[indx2]); indx2++; -- 2.39.5