summaryrefslogtreecommitdiff
path: root/Master
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2016-10-17 21:23:41 +0000
committerKarl Berry <karl@freefriends.org>2016-10-17 21:23:41 +0000
commited5e43ddff288abda4c9a13ab8727e0783260667 (patch)
tree4e4411258818b574f905a8d0ba9801b42a767b97 /Master
parent1b7ca392b2a28913edba35b74cd696be7ac5f816 (diff)
bxcjkjatype (17oct16)
git-svn-id: svn://tug.org/texlive/trunk@42292 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master')
-rw-r--r--Master/texmf-dist/doc/latex/bxcjkjatype/LICENSE8
-rw-r--r--Master/texmf-dist/doc/latex/bxcjkjatype/README-ja.md57
-rw-r--r--Master/texmf-dist/doc/latex/bxcjkjatype/README.md (renamed from Master/texmf-dist/doc/latex/bxcjkjatype/README)36
-rw-r--r--Master/texmf-dist/tex/latex/bxcjkjatype/bxcjkjatype.sty406
4 files changed, 461 insertions, 46 deletions
diff --git a/Master/texmf-dist/doc/latex/bxcjkjatype/LICENSE b/Master/texmf-dist/doc/latex/bxcjkjatype/LICENSE
index 4acbc245013..9e7e5a082c2 100644
--- a/Master/texmf-dist/doc/latex/bxcjkjatype/LICENSE
+++ b/Master/texmf-dist/doc/latex/bxcjkjatype/LICENSE
@@ -1,12 +1,6 @@
-$BK\%=%U%H%&%'%"$O(B MIT $B%i%$%;%s%9$N2<$GG[I[$5$l$^$9!#(B
-$BCx:n8"$O:n<T$G$"$k!VH,EP(B $B?rG7!JJLL>(B ZR$B!K!W$KB0$7$^$9!#(B
-$B$^$?K\%=%U%H%&%'%"$OL5J]>Z$G$9!#(B
-
-This software is distributed under the MIT License.
-
The MIT License
-Copyright (c) 2013 Takayuki YATO (aka. "ZR")
+Copyright (c) 2016 Takayuki YATO (aka. "ZR")
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
diff --git a/Master/texmf-dist/doc/latex/bxcjkjatype/README-ja.md b/Master/texmf-dist/doc/latex/bxcjkjatype/README-ja.md
index 2017dfb85ac..f92de5499f5 100644
--- a/Master/texmf-dist/doc/latex/bxcjkjatype/README-ja.md
+++ b/Master/texmf-dist/doc/latex/bxcjkjatype/README-ja.md
@@ -66,6 +66,8 @@ bxcjkjatype パッケージ
* `oneweight`、`nooneweight`: pxchfon と同様。
* pxchfon で利用可能なプリセットオプション(`ms` 等)が利用できる。
(旧式のものを除く。)
+ * `ttfname=<パターン>`: TTC 代替(後述)を行う場合の TTF フォント名の
+ パターンを指定する。
* `ipaex-type1`: 本パッケージのフォント管理を無効にし、ipaex-type1
パッケージのファミリ(`ipxm` と `ipxg`)を直接用いる。この設定では
`\mcdefault` の値は `ipxm` に、`\gtdefault` の値は `ipxg` になる。
@@ -76,7 +78,8 @@ bxcjkjatype パッケージ
* `scale=<実数>`: CJK フォントに対するスケール値を設定する。
-注意: `ipaex-type1` 指定時は CJK フォントスケールは使用不可。
+※0.3 版より、`ipaex-type1` 指定時も CJK フォントスケールが利用できるよう
+になった。
#### その他のオプション
@@ -90,6 +93,42 @@ bxcjkjatype パッケージ
されまたこの 2 つの値は常に自動判定可能(PDF モードでは `pdftex`、
DVI モードでは `dvipdfmx` が既定)なので、実際にはドライバを指定する
必要はない。
+ * `substmingoth`: CJK パッケージの日本語用総称ファミリとして慣習的に
+ 使われているファミリの `min`/`goth`/`maru` について、LaTeX レベル
+ で、本パッケージにおける標準ファミリである `mc`/`gt`/`mg` への代替
+ を設定する。これにより、`min` 等のファミリの使用を前提とした日本語湯
+ テンプレート等を使う場合においても、論理フォントレベルでの代替設定を
+ 行う必要がなくなる。
+ * `nosubstmingoth`(既定): `substmingoth` の否定。
+ * `boldbyembolden`(既定): CJK パッケージの“擬似太字”(`\CJKbold`)
+ の処理方法を“重ね打ち”から“合成太字”に変更する。
+ * `noboldbyembolden`: `boldbyembolden` の否定。
+
+#### TTC 代替
+
+pdfTeX エンジンは TTC 形式のフォントをサポートしていない(サポートして
+いる OpenType の形式は単体の TTF グリフのものだけである)。従って、
+`\setminchofont` 命令などで TTC フォントを使おうと望むなら、適当なツール
+を使って TTC フォントファイルを個々の TTF フォントファイルに分解する処理
+を行うことが必須になる。
+
+これはエンジン側の制限仕様のため仕方がないだろう。しかし本パッケージを
+用いる場合には他に問題がある。変換後の TTF フォントはファイル名が元のもの
+と異なるため、プリセット設定(`mobo-moga` 等のオプション)が使えないので
+ある。これを解決するために、0.3 版で `ttfname` オプションが新設された。
+
+例えば、パッケージ読込時に `ttfname=*_1` が指定されたとする。この状態で
+本パッケージの処理において「mogam.ttc の最初(0 番)」が要求された場合、
+代わりに「mogam_1.ttf」というファイルが使われる。同様に、「mogam.ttc の
+1 番、2 番、……」については「mogam_2.ttf」「mogam_3.ttf」……での代替が
+行われる。
+
+`ttfname` で指定するファイル名のパターンには「`*_1`」「`TEMP-*-00.TTF`」
+のように「`*` を 1 つ含み、数字列を含む文字列」が指定できる。この `*` の
+部分は要求の TTC ファイルのベース名(`mogam` 等)で置き換えられ、かつ、
+拡張子がない場合は `.ttf` が補われる。その結果の文字列が TTC の最初(0
+番)のフォントに対する代替ファイル名となる。後続(1 番、2 番、……)の
+代替ファイル名は数字部分をインクリメントしたものになる。
### 機能
@@ -219,17 +258,25 @@ CJK パッケージ(および pTeX エンジン)では CJK と欧文で別
更新履歴
--------
- * Version 0.2c <2013/10/18>
+ * Version 0.3 ‹2016/10/15›
+ - CJKvert パッケージによる縦組と共存を可能にした。
+ - hyperref での PDF 文字列の文字化けを防止し。
+ - `ipaex-type1` 指定時もフォントスケールを可能にした。
+ - `boldbyembolden` 機能を実装。
+ - `ttfname` オプションを追加。
+ - `substmingoth` オプションを追加。
+
+ * Version 0.2c ‹2013/10/18›
- CJK フォントスケールをサポートした。
- `\CJKforce`、`\CJKunforce`、`\@` を追加。
- * Version 0.2b <2013/09/28>
+ * Version 0.2b ‹2013/09/28›
- `\UTF`、`\CJKecglue` を追加。
- * Version 0.2a <2013/08/08>
+ * Version 0.2a ‹2013/08/08›
- `autotilde` オプションを追加。
- * Version 0.2 <2013/08/08>
+ * Version 0.2 ‹2013/08/08›
- 最初の公開版。
--------------------
diff --git a/Master/texmf-dist/doc/latex/bxcjkjatype/README b/Master/texmf-dist/doc/latex/bxcjkjatype/README.md
index 08e9fe8904a..1a2fe8242da 100644
--- a/Master/texmf-dist/doc/latex/bxcjkjatype/README
+++ b/Master/texmf-dist/doc/latex/bxcjkjatype/README.md
@@ -27,6 +27,10 @@ package supports only UTF-8.
- `*.sty` → $TEXMF/tex/latex/BXcjkjatype
+### License
+
+This package is distributed under the MIT License.
+
The bxcjkjatype Package
-----------------------
@@ -73,6 +77,11 @@ explanation of this feature.
* `oneweight`, `nooneweight`: The same as in pxchfon.
* One can use font preset options (such as `ms`) which are available
in pxchfon (except obsolete ones).
+ * `ttfname=<pattern>`: Specifies the pattern of the TTF font names
+ which are used when TTC substitution is employed. For example,
+ when `ttfname=*_1` is given, the font “index 0 of mogam.ttc” will
+ map to “mogam_1.ttf”, and similarly, “index 1” to “mogam_2.ttf”
+ and so on.
* `ipaex-type1`: Disables the font management of this package and
directly uses the families provided by the ipaex-type1 package,
namely `ipxm` and `ipxg`. In this setting the value of `\mcdefault`
@@ -86,8 +95,8 @@ explanation of this feature.
* `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.
+(With version 0.3 or later, one can employ the scaling even with the
+`ipaex-type1` option.)
#### Other options
@@ -102,6 +111,13 @@ Note: One cannot employ the scaling when using the font setting of the
supported only by `pdftex` and `dvipdfmx`, and these two values are
auto-detected (`pdftex` is default in PDF mode and `dvipdfmx` in
DVI mode). Thus one will never need to specify the driver.
+ * `substmingoth`: Applies the substituion of families `min`, `goth`
+ and `maru` (used conventionally for Japanese) with families `mc`,
+ `gt` and `mg` (standard in this package).
+ * `nosubstmingoth` (default): Negation of `substmingoth`.
+ * `boldbyembolden` (default): Changes the implemention of `\CJKbold`
+ (pseudo-bold) from “overstriking” to “synthetic emboldening”.
+ * `noboldbyembolden`: Negation of `boldbyembolden`.
### Usage
@@ -240,17 +256,25 @@ and thus `\setlightminchofont` does nothing useful.
Revision History
----------------
- * Version 0.2c <2013/10/18>
+ * Version 0.3 ‹2016/10/15›
+ - Made the vertical writing work well (with CJKvert).
+ - Avoided garbling of PDF strings created by hyperref.
+ - Allowed font scaling even when `ipaex-type1` is set.
+ - Added `boldbyembolden` feature.
+ - Added `ttfname` option.
+ - Added `substmingoth` option.
+
+ * Version 0.2c ‹2013/10/18›
- Added support of CJK font scaling.
- Added `\CJKforce`, `\CJKunforce`, `\@`.
- * Version 0.2b <2013/09/28>
+ * Version 0.2b ‹2013/09/28›
- Added `\UTF`, `\CJKecglue`.
- * Version 0.2a <2013/08/08>
+ * Version 0.2a ‹2013/08/08›
- Added `autotilde` option.
- * Version 0.2 <2013/08/08>
+ * Version 0.2 ‹2013/08/08›
- The first public version.
--------------------
diff --git a/Master/texmf-dist/tex/latex/bxcjkjatype/bxcjkjatype.sty b/Master/texmf-dist/tex/latex/bxcjkjatype/bxcjkjatype.sty
index 0ab4cb73851..f530e030e98 100644
--- a/Master/texmf-dist/tex/latex/bxcjkjatype/bxcjkjatype.sty
+++ b/Master/texmf-dist/tex/latex/bxcjkjatype/bxcjkjatype.sty
@@ -1,10 +1,16 @@
-%
-% bxcjkjatype.sty
-%
+%%
+%% This is file 'bxcjkjatype.sty'.
+%%
+%% Copyright (c) 2016 Takayuki YATO (aka. "ZR")
+%% GitHub: https://github.com/zr-tex8r
+%% Twitter: @zr_tex8r
+%%
+%% This package is distributed under the MIT License.
+%%
%% package declaration
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{bxcjkjatype}[2013/10/18 v0.2c]
+\ProvidesPackage{bxcjkjatype}[2016/10/15 v0.3]
\def\bxjy@pkgname{bxcjkjatype}
%% definitions
@@ -14,8 +20,10 @@
%--------------------------------------- helpers
-%% variables
+%% switches
\newif\ifbxjy@ok
+\newif\ifbxjy@default@set
+\newif\ifbxjy@byembolden
%% unique tokens
\def\bxjy@mark{\bxjy@mark@}
@@ -71,8 +79,9 @@
\newif\ifbxjy@everypage
\DeclareOption{everypage}{\bxjy@everypagetrue}
\DeclareOption{noeverypage}{\bxjy@everypagefalse}
+\newif\ifbxjy@ipaex
\let\bxjy@oneweight=f
-\DeclareOption{ipaex-type1}{\let\bxjy@oneweight=i}
+\DeclareOption{ipaex-type1}{\bxjy@ipaextrue}
\DeclareOption{oneweight}{\let\bxjy@oneweight=t}
\DeclareOption{nooneweight}{\let\bxjy@oneweight=f}
\newif\ifbxjy@autotilde
@@ -84,6 +93,12 @@
\newif\ifbxjy@CJKspace \bxjy@CJKspacetrue
\DeclareOption{CJKspace}{\bxjy@CJKspacetrue}
\DeclareOption{noCJKspace}{\bxjy@CJKspacefalse}
+\newif\ifbxjy@boldbyembolden \bxjy@boldbyemboldentrue
+\DeclareOption{boldbyembolden}{\bxjy@boldbyemboldentrue}
+\DeclareOption{noboldbyembolden}{\bxjy@boldbyemboldenfalse}
+\newif\ifbxjy@substmin
+\DeclareOption{substmingoth}{\bxjy@substmintrue}
+\DeclareOption{nosubstmingoth}{\bxjy@substminfalse}
% preset spec options
\def\bxjy@all@main@preset{%
%(uniweight)
@@ -100,9 +115,18 @@
\DeclareOption*{%
\expandafter\bxjy@setkey@a\expandafter{\CurrentOption}}
\def\bxjy@setkey@a{\setkeys{bxjy}}
+% 'scale=<real>'
\let\bxjy@scale\relax
\define@key{bxjy}{scale}{%
\def\bxjy@scale{#1}}
+% 'verrtical=<val>'
+\let\bxjy@vertical\@empty
+\define@key{bxjy}{vertical}[true]{%
+ \def\bxjy@vertical{#1}}
+% 'ttfname=<val>'
+\let\bxjy@ttfname\@empty
+\define@key{bxjy}{ttfname}{%
+ \def\bxjy@ttfname{#1}}
%% Dispatch options
\ProcessOptions*
@@ -130,7 +154,7 @@
\fi
%% Consistency check
-\ifx i\bxjy@oneweight \unless\ifx\bxjy@main@preset\relax
+\ifbxjy@ipaex \unless\ifx\bxjy@main@preset\relax
\bxjy@error{Preset options cannot go with 'ipaex-type1'}\@ehc
\let\bxjy@main@preset\relax
\fi\fi
@@ -138,10 +162,9 @@
\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
+\ifx \bxjy@driver\bxjy@none
+ \bxjy@boldbyemboldenfalse
+\fi
%% default scale value
\ifx\bxjy@scale\relax
@@ -153,9 +176,6 @@
\else \let\bxjy@scale\Cjascale
\fi
\fi
-\ifx i\bxjy@oneweight
- \def\bxjy@scale{1}%
-\fi
%--------------------------------------- preparations
@@ -193,6 +213,39 @@
\newcommand*\EveryCJKUse{%
\gappto\bxjy@every@cjk@use@hook}
+%--------------------------------------- vertical
+
+%% constants
+\chardef\bxjy@vert@none=0
+\chardef\bxjy@vert@false=0
+\chardef\bxjy@vert@=0
+\chardef\bxjy@vert@sub=1
+\chardef\bxjy@vert@main=2
+\chardef\bxjy@vert@true=2
+
+%% \bxjy@vert
+\let\bxjy@vert\bxjy@vert@none
+\ifcsdef{bxjy@vert@\bxjy@vertical}{%
+ \letcs\bxjy@vert{bxjy@vert@\bxjy@vertical}
+}{%else
+ \bxjy@error{Invalid value of 'vertical': \bxjy@vertical}\@ehc
+}
+\ifcase\bxjy@vert %none
+ \AfterEndPreamble{\csuse{CJKhorz}}
+\or %sub
+ \RequirePackage{CJKvert}[]%
+ \AfterEndPreamble{\CJKhorz}
+\or %main
+ \RequirePackage{CJKvert}[]%
+ \AfterEndPreamble{\CJKvert}
+\fi
+\AtBeginDocument{%
+ \@ifpackageloaded{CJKvert}{%
+ \bxjy@patch@CJKsymbol@CJKvert
+ \patchcmd{\CJKvert}{\normalfont}{\bxjy@normalafont}{}{}%
+ \patchcmd{\CJKhorz}{\normalfont}{\bxjy@normalafont}{}{}%
+ }{}}
+
%--------------------------------------- user interface
%%%%<*> \setminchofont/\setgothicfont/etc.
@@ -214,11 +267,8 @@
\else
\@for\bxjy@x:={#1}\do{%
\ifx @#2@\@namedef{bxjy@FS/\bxjy@x}{#3}%
- \else\ifx\bxjy@driver\bxjy@dvipdfmx
- \@namedef{bxjy@FS/\bxjy@x}{:#2:#3}%
- \else % ttc is unavailable in pdfTeX
- \bxjy@error{pdfTeX does not support TTC}\@eha
- \fi\fi}%
+ \else \@namedef{bxjy@FS/\bxjy@x}{:#2:#3}%
+ \fi}%
\fi}
\@for\bxjy@x:={%
mnr,mnb,gtr,gtb,gtx,gtu,mgr%
@@ -240,7 +290,7 @@
}
%%<*> \setCJKfamilydefault{<fam>}
-\newbool{bxjy@default@set}
+%\newif\ifbxjy@default@set
\newrobustcmd*\setCJKfamilydefault[1]{%
\bxjy@default@settrue
\CJKencfamily{UTF8}{#1}}
@@ -388,6 +438,113 @@
}#1%
}
+%--------------------------------------- ttfname
+
+%% variables
+\let\bxjy@ttfname@ptn\relax
+\let\bxjy@ttc@info
+
+%% constants
+\begingroup \let\\\@backslashchar
+% The set of allowed characters, all ASCII but the followings:
+% [special in Windwos path name] \ / ? : * " > < |
+% [special in LaTeX] # % ^ { } ~
+\edef\x{[]!$&'()+,.0-9;=@A-Z_`a-z-]}
+\xdef\bxjy@Rx@tp@a{^(\x*)\\*(\x*)$}
+\xdef\bxjy@Rx@tp@b{^.*\\.[Tt][Tt][Ff]$}
+\xdef\bxjy@Rx@tp@c{^(|.*[^0-9])([0-9]{1,5})([^0-9]*)$}
+\xdef\bxjy@Rx@fn@a{^(.*)\\.\\w+$}
+\xdef\bxjy@Rx@fn@b{^.*\\.[Tt][Tt][Cc]$}
+\endgroup
+
+%% \bxjy@set@match\CS{<number>}
+\@onlypreamble\bxjy@set@match
+\def\bxjy@set@match#1#2{%
+ \expandafter\bxjy@set@match@a\pdflastmatch#2\relax#1}
+\@onlypreamble\bxjy@set@match@a
+\def\bxjy@set@match@a#1>#2\relax#3{\def#3{#2}}
+
+%% \bxjy@set@ttfname@ptn
+% Sets \bxjy@ttfname@ptn.
+\@onlypreamble\bxjy@set@ttfname@ptn
+\def\bxjy@set@ttfname@ptn{%
+ \begingroup
+ \let\bxjy@ttfname@ptn\relax
+ \ifnum\pdfmatch{\bxjy@Rx@tp@a}{\bxjy@ttfname}>\z@
+ \bxjy@set@match\bxjy@ptnA{1}\bxjy@set@match\bxjy@ptnBC{2}%
+ \ifnum\pdfmatch{\bxjy@Rx@tp@b}{\bxjy@ptnBC}=\z@
+ \edef\bxjy@ptnBC{\bxjy@ptnBC.ttf}%
+ \fi
+ \ifnum\pdfmatch{\bxjy@Rx@tp@c}{\bxjy@ptnBC}>\z@
+ \bxjy@set@match\bxjy@ptnB{1}\bxjy@set@match\bxjy@ptnC{3}%
+ \bxjy@set@match\bxjy@ptnN{2}%
+ \xdef\bxjy@ttfname@ptn{%
+ {\bxjy@ptnA}{\bxjy@ptnB}{\bxjy@ptnC}{\bxjy@ptnN}}%
+ \fi
+ \fi
+ \ifx\bxjy@ttfname@ptn\relax
+ \@latex@warning@no@line
+ {Option 'ttfname' has an invalid value:\MessageBreak
+ "\bxjy@ttfname"}%
+ \fi
+ \endgroup}
+
+%% \bxjy@make@ttfname\CS{<ttc-name>}{<number>}
+\@onlypreamble\bxjy@make@ttfname
+\def\bxjy@make@ttfname{%
+ \expandafter\bxjy@make@ttfname@a\bxjy@ttfname@ptn}
+\@onlypreamble\bxjy@make@ttfname@a
+\def\bxjy@make@ttfname@a#1#2#3#4#5#6#7{%
+ \numdef\bxjy@tmpa{#4+#7}\numdef\bxjy@tmpb{1#4-#4}%
+ \ifnum\bxjy@tmpa<\bxjy@tmpb
+ \numdef\bxjy@tmpa{\bxjy@tmpa+\bxjy@tmpb}%
+ \edef\bxjy@tmpa{\expandafter\@gobble\bxjy@tmpa}%
+ \fi
+ \edef\bxjy@tmpb{\detokenize{#6}}%
+ \ifnum\pdfmatch{\bxjy@Rx@fn@a}{\bxjy@tmpb}>\z@
+ \bxjy@set@match\bxjy@tmpb{1}%
+ \fi
+ \edef#5{#1\bxjy@tmpb#2\bxjy@tmpa#3}}
+
+%% set the pattern
+\unless\ifx\bxjy@ttfname\@empty
+ \ifdefined\pdfmatch
+ \bxjy@set@ttfname@ptn
+ \else
+ \bxjy@error
+ {Option 'ttfname' cannot be used because your\MessageBreak
+ pdfTeX engine is too old}\@ehc
+ \fi
+\fi
+
+%% \bxjy@modify@fontname
+\@onlypreamble\bxjy@modify@fontname
+\def\bxjy@modify@fontname{%
+ \bxly@check@ttc\FONT
+ \unless\ifx\bxjy@ttc@info\relax
+ \ifx\bxjy@ttfname@ptn\relax
+ \bxjy@error{pdfTeX does not support TTC}\@eha
+ \else
+ \edef\bxjy@tmpa{\noexpand\FONT\bxjy@ttc@info}%
+ \expandafter\bxjy@make@ttfname\bxjy@tmpa
+ \fi
+ \fi}
+
+%% \bxly@check@ttc{<name>}
+\@onlypreamble\bxly@check@ttc
+\ifdefined\pdfmatch
+\def\bxly@check@ttc#1{%
+ \ifnum\pdfmatch{^:([0-9]+):(.*)}{#1}>\z@
+ \bxjy@set@match\bxjy@tmpa{1}\bxjy@set@match\bxjy@tmpb{2}%
+ \edef\bxjy@ttc@info{{\bxjy@tmpb}{\bxjy@tmpa}}%
+ \else\ifnum\pdfmatch{\bxjy@Rx@fn@b}{#1}>\z@
+ \edef\bxjy@ttc@info{{#1}{0}}%
+ \else\let\bxjy@ttc@info\relax
+ \fi\fi}
+\else
+\def\bxjy@check@ttc#1{\let\bxjy@ttc@info\relax}
+\fi
+
%--------------------------------------- fontmap internals
%% \bxjy@noembed
@@ -430,7 +587,8 @@
\let\bxjy@spec\@empty
\else\ifx\bxjy@driver\bxjy@pdftex
\def\bxjy@entry@sub#1{%<tfm-spec>
- \pdfmapline{=#1 <\FONT}}
+ \bxjy@modify@fontname
+ \unless\ifx\FONT\relax \pdfmapline{=#1 <\FONT}\fi}
\else % invalid in dvips
\fi\fi
@@ -474,6 +632,9 @@
\not@math@alphabet\mcfamily\relax
\CJKfamily{\mgdefault}}
+%% \bxjy@normalafont
+\letcs\bxjy@normalafont{normalfont }
+
%% Add patches to \rmfamily, etc.
\csappto{rmfamily }{%
\CJKfamily{\mcdefault}}
@@ -491,8 +652,8 @@
\fontseries\ebdefault\selectfont}
\providecommand{\ebdefault}{eb}
\fi
-\let\bxjy@CJKnormal\CJKnormal
-\protected\def\CJKnormal{\bxjy@CJKnormal}
+\protected\def\CJKbold{\CJK@bold@true}
+\protected\def\CJKnormal{\CJK@bold@false}
%% \bxjy@decl@series
\@onlypreamble\bxjy@decl@series
@@ -520,11 +681,7 @@
\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}
-\renewcommand{\mgdefault}{ipxg}
-\fi\fi\fi
+\fi\fi
%% Set default CJK family
\setCJKfamilydefault{\mcdefault}
@@ -553,6 +710,171 @@
\fi
}
+%% \bxjy@force@load@font@fam
+\@onlypreamble\bxjy@force@load@font@fam
+\def\bxjy@force@load@font@fam#1{%
+ \begingroup
+ \def\f@encoding{C70}\let\CJK@enc\f@encoding
+ \edef\f@family{#1}\let\CJK@family\f@family
+ \def\f@series{m}\def\f@shape{n}%
+ \xdef\font@name{\csname\curr@fontshape/\f@size\endcsname}%
+ \let\extract@font\relax \pickup@font
+ \endgroup}
+
+%--------------------------------------- ipaex-type1
+\ifbxjy@ipaex
+
+%% default changed
+\renewcommand{\mcdefault}{ipxm}
+\renewcommand{\gtdefault}{ipxg}
+\renewcommand{\mgdefault}{ipxg}
+
+%% scale applied
+\unless\ifdim\bxjy@scale\p@=\p@
+ \def\bxjy@tmpa#1#2#3{%
+ \bxjy@force@load@font@fam{#1}%
+ \expandafter\ifx\csname C70+#1\endcsname\@empty\else
+ \def\bxjy@tmpb{\DeclareFontShape{C70}{#1}}%
+ \bxjy@tmpb{m}{n}{<->sCJK*[\bxjy@scale]#3-r-u}{}%
+ \ifx t#2%
+ \bxjy@tmpb{m}{sl}{<->sCJK*[\bxjy@scale]#3-ro-u}{}%
+ \bxjy@tmpb{bx}{n}{<->sCJKb*[\bxjy@scale]#3-r-u}{\CJKbold}%
+ \bxjy@tmpb{bx}{sl}{<->sCJKb*[\bxjy@scale]#3-ro-u}{\CJKbold}%
+ \fi
+ \fi}
+ \bxjy@tmpa{ipxm}f{ipxm}%
+ \bxjy@tmpa{ipxg}f{ipxg}%
+ \bxjy@tmpa{ipxma}t{ipxm}%
+ \bxjy@tmpa{ipxga}t{ipxg}%
+\fi
+
+\fi
+%--------------------------------------- subst-mingoth
+\ifbxjy@substmin
+
+%% apply
+\def\bxjy@tmpa#1#2{%
+ \bxjy@force@load@font@fam{#1}%
+ \expandafter\ifx\csname C70+#1\endcsname\@empty\else
+ \def\bxjy@tmpb{\DeclareFontShape{C70}{#1}}%
+ \bxjy@tmpb{l}{n}{<->CJKssub*#2/m/n}{}%
+ \bxjy@tmpb{m}{n}{<->CJKssub*#2/m/n}{}%
+ \bxjy@tmpb{bx}{n}{<->CJKssub*#2/bx/n}{\CJKbold}%
+ \fi}
+\bxjy@tmpa{min}{mc}%
+\bxjy@tmpa{goth}{gt}%
+\bxjy@tmpa{maru}{mg}%
+
+\fi
+%--------------------------------------- bold-by-embolden
+\ifbxjy@boldbyembolden %<*boldbyembolden>
+
+%<*>\CJKboldbyembolden/\CJKnoboldbyembolden
+%\newif\ifbxjy@byembolden
+\newcommand*{\CJKboldbyembolden}{\bxjy@byemboldentrue}
+\newcommand*{\CJKnoboldbyembolden}{\bxjy@byemboldenfalse}
+\CJKboldbyembolden % initial value
+
+%% \bxjy@pdfliteraldirect{<pdf-text>}
+\ifx\bxjy@driver\bxjy@pdftex
+ \def\bxjy@pdfliteraldirect#1{\pdfliteral page {#1}}
+\else\ifx\bxjy@driver\bxjy@dvipdfmx
+ \def\bxjy@pdfliteraldirect#1{\special{pdf:literal direct #1}}
+\else
+ \bxjy@error{INTERNAL_ERROR(1)}
+\fi\fi
+
+%% \bxjy@embolden
+\def\bxjy@bsfactor{1.68}
+\def\bxjy@bswd;{\strip@pt\dimexpr\bxjy@bsfactor
+ \dimexpr\CJKboldshift\relax\relax}
+\def\bxjy@embolden{%
+ \bxjy@pdfliteraldirect{q 2 Tr \bxjy@bswd; w}}
+\def\bxjy@embolden@alt{%
+ \bxjy@pdfliteraldirect{2 Tr \bxjy@bswd; w}}
+%% \bxjy@noembolden
+\def\bxjy@noembolden{%
+ \bxjy@pdfliteraldirect{Q}}
+\def\bxjy@noembolden@alt{%
+ \bxjy@pdfliteraldirect{0 Tr}}
+
+%% \bxjy@patch@CJKsymbol@CJKvert
+% Patches to CJKvert version of \CJKsymbol.
+\@onlypreamble\bxjy@patch@CJKsymbol@CJKvert
+\def\bxjy@patch@CJKsymbol@CJKvert{%
+ \global\let\bxjy@patch@CJKsymbol@CJKvert\relax
+ \bxjy@oktrue
+ \expandafter\patchcmd\csname CJKsymbol \endcsname{%from
+ \ifCJK@bold@ \CJK@temp
+ \hbox to \z@{\hss \raise\CJKboldshift\hbox{\CJK@temp}}%
+ \hbox to \z@{\hss \raise-\CJKboldshift\hbox{\CJK@temp}}%
+ \else \CJK@temp
+ \fi
+ }{%to
+ \ifCJK@bold@\ifbxjy@byembolden
+ \bxjy@embolden@alt
+ \fi\fi
+ \CJK@temp
+ \ifCJK@bold@
+ \ifbxjy@byembolden
+ \bxjy@noembolden@alt
+ \else
+ \hbox to \z@{\hss \raise\CJKboldshift\hbox{\CJK@temp}}%
+ \hbox to \z@{\hss \raise-\CJKboldshift\hbox{\CJK@temp}}%
+ \fi
+ \fi
+ }{}{\bxjy@okfalse}%
+ \expandafter\patchcmd\csname CJKsymbol \endcsname{%from
+ \ifCJK@bold@ \CJK@temp
+ \hbox to \CJKboldshift{\hss\CJK@temp}%
+ \hbox to \CJKboldshift{\hss\CJK@temp}%
+ \else \CJK@temp
+ \fi
+ }{%to
+ \ifCJK@bold@\ifbxjy@byembolden
+ \bxjy@embolden@alt
+ \fi\fi
+ \CJK@temp
+ \ifCJK@bold@
+ \ifbxjy@byembolden
+ \bxjy@noembolden@alt
+ \else
+ \kern-\CJKboldshift\hb@xt@\z@{\hss\CJK@temp}%
+ \kern2\dimexpr\CJKboldshift\relax
+ \hb@xt@\z@{\hss\CJK@temp}\kern-\CJKboldshift\relax
+ \fi
+ \fi
+ }{}{\bxjy@okfalse}%
+ \unless\ifbxjy@ok
+ \bxjy@error{Failure in patching to CJKvert}\@ehc
+ \fi
+}
+%% redefine \CJKsymbol
+\@ifpackageloaded{CJKvert}{%
+ % CJKvert version
+ \bxjy@patch@CJKsymbol@CJKvert
+}{% non-CJKvert version
+ \@namedef{CJKsymbol }#1{%
+ \ifCJK@bold@\ifbxjy@byembolden
+ \bxjy@embolden
+ \fi\fi
+ \symbol{#1}%
+ \ifCJK@bold@
+ \ifbxjy@byembolden
+ \bxjy@noembolden
+ \else
+ \kern-\CJKboldshift\hb@xt@\z@{\hss\symbol{#1}}%
+ \kern2\dimexpr\CJKboldshift\relax
+ \hb@xt@\z@{\hss\symbol{#1}}\kern-\CJKboldshift\relax
+ \fi
+ \fi}%
+}
+
+\else %<*!boldbyembolden>
+% makes \CJK[no]boldbyembolden no-op
+\newcommand*{\CJKboldbyembolden}{}
+\newcommand*{\CJKnoboldbyembolden}{}
+\fi %</boldbyembolden>
%--------------------------------------- begin-document hook
\ifx\bxjy@driver\bxjy@dvipdfmx %<*dvipdfmx>
@@ -596,6 +918,34 @@
%% Invokes first-CJK hook at begin-document
\AtBeginDocument{\bxjy@first@cjk@use@hook}
+%--------------------------------------- PDF-string hack
+
+%%<+> \bxcjkjatypeHyperrefPatchDone
+%% Informs that the patch is applied.
+\let\bxcjkjatypeHyperrefPatchDone=t
+
+%% prepare
+\begingroup
+ \CJK@input{UTF8.bdg}% emerge CJK@UTF8Binding
+\endgroup
+%% register to \pdfstringdefPreHook
+\g@addto@macro\pdfstringdefPreHook{%
+ \@nameuse{CJK@UTF8Binding}% enable UTF8 decoder
+ \ifx~\bxjy@@CJKtilde % \CJKtilde is effective
+ \let\bxjy@org@LetUnexpandableSpace\HyPsd@LetUnexpandableSpace
+ \let\HyPsd@LetUnexpandableSpace\bxjy@LetUnexpandableSpace
+ \let~\@empty
+ \fi
+}
+\def\bxjy@@CJKtilde{\CJKecglue\ignorespaces}
+%% patch to \HyPsd@LetUnexpandableSpace
+\def\bxjy@@tildecmd{~}
+\def\bxjy@LetUnexpandableSpace#1{%
+ \def\bxjy@tmpa{#1}\ifx\bxjy@tmpa\bxjy@@tildecmd\else
+ \bxjy@org@LetUnexpandableSpace#1%
+ \fi
+}
+
%--------------------------------------- preset font mappings
%% \bxjy@declare@preset{<name>}{<text>}