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

发布于 2025-02-03 01:43:20

原问题中,原题主需要输入“宋体”扩展H区的字体“𱠧”。

叶典网的检索结果:

image.png

在windows11系统中,有以下两种字体似乎均支持扩展H区的该字。

通过win11设置>个性化>字体

image.png

image.png

  • 蒙纳宋体扩展SimSun-ExtG,可见该链接的介绍,其在近期新版本的windows11才加入支持,需特别注意版本。
  • 天珩字体的TH-Tshyn-P1,可见该官方链接下载。

在本人的windows11中,系统版本如下:

版本 Windows 11 专业版
版本号 24H2
安装日期 ‎2025/‎1/‎29
操作系统版本 26100.2894
体验 Windows 功能体验包 1000.26100.36.0

使用xelatex编译,pdf中不显示该字。
image.png

使用lualatex编译,pdf中可以显示该字。
image.png

我的问题:

  1. 为何只有lualatex可行而xelatex不行,但这会导致xeCJK的一些设置例如AutoFallBack无法使用
  2. 原问题,对于处于unicode扩展B,G,H等各种可能的区段的字体,使用xelatex或者lualatex最完善的FallBack策略是什么, 即希望下面mwe可以正确被 FallBack?
\documentclass{ctexbook}
% \xeCJKsetup{AutoFallBack=true}
% \setCJKmainfont{SimSun-ExtG}
\setCJKmainfont{TH-Tshyn-P1}
% \setCJKmainfont[FallBack=SimSun-ExtG]{SimSun}
% \setCJKmainfont[FallBack=TH-Tshyn-P1]{SimSun}
\begin{document}

你好,world!

“𠳹”、“𤠠”、“𬬺”、“𱠧”、“𤝽”。

\end{document}

查看更多

关注者
1
被浏览
744
雾月
雾月 2天前
这家伙很懒,什么也没写!

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}

image.png

xeCJK 还支持为不同的字符区间设置不同的 CJK 字体,见 \xeCJKDeclareSubCJKBlock 的说明。

2.比较完善的策略是使用大而全的字库,或者为不同的字符区间设置不同的字体,然而这总是有时效的,因为 Unicode 没有收录“所有汉字”,每个版本都有可能添加新的 CJK 字符。

2 个回答
Sagittarius Rover
我要成为Typst糕手/(ㄒoㄒ)/~~

补充评论中的内容,来测试下(并非)开源的天珩字库

除了天珩标准字库外,还提供了以下的字体。

image.png

安装字体后,使用xeCJK文档中提到的方法,在powershell中输入:

image.png

fc-list -f "%{family}\n" :lang=zh > zhfont.txt

或者(需要安装typst,感觉字体族名管理比fc-list好)

typst fonts

可以得到有关的字体名如下:

TH-Feon
TH-Hak
TH-Joeng-H
TH-Joeng-J
TH-Khaai-PP0
TH-Khaai-PP2
TH-Khaai-TP0
TH-Khaai-TP16
TH-Khaai-TP2
TH-Ming-HP0
TH-Ming-JP0
TH-Ming-P2
TH-Sung-KP0
TH-Sung-KP2
TH-Sung-PP0
TH-Sung-PP2
TH-Sung-TP0
TH-Sung-TP2
TH-Sy-P0
TH-Sy-P16
TH-Sy-P2
TH-Times
TH-Times_cyrl
TH-Times_grek
TH-Times_telex
TH-Tshyn-P0
TH-Tshyn-P1
TH-Tshyn-P16
TH-Tshyn-P2

下面测试基于"楷体"和"黑体"字形测试

  • 天珩字库-正楷(TH-Khaai-T;最新版4.0.0)——TH-Khaai-T
  • 天珩字库-黑体(TH-Hak;最新版4.0.0)——TH-Hak

对于天珩正楷

  • TH-Khaai-TP0支持扩展H区字体"𱠧"
  • TH-Khaai-TP2支持扩展B区字体"𤝽"
\documentclass{ctexbook}
\xeCJKsetup{AutoFallBack=true}
\xeCJKDeclareCharClass{CJK}{"2EBF0->"2EE5F, "31350->"323AF} 
\setCJKmainfont{KaiTi}
\setCJKfallbackfamilyfont{\CJKrmdefault}{%
  {[AutoFakeBold,AutoFakeSlant]{TH-Khaai-TP2}},
  {[AutoFakeBold,AutoFakeSlant]{TH-Khaai-TP0}},
}
\begin{document}

扩展B区: “𤝽”.

扩展H区: “𱠧”.

\end{document}

image.png

对于天珩正黑TH-Hak

目前似乎仍然不支持“黑体”的扩展H区字符"𱠧"

\documentclass{ctexbook}
\xeCJKsetup{AutoFallBack=true}
\xeCJKDeclareCharClass{CJK}{"2EBF0->"2EE5F, "31350->"323AF} 
\setCJKmainfont{SimHei}
\setCJKfallbackfamilyfont{\CJKrmdefault}{%
  {[AutoFakeBold,AutoFakeSlant]{TH-Hak}},
}
\begin{document}

扩展B区: “𤝽”.

扩展H区: “𱠧”.

\end{document}

image.png

还需另寻他法,但是缺的也只是支持的字体,而不是xeCJK调用的方法(逃)。


打算趁此机会多认识/熟悉点儿CJK字体(TBC)

撰写答案

请登录后再发布答案,点击登录

发布
问题

分享
好友

手机
浏览

扫码手机浏览