Hide Forgot
Description of problem: fc-query -i index /files/fonts/GFSBodoni.otf produces a matrix of available glyphs. I found this to be inaccurate, when compared with the output of fontforge, for the above file. Version-Release number of selected component (if applicable): fontconfig version 2.8.0 How reproducible: Steps to Reproduce: 1. fc-query -i index /files/fonts/GFSBodoni.otf 2. inspect map 3. compare glyph list with fontforge output. Actual results: ["0000", "00000000","ffffffff","ffffffff","7fffffff","00000000","ffffdffe","ffffffff","ffffffff"], ["0001", "ffffffff","feffffff","ffffffff","ffffffff","00040000","00818003","00000000","fc300000"], ["0002", "03000000","00000000","00000000","00000000","00040000","01850000","3f0000c0","00000008"], ["0003", "00040200","00000008","00000000","44300000","ffffd7f0","fffffffb","44637fff","00000001"], ["0004", "00000000","00000000","00000000","00000000","00000000","00000000","000c0000","000000c0"], ["001e", "00000000","00000000","00000000","00000000","0000003f","ffffffff","ffffffff","03ffffff"], ["001f", "3f3fffff","ffffffff","aaff3f3f","3fffffff","ffffffff","ffdfffff","efcfffdf","7fdcffff"], ["0020", "7fff0bf4","560d0067","00000010","fff10000","00007fff","0000109e","00000000","00000000"], ["0021", "00480020","00004044","fff80000","00000000","00200000","00000100","00000000","00000000"], ["0022", "44068044","00000f80","00000120","00000033","00000000","00000000","00000000","00000000"], ["0023", "00010000","00000000","00000000","00000000","00000000","00000000","00000000","00000000"], ["0025", "00000000","00000000","00000000","00000000","00000000","00000c02","00008400","00000040"], ["00e0", "00000000","00000000","00000070","00000800","00000000","00000000","00000000","00000000"], ["00f5", "07fdffff","00000000","00000000","00000000","00000000","00000000","00000000","00000000"], ["00f6", "00000000","fe000000","7fe30007","ffffe7fe","ffffffff","000c3fff","3001ce08","ffffff15"], ["00f7", "00000000","83ff0052","00000000","07ffffff","00000000","81108102","00000000","ff7fffff"], ["00fb", "0000001f","00000000","00000000","00000000","00000000","00000000","00000000","00000000"], ["00ff", "00000000","00000000","00000000","00000000","00000000","00000000","00000000","10000000"] Expected results: for U+E059 the map shows the glyph present. Fontforge and another app disagree Additional info: I believe I am interpreting the map correctly. I may be wrong. My interpretation was confirmed on the fontconfig mailing list Dave
Please attach the real output of fc-query but not what you've modified with your tool. given that it's simply converted to the array format as is: ["00e0", "00000000","00000000","00000070","00000800","00000000","00000000","00000000","00000000"], This one should be: 00e0: 00000000 00000000 00000070 00000800 00000000 00000000 00000000 00000000 And the available glyphs in this font for the range of U+E000~U+E0FF is U+E046, U+E045, U+E044 and U+E06B.
$ fc-query -i index /files/fonts/GFSBodoni.otf Pattern has 20 elts (size 32) family: "GFS Bodoni"(s) "GFS Bodoni Rg"(s) familylang: "en"(s) "en"(s) style: "Regular"(s) stylelang: "en"(s) fullname: "GFSBodoni-Regular"(s) "GFS Bodoni"(s) "GFS Bodoni Regular"(s) fullnamelang: "en"(s) "en"(s) "en"(s) slant: 0(i)(s) weight: 80(i)(s) width: 100(i)(s) foundry: "unknown"(s) file: "/files/fonts/GFSBodoni.otf"(s) index: 0(i)(s) outline: FcTrue(s) scalable: FcTrue(s) charset: 0000: 00000000 ffffffff ffffffff 7fffffff 00000000 ffffdffe ffffffff ffffffff 0001: ffffffff feffffff ffffffff ffffffff 00040000 00818003 00000000 fc300000 0002: 03000000 00000000 00000000 00000000 00040000 01850000 3f0000c0 00000008 0003: 00040200 00000008 00000000 44300000 ffffd7f0 fffffffb 44637fff 00000001 0004: 00000000 00000000 00000000 00000000 00000000 00000000 000c0000 000000c0 001e: 00000000 00000000 00000000 00000000 0000003f ffffffff ffffffff 03ffffff 001f: 3f3fffff ffffffff aaff3f3f 3fffffff ffffffff ffdfffff efcfffdf 7fdcffff 0020: 7fff0bf4 560d0067 00000010 fff10000 00007fff 0000109e 00000000 00000000 0021: 00480020 00004044 fff80000 00000000 00200000 00000100 00000000 00000000 0022: 44068044 00000f80 00000120 00000033 00000000 00000000 00000000 00000000 0023: 00010000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 0025: 00000000 00000000 00000000 00000000 00000000 00000c02 00008400 00000040 00e0: 00000000 00000000 00000070 00000800 00000000 00000000 00000000 00000000 00f5: 07fdffff 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00f6: 00000000 fe000000 7fe30007 ffffe7fe ffffffff 000c3fff 3001ce08 ffffff15 00f7: 00000000 83ff0052 00000000 07ffffff 00000000 81108102 00000000 ff7fffff 00fb: 0000001f 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00ff: 00000000 00000000 00000000 00000000 00000000 00000 I.e. the appropriate line is as per the previous (I use it for python processing)
this isn't a bug then. if U+E059 is available in this font, the output should be: 00e0: 00000000 00000000 02000070 00000800 00000000 00000000 00000000 00000000
E059 is not available according to fontforge? You said details: 0xe059 >> 8 = 0xe0 0xe059 & 0xff / 32 = 2 (+1 column) 0xe059 & 0x1f = 25 (bit) It's the position for U+E059. I think fc-query shows it as present, So (if I understand it correctly) the 7 in the group 00000070 represents characters at e059 e05a e05b Dave
Where did you find 7 from my explanation? I have shown you twice how it looks like if available. (1 << 25) == 0x2000000, anyway.
Please close the bug. I clearly don't understand the use of the matrix. I'll take it up on the mailing list. Thanks
(In reply to comment #6) > Please close the bug. I clearly don't understand the use of the matrix. > I'll take it up on the mailing list. Dave, In the row e0, the first group of 32 bits shows the presence of e000-e01f (none), the second shows e020-e03f (none), the third e040-e05f (e044-e046), etc. You have to proceed for low to high bits in each group.