TeX Live 2013 pretest (x86_64-linux) で,
以下のソースをタイプセットさせました:
=== a.tex ===
%#!luatex
\input luaotfload.sty
\font\G=cmtt10
\G a
\end
===
pdf 自体は生成されますが,どうやら毎回
フォント名データベースを作りにいっているようです:
$ luatex a | grep luaotfload ; luatex a | grep luaotfload
(./a.tex (/opt/texlive/2013/texmf-dist/tex/luatex/luaotfload/luaotfload.sty
(/opt/texlive/2013/texmf-dist/tex/luatex/luaotfload/luaotfload.lua)(using write
Module luatexbase-mcb info: creating 'luaotfload.patch_font' type 4
Module luatexbase-mcb info: inserting 'luaotfload.pre_linebreak_filter'
Module luatexbase-mcb info: inserting 'luaotfload.hpack_filter'
Module luatexbase-mcb info: inserting 'luaotfload.define_font'
Module luatexbase-mcb info: inserting 'luaotfload.find_vf_file'
(luatexbase-mcb) at position 1 in 'luaotfload.patch_font'
luaotfload | Font names database loaded: /home/h7k/.texlive2013/texmf-var/luatex
luaotfload | Updating the font names database:
luaotfload | Scanning TEXMF fonts...
luaotfload | Scanning OS fonts...
luaotfload | Font names database saved: %s
(以下,全く同じ内容が繰り返される.略)
これでは大変不便です.
なぜこのような挙動になってしまうのでしょうか?
なお,使用している luaotfload は v1.28 (2013/04/11) で,
scripts/oberdiek/oberdiek.luatex.lua に次の修正を加えています:
55c55
< table.insert(package.loaders, kpse_module_loader)
---
> table.insert(package.searchers, kpse_module_loader)
--- otfl-font-nms.lua.orig Thu Apr 18 14:26:04 2013
+++ otfl-font-nms.lua Sun Apr 21 23:20:52 2013
@@ -105,6 +105,9 @@
end
local data = names.data
+ if data then
+ reloaded = true
+ end
if type(data) == "table" and data.version == names.version then
if data.mappings then
local found = { }
で今のところ動いていますが、あまりわかっていないので、
困ることがあるかもしれません。
試しに作った luaotfload-1.28-speedup.patch を添付します.
なお,その後,
\font\H=lmroman10-regular.otf \H s
という行も加えて調べてみましたら,
(load: /opt/texlive/2013/texmf-var/luatex-cache/generic/
fonts/otf/temp-lmroman10-regular.lua)(save: /home/h7k/
.texlive2013/texmf-var/luatex-cache/generic/fonts/otf/
temp-lmroman10-regular.lua)
のように(改行位置は手動で調整),OpenType フォントの
キャッシュを TEXMFSYSVAR から読み込もうとし,その結果
毎回キャッシュを保存していることにも気づきました.
これも上パッチで直したつもりです.
なお,その後,
\font\H=lmroman10-regular.otf \H s
という行も加えて調べてみましたら,
(load: /opt/texlive/2013/texmf-var/luatex-cache/generic/
fonts/otf/temp-lmroman10-regular.lua)(save: /home/h7k/
.texlive2013/texmf-var/luatex-cache/generic/fonts/otf/
temp-lmroman10-regular.lua)
のように(改行位置は手動で調整),OpenType フォントの
キャッシュを TEXMFSYSVAR から読み込もうとし,その結果
毎回キャッシュを保存していることにも気づきました.
これも上パッチで直したつもりです.
> 1.29 が release され、font name database を毎回作成する
> という欠陥に対しては、パッチ不要となったようです。
情報ありがとうございます.手動で入れ替えてみました.
確かに,\font\G=cmtt10 に関しては再生成されなくなっています.
しかし,
\font\H=lmroman10-regular \H s
を実行すると(.otf をつけるとfont name database 再生成)
(load: /opt/texlive/2013/texmf-var/luatex-cache/generic/
fonts/otf/temp-lmroman10-regular.lua)
と TEXMFSYSVAR を見に行ってしまうのは変わらないようです.
公式に pretest に入るまでしばらく様子を見てみます.
> という欠陥に対しては、パッチ不要となったようです。
情報ありがとうございます.手動で入れ替えてみました.
確かに,\font\G=cmtt10 に関しては再生成されなくなっています.
しかし,
\font\H=lmroman10-regular \H s
を実行すると(.otf をつけるとfont name database 再生成)
(load: /opt/texlive/2013/texmf-var/luatex-cache/generic/
fonts/otf/temp-lmroman10-regular.lua)
と TEXMFSYSVAR を見に行ってしまうのは変わらないようです.
公式に pretest に入るまでしばらく様子を見てみます.
lualibs (comment characters を忘れているバグが未だあるかもしれない), luaotfload, luatexbase が更新され、luajitlatex でも KozMinPr6N-Regular などが時間遅れなく使用できるようになって いると思います。おそらく ConTeXt のコードを利用し、 loadfile() が LuaJIT で働かないことがある欠陥を回避できて いるのではないかと思います。 バイナリcacheは LuaJIT の場合、 形式が違うはずですが、luajitlatex を走らせると自動的に .luc に 対応して .lub ファイルを作成してくれるようです。