-
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 フォントの文字幅が異常になる。 #172
Comments
h20y6m@0ceefe5 で修正してみました。
これは
に関連すると思われます。 dvipdfmx では(欧文の)埋め込み TrueType フォントの cmap に format 0 の (platform=1, encoding=0) subtable を使っているため .notdef グリフを除くと 255 グリフしか入れることができません。 一方で pdftex は埋め込み TrueType フォントの cmap に
を使っていて 256 グリフすべて正常に表示できるようです。 |
とりあえず再現実験です。 Cuprum-Regular.ttf, cprmn8t.tfm, T1-WGL4.enc が使われるらしい。 % plain TeX
\special{pdf:mapline cprmn8t T1-WGL4 Cuprum-Regular.ttf}
\font\testfont=cprmn8t \relax
\def\TEST#1{\vrule width 4pt{\testfont {#1}{#1}{#1}{#1}{#1}{#1}{#1}{#1}{#1}{#1}{#1}{#1}{#1}{#1}{#1}{#1}{#1}{#1}{#1}{#1}}\vrule width 4pt \par}
\newcount\cnt \cnt="00
\loop\ifnum\cnt<"100
\the\cnt : \TEST{\char\cnt}
\advance\cnt1
\repeat
\end dvipdfmx Version 20240511 で PDF に変換してみると文字コード 153 以降の文字幅が異常になっている。 |
ご提案のパッチ適用と Cuprum font を利用した test を追加してみました。 |
Cuprum-Regular.ttf 用の 256 文字フルに埋めたカスタムエンコーディングの tfm を作ってみました。
元の dvipdfmx だと文字コード 255 の文字が表示されません。 |
欧文フォントに TrueType フォントを指定し 128 個以上のグリフを使うと 128 個目以降のグリフの文字幅が異常になります。
再現手順
Nunito フォントをダウンロード
TFM を生成
以下のサンプルをタイプセット
dvipdfmx で PDF に変換してみると文字コード 134 以降の文字幅が異常になっている。
(グリフがない、同じグリフになっているなどでずれていますが、文字コード 134 が 128 個目のグリフです。)
USHORT
→char
(多くの環境で符号付き)→USHORT
のキャストで128
→-128
→0xff80
と値が異常になっているみたいです。tex-jp-build/source/texk/dvipdfm-x/truetype.c
Line 338 in abc699d
tex-jp-build/source/texk/dvipdfm-x/truetype.c
Line 355 in abc699d
tex-jp-build/source/texk/dvipdfm-x/truetype.c
Line 840 in abc699d
tex-jp-build/source/texk/dvipdfm-x/truetype.c
Line 853 in abc699d
/* bug here */
と書かれているのでこの辺りもともと何か問題を抱えているのかもしれません。The text was updated successfully, but these errors were encountered: