CTeX-org / ctex-kit

Macro Packages and Scripts for Chinese TeX users
982 stars 124 forks source link

xeCJK: 升级 fontspec v2.6j 后无法编译 #397

Closed stone-zeng closed 5 years ago

stone-zeng commented 5 years ago

示例:

\documentclass{article}
\usepackage{xeCJK}
\setCJKmainfont{FandolSong}  % 默认载入 FandolSong
\begin{document}
Hello, world! 你好,世界!
\end{document}

报错信息为:

Runaway argument?
\int_set:Nn \l_tmpb_int {\XeTeXOTcountfeatures \l_fontspec_font \l__fontspec_script_int \ETC.
! File ended while scanning use of \__fontspec_strip_leading_sign:Nw.
<inserted text>
                \par
<*> 8

? 

问题似乎是 Fandol 系列字体没有 Script=CJK 的信息,展开出了点问题(还未仔细排查)。换成 SimSun、Microsoft YaHei 等则可以正常编译。

版本信息:

zepinglee commented 5 years ago

我也手贱升级了一发【滑稽】

zepinglee commented 5 years ago

我试了一下把 xeCJK\defaultCJKfontfeatures { Script = CJK } 这一行去掉就不报错了。

另外我比较奇怪的是,SimSun, SimHei, Songti SC, Source Han Serif 等字体的 script 信息都只有 Simplified Han,为何 fontspec 的 script 却这个选项?

stone-zeng commented 5 years ago

OpenType 的 Script Tag 只有 hani (CJK Ideographic),Language Tag 才分 ZHH/ZHS/ZHT (Chinese Hong Kong SAR/Simplified/Traditional)。

PS:小心空格(tag 一定有 4 个 char)

zepinglee commented 5 years ago

原来我用了假的 FontBook……

screen shot 2019-01-10 at 10 31 57 pm
muzimuzhi commented 5 years ago

OpenType 的 Script Tag 只有 hani (CJK Ideographic),Language Tag 才分 ZHH/ZHS/ZHT (Chinese Hong Kong SAR/Simplified/Traditional)。

ref:

RuixiZhang42 commented 5 years ago

@muzimuzhi OpenType 的 Script Tag 的确只有 hani微软 docs 与之对应的 Script 名称为 CJK Ideographicfontspec 里面的那个 Script=CJK 的写法完全是为了 backwards compatibility。

@Stone-Zeng 跟我之前报告 CTeX 很多文档编译不通过很类似,这似乎不是 xeCJK 的问题。我那次是 LaTeX3 kernel 的问题,这次是 fontspec 的问题:

% !TeX program = XeLaTeX
\documentclass{article}
\usepackage{fontspec}
\setmainfont{FandolSong}[Script=CJK]
\begin{document}
Hello, world! 你好,世界!
\end{document}

同样编译失败:

Package fontspec Warning: Font 'FandolSong' does not contain script 'CJK'.

)
Runaway argument?
\int_set:Nn \l_tmpb_int {\XeTeXOTcountfeatures \l_fontspec_font \l__fontspec_sc
ript_int \ETC.
! File ended while scanning use of \__fontspec_strip_leading_sign:Nw.
<inserted text> 
                \par 

已报告至 fontspec issue 346

stone-zeng commented 5 years ago

wspr 终于在 fontspec v2.6l 里面把这个修好了……

zepinglee commented 5 years ago

赞!

RuixiZhang42 commented 5 years ago

之前的 v2.6l 修好了 Fandol,但是修崩了别的西文字体,也修崩了数学字体。几个小时前发布的 v2.7 似乎修好了西文字体与数学字体。

RuixiZhang42 commented 5 years ago

v2.7 好像又修崩了……

RuixiZhang42 commented 5 years ago

确认 fontspec v2.7 修崩了 Fandol 这类没有缺省 Script 的字体,如果直接将 Script=CJK 传递给 \set...font,那么 CJK 这个字符串会在 log 文件中凭空消失,然后出现在 PDF 里(!!!)。

留这个 issue 到 v2.7a 出现在 TeX Live 与 MiKTeX 之后再关。

RuixiZhang42 commented 5 years ago

fontspec v2.7a 已经上线(MiKTeX)至少三天了,终于可以放心关 issue 了。