XeLaTeX无法识别TeXLive字体路径及字体尺寸异常问题咨询
我在Ubuntu系统中尝试使用XeLaTeX调用apt包texlive-fonts-extra中的字体QTLinostroke.otf,已执行以下命令完成安装:
sudo apt install texlive-fonts-extra
该字体默认安装路径为/usr/share/texlive/texmf-dist/fonts/opentype/public/qualitype/QTLinostroke.otf。随后编写了如下XeLaTeX代码并尝试编译:
%!TeX program=xelatex \documentclass[12pt]{article} \usepackage[a4paper,margin=2.05cm]{geometry} \usepackage{fontspec} \setmainfont{QTLinostroke} \begin{document} The quick brown fox jumps over lazy the dog. \end{document}
但XeLaTeX无法找到该字体文件,不过将QTLinostroke.otf复制到$HOME/.fonts/目录后,代码可正常编译。现咨询以下两个问题:
- 为何XeLaTeX无法识别属于TeXLive包的系统字体文件?
- 已在
\documentclass中设置12pt,但该字体编译后显示尺寸仍过小。
1. XeLaTeX无法识别TeXLive包字体的原因
fontspec宏包默认依赖系统字体管理器(如Ubuntu的fontconfig)查找字体,而TeXLive安装在/usr/share/texlive/texmf-dist/fonts/下的字体,并未被自动注册到系统字体数据库中。系统字体管理器不会主动扫描这个TeX专属路径,因此fontspec无法通过字体名称找到该字体。
把字体复制到$HOME/.fonts/后,系统会自动扫描该目录并更新字体缓存,fontconfig能识别到字体,fontspec自然可以正常调用。
如果不想复制字体,也可以直接指定字体文件路径调用,修改\setmainfont写法即可:
\setmainfont[Path=/usr/share/texlive/texmf-dist/fonts/opentype/public/qualitype/]{QTLinostroke.otf}
2. 字体显示尺寸过小的解决方法
12pt是文档的基准字号,但部分字体本身的设计字身框(em size)与视觉大小不匹配,会导致视觉上看起来偏小。可以通过fontspec的Scale参数手动调整缩放比例,示例如下:
\setmainfont[Scale=1.2]{QTLinostroke}
若使用指定路径的写法:
\setmainfont[Path=/usr/share/texlive/texmf-dist/fonts/opentype/public/qualitype/, Scale=1.2]{QTLinostroke.otf}
可根据实际显示效果调整Scale的数值,直到字体大小符合预期。
内容的提问来源于stack exchange,提问作者ASarkar

