From 1a2e7be1784cdd093a722b0f80ee7e09b18f5e14 Mon Sep 17 00:00:00 2001
From: Karl Berry <karl@freefriends.org>
Date: Tue, 22 Nov 2016 22:50:32 +0000
Subject: xecjk (22nov16)

git-svn-id: svn://tug.org/texlive/trunk@42557 c570f23f-e606-0410-a88d-b1316a301751
---
 Master/texmf-dist/tex/xelatex/xecjk/xeCJK.sty | 92 ++++++++++++++++++---------
 1 file changed, 62 insertions(+), 30 deletions(-)

(limited to 'Master/texmf-dist/tex/xelatex/xecjk/xeCJK.sty')

diff --git a/Master/texmf-dist/tex/xelatex/xecjk/xeCJK.sty b/Master/texmf-dist/tex/xelatex/xecjk/xeCJK.sty
index bcb8164353b..0cd56e3f91f 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 7cdefd6 2016-10-25 17:38:55 +0800 Qing Lee <sobenlee@gmail.com> $
+\GetIdInfo$Id: xeCJK.dtx f0c9d10 2016-11-20 23:00:07 +0800 Qing Lee <sobenlee@gmail.com> $
   {Typesetting CJK scripts with XeLaTeX}
 \ProvidesExplPackage{\ExplFileName}
-  {\ExplFileDate}{3.4.2}{\ExplFileDescription}
+  {\ExplFileDate}{3.4.3}{\ExplFileDescription}
 \msg_new:nnn { xeCJK } { Require-XeTeX }
   {
     The~xeCJK~package~requires~XeTeX~to~function.\\\\
@@ -2369,7 +2369,7 @@
             \str_case:nnTF {#1}
               { { ^^^^2025 } { } { ^^^^2026 } { } }
               { \c_zero_dim }
-              { - \l__xeCJK_tmp_dim }
+              { \dim_min:nn { - \l__xeCJK_tmp_dim } { \c_zero_dim } }
           }
         \__xeCJK_save_punct_dim:nnnn { kern } {#1} {#1} { \l__xeCJK_tmp_dim }
         \__xeCJK_save_punct_skip:nnnn { kern } {#1} {#1} { \l__xeCJK_tmp_dim }
@@ -2512,8 +2512,12 @@
     ( \prop_item:Nn \g__xeCJK_family_font_name_prop {#1} )~
     does~not~contain~glyph~`#2'~(U+#3).\\
   }
-\NewDocumentCommand \setCJKfallbackfamilyfont { m O { } m }
-  { \use:x { \xeCJK_set_family_fallback:nnn {#1} {#2} {#3} } }
+\NewDocumentCommand \setCJKfallbackfamilyfont { m o m }
+  {
+    \__xeCJK_pass_args:nnnn
+      { \xeCJK_set_family_fallback:nnn {#1} } {#2} {#3}
+      { }
+  }
 \cs_new_protected_nopar:Npn \xeCJK_set_family_fallback:nnn #1#2#3
   {
     \group_begin:
@@ -2694,9 +2698,7 @@
 \tl_new:N \l__xeCJK_family_name_tl
 \tl_new:N \l__xeCJK_font_name_tl
 \clist_new:N \l__xeCJK_font_options_clist
-\cs_generate_variant:Nn \xeCJK_set_family:nnn { Vnn , VVV , Voo }
-\cs_new_protected_nopar:Npn \xeCJK_set_family:xxx #1#2#3
-  { \use:x { \xeCJK_set_family:nnn {#1} {#2} {#3} } }
+\cs_generate_variant:Nn \xeCJK_set_family:nnn { x , VVV , Voo }
 \cs_new_protected_nopar:Npn \__xeCJK_remove_duplicate_keys:N #1
   {
     \prop_clear:N \l__xeCJK_font_options_prop
@@ -3002,39 +3004,63 @@
       }
       {#1}
   }
-\NewDocumentCommand \setCJKmainfont { O { } m }
+\cs_new_protected:Npn \__xeCJK_pass_args:nnnn #1#2#3#4
   {
-    \xeCJK_set_family:xxx { \CJKrmdefault } {#1} {#2}
-    \normalfont
+    \IfNoValueTF {#2}
+      { \__xeCJK_post_arg:w {#1} {#3} {#4} }
+      {
+        \use:x { #1 {#2} {#3} }
+        #4
+      }
+  }
+\NewDocumentCommand \__xeCJK_post_arg:w { m m m O { } }
+  {
+    \use:x { #1 {#4} {#2} }
+    #3
+  }
+\NewDocumentCommand \setCJKmainfont { o m }
+  {
+    \__xeCJK_pass_args:nnnn
+      { \xeCJK_set_family:nnn { \CJKrmdefault } } {#1} {#2}
+      { \normalfont }
   }
 \cs_new_eq:NN \setCJKromanfont \setCJKmainfont
-\NewDocumentCommand \setCJKsansfont { O { } m }
+\NewDocumentCommand \setCJKsansfont { o m }
   {
-    \xeCJK_set_family:xxx { \CJKsfdefault } {#1} {#2}
-    \normalfont
+    \__xeCJK_pass_args:nnnn
+      { \xeCJK_set_family:nnn { \CJKsfdefault } } {#1} {#2}
+      { \normalfont }
   }
-\NewDocumentCommand \setCJKmonofont { O { } m }
+\NewDocumentCommand \setCJKmonofont { o m }
   {
-    \xeCJK_set_family:xxx { \CJKttdefault } {#1} {#2}
-    \normalfont
+    \__xeCJK_pass_args:nnnn
+      { \xeCJK_set_family:nnn { \CJKttdefault } } {#1} {#2}
+      { \normalfont }
   }
 \@onlypreamble \setCJKmainfont
 \@onlypreamble \setCJKmathfont
 \@onlypreamble \setCJKsansfont
 \@onlypreamble \setCJKmonofont
 \@onlypreamble \setCJKromanfont
-\NewDocumentCommand \setCJKfamilyfont { m O { } m }
-  { \xeCJK_set_family:xxx {#1} {#2} {#3} }
-\NewDocumentCommand \newCJKfontfamily { o m O { } m }
+\NewDocumentCommand \setCJKfamilyfont { m o m }
+  {
+    \__xeCJK_pass_args:nnnn
+      { \xeCJK_set_family:nnn {#1} } {#2} {#3}
+      { }
+  }
+\NewDocumentCommand \newCJKfontfamily { o m o m }
   {
     \tl_set:Nx \l__xeCJK_tmp_tl { \IfNoValueTF {#1} { \cs_to_str:N #2 } {#1} }
     \cs_new_protected_nopar:Npx #2 { \xeCJK_switch_family:n { \l__xeCJK_tmp_tl } }
-    \xeCJK_set_family:xxx { \l__xeCJK_tmp_tl } {#3} {#4}
+    \__xeCJK_pass_args:nnnn
+      { \xeCJK_set_family:nnn { \l__xeCJK_tmp_tl } } {#3} {#4}
+      { }
   }
-\NewDocumentCommand \CJKfontspec { O { } m }
+\NewDocumentCommand \CJKfontspec { o m }
   {
-    \use:x { \xeCJK_fontspec:nn {#1} {#2} }
-    \tex_ignorespaces:D
+    \__xeCJK_pass_args:nnnn
+      { \xeCJK_fontspec:nn } {#1} {#2}
+      { \tex_ignorespaces:D }
   }
 \cs_new_protected_nopar:Npn \xeCJK_fontspec:nn #1#2
   {
@@ -3152,11 +3178,13 @@
   { LoadFandol .bool_gset:N = \g__xeCJK_fandol_bool }
 \cs_new_protected_nopar:Npn \__xeCJK_load_fandol:
   {
-    \setCJKmainfont
-      [ Extension = .otf , BoldFont = FandolSong-Bold , ItalicFont = FandolKai-Regular ]
+    \xeCJK_set_family:xnn { \CJKrmdefault }
+      { Extension = .otf , BoldFont = FandolSong-Bold , ItalicFont = FandolKai-Regular }
       { FandolSong-Regular }
-    \setCJKsansfont [ Extension = .otf , BoldFont = FandolHei-Bold ] { FandolHei-Regular }
-    \setCJKmonofont [ Extension = .otf ] { FandolFang-Regular }
+    \xeCJK_set_family:xnn { \CJKsfdefault }
+      { Extension = .otf , BoldFont = FandolHei-Bold } { FandolHei-Regular }
+    \xeCJK_set_family:xnn { \CJKttdefault }
+      { Extension = .otf } { FandolFang-Regular }
   }
 \__xeCJK_at_end_preamble:n
   {
@@ -3231,8 +3259,12 @@
     Please~make~sure~it~has~been~properly~installed.
   }
 \keys_define:nn { xeCJK / options } { CJKmath .bool_gset:N = \g__xeCJK_math_bool }
-\NewDocumentCommand \setCJKmathfont { O { } m }
-  { \xeCJK_set_family:xxx { \c__xeCJK_math_tl } {#1} {#2} }
+\NewDocumentCommand \setCJKmathfont { o m }
+  {
+    \__xeCJK_pass_args:nnnn
+      { \xeCJK_set_family:nnn { \c__xeCJK_math_tl } } {#1} {#2}
+      { }
+  }
 \tl_const:Nn \c__xeCJK_math_tl { CJKmath }
 \cs_new_protected_nopar:Npn \xeCJK_set_mathfont:
   {
-- 
cgit v1.2.3

