]> git.wh0rd.org - fontconfig.git/blobdiff - src/fcdbg.c
FcCharSetSerialize was using wrong offset for leaves. Make fc-cat work.
[fontconfig.git] / src / fcdbg.c
index 16b6bfd0fad3e79cfd6c979a0b73b83d965edc40..c82dd3aa2a76ae4d077d40696118be4486a323c8 100644 (file)
@@ -100,12 +100,26 @@ void
 FcCharSetPrint (const FcCharSet *c)
 {
     int        i, j;
-
+    intptr_t   *leaves = FcCharSetLeaves (c);
+    FcChar16   *numbers = FcCharSetNumbers (c);
+    
+    printf ("CharSet  0x%x\n", (intptr_t) c);
+    printf ("Leaves:  +%d = 0x%x\n", c->leaves_offset, (intptr_t) leaves);
+    printf ("Numbers: +%d = 0x%x\n", c->numbers_offset, (intptr_t) numbers);
+    
+    for (i = 0; i < c->num; i++)
+    {
+       printf ("Page %d: %04x +%d = 0x%x\n", 
+               i, numbers[i], leaves[i], 
+               (intptr_t) FcOffsetToPtr (leaves, leaves[i], FcCharLeaf));
+    }
+               
     for (i = 0; i < c->num; i++)
     {
-       FcCharLeaf      *leaf = FcCharSetLeaf(c, i);
+       intptr_t        leaf_offset = leaves[i];
+       FcCharLeaf      *leaf = FcOffsetToPtr (leaves, leaf_offset, FcCharLeaf);
        
-       printf ("%04x:", FcCharSetNumbers(c)[i]);
+       printf ("%04x:", numbers[i]);
        for (j = 0; j < 256/32; j++)
            printf (" %08x", leaf->map[j]);
        printf ("\n");