看此评论;我参与了一个项目,需要在 Mac 和 Linux(通常是 Fedora 或 Debian 或 Ubuntu)上自动编译各种语言文件,但默认字体显然完全不一样。我有什么办法可以确保这种可移植性,而无需用户安装新字体?
目前显然这在 Fedora 上有效:
\usepackage[noindent,UTF8]{ctexcap}
\setCJKmainfont{AR PL UMing CN}
\setCJKsansfont{WenQuanYi Zen Hei}
\setCJKmonofont{WenQuanYi Zen Hei Mono}
但我需要改为例如
\setCJKmainfont[BoldFont=STHeiti,ItalicFont=STKaiti]{STSong}
\setCJKsansfont[BoldFont=STHeiti]{STXihei}
\setCJKmonofont{STFangsong}
(从这个答案) 但我知道 Mac 还有很多其他中文字体可用。
理想情况下,应该有一个带有某种后备选项的解决方案,但我对 xecjk(或 cjk)一无所知,而且无论如何,该选项(如这里)似乎与何时更相关人物字体中不存在,当字体不存在。
谢谢!
答案1
便携且一致的解决方案
Fandol 字体是用于在 TeX 中排版简体中文的可靠的便携式字体。
Fandol 字体并不完美:与其他商业字体相比,Fandol 字体的字符集受到一定限制,标点符号需要进行调整。
幸运的是,Fandol 有一系列完整的 OpenType 格式的中文字体,并且排版设计得很好。
% !TEX program = XeLaTeX
% !TEX encoding = UTF-8
\documentclass[UTF8,nofonts]{ctexart}
\setCJKmainfont[BoldFont=FandolSong-Bold.otf,ItalicFont=FandolKai-Regular.otf]{FandolSong-Regular.otf}
\setCJKsansfont[BoldFont=FandolHei-Bold.otf]{FandolHei-Regular.otf}
\setCJKmonofont{FandolFang-Regular.otf}
\begin{document}
\begin{tabular}{|l|l|l|l|}
\hline
& \multicolumn{3}{c|}{Series/Shape} \\ \cline{2-4}
Family & \verb=\mdseries= & \verb=\bfseries= & \verb=\mdseries\itshape= \\ \hline
\verb=\rmfamily= & 宋体 & \textbf{粗宋体} & \textit{楷体} \\
\verb=\sffamily= & \textsf{黑体} & \textsf{\textbf{粗黑体}} & \\
\verb=\ttfamily= & \texttt{仿宋体} &&\\ \hline
\end{tabular}
\end{document}
问题是,大多数中文字体都是昂贵的商业字体,你几乎没有选择免费中文字体。此外,Fandol 字体包唯一的选择如果您使用 XeTeX 或 LuaTeX,则已预装在 TeX Live(或 MacTeX、MiKTeX)中。因此,它现在是在 TeX 中排版简体中文文档的唯一可移植方法。
是的,Arphic 也有字体,但CJK
TeX 发行版只提供 Type1 格式的子字体。Arphic 只提供简体中文的两个系列(gbsn
和),或繁体中文的两个对应系列(和)。gkai
bsmi
bkai
是否有某种针对稀有字形的后备选项?
不。我们没有足够的字体可用。
现在我们有一些适用于大字符集的优质免费字体。例如繁體中文字体。但它们并没有预装在 TeX 发行版中,也没有预装在操作系统中。
本土的东西吗?
是的,这是可能的。在开发者版本(ver 2.x)的ctex
包中,我们定义了几种不同的字体集,如果您愿意,包将检测操作系统并选择本机字体集。
- 对于 Mac,系统会自动选择 SinoType 字体。
- Windows 自动选择中意字体。
- 否则会自动选择 Fandol 字体。(不,我们不使用不完整的 Arphic 字体作为默认字体,更不用说 WenQuanYi 了。)
我们确实提供了选择 Arphic 和 WenQuanYi 字体的选项(fontset=ubuntu
选项),也有 Adobe 字体和 Founder 字体的选项。