如何在 ConTeXt(TeX Live 2013)中列出可用于 LuaTeX 的字体?

如何在 ConTeXt(TeX Live 2013)中列出可用于 LuaTeX 的字体?

我看过如何获取 luaotfload 的所有可用字体列表?,但在 TeX Live 2013 中,答案对我来说不起作用,至少在没有 LaTeX 的情况下不起作用。这是因为它们依赖于otfl-names.lua下的文件\luatex-cache\generic\names;但在我的 TeX Live 2013 安装(ConTeXt 方案)中, 下唯一的目录\luatex-cachecontextotfl-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

相关内容