マクロツイーター

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

オレオレ命名規則について語ってみる

私自身は、TFM の名前を決める時に、Berry 命名規則ではなく、それを少し変更した「ZR 命名規則(謎)」を用いている。これについての経緯は以前の記事で説明した。拙作のパッケージの中の TFM の名前の付け方が気になる人*1のために、この命名規則についての説明をしておく。

「ZR 命名規則(謎)」は以下のような書式をとる。[ ] 内は省略可能である。

[r-]〈ファミリ〉-〈シェープ〉[-〈エンコーディング〉][-〈サイズ〉]

〈 〉内の要素は英小文字と数字のみで構成され、以下のように決められる。

  • [r-] は仮想フォントの参照先でかつ参照元と同じエンコーディングをもつ場合*2に用いる。Berry 規則の Supplier の(obsolete な) r と同じ意味。
  • 〈ファミリ〉は命名作業者が自由に決める。Berry 規則の Supplier + Family に相当するが、これと異なり、元の名称から自動的に決まるものではない。通常は LaTeX の NFSS で用いるファミリ名と同一にする。
  • 〈シェープ〉は Berry 規則の Weight + Variant + Width に相当する部分で、Berry 規則と全く同じようにするが、例外として、「エンコーディング」に相当する Variant 値(7t、8y 等)は除外する。*3
  • エンコーディング〉は文字通り(和文・欧文の)エンコーディングを表す。
    • LaTeXエンコーディング名(U 以外)がある場合は、それを小文字に直したものにする。例:ot1、t2a、jt2
    • CMap 以外の Unicode の場合は「u」とする。*4
    • Unicode の欧文サブフォント(Unicode.sfd によるもの;256 文字ずつ)は u00〜uff (つまりマップ指定で u@Unicode@ と書く)とする。*5
    • その他は必要に応じて適宜定める。原則 3 文字以内にする。
    • OTF パッケージの形式の和文サブフォント(4096 文字ずつ*6)は元のエンコーディングの後に z0、z1、… を付したものにする。例:j32z0、j40z1
    なお、エンコーディング部は必須ではない。LaTeXエンコーディング名がない(あるいは U である)場合で、かつ他のフォントとエンコーディングにより区別する必要がない場合はエンコーディング部を省略すべきである。
  • 〈サイズ〉はオプティカルである場合のデザインサイズ。*7

命名の例

例えば、「持ち込む話」で扱った、「Plasma Drip BRK」(ファミリ名 plasma、エンコーディング LY1 で用いる)の場合:

  • 〈ファミリ〉は LaTeX のファミリに合わせて plasma とする。
  • 〈シェープ〉は Berry 規則に従って決める。この場合、元のフォント名に(Berry 規則の)Weight、Variant、Width を表現する単語が含まれていないので、この 3 つは全て r(regular)となる。Variant と Width がともに r の場合はそれらを省くと決められているので、結果的に〈シェープ〉は r となる。
  • エンコーディング〉は LY1 を小文字に直して ly1。(ちなみに、Berry 規則だと 8y となる。)
  • オプティカルサイズでないので〈サイズ〉はなし。
  • 従って、結果は plasma-r-ly1 となる。

「持ち込む練習」で扱った「CM Sans Serif Quotation Style」(cmssq8)および「〜 Slanted」(cmssqi8)に新たに ZR 命名規則を適用するとしたら*8

  • 〈ファミリ〉を cmssq とする。(「CM Sans Serif Quotation Style」全体をファミリと扱っている。*9
  • cmssq8 の〈シェープ〉は: Weight が r、Variant が r、Width が r、従って全体で r。
  • cmssqi8 の〈シェープ〉は: Weight が r、Variant が o、Width が r、従って全体で ro。
  • エンコーディング〉は ot1。
  • もしオプティカルサイズとして扱うなら、〈サイズ〉を 8 とする。
  • 従って、cmssq8 は cmssq-r-ot1-8、cmssqi8 は cmssq-ro-ot1-8 となるはずである。

*1:ひょっとすると本当にいたりして?

*2:和文フォントで原メトリックである、あるいは仮想フォントで一部グリフを補う場合の元の「一部欠落した」もの、等。

*3:だから 5ߝ9 の数字が余る。「9」を「和文の(OTF パッケージの意味の)expert」に割り当てている。

*4:CMap の(和文UnicodeLaTeX の名前を使う(jy2、j20、j32 等)。

*5:Unicode.sfd は BMP のみをカバーする。

*6:私は勝手に「4096 サブフォント」と呼んでいる。

*7:整数のみを想定している。

*8:無論この場合は TFM 名が先に決まっているので、そうする意味は全くない。

*9:もし、CM フォント全体を再命名するという場合、「CM Sans Serif」をファミリ(Berry 規則の Family)として「Quotation Style」を(Berry 規則の)Variant と扱うほうが自然かもしれない。(でもそういう属性値はないので結局できない?)さらに、CM フォントのように、同じ「ファミリ名」でセリフとサンセリフの両方があるという場合に対応できるように、Sans(s)や Typewriter(t)を Variant として用意している。