当方macOS High Sierraで、TeX Live 2018を使っています。
LuaLaTeXにはじめて挑戦し、フォントの変更を試みてみたものの、
筑紫丸ゴシックへの変更が失敗します。
不具合が起こる最小のケースは以下です。
再現のためには/System/Library/Assets/以下の
TsukushiAMaruGothic.ttcのシンボリックリンクを同じディレクトリに
入れておく必要があります。
============test.tex===============
\documentclass{ltjsarticle}
\usepackage{luatexja-preset}
\setmainjfont{TsukushiAMaruGothic.ttc}
\begin{document}
ほげ
\end{document}
============test.tex===============
以下がエラーメッセージです。
============test.log===============
! error: (file ./TsukushiAMaruGothic.ttc) (type 2): invalid TTC index number -1 (0..1), using index
0 for font TsukuARdGothic-Regular
! ==> Fatal error occurred, no output PDF file produced!
============test.log===============
筑紫丸ゴシック(A・B両方)以外では、(TTCであっても)
正常に処理されたので、フォントそのものの問題だと思われますが、
なにか対策はあるでしょうか。
情報ありがとうございます。
筑紫丸ゴシック自体はシステム上で問題なく使えていますし
他のフォントは同様のソースで問題なく使えるので、Macの
問題ではないと思っております。
2015年にですが、
https://twitter.com/doraTeX/status/653077294752251904
や
http://d.hatena.ne.jp/acetaminophen/20151012/1444656974
にあるように、同様の事例が報告されていて、それが参考に
なると考えているのですが、このときはどのように解決されたか
または解決されなかったのかご存知な方がいらしたりしません
でしょうか。
筑紫丸ゴシック自体はシステム上で問題なく使えていますし
他のフォントは同様のソースで問題なく使えるので、Macの
問題ではないと思っております。
2015年にですが、
https://twitter.com/doraTeX/status/653077294752251904
や
http://d.hatena.ne.jp/acetaminophen/20151012/1444656974
にあるように、同様の事例が報告されていて、それが参考に
なると考えているのですが、このときはどのように解決されたか
または解決されなかったのかご存知な方がいらしたりしません
でしょうか。
2015年に議論していた当事者です。
あのときは(今のひとみさんの状況と同じで)
「El Capitan で筑紫丸ゴシックだけ読めない」という謎挙動でした。
当時は私自身が El Capitan 環境を持っていなかったことも一因で,調査にも限界がありました。
で,doraTeX さんによると,2016年に Sierra で同じことを試すと成功した
https://twitter.com/doratex/status/791948931215142912
という報告がありました。
2015→2016は「LuaTeX が(luaotfload の挙動,プリミティブ名,…など)激しく変わった」年ですし,
El Capitan → Sierra にアップデートされたことでも色々変わっているはずですから,結局
・なぜ 2016 年の Sierra でうまくいったのか
・なぜ 2015 年は El Capitan でうまくいかなかったのか
等,分からないままでした。
で,2018 年は High Sierra でうまくいかないんですかね。
ひとみさんのところで失敗/西村さんのところで成功するのであれば,両者の log とキャッシュ
($HOME/.texlive2018 以下に .lua や .luc という拡張子のファイル群があったはず)
を比べてみると何かヒントになるかもしれません。
(現在は私も El Capitan 環境を持っていますが,外出につきしばらく試せません)
あのときは(今のひとみさんの状況と同じで)
「El Capitan で筑紫丸ゴシックだけ読めない」という謎挙動でした。
当時は私自身が El Capitan 環境を持っていなかったことも一因で,調査にも限界がありました。
で,doraTeX さんによると,2016年に Sierra で同じことを試すと成功した
https://twitter.com/doratex/status/791948931215142912
という報告がありました。
2015→2016は「LuaTeX が(luaotfload の挙動,プリミティブ名,…など)激しく変わった」年ですし,
El Capitan → Sierra にアップデートされたことでも色々変わっているはずですから,結局
・なぜ 2016 年の Sierra でうまくいったのか
・なぜ 2015 年は El Capitan でうまくいかなかったのか
等,分からないままでした。
で,2018 年は High Sierra でうまくいかないんですかね。
ひとみさんのところで失敗/西村さんのところで成功するのであれば,両者の log とキャッシュ
($HOME/.texlive2018 以下に .lua や .luc という拡張子のファイル群があったはず)
を比べてみると何かヒントになるかもしれません。
(現在は私も El Capitan 環境を持っていますが,外出につきしばらく試せません)
当方ログです。
まず、私はBasicなので構成もひとみさんと違いそうです。
ひとみさん
format=lualatex 2018.6.26
わたし
format=lualatex 2018.5.15
なので、ひとみさんの方が最新のようです。
(アップデートの仕方を教えてください
tlmgr update --all でいいですか?)
わたし
LaTeX2e <2018-04-01> patch level 2
ひとみさん
LaTeX2e <2018-04-01> patch level 5
(となっているのですが、パッチレベルとは何でしょうか
インストール時に指定できるのでしょうか?)
インストール時に指定できるのでしょうか?)
違いと言えばひとみさんログの942行目でしょうか。
No file test.aux.
(本題からは離れますが)
> アップデートの仕方を教えてください
> tlmgr update --all でいいですか?
必要に応じて sudo を付けて
tlmgr update --self --all
でいいはずです。
# MacPorts を使ってインストールした場合だけは,tlmgr が使えないので,
# この方法のアップデートが(port のメンテナが新版を取り込むまでの期間は)不可能です。
> パッチレベルとは何でしょうか
「メジャーな仕様変更がないけれど,バグ修正とか微調整が入るときに番号が大きくなる」と
思っておけば十分でしょう。インストール時にサーバに置いてあったもの
(ほとんどの場合,その時点での最新版)が自動的に落ちてくるだけなので,
日付 (2018-04-01 とか) もパッチレベルも指定することはできません。
> アップデートの仕方を教えてください
> tlmgr update --all でいいですか?
必要に応じて sudo を付けて
tlmgr update --self --all
でいいはずです。
# MacPorts を使ってインストールした場合だけは,tlmgr が使えないので,
# この方法のアップデートが(port のメンテナが新版を取り込むまでの期間は)不可能です。
> パッチレベルとは何でしょうか
「メジャーな仕様変更がないけれど,バグ修正とか微調整が入るときに番号が大きくなる」と
思っておけば十分でしょう。インストール時にサーバに置いてあったもの
(ほとんどの場合,その時点での最新版)が自動的に落ちてくるだけなので,
日付 (2018-04-01 とか) もパッチレベルも指定することはできません。
> 2018年 07月 17日(火曜日) 07:14 - ひとみ さん の投稿
> 2018年 07月 17日(火曜日) 21:53 - 西村 一輝 の投稿
のログとキャッシュを比べてみましたが,めぼしい違いは見当たりませんでした。
西村さんご指摘の
> No file test.aux.
は,lualatex で test.tex を1回コンパイルしたか2回以上コンパイルしたかの違いです。
(一般に LaTeX で目次を作るにはコンパイルが2回必要,と言う話。)
以下,TeX が使える環境にいないのでうろ覚えですが…
添付いただいたキャッシュは「筑紫丸ゴシック」用のものだけでしたが,他にも
「フォントの一覧リスト」のようなキャッシュもあったと記憶しています。
(確か ~names.lua のような names という単語が入ったファイルだったような。)
もしかするとそちらに差があるかもしれません。
> 2018年 07月 17日(火曜日) 21:53 - 西村 一輝 の投稿
のログとキャッシュを比べてみましたが,めぼしい違いは見当たりませんでした。
西村さんご指摘の
> No file test.aux.
は,lualatex で test.tex を1回コンパイルしたか2回以上コンパイルしたかの違いです。
(一般に LaTeX で目次を作るにはコンパイルが2回必要,と言う話。)
以下,TeX が使える環境にいないのでうろ覚えですが…
添付いただいたキャッシュは「筑紫丸ゴシック」用のものだけでしたが,他にも
「フォントの一覧リスト」のようなキャッシュもあったと記憶しています。
(確か ~names.lua のような names という単語が入ったファイルだったような。)
もしかするとそちらに差があるかもしれません。
> 筑紫丸ゴシックのキャッシュが入っていたディレクトリ
ではない場所かもしれません。少なくとも 2016 年の luaotfload では
(省略)/luatex-cache/generic/names/luaotfload-names.lua.gz
というファイルが出来る仕組みだったようです。
(解凍すると中から luaotfload-names.lua が出てくる。)
今はキャッシュファイル名や配置場所が変わっているかもしれませんが,
それっぽいものがきっとどこかにあるはずです。
# しばらく自宅には帰らないので,ローカルな TeX 環境が手元にありません。
# 他にも確認して下さる方が現れると良いのですが…
ではない場所かもしれません。少なくとも 2016 年の luaotfload では
(省略)/luatex-cache/generic/names/luaotfload-names.lua.gz
というファイルが出来る仕組みだったようです。
(解凍すると中から luaotfload-names.lua が出てくる。)
今はキャッシュファイル名や配置場所が変わっているかもしれませんが,
それっぽいものがきっとどこかにあるはずです。
# しばらく自宅には帰らないので,ローカルな TeX 環境が手元にありません。
# 他にも確認して下さる方が現れると良いのですが…
参考にならないかもしれませんが,追加コメントです。
luaotfload(LuaTeX でフォント読込を担っているパッケージ)を使うときは
「何か変なことが起きたらキャッシュをゼロから作り直す」
ことでなぜか直る場合もあります。
今回探していただいている luatex-cache ディレクトリの中身は基本的に
luaotfload が作ったものなので,消しても支障はありません。
いったん全部消してもう一回 lualatex を使うと直る可能性もあります。
luaotfload-tool -u -v
をターミナルから実行しても同じ効果が得られたように記憶しています。
(逆に,うまくいっていたものが失敗するようになるかもしれませんが…。)
luaotfload(LuaTeX でフォント読込を担っているパッケージ)を使うときは
「何か変なことが起きたらキャッシュをゼロから作り直す」
ことでなぜか直る場合もあります。
今回探していただいている luatex-cache ディレクトリの中身は基本的に
luaotfload が作ったものなので,消しても支障はありません。
いったん全部消してもう一回 lualatex を使うと直る可能性もあります。
luaotfload-tool -u -v
をターミナルから実行しても同じ効果が得られたように記憶しています。
(逆に,うまくいっていたものが失敗するようになるかもしれませんが…。)
山本宗宏です。
簡単のために、最低限の状態(環境)と実例を載せるだけにとどめます。
> 再現のためには/System/Library/Assets/以下の
> TsukushiAMaruGothic.ttcのシンボリックリンクを同じディレクトリに
> 入れておく必要があります。
この場所にこのシンボリックリンクをおやめになるのが賢明です。
なぜならば、フォントを検索するパスを適切に通せば、そのような手作業は不要です。
仮に TsukushiAMaruGothic.ttc のシンボリックリンクを TeX Live 環境に向けてどこかに貼るとすれば、
TEXMFツリー以下の然るべきディレクトリに貼るのが妥当です。
まず、OSFONTDIR を TEXLIVE/YYYY/texmf.cnf に記述しておくのが簡便です。
%% ここから
% OSFONTDIR is to provide a convenient hook for allowing TeX to find
% fonts installed on the system (outside of TeX). An empty default
% value would add "//" to the search paths, so we give it a dummy value.
%default: OSFONTDIR = /please/set/osfontdir/in/the/environment
OSFONTDIR = /System/Library/Fonts//;/Library/Fonts//;/System/Library/Assets/com_apple_MobileAsset_Font{3,4,5}//;~/Library/Fonts//
%% ここまで
もしくは、
OSFONTDIR = /System/Library/Fonts//;/Library/Fonts//;/System/Library/Assets//;~/Library/Fonts//
としておいてもよいです。
(実際に速度を測っていませんが、/System/Library/Assets//;よりも/System/Library/Assets/com_apple_MobileAsset_Font5//;を直で指定するほうが速い気がしていて、これを疑っているものの、未検証です :D )
このようにしておくだけで、今回の獲物であるTsukushiAMaruGothic.ttcは、
$ kpsewhich TsukushiAMaruGothic.ttc
/System/Library/Assets/com_apple_MobileAsset_Font5/3fddb8111efe16d8205664bb96798ec74e6e3728.asset/AssetData/TsukushiAMaruGothic.ttc
のように、kpath 検索ライブラリを用いる各種コマンドから、適切に見つけてくれます。
つぎに、念のため、
$ luaotfload-tool --list=plainname | grep Tsukushi
でも実行します。
(実際に、DBである luaotfload-names.lua.gz が存在しなければ、luaotfload-tool コマンド実行時にそれが生成されます。
あらかじめ、luaotfload -u -f コマンドを実行しておいてもよいです。)
このコマンドは、luaotfload-names.lua をご覧いただければ分かるように、--list=フィールド にしていした一覧を出力しているだけです。
(原始的に、
$ gunzip -c $(kpsewhich --var-value=TEXMFVAR)/luatex-cache/generic/names/luaotfload-names.lua.gz | less
あたりを実行して、眺めていただいても分かると思います。)
$ luaotfload-tool --list=plainname | grep Tsukushi
Tsukushi A Round Gothic Bold 11.0d1e1
Tsukushi A Round Gothic Bold 13.0d1e2
Tsukushi A Round Gothic Regular 11.0d1e1
Tsukushi A Round Gothic Regular 13.0d1e2
Tsukushi B Round Gothic Bold 11.0d1e1
Tsukushi B Round Gothic Bold 13.0d1e2
Tsukushi B Round Gothic Regula 11.0d1e1
Tsukushi B Round Gothic Regula 13.0d1e2
これで引っかかっていなければ、plainname の名前で luatex からフォント名を参照できません。
上記のように問題なくTsukushi A Round Gothicの名前を引ける状態であれば、以下のLaTeX文章も問題なく lualatex コマンドでタイプセットできると思います。
%#!luajitlatex d2463
\documentclass{ltjsarticle}
\usepackage{luatexja-preset}
\setmainjfont[BoldFont=Tsukushi A Round Gothic Bold]{Tsukushi A Round Gothic Regular}
\begin{document}
若狭悠里とふ・れ・ん・ど・し・た・い
\textbf{若狭悠里とふ・れ・ん・ど・し・た・い}
\end{document}
以上でございます。
簡単でございますが、ご参考になれば幸いでございます。
簡単のために、最低限の状態(環境)と実例を載せるだけにとどめます。
> 再現のためには/System/Library/Assets/以下の
> TsukushiAMaruGothic.ttcのシンボリックリンクを同じディレクトリに
> 入れておく必要があります。
この場所にこのシンボリックリンクをおやめになるのが賢明です。
なぜならば、フォントを検索するパスを適切に通せば、そのような手作業は不要です。
仮に TsukushiAMaruGothic.ttc のシンボリックリンクを TeX Live 環境に向けてどこかに貼るとすれば、
TEXMFツリー以下の然るべきディレクトリに貼るのが妥当です。
まず、OSFONTDIR を TEXLIVE/YYYY/texmf.cnf に記述しておくのが簡便です。
%% ここから
% OSFONTDIR is to provide a convenient hook for allowing TeX to find
% fonts installed on the system (outside of TeX). An empty default
% value would add "//" to the search paths, so we give it a dummy value.
%default: OSFONTDIR = /please/set/osfontdir/in/the/environment
OSFONTDIR = /System/Library/Fonts//;/Library/Fonts//;/System/Library/Assets/com_apple_MobileAsset_Font{3,4,5}//;~/Library/Fonts//
%% ここまで
もしくは、
OSFONTDIR = /System/Library/Fonts//;/Library/Fonts//;/System/Library/Assets//;~/Library/Fonts//
としておいてもよいです。
(実際に速度を測っていませんが、/System/Library/Assets//;よりも/System/Library/Assets/com_apple_MobileAsset_Font5//;を直で指定するほうが速い気がしていて、これを疑っているものの、未検証です :D )
このようにしておくだけで、今回の獲物であるTsukushiAMaruGothic.ttcは、
$ kpsewhich TsukushiAMaruGothic.ttc
/System/Library/Assets/com_apple_MobileAsset_Font5/3fddb8111efe16d8205664bb96798ec74e6e3728.asset/AssetData/TsukushiAMaruGothic.ttc
のように、kpath 検索ライブラリを用いる各種コマンドから、適切に見つけてくれます。
つぎに、念のため、
$ luaotfload-tool --list=plainname | grep Tsukushi
でも実行します。
(実際に、DBである luaotfload-names.lua.gz が存在しなければ、luaotfload-tool コマンド実行時にそれが生成されます。
あらかじめ、luaotfload -u -f コマンドを実行しておいてもよいです。)
このコマンドは、luaotfload-names.lua をご覧いただければ分かるように、--list=フィールド にしていした一覧を出力しているだけです。
(原始的に、
$ gunzip -c $(kpsewhich --var-value=TEXMFVAR)/luatex-cache/generic/names/luaotfload-names.lua.gz | less
あたりを実行して、眺めていただいても分かると思います。)
$ luaotfload-tool --list=plainname | grep Tsukushi
Tsukushi A Round Gothic Bold 11.0d1e1
Tsukushi A Round Gothic Bold 13.0d1e2
Tsukushi A Round Gothic Regular 11.0d1e1
Tsukushi A Round Gothic Regular 13.0d1e2
Tsukushi B Round Gothic Bold 11.0d1e1
Tsukushi B Round Gothic Bold 13.0d1e2
Tsukushi B Round Gothic Regula 11.0d1e1
Tsukushi B Round Gothic Regula 13.0d1e2
これで引っかかっていなければ、plainname の名前で luatex からフォント名を参照できません。
上記のように問題なくTsukushi A Round Gothicの名前を引ける状態であれば、以下のLaTeX文章も問題なく lualatex コマンドでタイプセットできると思います。
%#!luajitlatex d2463
\documentclass{ltjsarticle}
\usepackage{luatexja-preset}
\setmainjfont[BoldFont=Tsukushi A Round Gothic Bold]{Tsukushi A Round Gothic Regular}
\begin{document}
若狭悠里とふ・れ・ん・ど・し・た・い
\textbf{若狭悠里とふ・れ・ん・ど・し・た・い}
\end{document}
以上でございます。
簡単でございますが、ご参考になれば幸いでございます。
aminophenさんがおっしゃっていた
ナントカ/luatex-cache/generic/names/luaotfload-names.lua.gz
を見つけたので、そのディレクトリをアーカイブしたものを
添付いたします。
また、このディレクトリを削除した上で、もう一度LuaLaTeX
で処理したところ、同じエラーが出てPDFは出力されませんでした。
なお、添付したものは削除する前のものです。
山本さんもコメントありがとうございます。
シンボリックリンクを同じディレクトリに貼ったのは、一部の
ソフトウェア(例えばMicrosoft PowerPoint)で筑紫丸ゴシック
が読み込まれないという問題が起こっていて、それを切り分ける
ためにこのような方法を取りました。同じく読み込まれないことが
ある凸版文久明朝についても、同様の手法で埋め込んでみたところ
成功したので、シンボリックリンクを張っていることが問題の原因
ではないと推測しています。
$ luaotfload-tool --list=plainname | grep Tsukushi
も実行してみましたが、なにも出力されませんでした。
ナントカ/luatex-cache/generic/names/luaotfload-names.lua.gz
を見つけたので、そのディレクトリをアーカイブしたものを
添付いたします。
また、このディレクトリを削除した上で、もう一度LuaLaTeX
で処理したところ、同じエラーが出てPDFは出力されませんでした。
なお、添付したものは削除する前のものです。
山本さんもコメントありがとうございます。
シンボリックリンクを同じディレクトリに貼ったのは、一部の
ソフトウェア(例えばMicrosoft PowerPoint)で筑紫丸ゴシック
が読み込まれないという問題が起こっていて、それを切り分ける
ためにこのような方法を取りました。同じく読み込まれないことが
ある凸版文久明朝についても、同様の手法で埋め込んでみたところ
成功したので、シンボリックリンクを張っていることが問題の原因
ではないと推測しています。
$ luaotfload-tool --list=plainname | grep Tsukushi
も実行してみましたが、なにも出力されませんでした。
@aminophenさん
> No file test.aux.
は,lualatex で test.tex を1回コンパイルしたか2回以上コンパイルしたかの違いです。
なるほど笑
@山本宗宏さん
>なぜならば、フォントを検索するパスを適切に通せば、そのような手作業は不要です。
全然ついて行けなかったので、kpathseaについて調べるいい機会になりました。
ありがとうございました。(ちょっと分かってきました。)
>シンボリックリンクを張っていることが問題の原因
ではないと推測しています。
私もシンボリックリンクで試してうまく行きましたが、
念のため、シンボリックリンクは削除して2018texlive直下のtexmf.cnfに
OSFONTDIR = /System/Library/Assets/com_apple_MobileAsset_Font4//;
を追記して、
luaotfload -u -f
luaotfload-tool --list=plainname|grep Tsukushi
を実行してみてはどうでしょうか?
(luaotfloadが分かってないので、全くトリビアルかも知れませんが。)
あとフォントは本当に同じものなんですかね?
ハッシュです。
shasum -a 256 TsukushiAMaruGothic.ttc
ec927cc75084aee1fcfc2bc70be93b2c015ebc4f3979f99b27ffc69d66072585
西村
わたしもハッシュを調べました。
$ shasum -a 256 TsukushiAMaruGothic.ttc
ec927cc75084aee1fcfc2bc70be93b2c015ebc4f3979f99b27ffc69d66072585 TsukushiAMaruGothic.ttc
# ハッシュについてよくわかってはないですけど、このコマンドをうてばよいのでしょうか。
OSFONTDIR = /System/Library/Assets/com_apple_MobileAsset_Font4//;
を追記するのも試しましたが、
$ luaotfload -u -f
-bash: luaotfload: command not found
と言われました(tlmgr update --self -allはやってあります)。
$ shasum -a 256 TsukushiAMaruGothic.ttc
ec927cc75084aee1fcfc2bc70be93b2c015ebc4f3979f99b27ffc69d66072585 TsukushiAMaruGothic.ttc
# ハッシュについてよくわかってはないですけど、このコマンドをうてばよいのでしょうか。
OSFONTDIR = /System/Library/Assets/com_apple_MobileAsset_Font4//;
を追記するのも試しましたが、
$ luaotfload -u -f
-bash: luaotfload: command not found
と言われました(tlmgr update --self -allはやってあります)。
OSFONTDIR = /System/Library/Assets/com_apple_MobileAsset_Font4//;
を追記し、luaoftload-tool -u -f してから
luaotfload-tool --list=plainname | grep Tsukushi すると
下のようになったので、名前から引ける状態になったのを
確認できました。
$ luaotfload-tool --list=plainname | grep Tsukushi
Tsukushi A Round Gothic Bold 13.0d1e2
Tsukushi A Round Gothic Regular 13.0d1e2
Tsukushi B Round Gothic Bold 13.0d1e2
Tsukushi B Round Gothic Regula 13.0d1e2
しかし、それでも同じエラーがでてPDFは出力されませんでした。
を追記し、luaoftload-tool -u -f してから
luaotfload-tool --list=plainname | grep Tsukushi すると
下のようになったので、名前から引ける状態になったのを
確認できました。
$ luaotfload-tool --list=plainname | grep Tsukushi
Tsukushi A Round Gothic Bold 13.0d1e2
Tsukushi A Round Gothic Regular 13.0d1e2
Tsukushi B Round Gothic Bold 13.0d1e2
Tsukushi B Round Gothic Regula 13.0d1e2
しかし、それでも同じエラーがでてPDFは出力されませんでした。