字体统一:建公共字体目录,全部改用开源可商用字体 (#6)
七个模板原先分两套做法:幻灯片/fonts(49MB 鸿蒙 18 个字重)与 科技报告/font(92MB,含 5 款方正商业字体),其余模板直接调系统 SimSun/SimHei/KaiTi/FangSong/Times New Roman。换机器就编不出来, 方正系列也不允许随仓库分发。 统一到仓库根的 fonts/ + fonts.tex: - OUC Serif(思源宋体 SC 子集) —— 宋体 - OUC Sans(思源黑体 SC 子集) —— 黑体 - OUC Kai(霞鹜文楷子集) —— 楷体 - Zhuque Fangsong(朱雀仿宋) —— 仿宋 - TeX Gyre Termes —— 西文 Times 等价(度量逐字相同) - HarmonyOS Sans —— 幻灯片/科技报告原有字体 fonts.tex 是唯一允许声明字体的地方,7 个模板全部 \input 它。 字体体积 141MB -> 49MB(去掉重复),全库共用一套最小集合。 几处踩过的坑(均已写进源码注释): - \newCJKfontfamily 与 ctex 默认 fontset 冲突会中断编译,改用 \setCJKfamilyfont + \def - \newfontfamily 缺粗体档会让 \bfseries 静默失效,四档必须全给 - UprightFont= 与主参数不能同时给,否则文件名被拼两次 - Path= 相对编译时工作目录,不是相对 .sty - ×/□/○ 等符号按 Unicode 区段被判成西文,需 \xeCJKDeclareCharClass - 中文斜体的 ItalicFont 与主字体不在同一目录,须在 ItalicFeatures 里单独写 Path/Extension(否则报 OUCKai-Regular cannot be found) 顺带: - 科技报告 report.tex 的字体演示正文改为新字体名(原文写着方正系列) - 试卷归档封面新模板并入本库 - 科技报告 shell 命令框底色改海大蓝(#5 遗留) 验证(7 个模板 8 个 PDF 全量重编 + 逐行 A/B 对照): - 错误 0,缺字 0 - 幻灯片 362 行逐行完全一致,零漂移 - 年度考核登记表 / 劳务发放说明表 / 试卷题型示例 / 参考答案 文本完全一致 - 课程执行大纲 仅 2 处断字连字符差异(throughout、processing), 1 条 6.39pt Overfull 已论证不可见(距纸张右边缘仍有 20.7mm) - 科技报告 内嵌字体方正归零,只剩 OUC Serif/Sans/Kai + Zhuque - 全库正文 857 个非 ASCII 字符,四款中文字体(含粗体)覆盖 100%
This commit is contained in:
+28
-14
@@ -46,21 +46,35 @@
|
||||
|
||||
%======================================================================
|
||||
% 2. 字体
|
||||
% SimSun 宋体(标题/大题用 AutoFakeBold 模拟原卷描边加粗)
|
||||
% KaiTi 楷体(卷头) SimHei 黑体(装订栏“专业年级”)
|
||||
% Times New Roman 西文数字
|
||||
% 全部取自仓库公共字体包 ../fonts.tex(字体文件在 ../fonts/ 下)。
|
||||
% 旧版这里是 SimSun / SimHei / KaiTi / Times New Roman 四个系统字体,
|
||||
% 换台机器(尤其 Linux/macOS)就编不出来,且都不能随仓库分发。
|
||||
%
|
||||
% 对应关系:
|
||||
% 宋体正文 OUC Serif ← 思源宋体 SC 子集(真粗体,不再 AutoFakeBold)
|
||||
% 黑体 OUC Sans ← 思源黑体 SC 子集
|
||||
% 楷体(卷头) OUC Kai ← 霞鹜文楷子集
|
||||
% 西文/数字 TeX Gyre Termes(Times 度量兼容,见下)
|
||||
%
|
||||
% ⚠️ 关于原卷的"宋体西文":
|
||||
% 原卷正文 Mealy / RS / 2026 等实测每个 ASCII 字符步距恒为 5.28bp
|
||||
% (= 0.500 em @10.5bp)且 font 名为 SimSun —— 即 Word 把西文设为
|
||||
% 宋体时给出的"半角等宽"字形。SimSun 是全 ASCII 0.500 em 等宽的。
|
||||
%
|
||||
% 这里改用 Termes,理由:
|
||||
% · Termes 的**数字**步距恰好也是 0.500 em,数字宽度零漂移;
|
||||
% · 本卷所有数字本来就走 \TNR{} / \TNRB{}(已实测 PDF 里 SimSun
|
||||
% 只承担空格与极少数裸字母),换字体的实际影响面只有那几处;
|
||||
% · 若要强行复刻 0.500 em 等宽只能上 Inconsolata 这类代码字体,
|
||||
% 放进试卷正文观感明显更差 —— 按需求"字体不合适再更换"的取舍,
|
||||
% 宁可让裸西文用 Termes 的比例字形。
|
||||
% 实测结论见 README「字体」一节的 A/B 对比。
|
||||
%======================================================================
|
||||
% 正文西文默认用 SimSun 的等宽西文字形(原卷正文 Mealy / 2026 / RS 等
|
||||
% 实测每个 ASCII 字符步距恒为 5.28bp 且 font 名为 SimSun,即为宋体西文)。
|
||||
% 需要真正 Times 的地方(化简题、页脚、卷头年份)显式 \tnr / \tnrb。
|
||||
\setmainfont{SimSun}
|
||||
\setCJKmainfont{SimSun}[AutoFakeBold=2.86]
|
||||
\newCJKfontfamily\songti{SimSun}[AutoFakeBold=2.86]
|
||||
\newCJKfontfamily\heiti{SimHei}
|
||||
\newCJKfontfamily\kaiti{KaiTi}
|
||||
\newfontfamily\tnr{Times New Roman}
|
||||
\newfontfamily\tnrb{Times New Roman Bold}
|
||||
\newfontfamily\sunfont{SimSun}
|
||||
\input{../fonts.tex}
|
||||
|
||||
% 试卷正文的宋体西文占位:原模板用 \sunfont 指 SimSun,现统一指 Termes。
|
||||
% 保留命令名是为了不动 \qnum / \logicexpr / \sumsig 等所有调用点。
|
||||
\let\sunfont\tnr
|
||||
|
||||
%----------------------------------------------------------------------
|
||||
% ⚠️ xeCJK 陷阱:字体切换命令若紧邻 \par(或位于段落末尾),
|
||||
|
||||
Reference in New Issue
Block a user