EWBとpTeXのフォントの話
この記事はEWBアドベントカレンダー2019の8日目の記事です。
2019-12-09追記:
ツッコミ待ちらしいが,実際指摘対象になるような記述がない.ちょっと気になったのは
— ワトソン (@wtsnjp) 2019年12月8日
- NFSS は TeX ではなく LaTeX のフォント管理機構(緑の本によると TeX 自身には別の管理機構がある)
- 「短縮記法」を指して NFSS と呼んでいる事例は見たことがない#TeXLaTeXhttps://t.co/vAt3Rocq61
「NFSSファミリ名にやたらと短い名前を使う」
— 某ZR(ざんねん🙃) (@zr_tex8r) 2019年12月8日
理由は
「TFMのためのBerry規則のファミリ名をそのまま流用したから」
であって(「具体例」はまさにその事例)、そして
「Berry規則のファミリ名にやたらと短い名前を使う」
理由は
「昔のファイル名の長さ制限が厳しい」
から。#TeX https://t.co/Sg3UvmDc6D
ということで、NFSSはLaTeXのフォント管理機構で記法はBerry則に沿ったもの、ということで修正します。
pTeXのフォントまわり
私のように、自我を確立したときにはLiveがあったような世代だと(誇張)、 出力はPDFでフォントは全て埋め込まれているのが当然と思いがちですが、 日本語フォントは印刷時埋め込みであった頃の気持ちを想像する必要があります。
PSファイル(もしくはPDF)に出力する際、所持していないフォントについてはフォント指定のみして 実際のフォントは印刷機で引っ張ってもらうわけです。現代の端末埋め込みPDFビューアで文字が読めないときは、このフォントがない場合の代替でのフォント表示機能が無いケースがあります。 PDFビューアを作るのはPDFを作るより難しいので仕方無いですね。ただしKindleオメーは頑張れや。
EWBのユーザ側では体裁ファイル入力に各パラメータを打ち込むだけなので難しいことはないのですが (後日予定)、バックエンドというかクラスファイルでゴリゴリが動いていて この話をしないとどうしようもありません。
正直分かりが得られていないのでツッコミ待ちの部分もあります。
まずは関連用語から。
NFSS
でフォントを取り扱う際の管理機構です。名前の記法はBerry則に沿ったもの、ということです。 ランポート本にはフォント関連の詳細については「ローカルガイドを読め」くらいしか書いてなかったですね。
ということで、
zrbabbler.hatenablog.com (2019年12月09日閲覧)
例えば「日本語横書き用Ryumin-Light」だとJY1/rmn/l/n
となります。Ryumin
だから
rmn
ね、といった感じになるので、初学者にかなり厳しいつくりな気がする……。
名前空間は何語フォントタイプかということで多少分けられるしフォント名の箇所も多少長くなっても
問題無いものの、基本的に有名フォント以外の選択肢が無い時代の産物という印象を感じます。
が把握している(仮想)フォントを呼び出したりする際に使います。
VF
バーチャルフォント(VF)、混植に際して多くの無邪気な若者を沈めてきた関門ですね。 「仮想フォント」というときはTFMとVFの組を指します多分。
TFMから引っ張ったフォント情報をに渡す際の橋渡しが役割のハズ。
概略については
あたりが良いのではないでしょうか。
TFMとJFM
フォントメトリクスとその日本語拡張版です。がフォントの情報を読む際は基本的にここから読み込みます。バイナリ形式なので直接弄ることは推奨されません。
PLとJPL
「TFM、JFMの持つプロパティの視覚化」と以下のサイトであります。ここからTFM、JFMを生成できる、ハズ。
EWBの命令
まあ用語解説で分かる通り面倒臭そう、ということでEWBはよく使うフォントについてはのフォント設定を プリセットで設定を用意してくれています。標準にプラスする形だと思います、多分。 現在ではLiveでを入れたら 入ってくる中に含まれるものもあるでしょう。
# # 体裁入力ファイル # ... 基本組 書体 Ryumin-Light # 和文書体 変形 正体 # 指定項目: # 正 体 / か な / # 長 体 1/ 長 体 2/ 長 体 3/ 長 体 4/ # 平 体 1/ 平 体 2/ 平 体 3/ 平 体 4/ # 斜 体 1/ 斜 体 2/ 斜 体 3 級数 13Q # 単 位 : Q/pt 字送り 13 歯 # 単 位 : 歯 /pt/mm 強調書体 GothicBBB-Medium #和文書体 強調変形 正体 # 指定項目 : # 正 体 / か な / # 長 体 1/ 長 体 2/ 長 体 3/ 長 体 4/ # 平 体 1/ 平 体 2/ 平 体 3/ 平 体 4/ # 斜 体 1/ 斜 体 2/ 斜 体 3 強調級数 13Q # 単 位 : Q/pt 強調字送り 13 歯 # 単 位 : 歯 /pt/mm 欧文書体 PCTimes-Roman # 欧文書体 欧文級数 13Q # 単 位 : Q/pt 欧文ベー ス ラ イ ン 0.03 字 欧文強調書体 PCHelvetica # 欧文書体 ... 基本組終り ...
コピペに失敗したので、上の体裁入力がEWB-Shelfのパース可能なものかは分かりませんが、概ね日本語で設定ができます。
体裁入力で入れたフォントのパラメータは、に入るときは 例えば次のような命令になります。
\DeclareCompositFont{honmon}[0.00,0.00,0.00,1.00]{13.00Q}[13.00H]{JY1/rmn/l/n}[13.00Q]{JE1/rmn/l/n}[0.000zh]
体裁入力ファイルでの入力がどういったものであるかは都合上本日は省きますが、日本語のフォントサイズ・フォント、従属欧文のサイズ・フォント、ベースラインシフトなどの設定が書かれています。
ここで取り出しましたるはDVDメディアに入ったEWB、からewb_baseのスタイルファイル。 これewb2latex.clsと違ってハンドブックのソースには入らないEWB本体付属のスタイルファイルなんで、流石に動作を予想するのは無理があるので、見ます。
% ewbbase3_3.sty \def\DeclareCompositFont#1{% \@ifnextchar[{\@newcomposit{#1}}% {\@newcomposit{#1}[]}} \def\@newcomposit#1[#2]#3{% \@ifnextchar[{\i@newcomposit{#1}[#2]{#3}}% {\i@newcomposit{#1}[#2]{#3}[#3]}} \def\i@newcomposit#1[#2]#3[#4]#5{% \@ifnextchar[{\ii@newcomposit{#1}[#2]{#3}[#4]{#5}}% {\ii@newcomposit{#1}[#2]{#3}[#4]{#5}[#3]}} \def\ii@newcomposit#1[#2]#3[#4]#5[#6]#7{% \@ifnextchar[{\iii@newcomposit{#1}[#2]{#3}[#4]{#5}[#6]{#7}}% {\iii@newcomposit{#1}[#2]{#3}[#4]{#5}[#6]{#7}[\z@]}} \def\iii@newcomposit#1[#2]#3[#4]#5[#6]#7[#8]{% \expandafter\ewb@ifdefinable\csname cf@@#1\endcsname{}% \expandafter\ewb@definefont\csname cfj@#1\endcsname #5/#3\@nil\relax \expandafter\ewb@definefont\csname cfe@#1\endcsname #7/#6\@nil\relax \global\@namedef{cf@@#1}{% \def\cf@curj{#5}\def\cf@jsize{#3}% \def\cf@cure{#7}\def\cf@esize{#6}% \fontsize{#6}{\baselineskip}% \@nameuse{cfj@#1}\@nameuse{cfe@#1}% \hokuri=#4\relax \iftdir\tbaselineshift=#8\else\ybaselineshift=#8\fi \if#2\relax\relax\else\def\cf@color{#2}\ewbcolor{#2}\fi }} \def\ewb@definefont#1#2/#3/#4/#5/#6\@nil{% \expandafter\gdef\noexpand #1{% \DeclareFixedFont{#1}{#2}{#3}{#4}{#5}{#6}% #1}% }
という訳で、最終的?に\DeclareFixedFont
を使っています。
ベースラインシフトや縦・横での動作の違いも入っていますね(\iftdir\tbaselineshift=#8else\ybaselineshift=#8\fi
)。
体裁入力ファイルで常にフルのパラメータを入れなくても対応できるようになっている、 という理解でいいんでしょうか。で書くのとEWBからのコンバート時に 補完するのとどっちが楽かは難しいですが、側で持っていればギリギリの 調整が利くということなんでしょうか。
\DeclareFixedFont {<cmd>} {<ENC>} {<family>} {<series>} {<shape>} {<size>}
に渡されるとき、上の体裁ファイルはおおよそ以下の形と推測され
\DeclareFixedFont
は改修版です。
初期(1995)は和文フォントの定義はできなかったようです。
honmon
とあるように、各編集トリガ箇所でのフォント設定はそれぞれ独立に設定できます。
キモの部分は、これ.texじゃなくてewb2latex.clsというクラスファイルの中身として出力されるというところでしょうか。
Next
小組みもしくはテーブルあたりですかね。
明日は@hid_alma1026さんです。