harftex+luatexja で実行時エラーが出ることがある
フォントを変えなくてもharfload→fontspec→luatexjaという順番で読み込むだけで実行時エラーになるようです↓
\documentclass{minimal}
\usepackage{harfload}
\usepackage{fontspec}
\usepackage{luatexja}
\begin{document}
\end{document}
HarTeXのgithub https://github.com/khaledhosny/harftex に Use LuaTeX HarfBuzz variant, luahbtex, instead. と書いてあったため、 This is LuaHBTeX, Version 1.11.1 (TeX Live 2020/dev)
を用いて
\documentclass{minimal}
\usepackage{harfload}
\usepackage{fontspec}
\usepackage{luatexja}
\begin{document}
\end{document}
をコンパイルしたところ同一のエラーが出たため一応記録として報告します。luahbtexでもNoto Color Emojiを用いるためにはharfload.styを読まないと無理なようです
harfload.sty は luaotfload.sty に統合されていく↓ https://github.com/latex3/luaotfload/issues/97 らしいので、そうなればこの問題は自然と解決するか、あるいは絶対に対応不可欠なレベルに格上げされるかどちらかになるだろうと思われます…
harfload.sty は luaotfload.sty に統合されていく
harfload と luaotfload で,フォント情報が格納されている Lua テーブルの形式が異なっています.今回の「shared がない」というエラーもそうですし,「どの OpenType 帰納を有効にしているか」を変更する方法も異なったりしており,対応はそんなに単純ではありません.せっかくの良い機会なので,LuaTeX-ja のコードを一旦整理してから取り組もうと思います(TeX Conf に間に合えば良いなあ).
LuaTeX-ja のコードを一旦整理してから
LuaTeX-ja の中で,luaotfload 由来のフォントキャッシュにアクセスしている部分をほとんど 1 ファイルに集約しました.とりあえず kitagawa_test ブランチでは「詳細」にある最低限のファイルはエラーで止まらないようにしていますが,他のどんなところでエラーが出るかわかりませんし,また組版結果も変になるはずです.
とりあえずエラーは出ないようになった新バージョン 20190926.0 を出したのでクローズしますが,LuaHBTeX (, HarfTeX) での組版結果はまだまだ変なものになると思います.
h7k への返信
とりあえずエラーは出ないようになった新バージョン 20190926.0 を出したのでクローズしますが,LuaHBTeX (, HarfTeX) での組版結果はまだまだ変なものになると思います.
luaotfload の dev ブランチでharfloadが完全に統合されたようなのでお知らせします https://github.com/latex3/luaotfload/commit/d107a413e6e6abf137faf649d0cff5a571419403 @h7k
(編集:beamerとsetmainfontは関係なかったので書き直しました) harftexに対応する必要性や義理があるのか不明ですが下記の組み合わせでエラーが出るため一応報告します。回避法もあります(下記)。texliveからtlmgr update --allしてできる範囲で関係ファイルは最新版になっています。harftex 0.4.1はTeXLive Contribから導入
\documentclass{minimal} \usepackage{harfload} \usepackage{fontspec} \usepackage{luatexja} \begin{document} \end{document}上記をコンパイルすると
(/usr/local/texlive/2019/texmf-dist/tex/latex/svn-prov/svn-prov.sty))(load cach e: /home/user/.texlive2019/texmf-var/luatexja/ltj-cid-auto-adobe-japan1.luc )...exlive/2019/texmf-dist/tex/luatex/luatexja/ltj-jfont.lua:812: attempt to in dex a nil value (field 'shared') stack traceback: ...exlive/2019/texmf-dist/tex/luatex/luatexja/ltj-jfont.lua:812: in upvalue 'p repare_fl_data' ...exlive/2019/texmf-dist/tex/luatex/luatexja/ltj-jfont.lua:835: in local 'pre pare_extra_data_base' ...exlive/2019/texmf-dist/tex/luatex/luatexja/ltj-jfont.lua:866: in main chunk [C]: in function 'require' ...texlive/2019/texmf-dist/tex/luatex/luatexja/luatexja.lua:17: in local 'load _module' ...texlive/2019/texmf-dist/tex/luatex/luatexja/luatexja.lua:107: in main chunk [C]: in function 'dofile' [\directlua]:1: in main chunk. l.180 } ?というエラーになります。しかしluatexjaを読む位置を変えて
\documentclass{minimal} \usepackage{harfload} \usepackage{luatexja} \usepackage{fontspec} \setmainfont{Segoe UI Emoji}[RawFeature={mode=harf;+dist;+ccmp}] \begin{document} 日本語Test👌 \end{document}とするとエラーは止まり絵文字も含めて期待通りのPDFが生成されます。