diff options
author | Karl Berry <karl@freefriends.org> | 2020-06-06 21:13:35 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2020-06-06 21:13:35 +0000 |
commit | 8cc59967284bfbd130d8d906ead1db117b8f253c (patch) | |
tree | 4a9f4118e691bed652651a754eef03b07799eef1 /Master/texmf-dist/source/xelatex | |
parent | 596c6ae45e88c08e1b3f42b8286862ae3a9665fa (diff) |
xecjk (6jun20)
git-svn-id: svn://tug.org/texlive/trunk@55443 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/source/xelatex')
-rw-r--r-- | Master/texmf-dist/source/xelatex/xecjk/xeCJK.dtx | 264 |
1 files changed, 183 insertions, 81 deletions
diff --git a/Master/texmf-dist/source/xelatex/xecjk/xeCJK.dtx b/Master/texmf-dist/source/xelatex/xecjk/xeCJK.dtx index 998b4d5ca1a..c709d37e439 100644 --- a/Master/texmf-dist/source/xelatex/xecjk/xeCJK.dtx +++ b/Master/texmf-dist/source/xelatex/xecjk/xeCJK.dtx @@ -194,7 +194,7 @@ Copyright and Licence %<*package|config|fntef|listings|xunicode|xunextra> %<!(config|xunextra)>\NeedsTeXFormat{LaTeX2e} %<!(config|xunextra)>\RequirePackage{expl3} -%<+!driver>\GetIdInfo$Id: xeCJK.dtx b971c22 2020-05-01 21:10:43 +0800 Qing Lee <sobenlee@gmail.com> $ +%<+!driver>\GetIdInfo$Id: xeCJK.dtx 94baac7 2020-06-06 23:21:05 +0800 Qing Lee <sobenlee@gmail.com> $ %<package> {Typesetting CJK scripts with XeLaTeX} %<config> {Configuration file for xeCJK package} %<fntef> {xeCJK font effect} @@ -207,17 +207,18 @@ Copyright and Licence %<listings>\ProvidesExplPackage{xeCJK-listings} %<xunicode>\ProvidesExplPackage{xunicode-addon} %<xunextra>\ProvidesExplFile{xunicode-extra.def} -%<!driver> {\ExplFileDate}{3.8.3}{\ExplFileDescription} +%<!driver> {\ExplFileDate}{3.8.4}{\ExplFileDescription} %</package|config|fntef|listings|xunicode|xunextra> %<*driver> \documentclass{ctxdoc} +\usepackage{xeCJKfntef} \xeCJKDeclareSubCJKBlock{SP} { "2E3A , "301C , "30A0 , "FF65 } \xeCJKDeclareSubCJKBlock{Ext-B} { "20000 -> "2A6DF } \xeCJKDeclareSubCJKBlock{Hangul} { "1100 -> "11FF, "3130 -> "318F, "A960 -> "A97F, "AC00 -> "D7AF } -\setCJKmainfont[SP, Language=Chinese Simplified]{Source Han Serif} +\setCJKmainfont[SP, Language=Chinese Simplified]{Source Han Serif SC} \setCJKmainfont[Ext-B]{SimSun-ExtB} -\setCJKmainfont[Hangul, Script=Hangul, Language=Korean]{Source Han Serif} +\setCJKmainfont[Hangul, Script=Hangul, Language=Korean]{Source Han Serif K} \newlist{psopt}{description}{3} \setlist[psopt]{% font=\mdseries\ttfamily, align=right, @@ -233,7 +234,7 @@ Copyright and Licence { \par \begingroup - \CJKfontspec[Language=Chinese ~ Simplified]{Source ~ Han ~ Serif} + \CJKfontspec[Language=Chinese ~ Simplified]{Source ~ Han ~ Serif ~ SC} \tl_clear:N \l_tmpa_tl \int_zero:N \l_tmpa_int \tl_set:Nx \l_tmpb_tl { \tl_to_str:n { c__xeCJK_#2_chars_clist } } @@ -286,7 +287,7 @@ Copyright and Licence % \changes{v3.8.0}{2020/02/09}{清理过时的兼容性补丁代码。} % \changes{v3.8.3}{2020/04/07}{删除 \texttt{\_nopar}。} % -% \CheckSum{10799} +% \CheckSum{10884} % \GetFileId{xeCJK.sty} % % \title{\bfseries\pkg{xeCJK} 宏包} @@ -1822,11 +1823,13 @@ Copyright and Licence % \end{macro} % % \begin{macro}[int]{\xeCJK_font_gset_to_current:N} +% \changes{v3.8.4}{2020/06/04}{不缓存 \tn{nullfont}。} % |#1| 是控制序列的名字,令它等于当前字体命令。 % \begin{macrocode} -\cs_new_protected:Npn \xeCJK_font_gset_to_current:N #1 - { \exp_after:wN \cs_gset_eq:NN \exp_after:wN #1 \tex_the:D \tex_font:D } -\cs_generate_variant:Nn \xeCJK_font_gset_to_current:N { c } +\cs_new_protected:Npn \xeCJK_font_gset_to_current:N + { \exp_after:wN \@@_font_gset_to_current_aux:NN \tex_the:D \tex_font:D } +\cs_new_protected:Npn \@@_font_gset_to_current_aux:NN #1#2 + { \cs_if_eq:NNF #1 \tex_nullfont:D { \cs_gset_eq:NN #2#1 } } % \end{macrocode} % \end{macro} % @@ -3184,6 +3187,7 @@ Copyright and Licence \xeCJK_select_font: \xeCJK_clear_inter_class_toks:nn {#1} { CJK } \xeCJK_clear_Boundary_and_CJK_toks: + \xeCJK_fallback_symbol:NN \CJKsymbol } \xeCJK_inter_class_toks:nnn { CJK } {#1} { \xeCJK_class_group_end: } @@ -3331,6 +3335,7 @@ Copyright and Licence \xeCJK_class_group_begin: \xeCJK_clear_Boundary_and_CJK_toks: \xeCJK_select_font: + \xeCJK_fallback_symbol:NN \CJKsymbol } % \end{macrocode} @@ -3654,16 +3659,28 @@ Copyright and Licence % \begin{macro}[int]{\xeCJK_CJK_and_CJK:N} % \begin{macrocode} \cs_new_protected:Npn \xeCJK_CJK_and_CJK:N - { \CJKglue \CJKsymbol } + { + \CJKglue + \xeCJK_fallback_symbol:NN + \CJKsymbol + } % \end{macrocode} % \end{macro} % % \hypertarget{fl-fr-others}{} % \begin{macrocode} \xeCJK_inter_class_toks:nnn { FullLeft } { CJK } - { \xeCJK_FullLeft_and_CJK: \CJKsymbol } + { + \xeCJK_FullLeft_and_CJK: + \xeCJK_fallback_symbol:NN + \CJKsymbol + } \xeCJK_inter_class_toks:nnn { FullRight } { CJK } - { \xeCJK_FullRight_and_CJK: \CJKsymbol } + { + \xeCJK_FullRight_and_CJK: + \xeCJK_fallback_symbol:NN + \CJKsymbol + } \seq_map_inline:Nn \g_@@_non_CJK_class_seq { \clist_map_inline:nn { FullLeft , FullRight } @@ -4046,6 +4063,7 @@ Copyright and Licence \xeCJK_clear_Boundary_and_CJK_toks: \tl_gset:Nn \g_@@_last_punct_tl {#2} \@@_punct_rule:NN \c_@@_left_tl #2 + \xeCJK_fallback_punct_symbol:NN \CJKpunctsymbol #2 } \cs_new_protected:Npn \@@_Default_and_FullLeft_glue:N #1 @@ -4062,6 +4080,7 @@ Copyright and Licence \tl_gset:Nn \g_@@_last_punct_tl {#1} \@@_punct_rule:NN \c_@@_left_tl #1 \@@_select_punct_font: + \xeCJK_fallback_punct_symbol:NN \CJKpunctsymbol #1 } \cs_new_protected:Npn \@@_CJK_and_FullLeft_glue:N #1 @@ -4083,6 +4102,7 @@ Copyright and Licence \xeCJK_clear_Boundary_and_CJK_toks: \tl_gset:Nn \g_@@_last_punct_tl {#1} \@@_punct_rule:NN \c_@@_left_tl #1 + \xeCJK_fallback_punct_symbol:NN \CJKpunctsymbol #1 } % \end{macrocode} @@ -4452,6 +4472,7 @@ Copyright and Licence \xeCJK_get_punct_kerning:oN \g_@@_last_punct_tl #1 \@@_punct_kern:NN \g_@@_last_punct_tl #1 \tl_gset:Nn \g_@@_last_punct_tl {#1} + \xeCJK_fallback_punct_symbol:NN \CJKpunctsymbol #1 } % \end{macrocode} @@ -4478,6 +4499,7 @@ Copyright and Licence \xeCJK_get_punct_kerning:oN \g_@@_last_punct_tl #1 \xeCJK_punct_kern:NN \g_@@_last_punct_tl #1 \tl_gset:Nn \g_@@_last_punct_tl {#1} + \xeCJK_fallback_punct_symbol:NN \CJKpunctsymbol #1 } % \end{macrocode} @@ -4536,7 +4558,11 @@ Copyright and Licence % % \begin{macro}[int]{\xeCJK_FullRight_symbol:N} % \begin{macrocode} -\cs_new:Npn \xeCJK_FullRight_symbol:N { \CJKpunctsymbol } +\cs_new_protected:Npn \xeCJK_FullRight_symbol:N + { + \xeCJK_fallback_punct_symbol:NN + \CJKpunctsymbol + } % \end{macrocode} % \end{macro} % @@ -5064,8 +5090,11 @@ Copyright and Licence } { \xeCJK_replace_inter_class_toks:nnnn {##1} { #1/#2 } - { \CJKsymbol } - { \@@_switch_font:nn {#1} {#2} \CJKsymbol } + { \xeCJK_fallback_symbol:NN } + { + \@@_switch_font:nn {#1} {#2} + \xeCJK_fallback_symbol:NN + } } } \xeCJK_copy_inter_class_toks:nnnn { #1/#2 } { #1/#2 } {#1} {#1} @@ -5271,7 +5300,7 @@ Copyright and Licence % 一些用于记录的辅助函数。 % \begin{macrocode} \cs_new:Npn \@@_punct_csname:n #1 - { c_@@_\l_xeCJK_current_font_tl/\l_xeCJK_punct_style_tl/#1/tl } + { c_@@_\l_xeCJK_current_punct_font_tl/\l_xeCJK_punct_style_tl/#1/tl } \cs_new:Npn \@@_use_punct_dim:nN #1#2 { \use:c { \@@_punct_csname:n { dim/#1/#2 } } } \cs_new:Npn \@@_use_punct_dim:nNN #1#2#3 @@ -5446,6 +5475,7 @@ Copyright and Licence { \group_begin: \xeCJK_select_punct_font: + \xeCJK_fallback_punct_symbol:NN \xeCJK_calc_punct_dimen:N #2 \group_end: \dim_set:Nn \l_@@_bound_dim @@ -6093,6 +6123,8 @@ Copyright and Licence % % \subsection{后备字体} % +% \changes{v3.8.4}{2020/05/31}{重构后备字体的实现,修正标点符号无后备字体的问题。} +% % \begin{macro}{AutoFallBack} % 后备字体的宏包选项声明。 % \begin{macrocode} @@ -6101,16 +6133,18 @@ Copyright and Licence AutoFallBack .choice: , AutoFallBack / true .code:n = { - \cs_if_eq:NNF \CJKsymbol \xeCJK_fallback_test_glyph:N - { - \cs_set_eq:NN \@@_fallback_save_CJKsymbol:N \CJKsymbol - \cs_set_eq:NN \CJKsymbol \xeCJK_fallback_test_glyph:N - } + \cs_set_eq:NN \xeCJK_fallback_symbol:NN + \@@_fallback_symbol:NN + \cs_set_eq:NN \xeCJK_fallback_punct_symbol:NN + \@@_fallback_punct_symbol:NN + \cs_set_eq:NN \xeCJK_clear_fallback_font: + \@@_clear_fallback_font: } , AutoFallBack / false .code:n = { - \cs_if_eq:NNT \CJKsymbol \xeCJK_fallback_test_glyph:N - { \cs_set_eq:NN \CJKsymbol \@@_fallback_save_CJKsymbol:N } + \xeCJK_cs_clear:N \xeCJK_fallback_symbol:NN + \xeCJK_cs_clear:N \xeCJK_fallback_punct_symbol:NN + \xeCJK_cs_clear:N \xeCJK_clear_fallback_font: } , AutoFallBack .default:n = { true } , fallback .meta:n = { AutoFallBack = true } @@ -6118,82 +6152,143 @@ Copyright and Licence % \end{macrocode} % \end{macro} % -% \begin{macro}[int]{\xeCJK_fallback_test_glyph:N} +% \begin{macro}[int]{\xeCJK_fallback_symbol:NN,\xeCJK_fallback_punct_symbol:NN} % 测试当前字体中是否存在当前字符,如存在则直接输出,否则启用后备字体。 % \begin{macrocode} -\cs_new_protected:Npn \xeCJK_fallback_test_glyph:N #1 +\cs_new_protected:Npn \@@_fallback_symbol:NN #1#2 { - \xeCJK_glyph_if_exist:NTF #1 - { \@@_fallback_save_CJKsymbol:N #1 } + \xeCJK_reset_fallback_font: + \xeCJK_glyph_if_exist:NF #2 + { \@@_fallback_symbol_aux:NN } + #1#2 + } +\cs_new_protected:Npn \@@_fallback_punct_symbol:NN #1#2 + { + \xeCJK_reset_fallback_font: + \xeCJK_glyph_if_exist:NF #2 + { \@@_fallback_punct_symbol_aux:NN } + #1#2 + } +\cs_new_eq:NN \xeCJK_fallback_symbol:NN \prg_do_nothing: +\cs_new_eq:NN \xeCJK_fallback_punct_symbol:NN \prg_do_nothing: +\cs_new_protected:Npn \@@_fallback_symbol_aux:NN + { + \@@_fallback_symbol_aux:nnNN + { \CJK@family } + { \l_xeCJK_family_tl } + } +\cs_new_protected:Npn \@@_fallback_punct_symbol_aux:NN + { + \@@_fallback_symbol_aux:nnNN + { \CJK@punctfamily } + { \l_xeCJK_punct_family_tl } + } +\cs_new_protected:Npn \@@_fallback_symbol_aux:nnNN + { + \cs_set_protected:Npx \xeCJK_reset_fallback_font: { - \group_begin: - \xeCJK_aftergroup_reset_Boundary:N #1 - \tl_set_eq:NN \l_@@_fallback_family_tl \l_xeCJK_family_tl - \xeCJK_fallback_loop:No #1 { \l_xeCJK_family_tl/FallBack } - \group_end: + \tex_the:D \tex_font:D + \xeCJK_clear_fallback_font: } + \exp_args:Nxx \@@_fallback_loop:nnNN } +\cs_new_protected:Npn \@@_clear_fallback_font: + { \cs_set_eq:NN \xeCJK_reset_fallback_font: \prg_do_nothing: } +\cs_new_eq:NN \xeCJK_reset_fallback_font: \prg_do_nothing: +\cs_new_eq:NN \xeCJK_clear_fallback_font: \prg_do_nothing: % \end{macrocode} % \end{macro} % % \changes{v3.5.1}{2017/11/16}{修正 fallback 字体后无法忽略空格的错误。} -% -% \begin{macro}[int]{\xeCJK_aftergroup_reset_Boundary:N} -% 在分组中暂时清空 |#1| 与边界的 toks,分组后恢复。 -% \begin{macrocode} -\cs_new_protected:Npn \xeCJK_aftergroup_reset_Boundary:N #1 - { - \tl_set:Nx \l_@@_tmp_tl - { \tex_the:D \tex_XeTeXcharclass:D `#1 ~ \xeCJK_class_num:n { Boundary } } - \tl_gset:Nx \g_@@_aftergroup_Boundary_tl - { \tex_the:D \tex_XeTeXinterchartoks:D \l_@@_tmp_tl } - \tex_XeTeXinterchartoks:D \l_@@_tmp_tl = { \prg_do_nothing: } - \group_insert_after:N \g_@@_aftergroup_Boundary_tl - } -\tl_new:N \g_@@_aftergroup_Boundary_tl -% \end{macrocode} -% \end{macro} -% % \changes{v3.2.12}{2014/05/12}{更新 \cs{int_to_Hex:n}。} % -% \begin{macro}[int]{\xeCJK_fallback_loop:Nn} +% \begin{macro}[int]{\@@_fallback_loop:nnNN} % \changes{v3.1.0}{2012/11/19}{调整备用字体的循环方式。} % \changes{v3.2.4}{2013/06/30} % {使 \tn{CJKfamilydefault} 的 \texttt{FallBack} 设置全局可用。} % 循环测试后备字体是否包含字符 |#1|。若后备字体中存在该字符或者再没有后备字体,则 % 结束循环。当前字体族没有备用字体时,使用 \tn{CJKfamilydefault} 的设置。 % \begin{macrocode} -\cs_new_protected:Npn \xeCJK_fallback_loop:Nn #1#2 +\cs_new_protected:Npn \@@_fallback_loop:nnNN { - \xeCJK_family_if_exist:nTF {#2} - { - \tl_set:Nn \l_xeCJK_family_tl {#2} - \tl_set_eq:NN \CJK@family \l_@@_fontspec_family_tl - \xeCJK_select_font: - \xeCJK_glyph_if_exist:NTF #1 - { \@@_fallback_save_CJKsymbol:N #1 } - { \xeCJK_fallback_loop:No #1 { \l_xeCJK_family_tl/FallBack } } - } - { - \str_if_eq:eeTF { \CJKfamilydefault } { \l_@@_fallback_family_tl } - { - \@@_warning:nxxx { missing-glyph } - { \l_xeCJK_family_tl } {#1} - { \int_to_Hex:n { `#1 } } - \@@_fallback_save_CJKsymbol:N #1 - } - { - \tl_set:Nx \l_@@_fallback_family_tl { \CJKfamilydefault } - \xeCJK_fallback_loop:Nn #1 { \l_@@_fallback_family_tl } - } - } + \cs_set_eq:NN \@@_fallback_loop:TF \use_i:nn + \@@_fallback_loop:nnnNN { FallBack } + } +\cs_generate_variant:Nn \@@_fallback_loop:Nn { Nx } +\cs_new_protected:Npn \@@_fallback_loop:nnnNN #1#2#3 + { + \xeCJK_select_fallback_font:nnn {#1} {#2} {#3} + \@@_fallback_loop:TF + { \@@_fallback_loop_aux:nnnNN } + { \@@_fallback_missing_glyph:nnnNN } + {#1} {#2} {#3} + } +\cs_new_protected:Npn \@@_fallback_loop_aux:nnnNN #1#2#3#4#5 + { + \xeCJK_glyph_if_exist:NF #5 + { \@@_fallback_loop:nnnNN { #1/FallBack } {#2} {#3} } + #4#5 + } +\cs_new_protected:Npn \@@_fallback_missing_glyph:nnnNN #1#2#3#4#5 + { + \@@_warning:nxxx { missing-glyph } {#1} {#2} {#5} + #4#5 + } +\cs_new_protected:Npn \xeCJK_select_fallback_font:nnn #1#2 + { + \@@_select_fallback_font:cnnn + { \@@_font_csname:n { #2/#1 } } {#1} {#2} } -\cs_generate_variant:Nn \xeCJK_fallback_loop:Nn { No } +\cs_new_protected:Npn \@@_select_fallback_font:Nnnn #1 + { + \cs_if_exist:NF #1 + { \@@_fallback_font_initial:NNnnn } + #1 \use_none:nnn + } +\cs_generate_variant:Nn \@@_select_fallback_font:Nnnn { c } +\cs_new_protected:Npn \@@_fallback_font_initial:NNnnn #1#2#3#4#5 + { + \xeCJK_family_if_exist:nTF { #5/#3 } + { \@@_font_initial:Nn #1 { #5/#3 } } + { \@@_fallback_font_initial_auxi:Nnnn #1 {#5} {#3} {#4} } + #1 + } +\cs_new_protected:Npn \@@_fallback_font_initial_auxi:Nnnn #1 + { + \exp_args:NNx \@@_fallback_font_initial_auxii:Nnnnn + #1 { \CJKfamilydefault } + } +\cs_new_protected:Npn \@@_fallback_font_initial_auxii:Nnnnn #1#2#3 + { + \str_if_eq:nnTF {#2} {#3} + { \@@_fallback_loop_end:Nnnn } + { \@@_fallback_font_initial_auxiii:Nnnn } + #1 {#2} + } +\cs_new_protected:Npn \@@_fallback_font_initial_auxiii:Nnnn #1#2 + { + \xeCJK_family_if_exist:nTF {#2} + { \@@_fallback_font_initial_auxiv:Nnnn } + { \@@_fallback_loop_end:Nnnn } + #1 {#2} + } +\cs_new_protected:Npn \@@_fallback_font_initial_auxiv:Nnnn #1#2#3#4 + { + \@@_font_initial:Nn #1 {#2} + \exp_args:Nc \@@_fallback_font_initial_auxiii:Nnnn + { \@@_font_csname:n { #4/#3/FallBack } } + { #2/FallBack } { #3/FallBack } {#4} + } +\cs_new_eq:NN \@@_fallback_loop:TF \use_i:nn +\cs_new_protected:Npn \@@_fallback_loop_end:Nnnn #1#2#3#4 + { \cs_gset_eq:NN #1 \@@_fallback_loop_end: } +\cs_new_protected:Npn \@@_fallback_loop_end: + { \cs_set_eq:NN \@@_fallback_loop:TF \use_ii:nn } \@@_msg_new:nn { missing-glyph } { - CJKfamily~`\@@_msg_family_map:n {#1}'~ - ( \prop_item:Nn \g_@@_family_font_name_prop {#1} )~ - does~not~contain~glyph~`#2'~(U+#3).\\ + CJKfamily~`\@@_msg_family_map:n {#2}'~(#1)~ + does~not~contain~glyph~`#3'~ + ( U + \int_to_Hex:n { `#3 } )~\msg_line_context:. } % \end{macrocode} % \end{macro} @@ -6657,6 +6752,7 @@ Copyright and Licence } \cs_new_protected:Npn \@@_select_font:Nn #1#2 { + \xeCJK_clear_fallback_font: \cs_if_exist:NF #1 { \@@_font_initial:Nn #1 {#2} } #1 } @@ -6697,6 +6793,8 @@ Copyright and Licence \tl_new:N \CJK@punctfamily \tl_new:N \l_xeCJK_punct_family_tl \tl_new:N \l_xeCJK_current_punct_font_tl +\tl_set:Nn \CJK@punctfamily { \CJK@family } +\tl_set:Nn \l_xeCJK_punct_family_tl { \l_xeCJK_family_tl } \tl_set:No \l_xeCJK_current_punct_font_tl { \@@_font_csname:n { \CJK@punctfamily } } \cs_new_eq:NN \@@_select_font: \prg_do_nothing: @@ -6739,6 +6837,7 @@ Copyright and Licence } \cs_new_protected:Npn \@@_select_font:Nnn #1#2#3 { + \xeCJK_clear_fallback_font: \cs_if_exist:NF #1 { \@@_block_font_initial:Nnn #1 {#2} {#3} } #1 @@ -6893,8 +6992,8 @@ Copyright and Licence PunctFamily .value_required:n = { true } , PunctFamily / false .code:n = { - \tl_clear:N \l_xeCJK_punct_family_tl - \tl_clear:N \CJK@punctfamily + \tl_set:Nn \CJK@punctfamily { \CJK@family } + \tl_set:Nn \l_xeCJK_punct_family_tl { \l_xeCJK_family_tl } \xeCJK_cs_clear:N \@@_select_font: \xeCJK_cs_clear:N \@@_select_punct_font: \cs_set_eq:NN \xeCJK_select_punct_font: \xeCJK_select_font: @@ -8030,8 +8129,8 @@ Copyright and Licence % % \begin{macro}[int]{\CJKsymbol, \CJKpunctsymbol} % \begin{macrocode} -\cs_new:Npn \CJKsymbol #1 {#1} -\cs_new:Npn \CJKpunctsymbol #1 {#1} +\cs_new_eq:NN \CJKsymbol \use:n +\cs_new_eq:NN \CJKpunctsymbol \use:n % \end{macrocode} % \end{macro} % @@ -9397,6 +9496,7 @@ Copyright and Licence \UL@stop \@@_ulem_ccglue: \UL@start \@@_ulem_class_group_begin: \xeCJK_select_font: + \xeCJK_fallback_symbol:NN \CJKsymbol } { \@@_ulem_CJK_and_CJK:N } @@ -9425,11 +9525,13 @@ Copyright and Licence \xeCJK_class_group_begin: \xeCJK_clear_Boundary_and_CJK_toks: \@@_switch_font:nn {#1} {#2} + \xeCJK_fallback_symbol:NN \CJKsymbol } { \skip_horizontal:N \l_@@_ccglue_skip \@@_switch_font:nn {#1} {#2} + \xeCJK_fallback_symbol:NN \CJKsymbol } } |