xeCJK:同一字体无法分别使用横排和竖排
检查
- [x] 已在 issues 中进行搜索(包括已关闭的问题)
编译环境
-
操作系统
- [ ] Windows 10
- [ ] Windows 8/8.1
- [ ] Windows 7
- [ ] 更早版本的 Windows
- [x] macOS
- [ ] Linux(请附发行版)
-
TeX 发行版
- [x] TeX Live 2020
- [ ] MiKTeX
- [ ] CTeX 套装 2.9.2.164
- [ ] 更早版本的 CTeX 套装
描述问题
问题来源于尝试用仿宋在文档的不同位置分别使用横排和竖排。
\documentclass{article}
\usepackage{xeCJK}
\newCJKfontfamily\fangsong{FandolFang-Regular.otf}
\newCJKfontfamily\fangsongvert{FandolFang-Regular.otf}[RawFeature={vertical}]
\newcommand\testa{%
\begingroup
\fangsong
劳仑衣普桑\par
\endgroup
}
\newcommand\testb{%
\begingroup
\fangsongvert
% \fangsong\addCJKfontfeatures*{RawFeature={vertical}}%
认至将指点\par
\endgroup
}
\begin{document}
\testa
\testb
\end{document}
编译的结果是

但是如果交换 \testa 和 \textb 的位置,结果是:

所以在同一字体上定义的两个命令,虽然设置了不同的 RawFeature,但是只有第一个才会启用。 那么有没有办法在两处分别使用横排和竖排?
我将 FandolFang-Regular.otf 换成 macOS 的 STFangsong 居然正常工作:
另外换成 Noto Serif CJK SC、Windows 的 FangSong 也正常,但是换成 FandolFang(文件名换成字体名) 却不行。
应该是 XeTeX 的问题。
% !TeX program = XeTeX
% !TeX encoding = UTF-8
\font\fnth="[FandolFang-Regular.otf]"\relax
\font\fntv="[FandolFang-Regular.otf]:vertical"\relax
\fnth 劳仑衣普桑
\fntv 劳仑衣普桑
\bye

这个问题应该已经修复了,我用 This is XeTeX, Version 3.141592653-2.6-0.999994 (TeX Live 2022) 这个版本的 xelatex 编译,效果是正确的。

这个问题应该已经修复了,我用
This is XeTeX, Version 3.141592653-2.6-0.999994 (TeX Live 2022)这个版本的xelatex编译,效果是正确的。
确实已经修复。
没找到是哪个提交修复的…… https://github.com/TeX-Live/texlive-source/commits/trunk/texk/web2c/xetexdir
在 overleaf.com 上测试,
- texlive 2020 (
This is XeTeX, Version 3.14159265-2.6-0.999992 (TeX Live 2020)) 能复现 - texlive 2021 (
This is XeTeX, Version 3.141592653-2.6-0.999993 (TeX Live 2021)) 不能
XeTeX 0.999993 的主要修改是 opentype math kerning, https://github.com/TeX-Live/texlive-source/commit/026abdcdb1a7fde4a034ef2f9c2b2f621630c2e9 .