1.这是因为扩展 H 区直到 2022 年 9 月的 Unicode 15 才引入,xeCJK 还没有更新到这个版本。
自己设置一下就好了。
\documentclass{ctexbook}
\xeCJKsetup{AutoFallBack=true}
\xeCJKDeclareCharClass{CJK}{"2EBF0->"2EE5F, "31350->"323AF} % Ext-I, Ext-H
\setCJKmainfont{SimSun}
\setCJKfallbackfamilyfont{\CJKrmdefault}{
{[AutoFakeBold,AutoFakeSlant]{SimSun-ExtB}},
{[AutoFakeBold,AutoFakeSlant]{SimSun-ExtG}},
}
\begin{document}
你好,world!
“𠳹”、“𤠠”、“𬬺”、“𱠧”、“𤝽”。
\end{document}
xeCJK 还支持为不同的字符区间设置不同的 CJK 字体,见 \xeCJKDeclareSubCJKBlock 的说明。
2.比较完善的策略是使用大而全的字库,或者为不同的字符区间设置不同的字体,然而这总是有时效的,因为 Unicode 没有收录“所有汉字”,每个版本都有可能添加新的 CJK 字符。




问 如何输入扩展H区的中文生僻字?