Fixed a bug of "makespa"#756
Conversation
|
所以是,之前的字体名刚好都不包含 (引用内容时,建议文字形式优先;实在要发图片时,建议保持图片比例一致,这样图里的文字大小也一致) |
|
之前的 |
支持,文字形式的内容更容易被搜索引擎检索到(考虑到后来人需要检索类似错误时带来的便利性)。 第一幅图的文本形式内容(在windows11上测试的结果)为: |
|
BTW, make 文件中 对话记录:
其实就是是这个脚本旧了,以至于 Fandol 字体 filename 更新,这里都没来得及更新 :-)
|
Fixed in Commit #be574c4 |
补充:
这说明这个 |
Hope to merge asap. |
Review感谢 @myhsia 和 @Explorer-cc 的调查和测试!问题确实存在,但第一处修改有回归风险,需要调整。 Fandol 文件名修正:✅ 没问题
字体加载语法
|
| 类型 | 示例 | "#2" |
"[#2]" |
|---|---|---|---|
| TeX 目录树字体 | FandolSong-Regular, FZShuSong-Z01 |
可能失败 | ✅ kpathsea 查文件 |
| 系统字体(含空格) | Songti SC Light, Noto Serif CJK SC, Microsoft YaHei, HYShuSongEr S |
✅ fontconfig 查名称 | ❌ 找不到同名文件 |
改为 "[#2]" 会修复 TeX 目录树字体(Fandol、LXGW 等),但会破坏所有系统字体条目(macOS、Ubuntu、Windows、汉仪),因为 kpathsea 找不到名为 Songti SC Light.otf 或 Microsoft YaHei.otf 的文件。
CI 三平台通过是因为 CI 不测试 SPA 生成(手动操作),仅测试使用已有 .spa 文件的编译结果。
建议
需要一个能同时处理两种字体来源的方案,例如:
- 为两类条目使用不同的加载路径
- 或统一将所有条目转为其中一种形式(但系统字体的文件名跨平台不一致,难以统一为文件名)
|
@Liam0205 在 #62cefa5 中, 我添加了一个判断: 如果当前字体 (是的, 我还做了 我只有 macOS, 所以只测试了 (base) myhsia@Mingyus-iMac unpacked % xetex ctex-spa-make.tex
This is XeTeX, Version 3.141592653-2.6-0.999998 (TeX Live 2026) (preloaded format=xetex)
restricted \write18 enabled.
entering extended mode
(./ctex-spa-make.tex (./ctex-spa-macro.tex
(/usr/local/texlive/2026/texmf-dist/tex/latex/l3kernel/expl3-generic.tex
(/usr/local/texlive/2026/texmf-dist/tex/latex/l3kernel/expl3-code.tex)
(/usr/local/texlive/2026/texmf-dist/tex/latex/l3backend/l3backend-xetex.def)))
(|kpsewhich FandolSong-Regular.otf) (|kpsewhich FandolSong-Regular.ttf)
(|kpsewhich FandolSong-Bold.otf) (|kpsewhich FandolSong-Bold.ttf)
(|kpsewhich FandolHei-Regular.otf) (|kpsewhich FandolHei-Regular.ttf)
(|kpsewhich FandolHei-Bold.otf) (|kpsewhich FandolHei-Bold.ttf)
(|kpsewhich FandolKai-Regular.otf) (|kpsewhich FandolKai-Regular.ttf)
(|kpsewhich FandolFang-Regular.otf) (|kpsewhich FandolFang-Regular.ttf)
(|kpsewhich Songti SC Light.otf) (|kpsewhich Songti SC Light.ttf)
(|kpsewhich Songti SC Bold.otf) (|kpsewhich Songti SC Bold.ttf)
(|kpsewhich Heiti SC Medium.otf) (|kpsewhich Heiti SC Medium.ttf)
(|kpsewhich Heiti SC Light.otf) (|kpsewhich Heiti SC Light.ttf)
(|kpsewhich Kaiti SC.otf) (|kpsewhich Kaiti SC.ttf)
(|kpsewhich Kaiti SC Bold.otf) (|kpsewhich Kaiti SC Bold.ttf)
(|kpsewhich STFangsong.otf) (|kpsewhich STFangsong.ttf)
(|kpsewhich Baoli SC.otf) (|kpsewhich Baoli SC.ttf)
(|kpsewhich Yuanti SC Light.otf) (|kpsewhich Yuanti SC Light.ttf)
(|kpsewhich Yuanti SC Regular.otf) (|kpsewhich Yuanti SC Regular.ttf)
(|kpsewhich PingFang SC.otf) (|kpsewhich PingFang SC.ttf)
(|kpsewhich PingFang SC Semibold.otf) (|kpsewhich PingFang SC Semibold.ttf) )
No pages of output.
Transcript written on ctex-spa-make.log.
(base) myhsia@Mingyus-iMac unpacked % @Explorer-cc 如果有时间的话你也可以测试一下 Windows 下的表现, 只保留 |
|
顺便替换了几处 Guard: |
|
@Liam0205 我在手册的 implementation 里简要描述了这个判断的函数, 并写了 |
我好像记得有几个位置是故意没用 |
|
@Liam0205
嗯嗯我知道 有几个地方 是 `@@=ctex_ltj`, 我一开始无脑替换然后 action failed 了,后面又commit了几处恢复了 :-)
经检查: 截止到目前的提交, 我替换的没在 `ctex_ltj` 这个guard 范围内
|
- \changes{v2.?.?} → v2.6.0
- 修正变量声明中重复的 otf_tl 为 ttf_tl
|
@Liam0205 新增函数的 implementation 部份排版已完成, actions 已通过 |




Windows / *nix 上在制作
.spa时都会出现如下错误正确用法的_影子_可在
xetex文档 pp. 10 查到:xetex manual
\font\x="[CharisSIL-Italic.ttf]" at 24pt \x具体复现与 Debug 细节,可参见 LaTeX 技术交流群记录(对于任何字体都会有,包括
fandol)和 @Explorer-cc 的讨论
此处省略部分问答
这里的报错日志见 4 楼 @Explorer-cc 贴出的.
简述解决方法:注意到 xetex manual
\font\x="[CharisSIL-Italic.ttf]" at 24pt \x中的"[字体文件]"这种代码格式,over.