[XeTeX] Detect, whether a font contains a certain character

Mon Nov 28 09:06:12 CET 2011

On Mon, Nov 28, 2011 at 07:19:48AM +0000, Jonathan Kew wrote:

> On 28 Nov 2011, at 06:59, Heiko Oberdiek wrote:
>
> > On Mon, Nov 28, 2011 at 03:07:07PM +1030, Andrew Moschou wrote:
> >
> >> 2011/11/28 Zdenek Wagner <zdenek.wagner at gmail.com>
> >>
> >>> Put it into an \hbox and measure its width (\wd). If the width is
> >>> zero, the glyph does not exist.
> >>>
> >>
> >> If the required glyph doesn't exist, wouldn't this measure the ".notdef"
> >> glyph?
> >
> > No,
>
> Yes, it would (and .notdef may of course have non-zero width).

\catcode\{=1
\catcode\}=2
\catcode\^=7
\showboxdepth=10000
\tracingonline=1
\font\rm=cmr10\relax
\rm
\setbox0=\hbox{\kern1pt^^^^018e}
\showbox0
\csname @@end\endcsname\end

And where is the inserted ".notdef" glyph?

> > the problem is rather that a existing glyph can have width zero
> > (not likely in your case) and that there is a warning in the .log file.
> > See my examples.
>
> Assuming the OP is interested in "native" truetype/opentype fonts, not .tfm-based fonts, \XeTeXcharglyph is the simple answer.

In case of \ifnum\XeTeXfonttype>0 there is a better test.

Or what do you suggest for a general test of glyph existence?

Yours sincerely
Heiko Oberdiek
`