
私は、サンセリフ文字に Helvetica クローン、ギリシャ文字に Times クローンを使用しているため、newtx パッケージが気に入っています。これらのクローン フォントの OpenType または TrueType バージョンを生成するにはどうすればよいでしょうか。他のアプリケーションで使用できるように、システム フォントとしてインストールしたいと考えています。
newtx パッケージでインストールされたフォント ファイルを探すと、フォント定義ファイル (.fd)、フォント メトリック ファイル (.tfm、.afm) はありますが、フォント アウトライン ファイル (.pfb) はわずかしかありません。'ntxmi' (斜体数学フォント)、'ntxmia' (直立数学フォント)、'ntxss' (サンセリフ フォント) のフォント アウトライン ファイルが見つからないようです。pdfLaTeX はこれらのフォント アウトライン ファイルをどこから取得しているのでしょうか。取得したら、どうすればよいのでしょうか。
念のため言っておきますが、私は Font Forge をインストールしていますが、その使い方については専門家ではありません。
答え1
このフォントにはアウトライン フォントはなく、仮想フォントです。つまり、基本的に各「文字」は他のフォントの文字を組み合わせた DVI コードの断片であり、通常は (必ずしもそうとは限りませんが) それぞれが構成フォントの 1 つのグリフを使用します。(特殊なケースでは、仮想フォントの 1 つの文字が、おそらく異なるフォントの複数の文字から構成されることがあります) vf ファイルには、間隔と配置の詳細もエンコードされます。
仮想フォントを使用して生成された PDF ファイルを確認すると、使用されている仮想フォントは表示されず、代わりに構成フォント (このフォントの場合は通常、通常のアウトライン フォント) が表示されます。
vfファイルを人間が読めるプロパティリスト形式に変換し、構成フォントを確認することができます。
vftovp /usr/local/texlive/2013/texmf-dist/fonts/vf/public/newtx/ntxmia.vf
(またはシステム上の同等のパス)
もちろん、フォント フォージなどのフォント エディターを使用して構成要素を組み合わせ、適切なカーニングをすべて設定することで、実際にフォントを作成することは理論的には可能ですが、本質的には新しいフォント作成プロジェクトになるため、既存の vf ファイルはおそらくあまり役に立ちません。
答え2
コメントには書きませんが、ntxmia.vf の vftopl の出力の一部を次に示します。
これらの各 MAPFONT コマンドは、これを構築するために使用される非仮想フォントに対応します。
(MAPFONT D 0
(FONTNAME txmia)
(FONTCHECKSUM O 4141071701)
(FONTAT R 1.0)
(FONTDSIZE R 10.0)
)
(MAPFONT D 1
(FONTNAME txsyc)
(FONTCHECKSUM O 2224045220)
(FONTAT R 1.0)
(FONTDSIZE R 10.0)
)
(MAPFONT D 2
(FONTNAME txr)
(FONTCHECKSUM O 32212676346)
(FONTAT R 1.0)
(FONTDSIZE R 10.0)
)
(MAPFONT D 3
(FONTNAME ntxexb)
(FONTCHECKSUM O 624127613)
(FONTAT R 0.833)
(FONTDSIZE R 10.0)
)
(MAPFONT D 4
(FONTNAME rtxmio)
(FONTCHECKSUM O 2235410564)
(FONTAT R 1.0)
(FONTDSIZE R 10.0)
)
(MAPFONT D 5
(FONTNAME ntxsyralt)
(FONTCHECKSUM O 20635152700)
(FONTAT R 1.0)
(FONTDSIZE R 10.0)
)
(MAPFONT D 6
(FONTNAME txsyb)
(FONTCHECKSUM O 24667272411)
(FONTAT R 1.0)
(FONTDSIZE R 10.0)
)
(MAPFONT D 7
(FONTNAME ptmr8r)
(FONTCHECKSUM O 4767720433)
(FONTAT R 1.0)
(FONTDSIZE R 10.0)
)
(MAPFONT D 8
(FONTNAME zxxrl7z)
(FONTCHECKSUM O 36463136262)
(FONTAT R 1.0)
(FONTDSIZE R 10.0)
)
ここでは 9 つのフォントが使用されています。0 のラベルが付いているフォントがメインのデフォルト フォントです。つまり、特に指定がない限り、文字は txmia から取得されます。
最初のスロット (スロット 0) に割り当てられた文字は次のとおりです。
(CHARACTER O 0
(CHARWD R 0.546)
(CHARHT R 0.667999)
(CHARIC R 0.05)
(COMMENT
(KRN O 177 R 0.035)
)
(MAP
(MOVERIGHT R 0.02)
(SETCHAR O 0)
(MOVERIGHT R -0.03)
)
)
これは、元のフォントの自然な位置を基準にして文字の位置を調整します。つまり、TeX は文字のためのスペースを作る前に少し移動し、その後、反対方向に少し移動します。(TeX に関する限り、すべての文字は長方形のボックスです。)
後のスロットのキャラクターは次のとおりです。
(CHARACTER C 6
(CHARWD R 0.636)
(CHARHT R 0.615)
(CHARDP R 0.102)
(MAP
(SELECTFONT D 1)
(SETCHAR C 1)
)
)
SELECTFONT 命令は、この文字が txmia からではなく、txsyc から取得されることを示します。
このキャラクターは、前の 2 つのアイデアを組み合わせて作成されます。
(CHARACTER O 100
(CHARWD R 0.482)
(CHARHT R 0.6925)
(CHARDP R 0.013499)
(CHARIC R -0.01)
(COMMENT
(KRN O 177 R 0.025)
)
(MAP
(MOVERIGHT R -0.01)
(SELECTFONT D 4)
(SETCHAR O 100)
(MOVERIGHT R -0.02)
)
)
今回はrtxmioから文字を取得していますが、設定前と設定後でTeXも多少動きます(今回は同じ方向に2回)。
David Carlisle 氏が説明したように、仮想フォントではまったく新しい文字を作成することもできます。たとえば、フォントに fi 合字がない場合、仮想フォントの適切なスロットで f と i を組み合わせることで fi 合字を作成できます。(もちろん、実際の合字ではなく、単に f の後に i が続くだけですが、これにより「fish」などの単語を簡単にタイプセットできます。)