-
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
dvi2tty, dvispc and dviasm: FNTDEF before BOP #138
Comments
とりあえず私のところのdvi2tty には Issues を作りました。 https://github.com/t-tk/dvi2tty/issues |
こちらのWSL の ubuntu で試しました。
と警告が出てすぐに終了します。 [Return] の押下は不要です。 |
dvispcのオプションを間違えました。しかしやはりsegfaultは再現しません。
|
私も同じものを macOS で試しましたが,やはり最後のステップで dvi2tty が Segmentation fault: 11 します。自分でビルドしたもののみならず,macOS 用のプレテストのバイナリでも同様です。 @t-tk さんのところでは "dvi2tty: Missing postamble" のエラーが出るようですが,私の環境では
という挙動のため,エラー出力がうまく行っていないことを疑っています。 |
ざっと ChangeLog を読み直して振り返ってみましたが、 |
やり直したらなぜか segfault が再現しました。
|
とりあえず segfault が出る前にエラー出力して止める案 657634a です。
|
これだと無条件にエラー出力で止まるので |
失礼しました。9e27316 |
Karlさんから code freeze 宣言はまだ出ていませんが、これを入れさせてもらうかどうか。 |
その通りだと思います。何か他にリビルドを要する機会がなければ入れなくて良いと思います。 |
フリーズ宣言が出ていないなか,HiTeX のコミットが8時間前 (r62619) で起こっているので急いでコミットしましょうか |
出来るならお願いします。 |
r62644. Karl さんにも伝えておきました。 Other issues: 私のところでエラー出力後に止まる現象はもう少しこちらで調べます。 |
『dvi2tty の改善事項(2):(★) の DVI を読めるように』は 02ca4b8 で動きました。これでよいような気がします。 『(☆) の DVI でも dvi2ttyが読めるように』というのも試してみました。postambleにあるFNTDEFを上手く読めれば動くような気がしていますが、今のところ上手く出来ていません。 |
ありがとうございます。良いと思います。 |
私の理解では、FNTDEFの場所を整理すると
ソースを眺めてみたら確かにdvips, dvi2ttyはともにPOSTの後のFNTDEFは読んでいないようです。 大島先生のところのdviの解説を見ると※だけが合法で★は規格外のように受け取れます。 |
正式な仕様かどうかわかりませんが、dvitype.web に以下のような記述があります。
これを見ると★は合法で☆は不正ということになるのではないでしょうか。 |
DVI フォーマットの仕様書は https://ctan.org/tex-archive/dviware/driv-standard/level-0 にあります。ざっと見た感じでは @h20y6m さんがあげている dvitype.web と同じことが書かれています。 大島先生の「1. DVIファイルのフォーマット」の
は DVI フォーマットの仕様書 A.1 の
の和訳と思われます。今回の「BOP の前の FNTDEF」は想定されていないようですが,DVI フォーマットの仕様書 A.4 にも @h20y6m さん引用と同じ文があり,私も同じ理解です(つまり ★ は合法で ☆ は不正)。 |
ありがとうございます。 |
上で引用されている
という記述から,
ですね。 |
dvi2ttyの今回のパッチ 02ca4b8 はこのパターンも対応できていそうです。偶然ですが。 |
NOPもFNTDEFと同じような場所に挿入OKでした。
NOPがどこに入っても大丈夫というコードはdvi2ttyにはすでに含まれていました。 |
dvispc は 811e052 でオプション |
dvispc の現在のパッチは |
dvispc の方も検討いただきありがとうございます。まだソースを理解できていないのと試してすらませんが,-a かつ -p の場合は「ページとページの間:EOP と BOP の間」に限らず,複数ページにまたがって同じフォントが使われるときは最初の登場ページ内で FNTDEF が現れて次のページでは現れないので,普通の TeX の DVI でも FNTDEF を読み落とすのではないかと思います。ページ間の FNTDEF を読もうとするのではなく,ポストアンブルの「FNTDEF 総集編」を持ってくるようにしないと難しそうですね。時間があれば考えます。 |
改めて考えると,dvispc の -a の機能はあくまで DVI → テキスト変換 だと考えれば,-p オプションは「BOP 〜 次の BOP までを忠実にプリントする」という今の仕様でも許される気がしてきました。dviselect もあるので dvispc -p でページ抽出する必然性はないですし。 % dviasm で生成した「最初の BOP の前に全ての FNTDEF が集められた DVI」を dviselect にかけると,TeX の DVI と同じ形式(ページ内部で最初にフォントが使われる場所に FNTDEF を置く)に変換されますし,複数ページにまたがって同じフォントが使われるときにも正しく FNTDEF が置かれます。 ad0dc14 までで
という改善をしていただきましたので,私としては満足です。 |
dvi2tty, dvispc の更新ありがとうございます。 |
dvi2tty の GitHub に issue 機能がないようなのでこちらに書きます。
aminophen/dviasm#20 のとおり
この手順を踏むと最後のステップ 5. で dvi2tty が Segmentation fault: 11 します。なお,途中の (★) で得られた DVI を dvi2tty に与えるとこれは
というエラーで止まり [Return] を押下するまで終了しないようです。(私の環境固有?)
この問題は割と複雑で
が絡んでいます。(★) の DVI は Knuthware の dvitype のみならず一般的な dvipdfmx, dvips でも問題なく処理できる正常なものです。一方,(☆) の DVI は dvipdfmx で処理できるが dvips でエラーになるという微妙なものです。
これらを検討したいと思います。(特に dvi2tty の Segfault は優先度高い?)
The text was updated successfully, but these errors were encountered: