由于我没有mac也暂时不想折腾linux系统,本问题暂时停留在windows11上
我的电脑操作系统信息如下:
版本 Windows 11 专业版
版本号 24H2
安装日期 2025/1/29
操作系统版本 26100.2894
体验 Windows 功能体验包 1000.26100.36.0
如题,我们经常听到的一个说法是:
安装字体时需要右键“为所有用户安装”才能被LaTeX
识别到。
前者"安装"为用户层面的安装,将会把字体安装到C:\Users\<usrname>\AppData\Local\Microsoft\Windows\Fonts
后者"为所有用户安装"为系统层面的安装,将会把字体安装到C:\Windows\Fonts
本问题想知道 "安装字体时需要右键“为所有用户安装”才能被LaTeX
识别到" 这一说法是真的吗?
是否可以在kpathsea
官方文档找到依据,以及是否可以修改texmf.cnf
来实现添加用户路径下的字体文件到搜索目录中。
TeXLive 查找 opentype 字体文件的路径是可以配置的。在 Windows 系统中默认只有 c:\WINDOWS\fonts
和 TeXLive 自带的那些 opentype 字体。
LuaTeX 使用 luaotfload 查找 opentype 字体,而它使用 kpathsea 查找字体文件,直接编辑 kpsewhich.exe texmf.cnf
输出的那个文件,加上
% TrueType outline fonts.
TTFONTS = $TEXMFDOTDIR;$TEXMF/fonts/{truetype,opentype}//;$OSFONTDIR//;C:/your/fonts/dir//
% OpenType outline fonts.
OPENTYPEFONTS = $TEXMFDOTDIR;$TEXMF/fonts/{opentype,truetype}//;$OSFONTDIR//;C:/your/fonts/dir//
每项用英文分号分隔,前面三项如果不知道是什么含义就不要修改。这是跨平台的。
XeTeX 在 Windows 和 Linux 平台使用 fontfonfig,(除非你使用 xetex-specimen)。
在 Linux 平台,根据 fontconfig 文档的说明改动即可。
在 Windows 平台,编辑 kpsewhich.exe --var-value XE_FONTCONFIG_PATH
输出的那个文件夹下的 conf.d/51-local.conf
,改为
<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
<dir>D:/your/fonts/dir1</dir>
<dir>D:/your/fonts/dir2</dir>
... 其它东西,不要改动
</fontconfig>
如果要修改,建议同时修改这两处。
修改完成后,再依次执行 texhash
和 fc-cache -fv
。
照例补充记录下自己的系统情况吧。在我的
C:\texlive\2024
路径下有texmf.cnf
和texmfcnf.lua
:其中
texmf.cnf
内容为:而
texmfcnf.lua
的内容为:@u10307 感谢雾月老师的回复。我还有一个小问题,从我的这两个上述文件(处于默认情况)来看,似乎“用户层面的安装”和“系统层面的安装”均可以被识别到(?)同时有点好奇
texmfcnf.lua
的配置用处是被lualatex
识别到的吗,这种有关的信息可以在哪些文档获取?另外此处是否应该是typo(?) 应为 英文分号(?)
@u70550 xetex 在 Windows 和 Linux 平台不使用 kpathsea 查找 opentype 字体,而是根据 fontconfig 的配置文件来查找。texmfcnf.lua 应该是 ConTeXt 的配置文件,我不确定。
看看 texlive 的文档有没有相关内容,我是试出来的。