像资本家一样使用字体

发布于 2023-03-10 16:24:22

需求

标题皮了一下,但内容不怎么离谱捏。本文的目标是让字体脱离系统,直接为TeX系统所用。如果你找字体只为给TeX排版使用,不怎么涉猎其他排版形式,此文或许会引起你的兴趣。

以往使用非自带字体的经验是——获取字体、安装、刷新系统缓存、 \setCJK***font{***}。把字体安装进电脑系统(本文主要指向Windows系统),之后因为字体更新(如Sarasa)或者发现自己下的是野鸡字体等各种原因想删除字体,都可能出现意料之外的麻烦。另一状况是,存在那种无法安装到系统的字体,比如某些来自Mac系统的ttc字体,或是其他编写参数和Windows系统不兼容的字体,也可以使用本文的方法,来绕过系统进行使用。

那还是从源头看看问题能否解决——不将字体安装进系统,但又能让TeX系统识别。其实TeX自带了那么多的用户能无障碍使用的字体,同时它们分明没安装到电脑系统里,说明此路完全可行。

关键操作

用everything正则搜索一下字体 ^STIXTwo.*\..tf$ 的位置,是在路径 C:\TeXLive\2022\texmf-dist\fonts\opentype\public\ 下,在此处新建一个文件夹就叫 AA 吧,将一个系统中没安装的字体 FZSSK.TTF (方正书宋) 放到 AA 中,然后运行 mktexlsr 刷新缓存。要改动生效的话,都需要 mktexlsr 刷新缓存。话说回来,刷这个缓存可比刷系统缓存快了不少。

如无意外,如下示例能够正常运行

% !TEX encoding = UTF-8
% !TeX program = xelatex
\documentclass{ctexart}
\setCJKmainfont{FZSSK.TTF}
\begin{document}
若不安装国家反诈中心,国家就无法保证您的财产安全
\end{document}

AA 文件夹下运行命令行 otfinfo -i 'FZSSK.TTF',可获取方正书宋的内部名称 FZShuSong-Z01,示例中导言区写成 \setCJKmainfont{FZShuSong-Z01} 也能识别该字体。

小小对比

fontspec 宏包提供的 Path 选项能指定字体路径,这个方式也能跳过安装。但使用时似乎只能用字体文件名指定、另外每次用的时候都要抄一遍 Path 有点精神污染。当然临时用一下完全没问题。

改进操作

下面是些小改进,但是感觉强迫症都治好了是怎么回事。

  • AA 文件夹里可以继续建文件夹——FZ, HY, AR, En, Ja, Zh, SC, TC,按自己的习惯分类就好(如果都塞在一起,那和系统字体文件夹就很像了)
  • 为了防止卸载TeXLive时误删字体,可以把 AA 文件夹放在其他盘区,比如D盘起个文件夹叫 TeX-Font,然后建立符号链接,相关命令行是(自定百度完善吧,不确定是否都能用)
mklink /D "C:\TeXLive\2022\texmf-dist\fonts\opentype\public\AA" "D:\TeX-Font"

mktexlsr 后能正常识别 D:\TeX-Font 里的字体。卸载TeXLive时 AA 这个超链接文件夹应该会消失,但无所谓,TeX-Font 还在呢,在新版TeXLive同个位置再弄一次符号链接即可。当然为避免不可预知的意外还是强烈建议备份您心爱的字体

0 条评论

发布
问题