XeTeX において絶対覚えておくべきプリミティブ 2 つ。
\XeTeXfirstfontchar<フォント>
:[整数パラメタ・読取専用] 指定のフォントでサポートする文字符号値の最小値。\XeTeXlastfontchar<フォント>
:[整数パラメタ・読取専用] 指定のフォントでサポートする文字符号値の最大値。
ここで、<フォント>
に指定できるものは以前に紹介した \iffontchar
の場合と同じである。TeX on LaTeX では \font
(現在有効なフォント)だけ知っておけばいいであろう。
ちょうどその記事では、plain XeTeX を使って「フォントに存在する全部の文字(全グリフではない)を出力する」例が載っている。
% plain XeTeX 文書 \font\target="IPAex明朝" \newcount\uc \noindent \target \uc=0 \loop \iffontchar\font\uc \char\uc \hskip0pt plus1pt\relax \fi \advance\uc1 \ifnum\uc<"30000 \repeat \bye
このコードでは調べる文字符号値の範囲を 0〜"2FFFF に限っている。“IPAex明朝”ではこれで十分だが、もし「任意のフォントを対象としたい」のであればこれでは十分ではない。この場合、常に Unicode の全範囲(0〜"10FFFF)にするのでも構わないが、\XeTeXfirstfontchar
と \XeTeXlastfontchar
を利用すると無駄な部分の探索を省くことができる。
% plain XeTeX 文書 \font\target="IPAex明朝" \newcount\uc \noindent \target \uc=\XeTeXfirstfontchar\font \loop \iffontchar\font\uc \char\uc \hskip0pt plus1pt\relax \fi \ifnum\uc<\XeTeXlastfontchar\font \advance\uc1 \repeat \bye
ところで、このプリミティブが何故「絶対覚えておくべき」かというと、
マニュアルに載ってない
からである。多分、単に書き忘れているだけだと思う。