texjporg / tex-jp-build

Minimum source repository to build Japanese TeX processing tools
23 stars 6 forks source link

[dvipdfmx] ipaexm.ttf で欧文 TFM すると異常終了 #74

Closed aminophen closed 5 years ago

aminophen commented 5 years ago

(一応,後から参照しやすいようにファイルしておきます)

の手順に従うと,

という問題が報告されました。原因は「ループが post->glyphNamePtr のサイズを超えて回ってしまうこと」だとわかったので,修正パッチを

に置きました。

補足: ZR さんのツイッター

post->countpost->names(非標準の名前のリスト)のサイズであってグリフ数(post->numberOfGlyphs)とは異なる。で常識的には“名前の個数”はグリフの個数と同じでpost->namesはそれ以下になるはず、だけどipaexm.ttfは「未使用の名前」があるためpost->namesの方が大きかった。

もうひとつ

ipaexmの場合は「名前の方が多い」ので不正メモリアクセスになったけど、大抵の(グリフ名テーブルをもつ)フォントの場合は「名前の方が少ない」ので「最後の方にあるグリフの名前が認識されない」ことになる。例えばipamp.ttfではグリフ数=12728、名前数=12727だから、最後(GID12727)のグリフの名前が欠ける。実際に、GID12725~12727のグリフ名 /aj15736.pw.vert /aj16197.pw.vert /aj16198.pw.vert でのアクセスを試みると、GID12727のものだけ失敗する。

aminophen commented 5 years ago

r50098 でコミットしました。