summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex/bxcjkjatype
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2013-11-03 23:41:58 +0000
committerKarl Berry <karl@freefriends.org>2013-11-03 23:41:58 +0000
commit5ce7edc70ecd5dba9645d946c65be9ab5095ed0b (patch)
tree3e7410f1d7e7efb44d4e77f6b94264ac219dfab5 /Master/texmf-dist/tex/latex/bxcjkjatype
parent40dd5deea554f1ec46b8fd7b196adc94d193aed3 (diff)
bxcjkjatype
git-svn-id: svn://tug.org/texlive/trunk@32048 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex/bxcjkjatype')
-rw-r--r--Master/texmf-dist/tex/latex/bxcjkjatype/bxcjkjatype.sty179
1 files changed, 158 insertions, 21 deletions
diff --git a/Master/texmf-dist/tex/latex/bxcjkjatype/bxcjkjatype.sty b/Master/texmf-dist/tex/latex/bxcjkjatype/bxcjkjatype.sty
index 0f386f87f36..0ab4cb73851 100644
--- a/Master/texmf-dist/tex/latex/bxcjkjatype/bxcjkjatype.sty
+++ b/Master/texmf-dist/tex/latex/bxcjkjatype/bxcjkjatype.sty
@@ -4,7 +4,7 @@
%% package declaration
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{bxcjkjatype}[2013/09/28 v0.2b]
+\ProvidesPackage{bxcjkjatype}[2013/10/18 v0.2c]
\def\bxjy@pkgname{bxcjkjatype}
%% definitions
@@ -30,6 +30,11 @@
\else \expandafter\@secondoftwo \fi
}
+%% \bxjy@cond\ifXX...\fi{<true>}{<false>}
+\@gobbletwo\if\if \def\bxjy@cond#1\fi{%
+ #1\expandafter\@firstoftwo\else\expandafter\@secondoftwo\fi
+}
+
%--------------------------------------- environment check
%% engine check
@@ -46,6 +51,9 @@
%--------------------------------------- option handling
+%% using keyval
+\RequirePackage{keyval}
+
%% Declares options
\let\bxjy@driver\@undefined
\let\bxjy@none=n
@@ -88,6 +96,13 @@
\def\bxjy@do#1{\DeclareOption{#1}{\def\bxjy@main@preset{#1}}}
\@for\bxjy@x:=\bxjy@all@main@preset\do{%
\expandafter\bxjy@do\expandafter{\bxjy@x}}
+% keyval-type
+\DeclareOption*{%
+ \expandafter\bxjy@setkey@a\expandafter{\CurrentOption}}
+\def\bxjy@setkey@a{\setkeys{bxjy}}
+\let\bxjy@scale\relax
+\define@key{bxjy}{scale}{%
+ \def\bxjy@scale{#1}}
%% Dispatch options
\ProcessOptions*
@@ -123,6 +138,24 @@
\bxjy@error{Preset options require a valid driver}\@ehc
\let\bxjy@main@preset\relax
\fi\fi
+\ifx i\bxjy@oneweight \unless\ifx\bxjy@scale\relax
+ \bxjy@error{Scaling cannot go with 'ipaex-type1'}\@ehc
+ \let\bxjy@main@preset\relax
+\fi\fi
+
+%% default scale value
+\ifx\bxjy@scale\relax
+ \ifx\Cjascale\@undefined
+ \ifx\jsScale\@undefined
+ \def\bxjy@scale{1}
+ \else \let\bxjy@scale\jsScale
+ \fi
+ \else \let\bxjy@scale\Cjascale
+ \fi
+\fi
+\ifx i\bxjy@oneweight
+ \def\bxjy@scale{1}%
+\fi
%--------------------------------------- preparations
@@ -228,17 +261,6 @@
\EveryCJKUse{%
\ifbxjy@autotilde \CJKtilde \fi}
-%%<*> \UTF{<hex-number>}
-\newcommand*\UTF[1]{%
- \edef\bxjy@tmpa{#1}%
- \expandafter\bxjy@utf@a\bxjy@tmpa\bxjy@mark000000\bxjy@end}
-\def\bxjy@utf@a#1#2#3#4#5#6#7#8\bxjy@end{%
- \bxjy@utf@b#1#2#3#4#5#6#7\bxjy@end}
-\def\bxjy@utf@b#1\bxjy@mark#2\bxjy@end{%
- \uppercase{\bxjy@utf@c#2#1}\bxjy@end}
-\def\bxjy@utf@c#1#2#3#4#5#6\bxjy@end{%
- \Unicode{"#1#2#3#4}{"#5#6}}
-
%%<*> \CJKecglue
\unless\ifdefined\CJKecglue
\def\CJKtilde{%
@@ -252,6 +274,120 @@
\def\>{\ifmmode\mskip\medmuskip\else \CJKecglue\ignorespaces \fi}
\fi
+%--------------------------------------- something Unicode
+
+%% \bxjy@pick@char\CSnext\CSexit
+\def\bxjy@pick@char#1#2{%
+ \let\bxjy@pc@next#1\let\bxjy@pc@exit#2%
+ \futurelet\bxjy@pc@tok\bxjy@pick@char@a
+}
+\def\bxjy@pick@char@a{%
+ \bxjy@cond\ifcat\noexpand\bxjy@pc@tok\relax\fi{%
+ \bxjy@pick@char@b
+ }{\bxjy@pc@exit}%
+}
+\chardef\bxjy@csta="C0
+\def\bxjy@pick@char@b#1{%
+ \bxjy@cond{\ifnum0\ifcat\noexpand#1\noexpand~%
+ \ifnum`#1<\bxjy@csta\else1\fi\fi =\@ne}\fi{%
+ \begingroup
+ \let\UTFviii@two@octets\bxjy@pcseq@two
+ \let\UTFviii@three@octets\bxjy@pcseq@three
+ \let\UTFviii@four@octets\bxjy@pcseq@four
+ \let\CJK@@@\bxjy@pcseq@cjk
+ \expandafter\bxjy@pick@char@c\romannumeral-`>#1%
+ }{\bxjy@pc@exit#1}%
+}
+\def\bxjy@pick@char@c#1\bxjy@end{%
+ \endgroup
+ \edef\bxjy@tmpa{{#1}}%
+ \expandafter\bxjy@pc@next\bxjy@tmpa
+}
+
+%% \bxjy@pcseq@two
+\def\bxjy@pcseq@two#1#2{#1\string#2\bxjy@end}
+\def\bxjy@pcseq@three#1#2#3{#1\string#2\string#3\bxjy@end}
+\def\bxjy@pcseq@four#1#2#3#4{#1\string#2\string#3\string#4\bxjy@end}
+\def\bxjy@pcseq@cjk#1\expandafter#2#3#4#5#6#7#8#9\fi{%
+ \csname bxjy@X/\string#4\expandafter\endcsname\string#8}
+\@namedef{bxjy@X/\string\CJK@XX}{\bxjy@pcseq@two}
+\@namedef{bxjy@X/\string\CJK@XXX}{\bxjy@pcseq@three}
+\@namedef{bxjy@X/\string\CJK@XXXX}{\bxjy@pcseq@four}
+
+%% \bxjy@pick@cseq\CS
+\def\bxjy@pick@cseq#1#2{%
+ \def\bxjy@pcs@do##1{#1{##1}\bxjy@pick@cseq@a}%
+ \bxjy@pick@cseq@a#2\bxjy@pcs@end
+}
+\def\bxjy@pick@cseq@a{\bxjy@pick@char\bxjy@pcs@do\bxjy@pcs@exit}
+\def\bxjy@pcs@exit#1\bxjy@pcs@end{}
+
+%%<*> \UTF{<hex-number>}
+\newcommand*\UTF[1]{%
+ \edef\bxjy@tmpa{#1}%
+ \expandafter\bxjy@utf@a\bxjy@tmpa\bxjy@mark000000\bxjy@end}
+\def\bxjy@utf@a#1#2#3#4#5#6#7#8\bxjy@end{%
+ \bxjy@utf@b#1#2#3#4#5#6#7\bxjy@end}
+\def\bxjy@utf@b#1\bxjy@mark#2\bxjy@end{%
+ \uppercase{\bxjy@utf@c#2#1}\bxjy@end}
+\def\bxjy@utf@c#1#2#3#4#5#6\bxjy@end{%
+ \Unicode{"#1#2#3#4}{"#5#6}}
+
+%%<*> \CJKforce{<kanji>...}
+\newcommand*\CJKforce[1]{%
+ \let\bxjy@cjkforce@do\bxjy@cjkforce@a
+ \bxjy@pick@cseq\bxjy@cjk@force{#1}%
+}
+\def\bxjy@cjkforce@a#1#2#3{%
+ \ifx#1\relax\else \let#2#1\let#1\relax \fi
+}
+%%<*> \CJKunforce{<kanji>...}
+\newcommand*\CJKunforce[1]{%
+ \let\bxjy@cjkforce@do\bxjy@cjkunforce@a
+ \bxjy@pick@cseq\bxjy@cjk@force{#1}%
+}
+\def\bxjy@cjkunforce@a#1#2#3{%
+ \ifx#1\relax \let#1#2\fi
+}
+\def\bxjy@cjk@force#1{%
+ \expandafter\bxjy@cjkforce@do
+ \csname u8:#1\expandafter\endcsname
+ \csname bxjy@U/#1\endcsname{#1}%
+}
+
+%%<*> \CJKforced{<kanji>}
+\@ifdefinable{\CJKforced}{%
+ \protected\def\CJKforced#1{% drop braces
+ \bxjy@pick@char\bxjy@cjkforced\relax#1%
+ }
+ \def\bxjy@cjkforced#1{%
+ \scantokens{\def\x{#1}\relax}% make active again
+ \begingroup
+ \expandafter\let\csname u8:#1\endcsname\relax \x
+ \endgroup
+ }
+ \let\bxjy@org@at\@
+ \protected\def\@{\bxjy@at@a}
+}
+
+%%<*> \@
+\def\bxjy@at@a{%
+ \futurelet\bxjy@tok\bxjy@at@b
+}
+\def\bxjy@at@b{%
+ \bxjy@cond\ifcat\noexpand\bxjy@tok.\fi{\bxjy@org@at}{%
+ \bxjy@cond\ifcat\noexpand\bxjy@tok\@sptoken\fi{\bxjy@org@at}{%
+ \bxjy@cond\ifcat\noexpand\bxjy@tok\bgroup\fi{\CJKforced}{%
+ \bxjy@cond\ifcat\noexpand\bxjy@tok\relax\fi{\bxjy@at@c}{%
+ \bxjy@org@at
+ }}}}%
+}
+\def\bxjy@at@c#1{%
+ \bxjy@cond\ifcat\noexpand#1\noexpand~\fi{\CJKforced}{%
+ \bxjy@org@at
+ }#1%
+}
+
%--------------------------------------- fontmap internals
%% \bxjy@noembed
@@ -375,14 +511,15 @@
\bxjy@decl@series{#1}{eb}{#4}}
%% the declarations
+\def\bxjy@sc{sCJK*[\bxjy@scale]}
\ifx f\bxjy@oneweight
-\bxjy@decl@family{mc}{CJK*unisong}{CJK*unili}{CJKssub*mc/bx/n}
-\bxjy@decl@family{gt}{CJK*unihei}{CJK*uniyou}{CJK*unifs}
-\bxjy@decl@family{mg}{CJK*unikai}{CJKssub*mg/m/n}{CJKssub*mg/m/n}
+\bxjy@decl@family{mc}{\bxjy@sc unisong}{\bxjy@sc unili}{CJKssub*mc/bx/n}
+\bxjy@decl@family{gt}{\bxjy@sc unihei}{\bxjy@sc uniyou}{\bxjy@sc unifs}
+\bxjy@decl@family{mg}{\bxjy@sc unikai}{CJKssub*mg/m/n}{CJKssub*mg/m/n}
\else\ifx t\bxjy@oneweight
-\bxjy@decl@family{mc}{CJK*unisong}{CJKssub*gt/m/n}{CJKssub*gt/m/n}
-\bxjy@decl@family{gt}{CJK*unihei}{CJKssub*gt/m/n}{CJKssub*gt/m/n}
-\bxjy@decl@family{mg}{CJK*unikai}{CJKssub*mg/m/n}{CJKssub*mg/m/n}
+\bxjy@decl@family{mc}{\bxjy@sc unisong}{CJKssub*gt/m/n}{CJKssub*gt/m/n}
+\bxjy@decl@family{gt}{\bxjy@sc unihei}{CJKssub*gt/m/n}{CJKssub*gt/m/n}
+\bxjy@decl@family{mg}{\bxjy@sc unikai}{CJKssub*mg/m/n}{CJKssub*mg/m/n}
\else\ifx i\bxjy@oneweight
\renewcommand{\mcdefault}{ipxm}
\renewcommand{\gtdefault}{ipxg}
@@ -404,15 +541,15 @@
\FirstCJKUse{%
\bxjy@check@alldefined{mnr,mnb}%
\unless\ifbxjy@ok
-\bxjy@decl@family{mc}{CJK*ipxm-r-u}{CJKssub*gt/m/n}{CJKssub*gt/m/n}
+\bxjy@decl@family{mc}{\bxjy@sc ipxm-r-u}{CJKssub*gt/m/n}{CJKssub*gt/m/n}
\fi
\bxjy@check@alldefined{gtr,gtb,gtx}%
\unless\ifbxjy@ok
-\bxjy@decl@family{gt}{CJK*ipxg-r-u}{CJKssub*gt/m/n}{CJKssub*gt/m/n}
+\bxjy@decl@family{gt}{\bxjy@sc ipxg-r-u}{CJKssub*gt/m/n}{CJKssub*gt/m/n}
\fi
\bxjy@check@alldefined{mgr}%
\unless\ifbxjy@ok
-\bxjy@decl@family{mg}{CJK*ipxg-r-u}{CJKssub*gt/m/n}{CJKssub*gt/m/n}
+\bxjy@decl@family{mg}{\bxjy@sc ipxg-r-u}{CJKssub*gt/m/n}{CJKssub*gt/m/n}
\fi
}