我看过如何获取 luaotfload 的所有可用字体列表?,但在 TeX Live 2013 中,答案对我来说不起作用,至少在没有 LaTeX 的情况下不起作用。这是因为它们依赖于otfl-names.lua
下的文件\luatex-cache\generic\names
;但在我的 TeX Live 2013 安装(ConTeXt 方案)中, 下唯一的目录\luatex-cache
是context
,otfl-names.lua
我找不到 。
PS关注此评论,我也找过luaotfload-names.lua
,但也没找到那个文件。我需要运行一个程序来构建它吗?我找过mkluatexfontdb
但似乎没有这样的命令。
我尝试了以下 ConTeXt mkiv(LuaTeX)文档:
\starttext
\startluacode
myfonts=dofile(fonts.names.path.path)
for i,v in ipairs(myfonts.mappings) do
tex.print(-2, v.familyname)
tex.print(', ')
tex.print(-2, v.fontname)
tex.print('\\par')
end
\stopluacode
\stoptext
但我收到了错误:
! LuaTeX 错误 [string "\directlua "]:2: 尝试索引字段“path”(零值)
任何建议,将不胜感激。
答案1
如果你需要的只是一个列表注册字体后,您可以运行
mtxrun --script fonts --list --all
上下文,以及
luaotfload-tool --list=*
适用于 Lualatex/Luaotfload(man 1 luaotfload-tool
详情请参阅)。
如果你尚未建立字体索引,则必须在运行上述命令之前先建立,例如
mtxrun --script fonts --reload
和
luaotfload-tool --update
答案2
下列的这些评论,我在以下网址找到了一个字体名称数据库~/.texlive2013/texmf-var/luatex-cache/context/.../fonts/data/names.tma
如果有一个程序能够以易于阅读的格式生成列表那就太好了,但是现在这样就够了。
更新:
我从 Wolfgang Schuster 那里收到了这个代码:
% When you want list of all fonts in the database you can do this with
% a few macros in your document which are provided for this purpose.
% nofruns=1
\setupbodyfont[10pt]
\starttext
\dolookupfontbyspec{filename=*}
\starttabulate
\dorecurse{\dolookupnoffound}
{\expanded{\NC \dolookupgetkeyofindex{fontname}{\recurselevel} \EQ \dolookupgetkeyofindex{filename}{\recurselevel} \NC\NR}}
\stoptabulate
\stoptext