luatexja-fontspec + ltjsclasses
JY3/mc/m/n のスケールの値を取ればいいんですかね. 今ちょっと時間がとれないので,そのうち考えます(休日かな?).
# 地震で目を覚ましてしまいました.
JY3/mc/m/n のスケールの値を取ればいいんですかね.
luatexja-preset.sty で似たようなコードを書いていたのを思い出しました:
% scale
{ \fontsize{1024}{1024}\selectfont
\fp_set_from_dim:Nn \l_ltjpreset_scale_fp \zw
\fp_gdiv:Nn \l_ltjpreset_scale_fp {1024}
}
\msg_new:nnn { luatexja-preset }{ scale }{
日本語フォントは~\fp_use:N \l_ltjpreset_scale_fp~倍にスケーリングされます.
}
\msg_warning:nn { luatexja-preset }{ scale }
これをもうちょっと「きちんと」書けば
いいのではないかなと思います.
なお,上で 1024 pt にしたのは,できるだけ高精度でスケーリングの値を得ようとしたためですが, 今見た限りだと意味はない?ようです.
日本語フォントは 0.96221923828125倍にスケーリングされます.(ltjarticle) 日本語フォントは 0.92486572265625倍にスケーリングされます.(ltjsarticle)
これらは,それぞれ 63060/65536, 60612/65536 になっています.
なお,上で 1024 pt にしたのは,できるだけ高精度でスケーリングの値を得ようとしたためですが, 今見た限りだと意味はない?ようです.
これは TeX の仕様のようです.
(主に自分のために)詳細を述べておきますと,TeX は dimension を読み込むときに
という処理を踏みます.そのため,「スケーリングの値を得る」目的では,\fontsize の値が整数 pt であれば良いです.
なお,次ソースの1行目のように一旦単位長さを \dimen に格納するのと,2行目のように直接書くのとでは 15056.07605pt と 15056.25pt のように結果に差が出てきます.
\dimen0=1bp \dimen0=15000\dimen0\message{\the\dimen0}
\dimen0=15000bp\message{\the\dimen0}
\end
これをもうちょっと「きちんと」書けば いいのではないかなと思います.
「きちんと」というのがどれぐらいのものを求められているのかわからないのですが,ほぼ luatexja-preset からそのまま持ってきてみました (commit 4aeb291). 何かこれだと問題が生じえる?
\documentclass{ltjarticle}
%\documentclass{ltjsarticle}
\usepackage{luatexja-fontspec}
\usepackage{lua-visual-debug}
\setmainjfont{IPAMincho}
\begin{document}
ああ\jfontspec[Scale=0.924866]{IPAMincho}ああ\jfontspec[Scale=0.96222]{IPAMincho}ああ
\end{document}
「きちんと」というのがどれぐらいのものを求められているのかわからないのですが, ほぼ luatexja-preset からそのまま持ってきてみました (commit 4aeb291). 何かこれだと問題が生じえる?
これで大丈夫だと思います.luatexja-preset.sty の該当部分は不要になったので,整理しておきました (commit 012015a).
上で「きちんと」と書いたのは,
1024 pt にしたのは,できるだけ高精度でスケーリングの値を得ようとしたため
が Scale >2 のときはうまく動かないから,その時の処理を入れないとなあ,という事でした (しかし,私の 9/14 6:21 のコメントからもわかるように,単純に 10 pt で見ればよかった^^;)
完了にしておきます.
ltjsclasses では欧文フォント 10pt に対して和文フォント 13Q (≒ 9.28487pt) が使われますが, luatexja-fontspec を用いた時には,ltjsclasses であっても和文フォントのサイズが 欧文フォントの 0.962212 倍となるようです.
もちろん
\documentclass{ltjsarticle} \usepackage{luatexja-fontspec} \defaultjfontfeatures{Scale=0.92487}などと \defaultjfontfeatures をプリアンブルに書けばいいのですが, luatexja-fontspec の側で自動判別を行うことはできないでしょうか?