Skip to content

字体配置

Huangrui Mo edited this page Feb 24, 2023 · 38 revisions

手动配置字体

ucasthesis 默认根据操作系统调用和配置中英文字体:

  • Windows(fontset=windows): 中文-SIM 类字体,英文-Times New Roman
  • MacOS (fontset=mac): 中文-SC 类字体,英文-Times New Roman
  • Linux (fontset=fandol): 中文-fandol 字体,英文-Times New Roman
  • Adobe (fontset=adobe):中文-Adobe 中文字体,英文-Times New Roman

如果想手动调用特定字体,只须在 Thesis.tex 中给定 fontset 选项即可 (需确保当前操作系统已安装 'fontset=选项' 所需要的相应字体):

\documentclass[twoside,fontset=选项]{Style/ucasthesis}%
'选项' 可为 'windows''mac''adobe''none''fandol'

如果使用 'fontset=adobe',则需:
    1)下载 'Adobe' 字体集(下载地址见下面),2)将字体安装至系统字库。
(Windows:双击各字体文件即可安装;Linux:自行查阅资料)

如果使用 'fontset=none',则需:
    1)下载 'Adobe' 字体集(下载地址见下面)
    2)在 'ucasthesis' 下建立 'Font' 文件夹
    3)将下载的字体文件放入 'Font' 文件夹。

数学公式字体的设定

为了和Word版本相近(许多人有此诉求),当前数学公式字体使用 XITS 。 如果需要改为传统的公式字体,可按如下方案修改:

image

然后在此后设定你需要的math字体,比如:

\setmathfont{Latin Modern Math}
\setmathfont{TeXGyrePagellaMath-Regular}[range={\mathbb}]

源自 Issue 406

Windows 系统编译得到的 PDF 无法拷贝文本

使用 Windows (fontset=windows) 系统字体时可能会导致拷贝 PDF 中的文本到其他文本编辑器时出现乱码,这个问题主要由在 Windows 字体库缺陷上使用加粗宋体所导致,其底层原因部分源于 xelatex 的一个 bug(ctex issue, tex.se, xetex bug),其可能导致论文查重率偏低而无法反映真实重复率,问题的解决可以考虑如下方案中的一个:

  1. 使用
最新版 ucasthesis (版本 >= 2019年4月24日) + 最新版 MikTex (>= MikTex 2.9.7)/Texlive (>=2019) + Windows 10 (可能需要)

初步测试表明在如上配置下,编译生成的 PDF 中的所有内容皆可正确复制拷贝而不产生乱码。

  1. 在 MacOS 系统而不是 Windows 系统上编译。

  2. 在 Windows 系统上安装 Adobe 字体并启用fontset=adobe,关于 fontset 的使用问题见上面的手动配置字体一节

Linux/Overleaf 系统的字体配置

在 Overleaf 上使用 ucasthesis 等价于在 Linux 系统上使用 ucasthesis,它们的核心要点为:

  1. 必须使用 'xelatex' 而不是 'pdflatex' 进行编译
  2. 'Overleaf/Linux' 上中文字体将默认调用开源的 Fandol 字集,其无法显示某些生僻字,如果需要纠正此问题,需配置 Adobe 字体,并使用 fontset=noneoverleaf/Linux)或 fontset=adobe (Linux,因为 Linux 可以将外部字体安装为系统字体,而 Overleaf 上用户无法修改系统字体),关于 fontset 的使用问题见上面的手动配置字体一节

Overleaf 的样例

  1. ucasthesis at Overleaf (注:若启用 fontset=none 需自行下载并放入 Adobe 字体)
  2. ucasproposal at Overleaf (注:若启用 fontset=none 需自行下载并放入 Adobe 字体)
  3. latexspine at Overleaf

Adobe 字体下载地址

Adobe 字体的下载只需 Google Adobe 字体的各个名字即可找到源,如:

Adobe 下载源1

AdobeSongStd-Light.otf

AdobeHeitiStd-Regular.otf

AdobeKaitiStd-Regular.otf

AdobeFangsongStd-Regular.otf

Adobe字体下载源2 (需对照上面的四个字体名,将下载的字体名称进行更正,去掉多余字符):

Adobe Github

当前 ucasthesis 的英文字体详细配置如下

  1. 若使用 pdflatex,为通过 newtxtext 宏包使用 TeX Gyre Termes 字体
  2. 若使用 xelatex,且字体文件 XITS-Regular.otf 不存在,为通过 newtxtext 宏包使用 TeX Gyre Termes 字体
  3. 若使用 xelatex,且字体文件 XITS-Regular.otf 存在,则使用 XITS 字体

TeX Gyre Termes 和 XITS 两款字体都是 Times-like 字体,其与 Times New Roman 的区别几可忽略,详细讨论可见 tex.se

需要指出的是,当出现 1. 和 2. 的情形时,ucasthesis 将不修改 sans font 为 times 字体,即标题中的英文文本将使用默认的 sans 字体,而不是像正文那样使用 times 字体。其解决办法为:

  1. 使用 xelatex 编译而不是 pdflatex 编译。
  2. 使用 xelatex 编译后标题中的英文仍不为 times 字体,则说明所使用的 LaTeX 编译器版本过旧,其解决办法为:
    1. 更新 LaTeX 编译器为最新版(推荐)。
    2. 若不更新编译器,则可手动设定英文字体采用 times 字体,即 在标题中使用 {\rmfamily English Text} 替换 在标题中使用 English Text

图中文本渲染错误出现异常加粗

问题的出现可有多方面的原因(详情见下面),如果不想修改图本身,则可考虑对每一个

\includegraphics{your_figure_name}

命令替换为为如下命令集合:

\begingroup
\fontspec{Times New Roman}{\color{white}.}%
\includegraphics{your_figure_name}
\endgroup

测试发现,此异常加粗主要缘于加粗图标题文字所导致,从而,如果不想采用上述方案,则可考虑取消对标题加粗即可,即在 artratex.sty 中将

\RequirePackage[font={small,bf},skip=8pt,labelsep=space]{caption}% options: [margin=10pt,labelfont=bf]

改为

\RequirePackage[font={small},skip=8pt,labelsep=space]{caption}% options: [margin=10pt,labelfont=bf]

详细的可能原因有:

  • 导出图时启用了透明度(transparency),导致 Adobe Reader PDF 阅读器的 anti-aliasing 处理异常, 而换其他阅读器或打印时不会有渲染问题。 此问题一般只发生于位图格式,如 .jpg 或 .png,解决办法就是去掉图的透明度(transparency)。
  • tex.se 源一tex.se 源二,若图格式为 .pdf 或 .eps 等矢量图时出现字体加粗问题,则为 xetex 的一个 bug 所导致(已对英文字体进行了修复,中文字体仍存在问题)。其解决方法为:
    • 输出图时选择不嵌入字体在图中,特别是 Windows 系统上所生成的图,比如模板所采用的 .pdf 图都没有嵌入字体,测试发现似乎不会出现异常加粗的问题。 检查 PDF 中字体的方法:
      • Windows: findstr FontName document.pdf
      • MacOS: strings document.pdf | grep -i FontName
      • Linux: pdffonts document.pdf
    • 避免在矢量图中使用中文可消除此问题。如果有大量中文,可考虑使用 .jpg 或 .png 等位图格式, 亦可消除问题。