让 ConTeXt 忽略系统字体?

让 ConTeXt 忽略系统字体?

我怎样才能让 ConTeXt 忽略我的系统字体?

目前,ConTeXt 首先扫描并使用所有系统字体(Windows 7 字体文件夹中的所有文件),然后扫描并使用 ConTeXt 文件夹中的字体。

我希望 ConTeXt 忽略系统字体并仅使用 ConTeXt 文件夹中的字体。

答案1

回答:ConTeXt 默认包含系统字体,除非用户通过两步阻止它。(在 Windows 下测试并发现 MacOS 有类似的代码,但可能不适用于 Linux)

必须设置环境变量OSFONTDIR,并且不能为空。它可以指向您想要在 ConTeXt 中使用的字体的所需字体目录,也可以指向一个空目录。

至少在 Windows 系统上,\fonts\conf\fonts.conf还必须更改该文件。默认情况下,还必须更改 XML 条目<dir>c:/windows/fonts</dir>并将其设置为字体的所需位置。

背景:如果环境变量OSFONTDIR未设置或设置为空字符串,则使用系统字体目录的路径填充mtxrun.lua

do
  local osfontdir=osgetenv("OSFONTDIR")
  if osfontdir and osfontdir~="" then
  elseif osname=="windows" then
    ossetenv("OSFONTDIR","c:/windows/fonts//")
  elseif osname=="macosx" then
    ossetenv("OSFONTDIR","$HOME/Library/Fonts//;/Library/Fonts//;/System/Library/Fonts//")
  end
end

相关内容