summaryrefslogtreecommitdiff
path: root/Master
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
parent40dd5deea554f1ec46b8fd7b196adc94d193aed3 (diff)
bxcjkjatype
git-svn-id: svn://tug.org/texlive/trunk@32048 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master')
-rw-r--r--Master/texmf-dist/doc/latex/bxcjkjatype/README48
-rw-r--r--Master/texmf-dist/doc/latex/bxcjkjatype/README-ja.md237
-rw-r--r--Master/texmf-dist/doc/latex/bxcjkjatype/sample-bxcjkjatype-beamer.tex2
-rw-r--r--Master/texmf-dist/doc/latex/bxcjkjatype/sample-bxcjkjatype.tex10
-rw-r--r--Master/texmf-dist/tex/latex/bxcjkjatype/bxcjkjatype.sty179
5 files changed, 438 insertions, 38 deletions
diff --git a/Master/texmf-dist/doc/latex/bxcjkjatype/README b/Master/texmf-dist/doc/latex/bxcjkjatype/README
index 82c4a3088dc..08e9fe8904a 100644
--- a/Master/texmf-dist/doc/latex/bxcjkjatype/README
+++ b/Master/texmf-dist/doc/latex/bxcjkjatype/README
@@ -4,7 +4,7 @@ BXcjkjatype Package
LaTeX: Support for Japanese typesetting with pdfLaTeX and CJK package
This package provides working configuration of the CJK package suitable
-for Japanese typesetting of moderate quality. Moreover, it facilirates
+for Japanese typesetting of moderate quality. Moreover, it facilitates
use of the CJK package for pLaTeX users, by providing commands that
are similar to those used by the pLaTeX kernel and some other packages
used with it.
@@ -19,7 +19,7 @@ package supports only UTF-8.
* DVI driver: Anything.
- Non-default font settings require dvipdfmx or pdfTeX.
* Dependent packages:
- - CJK, CJKutf8, CJKspace, CJKpunct, etoolnoc;
+ - CJK, CJKutf8, CJKspace, CJKpunct, etoolbox;
- ipaex-type1 (when using default font mapping);
- zhmetrics (when using non-default font mapping).
@@ -82,6 +82,13 @@ explanation of this feature.
[pxchfon package]: http://www.ctan.org/pkg/pxchfon
+#### Options for CJK font scaling
+
+ * `scale=<real>`: Sets the scaling factor for CJK fonts.
+
+Note: One cannot employ the scaling when using the font setting of the
+`ipaex-type1` option.
+
#### Other options
* `everypage`: Outputs the font mapping information on every page of
@@ -104,8 +111,8 @@ The present package provides three “generic” CJK families in the same
way as pLaTeX plus the [japanese-otf package]: Mincho family
(`\mcfamily`), Gothic family (`\gtfamily`), and Maru-gothic family
(`\mgfamily`). In default setting, the font set from the ipaex-type1
-package are allocated; Mincho family uses IPA Mincho font, and Gothic
-and Maru-gothic families use IPA Gothic font. This allocation can be
+package are allocated; Mincho family uses IPAex Mincho font, and Gothic
+and Maru-gothic families use IPAex Gothic font. This allocation can be
altered by users.
* `\mcfamily`: Changes the CJK family to Mincho family. Equivalent
@@ -136,7 +143,7 @@ More advanced commands:
#### Synchronization of CJK and non-CJK families
-The CJK pakcage (and pTeX engine) manages separate “current families”
+The CJK package (and pTeX engine) manages separate “current families”
for CJK and alphabetic (non-CJK) families. While this treatment has its
merit, synchronization of the two “current families” is convenient in
many cases. Accordingly, tHe present package redefines some of the
@@ -146,16 +153,16 @@ alphabetic family, where the “counterpart” is defined as follows:
* `\rmfamily` (Serif) → `\mcfamily` (Mincho)
* `\sffamily` (Sans-serif) → `\gtfamily` (Gothic)
- * `\ttfamily` (Monospae) → `\gtfamily` (Gothic)
+ * `\ttfamily` (Monospace) → `\gtfamily` (Gothic)
* The counterpart of the other families is `\mcfamily`.
Redefined commands:
* `\rmfamily`/`\sffamily`/`\ttfamily`: Changes the CJK family to
- the counterpart of the alphabetic font family after the original
- function.
+ the counterpart of the alphabetic font family after executing the
+ original function.
* `\normalfont`: Changes the CJK family to the default CJK family
- specified by `\setCJKfamilydefault` comamnd.
+ specified by `\setCJKfamilydefault` command.
There are shorthand forms of `CJK`/`CJK*` environemnts:
@@ -184,7 +191,6 @@ Please refer to the manual of that package for detail.
* `\setminchofont[<id>]{<font-file>}`
* `\setgothicfont[<id>]{<font-file>}`
* `\setmarugothicfont[<id>]{<font-file>}`
- * `\setlightminchofont[<id>]{<font-file>}`
* `\setmediumminchofont[<id>]{<font-file>}`
* `\setboldminchofont[<id>]{<font-file>}`
* `\setmediumgothicfont[<id>]{<font-file>}`
@@ -196,13 +202,29 @@ the pdfTeX engine. One can use only TrueType fonts and moreover
TTC format is not allowed. (One can use any flavor of OpenType fonts
when using dvipdfmx.)
+Note: The present package does not support the light-weight Mincho font,
+and thus `\setlightminchofont` does nothing useful.
+
#### Other commands
* `\UTF{<hexadecimal-number>}`: Inputs a CJK character through Unicode
codepoint value. `\UTF{5B57}` is equivalent to `\Unicode{"5B}{"57}`.
+
+ * `\CJKforce{<character>...}`: Afterwards Treats the characters given
+ in the argument as CJK characters (printed using CJK fonts).
+
+ * `\CJKunforce{<character>...}`: Cancels the effect of the `\CJKforce`
+ command.
+
+ * `\@<character>`: Treats the next character (only that occurrence)
+ as a CJK character, when the character is outside ASCII; othersize
+ the normal meaning of `\@` is retained.
+
* `\CJKecglue`: Insers a “shibuaki” space. This will be invoked by
`~` when `\CJKtilde` is in effect. This command can be redefined by
- users to adjust the value of shibuaki space, just like `\CJKglue`.
+ users to adjust the value of shibuaki space, just as `\CJKglue` can
+ be redefined to adjust inter-ideographic space.
+
For example:
\renewcommand{\CJKecglue}{\hspace{0.125em minus 0.125em}}
@@ -218,6 +240,10 @@ when using dvipdfmx.)
Revision History
----------------
+ * Version 0.2c <2013/10/18>
+ - Added support of CJK font scaling.
+ - Added `\CJKforce`, `\CJKunforce`, `\@`.
+
* Version 0.2b <2013/09/28>
- Added `\UTF`, `\CJKecglue`.
diff --git a/Master/texmf-dist/doc/latex/bxcjkjatype/README-ja.md b/Master/texmf-dist/doc/latex/bxcjkjatype/README-ja.md
new file mode 100644
index 00000000000..2017dfb85ac
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/bxcjkjatype/README-ja.md
@@ -0,0 +1,237 @@
+BXcjkjatype パッケージバンドル
+==============================
+
+LaTeX: pdfLaTeX と CJK パッケージを利用した日本語組版の支援
+
+本パッケージは、日本語組版に適した CJK パッケージの設定を提供する。その
+上で、pLaTeX ユーザにとって CJK パッケージの使用が容易にするために、
+pLaTeX カーネルや pLaTeX 用パッケージのものに類似した命令を提供する。
+
+なお、CJK パッケージ自体は多種の入力エンコーディングをサポートしている
+が、本パッケージでは UTF-8 のみをサポートすることに注意。
+
+### 前提環境
+
+ * フォーマット: LaTeX
+ * エンジン: pdfTeX(DVI・PDF モード共に可)
+ * DVIウェア: 不問
+ - 既定以外のフォント設定では dvipdfmx/pdfTeX が必須。
+ * 依存パッケージ:
+ - CJK、CJKutf8、CJKspace、CJKpunct、etoolbox
+ - ipaex-type1(既定のフォントマップ使用時)
+ - zhmetrics(既定以外のフォントマップ使用時)
+
+### インストール
+
+ - `*.sty` → $TEXMF/tex/latex/BXcjkjatype
+
+bxcjkjatype パッケージ
+----------------------
+
+### パッケージ読込
+
+ \usepackage[<option>,...]{bxcjkjatype}
+
+利用可能なオプションを以下で挙げる。
+
+#### 自動囲み込み
+
+文書本体を `CJK(*)` 環境で自動的かつ安全に囲うためのオプション。文書中に
+多量の CJK テキストが含まれる場合、或いは「動く引数」に CJK テキストが
+含まれる場合はこれを指定するのが適切である。
+
+ * `whole`、`wholeCJK*`: 文書全体を `CJK*` 環境で囲む。(厳密に言うと
+ `\begin{uCJK*}`~`\end{uCJK*}` で囲む。)
+ * `wholeCJK`: 文書全体を `CJK` 環境で囲む。(厳密に言うと
+ `\begin{uCJK}`~`\end{uCJK}` で囲む。)
+ * `nowhole`(既定): `wholeCJK*` 及び `wholeCJK` の否定。
+
+#### 「自動チルダ」
+
+`autotilde` オプションを指定すると、`\CJKtilde` が自動的に呼び出されて
+`~` が和欧文間空白(四分空き)の意味になる。なお、`\CJKtilde` 有効時は
+`\nbs` で非分割欧文空白(本来の `~` の意味)が挿入できる。また、
+`\standardtilde` は `\CJKtilde` の効力を打ち消す。(これらは CJK
+パッケージの機能である。)
+
+ * `autotilde`: 全ての `CJK(*)` 環境の先頭で `\autotilde` が呼び出され
+ るようにする。
+ * `noautotilde`(既定): `autotilde` の否定。
+
+#### フォントマップ設定
+
+[pxchfon パッケージ] と同等のフォントマップのプリセットが利用できる。
+詳細についてはそちらの解説文書を参照されたい。
+
+ * `oneweight`、`nooneweight`: pxchfon と同様。
+ * pxchfon で利用可能なプリセットオプション(`ms` 等)が利用できる。
+ (旧式のものを除く。)
+ * `ipaex-type1`: 本パッケージのフォント管理を無効にし、ipaex-type1
+ パッケージのファミリ(`ipxm` と `ipxg`)を直接用いる。この設定では
+ `\mcdefault` の値は `ipxm` に、`\gtdefault` の値は `ipxg` になる。
+
+[pxchfon パッケージ]: http://www.ctan.org/pkg/pxchfon
+
+#### CJK フォントスケール
+
+ * `scale=<実数>`: CJK フォントに対するスケール値を設定する。
+
+注意: `ipaex-type1` 指定時は CJK フォントスケールは使用不可。
+
+#### その他のオプション
+
+ * `everypage`: フォントマップ情報を出力 DVI 文書の全てのページに出力
+ する。`dvipdfmx` ドライバでのみ有効。
+ * `noeverypage`(既定): `everypage` の否定。
+ * ドライバオプション:
+ `pdftex`、`dvipdfmx`、`dvips`、`none` が指定できる。ドライバ設定は
+ 既定(ipaex-type1)以外のフォントマップの使用時にのみ意味をもつ。
+ さらに、フォントマップ変更は `pdftex` と `dvipdfmx` でのみサポート
+ されまたこの 2 つの値は常に自動判定可能(PDF モードでは `pdftex`、
+ DVI モードでは `dvipdfmx` が既定)なので、実際にはドライバを指定する
+ 必要はない。
+
+### 機能
+
+#### CJK フォントの選択
+
+本パッケージでは、pLaTeX + [japanese-otf パッケージ] で用いられるものと
+同等の 3 つの「総称」CJK ファミリを用意する: 明朝(`\mcfamily`)、
+ゴシック(`\gtfamily`)、丸ゴシック(`\mgfamily`)。既定では ipaex-type1
+パッケージのフォントが割り当てられている:明朝→IPAex明朝、ゴシック→
+IPAexゴシック。この割り当ては変更可能である。
+
+ * `\mcfamily`: CJK ファミリを明朝ファミリに変更する。
+ `\CJKfamily{\mcdefault}` と等価である。
+ * `\gtfamily`: CJK ファミリをゴシックファミリに変更する。
+ `\CJKfamily{\gtdefault}` と等価である。
+ * `\mgfamily`: CJK ファミリを丸ゴシックファミリに変更する。
+ `\CJKfamily{\mgdefault}` と等価である。
+
+高度な命令:
+
+ * `\mcdefault`/`\gtdefault`/`\mgdefault`: 総称ファミリに対応する
+ CJK ファミリ名である。標準の割当ではこれらの値は `mc`/`gt`/`mg` で
+ ありこの割当が既定で用いられる。
+
+ * `\setCJKfamilydefault{<CJKファミリ>}`: 既定の CJK ファミリを設定
+ する。この既定値は、ある種の命令(例えば `\CJKfamily{}` や
+ `\begin{CJK}{UTF8}{}`)でファミリ名が省略された時に用いられる。
+ (再定義後の)`\normalfont` は CJK ファミリをこの命令で設定した既定
+ ファミリに変更する。
+
+ この既定ファミリの既定値は、文書の本体の先頭で有効である欧文ファミリ
+ の「対応ファミリ」となる。(次小節を参照。)
+
+[japanese-otf パッケージ]: http://www.ctan.org/pkg/japanese-otf
+
+#### CJK と欧文のファミリの連動
+
+CJK パッケージ(および pTeX エンジン)では CJK と欧文で別々の「現在
+ファミリ」を管理する。この取扱は利点もあるが、多くの場合はこの 2 つの
+「現在ファミリ」を連動させた方が都合がよい。この為、本パッケージでは現在
+欧文フォントを切り替える幾つかの LaTeX 命令について、CJK ファミリを欧文
+の「対応ファミリ」に切り替えるように再定義する。ここで「対応ファミリ」は
+以下のように定められる:
+
+ * `\rmfamily`(セリフ) → `\mcfamily`(明朝)
+ * `\sffamily`(サンセリフ) → `\gtfamily`(ゴシック)
+ * `\ttfamily`(等幅) → `\gtfamily`(ゴシック)
+ * その他のファミリについては、対応ファミリは `\mcfamily` とする。
+
+再定義される命令:
+
+ * `\rmfamily`/`\sffamily`/`\ttfamily`: 本来の動作の後、CJKファミリ
+ を欧文ファミリの「対応ファミリ」に変更する。
+ * `\normalfont`: CJK ファミリを、`\setCJKfamilydefault` 命令により
+ 指定された既定 CJK ファミリに変更する。
+
+`CJK`/`CJK*` 環境の省略系:
+
+ * `\begin{uCJK*}...\end{uCJK*}`: 次のものと等価:
+
+ \begin{CJK*}{UTF8}{対応ファミリ}...\end{CJK*}
+
+ ただし `対応ファミリ` は現在の欧文ファミリの対応ファミリを表す。
+
+ 次のものと等価ではないことに注意:
+
+ \begin{CJK*}{UTF8}{}...\end{CJK*}
+
+ こちらは既定の CJK ファミリを使用する。
+
+ * `\begin{uCJK}...\end{uCJK}`: 次のものと等価:
+
+ \begin{CJK}{UTF8}{対応ファミリ}...\end{CJK}
+
+#### フォントマップ設定
+
+これらの命令の使い方は pxchfon パッケージの時と同じであるので、詳細に
+ついてはそちらの解説文書を参照されたい。
+
+ * `\setminchofont[<ID>]{<フォントファイル名>}`
+ * `\setgothicfont[<ID>]{<フォントファイル名>}`
+ * `\setmarugothicfont[<ID>]{<フォントファイル名>}`
+ * `\setmediumminchofont[<ID>]{<フォントファイル名>}`
+ * `\setboldminchofont[<ID>]{<フォントファイル名>}`
+ * `\setmediumgothicfont[<ID>]{<フォントファイル名>}`
+ * `\setboldgothicfont[<ID>]{<フォントファイル名>}`
+ * `\setxboldgothicfont[<ID>]{<フォントファイル名>}`
+
+ところが、pdfTeX エンジンについてはフォントマップの仕様に関して重大な
+制限が存在する。TrueType グリフであってかつ TTC 形式でないフォントのみ
+が使用できる。(dvipdfmx 使用時は全ての種類の OpenType フォントが使用
+可能。)
+
+注意: 本パッケージは「明朝・細字」のフォントをサポートしない。従って、
+`\setlightminchofont` は動作しない。
+
+#### その他の命令
+
+ * `\UTF{<16進数字>}`: CJK 文字を Unicode 符号値で入力する。例えば、
+ `\UTF{5B57}` は `\Unicode{"5B}{"57}` と等価である。
+
+ * `\CJKforce{<character>...}`: 以降は引数の中にある各々の文字を CJK
+ 文字として扱う(CJK フォントで出力される)。
+
+ * `\CJKunforce{<character>...}`: `\CJKforce` の効果を打ち消す。
+
+ * `\@<character>`: 非 ASCII 文字の前に `\@` がある場合は、その文字
+ (その出現のみ)を CJK 文字として扱う。ASCII 文字の前の `\@` は
+ LaTeX 本来の意味を保持する。
+
+ * `\CJKecglue`: 和欧文間空白を挿入する。`\CJKtilde` が有効な時は `~`
+ はこの命令を呼び出す。この命令をユーザが再定義して和欧文間空白の量を
+ 調節することができる(和文間空白の `\CJKglue` と同様)。
+
+ 使用例:
+
+ \renewcommand{\CJKecglue}{\hspace{0.125em minus 0.125em}}
+
+### 補足事項
+
+ * 本パッケージで標準に用いられるフォントは、例えそれに ipaex-type1 の
+ フォントが割り当てられている場合でも、縦書きをサポートしない。しかし
+ ipaex-type1 が提供するファミリ(`ipxm` と `ipxg`)は縦書きをサポート
+ しており、`ipaex-type1` オプションを指定することでそれらのファミリを
+ 直接使うことができる。
+
+更新履歴
+--------
+
+ * Version 0.2c <2013/10/18>
+ - CJK フォントスケールをサポートした。
+ - `\CJKforce`、`\CJKunforce`、`\@` を追加。
+
+ * Version 0.2b <2013/09/28>
+ - `\UTF`、`\CJKecglue` を追加。
+
+ * Version 0.2a <2013/08/08>
+ - `autotilde` オプションを追加。
+
+ * Version 0.2 <2013/08/08>
+ - 最初の公開版。
+
+--------------------
+Takayuki YATO (aka. "ZR")
+http://zrbabbler.sp.land.to/
diff --git a/Master/texmf-dist/doc/latex/bxcjkjatype/sample-bxcjkjatype-beamer.tex b/Master/texmf-dist/doc/latex/bxcjkjatype/sample-bxcjkjatype-beamer.tex
index 79fec7f0353..9d73a96425a 100644
--- a/Master/texmf-dist/doc/latex/bxcjkjatype/sample-bxcjkjatype-beamer.tex
+++ b/Master/texmf-dist/doc/latex/bxcjkjatype/sample-bxcjkjatype-beamer.tex
@@ -4,7 +4,7 @@
%\documentclass[12pt,dvipdfmx]{beamer} % for dvipdfmx
\hypersetup{unicode}%← needed to make bookmark text right
\usepackage[whole]{bxcjkjatype}% needed 'whole'
-%% That'all! You can do 日本語 right now!
+%% That's all! You can do 日本語 right now!
\usetheme{Warsaw}
%---------------------------------------
\title{How to do 日本語 with pdf{\TeX}}
diff --git a/Master/texmf-dist/doc/latex/bxcjkjatype/sample-bxcjkjatype.tex b/Master/texmf-dist/doc/latex/bxcjkjatype/sample-bxcjkjatype.tex
index 1a9e117b2f2..a7561fbc331 100644
--- a/Master/texmf-dist/doc/latex/bxcjkjatype/sample-bxcjkjatype.tex
+++ b/Master/texmf-dist/doc/latex/bxcjkjatype/sample-bxcjkjatype.tex
@@ -6,7 +6,7 @@
% (bxcjkjatype does not.)
%\documentclass[a4paper,dvipdfmx]{article}
-% The 'whole' option makes the whole document body wraped with an
+% The 'whole' option makes the whole document body wrapped with a
% CJK* environment.
\usepackage[whole]{bxcjkjatype}
@@ -20,14 +20,14 @@
bookmarks=true,colorlinks=true]{hyperref}
% Here I use Standard fonts (IPAex fonts) for Mincho and Gothic
-% families. For Maru-gothic family, I use "Rounded M+ 1c Regular"
+% families. For Maru-gothic family, I use "Rounded M+ 1c Regular".
% (available at http://d.hatena.ne.jp/itouhiro/20120226).
\setmarugothicfont{rounded-mplus-1c-regular.ttf}
\begin{document}
% (Now already in a CJK* environment.)
-% You can safely put a section heading containing 日本語!
+% You can safely put a section heading containing 日本語 letters!
\section{Preparing 文書 in \Nihongo\ using pdf\TeX}
The 文書 contains 日本語 and English.
@@ -40,8 +40,8 @@ The 文書 contains 日本語 and English.
% \textbf{And bold (太字) version.}
% \sffamily designates Gothic family.
\item \sffamily Gothic (ゴシック) family.
-% \mgfamily changes only CJK family, so alphabetic font family
-% remains unchanged (i.e. \sffamily).
+% \mgfamily changes only CJK family, so the alphabetic font
+% family remains unchanged (i.e. in \sffamily).
\item \mgfamily Maru-gothic (丸ゴシック) family.
\end{itemize}
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
}