-
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
[dvipdfmx] TrueType フォント使用時に一部の漢字が出力されない #155
Comments
ありがとうございます。
は無いと思います。しかし一年我慢もちょっと、と思います。 |
dvipdfmx の変更は第一に平田さんの意向を聞いた方が良いと思います。とりあえず shirat74/dvipdfm-x#8 には書き込みましたが,メールの方が良かったかもしれません。 |
これは「Adobe に戻してもらう」と「CTAN/TeX Live で古いものに戻す」の2パターンがあって,後者ならば Karl さんの裁量次第です。(また,安定志向の人が年度末の TL2022 frozen を好んで使うケースがあります。もしも TL2023 initial だけでなく TL2022 frozen も是正を狙うなら,CTAN/TeX Live で戻す手しかありません。) |
なるほど。「Adobe に戻してもらう」は無いと思いますが、 |
とりあえず「CTAN/TeX Live で古いもの」にすべく https://github.com/aminophen/ctan-adobemapping/tree/tlfreeze-20190730 のようにしました。Karl さんには別途メールを入れました。 |
CTAN/TeX Live で adobemapping が無事(?)戻りました。dvipdfmx が更新するまで adobemapping の新版を取り入れないようにします。 |
動きがないまま半年経ちましたがどうしましょう? とりあえず突貫で作ったパッチを見直しました。
1 と 2 は互換性のために必要だと思います。3 ちょっと余計な変更だった気もしてきました。 より理想的にはフォントがサポートしていれば Format 14 テーブルを読んで異体字を出力できればよいのでしょうが…… |
異体字セレクタに SVS (互換漢字など)と IVS (字形の差異) の違いもあるのですね。 SVS対象 (例: CID+13393 → U+9686 U+FE00 (隆︀) → U+F9DC (隆) というマップ) IVS対象 (例: CID+8686 → U+9686 U+E0102 (隆󠄂) というマップ) SVS対象では IVS対象では IVSの場合、互換性維持に(4)は必要なのでしょうか? とりあえず(4)を実装して将来(5a)(5b)に移行するとか? 390675c は IVS のみ対象にして SVS は対象外にした方がよいかもしれません。 |
https://www.unicode.org/ivd/data/2022-09-13/IVD_Sequences.txt
5078.Adobe-Japan1-6.pdfを見てもCID+1133 と CID+13408 の違いがよく分かりません。そっくりです。 texmf-dist/fonts/cmap/adobemapping/mapping-resources-pdf/pdf2unicode/Adobe-Japan1-UCS2 Version: 10.002 では なので、IVSであっても互換性のためには 上記「(4) IVSを無視してフォントに U+9022 があれば U+9022 を出力する。」が当面必要と理解しました。 |
新しいAdobe-Japan1-UCS2で以前と同等の結果を得るために必要だと思っています。
そうかもしれません。無視した場合に警告を出力するとかでしょうか?
たしかにそうですね。 とりあえず当面の方針はこんな感じでしょうか?
さらに将来的に実現できそうであれば
という感じでしょうか?
たぶん「三」の部分の上が短いか真ん中が短いかの違いですかね? |
新版で SVS 付きかつ互換漢字でないもので、旧版の割り当てが SVS無しになっているものもありました。 「異体字セレクタに未対応の警告を出力しつつSVS無しに割り当てる」位がベストでしょうか。 旧割り当てが互換漢字への変換ではないもの。(見つけたものだけ。網羅はしていない。) 245 < <0278> <0030> CID+632 斜線付きゼロ 0 7069 < <2024> CID+8228 斜線付きゼロ 0 7584 < <22f5> <0030> CID+8949 斜線付きゼロ 90度回転 7627 < <2379> <0030> 7829 < <25c9> <0030> 7961 < <269a> <0030> |
コメントするのを忘れていましたが、 h20y6m@060d39b で警告メッセージを入れてみました。 |
ありがとうございます。 dvipdfm-x の cmap14 対応は、 tt_cmap.c を拡張していけばよくて、 チャレンジされる方はいらっしゃいますか? |
遅ればせながら (1) 非漢字は? (2) バイナリーサーチの可能性は? dvipdfm-x の cmap14 対応は気が向いたらぼちぼち手を付けてみようと思っています。 |
h20y6m@ca5e228 でやってみました。 |
update ありがとうございます。動作確認しました。
そうでしたか。 |
せっかくなので自分でコミットしてみようかと思います。(SVN使うのは10年ぶりくらいかな……) h20y6m@eedea05 |
TeX Live svn にコミットしました。 |
@h20y6m svnにコミットをありがとうございます。githubのtexlive-sourceのgit mirrorの更新のため、svnユーザからメールアドに書き換えないといけません。使用してほしいメールアドをお伝えください。よろしくお願いいたします。 |
format 14 サブテーブルを読んで Variation Sequences を変換するに手を付けてみました。 https://github.com/h20y6m/tex-jp-build/tree/dvipdfmx_cmap14 format 14 サブテーブルは他のサブテーブルとだいぶ性質が違う感じがするので、実装を他の |
h20y6m@b557cb9 で想定通りに動いていそうです。 Adobe-Japan1-UCS2 で UVS 付きにマップされていた場合以下の順でグリフを検索します。
それと、以下のように動作を変更しています。
前者はIVSや互換漢字以外のSVSと挙動をそろえたい、 いちおう、UniJIS2004-UTF16-H (1.022) で出力できる文字について、古い Adobe-Japan1-UCS2 (9.002) と IPAex 明朝フォントで、TeX Live 2023 の dvipdfmx (20220710) と同じ結果が得られることを確認しています。 あと、新しい Adobe-Japan1-UCS2 (10.002) と IPAex 明朝フォントで、VS付になった文字以外にも出力できなくなったもじがそれなりにあるようですが、これは仕方ないですよねぇ……。(ざっと見た感じ UniJIS2004-UTF16-H → Adobe-Japan1-UCS2 で元の Unicode に戻るようになった文字がほとんどのようなので、本来 IPAex 明朝フォントで出力できない文字なんだと思います。) |
ご検討ありがとうございます。
そうですね。賛成します。 もう大丈夫そうなので TeX Live svnにコミットしてよいと感じます。 |
TeX Live svn にコミットしました。 r69764
はい、その通りです。
あちらはまだまだ考えないといけないことが山積みですね。 あとは、(TL2023 frozen 後に) adobemapping を更新すればこちらは完了ですかね。 |
TL2024がリリースされたようです。 |
adobemapping ごめんなさい,私の管轄です。時間がなくて出来ていませんでした。更新依頼というか,私が CTAN に上げれば自動で入ります。もうしばらくお待ちください。 |
dvipdfmx で TrueType 利用時に一部の漢字が出力できなくなりました。
2023年1月中頃に Adobe-Japan1-UCS2 が更新され一部の漢字等に異体字セレクタ付きのものになった影響のようです。
https://www.tug.org/svn/texlive/trunk/Master/texmf-dist/fonts/cmap/adobemapping/mapping-resources-pdf/pdf2unicode/Adobe-Japan1-UCS2?r1=50714&r2=65589
(t-tk さんの指摘も反映されているようです。)
異体字セレクタ付きになったのは
あたりのようです。
参考: https://gist.github.com/h20y6m/093e9085d0c10b6e7e69abd4502a9568
1 は kanji-config-updmap コマンドや pxchfon パッケージで jis2004 オプションなし(デフォルト)で TrueType フォントに切り替えしている場合に JIS2004 で字形が変わる文字が豆腐になります。jis2004 オプションを指定することで回避できますがデフォルトが90字形なので引っかかる人でそうです。
2 は Unicode 正規化で化けることで有名な奴です。Unicode 6.3 で追加されたCJK互換漢字を選択する異体字セレクタを使うように変更されたようです。CJK互換漢字がどの程度使われているのかは分かりませんが、upTeX でしか使えない文字なのでフォントマップを Unicode 直接指定にすれば(1 も含めて)回避できます。ただし Unicode 直接指定による問題もあるのでこの回避策が使えないこともあるかもしれません。
3 は使う人いるのかなぁ……
4 はもともと TrueType フォントでは CID 指定は使えないので影響はないとは思いますが、いままで異体字は規定?の字形で出力されていたのが豆腐になります。
対応策としては
どうすべきでしょうか?
TeX Live 2023 には間に合いそうにありませんが、一応突貫で dvipdfmx のパッチを書いてみました。
h20y6m/tex-jp-build@master...dvipdfmx_uvs
The text was updated successfully, but these errors were encountered: