TeX/Font/MakeFont

ls-grml

最近は三日月型シグマ(lunate sigma)で組まれた校訂本も増えてきています。LaTeX 用に配布されているフォントには三日月型シグマを含んだものはあまりありません。ドイツの Teubner 社の古典叢書(Bibliotheca Teubneriana)で伝統的に使われてきたフォントを模した、grml フォントに三日月型シグマを追加してみることにしました。

三日月型シグマの作成

$ cp /path/to/grml1000.pfb ./ls-grml1000.pfb
$ fontforge ls-grml1000.pfb

FontForge が起動したら、後で修正するときのことを考えて「ファイル」-「別名で保存」で ls-grml1000.sfd というファイル名で保存しておきます。大文字・小文字ともオミクロンをベースにするのが簡単でしょう。FontForge 上で大文字・小文字のシグマの位置にコピーしておきます。他の字形(グリフ)は不要なので削除しておきます。なお、オミクロンを半分に割っただけでは文字幅が狭く感じますので、両端を引き伸ばすようにするとよいようです。

.pfb, .tfm ファイルの出力

「ファイル」-「フォントを出力」で .pfb, .tfm, .enc ファイルを出力します。できた ls-grml1000.tfm を読める形に変換します。

$ tftopl ls-grml1000.tfm ls-grml1000

次のような記述があります。後で使います(*)。

(CHARACTER C S
   (CHARWD R 0.66)           <- 後で使う
   (CHARHT R 0.705999)   <- 後で使う
   (CHARDP R 0.021363)   <- 後で使う
   )
(CHARACTER C s
   (CHARWD R 0.403)           <- 後で使う
   (CHARHT R 0.441271)   <- 後で使う
   (CHARDP R 0.012545)   <- 後で使う
   )

仮想フォントの作成

仮想フォントを作ります。grml1000.tfm を読める形に変換します。

$ cp /path/to/grml1000.tfm ./
$ tftopl grml1000.tfm ls-grml.vpl

ls-grml.vpl ファイルの最初の方に FONTDIMEN というセクションがありますので、その下に次のような記述を加えます。

(MAPFONT D 0
   (FONTNAME grml1000)
   (FONTAT R 1.0)
   (FONTDSIZE R 10.0)
   )
(MAPFONT D 1
   (FONTNAME ls-grml1000)
   (FONTAT R 1.0)
   (FONTDSIZE R 10.0)
   )

次に、CHARACTER C S という記述を探します。(*)で控えた行で置き換え、MAP セクションを加えます。

(CHARACTER C S
   (CHARWD R 0.66)           <- 置き換え
   (CHARHT R 0.705999)   <- 置き換え
   (CHARDP R 0.021363)   <- 置き換え
   (MAP                                 <- 追加
      (SELECTFONT D 1)       <- 追加
      (SETCHAR C S)       <- 追加
      )                                <- 追加
   . . .
   )

同様に CHARACTER C c, CHARACTER C s に対して小文字のシグマの記述を行います。

仮想フォントを作成します。

$ vptovf ls-grml.vpl ls-grml

.fd, .map ファイルの作成

ot1ls-grml.fd ファイルを作成します。

¥DeclareFontFamily{OT1}{ls-grml}{}
  ¥DeclareFontShape{OT1}{ls-grml}{m}{n}{ <-> ls-grml }{}
  ¥DeclareFontShape{OT1}{ls-grml}{bx}{n}{ <-> sub ls-grml/m/n }{}
  ¥DeclareFontShape{OT1}{ls-grml}{b}{n}{ <-> sub ls-grml/m/n }{}
  ¥DeclareFontShape{OT1}{ls-grml}{m}{sl}{ <-> sub ls-grml/m/n }{}
  ¥DeclareFontShape{OT1}{ls-grml}{m}{it}{ <-> sub ls-grml/m/n }{}
¥endinput

これらに加えて ot1 を t1, lgr に変えたもの(t1ls-grml.fd, lgrls-grml.fd)も作っておきます。

ls-grml.map ファイルは次のようになります。

grml1000 grml1000 "" <grml1000.pfb
ls-grml1000 ls-grml1000 "" <ls-grml1000.pfb

テスト1

$ tex testfont
. . .
*¥table¥bye
$ dvipdfmx -f ls-grml.map testfont

テスト2

次のような test.tex を作成します。

¥documentclass{article}
¥usepackage[greek,english]{babel}
¥languageattribute{greek}{polutoniko}

¥begin{document}

{¥usefont{LGR}{ls-grml}{m}{n} Test, test}

¥end{document}

次のように処理します。

$ latex test
$ dvipdfmx -f ls-grml.map test

インストール

必要なファイルをインストールします。.map ファイルの登録は次のようにします。

$ updmap(-sys) --enable Map=ls-grml.map

.sty ファイル

必要に応じて ls-grml.sty ファイルを作成してインストールします。


トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS