summaryrefslogtreecommitdiff
path: root/Master
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
parent596c6ae45e88c08e1b3f42b8286862ae3a9665fa (diff)
xecjk (6jun20)
git-svn-id: svn://tug.org/texlive/trunk@55443 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master')
-rw-r--r--Master/texmf-dist/doc/xelatex/xecjk/xeCJK.pdfbin1280364 -> 1288169 bytes
-rw-r--r--Master/texmf-dist/doc/xelatex/xecjk/xunicode-symbols.pdfbin292884 -> 292881 bytes
-rw-r--r--Master/texmf-dist/source/xelatex/xecjk/xeCJK.dtx264
-rw-r--r--Master/texmf-dist/tex/xelatex/xecjk/xeCJK-listings.sty4
-rw-r--r--Master/texmf-dist/tex/xelatex/xecjk/xeCJK.cfg4
-rw-r--r--Master/texmf-dist/tex/xelatex/xecjk/xeCJK.sty234
-rw-r--r--Master/texmf-dist/tex/xelatex/xecjk/xeCJKfntef.sty7
-rw-r--r--Master/texmf-dist/tex/xelatex/xecjk/xunicode-addon.sty4
-rw-r--r--Master/texmf-dist/tex/xelatex/xecjk/xunicode-extra.def4
9 files changed, 364 insertions, 157 deletions
diff --git a/Master/texmf-dist/doc/xelatex/xecjk/xeCJK.pdf b/Master/texmf-dist/doc/xelatex/xecjk/xeCJK.pdf
index 1726fe6fc86..e834c66b1ae 100644
--- a/Master/texmf-dist/doc/xelatex/xecjk/xeCJK.pdf
+++ b/Master/texmf-dist/doc/xelatex/xecjk/xeCJK.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/xelatex/xecjk/xunicode-symbols.pdf b/Master/texmf-dist/doc/xelatex/xecjk/xunicode-symbols.pdf
index 5392212ff8b..168357464cd 100644
--- a/Master/texmf-dist/doc/xelatex/xecjk/xunicode-symbols.pdf
+++ b/Master/texmf-dist/doc/xelatex/xecjk/xunicode-symbols.pdf
Binary files differ
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
}
}
diff --git a/Master/texmf-dist/tex/xelatex/xecjk/xeCJK-listings.sty b/Master/texmf-dist/tex/xelatex/xecjk/xeCJK-listings.sty
index c85691e4527..a601ffff36a 100644
--- a/Master/texmf-dist/tex/xelatex/xecjk/xeCJK-listings.sty
+++ b/Master/texmf-dist/tex/xelatex/xecjk/xeCJK-listings.sty
@@ -29,10 +29,10 @@
%%
\NeedsTeXFormat{LaTeX2e}
\RequirePackage{expl3}
-\GetIdInfo$Id: xeCJK.dtx b971c22 2020-05-01 21:10:43 +0800 Qing Lee <sobenlee@gmail.com> $
+\GetIdInfo$Id: xeCJK.dtx 94baac7 2020-06-06 23:21:05 +0800 Qing Lee <sobenlee@gmail.com> $
{xeCJK patch file for listings}
\ProvidesExplPackage{xeCJK-listings}
- {\ExplFileDate}{3.8.3}{\ExplFileDescription}
+ {\ExplFileDate}{3.8.4}{\ExplFileDescription}
\DeclareOption* { \PassOptionsToPackage { \CurrentOption } { xeCJK } }
\ProcessOptions \scan_stop:
\RequirePackage { xeCJK }
diff --git a/Master/texmf-dist/tex/xelatex/xecjk/xeCJK.cfg b/Master/texmf-dist/tex/xelatex/xecjk/xeCJK.cfg
index 0ad5db5a3b1..de040c0a3dd 100644
--- a/Master/texmf-dist/tex/xelatex/xecjk/xeCJK.cfg
+++ b/Master/texmf-dist/tex/xelatex/xecjk/xeCJK.cfg
@@ -6,10 +6,10 @@
%%
%% xeCJK.dtx (with options: `config')
%%
-\GetIdInfo$Id: xeCJK.dtx b971c22 2020-05-01 21:10:43 +0800 Qing Lee <sobenlee@gmail.com> $
+\GetIdInfo$Id: xeCJK.dtx 94baac7 2020-06-06 23:21:05 +0800 Qing Lee <sobenlee@gmail.com> $
{Configuration file for xeCJK package}
\ProvidesExplFile{\ExplFileName.cfg}
- {\ExplFileDate}{3.8.3}{\ExplFileDescription}
+ {\ExplFileDate}{3.8.4}{\ExplFileDescription}
%%
%%
diff --git a/Master/texmf-dist/tex/xelatex/xecjk/xeCJK.sty b/Master/texmf-dist/tex/xelatex/xecjk/xeCJK.sty
index 6b75e14ae19..1f278796fa8 100644
--- a/Master/texmf-dist/tex/xelatex/xecjk/xeCJK.sty
+++ b/Master/texmf-dist/tex/xelatex/xecjk/xeCJK.sty
@@ -29,10 +29,10 @@
%%
\NeedsTeXFormat{LaTeX2e}
\RequirePackage{expl3}
-\GetIdInfo$Id: xeCJK.dtx b971c22 2020-05-01 21:10:43 +0800 Qing Lee <sobenlee@gmail.com> $
+\GetIdInfo$Id: xeCJK.dtx 94baac7 2020-06-06 23:21:05 +0800 Qing Lee <sobenlee@gmail.com> $
{Typesetting CJK scripts with XeLaTeX}
\ProvidesExplPackage{\ExplFileName}
- {\ExplFileDate}{3.8.3}{\ExplFileDescription}
+ {\ExplFileDate}{3.8.4}{\ExplFileDescription}
\msg_new:nnn { xeCJK } { Require-XeTeX }
{
The~xeCJK~package~requires~XeTeX~to~function.\\\\
@@ -173,9 +173,10 @@
\cs_set_eq:NN #2 \__xeCJK_swap_cs_aux:w
\cs_undefine:N \__xeCJK_swap_cs_aux:w
}
-\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 \__xeCJK_font_gset_to_current_aux:NN \tex_the:D \tex_font:D }
+\cs_new_protected:Npn \__xeCJK_font_gset_to_current_aux:NN #1#2
+ { \cs_if_eq:NNF #1 \tex_nullfont:D { \cs_gset_eq:NN #2#1 } }
\prg_new_conditional:Npnn \xeCJK_glyph_if_exist:N #1 { p , T , F , TF }
{
\tex_iffontchar:D \tex_font:D `#1 \exp_stop_f:
@@ -771,6 +772,7 @@
\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: }
@@ -876,6 +878,7 @@
\xeCJK_class_group_begin:
\xeCJK_clear_Boundary_and_CJK_toks:
\xeCJK_select_font:
+ \xeCJK_fallback_symbol:NN
\CJKsymbol
}
\cs_new_protected:Npn \xeCJK_check_for_glue:
@@ -1131,11 +1134,23 @@
\xeCJK_inter_class_toks:nnn { CJK } { CJK }
{ \xeCJK_CJK_and_CJK:N }
\cs_new_protected:Npn \xeCJK_CJK_and_CJK:N
- { \CJKglue \CJKsymbol }
+ {
+ \CJKglue
+ \xeCJK_fallback_symbol:NN
+ \CJKsymbol
+ }
\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__xeCJK_non_CJK_class_seq
{
\clist_map_inline:nn { FullLeft , FullRight }
@@ -1387,6 +1402,7 @@
\xeCJK_clear_Boundary_and_CJK_toks:
\tl_gset:Nn \g__xeCJK_last_punct_tl {#2}
\__xeCJK_punct_rule:NN \c__xeCJK_left_tl #2
+ \xeCJK_fallback_punct_symbol:NN
\CJKpunctsymbol #2
}
\cs_new_protected:Npn \__xeCJK_Default_and_FullLeft_glue:N #1
@@ -1398,6 +1414,7 @@
\tl_gset:Nn \g__xeCJK_last_punct_tl {#1}
\__xeCJK_punct_rule:NN \c__xeCJK_left_tl #1
\__xeCJK_select_punct_font:
+ \xeCJK_fallback_punct_symbol:NN
\CJKpunctsymbol #1
}
\cs_new_protected:Npn \__xeCJK_CJK_and_FullLeft_glue:N #1
@@ -1414,6 +1431,7 @@
\xeCJK_clear_Boundary_and_CJK_toks:
\tl_gset:Nn \g__xeCJK_last_punct_tl {#1}
\__xeCJK_punct_rule:NN \c__xeCJK_left_tl #1
+ \xeCJK_fallback_punct_symbol:NN
\CJKpunctsymbol #1
}
\cs_new_protected:Npn \__xeCJK_Boundary_and_FullLeft_glue:N #1
@@ -1686,6 +1704,7 @@
\xeCJK_get_punct_kerning:oN \g__xeCJK_last_punct_tl #1
\__xeCJK_punct_kern:NN \g__xeCJK_last_punct_tl #1
\tl_gset:Nn \g__xeCJK_last_punct_tl {#1}
+ \xeCJK_fallback_punct_symbol:NN
\CJKpunctsymbol #1
}
\cs_new_protected:Npn \xeCJK_FullLeft_and_FullRight:N #1
@@ -1702,6 +1721,7 @@
\xeCJK_get_punct_kerning:oN \g__xeCJK_last_punct_tl #1
\xeCJK_punct_kern:NN \g__xeCJK_last_punct_tl #1
\tl_gset:Nn \g__xeCJK_last_punct_tl {#1}
+ \xeCJK_fallback_punct_symbol:NN
\CJKpunctsymbol #1
}
\cs_new_protected:Npn \xeCJK_FullRight_and_FullRight:N #1
@@ -1741,7 +1761,11 @@
} ,
CheckFullRight .default:n = { true }
}
-\cs_new:Npn \xeCJK_FullRight_symbol:N { \CJKpunctsymbol }
+\cs_new_protected:Npn \xeCJK_FullRight_symbol:N
+ {
+ \xeCJK_fallback_punct_symbol:NN
+ \CJKpunctsymbol
+ }
\cs_new_protected:Npn \xeCJK_check_FullRight:
{
\xeCJK_get_punct_bounds:No \c__xeCJK_right_tl \g__xeCJK_last_punct_tl
@@ -2086,8 +2110,11 @@
}
{
\xeCJK_replace_inter_class_toks:nnnn {##1} { #1/#2 }
- { \CJKsymbol }
- { \__xeCJK_switch_font:nn {#1} {#2} \CJKsymbol }
+ { \xeCJK_fallback_symbol:NN }
+ {
+ \__xeCJK_switch_font:nn {#1} {#2}
+ \xeCJK_fallback_symbol:NN
+ }
}
}
\xeCJK_copy_inter_class_toks:nnnn { #1/#2 } { #1/#2 } {#1} {#1}
@@ -2242,7 +2269,7 @@
}
}
\cs_new:Npn \__xeCJK_punct_csname:n #1
- { c__xeCJK_\l_xeCJK_current_font_tl/\l_xeCJK_punct_style_tl/#1/tl }
+ { c__xeCJK_\l_xeCJK_current_punct_font_tl/\l_xeCJK_punct_style_tl/#1/tl }
\cs_new:Npn \__xeCJK_use_punct_dim:nN #1#2
{ \use:c { \__xeCJK_punct_csname:n { dim/#1/#2 } } }
\cs_new:Npn \__xeCJK_use_punct_dim:nNN #1#2#3
@@ -2400,6 +2427,7 @@
{
\group_begin:
\xeCJK_select_punct_font:
+ \xeCJK_fallback_punct_symbol:NN
\xeCJK_calc_punct_dimen:N #2
\group_end:
\dim_set:Nn \l__xeCJK_bound_dim
@@ -2902,73 +2930,143 @@
AutoFallBack .choice: ,
AutoFallBack / true .code:n =
{
- \cs_if_eq:NNF \CJKsymbol \xeCJK_fallback_test_glyph:N
- {
- \cs_set_eq:NN \__xeCJK_fallback_save_CJKsymbol:N \CJKsymbol
- \cs_set_eq:NN \CJKsymbol \xeCJK_fallback_test_glyph:N
- }
+ \cs_set_eq:NN \xeCJK_fallback_symbol:NN
+ \__xeCJK_fallback_symbol:NN
+ \cs_set_eq:NN \xeCJK_fallback_punct_symbol:NN
+ \__xeCJK_fallback_punct_symbol:NN
+ \cs_set_eq:NN \xeCJK_clear_fallback_font:
+ \__xeCJK_clear_fallback_font:
} ,
AutoFallBack / false .code:n =
{
- \cs_if_eq:NNT \CJKsymbol \xeCJK_fallback_test_glyph:N
- { \cs_set_eq:NN \CJKsymbol \__xeCJK_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 }
}
-\cs_new_protected:Npn \xeCJK_fallback_test_glyph:N #1
+\cs_new_protected:Npn \__xeCJK_fallback_symbol:NN #1#2
{
- \xeCJK_glyph_if_exist:NTF #1
- { \__xeCJK_fallback_save_CJKsymbol:N #1 }
- {
- \group_begin:
- \xeCJK_aftergroup_reset_Boundary:N #1
- \tl_set_eq:NN \l__xeCJK_fallback_family_tl \l_xeCJK_family_tl
- \xeCJK_fallback_loop:No #1 { \l_xeCJK_family_tl/FallBack }
- \group_end:
- }
+ \xeCJK_reset_fallback_font:
+ \xeCJK_glyph_if_exist:NF #2
+ { \__xeCJK_fallback_symbol_aux:NN }
+ #1#2
}
-\cs_new_protected:Npn \xeCJK_aftergroup_reset_Boundary:N #1
+\cs_new_protected:Npn \__xeCJK_fallback_punct_symbol:NN #1#2
{
- \tl_set:Nx \l__xeCJK_tmp_tl
- { \tex_the:D \tex_XeTeXcharclass:D `#1 ~ \xeCJK_class_num:n { Boundary } }
- \tl_gset:Nx \g__xeCJK_aftergroup_Boundary_tl
- { \tex_the:D \tex_XeTeXinterchartoks:D \l__xeCJK_tmp_tl }
- \tex_XeTeXinterchartoks:D \l__xeCJK_tmp_tl = { \prg_do_nothing: }
- \group_insert_after:N \g__xeCJK_aftergroup_Boundary_tl
+ \xeCJK_reset_fallback_font:
+ \xeCJK_glyph_if_exist:NF #2
+ { \__xeCJK_fallback_punct_symbol_aux:NN }
+ #1#2
}
-\tl_new:N \g__xeCJK_aftergroup_Boundary_tl
-\cs_new_protected:Npn \xeCJK_fallback_loop: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 \__xeCJK_fallback_symbol_aux:NN
{
- \xeCJK_family_if_exist:nTF {#2}
- {
- \tl_set:Nn \l_xeCJK_family_tl {#2}
- \tl_set_eq:NN \CJK@family \l__xeCJK_fontspec_family_tl
- \xeCJK_select_font:
- \xeCJK_glyph_if_exist:NTF #1
- { \__xeCJK_fallback_save_CJKsymbol:N #1 }
- { \xeCJK_fallback_loop:No #1 { \l_xeCJK_family_tl/FallBack } }
- }
+ \__xeCJK_fallback_symbol_aux:nnNN
+ { \CJK@family }
+ { \l_xeCJK_family_tl }
+ }
+\cs_new_protected:Npn \__xeCJK_fallback_punct_symbol_aux:NN
+ {
+ \__xeCJK_fallback_symbol_aux:nnNN
+ { \CJK@punctfamily }
+ { \l_xeCJK_punct_family_tl }
+ }
+\cs_new_protected:Npn \__xeCJK_fallback_symbol_aux:nnNN
+ {
+ \cs_set_protected:Npx \xeCJK_reset_fallback_font:
{
- \str_if_eq:eeTF { \CJKfamilydefault } { \l__xeCJK_fallback_family_tl }
- {
- \__xeCJK_warning:nxxx { missing-glyph }
- { \l_xeCJK_family_tl } {#1}
- { \int_to_Hex:n { `#1 } }
- \__xeCJK_fallback_save_CJKsymbol:N #1
- }
- {
- \tl_set:Nx \l__xeCJK_fallback_family_tl { \CJKfamilydefault }
- \xeCJK_fallback_loop:Nn #1 { \l__xeCJK_fallback_family_tl }
- }
+ \tex_the:D \tex_font:D
+ \xeCJK_clear_fallback_font:
}
+ \exp_args:Nxx \__xeCJK_fallback_loop:nnNN
+ }
+\cs_new_protected:Npn \__xeCJK_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:
+\cs_new_protected:Npn \__xeCJK_fallback_loop:nnNN
+ {
+ \cs_set_eq:NN \__xeCJK_fallback_loop:TF \use_i:nn
+ \__xeCJK_fallback_loop:nnnNN { FallBack }
+ }
+\cs_generate_variant:Nn \__xeCJK_fallback_loop:Nn { Nx }
+\cs_new_protected:Npn \__xeCJK_fallback_loop:nnnNN #1#2#3
+ {
+ \xeCJK_select_fallback_font:nnn {#1} {#2} {#3}
+ \__xeCJK_fallback_loop:TF
+ { \__xeCJK_fallback_loop_aux:nnnNN }
+ { \__xeCJK_fallback_missing_glyph:nnnNN }
+ {#1} {#2} {#3}
+ }
+\cs_new_protected:Npn \__xeCJK_fallback_loop_aux:nnnNN #1#2#3#4#5
+ {
+ \xeCJK_glyph_if_exist:NF #5
+ { \__xeCJK_fallback_loop:nnnNN { #1/FallBack } {#2} {#3} }
+ #4#5
+ }
+\cs_new_protected:Npn \__xeCJK_fallback_missing_glyph:nnnNN #1#2#3#4#5
+ {
+ \__xeCJK_warning:nxxx { missing-glyph } {#1} {#2} {#5}
+ #4#5
}
-\cs_generate_variant:Nn \xeCJK_fallback_loop:Nn { No }
+\cs_new_protected:Npn \xeCJK_select_fallback_font:nnn #1#2
+ {
+ \__xeCJK_select_fallback_font:cnnn
+ { \__xeCJK_font_csname:n { #2/#1 } } {#1} {#2}
+ }
+\cs_new_protected:Npn \__xeCJK_select_fallback_font:Nnnn #1
+ {
+ \cs_if_exist:NF #1
+ { \__xeCJK_fallback_font_initial:NNnnn }
+ #1 \use_none:nnn
+ }
+\cs_generate_variant:Nn \__xeCJK_select_fallback_font:Nnnn { c }
+\cs_new_protected:Npn \__xeCJK_fallback_font_initial:NNnnn #1#2#3#4#5
+ {
+ \xeCJK_family_if_exist:nTF { #5/#3 }
+ { \__xeCJK_font_initial:Nn #1 { #5/#3 } }
+ { \__xeCJK_fallback_font_initial_auxi:Nnnn #1 {#5} {#3} {#4} }
+ #1
+ }
+\cs_new_protected:Npn \__xeCJK_fallback_font_initial_auxi:Nnnn #1
+ {
+ \exp_args:NNx \__xeCJK_fallback_font_initial_auxii:Nnnnn
+ #1 { \CJKfamilydefault }
+ }
+\cs_new_protected:Npn \__xeCJK_fallback_font_initial_auxii:Nnnnn #1#2#3
+ {
+ \str_if_eq:nnTF {#2} {#3}
+ { \__xeCJK_fallback_loop_end:Nnnn }
+ { \__xeCJK_fallback_font_initial_auxiii:Nnnn }
+ #1 {#2}
+ }
+\cs_new_protected:Npn \__xeCJK_fallback_font_initial_auxiii:Nnnn #1#2
+ {
+ \xeCJK_family_if_exist:nTF {#2}
+ { \__xeCJK_fallback_font_initial_auxiv:Nnnn }
+ { \__xeCJK_fallback_loop_end:Nnnn }
+ #1 {#2}
+ }
+\cs_new_protected:Npn \__xeCJK_fallback_font_initial_auxiv:Nnnn #1#2#3#4
+ {
+ \__xeCJK_font_initial:Nn #1 {#2}
+ \exp_args:Nc \__xeCJK_fallback_font_initial_auxiii:Nnnn
+ { \__xeCJK_font_csname:n { #4/#3/FallBack } }
+ { #2/FallBack } { #3/FallBack } {#4}
+ }
+\cs_new_eq:NN \__xeCJK_fallback_loop:TF \use_i:nn
+\cs_new_protected:Npn \__xeCJK_fallback_loop_end:Nnnn #1#2#3#4
+ { \cs_gset_eq:NN #1 \__xeCJK_fallback_loop_end: }
+\cs_new_protected:Npn \__xeCJK_fallback_loop_end:
+ { \cs_set_eq:NN \__xeCJK_fallback_loop:TF \use_ii:nn }
\__xeCJK_msg_new:nn { missing-glyph }
{
- CJKfamily~`\__xeCJK_msg_family_map:n {#1}'~
- ( \prop_item:Nn \g__xeCJK_family_font_name_prop {#1} )~
- does~not~contain~glyph~`#2'~(U+#3).\\
+ CJKfamily~`\__xeCJK_msg_family_map:n {#2}'~(#1)~
+ does~not~contain~glyph~`#3'~
+ ( U + \int_to_Hex:n { `#3 } )~\msg_line_context:.
}
\NewDocumentCommand \setCJKfallbackfamilyfont { m o m }
{
@@ -3310,6 +3408,7 @@
}
\cs_new_protected:Npn \__xeCJK_select_font:Nn #1#2
{
+ \xeCJK_clear_fallback_font:
\cs_if_exist:NF #1 { \__xeCJK_font_initial:Nn #1 {#2} }
#1
}
@@ -3333,6 +3432,8 @@
\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
{ \__xeCJK_font_csname:n { \CJK@punctfamily } }
\cs_new_eq:NN \__xeCJK_select_font: \prg_do_nothing:
@@ -3357,6 +3458,7 @@
}
\cs_new_protected:Npn \__xeCJK_select_font:Nnn #1#2#3
{
+ \xeCJK_clear_fallback_font:
\cs_if_exist:NF #1
{ \__xeCJK_block_font_initial:Nnn #1 {#2} {#3} }
#1
@@ -3479,8 +3581,8 @@
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 \__xeCJK_select_font:
\xeCJK_cs_clear:N \__xeCJK_select_punct_font:
\cs_set_eq:NN \xeCJK_select_punct_font: \xeCJK_select_font:
@@ -4319,8 +4421,8 @@
Sorry,~but~xeCJK/options~does~not~have~a~key~called~`#1'.\\\\
The~key~`#1'~is~being~ignored.
}
-\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
\keys_set:nn { xeCJK / options }
{
CJKglue = { \skip_horizontal:n { \c_zero_dim plus 0.08 \tex_baselineskip:D } } ,
diff --git a/Master/texmf-dist/tex/xelatex/xecjk/xeCJKfntef.sty b/Master/texmf-dist/tex/xelatex/xecjk/xeCJKfntef.sty
index 9b122f2b5f0..f9b3da127f9 100644
--- a/Master/texmf-dist/tex/xelatex/xecjk/xeCJKfntef.sty
+++ b/Master/texmf-dist/tex/xelatex/xecjk/xeCJKfntef.sty
@@ -29,10 +29,10 @@
%%
\NeedsTeXFormat{LaTeX2e}
\RequirePackage{expl3}
-\GetIdInfo$Id: xeCJK.dtx b971c22 2020-05-01 21:10:43 +0800 Qing Lee <sobenlee@gmail.com> $
+\GetIdInfo$Id: xeCJK.dtx 94baac7 2020-06-06 23:21:05 +0800 Qing Lee <sobenlee@gmail.com> $
{xeCJK font effect}
\ProvidesExplPackage{xeCJKfntef}
- {\ExplFileDate}{3.8.3}{\ExplFileDescription}
+ {\ExplFileDate}{3.8.4}{\ExplFileDescription}
\PassOptionsToPackage { normalem } { ulem }
\DeclareOption* { \PassOptionsToPackage { \CurrentOption } { ulem } }
\ProcessOptions \scan_stop:
@@ -394,6 +394,7 @@
\UL@stop \__xeCJK_ulem_ccglue: \UL@start
\__xeCJK_ulem_class_group_begin:
\xeCJK_select_font:
+ \xeCJK_fallback_symbol:NN
\CJKsymbol
}
{ \__xeCJK_ulem_CJK_and_CJK:N }
@@ -412,11 +413,13 @@
\xeCJK_class_group_begin:
\xeCJK_clear_Boundary_and_CJK_toks:
\__xeCJK_switch_font:nn {#1} {#2}
+ \xeCJK_fallback_symbol:NN
\CJKsymbol
}
{
\skip_horizontal:N \l__xeCJK_ccglue_skip
\__xeCJK_switch_font:nn {#1} {#2}
+ \xeCJK_fallback_symbol:NN
\CJKsymbol
}
}
diff --git a/Master/texmf-dist/tex/xelatex/xecjk/xunicode-addon.sty b/Master/texmf-dist/tex/xelatex/xecjk/xunicode-addon.sty
index 8679c7f1346..fd7c39dd6b9 100644
--- a/Master/texmf-dist/tex/xelatex/xecjk/xunicode-addon.sty
+++ b/Master/texmf-dist/tex/xelatex/xecjk/xunicode-addon.sty
@@ -29,10 +29,10 @@
%%
\NeedsTeXFormat{LaTeX2e}
\RequirePackage{expl3}
-\GetIdInfo$Id: xeCJK.dtx b971c22 2020-05-01 21:10:43 +0800 Qing Lee <sobenlee@gmail.com> $
+\GetIdInfo$Id: xeCJK.dtx 94baac7 2020-06-06 23:21:05 +0800 Qing Lee <sobenlee@gmail.com> $
{addon file for xunicode}
\ProvidesExplPackage{xunicode-addon}
- {\ExplFileDate}{3.8.3}{\ExplFileDescription}
+ {\ExplFileDate}{3.8.4}{\ExplFileDescription}
\bool_lazy_or:nnF
{ \sys_if_engine_xetex_p: }
{ \sys_if_engine_luatex_p: }
diff --git a/Master/texmf-dist/tex/xelatex/xecjk/xunicode-extra.def b/Master/texmf-dist/tex/xelatex/xecjk/xunicode-extra.def
index 7cf38d8d31e..1b632efafa3 100644
--- a/Master/texmf-dist/tex/xelatex/xecjk/xunicode-extra.def
+++ b/Master/texmf-dist/tex/xelatex/xecjk/xunicode-extra.def
@@ -27,10 +27,10 @@
%%
%% ----------------------------------------------------------------------
%%
-\GetIdInfo$Id: xeCJK.dtx b971c22 2020-05-01 21:10:43 +0800 Qing Lee <sobenlee@gmail.com> $
+\GetIdInfo$Id: xeCJK.dtx 94baac7 2020-06-06 23:21:05 +0800 Qing Lee <sobenlee@gmail.com> $
{extra definition for xunicode}
\ProvidesExplFile{xunicode-extra.def}
- {\ExplFileDate}{3.8.3}{\ExplFileDescription}
+ {\ExplFileDate}{3.8.4}{\ExplFileDescription}
\DeclareUTFSymbol\texthyphenationpoint{"2027}
\DeclareUTFSymbol\texttwoemdash{"2E3A}
\DeclareUTFComposite\textsuperscript