Python にて tex → dvi → svg に変換する際のフォントエラー

Re: Python にて tex → dvi → svg に変換する際のフォントエラー

- Akira Kakuto の投稿
返信数: 6
dvisvgm のデフォルトでは,現在の場合必要な
font map file が読めません。 dvisvgm のコマンドライン


dvisvgm --fontmap=+kanjix.map dvifilename

となるようにすると,成功するでしょう。
Akira Kakuto への返信

Re: Python にて tex → dvi → svg に変換する際のフォントエラー

- 環耀 望月 の投稿
Akira Kakuto 様

ありがとうございます、大変助かりました。
もう一点お聞きしたいことがあります.

以下のようなドキュメント部が平仮名 (例として "あいうえお") のみでできている tex ファイルを uplatex で dvi に変換し、それをさらに dvisvgm により svg に変換することはできました.
====================
\documentclass[uplatex]{standalone}
\begin{document}
あいうえお
\end{document}
====================

しかし以下のようにドキュメント部に漢字が含まれていると、同じ手順を踏んでもうまく svg に変換できませんでした(文字化けのようなことが起きてしまいました).
====================
\documentclass[uplatex]{standalone}
\begin{document}
漢字
\end{document}
====================
これはどのような原因によるものなのでしょうか?初心者の質問で申し訳ありませんが, よろしくお願いいたします.
添付 dvisvgm_kanji_error.png
環耀 望月 への返信

Re: Python にて tex → dvi → svg に変換する際のフォントエラー

- Akira Kakuto の投稿
> しかし以下のようにドキュメント部に漢字が含まれていると、
> 同じ手順を踏んでもうまく svg に変換できませんでした
> (文字化けのようなことが起きてしまいました)

まさかと思いましたが本当ですね。おそらく dvisvgm が encoding
を取り扱う際に何かの不完全性があるのだと思われます。
uplatex ではなくて,platex を使用すると大丈夫のようです。
なお,dvisvgm のコマンドラインは

dvisvgm --fontmap==kanjix.map dvifilename

のほうが良いでしょう。= が二つあることに注意して下さい。
Akira Kakuto への返信

Re: Python にて tex → dvi → svg に変換する際のフォントエラー

- Akira Kakuto の投稿
> まさかと思いましたが本当ですね。おそらく dvisvgm が encoding
> を取り扱う際に何かの不完全性があるのだと思われます。
> uplatex ではなくて,platex を使用すると大丈夫のようです。

uplatex を使う場合,

%%uprml-h UniJIS-UTF16-H ipaexm.ttf %!PS IPAexMincho
uprml-h UniJIS-UCS2-H ipaexm.ttf %!PS IPAexMincho

なる2行だけのファイル test.map をカレントディレクトリに置き,

dvisvgm --fontmap==kanjix.map,=test.map dvifilename

とすると,OK になります。

test.map は,kanjix.map に置ける encoding UniJIS-UTF16-H
を UniJIS-UCS2-H に変更するものです。

よく理解していませんが,dvisvgm の場合,UniJIS-UTF16-H では
うまく行かないが,UniJIS-UCS2-H ではうまく行くようです。
Akira Kakuto への返信

Re: Python にて tex → dvi → svg に変換する際のフォントエラー

- 環耀 望月 の投稿
Akira Kakuto 様

uplatex の場合の解決法まで調べてくださり, 本当にありがとうございました.
私が抱える問題が解決され, 大変助かりました.

後学のために少しお聞きしたいのですが, たとえばここで uprml-h 以外の日本語フォントを uplatex で用いようとするとどうなるでしょうか?
初心者の私だと欧文フォントや数式フォントの変更等による影響も dvisvgm にはありえるのかな, と心配になってしまいます.
その時にはおそらく test.map も変更が必要になると思うので, この機会にぜひお聞きしたいです.

お手数のかからない範囲で良いので, 教えていただけると幸いです. よろしくお願いいたします.
環耀 望月 への返信

Re: Python にて tex → dvi → svg に変換する際のフォントエラー

- Akira Kakuto の投稿
dvisvgm はデフォルトで ps2pk.map, pdftex.map, dvipdfm.map, psfonts.map
を読みます。欧文フォントについては,おそらく問題が起きることは
殆ど無いのではないかと思います。
日本語フォントについては,--fontmap==kanjix.map で失敗する部分
は test.map で UniJIS-UTF16  --> UniJIS-UCS2,
--fontmap==kanjix.map,=test.map
などでテストして見て下さい。なお kanjix.map は TeX Live の場合
$TEXMFDIST/fonts/map/dvipdfmx/updmap
にあると思います。
Akira Kakuto への返信

Re: Python にて tex → dvi → svg に変換する際のフォントエラー

- Akira Kakuto の投稿
> よく理解していませんが,dvisvgm の場合,UniJIS-UTF16-H では
> うまく行かないが,UniJIS-UCS2-H ではうまく行くようです。

調べてみると,原因は dvisvgm の CMap reader が "begincidchar"
を知らないからのようです。自己流で "begincidchar" も解釈できる
ようにしてみると,UniJIS-UTF16-H でも OK になりました。
次期バージョンでは,"begincidchar" もサポートするようにお願い
しておきました。