diff options
Diffstat (limited to 'Master')
-rw-r--r-- | Master/texmf-dist/doc/latex/bxcjkjatype/LICENSE | 8 | ||||
-rw-r--r-- | Master/texmf-dist/doc/latex/bxcjkjatype/README-ja.md | 57 | ||||
-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.sty | 406 |
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>} |