マクロツイーター

はてダから移行した記事の表示が崩れてますが、そのうちに直せればいいのに(えっ)

TFM 名(Berry 命名規則)と NFSS の属性の関係

TFM 名(Berry 命名規則、あるいは「ZR 命名規則(謎)」*1)の Weight、Variant、Width の属性は NFSS のシリーズ、シェープの属性と似た概念であるが、前者は「元のフォント名で称されているもの」、後者は「実際に LaTeX でどの属性値を使いたいか」によって決められる。従って、両者の間に固定された機械的な対応はない。例えば、「AAA Demibold」と「BBB Semibold」という(別ファミリの)2 つのフォントがあるとすると、これらの TFM 名は aaa-d-ly1(Weight は d(Demi))と bbb-s-ly1(Weight は s(Semibold))となるが、LaTeX サポートを行う者が「両方ともシリーズ sb (Semi-bold)でよい」と考えたなら、NFSS 属性は LY1/aaa/sb/n と LY1/bbb/sb/n となるだろう。あるいは、あるファミリにウェイト「Demi」しかない場合は、TFM 名の Weight は d(Demi)としつつ、LaTeX では「普通の」シリーズ m(Medium)に対応させるのが適当かも知れない。

NFSS の属性値については、「設定する人に任せられる」という性質のため、Berry 規則のような「規定文書」が存在せず、完全にコミュニティの慣習に任せられている。だから「どういう値を用いればよいか解らない」と戸惑うこともあるだろう。そこで、「実際に用いられる NFSS 属性値の例を示す」ことと「『機械的な』TFM と NFSS の対応の例を示す」ことを目的として、以下では fontinst パッケージで用いられている対応を挙げることにする。「TFM」の欄が「—」なのは、「fontinst では対応が与えられていないが、用いられることのある NFSS 属性値」である。

[TFM Weight + Width ←→ NFSS シリーズ]

Weight に対応する「シリーズ(1)」と Width に対応する「シリーズ(2)」を順に並べたものが「シリーズ」の値となる。ただし両方が「m」の場合は片方を略して「m」をシリーズとする。例えば aaa-brx-ly1 *2は LY1/aaa/bx/n、aaa-r-ot1 は OT1/aaa/m/n となる。

TFM WeightNFSS シリーズ(1)
aul (Ultra Light)
jel (Extra Light)
ll (Light)
r, km (Medium)
mmb (Medium-bold)
ddb (Demi-bold)
ssb (Semi-bold)
bb (Bold)
h, c, xeb (Extra Bold)
uub (Ultra Bold)
TFM WidthNFSS シリーズ(2)
o, uuc (Ultra Condensed)
qec (Extra Condensed)
c, p, nc (Condensed)
sc (Semi-Condensed)
rm (Medium)
sx (Semi-Expanded)
e, xx (Expanded)
vex (Extra-Expanded)
ux (Ultra-Expanded)
[TFM Variant ←→ NFSS シェープ]

例えば、aaa-bo-t1 なら T1/aaa/b/sl となり、aaa-b-t1 なら Variant は r だから T1/aaa/b/n となる。シェープの扱いはあまり標準化されていないので、例えば aaa-ric-t1 のような「複数の Variant の指定」(Small Caps + Italic)を含む場合が判然としないのだが、この場合、scit のように単純に複数の要素を並べたシェープ値を用いる(つまり T1/aaa/m/scit とする)ことが多い(慣習として、scit であり itsc でない)。その他の(Berry 規則の Variant 値がある、あるいはそれ以外の)Variant もシェープとして扱われ、その場合の値は LaTeX パッケージ作成者によりまちまちである。*3

TFM VariantNFSS シェープ
rn (Normal)
csc (Small Caps; スモールキャピタル)
osl (Slanted; 斜体)
iit (Italic; イタリック)
ui (Upright Italic; 直立イタリック)
ol (Outline; 白抜き)

*1:以前の記事で紹介したように、Berry 規則の Weight、Variant、Width の指定法は ZR 規則にそのまま受け継がれる。この記事の以下の例では TFM 名を ZR 規則の命名で示す。

*2:Width が r 以外で Variant がない(つまり r)の場合は Variant の r が残る。aaa-bx-oy1 だと x は Variant の値となってしまう。本来の Berry 規則ではエンコーディングが Variant の一種と扱われ …b8yx となるので Variant の r はあまり出現しないのだが。

*3:大抵は、「そのパッケージ特有の高水準命令」を用意してそれで隠蔽してしまうので、それで問題になることがない。