50 windows系统下为何字体需要为所有用户安装才能LaTeX找到,希望找到kpathsea的字体文件搜寻逻辑

发布于 2025-02-08 15:00:04
由于我没有mac也暂时不想折腾linux系统,本问题暂时停留在windows11上

我的电脑操作系统信息如下:

版本 Windows 11 专业版
版本号 24H2
安装日期 ‎2025/‎1/‎29
操作系统版本 26100.2894
体验 Windows 功能体验包 1000.26100.36.0

如题,我们经常听到的一个说法是:

安装字体时需要右键“为所有用户安装”才能被LaTeX识别到。

image.png

前者"安装"为用户层面的安装,将会把字体安装到C:\Users\<usrname>\AppData\Local\Microsoft\Windows\Fonts

后者"为所有用户安装"为系统层面的安装,将会把字体安装到C:\Windows\Fonts

本问题想知道 "安装字体时需要右键“为所有用户安装”才能被LaTeX识别到" 这一说法是真的吗

是否可以在kpathsea官方文档找到依据,以及是否可以修改texmf.cnf来实现添加用户路径下的字体文件到搜索目录中。

查看更多

关注者
0
被浏览
223
雾月
雾月 4天前
这家伙很懒,什么也没写!

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>

如果要修改,建议同时修改这两处。

修改完成后,再依次执行 texhashfc-cache -fv

2 个回答
yangqingrong
yangqingrong 认证专家 4天前
这家伙很懒,什么也没写!

_强调_testbackend.png

撰写答案

请登录后再发布答案,点击登录

发布
问题

分享
好友

手机
浏览

扫码手机浏览