我有 TexLive 2021。操作系统和 TexLive 规格:操作系统 Ubuntu Linux 20.04.4 LTS,TeXLive 从互联网安装,它位于/usr/local/texlive/2021
。编译日志:https://pastebin.com/50pVKYWB
以前,Concrete 系列字体可以正常运行:
\documentclass[12pt]{article}
\usepackage[a4paper]{geometry}
\usepackage[english]{babel}
\usepackage{ccfonts}
\usepackage{fontspec}
\setmainfont{CMU Concrete}
\setsansfont{CMU Sans Serif}
\setmonofont{CMU Typewriter Text}
\begin{document}
\noindent
The Concrete Roman fonts were designed by Don Knuth for a book called
``Concrete Mathematics'', which he wrote with Graham and Patashnik
(the Patashnik, of BibTeX fame).
\end{document}
现在,当我尝试编译该文档时,却没有:
Package fontspec Error: The font "CMU Concrete" cannot be found.
如何安装并使其可用?
答案1
问题可能是 TeX Live 字体目录未被 搜索和索引fc-cache
。根据您提供的路径,您进行了自定义安装,而 TeX Live 安装程序默认不会进行此项设置。
您可以先使用命令搜索文件本身来测试这一点,kpsewhich cmunorm.otf
该命令应打印路径名。然后,fc-match "CMU Concrete"
应重复 XeLaTeX 对此文件执行的搜索,并luaotfload-tool --find "CMU Concrete"
应重复 LuaLaTeX 执行的搜索。
如果kpsewhich
命令有效、fc-match
失败和luaotfload-tool
成功,则问题在于字体缓存未配置为在 TeX Live 目录中搜索字体文件。执行此操作的配置文件随 TeX Live 一起提供,但默认情况下未在系统范围内安装,您需要在正确的配置目录中放置指向它的符号链接。在 Ubuntu 上,一个命令是:
旧版
sudo ln -s /usr/local/texlive/2021/texmf-var/fonts/conf/texlive-fontconfig.conf \
/etc/fonts/conf.d/09-texlive2021.conf
更正
在 TeX Live 2021 中,示例.conf
文件无法正常工作,应使用 复制cp
,然后编辑以删除以下行
<dir>/usr/local/texlive/2021/texmf-dist/fonts/type1</dir>
然后您可能需要运行fc-cache -f -v
来刷新字体缓存。如果luaotfload-tool
失败,您可能需要使用 强制它优先选择 TeX 树中的文件luaotfload-tool -f -u -p -v
。
您可以找到有关我使用的配置的更多提示,包括如何安装可选字体以及如何在树中启用字体texmf-local
。
如果由于某种原因你无法更改系统配置,解决方法是在用户字体目录中放置指向 TeX Live 字体目录的符号链接(~/.fonts/
应该有效)或通过文件名加载字体,例如
\setmainfont{cmuno}[
Ligatures={Common,TeX},
UprightFont={*rm},
BoldFont={*bx},
ItalicFont={*ti},
BoldItalicFont={*bi},
Extension=.otf ]
所有 Computer Modern Unicode 字体的文件名列表为这里。
答案2
对@Davislor 回答的补充:第二个问题的解决方案。
xdvipdfmx:fatal: Invalid font: -1 (0)
错误解决方案
$ sudo bash
# cd /usr/local/texlive/2021/texmf-var/fonts/conf
# cp ./texlive-fontconfig.conf ./texlive-fontconfig.conf.bak
# vim ./texlive-fontconfig.conf
删除以下行:
<dir>/usr/local/texlive/2021/texmf-dist/fonts/type1</dir>
然后更新字体缓存:
# fc-cache -fsv
相关问题链接:
答案3
在 Ubuntu 中,如果一切都失败,请安装包texlive-fonts-extra
。