前回の続き。今回はXeTeXについて。
XeTeX関連の注意事項
※一般の注意事項については初回の記事を参照。
- 各プリミティブの種別が何であるかについてのマニュアルの記述がかなりアレ。例えば、読取専用パラメタ(だから展開不能)なのに“Expands to …”と書いてあったり*1、読書可パラメタなのに一般命令であるかのように書かれていたり。大体は「機能から自然に予想される種別」になっているようである。例えば:
\XeTeXgenerateactualtext
は読書可の整数パラメタ。\XeTeXglyphbounds‹フォント›‹位置›
は読取専用の寸法パラメタ。
- 従って、情報読取系のプリミティブで展開可能なのは、「文字列を返すもの」に限られる。
- ちなみに、XeTeXには「文字列型のパラメタ」のようにみえるプリミティブ(
\XeTeXinputencoding
など*2)があるが、(恐らくTeXにそういう概念がないため)実際にはこれはパラメタでなく一般命令である。つまり、これらのプリミティブで設定した値を読み出すことはできない。 - OpenTypeの各種タグは整数値として扱われている(例えばfeature tagの“ital”は0x76657274という整数値)。なので例えば
\XeTeXOTfeaturetag
は読取専用整数パラメタであり展開不能である。 \XeTeXinterchartoks‹クラス1›‹クラス2›
はトークン列パラメタである。
XeTeXのやつ
\XeTeXglyphname‹フォント›‹整数:グリフ番号›
:そのフォントの指定のグリフ番号(GID)に対応するグリフ名(文字列)。\XeTeXfeaturename‹フォント›‹整数:featureコード›
:AATのfeatureの名前(文字列)。\XeTeXvariationname‹フォント›‹整数:variationコード›
:AATのvariationの名前(文字列)。
以下のものはpdfTeXのプリミティブを名前を変えて採用したもの。
\ifprimitive
☆:pdfTeXの\ifpdfprimitive
と同じ。\normaldeviate
:pdfTeXの\pdfnormaldeviate
と同じ。\strcmp{‹文字列1›}{‹文字列2›}
:pdfTeXの\pdfstrcmp
と同じ、ただしUnicode対応になっている。
※文字列の比較は「UTF-16のユニット列」として(あるいは「UTF-16BEのバイト列」と考えても同値)行われる。従って、BMP外の文字が含まれる場合は必ずしもUnicode符号値の順にはならない。\uniformdeviate
:pdfTeXの\pdfuniformdeviate
と同じ。
“U~”なやつ
名前がU
で始まる拡張プリミティブはUnicodeに関するもので、この命名法はXeTeXとLuaTeXで名前を共通にすることを意図している。とはいっても必ずしも両方のエンジンで実装されているとは限らない。
\Uchar‹整数:文字コード›
:その文字コードを持ち、\the-文字列の規則におけるカテゴリコードを持った文字トークン。言い換えると、その文字コードの文字1つだけからなる\the-文字列。
※XeTeX・LuaTeX・e-(u)pTeXで利用可能。\Ucharcat‹整数:文字コード›‹整数:カテゴリコード›
★:指定の文字コードとカテゴリコードを持つ文字トークン。
※XeTeX・e-(u)pTeXで利用可能。\Umathcharclass‹整数:文字コード›
:その文字に対する数式クラス*3の値(整数)。
※LuaTeXで利用可能。\Umathcharfam‹整数:文字コード›
:その文字に対する数式ファミリの値(整数)。
※LuaTeXで利用可能。\Umathcharslot‹整数:文字コード›
:その文字に対する数式スロット(数式フォント中の文字コード)の値(整数)。
※LuaTeXで利用可能。