[XeTeX] XeTeX, fontspec, OTF, and fontdimens

mskala at ansuz.sooke.bc.ca mskala at ansuz.sooke.bc.ca
Sun Feb 20 20:42:28 CET 2011


On Sun, 20 Feb 2011, Khaled Hosny wrote:
> OK, this sounds like a fontspec bug to me, can you file a bug against
> fontspec (else I'll try to do myself).

Okay, I'll file one.

> OK, checking FF code, there is an isFixedPitch entry in 'post' and 'CFF'
> tables that should be non-zero in monospaced fonts, so we just need
> someone to come with a patch to make use of that :)

I can't find a way to edit that flag in FontForge; it appears that
FontForge sets it behind the scenes when saving a font if and only if all
glyphs in the font have exactly the same width.

Fonts like mine are not really monospace in that sense - the basic Latin
glyphs are one width, the CJK characters are twice that width, and there
exist combining characters that are zero width.  Other widths might even
be possible too, when we get into the more esoteric CJK features such as
vertical forms and one-third-width characters.  Such a font might be
better described as grid-spaced than mono-spaced.

Thus, I don't think FontForge would flag the fonts as monospace, and I
found some comments on the Web suggesting that indeed it shouldn't; some
rasterizers will break if the monospace flag is set and the font doesn't
have absolutely every glyph the same width.

So I think that although it might be nice to make XeTeX read that flag, it
would also be good if there were a clean way to tell XeTeX and/or fontspec
to treat a font as monospace for the purposes of the fontdimen defaults,
regardless of the state of the flag.

I note that FontForge adds a proprietary table to OpenType format for
storing the TeX fontdimens, and it would be really cute if XeTeX could
read that when it's present - but of course it would only help for fonts
marked up specifically by FontForge and to work with TeX.  As far as I
know, at the moment FontForge is the only thing that can read or write
that table.
-- 
Matthew Skala
mskala at ansuz.sooke.bc.ca                 People before principles.
http://ansuz.sooke.bc.ca/


More information about the XeTeX mailing list