summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/source/xelatex
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2020-06-06 21:13:35 +0000
committerKarl Berry <karl@freefriends.org>2020-06-06 21:13:35 +0000
commit8cc59967284bfbd130d8d906ead1db117b8f253c (patch)
tree4a9f4118e691bed652651a754eef03b07799eef1 /Master/texmf-dist/source/xelatex
parent596c6ae45e88c08e1b3f42b8286862ae3a9665fa (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.dtx264
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
}
}