FontForge には、TeX を取り扱うための多数の機能が組み込まれています。
“pk”形式と“gf”形式のビットマップを読み込むことができ、それらに autotrace を適用してアウトラインフォントを生成することができます。 “.mf”ファイルに metafont を直接呼び出して“gf”ビットマップを生成し、autotrace にかけてアウトラインフォントを出力することさえ可能です。
合字とカーニングの情報を“.tfm”ファイルから読み込むことができます。 TFM ファイルを作成することもできます。
エンコーディング ファイルには、多数の標準 TeX エンコーディングが組み込まれています。
大規模な CJK の TrueType フォントに対しては、ttf2tfm のマニュアルページで手議されているとおりのサブフォント定義ファイルを読み込むことができ、この 2 つのファイルを元に一揃いの PostScript Type 1 フォントを 出力 することができます。
Lilypond 開発者グループと協議して、TeX 固有の情報を True/OpenType ファイルに格納する SFNT テーブル‘TeX’ を新たに設計しました。
TFM ファイルを出力する前に、以下の手順のいくつかを実行しなければなりません。
エレメント(L)→フォント情報(F)...→[ΤεΧ] で行います。
エレメント(L)→グリフ情報(I)...→[選択型の置換] タブを選ぶ
-
[新規(N)] を押す
-
プルダウンリスト
タグ(T) で イタリック補正 を選ぶ
-
イタリック補正値を
ΔXadvance に入力する
エレメント(L)→文字情報(I)→[別の位置] タブを選ぶ
[新規(N)...] を押す
タグ(T) で TeXグリフリスト を選ぶ
lparen.big lparen.bigger lparen.biggest”と打ち込むことになる。
エレメント(L)→文字情報(I)→[複数の置換先] タブを選ぶ
[新規(N)] を押す
タグ(T) で TeX拡張リスト を選ぶ
lparen.top lparen.mid lparen.bottom lparen.ext" と入力することになる。
注意: FontForge が ファイル(F)→カーニング情報の統合(M) を TFM ファイルに対して行った場合、これらの値は適切に設定されます。
満足の行くまでこれを行ったならば、TFM ファイルを出力する準備ができています。
ファイル(F)→フォントを出力(G) で出てくるプルダウンリストから PostScript エンコーディングのどれか 1 つを選び、[オプション] ボタンを押して [*]TFMとENCを出力 チェックボックスをオンにします。
あなたがこれらのファイルを使って何を行うのか筆者は完全に理解していませんが、それらはこの手順で作成できるでしょう。
筆者は初心者の TeX/LaTeX ユーザなので、コメントは眉に唾をつけて読んでください。 手元のシステムではこの手順で動かすことに成功しました。
PostScript フォントを TeX にインストールするのは予想よりずっと複雑です (そのため、私はラテン文字のフォントをインストールする方法しか説明できません)。 フォントファイルを単に標準ディレクトリに移動するだけではなく以下のことをしなければなりません:
この先を読む前に、web 上の以下のリソースを参照することをお奨めします:
筆者は以下のようにしました:
#!/bin/bash
# 以下の 2 行はあなたの作るフォントに合わせて修正する必要があるでしょう。
# その後ろの 2 行も変更したいかもしれません。
BASE=fcu
PACKAGE=cupola
VENDOR=public
LOCALTEXMF=/usr/local/share/texmf
# 後で混乱の元になりそうなファイルが元からあれば全て削除します
csh -c "rm fi.tex *.mtx *.pl *.vpl"
# TeX が必要とする各種のファイルを生成できるように、小さなスクリプトを作成します
echo "\\input fontinst.sty" >fi.tex
echo "\\latinfamily{$BASE}{}" >>fi.tex
echo "\\bye" >>fi.tex
# そのスクリプトを実行します
tex fi
# しかし、これらのファイルはちょっと追加の加工を行う必要があります
for file in *.pl ; do
pltotf $file
done
for file in *.vpl ; do
vptovf $file
done
# もう必要でなくなったゴミを削除します
rm fi.tex *.mtx *.pl *.vpl
# さまざまなコンポーネントが必要とするディレクトリを作成します
mkdir -p $LOCALTEXMF/fonts/type1/$VENDOR/$PACKAGE \
$LOCALTEXMF/fonts/afm/$VENDOR/$PACKAGE \
$LOCALTEXMF/fonts/tfm/$VENDOR/$PACKAGE \
$LOCALTEXMF/fonts/vf/$VENDOR/$PACKAGE \
$LOCALTEXMF/tex/latex/$VENDOR/$PACKAGE
# 全ての物をあるべきディレクトリに置きます
cp $BASE*.pfb $LOCALTEXMF/fonts/type1/$VENDOR/$PACKAGE
cp $BASE*.afm $LOCALTEXMF/fonts/afm/$VENDOR/$PACKAGE
mv $BASE*.tfm $LOCALTEXMF/fonts/tfm/$VENDOR/$PACKAGE
mv $BASE*.vf $LOCALTEXMF/fonts/vf/$VENDOR/$PACKAGE
mv *$BASE*.fd $LOCALTEXMF/tex/latex/$VENDOR/$PACKAGE
# 最後にこのフォントの LaTeX パッケージを作成し (て、正しい場所に置き) ます
echo "\\ProvidesPackage{$PACKAGE}" > $LOCALTEXMF/tex/latex/$VENDOR/$PACKAGE/$PACKAGE.sty
echo "\\renewcommand{\\rmdefault}{$BASE}" >> $LOCALTEXMF/tex/latex/$VENDOR/$PACKAGE/$PACKAGE.sty
echo "\\endinput" >> $LOCALTEXMF/tex/latex/$VENDOR/$PACKAGE/$PACKAGE.sty
# しかし map ファイルの更新にはこのスクリプトが知っているよりちょっと余分に
# 知識が必要です。筆者はこれを手動で行ってもらうことにしました
echo "*********************************************************************"
echo あなたは自分のマップファイルを作成する必要があります。
echo 一つは $LOCALTEXMF/dvips/config/$BASE.map という名前で、ファミリーに
echo "含まれる各フォントを列挙した 1 行からなります 以下のような感じです:"
echo "${BASE}r8a $PACKAGE-Regular \"TexBase1Encoding ReEncodeFont\" <8r.enc <${BASE}r8a.pfb"
echo それから config.ps ファイルで標準のマップファイルを定義している場所を
echo 探して、その後ろを以下のように書き換えてください:
echo "p +$BASE.map"
echo それから $LOCALTEXMF/pdftex/config/ に移動し、
echo $LOCALTEXMF/dvips/config/$BASE.map をコピー "(またはリンク)" して
echo pdftex.cfg を編集し、これも同様に
echo "p +$BASE.map"
echo という記述を適切な場所に追加してください。