在 Fedora 28 Texlive 2017* ConTeXt 中加载系统字体?[待关闭]

在 Fedora 28 Texlive 2017* ConTeXt 中加载系统字体?[待关闭]

font-sel.mkvi无法加载系统字体的示例:

\definefontfamily [dejavu] [serif] [DejaVu Serif]
\definefontfamily [dejavu] [sans]  [DejaVu Sans]
\definefontfamily [dejavu] [mono]  [DejaVu Sans Mono]
\definefontfamily [dejavu] [math]  [XITS Math] [scale=1.1]

\setupbodyfont[dejavu]

\starttext
\input knuth
\stoptext

出现以下错误:

...
selectfont      > The requested font 'DejaVu Serif' has no files for the 'tf' alternative, Latin Modern is used instead.
selectfont      > The requested font 'DejaVu Sans' has no files for the 'tf' alternative, Latin Modern is used instead.
selectfont      > The requested font 'DejaVu Sans Mono' has no files for the 'tf' alternative, Latin Modern is used instead.
...
mkiv lua stats  > loaded fonts: 2 files: lmroman10-regular.otf, xits-math.otf
mkiv lua stats  > font engine: otf 3.029, afm 1.512, tfm 1.000, 4 instances, load time 1.252 seconds
...

相同的错误任何其他系统字体。那么该怎么办呢?

尝试运行luaotfload-tool?创建数据库需要一段时间,但能够访问所有系统字体:

$ luaotfload-tool --find='MuseJazz' -F
luaotfload | resolve : Font "MuseJazz" found!
luaotfload | resolve : Resolved file name "/usr/share/fonts/mscore/MuseJazz.ttf"

再次强调:

luaotfload-tool --update

不幸的是,仍然无法加载字体:

export OSFONTDIR="/usr/share/fonts;$HOME/.local/share/fonts;/usr/local/share/fonts;$HOME/.fonts"
context test

然后我尝试:

context --generate

它可以运行,但声称什么也不做。我想这是因为它是用于单用户安装的,并且缺乏对/usr/share/tex*目录的写访问权限。相反,我必须运行这个:

mtxrun --generate

这写入~/.texlive2017/但我仍然无法运行 wiki 所说的我接下来应该运行的命令:

$ mtxrun --script fonts generate
mtxrun          | unknown script 'fonts.lua' or 'mtx-fonts.lua'
$ mtxrun --script fonts --list --all --pattern='*'
mtxrun          | unknown script 'fonts.lua' or 'mtx-fonts.lua'

好的,让我们运行任何有--generate选项的东西:

$ luatools --generate
mtxrun          | unknown script 'base.lua' or 'mtx-base.lua'

不...好的,让我们切换到root用户。

$ kpsewhich texmf.cnf
/usr/share/texlive/texmf-dist/web2c/texmf.cnf

首先编辑texmf.cnf以将 OSFONTDIR 替换为上面的值。luaotfload-tool按照上述方法更新数据库。让我们看看是否mtxrun知道该fonts脚本……不。首先运行context --generate然后mtxrun --generate。现在有一些明显的成功,因为我可以运行mtxrun --script fonts generate。不幸的是,生成的字体数据库似乎不了解系统字体:

$ mtxrun --script fonts --list --all --pattern='*' | egrep -i muse | wc -l
0

尽管mtxrun --generate只修改了全局/usr/share/texlive/texmf-var/位置而不是/root/*,但只有 root 用户才能访问这些更改。切换回主用户后,我仍然无法运行此命令:

$ mtxrun --script fonts generate
mtxrun          | unknown script 'fonts.lua' or 'mtx-fonts.lua'

我不知道下一步该尝试什么。

[*] Fedora 上的 Texlive 似乎是一个混合日期和 svn 修订版本

  • texlive.noarch 6:2016-52.20160520.fc28
  • texlive-base.x86_64 7:20170520-41.fc28
  • texlive-collection-context.noarch 6:svn36190.0-52.20160520.fc28
  • texlive-collection-luatex.noarch 6:svn39902-52.20160520.fc28
  • texlive-context.noarch 7:20170520-41.fc28
  • texlive-luatex.x86_64 7:20170520-41.fc28
  • texlive-context-title.noarch 6:svn36189.0-52.fc28.2

相关内容