X-Git-Url: https://git.wh0rd.org/?a=blobdiff_plain;f=src%2Ffclang.c;h=ab7ae5381b6d020da2305594d3dd543e491088b4;hb=c5f0a65b36bc863d67bbf1f334262c35445ce610;hp=6a3b7b5e3dbd44a71d9b54ae44a51561ea5556a0;hpb=d354a321ee51f0bb70a39faeed541d1a90477d7d;p=fontconfig.git diff --git a/src/fclang.c b/src/fclang.c index 6a3b7b5..ab7ae53 100644 --- a/src/fclang.c +++ b/src/fclang.c @@ -551,20 +551,27 @@ bail0: FcBool FcNameUnparseLangSet (FcStrBuf *buf, const FcLangSet *ls) { - int i; + int i, bit; + FcChar32 bits; FcBool first = FcTrue; - for (i = 0; i < NUM_LANG_CHAR_SET; i++) - if (FcLangSetBitGet (ls, i)) - { - if (!first) - if (!FcStrBufChar (buf, '|')) + for (i = 0; i < NUM_LANG_SET_MAP; i++) + { + if ((bits = ls->map[i])) + { + for (bit = 0; bit <= 31; bit++) + if (bits & (1 << bit)) + { + int id = (i << 5) | bit; + if (!first) + if (!FcStrBufChar (buf, '|')) + return FcFalse; + if (!FcStrBufString (buf, fcLangCharSets[fcLangCharSetIndicesInv[id]].lang)) return FcFalse; - if (!FcStrBufString (buf, fcLangCharSets[i].lang)) - return FcFalse; - first = FcFalse; - } - + first = FcFalse; + } + } + } if (ls->extra) { FcStrList *list = FcStrListCreate (ls->extra);