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)
This commit is contained in:
Keith Packard 2005-03-05 23:50:55 +00:00
parent 219f7818da
commit 76a8dfa337
2 changed files with 20 additions and 8 deletions

View File

@ -1,3 +1,11 @@
2005-03-05 Keith Packard <keithp@keithp.com>
* 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 <keithp@keithp.com>
* src/fcfreetype.c: (addtag), (GetScriptTags),

View File

@ -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++;