[TODO] ちょっと項目名がわかりにくいので,TeXとフォントに一部統一したり,別の項目名でまとめなおしたりしてはどうでしょうか…2006 年頃からほとんど内容が変わっていないので,あまり参照されていない?

「出力したとき,半角で打ったアルファベットと全角で打ったアルファベットの違いはなにか教えてください。」
qa:19353, qa:19392, qa:19407, qa:19409, qa:19425, qa:19429
「日本語用と同じフォント」
qa:30300, qa:30306, qa:30312, qa:30324
「LaTeXにおける,和文フォントの半角英数字部分の利用」
qa:11509, qa:11511, qa:11519, qa:11520, qa:11524, qa:11551
「TTF2TFM の 0 による除算エラー」
qa:11643, qa:11644, qa:11651, qa:11668, qa:11670, qa:11791, qa:11803
「文字コードをずらす命令」
qa:37494, qa:37495, qa:37496, qa:37499, qa:37501, qa:37504

概要

プロポーショナルな和文 TrueType フォントのいわゆる半角英数字のグリフデザインは,そのフォントの和文字(いわゆる全角文字)とマッチするようにデザインされています。 この英数字を TeX で利用して,dvipdfmx で TrueType フォントを埋め込んだ PDF を作成することを考えました。

pTeX 内部では半角文字と全角文字は別々に扱われるので,元になる一つの TrueType フォントから半角文字部分用の tfm を生成して利用します。 全角文字部分はあまりプロポーショナルな要素がないので,min10.tfm や jis.tfm を流用可能です。 全角文字部分についてもきちっとやるなら,dviout とともに配布されている propw を利用します。

用意した tfm さえあれば TeX での組版はできて,dvi が生成できます。 dvi ファイルを dviout で見たければ,TrueType フォントとの対応を指定すればよいでしょう。

[TODO] このあと dvipdfmx を用いて PDF を作成するためには... どうすればよいのでしょう?? (和文の場合なら DVIPDFM-W32.txt に情報があります)

半角文字部分用の tfm を生成する

ttf2tfm を用いる

Windows で「MS P明朝」の tfm を生成する場合の使用例を示します。

ttf2tfm c:\windows\fonts\msmincho.TTC -f 1 mspminA.tfm > mspminA.log

「MS P明朝」は「MS 明朝」などと一緒に TrueType フォントコレクションとして msmincho.TTC に収められていて,そのうちの2番目のフォントです。 フォントインデックスは0から数えるのでこの場合は “-f 1” と指定します。 “> mspminA.log” としておけばログをファイルに落とせます。

tfm のファイル名については何でもよいのですが,「MS P明朝」の和文部分を利用すべく dviout と一緒に配布されているファイル群では「MS P明朝」の和文部分に対して “mspmin” を割り当てているので,それと関連しつつ区別できる名前がよいでしょう。 ここではアルファベット部分というニュアンスで“A”を接尾しました。

propw を用いる

[TODO] 可能でしょうか?

FontForge を用いる

FontForge(要 X Window System)で TTF (foo.ttf) を読み込んで,PC Type 1 フォントを generate します. このとき,Option のボタンを押して,TFM/enc をチェックし,TFM と enc ファイルを生成します(foo.tfm, foo.enc).

TeX/LaTeXで組版する

\fontで直接指定

nfss(LaTeX流のフォント選択機構)での利用

\DeclareFontFamily{OT1}{mspmin}{}
\DeclareFontShape{OT1}{mspmin}{m}{n}{%
    <10> mspminA
}{}

などとしておいて,

\fontfamily{mspmin}\selectfont

で使える。(エンコーディングはOT1でいいのかしら?)

The CMR encoding とは違うから,Unknown で U にするか,ローカルなものでLナントカにする方がよいのでは?

DeclareFontFamily{U}{mspmin}{}
\DeclareFontShape{U}{mspmin}{m}{n}{%
  <-> s * mspminA
}{}

\fontencoding{U}\selectfont
\fontfamily{mspmin}\selectfont

とか.

(dviout に付属の winttf の機構に乗せられないかしら?)

dvipdfmx で PDF にするための設定

vf の準備

vf なしで 7bit ASCII 文字がとりあえず出力できればよい場合

FontForge で生成したファイルを適切なディレクトリにコピーし,kanjix.map を修正します.

foo foo :0:foo

その他

最良の方法かどうかはわかりませんが, 以下の解説のように Unicode.sfd, ttf2tfm などを用いた方法があります。 半角英数字のみのフォントでも大丈夫そうです。

半角英数字のみのフォントの追加方法としての紹介でしたが,『解決!! LATEX2e』には,T1-WGL4.enc, ttf2afm, afm2tfm を用いた方法があります。 試していませんが,この方法も本項目の目的を満たすことができるものかもしれません。


Last-modified: 2016-03-25 (金) 12:07:11 (1356d)