[XeTeX] Detect, whether a font contains a certain character
Heiko Oberdiek
heiko.oberdiek at googlemail.com
Mon Nov 28 01:14:42 CET 2011
On Sun, Nov 27, 2011 at 11:35:29PM +0100, Zdenek Wagner wrote:
> 2011/11/27 Tobias Schoel <liesdiedatei at googlemail.com>:
> > Hi,
> >
> > I know, this question has been raised several times on this list. But I'm
> > bad at searching, so I'm just asking:
> >
> > How can I detect, whether a font contains a certain character (let's say
> > u2103=Degree Celsius symbol) from within XeTeX?
> >
> Put it into an \hbox and measure its width (\wd). If the width is
> zero, the glyph does not exist.
There are chars with zero width, e.g. \not (in math mode).
Partially the test can be done (e.g. for "018E) by:
\ifnum\XeTeXfonttype\font>0
\ifnum\XeTeXcharglyph"018E>0
% ==> char exists
\fi
\fi
For the other cases, the \hbox method can be combined with \lastkern,
for example:
\begingroup
\setbox0=\hbox{\kern1sp^^^^018e\expandafter}%
\expandafter\endgroup
\ifdim\lastkern=1sp
\immediate\write16{glyph does not exist}%
\else
\immediate\write16{glyph does exist}%
\fi
\csname @@end\endcsname\end
Disadvantage: There is a warning in the .log file for missing glyphs:
| Missing character: There is no ... in font cmr10!
Yours sincerely
Heiko Oberdiek
More information about the XeTeX
mailing list