jonathan_kew at sil.org
Tue Jan 2 17:12:50 CET 2007
On 1 Jan 2007, at 11:03 pm, Martin Schröder wrote:
> Note that a ./xetex -version gives warnings:
>> ./xetex --version
> ./xetex:/usr/X11R6/lib/libfreetype.so.13.1: ./xetex : WARNING:
> symbol(tt_driver_class) size mismatch, relink your program
Martin, what does "freetype-config --version" report on your system?
(Just curious.... what version of freetype2 that is installed in /usr/
Here's what I *think* is going on; maybe someone can confirm whether
my understanding sounds right.
- XeTeX is built (by default) using the copy of Freetype2 in the TL
source tree. This is currently v2.2.1. We build this as a static
library and link with it, so that xetex's use of Freetype2 is
entirely independent of what's installed (or not) in the host platform.
- On the other hand, we link dynamically with the host's
libfontconfig, as this seems to be the best way of finding the user's
"installed" fonts. It is likely that libfontconfig, in turn, depends
on libfreetype (installed .so library). Therefore, xetex inherits a
dependency on the installed libfreetype, in addition to having its
own statically-linked freetype2 routines.
- These two versions of Freetype2 have some incompatible structures
(either the actual definitions have changed, or they were built with
different compilers or options such that the structure sizes turned
- In principle, there would be a problem if the same Freetype2
structures were accessed both directly (using the statically-linked
version) and through fontconfig APIs (which would lead to the
dynamically-linked lib). But xetex doesn't do this; any use of the
host system's libfreetype.so is internal to fontconfig and does not
interact with xetex's own use of freetype2.
- Therefore, I don't think it matters if these two freetype2 versions
are incompatible, as this warning indicates. Martin, if you can try
the test I described for Olaf recently (see "Testing XeTeX IRIX
build", Dec 28), that would help to confirm this.
- However, we obviously don't want a program that prints warnings
like this each time it's used!
So what do we do?
- One option would be to build xetex without the static libfreetype
from TL (--using-system-freetype2 might work for this, though I
haven't tested this lately). However, this would presumably mean that
if the installed FT2 is updated, the xetex binary may break.
- Another possibility might be to statically link fontconfig as well
as freetype2, like the rest of the libraries used. However, my
experience when I tried this some time back was that a static
fontconfig build may not interoperate properly with the host
platform's normal installation.
- If I'm right that the version mismatch does not actually matter,
then all we really need is a way to suppress the warning messages
from the loader. But I don't know how to do that.
Comments, corrections, and suggestions most welcome!
More information about the tex-live