フォントファイル
BDF にフォントファイルをドロップしても、そのフォントで何かを描くわけではありません。変換器はフォントのプレビューアです。.ttf・.otf・.ttc・.woff・.woff2 を、どの文字とグリフがあり、OpenType のフィーチャーが実際に何をするかを見せるページにします。BDF は Canvas 2D の上で動きます。fillText はブラウザの既定のフィーチャー(liga、kern など)しか適用せず、文書側から他のフィーチャーを指定する手段がありません。だからフィーチャーの働きは、文をシェーピングして見せるのではなく、グリフを 1 つずつ並べて描きます。
試してみる
ファイルをビューアにドロップするか、サンプルを試してください。OpenType フォント(STIX Two Text)。
フォントファイル(.ttf、.otf、.ttc、.woff、.woff2)
converter/font は TrueType、OpenType、そのコレクション(.ttc・.otc)、WOFF・WOFF2 を読みます。フォントごとにスクロールの View を 4 つ作ります。概要・文字・グリフ・フィーチャー(フィーチャーは GSUB も GPOS も無ければ作りません)で、コレクションはフォントの数だけ 4 つの組を作り、id に -1、-2 … を付けてそのフォントの名前を題にします。-param font= でコレクションのどのフォントを見せるか選べます。指定しなければ全部、または合計 262,144 グリフまでの先頭のフォントです(CJK フォントを 10 本、65,535 グリフずつ束ねたコレクションもあります)。
- 概要 — フォント名を大きく、字形見本と文字セット、フォントが対応する各スクリプトの見本文を 8〜72 pt の大きさで(そのスクリプトのパングラム、または
-param text=)、各言語の name テーブル、ライセンスと OS/2 の埋め込み許可、メトリクス、可変フォントの軸と名前付きインスタンス、レイアウトテーブルのスクリプトとフィーチャー、カラーパレット、テーブルの一覧。 - 文字 — Unicode のブロックごとのコード表と、ブロックごとの被覆率。
- グリフ — 全グリフを ID 順に、名前・文字・GDEF のクラスつきで。
- フィーチャー — GSUB と GPOS の全フィーチャーを、対象のスクリプトと言語、ブラウザが指定なしに適用するかどうか、ルックアップの働きとともにグリフで描きます。置換(合字、代替字形、スモールキャピタル、文脈ルールが適用するルックアップ)、カーニングのペアを前後と値つきで、単一調整を送り幅の箱つきで、マークの基底字への付き方です。
-param examples=でフィーチャーごとに見せる置換とペアの数を絞れます。
フィーチャーの読み取りは BDF 自前の GSUB・GPOS リーダー(internal/otlayout)で、ルックアップごとに fontTools と照合してあります。
グリフはフォント自身を 2 つの形で埋め込んで描きます。1 つはレイアウトテーブルを除いて cmap を差し替え、各グリフを私用領域の 1 文字に割り当てたものです。シェーパーは単独の文字でも置換しうるので、グリフ N をグリフ N のまま描くにはこの方法しかありません(カラーグリフも含めて)。もう 1 つはレイアウトテーブルを残し、見本文が届くグリフだけに削ったものです。見本文はこちらで描くので、ブラウザが実際にシェーピングします(アラビア文字の連結、インド系文字の結合、既定のカーニングと合字)。可変フォントは既定のインスタンスで描きます。OS/2 の fsType が埋め込みを禁じるフォントはアウトラインで描きますが、-ignore-fstype(権利がある場合のみ)を指定すれば埋め込みます。ブラウザ版は Brotli を持たないため、WOFF2 は読めません。
| オプション | 値 | 既定 |
|---|---|---|
-param font= |
コレクションのうち見せるフォント、1 始まりでコンマ区切り、または all |
all、または合計 262,144 グリフを超えるコレクションの先頭のフォント |
-param text= |
サイズ別の見本文を、フォントのスクリプトのパングラムの代わりに指定 | — |
-param examples= |
フィーチャーごとに見せる置換とペアの数、または all |
200 |
-ignore-fstype |
OS/2 の fsType が埋め込みや部分集合化を禁じるフォントも埋め込む |
オフ |
内部の実装は design.md §3.28 を参照してください。