GNOME Bugzilla – Bug 577952
Error loading {GDEF,GSUB,GPOS} table 0x6EAD
Last modified: 2009-04-09 17:07:08 UTC
Please describe the problem: The Helvetica font makes pango cry: $ pango-view --font="Helvetica" /etc/passwd (pango-view:56609): Pango-WARNING **: Error loading GDEF table 0x6EAD (pango-view:56609): Pango-WARNING **: Error loading GSUB table 0x6EAD (pango-view:56609): Pango-WARNING **: Error loading GPOS table 0x6EAD $ fc-match Helvetica Helvetica.dfont: "Helvetica" "粗體" but text is still rendered readable Steps to reproduce: 1. OSX 10.5.x 2. Latest Xorg libs as of this date 3. cairo 1.8.6 with freetype font rendering 4. run pango-view --font="Helvetica" /path/to/some/text Actual results: (pango-view:56609): Pango-WARNING **: Error loading GDEF table 0x6EAD (pango-view:56609): Pango-WARNING **: Error loading GSUB table 0x6EAD (pango-view:56609): Pango-WARNING **: Error loading GPOS table 0x6EAD Expected results: No such warnings Does this happen every time? Yes Other information:
Created attachment 132093 The Helvetica.dfont (bzip2 compressed)
Attachment deleted; please don't attach proprietary files to bugzilla.
Sorry, but the other bug reports similar to this one asked for the font to be attached. Anyone who wants it for debugging can email me to get a copy
It's ok if the font in question has a permissive license. In this case it's not. Doesn't matter though. I found a dfont that reproduces the problem. Debugging.
The problem is that the _hb_font_goto_table() function uses the condition "font->num_faces > 1" to decide that it's dealing with TrueType Collections and deals with the stream as if it's a TTC. However, the way FreeType handles dfont containers also produces fonts with num_faces > 1. We should directly check for the TTC signature instead. Will fix tomorrow.
commit 2f27e9f47428a37d69592e2807ed9a1a343906a2 Author: Behdad Esfahbod <behdad@behdad.org> Date: Thu Apr 9 13:04:20 2009 -0400 Bug 577952 – Error loading {GDEF,GSUB,GPOS} table 0x6EAD Detect TrueType Collections by checking the font data header instead of checking for "face->num_faces >1".