字体统一:建公共字体目录,全部改用开源可商用字体 (#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:
+13
-5
@@ -18,9 +18,12 @@ xelatex 年度考核登记表.tex
|
||||
xelatex 年度考核登记表.tex # 跑两遍,第二遍取到正确页码
|
||||
```
|
||||
|
||||
需要 **XeLaTeX**(用 fontspec + xeCJK 调系统字体),并安装:
|
||||
需要 **XeLaTeX**(用 fontspec + xeCJK),并安装:
|
||||
`ctex`、`geometry`、`fontspec`、`xeCJK`、`tabularray`。
|
||||
|
||||
字体不需要安装 —— 全部来自仓库公共字体包 `../fonts/`(由 `../fonts.tex` 加载),
|
||||
详见 [`../fonts/README.md`](../fonts/README.md)。**不再依赖系统里的宋体/黑体/仿宋**。
|
||||
|
||||
实测环境:TeX Live 2022 + `tabularray 2022A`。用 LuaLaTeX 理论上也行,但未验证。
|
||||
|
||||
产出 2 页、A4、正反面打印正好。
|
||||
@@ -43,9 +46,14 @@ xelatex 年度考核登记表.tex # 跑两遍,第二遍取到正确页码
|
||||
\newcommand{\khpost}{{\fangsong ×××}} % 所聘岗位
|
||||
```
|
||||
|
||||
> **`{\fangsong ...}` 不能去掉。** 占位符 `×` 是 U+00D7,fontspec 会把它当
|
||||
> ASCII 交给 Times New Roman,而那儿的 `×` 是 **1em 宽的数学乘号**
|
||||
> (14pt 下一个占 14pt),几个就能撑破整列。包上 `\fangsong` 才会按全角汉字宽度排。
|
||||
> **`{\fangsong ...}` 不能去掉。** 占位符 `×` 是 U+00D7,xeCJK 默认按 Unicode
|
||||
> 区段把它判成**西文**,交给 fontspec 的西文字体(Termes/Times),而那儿的
|
||||
> `×` 宽度与汉字不一致,几个就能撑破整列。
|
||||
>
|
||||
> **更好的做法**:`../fonts.tex` 里已经全局加了
|
||||
> `\xeCJKDeclareCharClass{CJK}{"00D7}`,把 `×` 归入 CJK 字符类 ——
|
||||
> 于是它自动按汉字全角宽度排,**不必再包 `\fangsong` 也不会撑破**。
|
||||
> 这是本次字体改造顺带修掉的老 bug(原注释的修法从未真正生效过)。
|
||||
|
||||
### 年度总结
|
||||
|
||||
@@ -122,7 +130,7 @@ Word 是靠 `tblPr/jc=center` 把这张表“压”进页边距里的。
|
||||
| 「师德考核结果」首列 | `师师德考核结果` | `师德考核结果` | docx 原文首字重复(WPS 竖排遗留),已按正常写法更正 |
|
||||
| 「单位年度考核建议档次」首列 | `单单位年度考核建议档次` | `单位年度考核建议档次` | 同上 |
|
||||
| 单元格内边距 | 左右各 108 twips(1.905 mm) | 0 | c10 只有 1.41 mm,比两倍内边距还窄,统一内边距会算出负宽。代价是文字可贴竖线,但全部单元格本就水平居中,观感一致 |
|
||||
| 未勾选框 | Wingdings `¨`(char 0x00A8) | U+25A1 `□` | Wingdings 在 Linux/macOS 上不可靠。仿宋、黑体都有 `□`,**宋体没有** —— 改正文为宋体时需另指方框字体 |
|
||||
| 未勾选框 | Wingdings `¨`(char 0x00A8) | U+25A1 `□` | Wingdings 在 Linux/macOS 上不可靠。仓库里的仿宋、黑体、宋体都含 `□`;且 `../fonts.tex` 已把 U+25A1 归入 CJK 类,不会再落到不含该字的西文字体上 |
|
||||
| 电子签名图片 | 内嵌两张手写签名 JPEG | 无 | 模板不含真人信息 |
|
||||
|
||||
## 校验方法(想改版式时照这个验)
|
||||
|
||||
Reference in New Issue
Block a user