CTeX-org / ctex-kit

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

消除经典不包含Script "CJK"警告 #593

Closed qiancy98 closed 2 years ago

qiancy98 commented 2 years ago

有个经典警告如下:

Package fontspec Warning: Font "FandolHei-Regular" does not contain requested
(fontspec)                Script "CJK".

查阅文档后我意识到是由\defaultCJKfontfeatures{Script=CJK}导致的. 能不能在ctex中设置, 如果使用fandol字体时取消该默认设置? (这应该是最根本的解决这个问题的方法, 我不知道为什么没有检索到... 大家提到的都是绕过这个warning....) 相似的issue: #397 CTeX-org/forum#34

比如说设置选项, 默认CJK, 但是也可以设置Script=hani什么的...

sikouhjw commented 2 years ago

[LaTeX 中文使用] 抑制 xeCJK/fontspec 警告 no-script "CJK"

qiancy98 commented 2 years ago

我看到这个了. 只是觉得如果增加选项是不是更简单一点... (还是说其实应该是字体属性里应该增加CJK, 而不是包本身需要调整...

syvshc commented 2 years ago

我看到这个了. 只是觉得如果增加选项是不是更简单一点... (还是说其实应该是字体属性里应该增加CJK, 而不是包本身需要调整...

上面 sikouhjw 发的文章里说了

归因 起因有两个,

xeCJK 为每个 CJK 字体默认添加特性 Script=CJK, 部分(中文)字体没有声明对应的特性。

总的来说,

xeCJK 的设定是合理的(luatex-ja 默认添加了相同特性),这是字体文件的问题,和 LaTeX 无关。 LaTeX 能做的,最多是抑制这类警告,假装问题不存在。

muzimuzhi commented 4 months ago

[LaTeX 中文使用] 抑制 xeCJK/fontspec 警告 no-script "CJK"from https://github.com/CTeX-org/ctex-kit/issues/593#issuecomment-950974164

我大幅重写了这篇文章,改为推荐用

\AddToHook{package/xeCJK/after}{\defaultCJKfontfeatures{}}

避免抛出警告。文章也改名为《[LaTeX 中文使用] 抑制 xeCJK/fontspec 警告 Font does not contain requested Script "CJK"》(知乎好像取消或放宽了标题长度限制)。

2024-05-02 Update: 跟随 fontspec v2.9b 对警告文本的修改,文章改名为《[LaTeX 中文使用] 抑制 xeCJK/fontspec 警告 Script 'CJK' not explicitly supported within font》。

可以在 3a253f2 查看相关的 fontspec 提交和带来的变动。

muzimuzhi commented 3 months ago

fontspec v2.9e (2024-05-11) 把相关 warning 降级为了 info,之前提到的各种方案已经不再需要。详见提交 latex3/fontspec@0469638 (be quiet when script/lang not found, 2024-05-11)。

如果需要兼容旧版 fontspec,可以使用 \IfPackageAtLeastTF{fontspec}{2024-05-11}{}{<old workaround>}.

我把前面提到的知乎文章更名为了 "[过时] <原标题>",并在文章开头处加了说明。