CentOS 8,“找不到字体“FreeSerif”。​​’

CentOS 8,“找不到字体“FreeSerif”。​​’

全新安装 CentOS 8,使用 Sphinx (3.0.3),并将 latex-engine 设置为 xelatex。

我遇到了一些问题,但经过一些工作后问题就解决了 - 搜索和安装(例如 cmap.sty)。我想我最终还是dnf install texlive-*尝试让它工作了。

最后,我遇到了瓶颈:

(/usr/share/texlive/texmf-dist/tex/latex/polyglossia/gloss-english.ldf)kpathsea:make_tex: Invalid filename `[FreeSerif.otf]/OT', contains '['


!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!
! fontspec error: "font-not-found"
! 
! The font "FreeSerif" cannot be found.
! 
! See the fontspec documentation for further information.
! 
! For immediate help type H <return>.
!...............................................  

我成功安装了一堆免费字体dnf install gnu-free-serif-fonts gnu-free-mono-fonts gnu-free-sans-fonts gnu-free-fonts-common,运行了 fc-cache 后就可以看到字体了fc-list | grep FreeSerif

/usr/share/fonts/gnu-free/FreeSerifBoldItalic.ttf: FreeSerif:style=Bold Italic,получерен курсивен,negreta cursiva,tučné kurzíva,fed kursiv,Fett-Kursiv,Negrita Cursiva,Lihavoitu Kursivoi,Gras Italique,Félkövér dőlt,Grassetto Corsivo,Vet Cursief,Halvfet Kursiv,Pogrubiona kursywa,Negrito Itálico,gros cursiv,Обычный Курсив,Tučná kurzíva,Fet Kursiv,ตัวเอียงหนา,Kalın İtalik,huruf tebal kursif,жирний курсив,Polkrepko Pežeče,treknais kursīvs,pusjuodis kursyvas,nghiêng đậm,Lodi etzana,धृष्ट-तिरछा
/usr/share/fonts/gnu-free/FreeSerifBold.ttf: FreeSerif:style=Bold,получерен,negreta,tučné,fed,Fett,Negrita,Lihavoitu,Gras,Félkövér,Grassetto,Vet,Halvfet,Pogrubiony,Negrito,gros,Обычный,Fet,ตัวหนา,Kalın,huruf tebal,жирний,Polkrepko,treknraksts,pusjuodis,ضخیم,đậm,Lodia,धृष्ट
/usr/share/fonts/gnu-free/FreeSerifItalic.ttf: FreeSerif:style=Italic,курсивен,cursiva,kurzíva,kursiv,Λειψίας,Kursivoitu,Italique,Dőlt,Corsivo,Cursief,kursywa,Itálico,cursiv,Курсив,ตัวเอียง,İtalik,kursif,Ležeče,kursīvs,kursivas,nghiêng,Etzana,तिरछा
/usr/share/fonts/gnu-free/FreeSerif.ttf: FreeSerif:style=Regular,нормален,normal,obyčejné,Mittel,µεσαία,Normaali,Normál,Normale,Gemiddeld,odmiana zwykła,Обычный,Normálne,ปกติ,menengah,прямій,Navadno,vidējs,normalusis,عادی,vừa,Arrunta,सामान्य

看到文件是 ttf,而 polyglossia 需要 otf,所以我下载了OTF 的来自GNU 网站,解压它们,将它们复制到/usr/share/fonts/gnu-free并运行fc-cache。我仍然收到相同的错误 - 即使 fc-list 现在找到了它们:

[root@server ~]# fc-list | grep FreeSerif.*otf
/usr/share/fonts/gnu-free/FreeSerifItalic.otf: FreeSerif:style=Italic,курсивен,cursiva,kurzíva,kursiv,Λειψίας,Kursivoitu,Italique,Dőlt,Corsivo,Cursief,kursywa,Itálico,cursiv,Курсив,ตัวเอียง,İtalik,kursif,Ležeče,kursīvs,kursivas,nghiêng,Etzana,तिरछा
/usr/share/fonts/gnu-free/FreeSerifBoldItalic.otf: FreeSerif:style=Bold Italic,получерен курсивен,negreta cursiva,tučné kurzíva,fed kursiv,Fett-Kursiv,Negrita Cursiva,Lihavoitu Kursivoi,Gras Italique,Félkövér dőlt,Grassetto Corsivo,Vet Cursief,Halvfet Kursiv,Pogrubiona kursywa,Negrito Itálico,gros cursiv,Обычный Курсив,Tučná kurzíva,Fet Kursiv,ตัวเอียงหนา,Kalın İtalik,huruf tebal kursif,жирний курсив,Polkrepko Pežeče,treknais kursīvs,pusjuodis kursyvas,nghiêng đậm,Lodi etzana,धृष्ट-तिरछा
/usr/share/fonts/gnu-free/FreeSerif.otf: FreeSerif:style=Regular,нормален,normal,obyčejné,Mittel,µεσαία,Normaali,Normál,Normale,Gemiddeld,odmiana zwykła,Обычный,Normálne,ปกติ,menengah,прямій,Navadno,vidējs,normalusis,عادی,vừa,Arrunta,सामान्य
/usr/share/fonts/gnu-free/FreeSerifBold.otf: FreeSerif:style=Bold,получерен,negreta,tučné,fed,Fett,Negrita,Lihavoitu,Gras,Félkövér,Grassetto,Vet,Halvfet,Pogrubiony,Negrito,gros,Обычный,Fet,ตัวหนา,Kalın,huruf tebal,жирний,Polkrepko,treknraksts,pusjuodis,ضخیم,đậm,Lodia,धृष्ट

答案1

我也遇到过同样的问题。幸运的是,数据小孩指明了方向评论

将 Latex 引擎改回 Sphinx 中的默认引擎

为此,我已删除这句话出自conf.py

latex_engine = 'lualatex'

就我而言,我仍然想使用 LuaLaTeX 来构建文档。我这样做了:

sphinx-build -b latex . ../pdf
cd ../pdf
make LATEXMKOPTS="-lualatex"

我希望这有帮助!

答案2

Sphinx 生成一个.tex默认字体配置,指定为:

\setmainfont{FreeSerif}[
  Extension      = .otf,
  UprightFont    = *,
  ItalicFont     = *Italic,
  BoldFont       = *Bold,
  BoldItalicFont = *BoldItalic
]
\setsansfont{FreeSans}[
  Extension      = .otf,
  UprightFont    = *,
  ItalicFont     = *Oblique,
  BoldFont       = *Bold,
  BoldItalicFont = *BoldOblique,
]
\setmonofont{FreeMono}[
  Extension      = .otf,
  UprightFont    = *,
  ItalicFont     = *Oblique,
  BoldFont       = *Bold,
  BoldItalicFont = *BoldOblique,
]

这将强制通过(文件名搜索)进行字体搜索kpathsea,该搜索仅配置为查看您的 TexLive 安装路径(TEXMF)。以下是一些解决该问题的方法:

  1. 编辑Extension...生成的文件中的参数.tex,以恢复字体配置搜索。
  2. 安装提供 GNU FreeFont 的 TexLive 包。
  3. 将您的 /usr/share/fonts/* 条目符号链接到您的 TEXMF 安装,以便找到它们。
  4. 使用 lualatex 实现自己的字体搜索并处理这种情况。

我只能通过 libera.chat IRC 上 #latex 频道的 hrnz 找到它,谢谢!

答案3

这是我的方法。我在目录中找到了我的 FreeSerif 字体:

/usr/local/texlive/2020/texmf-dist/fonts/truetype/public/gnu-freefont/FreeSerif.ttf

于是我双击它。我的 Mac 询问我是否要安装此字体。我单击“是”,然后它就安装了。然后我重新编译 latex 文件,发现它已经可以正常工作了。

相关内容