]> git.wh0rd.org - fontconfig.git/blobdiff - src/fclang.c
Revert "Fix FcNameUnparseLangSet()" and redo it
[fontconfig.git] / src / fclang.c
index c5ad5ef9b02aa0eeb755167368efef961796a9d2..ab7ae5381b6d020da2305594d3dd543e491088b4 100644 (file)
@@ -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);
@@ -686,10 +693,10 @@ FcLangSetContains (const FcLangSet *lsa, const FcLangSet *lsb)
                if (missing & (1 << j)) 
                {
                    if (!FcLangSetContainsLang (lsa,
-                                               fcLangCharSets[i*32 + j].lang))
+                                               fcLangCharSets[fcLangCharSetIndicesInv[i*32 + j]].lang))
                    {
                        if (FcDebug() & FC_DBG_MATCHV)
-                           printf ("\tMissing bitmap %s\n", fcLangCharSets[i*32+j].lang);
+                           printf ("\tMissing bitmap %s\n", fcLangCharSets[fcLangCharSetIndicesInv[i*32+j]].lang);
                        return FcFalse;
                    }
                }