关于Linux下Texlive没法找到已安装字体的问题与解决

关于Linux下Texlive没法找到已安装字体的问题与解决

当我在Ubuntu系统下使用Latex时,在编译渲染时报出了Font "xxx" does not contain requested这种错误,其中xxx就是你可能想使用的字体格式。linux

然而个人Ubuntu系统已经正确安装了一些经常使用中文字体,然而在LaTeX编译渲染时还会报出错误。字体

因为笔者为了解决这个问题翻遍了国内外的网站、去查看了Texlive官方文档,耗费了许多时间与精力,都没能找到解决个人问题的信息,人们的时间每每都很珍贵,通常找不到解决方案事后,每每都不了了之,本着互联网极客精神(开源精神),在这里将笔者的解决过程记录并分享,但愿人们能够将这种精神继承并传承下去。网站

我甚至在Texlive的官方安装文档中看到这么一段话:code

image

能够看到关乎于LaTeX排版中让人很是头疼的问题就是汉字的一些处理了,好在今天有很是多好用的宏包能够解决处理这个问题。blog

首先看一下笔者出现的问题:继承

image

image

能够看到终端给出的错误提示是未能找到已安装的字体(installed font not found),有了这句话的提示,笔者想的多是,在个人系统上已安装了的字体中,在LaTeX中未能正确地引用,查看代码中能够看到:文档

image

在这里设置字体格式的时候咱们设置楷体对应的字体文件为simkai,咱们能够查看咱们的字体库中是否有simkai.ttf楷体的字体文件:编译

在Ubuntu存放字体的目录/usr/share/fonts/下能够使用find命令查找:渲染

image

能够看到,笔者的系统中已经存放了simkai.ttf这个字体文件,为何LaTeX尚未找到这个字体呢。互联网

经过一番排查,原来是在Ubuntu中,对字体的使用并不单单是字体文件名,而是另外一个别名。

咱们能够使用fc-list来查看系统可用的字体列表,而后使用grep匹配simkai.ttf的字体文件,能够进一步查看字体的信息:

image

原来,图中1号框中的名字只是字体文件名,而在系统应用中想要使用这个字体,咱们须要指定2号框中的字体名,例如本图,咱们想要使用楷体就须要指定KaiTi楷体这个名字。

回到LaTeX代码中,将以前出现错误缘由的simkai替换成KaiTi便可解决问题。

image

image

为了进一步验证笔者的猜测,能够看到上图代码中,在KaiTi的下面还使用了SimSun宋体的使用,然而SimSun并不报错,这里笔者想能够继续查看SimSun的字体信息,其后面的别名应该包含SimSun

image

因此笔者的猜测是正确的,因此在咱们不一样的系统、不一样的字体文件中,每一个人发生没法正确找到咱们想要使用的字体的错误可能都不同,由于咱们使用的字体文件不一样可能致使咱们的在应用中使用字体中须要引用的名称的不一样而不一样,因此出现这种问题咱们要具体问题具体分析,对症下药。