TeXLive 2021 中未找到 CMU Concrete 字体

TeXLive 2021 中未找到 CMU Concrete 字体

我有 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

相关内容