-
Notifications
You must be signed in to change notification settings - Fork 6
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
ppltotf, makejvf, ptex: (GLUEKERN) support SKIP property and rearrangement #47
Conversation
さらに補足:
|
さらに今気づきましたが, #8 の
もまだ不完全なのではという気がしてきました。この上限アップはあくまで「(u)pPLtoTF がバイナリの JFM に巨大な gluekern を格納できるようになった」だけであって,それを読み出す側である (u)pTeX はそのような対処がされていないからです。実際,256 を超えるエントリは JFM への格納時に再配置されているため,glue_kern_start だけでは足りず,glue_kern_restart しないと読み出せないと思います。(tex.web における lig_kern_start と lig_kern_restart の関係を真似る必要あり)。 https://twitter.com/aminophen/status/957426630187626497 こちらについても明日以降パッチを書きます。 |
c761318 で「巨大な GLUEKERN テーブル」を (u)pTeX が読み出せるようにしました。テストケースとその説明は,また別の Gist に書いてあります。 (巨大な GLUEKERN テーブルを定義しているため,テスト用に作成した gkhugeok.pl は 969 KB あります。ダウンロードの際はご注意ください) |
細かい話ですが、tftopl.web(350行目付近)によると、 まあ、普通には起こりえないバターンですが。 あと、 |
e8a3546 で直しました。また,makejvf -e を「254 固定」にしていたところを,一応 ptex-base.ch や tex.web に即して skip_byte > 128 にしてみました。(多分 better なはず)
この件は調べてみます。 |
tex.web の l.14541, l.14786, l.17846 の # メモ:このうち最初の一つは skew なので,GLUEKERN には関係ない。後の二つ(それぞれ,数式ファミリでの lig_kern,地の文での lig_kern)は今回の改修で参考にした部分。 |
Issue #48 の修正も,本 pull request と同じブランチに入れてあります。 |
r46518 で ptexdir / uptexdir の変更を,r46519 で makejvf の変更をコミットしました。 |
(今さらなんですが…) コレって、 |
要りますね… ミスです。ありがとうございます。(この状況を引き起こせるソースが作れてないですが…) 3b6ad6b と TeX Live svn r46521 で直しました。 |
ZR さんの https://twitter.com/zr_tex8r/status/886575907283980292 が発端の話題です。
欧文の PL (TFM の元) にある LIGTABLE テーブル (ligature/kern) では,SKIP という命令を使うことができます。ところが,和文の JPL (JFM の元) の GLUEKERN テーブルで SKIP を使うと
なるエラーが出ます。私は unsupported なのだろうと思っていたのですが,jfm.pdf ではなくウェブサイトの方の JFM 仕様書には
とあります。まさにこの「次のステップまでスキップする値を示します。」が SKIP 命令なので,ドキュメントされているのに使えないことになります。これは変なので,(u)pTeX / (u)pPLtoTF / makejvf で GLUEKERN の SKIP 命令をサポートするような修正を書いてみました。テストケースは
にあります。
補足:SKIP 命令については本家の pltotf.web を読むのがわかりやすいですが,
(STOP)
の代わりに使うものです。例えば(SKIP D <number>)
のように書くと,続く LIGTABLE のテーブル要素を<number>
個読み飛ばします。これを上手に利用すると,複数の文字に似たようなリガチャやカーンを設定する場合に,テーブル要素をまとめることで LIGTABLE の上限に達しづらくなります。GLUEKERN で SKIP を使うメリットとして思いつくのは,例えば「いろいろな仮名に対して字幅を異なる設定にしたいが,約物と仮名の間の JFM グルーが一部同じ設定」という場合です。(たくさんの TYPE に対して何度も
(GLUE …)
を書く必要がなくなる。全部同じなら LABEL を重ねればよいですが,一部の場合はたぶん SKIP を使って圧縮できると思います。)