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 | |
parent | 596c6ae45e88c08e1b3f42b8286862ae3a9665fa (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.pdf | bin | 1280364 -> 1288169 bytes | |||
-rw-r--r-- | Master/texmf-dist/doc/xelatex/xecjk/xunicode-symbols.pdf | bin | 292884 -> 292881 bytes | |||
-rw-r--r-- | Master/texmf-dist/source/xelatex/xecjk/xeCJK.dtx | 264 | ||||
-rw-r--r-- | Master/texmf-dist/tex/xelatex/xecjk/xeCJK-listings.sty | 4 | ||||
-rw-r--r-- | Master/texmf-dist/tex/xelatex/xecjk/xeCJK.cfg | 4 | ||||
-rw-r--r-- | Master/texmf-dist/tex/xelatex/xecjk/xeCJK.sty | 234 | ||||
-rw-r--r-- | Master/texmf-dist/tex/xelatex/xecjk/xeCJKfntef.sty | 7 | ||||
-rw-r--r-- | Master/texmf-dist/tex/xelatex/xecjk/xunicode-addon.sty | 4 | ||||
-rw-r--r-- | Master/texmf-dist/tex/xelatex/xecjk/xunicode-extra.def | 4 |
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 Binary files differindex 1726fe6fc86..e834c66b1ae 100644 --- a/Master/texmf-dist/doc/xelatex/xecjk/xeCJK.pdf +++ b/Master/texmf-dist/doc/xelatex/xecjk/xeCJK.pdf diff --git a/Master/texmf-dist/doc/xelatex/xecjk/xunicode-symbols.pdf b/Master/texmf-dist/doc/xelatex/xecjk/xunicode-symbols.pdf Binary files differindex 5392212ff8b..168357464cd 100644 --- a/Master/texmf-dist/doc/xelatex/xecjk/xunicode-symbols.pdf +++ b/Master/texmf-dist/doc/xelatex/xecjk/xunicode-symbols.pdf 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 |