なぜか pdf の追加には失敗するので,スクリーンショットの png を代わりに貼り付けました.
xelatex でもコンパイルして比べてみましたが,確かに luaotfload の場合と結果が異なるみたいですね. あとで調べてみます.
以下,調査した結果です.
FontForge で KozMinPr6N-Regular の「辻」グリフの情報を見ると以下のようになっています.
一点辻 (Japan1.3056):
二点辻 (Japan1.8267):
これに基づいて,以下のようなテストコードを書いてみました.
\documentclass{article} \usepackage{ifluatex} \ifluatex \usepackage{luaotfload} \fi \font\kozmin="KozMinPr6N-Regular" \font\kozmins="KozMinPr6N-Regular:+jp78" \font\kozmine="KozMinPr6N-Regular:+jp83" \font\kozminn="KozMinPr6N-Regular:+jp90" \font\kozminx="KozMinPr6N-Regular:+expt" \font\kozmina="KozMinPr6N-Regular:+aalt" \font\kozminl="KozMinPr6N-Regular:+nlck" \begin{document} \begin{itemize} \item Default: \kozmin 辻 \item {\tt jp78}: \kozmins 辻 \item {\tt jp83}: \kozmine 辻 \item {\tt jp90}: \kozminn 辻 \item {\tt expt}: \kozminx 辻 \item {\tt aalt}: \kozmina 辻 \item {\tt nlck}: \kozminl 辻 \end{itemize} \end{document}
これを lualatex と xelatex でそれぞれコンパイルしてみると,次の結果になります.
結果を見てわかることは,LuaTeX (luaotfload) では一点辻,XeTeX は二点辻がデフォルトであり,feature の代替処理はそれぞれのグリフの情報に基づいて行われている,ということです.LuaTeX で jp04 が効かないのはそもそもそういう情報をフォントが持っていないからですね.
ちなみに,デフォルト一点辻と二点辻では,どちらが「正しい」結果なのでしょうか? jp04 を持っていない(これは luaotfload のキャッシュの temp-kozminpr6n-regular.lua を見てもわかります)あたりを見ると,デフォルトは jp04 (つまり二点辻)なのかな,と思うのですが.Adobe-Japan1-6 のフォントは jp04 字形の方がデフォルトという決まりとかはあるのでしょうか? Adobe-Japan1-6.cidmap を見ると
... 3056 8fbb ... 8265 /Japan1.7960.vert 8268 /Japan1.636.vert ...となっているのですが…….
遅くなりました.
一点辻: default, jp83, jp90, expt
二点辻: jp78, aalt, nlck
luaotfload が変わったついでにもう一回試してみたら,全部二点辻になっています. というか,CID 3056 番の一点辻が luaotfload からアクセスできていません(#31302 で触れます).
Adobe-Japan1-6 のフォントは jp04 字形の方がデフォルトという決まりとかはあるのでしょうか?
ProN, Pr6N などと名乗っているフォントでは,jp04 字形の方がデフォルトになるようです. 確認していませんが,Pr6 だと jp90 字形の方がデフォルトだったと思います.
こちらではどうしようもないので,完了とします.
どこに書こうか迷ったんですが,KozMinPr6N-Regular.otf で jp90, jp04 feature を指定しても有効にならないようです. KozMinPro 系統だと,不思議とうまくいきます.
この話は LuaTeX-ja 特有の話ではなくて, luaotfload だけでも発生します. 本投稿のすぐ後に,例の TeX ソースと pdf を添付します.