diff options
author | Karl Berry <karl@freefriends.org> | 2009-09-15 00:42:27 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2009-09-15 00:42:27 +0000 |
commit | 9b5c0be75f6856d930bda2f309319b167a6ea2fb (patch) | |
tree | 634dc72a8f8a7422675947d0837020332cd76f05 /Master/texmf-dist | |
parent | ecbaa3a13d808b7db882290d1ffe9e3c45db774d (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.txt | 9 | ||||
-rw-r--r-- | Master/texmf-dist/doc/xelatex/xecjk/example-CJKchecksingle.tex | 52 | ||||
-rw-r--r-- | Master/texmf-dist/doc/xelatex/xecjk/example-CJKfntef.tex | 58 | ||||
-rw-r--r-- | Master/texmf-dist/doc/xelatex/xecjk/example-addspaces.tex | 57 | ||||
-rw-r--r-- | Master/texmf-dist/doc/xelatex/xecjk/examples/example-CJKchecksingle.tex | 2 | ||||
-rw-r--r-- | Master/texmf-dist/doc/xelatex/xecjk/examples/example-CJKfntef.tex | 2 | ||||
-rw-r--r-- | Master/texmf-dist/doc/xelatex/xecjk/examples/example-addspaces.tex | 5 | ||||
-rw-r--r-- | Master/texmf-dist/doc/xelatex/xecjk/xeCJK.pdf | bin | 275885 -> 293569 bytes | |||
-rw-r--r-- | Master/texmf-dist/source/xelatex/xecjk/xeCJK.dtx | 323 | ||||
-rw-r--r-- | Master/texmf-dist/source/xelatex/xecjk/xeCJK.ins | 46 | ||||
-rw-r--r-- | Master/texmf-dist/tex/xelatex/xecjk/xeCJK.sty | 294 |
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 Binary files differindex 0b13e1a8bda..eafda729e16 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/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{} |