在使用mactex编译中文的时候,遇到有些中文字体识别不到的情况,例如遇到识别不到Songti.ttc。其实这个时候字体是在系统里面的,但是只不过是latex没有找到正确的字体路径。
本文只针对于系统已经安装了字体库并且能够用find命令搜到,但是latex编译的时候还是识别不到的情况。如果find命令在系统里面搜索不到字体文件,还需要下载安装字体才行。
2024.9.28更新,在系统更新到MacOS 15之后,又提示字体不可用的问题。感觉MacOS的字体库管理老是变来变去,很让人崩溃。还不如直接用Windows的字体库方案,解决方案见最后。
如何找到正确的字体路径
使用find
命令搜索对应的字体看是否能够搜到,例如常见的字体目录为/Library/Fonts
,/System/Library/Fonts
,/System/Library/PrivateFrameworks/FontServices.framework/Versions/A/Resources/Fonts/Subsets
这几个。使用find
搜索/System/Library
或者/Library
目录就行。例如find /System/Library -name "Songti.ttc"
找到对应的字体目录。
为Latex编译器加入字体路径
安装了mactex之后,在其texlive的安装目录/usr/local/texlive/2023
下找到texmf.conf
文件,将搜到的字体文件所在目录的绝对路径加入到OSFONTDIR
变量里面。例如将/System/Library/Fonts/Supplemental
加入到texlive字体搜寻目录。
完全使用Windows那套字体解决方案,避免MacOS字体库管理混乱问题
有了上面方法,我们知道latex编译是直接去texmf.cof
文件里面的变量OSFONTDIR
里面找对应的字体路径。那么我们直接在用户目录下面新建一个文件夹,把所需字体放进去,然后把文件夹路径添加到变量OSFONTDIR
里面即可。网上搜索windows latex字体,下载下来放到目录即可。示例步骤如下:
- 搜索simhei、simkai、simsun字体(Windows平台的LaTeX字体方案依赖)下载。如果后续编译报找不到.ttc后缀的字体,把.ttf的后缀直接改成.ttc即可。
- 将下载字体放到~/fonts目录(目录可自己指定)。
- 按照上述照片内容,将存储字体库的目录放到OSFONTDIR变量后面。
- 在latex文件开头的\documentclass里面直接加入
fontset=windows
属性,给编译器指定使用Windows方案的字体编译。 - 如果编译之后的pdf显示有问题,可以双击下载的三个字体进行安装。用于MacOS系统显示效果用。