[XeTeX] Linking with FreeType 2 on Mac OS X

Jjgod Jiang gzjjgod at gmail.com
Sun Feb 11 08:51:41 CET 2007


Hi Jonathan,

2007/2/11, Jonathan Kew <jonathan_kew at sil.org>:
> I haven't checked the truetype spec, but I seem to remember that it's
> legal for a font to have fewer metrics than glyphs, and then all the
> remaining glyphs have the same metrics as the last entry.... perhaps
> the code in xdvipdfmx doesn't handle this case, and tries to read
> beyond the end of the hmtx table. I don't have time to investigate
> tonight, though.

Yes, According to
http://freetype.sourceforge.net/freetype2/docs/reference/ft2-truetype_tables.html#TT_VertHeader:

    Number of VMetrics entries in the 'vmtx' table -- this value can be
    smaller than the total number of glyphs in the font.

I believe I have corrected this problem, here is the patch:

Index: tt_table.c
===================================================================
--- tt_table.c  (revision 83)
+++ tt_table.c  (working copy)
@@ -314,12 +314,15 @@
 {
   struct tt_longMetrics *m;
   USHORT gid, last_adv = 0;
+  SHORT last_sb;

   m = NEW(numGlyphs, struct tt_longMetrics);
   for (gid = 0; gid < numGlyphs; gid++) {
-    if (gid < numLongMetrics)
+    if (gid < numLongMetrics) {
       last_adv = sfnt_get_ushort(sfont);
-    m[gid].sideBearing = sfnt_get_short(sfont);
+      last_sb = sfnt_get_short(sfont);
+    }
+    m[gid].sideBearing = last_sb;
     m[gid].advance     = last_adv;
   }

But there is still a small warning I can not understand, with -vv,
I got:

~/Documents/tex/experiments jjgod$ xdvipdfm -vv xtx-cjk-extb
DVI Comment:  XeTeX output 2007.02.11:0736
xtx-cjk-extb.xdv -> xtx-cjk-extb.pdf
<AGL:texglyphlist.txt>[1<Sun-ExtB(Sun-ExtB:Regular)@17.22pt<NATIVE-FONTMAP:Sun-ExtB/H/65536/0>
fontmap: Sun-ExtB/H/65536/0 -> Sun-ExtB/H/65536/0(Identity-H)

pdf_font>> Input encoding "Identity-H" requires at least 2 bytes.
pdf_font>> The -m <00> option will be assumed for "Sun-ExtB/H/65536/0".
(CID:Sun-ExtB)
pdf_font>> Type0 font "Sun-ExtB/H/65536/0" cmap_id=<Identity-H,0>
opened at font_id=<Sun-ExtB/H/65536/0,0>.
><Sun-ExtB(Sun-ExtB:Regular)@11.96pt
fontmap: Sun-ExtB/H/65536/0 -> Sun-ExtB/H/65536/0(Identity-H)[map:<00>]
(CID:Sun-ExtB)
pdf_font>> Type0 font "Sun-ExtB/H/65536/0" cmap_id=<Identity-H,0>
opened at font_id=<Sun-ExtB/H/65536/0,1>.
>]
otf_cmap>> Creating ToUnicode CMap for "Sun-ExtB/H/65536/0"...

** WARNING ** No Unicode mapping available: GID=0, name=(none)
(CID:Sun-ExtB/H/65536/0[RLKWBR+Sun-ExtB][CIDFontType2]

Looks like this warning code does not belongs to dvipdfmx, it was added
in xdvipdfmx. (in tt_cmap.c, line 876)

- jjgod.


More information about the XeTeX mailing list