[XeTeX] xdvipdfmx segmentation fault
Jonathan Kew
jonathan_kew at sil.org
Wed Jul 18 23:39:04 CEST 2007
On 18 Jul 2007, at 6:14 am, Rémy Oudompheng wrote:
> oudomphe at clipper.ens.fr (Rémy Oudompheng) writes:
>> Gerrit Sangel <z0idberg at gmx.de> writes:
>>> I’ve got the same problems, with a 32 bit Gentoo (x86).
>>
>> This is because Gentoo sets FT_CONFIG_OPTION_OLD_INTERNALS to
>> False in
>> latest Freetype versions. There must be some code in xdvipdfmx using
>> it. Other distros may leave it to True to preserve compatibility
>> with old
>> programs.
>
> I took libXfont (bug #6918) as an example, so this is a patch to avoid
> accessing the long_metrics field in TT_HoriHeader, the metrics
> should be
> retrieved by using the hmtx and vmtx tables.
>
> <xdvipdfmx-0.4-avoid-ftinternals.patch>
>
> It now works with the new FreeType, and I hope it does not change the
> expected behaviour.
Many thanks for working on this. When I get back from the TUG
conference, I'll look at it more closely, but it seems like the right
thing to do.
One minor disadvantage I see is that it will re-read the hmtx or vmtx
table for every glyph_array that is processed (typically each word of
the text). Even if Freetype does a good job of caching the tables
(which I assume it does), it is copying the entire table to a local
buffer each time. Maybe we should consider attaching the buffer to
xdvipdfmx's loaded_font object, so that it only needs to be loaded
via Freetype once. (But the cost may not be significant; it would be
interesting to run some tests to see if it has a measurable impact.)
Another question would be whether the latest Freetype solves the
problem with vertical metrics of CFF fonts; maybe we can remove this
code altogether and rely on the path based on FT_Load_Glyph and
reading values from font->ft_face->glyph->metrics. That would
simplify things, if it now works correctly.
JK
More information about the XeTeX
mailing list