半分くらい自分用メモでまとめておく.
LuaTeX-jaの場合
文字クラス16までと19,27についてはJFM+(x)kanjiskipで対処する.原則としては,附属書のB,D,Eにおける表1,表2,表3をそのままうつしている.文字クラスの番号も原則そのままだが,
- 文字クラス3(ハイフン類)は字幅が文字により異なるため,300/301/302とわけている.
- 文字クラス19はJFM内では0にしてある.
欧文文字も文字クラス0として扱われるので,和文文字と欧文文字の差は(x)kanjiskipで対処する.表によると,文字クラス19(漢字)と文字クラス27(欧文文字)の差は,前後に9,10,11,15,16,19が来るときであるので,ここはJFMグルーを設定しない.ここの空白はいずれも19との間が0 plus 0.25,27との間が0.25 plus 0.25 minus 0.125*1である(単位はzw)ので,これらをkanjiskipとxkanjiskipに設定する.
行末との間はend_adjustを設定する.
優先順位
優先順位はLuaTeX-jaにおけるluatexja-adjustを使う.$n$段階目を優先$3 - n$にするようにしてある.伸びや縮みがない場合は0である.kanjiskipは伸び縮みの順に(1,0),xkanjiskipは(-3,0).
行頭始め括弧類
行頭の始め括弧類の字下げは,段落直後が二分,全角,全角二分のいずれか,折り返し行頭が天付きまたは二分のいずれかである.(全ての組み合わせが許されるわけではない.3.1.5).段落直後は"parbdd"との間で処理する.これは文字クラス90に配置している.折り返し行頭が二分の場合は,始め括弧類の字幅を全角とし,その代わり始め括弧類を後ろに配置する時のJFMグルーから全て二分引く.
ぶら下げ組
文字クラス6(句点類),7(読点類)のend_adjustに-0.5を追加する.
行頭始め括弧類やぶら下げ組の時は異なるJFMを採用することになるが,これはJFM内分でjlreq.open_bracket_posやjlreq.burasageを参照することで分岐させている.つまり,
\directlua{jlreq = {} jlreq.open_bracket_pos="nibu_tentsuki"}
<JFMロード>
とすると,段落行頭初め括弧が二分の空き,折り返し行頭初め括弧が天付きとなるJFMがロードされる.
pTeX / upTeXの場合
LuaTeX-ja用のJFMから機械的に変換している.(変換スクリプトはluajfm2pl.lua.)変換前に,全く同じ振る舞いをするクラスはまとめる処理をしている*2.またクラス番号は255までなので,それ以上の値は別の値にうつしている.優先順位やend_adjustといったpTeX / upTeXのJFMにない機能は無視される.
行頭始め括弧類
"parbdd"はないので,\everypar
で対処する.常に\inhibitglue
を発行し,段落行頭二分(よって折り返し行頭は天付き)の時はマイナス二分の空白を入れる.
ぶら下げ組
句読点の幅を0にし,句読点の後に入るglueを全て+0.5する.(おそらく)OTFパッケージや大島先生と乙部さんが作成されたものと同じ.
LuaTeX-jaのように変数の値で別のJFMを生成することはできないので,括弧の幅を1にしたJFMとぶら下げ組を有効にしたJFMを別々に作っている.(全部で2×2=4個のJFMとなる.)括弧の幅を1にしたJFMにはzを,ぶら下げ組を有効にしたJFMにはbをつける.つまりjlreq.tfm/bjlreq.tfm/zjlreq.tfm/bzjlreq.tfmが作られる.upTeX用JFMには更にuをつける.縦書き用には末尾に-vをつける.
0 件のコメント:
コメントを投稿
コメントの追加にはサードパーティーCookieの許可が必要です