summaryrefslogtreecommitdiff
path: root/Master/texmf-dist
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2009-09-15 00:42:27 +0000
committerKarl Berry <karl@freefriends.org>2009-09-15 00:42:27 +0000
commit9b5c0be75f6856d930bda2f309319b167a6ea2fb (patch)
tree634dc72a8f8a7422675947d0837020332cd76f05 /Master/texmf-dist
parentecbaa3a13d808b7db882290d1ffe9e3c45db774d (diff)
xecjk 2.3.8 (14sep09)
git-svn-id: svn://tug.org/texlive/trunk@15287 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist')
-rw-r--r--Master/texmf-dist/doc/xelatex/xecjk/README.txt9
-rw-r--r--Master/texmf-dist/doc/xelatex/xecjk/example-CJKchecksingle.tex52
-rw-r--r--Master/texmf-dist/doc/xelatex/xecjk/example-CJKfntef.tex58
-rw-r--r--Master/texmf-dist/doc/xelatex/xecjk/example-addspaces.tex57
-rw-r--r--Master/texmf-dist/doc/xelatex/xecjk/examples/example-CJKchecksingle.tex2
-rw-r--r--Master/texmf-dist/doc/xelatex/xecjk/examples/example-CJKfntef.tex2
-rw-r--r--Master/texmf-dist/doc/xelatex/xecjk/examples/example-addspaces.tex5
-rw-r--r--Master/texmf-dist/doc/xelatex/xecjk/xeCJK.pdfbin275885 -> 293569 bytes
-rw-r--r--Master/texmf-dist/source/xelatex/xecjk/xeCJK.dtx323
-rw-r--r--Master/texmf-dist/source/xelatex/xecjk/xeCJK.ins46
-rw-r--r--Master/texmf-dist/tex/xelatex/xecjk/xeCJK.sty294
11 files changed, 576 insertions, 272 deletions
diff --git a/Master/texmf-dist/doc/xelatex/xecjk/README.txt b/Master/texmf-dist/doc/xelatex/xecjk/README.txt
new file mode 100644
index 00000000000..c508dcc0802
--- /dev/null
+++ b/Master/texmf-dist/doc/xelatex/xecjk/README.txt
@@ -0,0 +1,9 @@
+
+xeCJK is a package written for XeLaTeX which allows users to typeset
+CJK scripts easily.
+
+ - different default fonts for CJK and other characters;
+ - spaces automatically ignored between CJK characters;
+ - special effects on full-width CJK punctuation; and
+ - automatic adjustment of the space between CJK and other characters.
+
diff --git a/Master/texmf-dist/doc/xelatex/xecjk/example-CJKchecksingle.tex b/Master/texmf-dist/doc/xelatex/xecjk/example-CJKchecksingle.tex
new file mode 100644
index 00000000000..cb95a60e93b
--- /dev/null
+++ b/Master/texmf-dist/doc/xelatex/xecjk/example-CJKchecksingle.tex
@@ -0,0 +1,52 @@
+%%
+%% This is file `example-CJKchecksingle.tex',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% xeCJK.dtx (with options: `example-CJKchecksingle')
+%%
+%% Version 2.3.8 (12-Sept-2009)
+%%
+%% Copyright (C) Wenchang Sun <sunwch@hotmail.com>
+%%
+%% This file may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.3
+%% of this license or (at your option) any later version.
+%% The latest version of this license is in
+%% http://www.latex-project.org/lppl.txt
+%% and version 1.3 or later is part of all distributions of LaTeX
+%% version 2005/12/01 or later.
+%%
+\documentclass{article}
+\usepackage[boldfont,slantfont,CJKaddspaces,CJKchecksingle]{xeCJK}
+\setCJKmainfont{AR PL SungtiL GB}
+\textwidth 120mm
+\oddsidemargin 0pt
+\def\usemacro#1{\csname#1\endcsname $\backslash$#1}
+\begin{document}
+\baselineskip 18pt
+\parskip 10pt
+\parindent 0em
+
+\long\def\sometexts{xeCJK 改进了中英文间距的处理,并可以避免单个汉字独占一段的最后一行。
+
+xeCJK 改进了中英文间距的处理,并且可以避免单个汉字独占一段的最后一行。
+
+xeCJK 改进了中英文间距的处理, 并且还可以避免单个汉字独占一段的最后一行.
+
+}
+
+\sometexts
+\vskip 20mm
+
+不用CJKchecksingle的效果:
+
+\makeatletter
+\def\xeCJK@i@i{\CJKglue\CJKsymbol}
+\sometexts
+\end{document}
+
+\endinput
+%%
+%% End of file `example-CJKchecksingle.tex'.
diff --git a/Master/texmf-dist/doc/xelatex/xecjk/example-CJKfntef.tex b/Master/texmf-dist/doc/xelatex/xecjk/example-CJKfntef.tex
new file mode 100644
index 00000000000..54e885ae26a
--- /dev/null
+++ b/Master/texmf-dist/doc/xelatex/xecjk/example-CJKfntef.tex
@@ -0,0 +1,58 @@
+%%
+%% This is file `example-CJKfntef.tex',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% xeCJK.dtx (with options: `example-CJKfntef')
+%%
+%% Version 2.3.8 (12-Sept-2009)
+%%
+%% Copyright (C) Wenchang Sun <sunwch@hotmail.com>
+%%
+%% This file may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.3
+%% of this license or (at your option) any later version.
+%% The latest version of this license is in
+%% http://www.latex-project.org/lppl.txt
+%% and version 1.3 or later is part of all distributions of LaTeX
+%% version 2005/12/01 or later.
+%%
+
+\documentclass[11pt]{article}
+\textheight 220mm
+\textwidth 150mm
+\oddsidemargin 0pt
+\evensidemargin 0pt
+\usepackage[slantfont,boldfont]{xeCJK}
+\usepackage{xcolor}
+\usepackage{CJKfntef}
+
+\begin{document}
+\setCJKmainfont{AR PL SungtiL GB}% 设置缺省中文字体
+\setCJKmonofont{AR PL SungtiL GB}% 设置缺省中文字体
+
+\baselineskip 16pt
+\parindent 2em
+
+ \section{举例}
+\begin{verbatim}
+标点。
+\end{verbatim}
+
+\CJKunderline{汉字}\CJKunderline{加下划线加下划线加下划线加下划线%
+加下划线加下划线加下划线加下划线加下划线加下划线加下划线}
+
+\CJKunderwave{波浪线}
+
+\CJKunderanyline{0.5em}{\sixly \kern-.021em\char58 \kern-.021em}{自定义下划线}
+
+\CJKunderanyline{0.2em}{\kern-.03em\vtop{\kern.2ex\hrule width.2em\kern 0.11em
+ \hrule height .1em}\kern-.03em}{自定义下划线}
+
+\CJKunderanysymbol{0.2em}{$\cdot$}{汉字加点}
+
+\end{document}
+\endinput
+%%
+%% End of file `example-CJKfntef.tex'.
diff --git a/Master/texmf-dist/doc/xelatex/xecjk/example-addspaces.tex b/Master/texmf-dist/doc/xelatex/xecjk/example-addspaces.tex
new file mode 100644
index 00000000000..004ae3f3a8c
--- /dev/null
+++ b/Master/texmf-dist/doc/xelatex/xecjk/example-addspaces.tex
@@ -0,0 +1,57 @@
+%%
+%% This is file `example-addspaces.tex',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% xeCJK.dtx (with options: `example-addspaces')
+%%
+%% Version 2.3.8 (12-Sept-2009)
+%%
+%% Copyright (C) Wenchang Sun <sunwch@hotmail.com>
+%%
+%% This file may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.3
+%% of this license or (at your option) any later version.
+%% The latest version of this license is in
+%% http://www.latex-project.org/lppl.txt
+%% and version 1.3 or later is part of all distributions of LaTeX
+%% version 2005/12/01 or later.
+%%
+\documentclass{article}
+\usepackage[boldfont,slantfont]{xeCJK}
+\usepackage{xcolor}
+\setCJKmainfont{AR PL SungtiL GB}
+\textwidth 190mm
+\oddsidemargin 0pt
+\begin{document}
+\baselineskip 18pt
+\parskip 10pt
+\parindent 0em
+
+{\slshape 斜体 Slanted \bfseries 斜体 Slanted}
+
+\long\def\sometexts{\par{\color{\colora}
+ 这是 English 中文 {\itshape Chinese} 中文 \LaTeX\
+ 间隔 \textit{Italic} 中文\textbf{字体} a 数学 $b$ 数学 $c$ $d$
+\\
+ 这是English中文{\itshape Chinese}中文\LaTeX\
+ 间隔\textit{Italic}中文\textbf{字体}a数学$b$数学$c$ $d$\\
+This is an example. 这是一个例子
+}}
+
+\def\colora{blue}
+\CJKsetecglue{\hskip 0.15em plus 0.05em minus 0.05em}
+\verb+\CJKsetecglue{\hskip 0.15em plus 0.05em minus 0.05em}+
+\sometexts
+
+\def\colora{red}
+\CJKsetecglue{ }
+\verb+\CJKsetecglue{ }+
+\sometexts
+
+\end{document}
+
+\endinput
+%%
+%% End of file `example-addspaces.tex'.
diff --git a/Master/texmf-dist/doc/xelatex/xecjk/examples/example-CJKchecksingle.tex b/Master/texmf-dist/doc/xelatex/xecjk/examples/example-CJKchecksingle.tex
index db13d8b5da6..cb95a60e93b 100644
--- a/Master/texmf-dist/doc/xelatex/xecjk/examples/example-CJKchecksingle.tex
+++ b/Master/texmf-dist/doc/xelatex/xecjk/examples/example-CJKchecksingle.tex
@@ -6,7 +6,7 @@
%%
%% xeCJK.dtx (with options: `example-CJKchecksingle')
%%
-%% Version 2.3.5 (2-Aug-2009)
+%% Version 2.3.8 (12-Sept-2009)
%%
%% Copyright (C) Wenchang Sun <sunwch@hotmail.com>
%%
diff --git a/Master/texmf-dist/doc/xelatex/xecjk/examples/example-CJKfntef.tex b/Master/texmf-dist/doc/xelatex/xecjk/examples/example-CJKfntef.tex
index a53bf000026..54e885ae26a 100644
--- a/Master/texmf-dist/doc/xelatex/xecjk/examples/example-CJKfntef.tex
+++ b/Master/texmf-dist/doc/xelatex/xecjk/examples/example-CJKfntef.tex
@@ -6,7 +6,7 @@
%%
%% xeCJK.dtx (with options: `example-CJKfntef')
%%
-%% Version 2.3.5 (2-Aug-2009)
+%% Version 2.3.8 (12-Sept-2009)
%%
%% Copyright (C) Wenchang Sun <sunwch@hotmail.com>
%%
diff --git a/Master/texmf-dist/doc/xelatex/xecjk/examples/example-addspaces.tex b/Master/texmf-dist/doc/xelatex/xecjk/examples/example-addspaces.tex
index 67f9e8f8241..004ae3f3a8c 100644
--- a/Master/texmf-dist/doc/xelatex/xecjk/examples/example-addspaces.tex
+++ b/Master/texmf-dist/doc/xelatex/xecjk/examples/example-addspaces.tex
@@ -6,7 +6,7 @@
%%
%% xeCJK.dtx (with options: `example-addspaces')
%%
-%% Version 2.3.5 (2-Aug-2009)
+%% Version 2.3.8 (12-Sept-2009)
%%
%% Copyright (C) Wenchang Sun <sunwch@hotmail.com>
%%
@@ -29,6 +29,8 @@
\parskip 10pt
\parindent 0em
+{\slshape 斜体 Slanted \bfseries 斜体 Slanted}
+
\long\def\sometexts{\par{\color{\colora}
这是 English 中文 {\itshape Chinese} 中文 \LaTeX\
间隔 \textit{Italic} 中文\textbf{字体} a 数学 $b$ 数学 $c$ $d$
@@ -47,6 +49,7 @@ This is an example. 这是一个例子
\CJKsetecglue{ }
\verb+\CJKsetecglue{ }+
\sometexts
+
\end{document}
\endinput
diff --git a/Master/texmf-dist/doc/xelatex/xecjk/xeCJK.pdf b/Master/texmf-dist/doc/xelatex/xecjk/xeCJK.pdf
index 0b13e1a8bda..eafda729e16 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/source/xelatex/xecjk/xeCJK.dtx b/Master/texmf-dist/source/xelatex/xecjk/xeCJK.dtx
index baefa254343..5e09ae3d12e 100644
--- a/Master/texmf-dist/source/xelatex/xecjk/xeCJK.dtx
+++ b/Master/texmf-dist/source/xelatex/xecjk/xeCJK.dtx
@@ -26,7 +26,7 @@ CJK scripts easily.
\keepsilent
\preamble
- Version 2.3.5 (2-Aug-2009)
+ Version 2.3.8 (12-Sept-2009)
Copyright (C) Wenchang Sun <sunwch@hotmail.com>
@@ -129,8 +129,8 @@ CJK scripts easily.
%</driver>
%
%<*xeCJK>
-\def\fileversion{2.3.5}
-\def\filedate{2009/08/02}
+\def\fileversion{2.3.8}
+\def\filedate{2009/09/12}
\ProvidesPackage{xeCJK}[\filedate\space\fileversion]
%</xeCJK>
%
@@ -203,7 +203,7 @@ CJK scripts easily.
% \begin{tabular}{ll}
% Options & \\
% BoldFont:& 启用CJK\textbf{粗体字}\\
-% SlantFont:& 启用CJK\textit{斜体字}\\
+% SlantFont:& 启用 \textsl{斜体字slshape}\\
% CJKnumber: & 调用CJKnumb宏包\\
% CJKchecksingle: &避免单个汉字单独占一行。
% \end{tabular}
@@ -219,8 +219,8 @@ CJK scripts easily.
% 分别设置缺省CJK字体, CJK sffamily, CJK ttfamily 和某个 CJKfamily 所对应中文字体,
% 其中最后两个参数的意义请参考 \verb+\fontspec.+
%
-% 如果在定义CJK字体时 指定了\texttt{ItalicFont=\{...\}},
-% 则宏包的\texttt{SlantFont}选项对该字体不起作用。
+% 定义CJK字体时指定的\texttt{ItalicFont=\{...\}}比宏包的
+% \texttt{SlantFont}选项有更高的优先级。
% 类似地,可以指定\texttt{BoldFont=\{font name\}}以抑制
% \texttt{BoldFont}选项。
%
@@ -309,8 +309,8 @@ CJK scripts easily.
%
%
%
-% \defmacro{\CJKsetecglue}: 设置中英文间距. 缺省值为\defmacro{\CJKsetecglue\{ \}}。
-%
+% \defmacro{\CJKsetecglue}: 设置中英文间距. 缺省值为\defmacro{\CJKsetecglue\{ \}}.
+% 注意: 这个宏命令仅仅影响自动添加的空格. 源文件中直接输入的中英文之间的空格不受影响(直接输出).
% \begin{verbatim}
% 这是 English 中文 \textit{Chinese} 中文 \LaTeX\
% 中文\textbf{字体} a {\bfseries 数学} $c$ $d$-th\par
@@ -329,7 +329,7 @@ CJK scripts easily.
% 说明:
% \begin{enumerate}
%
-% \item \verb+{<texts>} {<texts>}+ 以及\verb+English {<texts>}+中间的空格会保留(不能调整),
+% \item 中英文之间的空格会保留(不能调整),
% 但若没有空格,则会根据需要添加(见上面的例子)。
%
% 有时可能无效,
@@ -866,7 +866,7 @@ CJK scripts easily.
\def\xeCJK@cclv@{
\ifnum\lastkern=\@ne
- \CJKecglue
+ \@sptoken%\CJKecglue
\fi}
\let\xeCJK@cclv@iv\xeCJK@cclv@
@@ -875,7 +875,7 @@ CJK scripts easily.
\CJKglue
\else
\ifnum\lastkern=\xeCJK@four
- \CJKecglue
+ \@sptoken%\CJKecglue
\else
\ifnum\lastnodetype=\xeCJK@ten
\CJKecglue
@@ -931,7 +931,14 @@ CJK scripts easily.
\def\xeCJK@@@checknext{
\ifx $\@let@token
- \CJKecglue
+ \@sptoken%\CJKecglue
+ \else
+ \if\relax\noexpand\@let@token
+ \ifx\@let@token\xeCJK@par
+ \else
+ \@sptoken
+ \fi
+ \fi
\fi
\let\xeCJK@nexttoken\relax}
@@ -971,8 +978,9 @@ CJK scripts easily.
\expandafter\xeCJK@setcurrentchar@ii
\fi}
+\let\xeCJK@par\par
\def\xeCJK@checkpar{
- \@ifnextchar\par{\xeCJK@setcurrentnobreakchar@ii}{\xeCJK@setcurrentchar@ii}}
+ \@ifnextchar\xeCJK@par{\xeCJK@setcurrentnobreakchar@ii}{\xeCJK@setcurrentchar@ii}}
% \end{macrocode}
%
% 设置中英文间距。
@@ -1280,9 +1288,9 @@ CJK scripts easily.
\def\setCJKfamilyfont#1{
\xeCJK@newfontfamily{#1}}
-
-%
-% Redefine \rmfamily, \sffamily and \ttfamily to set CJKfamily
+% \end{macrocode}
+% Redefine \string\rmfamily, \string\sffamily and \string\ttfamily to set CJKfamily
+% \begin{macrocode}
\DeclareRobustCommand\rmfamily
{\not@math@alphabet\rmfamily\mathrm
\fontfamily\rmdefault\CJKfamily{rm}\selectfont}
@@ -1294,9 +1302,10 @@ CJK scripts easily.
\DeclareRobustCommand\ttfamily
{\not@math@alphabet\ttfamily\mathtt
\fontfamily\ttdefault\CJKfamily{tt}\selectfont}
-
-% \xeCJK@newfontfamily is similar to \newfontfamily
+% \end{macrocode}
+% \string\xeCJK@newfontfamily is similar to \string\newfontfamily
% but introduce fake slant/bold fonts for CJK characters.
+% \begin{macrocode}
\newcommand*\xeCJK@newfontfamily[1]{
\@ifnextchar[
{\xeCJK@newfontfamily@{#1}}
@@ -1305,117 +1314,41 @@ CJK scripts easily.
\def\xeCJK@newfontfamily@#1[#2]#3{
%
% Get user defined options
- \def\xeCJK@temp{#2}
- \expandafter
- \xeCJK@getBoldFont\xeCJK@temp BoldFont={}{}\relax
- \expandafter
- \xeCJK@getBoldItalicFont\xeCJK@temp BoldItalicFont={}{}\relax
- \expandafter
- \xeCJK@getItalicFont\xeCJK@temp ItalicFont={}{}\relax
-
- \expandafter
- \xeCJK@getBoldItalicFeatures\xeCJK@temp BoldItalicFeatures={}{}\relax
+ \def\xeCJK@temp{#2,}
\expandafter
- \xeCJK@getBoldFeatures\xeCJK@temp BoldFeatures={}{}\relax
+ \xeCJK@getBoldFont\xeCJK@temp BoldFont={},{}\relax
\expandafter
- \xeCJK@getItalicFeatures\xeCJK@temp ItalicFeatures={}{}\relax
-
- \expandafter
- \xeCJK@getRawFeature\xeCJK@BoldFeatures RawFeature={}{}\relax
- \edef\xeCJK@Bold@RawFeature{\xeCJK@tempRawFeature}
-
- \expandafter
- \xeCJK@getRawFeature\xeCJK@BoldItalicFeatures RawFeature={}{}\relax
- \edef\xeCJK@BoldItalic@RawFeature{\xeCJK@tempRawFeature}
-
+ \xeCJK@getBoldItalicFont\xeCJK@temp BoldItalicFont={},{}\relax
\expandafter
- \xeCJK@getRawFeature\xeCJK@ItalicFeatures RawFeature={}{}\relax
- \edef\xeCJK@Italic@RawFeature{\xeCJK@tempRawFeature}
+ \xeCJK@getItalicFont\xeCJK@temp ItalicFont={},{}\relax
\edef\xeCJK@Features{}
\ifxeCJK@BoldFont@
\ifx\xeCJK@BoldFont\@empty
-
- \ifx\xeCJK@Bold@RawFeature\@empty
- \def\xeCJK@Bold@RawFeature{
- embolden=\xeCJK@emboldenfactor}
- \else
- \edef\xeCJK@Bold@RawFeature{
- embolden=\xeCJK@emboldenfactor,
- \xeCJK@Bold@RawFeature}
- \fi
-
- \ifx\xeCJK@BoldFeatures\@empty
- \edef\xeCJK@Features{
- BoldFeatures={
- RawFeature={\xeCJK@Bold@RawFeature}}}
- \else
- \edef\xeCJK@Features{
- BoldFeatures={
- \xeCJK@BoldFeatures,
- RawFeature={\xeCJK@Bold@RawFeature}}}
- \fi
-
- \ifx\xeCJK@BoldItalic@RawFeature\@empty
- \def\xeCJK@BoldItalic@RawFeature{
- embolden=\xeCJK@emboldenfactor}
- \else
- \edef\xeCJK@BoldItalic@RawFeature{
- embolden=\xeCJK@emboldenfactor,
- \xeCJK@BoldItalic@RawFeature}
- \fi
+ \edef\xeCJK@Features{BoldFont={#3},
+ BoldFeatures={RawFeature={embolden=\xeCJK@emboldenfactor}}}
\fi
\fi
\ifxeCJK@SlantFont@
\ifx\xeCJK@ItalicFont\@empty
-
- \ifx\xeCJK@Italic@RawFeature\@empty
- \edef\xeCJK@Italic@RawFeature{
- slant=\xeCJK@slantfactor}
- \else
- \edef\xeCJK@Italic@RawFeature{
- slant=\xeCJK@slantfactor,
- \xeCJK@Italic@RawFeature}
- \fi
-
- \ifx\xeCJK@ItalicFeatures\@empty
- \edef\xeCJK@ItalicFeatures{
- RawFeature={\xeCJK@Italic@RawFeature}}
- \else
- \edef\xeCJK@ItalicFeatures{
- \xeCJK@ItalicFeatures,
- RawFeature={\xeCJK@Italic@RawFeature}}
- \fi
-
- \ifx\xeCJK@BoldItalic@RawFeature\@empty
- \edef\xeCJK@BoldItalic@RawFeature{
- slant=\xeCJK@slantfactor}
- \else
- \edef\xeCJK@BoldItalic@RawFeature{
- slant=\xeCJK@slantfactor,
- \xeCJK@BoldItalic@RawFeature}
- \fi
-
- \ifx\xeCJK@BoldItalicFeatures\@empty
- \edef\xeCJK@BoldItalicFeatures{
- RawFeature={\xeCJK@BoldItalic@RawFeature}}
+ \ifx\xeCJK@Features\@empty
+ \edef\xeCJK@Features{ItalicFont={#3},
+ ItalicFeatures={RawFeature={slant=\xeCJK@slantfactor}}}
\else
- \edef\xeCJK@BoldItalicFeatures{
- \xeCJK@BoldItalicFeatures,
- RawFeature={\xeCJK@BoldItalic@RawFeature}}
+ \edef\xeCJK@Features{\xeCJK@Features,ItalicFont={#3},
+ ItalicFeatures={RawFeature={slant=\xeCJK@slantfactor}}}
\fi
+ \fi
- \ifx\xeCJK@Features\@empty
- \edef\xeCJK@Features{
- ItalicFeatures={\xeCJK@ItalicFeatures},
- BoldItalicFeatures={\xeCJK@BoldItalicFeatures}}
+ \ifx\xeCJK@BoldItalicFont\@empty
+ \ifx\xeCJK@BoldFont\@empty
+ \edef\xeCJK@Features{\xeCJK@Features,BoldItalicFont={#3},
+ BoldItalicFeatures={RawFeature={embolden=\xeCJK@emboldenfactor,slant=\xeCJK@slantfactor}}}
\else
- \edef\xeCJK@Features{
- \xeCJK@Features,
- ItalicFeatures={\xeCJK@ItalicFeatures},
- BoldItalicFeatures={\xeCJK@BoldItalicFeatures}}
+ \edef\xeCJK@Features{\xeCJK@Features,BoldItalicFont={\xeCJK@BoldFont},
+ BoldItalicFeatures={RawFeature={slant=\xeCJK@slantfactor}}}
\fi
\fi
\fi
@@ -1423,53 +1356,156 @@ CJK scripts easily.
\edef\xeCJK@temp{#2}
\ifx\xeCJK@temp\@empty
\else
- \edef\xeCJK@temp{,#2}
- \fi
-
- \ifx\xeCJK@Features\@empty
- \else
- \edef\xeCJK@Features{,\xeCJK@Features}
+ \ifx\xeCJK@Features\@empty
+ \edef\xeCJK@Features{#2}
+ \else
+ \edef\xeCJK@Features{\xeCJK@Features,#2}
+ \fi
\fi
- \edef\xeCJK@Features{
- [BoldFont={#3},
- ItalicFont={#3},
- BoldItalicFont={#3}% The first three parameters can be overridden by
- % user defined parameters in #2
- \xeCJK@temp\xeCJK@Features]}
-
- \expandafter
- \newfontfamily@i\csname xeCJK@font@#1\expandafter\endcsname
- \xeCJK@Features
- {#3}
- \expandafter\edef\csname xeCJK@nsff\xeCJK@family\endcsname{\zf@family}}
+ \edef\@tempa{\noexpand\zf@fontspec{\xeCJK@Features}{#3}}
+ \@tempa
+ \edef\@tempa{
+ \noexpand\DeclareRobustCommand\expandafter\noexpand\csname xeCJK@font@#1\endcsname
+ {\noexpand\fontfamily{\zf@family}\noexpand\selectfont}}
+ \@tempa
+ \expandafter\edef\csname xeCJK@nsff#1\endcsname{\zf@family}}
\def\xeCJK@setmacro@getkey#1{
- \expandafter\def\csname xeCJK@get#1\endcsname ##1#1=##2##3\relax{
+ \expandafter\def\csname xeCJK@get#1\endcsname ##1#1=##2,##3\relax{
\expandafter\edef\csname xeCJK@#1\endcsname{##2}
\edef\xeCJK@temp{##1##3}}}
\xeCJK@setmacro@getkey{BoldFont}
\xeCJK@setmacro@getkey{ItalicFont}
\xeCJK@setmacro@getkey{BoldItalicFont}
-\xeCJK@setmacro@getkey{ItalicFeatures}
-\xeCJK@setmacro@getkey{BoldFeatures}
-\xeCJK@setmacro@getkey{BoldItalicFeatures}
-
-\def\xeCJK@getRawFeature#1RawFeature=#2#3\relax{
- \edef\xeCJK@tempRawFeature{#2}}
\define@key[zf]{preparse}{ItalicFeatures}{
\edef\zf@it@feat{,#1}
\edef\zf@family@long{\zf@family@long itfeat:#1}}
+% \end{macrocode}
+% Redefine \string\zf@fontspec to set slant shape.
+% \begin{macrocode}
+
+\renewcommand*\zf@fontspec[2]{%
+ \begingroup
+ \zf@init
+ \edef\zf@fontname{#2}%
+ \let\zf@family@long\zf@fontname
+ \setkeys*[zf]{prepreparse}{#1}%
+ \let\zf@up\zf@fontname
+ \edef\@tempa{\noexpand\setkeys*[zf]{preparse}{\XKV@rm}}\@tempa
+ \let\zf@fontname\zf@up
+ \let\zf@font@feat\XKV@rm
+ \font\zf@basefont="\zf@font@wrap\zf@fontname\zf@suffix" at \f@size pt
+ \unless\ifzf@icu
+ \zf@set@font@type
+ \fi
+ \ifx\zf@suffix\@empty
+ \ifzf@atsui
+ \def\zf@suffix{/AAT}%
+ \else
+ \ifzf@icu
+ \def\zf@suffix{/ICU}%
+ \fi
+ \fi
+ \font\zf@basefont="\zf@font@wrap\zf@fontname\zf@suffix" at \f@size pt
+ \fi
+ \zf@firsttimetrue
+ \zf@get@feature@requests{\zf@font@feat}%
+ \zf@firsttimefalse
+ \unless\ifcsname zf@UID@\zf@family@long\endcsname
+ \edef\@tempa{#2}%
+ \ifcsname c@zf@famc@\@tempa\endcsname
+ \expandafter\stepcounter\else
+ \expandafter\newcounter\fi
+ {zf@famc@\@tempa}%
+ \gdef@cx{zf@UID@\zf@family@long}{%
+ \expandafter\expandafter\expandafter
+ \zap@space\expandafter\@tempa\space\@empty
+ (\expandafter\the\csname c@zf@famc@\@tempa\endcsname)}%
+ \fi
+ \xdef\zf@family{\@nameuse{zf@UID@\zf@family@long}}%
+ \unless\ifcsname zf@family@fontname\zf@family\endcsname
+ \zf@PackageInfo{Defining font family for '#2'
+ with options [\zf@default@options #1]}%
+ \gdef@cx{zf@family@fontname\zf@family}{\zf@fontname}%
+ \gdef@cx{zf@family@options\zf@family}{\zf@default@options #1}%
+ \gdef@cx{zf@family@fontdef\zf@family}
+ {\zf@fontname\zf@suffix:\zf@pre@ff\zf@ff}%
+ \DeclareFontFamily{\zf@enc}{\zf@family}{}%
+ \zf@make@font@shapes{\zf@fontname}
+ {\mddefault}{\updefault}{\zf@font@feat\zf@up@feat}%
+ \unless\ifzf@nobf
+ \ifx\zf@bf\@empty
+ \zf@make@font@shapes[\zf@fontname]{/B}
+ {\bfdefault}{\updefault}{\zf@font@feat\zf@bf@feat}%
+ \else
+ \zf@make@font@shapes{\zf@bf}
+ {\bfdefault}{\updefault}{\zf@font@feat\zf@bf@feat}%
+ \fi
+ \fi
+ \unless\ifzf@noit
+ \ifx\zf@it\@empty
+ \zf@make@font@shapes[\zf@fontname]{/I}
+ {\mddefault}{\itdefault}{\zf@font@feat\zf@it@feat}%
+ \else
+ \zf@make@font@shapes{\zf@it}
+ {\mddefault}{\itdefault}{\zf@font@feat\zf@it@feat}%
+ \fi
+ \fi
+ \@tempswatrue
+ \ifzf@nobf\@tempswafalse\fi
+ \ifzf@noit\@tempswafalse\fi
+ \if@tempswa
+ \ifx\zf@bfit\@empty
+ \ifx\zf@bf\@empty
+ \ifx\zf@it\@empty
+ \zf@make@font@shapes[\zf@fontname]{/BI}
+ {\bfdefault}{\itdefault}{\zf@font@feat\zf@bfit@feat}%
+ \else
+ \zf@make@font@shapes[\zf@it]{/B}
+ {\bfdefault}{\itdefault}{\zf@font@feat\zf@bfit@feat}%
+ \fi
+ \else
+ \zf@make@font@shapes[\zf@bf]{/I}
+ {\bfdefault}{\itdefault}{\zf@font@feat\zf@bfit@feat}%
+ \fi
+ \else
+ \zf@make@font@shapes{\zf@bfit}
+ {\bfdefault}{\itdefault}{\zf@font@feat\zf@bfit@feat}%
+ \fi
+ \fi
+ \ifxeCJK@SlantFont@
+ \zf@make@font@shapes{\zf@fontname}{\mddefault}{\sldefault}
+ {\zf@font@feat,RawFeature={slant=0.167}}
+ \ifx\zf@bf\@empty
+ \ifzf@nobf
+ \zf@make@font@shapes{\zf@fontname}{\bfdefault}{\sldefault}
+ {\zf@font@feat,RawFeature={embolden=4,slant=0.167}}
+ \else
+ \zf@make@font@shapes[\zf@fontname]{/B}
+ {\bfdefault}{\sldefault}{\zf@font@feat\zf@bf@feat,RawFeature={slant=0.167}}
+ \fi
+ \else
+ \ifx\zf@fontname\zf@bf
+ \zf@make@font@shapes{\zf@fontname}{\bfdefault}{\sldefault}
+ {\zf@font@feat,RawFeature={embolden=4,slant=0.167}}
+ \else
+ \zf@make@font@shapes{\zf@bf}{\bfdefault}{\sldefault}
+ {\zf@font@feat\zf@bf@feat,RawFeature={slant=0.167}}
+ \fi
+ \fi
+ \fi
+ \fi
+ \endgroup}
\newcount\xeCJK@featureadded
\xeCJK@featureadded=0
\let\xeCJK@addfontfeatures\addfontfeatures
-\def\addfontfeatures#1{
+\def\addCJKfontfeatures#1{
\global\advance\xeCJK@featureadded\@ne
- \xeCJK@addfontfeatures{#1}
\ifcsname xeCJK@family\endcsname
\edef\xeCJK@temp{\csname xeCJK@nsff\xeCJK@family\endcsname}
\edef\xeCJK@Features{[\csname zf@family@options\xeCJK@temp\endcsname,#1]}
@@ -1481,6 +1517,11 @@ CJK scripts easily.
\CJKfamily{\xeCJK@family @\the\xeCJK@featureadded}
\fi}
+\def\addfontfeatures#1{
+ \xeCJK@addfontfeatures{#1}
+ \addCJKfontfeatures{#1}}
+
+
% redefine \CJKfamily.
\def\xeCJK@font@rm{}
@@ -1571,6 +1612,9 @@ CJK scripts easily.
\parskip 10pt
\parindent 0em
+{\slshape 斜体 Slanted \bfseries 斜体 Slanted}
+
+
\long\def\sometexts{\par{\color{\colora}
这是 English 中文 {\itshape Chinese} 中文 \LaTeX\
间隔 \textit{Italic} 中文\textbf{字体} a 数学 $b$ 数学 $c$ $d$
@@ -1589,6 +1633,7 @@ This is an example. 这是一个例子
\CJKsetecglue{ }
\verb+\CJKsetecglue{ }+
\sometexts
+
\end{document}
% \end{macrocode}
diff --git a/Master/texmf-dist/source/xelatex/xecjk/xeCJK.ins b/Master/texmf-dist/source/xelatex/xecjk/xeCJK.ins
new file mode 100644
index 00000000000..c88c4a5026b
--- /dev/null
+++ b/Master/texmf-dist/source/xelatex/xecjk/xeCJK.ins
@@ -0,0 +1,46 @@
+%%
+%% This is file `xeCJK.ins',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% xeCJK.dtx (with options: `batchfile')
+%%
+%% Version 2.3.8 (12-Sept-2009)
+%%
+%% Copyright (C) Wenchang Sun <sunwch@hotmail.com>
+%%
+%% This file may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.3
+%% of this license or (at your option) any later version.
+%% The latest version of this license is in
+%% http://www.latex-project.org/lppl.txt
+%% and version 1.3 or later is part of all distributions of LaTeX
+%% version 2005/12/01 or later.
+%%
+\input docstrip.tex
+\keepsilent
+\preamble
+
+ Version 2.3.8 (12-Sept-2009)
+
+ Copyright (C) Wenchang Sun <sunwch@hotmail.com>
+
+ This file may be distributed and/or modified under the
+ conditions of the LaTeX Project Public License, either version 1.3
+ of this license or (at your option) any later version.
+ The latest version of this license is in
+ http://www.latex-project.org/lppl.txt
+ and version 1.3 or later is part of all distributions of LaTeX
+ version 2005/12/01 or later.
+
+\endpreamble
+\askforoverwritefalse
+\generate{\file{xeCJK.sty}{\from{xeCJK.dtx}{xeCJK}}}
+\generate{\file{example-addspaces.tex}{\from{xeCJK.dtx}{example-addspaces}}}
+\generate{\file{example-CJKchecksingle.tex}{\from{xeCJK.dtx}{example-CJKchecksingle}}}
+\generate{\file{example-CJKfntef.tex}{\from{xeCJK.dtx}{example-CJKfntef}}}
+\endbatchfile
+\endinput
+%%
+%% End of file `xeCJK.ins'.
diff --git a/Master/texmf-dist/tex/xelatex/xecjk/xeCJK.sty b/Master/texmf-dist/tex/xelatex/xecjk/xeCJK.sty
index e0244c40305..06a4d0cae47 100644
--- a/Master/texmf-dist/tex/xelatex/xecjk/xeCJK.sty
+++ b/Master/texmf-dist/tex/xelatex/xecjk/xeCJK.sty
@@ -6,7 +6,7 @@
%%
%% xeCJK.dtx (with options: `xeCJK')
%%
-%% Version 2.3.5 (2-Aug-2009)
+%% Version 2.3.8 (12-Sept-2009)
%%
%% Copyright (C) Wenchang Sun <sunwch@hotmail.com>
%%
@@ -18,8 +18,8 @@
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
%%
-\def\fileversion{2.3.5}
-\def\filedate{2009/08/02}
+\def\fileversion{2.3.8}
+\def\filedate{2009/09/12}
\ProvidesPackage{xeCJK}[\filedate\space\fileversion]
\RequirePackage{ifxetex}
\RequireXeTeX
@@ -336,7 +336,7 @@
\def\xeCJK@cclv@{
\ifnum\lastkern=\@ne
- \CJKecglue
+ \@sptoken%\CJKecglue
\fi}
\let\xeCJK@cclv@iv\xeCJK@cclv@
@@ -345,7 +345,7 @@
\CJKglue
\else
\ifnum\lastkern=\xeCJK@four
- \CJKecglue
+ \@sptoken%\CJKecglue
\else
\ifnum\lastnodetype=\xeCJK@ten
\CJKecglue
@@ -401,7 +401,14 @@
\def\xeCJK@@@checknext{
\ifx $\@let@token
- \CJKecglue
+ \@sptoken%\CJKecglue
+ \else
+ \if\relax\noexpand\@let@token
+ \ifx\@let@token\xeCJK@par
+ \else
+ \@sptoken
+ \fi
+ \fi
\fi
\let\xeCJK@nexttoken\relax}
@@ -437,8 +444,9 @@
\expandafter\xeCJK@setcurrentchar@ii
\fi}
+\let\xeCJK@par\par
\def\xeCJK@checkpar{
- \@ifnextchar\par{\xeCJK@setcurrentnobreakchar@ii}{\xeCJK@setcurrentchar@ii}}
+ \@ifnextchar\xeCJK@par{\xeCJK@setcurrentnobreakchar@ii}{\xeCJK@setcurrentchar@ii}}
\def\xeCJKsetecglue#1{
\def\CJK@ecglue{#1}
@@ -721,7 +729,6 @@
\def\setCJKfamilyfont#1{
\xeCJK@newfontfamily{#1}}
-
\DeclareRobustCommand\rmfamily
{\not@math@alphabet\rmfamily\mathrm
\fontfamily\rmdefault\CJKfamily{rm}\selectfont}
@@ -733,7 +740,6 @@
\DeclareRobustCommand\ttfamily
{\not@math@alphabet\ttfamily\mathtt
\fontfamily\ttdefault\CJKfamily{tt}\selectfont}
-
\newcommand*\xeCJK@newfontfamily[1]{
\@ifnextchar[
{\xeCJK@newfontfamily@{#1}}
@@ -742,117 +748,41 @@
\def\xeCJK@newfontfamily@#1[#2]#3{
%
% Get user defined options
- \def\xeCJK@temp{#2}
- \expandafter
- \xeCJK@getBoldFont\xeCJK@temp BoldFont={}{}\relax
- \expandafter
- \xeCJK@getBoldItalicFont\xeCJK@temp BoldItalicFont={}{}\relax
- \expandafter
- \xeCJK@getItalicFont\xeCJK@temp ItalicFont={}{}\relax
-
- \expandafter
- \xeCJK@getBoldItalicFeatures\xeCJK@temp BoldItalicFeatures={}{}\relax
- \expandafter
- \xeCJK@getBoldFeatures\xeCJK@temp BoldFeatures={}{}\relax
- \expandafter
- \xeCJK@getItalicFeatures\xeCJK@temp ItalicFeatures={}{}\relax
-
+ \def\xeCJK@temp{#2,}
\expandafter
- \xeCJK@getRawFeature\xeCJK@BoldFeatures RawFeature={}{}\relax
- \edef\xeCJK@Bold@RawFeature{\xeCJK@tempRawFeature}
-
+ \xeCJK@getBoldFont\xeCJK@temp BoldFont={},{}\relax
\expandafter
- \xeCJK@getRawFeature\xeCJK@BoldItalicFeatures RawFeature={}{}\relax
- \edef\xeCJK@BoldItalic@RawFeature{\xeCJK@tempRawFeature}
-
+ \xeCJK@getBoldItalicFont\xeCJK@temp BoldItalicFont={},{}\relax
\expandafter
- \xeCJK@getRawFeature\xeCJK@ItalicFeatures RawFeature={}{}\relax
- \edef\xeCJK@Italic@RawFeature{\xeCJK@tempRawFeature}
+ \xeCJK@getItalicFont\xeCJK@temp ItalicFont={},{}\relax
\edef\xeCJK@Features{}
\ifxeCJK@BoldFont@
\ifx\xeCJK@BoldFont\@empty
-
- \ifx\xeCJK@Bold@RawFeature\@empty
- \def\xeCJK@Bold@RawFeature{
- embolden=\xeCJK@emboldenfactor}
- \else
- \edef\xeCJK@Bold@RawFeature{
- embolden=\xeCJK@emboldenfactor,
- \xeCJK@Bold@RawFeature}
- \fi
-
- \ifx\xeCJK@BoldFeatures\@empty
- \edef\xeCJK@Features{
- BoldFeatures={
- RawFeature={\xeCJK@Bold@RawFeature}}}
- \else
- \edef\xeCJK@Features{
- BoldFeatures={
- \xeCJK@BoldFeatures,
- RawFeature={\xeCJK@Bold@RawFeature}}}
- \fi
-
- \ifx\xeCJK@BoldItalic@RawFeature\@empty
- \def\xeCJK@BoldItalic@RawFeature{
- embolden=\xeCJK@emboldenfactor}
- \else
- \edef\xeCJK@BoldItalic@RawFeature{
- embolden=\xeCJK@emboldenfactor,
- \xeCJK@BoldItalic@RawFeature}
- \fi
+ \edef\xeCJK@Features{BoldFont={#3},
+ BoldFeatures={RawFeature={embolden=\xeCJK@emboldenfactor}}}
\fi
\fi
\ifxeCJK@SlantFont@
\ifx\xeCJK@ItalicFont\@empty
-
- \ifx\xeCJK@Italic@RawFeature\@empty
- \edef\xeCJK@Italic@RawFeature{
- slant=\xeCJK@slantfactor}
- \else
- \edef\xeCJK@Italic@RawFeature{
- slant=\xeCJK@slantfactor,
- \xeCJK@Italic@RawFeature}
- \fi
-
- \ifx\xeCJK@ItalicFeatures\@empty
- \edef\xeCJK@ItalicFeatures{
- RawFeature={\xeCJK@Italic@RawFeature}}
- \else
- \edef\xeCJK@ItalicFeatures{
- \xeCJK@ItalicFeatures,
- RawFeature={\xeCJK@Italic@RawFeature}}
- \fi
-
- \ifx\xeCJK@BoldItalic@RawFeature\@empty
- \edef\xeCJK@BoldItalic@RawFeature{
- slant=\xeCJK@slantfactor}
- \else
- \edef\xeCJK@BoldItalic@RawFeature{
- slant=\xeCJK@slantfactor,
- \xeCJK@BoldItalic@RawFeature}
- \fi
-
- \ifx\xeCJK@BoldItalicFeatures\@empty
- \edef\xeCJK@BoldItalicFeatures{
- RawFeature={\xeCJK@BoldItalic@RawFeature}}
+ \ifx\xeCJK@Features\@empty
+ \edef\xeCJK@Features{ItalicFont={#3},
+ ItalicFeatures={RawFeature={slant=\xeCJK@slantfactor}}}
\else
- \edef\xeCJK@BoldItalicFeatures{
- \xeCJK@BoldItalicFeatures,
- RawFeature={\xeCJK@BoldItalic@RawFeature}}
+ \edef\xeCJK@Features{\xeCJK@Features,ItalicFont={#3},
+ ItalicFeatures={RawFeature={slant=\xeCJK@slantfactor}}}
\fi
+ \fi
- \ifx\xeCJK@Features\@empty
- \edef\xeCJK@Features{
- ItalicFeatures={\xeCJK@ItalicFeatures},
- BoldItalicFeatures={\xeCJK@BoldItalicFeatures}}
+ \ifx\xeCJK@BoldItalicFont\@empty
+ \ifx\xeCJK@BoldFont\@empty
+ \edef\xeCJK@Features{\xeCJK@Features,BoldItalicFont={#3},
+ BoldItalicFeatures={RawFeature={embolden=\xeCJK@emboldenfactor,slant=\xeCJK@slantfactor}}}
\else
- \edef\xeCJK@Features{
- \xeCJK@Features,
- ItalicFeatures={\xeCJK@ItalicFeatures},
- BoldItalicFeatures={\xeCJK@BoldItalicFeatures}}
+ \edef\xeCJK@Features{\xeCJK@Features,BoldItalicFont={\xeCJK@BoldFont},
+ BoldItalicFeatures={RawFeature={slant=\xeCJK@slantfactor}}}
\fi
\fi
\fi
@@ -860,53 +790,153 @@
\edef\xeCJK@temp{#2}
\ifx\xeCJK@temp\@empty
\else
- \edef\xeCJK@temp{,#2}
- \fi
-
- \ifx\xeCJK@Features\@empty
- \else
- \edef\xeCJK@Features{,\xeCJK@Features}
+ \ifx\xeCJK@Features\@empty
+ \edef\xeCJK@Features{#2}
+ \else
+ \edef\xeCJK@Features{\xeCJK@Features,#2}
+ \fi
\fi
- \edef\xeCJK@Features{
- [BoldFont={#3},
- ItalicFont={#3},
- BoldItalicFont={#3}% The first three parameters can be overridden by
- % user defined parameters in #2
- \xeCJK@temp\xeCJK@Features]}
-
- \expandafter
- \newfontfamily@i\csname xeCJK@font@#1\expandafter\endcsname
- \xeCJK@Features
- {#3}
- \expandafter\edef\csname xeCJK@nsff\xeCJK@family\endcsname{\zf@family}}
+ \edef\@tempa{\noexpand\zf@fontspec{\xeCJK@Features}{#3}}
+ \@tempa
+ \edef\@tempa{
+ \noexpand\DeclareRobustCommand\expandafter\noexpand\csname xeCJK@font@#1\endcsname
+ {\noexpand\fontfamily{\zf@family}\noexpand\selectfont}}
+ \@tempa
+ \expandafter\edef\csname xeCJK@nsff#1\endcsname{\zf@family}}
\def\xeCJK@setmacro@getkey#1{
- \expandafter\def\csname xeCJK@get#1\endcsname ##1#1=##2##3\relax{
+ \expandafter\def\csname xeCJK@get#1\endcsname ##1#1=##2,##3\relax{
\expandafter\edef\csname xeCJK@#1\endcsname{##2}
\edef\xeCJK@temp{##1##3}}}
\xeCJK@setmacro@getkey{BoldFont}
\xeCJK@setmacro@getkey{ItalicFont}
\xeCJK@setmacro@getkey{BoldItalicFont}
-\xeCJK@setmacro@getkey{ItalicFeatures}
-\xeCJK@setmacro@getkey{BoldFeatures}
-\xeCJK@setmacro@getkey{BoldItalicFeatures}
-
-\def\xeCJK@getRawFeature#1RawFeature=#2#3\relax{
- \edef\xeCJK@tempRawFeature{#2}}
\define@key[zf]{preparse}{ItalicFeatures}{
\edef\zf@it@feat{,#1}
\edef\zf@family@long{\zf@family@long itfeat:#1}}
+\renewcommand*\zf@fontspec[2]{%
+ \begingroup
+ \zf@init
+ \edef\zf@fontname{#2}%
+ \let\zf@family@long\zf@fontname
+ \setkeys*[zf]{prepreparse}{#1}%
+ \let\zf@up\zf@fontname
+ \edef\@tempa{\noexpand\setkeys*[zf]{preparse}{\XKV@rm}}\@tempa
+ \let\zf@fontname\zf@up
+ \let\zf@font@feat\XKV@rm
+ \font\zf@basefont="\zf@font@wrap\zf@fontname\zf@suffix" at \f@size pt
+ \unless\ifzf@icu
+ \zf@set@font@type
+ \fi
+ \ifx\zf@suffix\@empty
+ \ifzf@atsui
+ \def\zf@suffix{/AAT}%
+ \else
+ \ifzf@icu
+ \def\zf@suffix{/ICU}%
+ \fi
+ \fi
+ \font\zf@basefont="\zf@font@wrap\zf@fontname\zf@suffix" at \f@size pt
+ \fi
+ \zf@firsttimetrue
+ \zf@get@feature@requests{\zf@font@feat}%
+ \zf@firsttimefalse
+ \unless\ifcsname zf@UID@\zf@family@long\endcsname
+ \edef\@tempa{#2}%
+ \ifcsname c@zf@famc@\@tempa\endcsname
+ \expandafter\stepcounter\else
+ \expandafter\newcounter\fi
+ {zf@famc@\@tempa}%
+ \gdef@cx{zf@UID@\zf@family@long}{%
+ \expandafter\expandafter\expandafter
+ \zap@space\expandafter\@tempa\space\@empty
+ (\expandafter\the\csname c@zf@famc@\@tempa\endcsname)}%
+ \fi
+ \xdef\zf@family{\@nameuse{zf@UID@\zf@family@long}}%
+ \unless\ifcsname zf@family@fontname\zf@family\endcsname
+ \zf@PackageInfo{Defining font family for '#2'
+ with options [\zf@default@options #1]}%
+ \gdef@cx{zf@family@fontname\zf@family}{\zf@fontname}%
+ \gdef@cx{zf@family@options\zf@family}{\zf@default@options #1}%
+ \gdef@cx{zf@family@fontdef\zf@family}
+ {\zf@fontname\zf@suffix:\zf@pre@ff\zf@ff}%
+ \DeclareFontFamily{\zf@enc}{\zf@family}{}%
+ \zf@make@font@shapes{\zf@fontname}
+ {\mddefault}{\updefault}{\zf@font@feat\zf@up@feat}%
+ \unless\ifzf@nobf
+ \ifx\zf@bf\@empty
+ \zf@make@font@shapes[\zf@fontname]{/B}
+ {\bfdefault}{\updefault}{\zf@font@feat\zf@bf@feat}%
+ \else
+ \zf@make@font@shapes{\zf@bf}
+ {\bfdefault}{\updefault}{\zf@font@feat\zf@bf@feat}%
+ \fi
+ \fi
+ \unless\ifzf@noit
+ \ifx\zf@it\@empty
+ \zf@make@font@shapes[\zf@fontname]{/I}
+ {\mddefault}{\itdefault}{\zf@font@feat\zf@it@feat}%
+ \else
+ \zf@make@font@shapes{\zf@it}
+ {\mddefault}{\itdefault}{\zf@font@feat\zf@it@feat}%
+ \fi
+ \fi
+ \@tempswatrue
+ \ifzf@nobf\@tempswafalse\fi
+ \ifzf@noit\@tempswafalse\fi
+ \if@tempswa
+ \ifx\zf@bfit\@empty
+ \ifx\zf@bf\@empty
+ \ifx\zf@it\@empty
+ \zf@make@font@shapes[\zf@fontname]{/BI}
+ {\bfdefault}{\itdefault}{\zf@font@feat\zf@bfit@feat}%
+ \else
+ \zf@make@font@shapes[\zf@it]{/B}
+ {\bfdefault}{\itdefault}{\zf@font@feat\zf@bfit@feat}%
+ \fi
+ \else
+ \zf@make@font@shapes[\zf@bf]{/I}
+ {\bfdefault}{\itdefault}{\zf@font@feat\zf@bfit@feat}%
+ \fi
+ \else
+ \zf@make@font@shapes{\zf@bfit}
+ {\bfdefault}{\itdefault}{\zf@font@feat\zf@bfit@feat}%
+ \fi
+ \fi
+ \ifxeCJK@SlantFont@
+ \zf@make@font@shapes{\zf@fontname}{\mddefault}{\sldefault}
+ {\zf@font@feat,RawFeature={slant=0.167}}
+ \ifx\zf@bf\@empty
+ \ifzf@nobf
+ \zf@make@font@shapes{\zf@fontname}{\bfdefault}{\sldefault}
+ {\zf@font@feat,RawFeature={embolden=4,slant=0.167}}
+ \else
+ \zf@make@font@shapes[\zf@fontname]{/B}
+ {\bfdefault}{\sldefault}{\zf@font@feat\zf@bf@feat,RawFeature={slant=0.167}}
+ \fi
+ \else
+ \ifx\zf@fontname\zf@bf
+ \zf@make@font@shapes{\zf@fontname}{\bfdefault}{\sldefault}
+ {\zf@font@feat,RawFeature={embolden=4,slant=0.167}}
+ \else
+ \zf@make@font@shapes{\zf@bf}{\bfdefault}{\sldefault}
+ {\zf@font@feat\zf@bf@feat,RawFeature={slant=0.167}}
+ \fi
+ \fi
+ \fi
+ \fi
+ \endgroup}
+
\newcount\xeCJK@featureadded
\xeCJK@featureadded=0
\let\xeCJK@addfontfeatures\addfontfeatures
-\def\addfontfeatures#1{
+\def\addCJKfontfeatures#1{
\global\advance\xeCJK@featureadded\@ne
- \xeCJK@addfontfeatures{#1}
\ifcsname xeCJK@family\endcsname
\edef\xeCJK@temp{\csname xeCJK@nsff\xeCJK@family\endcsname}
\edef\xeCJK@Features{[\csname zf@family@options\xeCJK@temp\endcsname,#1]}
@@ -918,6 +948,10 @@
\CJKfamily{\xeCJK@family @\the\xeCJK@featureadded}
\fi}
+\def\addfontfeatures#1{
+ \xeCJK@addfontfeatures{#1}
+ \addCJKfontfeatures{#1}}
+
\def\xeCJK@font@rm{}