らんだむな記憶

blogというものを体験してみようか!的なー

エレメント方式アウトラインフォント

ぼんやりと眺めているとフォントについて概要からリコーのフォントについて言及があって、どうもこれは使ったことがある気がしたので見てみた。
RT Font(スケーラブルフォント) | 産業向け製品 | リコー

RT FontはTrueType フォントと同じアウトラインでできたフォントですので、なめらかに拡大、縮小ができるスケーラブルフォントです。

ほほぅ、こういう名称だったのか。多分これは使ったことがある。正確には傍観していただけだがw

GitHub - adobe-fonts/source-sans-pro: Sans serif font family for user interface environmentsでも á のようなアクセント記号付きのものは「a」とアクセント記号 acute の合成で定義している。

  <outline>
    <component base="a"/>
    <component base="acutecmb" xOffset="263"/>
  </outline>

まぁ、いまとなってはRT Fontがどういうものだったのか知る由もなしというところだが、エレメントごとにインデックスと開始点の座標とスケールの情報があって、スケールを設定して、開始点を指定のオフセットに合わせるという形でグリフの全エレメント分だけそんな記述をしているのかもしれないな。

OpenType/CFFで使われている Type 2 Charstring (https://partners.adobe.com/public/developer/en/font/5177.Type2.pdf) でもサブルーチンなる概念があって、共通の描画命令をサブルーチンという形で関数化され、同じようなグリフ形状のところでは callsubr 命令で呼び出される。
そういう意味では、すべてのエレメントがサブルーチン化されていて、個々の具体的なグリフは rmoveto と callsubr だけで定義されているような状態かもしれない。この形に特化したCFFのジェネレータを自前で書かないとならないかもしれないが、それさえ作ってしまえば RT Font を OpenTypeフォントとして実現できそうだ。とは言え、別にOpenTypeを組み込みで使う必要もないだろうし、需要もなさそうだからきっとそんな実装は現れないだろうな~