diff options
author | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
---|---|---|
committer | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
commit | e0c6872cf40896c7be36b11dcc744620f10adf1d (patch) | |
tree | 60335e10d2f4354b0674ec22d7b53f0f8abee672 /language/japanese/pxchfon |
Initial commit
Diffstat (limited to 'language/japanese/pxchfon')
99 files changed, 3855 insertions, 0 deletions
diff --git a/language/japanese/pxchfon/LICENSE b/language/japanese/pxchfon/LICENSE new file mode 100644 index 0000000000..534324b756 --- /dev/null +++ b/language/japanese/pxchfon/LICENSE @@ -0,0 +1,21 @@ +The MIT License + +Copyright (c) 2019 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 +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/language/japanese/pxchfon/PXcjk0.sfd b/language/japanese/pxchfon/PXcjk0.sfd new file mode 100644 index 0000000000..0e32bf7ad9 --- /dev/null +++ b/language/japanese/pxchfon/PXcjk0.sfd @@ -0,0 +1,36 @@ +l0j 32: 0x0020_0x0021 0x201D 0x0023_0x0026 0x2019 0x0028_0x003B 61: \ + 0x003D 63: 0x003F_0x005B 0x201C 0x005D 96: 0x2018 0x0061_0x007A \ + 124: 0x2015 161: 0xFF61_0xFF9F +l1j 11: 0xFB00_0xFB04 0x0131 0x0237 0x0060 0x00B4 0x02C7 0x02D8 \ + 0x00AF 0x02DA 0x00B8 0x00DF 0x00E6 0x0153 0x00F8 0x00C6 0x0152 \ + 0x00D8 0x0020_0x0021 0x201D 0x0023_0x0026 0x2019 0x0028_0x003B \ + 0x00A1 0x003D 0x00BF 0x003F_0x005B 0x201C 0x005D 0x02C6 0x02D9 \ + 0x2018 0x0061_0x007A 124: 0x2015 0x02DD 0x007E 0x00A8 129: 0x0022 \ + 0x0027 0x003C 0x003E 0x005C 0x005F 0x0060 0x007B 0x007C 0x007D \ + 0x00A2_0x00A3 0x00A5 0x00AC 161: 0xFF61_0xFF9F +l4j 18: 0x0060 0x00B4 33: 0x0021_0x007E 0x00A8 128: 0x2018_0x2019 \ + 0x201C_0x201D 161: 0xFF61_0xFF9F +l5j 13: 0x0027 0x00A1 0x00BF 0x0131 18: 0x0060 0x00B4 22: 0x00AF \ + 25: 0x00DF 0x00E6 0x0153 0x00F8 0x00C6 0x0152 0x00D8 0x0020_0x0021 \ + 0x201D 0x0023_0x0026 0x2019 0x0028_0x005B 0x201C 0x005D_0x005F \ + 0x2018 0x0061_0x007A 124: 0x2015 126: 0x007E 0x00A8 \ + 161: 0xFF61_0xFF9F +t1 0x02CB 0x02CA 0x02C6 0x02DC 0x00A8 0x02DD 0x02DA 0x02C7 0x02D8 \ + 0x02C9 0x02D9 0x00B8 0x02DB 0x201A 0x2039_0x203A 0x201C_0x201E \ + 0x00AB 0x00BB 0x2013 0x2015 25: 0x0131 0x0237 32: 0x0020_0x0026 \ + 0x2019 0x0028_0x005F 0x2018 0x0061_0x007E 128: 0x0102 0x0104 0x0106 \ + 0x010C 0x010E 0x011A 0x0118 0x011E 0x0139 0x013D 0x0141 0x0143 \ + 0x0147 0x014A 0x0150 0x0154 0x0158 0x015A 0x0160 0x015E 0x0164 \ + 0x0162 0x0170 0x016E 0x0178_0x0179 0x017D 0x017B 0x0132 0x0130 \ + 0x0111 0x00A7 0x0103 0x0105 0x0107 0x010D 0x010F 0x011B 0x0119 \ + 0x011F 0x013A 0x013E 0x0142 0x0144 0x0148 0x014B 0x0151 0x0155 \ + 0x0159 0x015B 0x0161 0x015F 0x0165 0x0163 0x0171 0x016F 0x00FF \ + 0x017A 0x017E 0x017C 0x0133 0x00A1 0x00BF 0x00A3 0x00C0_0x00D6 \ + 0x0152 0x00D8_0x00DE 224: 0x00E0_0x00F6 0x0153 0x00F8_0x00FE \ + 0x00DF +ts1 11: 0x00B8 0x02DB 36: 0x0024 39: 0x0027 42: 0x204E 44: 0x002C \ + 46: 0x002E 0x2044 61: 0x2212 87: 0x2126 91: 0x301A 93: 0x301B \ + 96: 0x0060 126: 0x02F7 128: 0x02D8 0x02C7 0x02DD 132: 0x2020_0x2021 \ + 0x2016 0x2030 0x2022 0x2103 140: 0x0192 151: 0x2122 157: 0x212E \ + 162: 0x00A2_0x00AA 172: 0x00AC 174: 0x00AE_0x00B7 \ + 185: 0x00B9_0x00BA 188: 0x00BC_0x00BE 0x20AC 214: 0x00D7 246: 0x00F7 diff --git a/language/japanese/pxchfon/README-ja.md b/language/japanese/pxchfon/README-ja.md new file mode 100644 index 0000000000..7fec784750 --- /dev/null +++ b/language/japanese/pxchfon/README-ja.md @@ -0,0 +1,191 @@ +PXchfon パッケージバンドル +========================== + +LaTeX: pLaTeX/upLateX における日本語フォント設定 + +pLaTeX / upLaTeX の文書の標準のフォント(明朝・ゴシック)をユーザ指定の +ものに置き換える。dvipdfmx 専用である。他のフォント追加パッケージと +異なり、追加するフォントを LaTeX 文書中で指定するので、一度パッケージ +をインストールするだけで、任意の日本語フォント(ただし等幅に限る)を +使うことができる。欧文部分を同じ日本語フォントで置き換えることも可能で +ある。UTF / OTF パッケージにも対応している。 + +0.5 版での拡張で、pTeX において広く行われているフォント設定(IPA フォント +の使用等)をパッケージオプション一つで行う機能を追加した。この機能は元々、 +別の PXjafont パッケージとして提供されていたものである。 + +### 前提環境 + + * フォーマット: LaTeX + * エンジン: pTeX、upTeX + * DVIウェア: dvipdfmx + * 依存パッケージ: + - atbegshi パッケージ(`everypage` オプション使用時) + - pxufont パッケージ(`unicode` オプション使用時) + +### インストール + +#### 和文のみを置き換えればよい場合 + +つまり、常に `noalphabet` オプション付きで用いる場合。この場合は以下の +設定だけで済む。 + + - TDS 1.1 に従ったシステムでは、次のファイルを移動する。 + * `*.sty` → $TEXMF/tex/platex/pxchfon/ + + - もっと簡単に、TeX システムのディレクトリには手を加えずに、単に + 文書ファイルと同じディレクトリに pxchfon.sty を置くだけでも使える。 + +#### 欧文部分の置き換えも利用したい場合 + +つまり、`noalphabet` なしでも用いたい場合。この場合は上に加えて以下の +設定を行う。 + + * TDS 1.1 に従ったシステムでは、各ファイルを次の場所に移動する。 + - `tfm/*.tfm` → $TEXMF/fonts/tfm/public/pxchfon/ + - `vf/*.vf` → $TEXMF/fonts/vf/public/pxchfon/ + - `pxcjk0.sfd` → $TEXMF/fonts/sfd/pxchfon/ + - `*.def` → $TEXMF/tex/platex/pxchfon/ + +### ライセンス + +MITライセンスの下で配布される。 + +更新履歴 +-------- + + * Version 1.5a ‹2019/07/10› + - バグ修正。 + * Version 1.5 ‹2019/05/15› + - TL2017 用の暫定設定である `unicode*` オプションを非推奨とする。 + - `\asUTF` 命令を非推奨とする。 + - 欧文置換用の VF を刷新した。TS1 エンコーディングをサポート。 + - The VFs of alphabetic fonts are refined; now TS1 encoding is + also supported. + - Unicode 直接モードでは非埋込のフォントに対して警告を出す。 + * Version 1.4a ‹2019/03/24› + - 非置換のフォントに対して不具合が起こりうる設定を使う場合、 + 非置換のフォントがあると警告を出す。 + * Version 1.4 ‹2019/03/24› + - プリセット `sourcehan-jp`、`noto-jp` を追加。 + (Source Han・Noto CJK の地域別サブセット版を使用) + - 欧文フォント置換が T1 エンコーディングに(暫定的に)対応。 + - 欧文フォント置換の不具合の修正。 + * Version 1.3a ‹2019/03/20› + - 1.3 版の追加機能の大幅な改修。Unicode 直接モードの `expert` が + pTeX でも使用可能になった。 + * Version 1.3 ‹2019/02/03› + - Unicode 直接モードにおいて japanese-otf の `expert` 指定の主要な + 機能(横組・縦組用仮名字形、ルビ用字形)に対応した。 + - GID 指定入力(`glyphid` オプションおよび `\gid` 命令)。 + * Version 1.2b ‹2019/01/21› + - 「じゅん101」のファイル名の誤りを修正。 + * Version 1.2a ‹2018/03/17› + - プリセット `ume` を追加。 + - プリセット `hiragino` を `hiragino-pro` の別名にする。 + - バグ修正。 + * Version 1.2 ‹2018/03/15› + - `sourcehan(-otc)`/`noto(-otc)` について、暫定的に `+` 付と同じ動作 + にしていたが、`unicode` を既定にする動作に改める。 + * Version 1.1b ‹2017/10/04› + - バグ修正。 + * Version 1.1a ‹2017/09/09› + - オプション `unicode(*)-fwid` を追加。 + - (試験的)“legacycode”関連オプションを追加。 + * Version 1.1 ‹2017/07/05› + - マップ行生成のロジックを大幅に改修した。 + - オプション `(no)strictcsi` を追加。 + - (暫定的) プリセット `sourcehan(-otc)+`、`noto(-otc)+` を追加。 + * Version 1.0c ‹2017/07/04› + - バグ修正。 + * Version 1.0b ‹2017/06/29› + - バグ修正。 + * Version 1.0a ‹2017/06/19› + - ドライバオプションを新設した。 + - '(no)dumpmap'、'(no)dumpmaptl' オプションを新設した。 + - オプション 'prefer2004jis' の別名として 'jis2004' を追加した。 + - (暫定的) プリセット `yu-win10+` を追加。 + - バグ修正。 + * Version 1.0 ‹2017/05/31› + - 非推奨のプリセットに対してエラーを出す。 + - pxjafont パッケージを非推奨とする。 + - `directunicode*` については OTF パッケージの読込を不要とした。 + - オプション `unicode(*)` を追加。 + ※新しい dvipdfmx の「OpenType 属性指定」機能を利用したもの。 + - プリセット `sourcehan(-otc)`、`noto(-otc)` を追加。 + * Version 0.9 ‹2017/04/08› + - オプション `directunicode*` を追加。 + - 非推奨のプリセットに対して警告を出す。 + * Version 0.8 ‹2017/01/13› + - これまで暫定的に、`prefer2004jis` の効力を upTeX の OTF パッケージ + のフォントにも及ぼしていたが、OTF パッケージの `jis2004` オプション + が upTeX にも対応したため、この措置を取りやめ、本来の仕様通り、 + `prefer2004jis` は標準和文フォントだけを対象とした。 + - プリセット `moga-mobo` / `moga-maruberi` の定義の誤りを修正。 + - プリセット `moga-mobo-ex` を追加。 + - 単純マップファイルプリセット機能(`*NAME`)を追加。 + * Version 0.7h ‹2015/10/14› + - バグ修正(\usefontmapline/file など)。 + * Version 0.7g ‹2015/09/30› + - プリセット `hiragino-elcapitan-*`、`yu-win10` を追加。 + * Version 0.7f ‹2015/08/04› + - `\diruni` / `\textdiruni` を追加。 + * Version 0.7e ‹2015/05/07› + - マップファイルプリセット機能を追加。 + - `\usefontmapfile` / `\usefontmapline` を追加。 + - この版までの「試験的」機能を正式な機能とする。 + * Version 0.7d ‹2013/06/16› + - 非埋込の明示指定をサポート。 + * Version 0.7c ‹2013/06/16› + - OTF パッケージおよび upTeX 標準の中国語・韓国語フォントをサポート + した。 + * Version 0.7b ‹2013/06/05› + - upTeX + OTF パッケージの時の `\UTF`/`\CID` 入力に対するフォント + を置換の対象に含めた。 + * Version 0.7a ‹2013/05/18› + - バグ修正。 + * Version 0.7 ‹2013/05/08› + - `(no)directunicode` を縦書きに対応。 + - `relfont` オプションを追加。 + * Version 0.6c ‹2013/04/20› + - `(no)directunicode` オプションを追加。 + * Version 0.6b ‹2013/04/20› + - `(no)oneweight` オプションを追加。 + - 非 CID フォントに関する `prefer2004jis` の実現方法を変更。 + 2000JIS と 2004JIS の TFM で別の実フォントがマップされる。 + - 3 つのパッケージレベル命令 `\JaFontReplacementFor`, + `\JaFontReplacementHook`, `\JaFontUserDefinedMap` を追加。 + * Version 0.6a ‹2013/04/07› + - プリセットの設定を全面的に見直し。 + - OTF パッケージの `jis2004` オプション設定時に使用されるフォント + 群に対応させた。 + - OTF パッケージで極太ゴシックの CID 版と Unicode 版のフォント + に対応させた。 + * Version 0.6 ‹2013/03/17› + - `prefer2004jis` を pTeX 標準フォントにも有効にした。 + * Version 0.5 ‹2010/05/12› + - PXfontspec パッケージのフォントへの対応を追加。 + - PXjafont パッケージの機能を組み入れた。 + - `[no]prefer2004jis` オプションを追加。 + - 欧文のマップ指定について v0.4 で混入したバグを修正。 + - `[no]everypage` オプションを追加。 + * Version 0.4a ‹2010/04/12› + - 縦書きの文書クラスで必ずエラーになるというバグを修正。 + * Version 0.4 ‹2009/12/20› + - なぜか `\setmarugothicfont` の説明が抜けてたので補った。 + - `\[no]usecmapforalphabet` を実験的に追加。 + * Version 0.3a ‹2009/11/23› + - README 中に掲げた ttfonts.map の記述の間違いを訂正。 + * Version 0.3 ‹2009/07/13› + - OTF パッケージの多ウェイト機能(deluxe オプション)に対応。 + - UTF パッケージへの対応が全く機能していなかったのを修正。 + - 明朝だけ指定した場合の欧文の取り扱いの問題を解決。 + * Version 0.2a ‹2009/05/31› + - `noalphabet` 指定時には PXcjk0.sfd を読む必要はなかったので、説明を訂正 + した。 + * Version 0.2 ‹2009/03/29] + - 最初の公開版。 + +-------------------- +Takayuki YATO (aka. "ZR") +https://github.com/zr-tex8r diff --git a/language/japanese/pxchfon/README.md b/language/japanese/pxchfon/README.md new file mode 100644 index 0000000000..72450c9bd7 --- /dev/null +++ b/language/japanese/pxchfon/README.md @@ -0,0 +1,151 @@ +PXchfon Package +=============== + +LaTeX: Japanese font setup for pLaTeX and upLaTeX + +This package enables users to declare in their document which physical +fonts should be used for the standard Japanese (logical) fonts of pLaTeX +and upLaTeX. Font setup is realized by changing the font mapping of +dvipdfmx, and thus users can use any (monospaced) physical fonts they +like, once they properly install this package, without creating helper +files for each new fonts. This package also supports setup for the fonts +used in the japanese-otf package. + +### SYSTEM REQUIREMENTS + + * TeX format: LaTeX. + * TeX engine: pTeX or upTeX. + * DVIware: dvipdfmx. + * Prerequisite packages: + - atbegshi (when option `everypage` is used) + - pxufont (when option `unicode` is used) + +### INSTALLATION + +Move the files as follows (in a system compliant to TDS 1.1): + + - `*.sty` → $TEXMF/tex/platex/pxchfon/ + - `tfm/*.tfm` → $TEXMF/fonts/tfm/public/pxchfon/ + - `vf/*.vf` → $TEXMF/fonts/vf/public/pxchfon/ + - `pxcjk0.sfd` → $TEXMF/fonts/sfd/pxchfon/ + - `*.def` → $TEXMF/tex/platex/pxchfon/ + +And rehash your TEXMF trees if necessary. + +### LICENSE + +This package is distributed under the MIT License. + +Revision History +---------------- + + * Version 1.5a ‹2019/07/10› + - Bug fix. + * Version 1.5 ‹2019/05/15› + - The `unicode*` option, which is a tentative setting for TL2017, + is now deprecated. + - The `\asUTF` command is now deprecated. + - The VFs of alphabetic fonts are refined; now TS1 encoding is + also supported. + - Issue a warning for unembedded font weights, if direct Unicode + mode is employed. + * Version 1.4a ‹2019/03/24› + - Issue a warning for unsubstituted font weights, if a setting + where unsubtituted fonts could cause problems is employed. + * Version 1.4 ‹2019/03/24› + - Presets `sourcehan-jp` and `noto-jp`, which use the subset OTF + version of Source Han and Noto CJK. + - Now the replacement of alphabetic fonts also works with T1 + encoding (besides OT1). + * Version 1.3a ‹2019/03/20› + - Now the support of `expert` mode in the direct Unicode mode is + available also on pTeX. + * Version 1.3 ‹2019/02/03› + - Now the direct Unicode mode supports the major feature of the + `expert` mode of the otf-japanese package. + - The feature of GID input (`glyphid` option). + * Version 1.2b ‹2019/01/21› + - Fix the file name for font “Jun 101”. + * Version 1.2a ‹2018/03/17› + - Preset `ume`. + - Preset `hiragino` alias to `hiragino-pro`. + - Bug fix. + * Version 1.2 ‹2018/03/15› + - Presets `sourcehan`/`noto` turns on `unicode` by default. + * Version 1.1b ‹2017/10/04› + - Bug fix. + * Version 1.1a ‹2017/09/09› + - Options `unicode(*)-fwid`. + - (experimental) Some“legacycode”-related options. + * Version 1.1 ‹2017/07/05› + - Revise the logic of generating map lines. + - Option `(no)strictcsi`. + - (transitional) Presets `sourcehan(-otc)+` and `noto(-otc)+`. + * Version 1.0c ‹2017/07/04› + - Bug fix. + * Version 1.0b ‹2017/06/29› + - Bug fix. + * Version 1.0a ‹2017/06/19› + - Driver options. + - Options `dumpmap` and `dumpmaptl`. + - Alias `jis2004` for the option `prefer2004jis`. + - (transitional) Preset `yu-win10+`. + * Version 1.0 ‹2017/05/31› + - The long-deprecated presets are now abolished. + - The package pxjafont is deprecated. + - Now `directunicode*` does not need japanese-otf. + - Option `unicode*`. + - Presets `sourcehan(-otc)` and `noto(-otc)`. + * Version 0.9 ‹2017/04/08› + - Option `directunicode*`. + * Version 0.8 ‹2017/01/13› + - Now `prefer2004jis` has no effect on the Japanese fonts provided + by japanese-otf pacakge even when using upTeX, since `jis2004` + option of japanese-otf can do the job now. + - Fix the settings for preset `moga-mobo` and `moga-maruberi`. + - Preset `moga-mobo-ex`. + - The simple map file preset (`*NAME`) feature. + * Version 0.7h ‹2015/10/14› + - Bug fix. + * Version 0.7g ‹2015/09/30› + - Presets `hiragino-elcapitan-*` and `yu-win10`. + * Version 0.7f ‹2015/08/04› + - `\diruni` and `\textdiruni`. + * Version 0.7e ‹2015/05/07› + - The map file preset (`+NAME`) feature. + - `\usefontmapfile` and `\usefontmapline`. + * Version 0.7d ‹2013/06/16› + - Explicit designation of non-embedding. + * Version 0.7c ‹2013/06/16› + - Support for Chinese and Korean fonts. + * Version 0.7b ‹2013/06/05› + - Support for the combination of upTeX + japanese-otf. + * Version 0.7a ‹2013/05/18› + - Bug fix. + * Version 0.7 ‹2013/05/08› + - `(no)directunicode` in vertical writing. + - `relfont` option. + * Version 0.6c ‹2013/04/20› + - `(no)directunicode` option. + * Version 0.6b ‹2013/04/20› + - `(no)oneweight` option. + - Support for `prefer2004jis` in using some non-CID fonts. + - Package level commands `\JaFontReplacementFor`, + `\JaFontReplacementHook` and `\JaFontUserDefinedMap`. + * Version 0.6a ‹2013/04/07› + - Complete revision of the preset settings. + - Support for `jis2004` version of the japanese-otf font set. + - Support for extra-bold weight in the japanese-otf font set. + * Version 0.6 ‹2013/03/17› + - `prefer2004jis` working on pTeX. + * Version 0.5 ‹2010/05/12› + * Version 0.4a ‹2010/04/12› + * Version 0.4 ‹2009/12/20› + * Version 0.3a ‹2009/11/23› + * Version 0.3 ‹2009/07/13› + * Version 0.2a ‹2009/05/31› + * Version 0.2 ‹2009/03/29› + +-------------------- +Takayuki YATO (aka. "ZR") +https://github.com/zr-tex8r diff --git a/language/japanese/pxchfon/pxchfon.pdf b/language/japanese/pxchfon/pxchfon.pdf Binary files differnew file mode 100644 index 0000000000..96b7b5041b --- /dev/null +++ b/language/japanese/pxchfon/pxchfon.pdf diff --git a/language/japanese/pxchfon/pxchfon.sty b/language/japanese/pxchfon/pxchfon.sty new file mode 100644 index 0000000000..c667ab8b88 --- /dev/null +++ b/language/japanese/pxchfon/pxchfon.sty @@ -0,0 +1,2006 @@ +%% +%% This is file 'pxchfon.sty'. +%% +%% Copyright (c) 2019 Takayuki YATO (aka. "ZR") +%% GitHub: https://github.com/zr-tex8r +%% Twitter: @zr_tex8r +%% +%% This package is distributed under the MIT License. +%% + +%% package declaration +\NeedsTeXFormat{pLaTeX2e} +\ProvidesPackage{pxchfon}[2019/07/10 v1.5a] +\def\pxcz@pkgname{pxchfon} + +%--------------------------------------- general + +%% variables +\newif\ifpxcz@ok +\newif\ifpxcz@utf +\let\pxcz@pre\relax +\let\pxcz@post\relax + +%% unique tokens +\def\pxcz@end{\pxcz@end@} +\def\pxcz@mt{\pxcz@mt@} + +%% \pxcz@csletcs{<cs1>}{<cs2>} +\def\pxcz@csletcs#1#2{% + \expandafter\let\csname#1\expandafter\endcsname\csname#2\endcsname} + +%% \pxcz@cond\ifXXX...\fi{<true>}{<false>} +\@gobbletwo\if\if \def\pxcz@cond#1\fi{% + #1\expandafter\@firstoftwo\else\expandafter\@secondoftwo\fi} + +%% \pxcz@onlypreamble@csdef{<csname>} +\def\pxcz@onlypreamble@csdef#1{% + \expandafter\pxcz@onlypreamble@def\csname#1\endcsname} +%% \pxcz@onlypreamble@def\CS +\def\pxcz@onlypreamble@def#1{% + \@onlypreamble#1\def#1} +%% \pxcz@onlypreamble@let\CS +\def\pxcz@onlypreamble@let#1{% + \@onlypreamble#1\let#1} + +%% \pxcz@csuse@or{<csname>}{<default>} +\def\pxcz@csuse@or#1#2{% + \expandafter\ifx\csname#1\endcsname\relax \expandafter\@firstoftwo + \else \expandafter\@secondoftwo + \fi{#2}{\csname#1\endcsname}} + +%% \pxcz@lower\CS +\def\pxcz@lower#1{% + \expandafter\pxcz@lower@a#1\pxcz@end#1} +\def\pxcz@lower@a#1\pxcz@end#2{% + \lowercase{\def#2{#1}}} + +%% \pxcz@split{<at>}{<target>} +\def\pxcz@split#1#2{% + \edef\pxcz@tmpx{{#1}{#2}}% + \expandafter\pxcz@split@a\pxcz@tmpx} +\def\pxcz@split@a#1#2{% + \def\pxcz@tmpx##1#1##2\pxcz@end{\pxcz@split@b{##1}{##2}}% + \pxcz@tmpx#2\pxcz@mt#1\pxcz@end} +\def\pxcz@split@b#1#2{% + \let\pxcz@pre\relax \let\pxcz@post\relax + \ifx\pxcz@end#2\pxcz@end\else + \pxcz@split@c#2\pxcz@end{#1}% + \fi} +\def\pxcz@split@c#1\pxcz@mt#2\pxcz@end#3{% + \def\pxcz@pre{#3}\def\pxcz@post{#1}} + +%--------------------------------------- environment check + +%% check for 'pxjafont' package +% if old version of pxjafont is loaded (probably this package is +% required from pxjafont), then I abort here with an error message. +\@ifpackageloaded{pxjafont}{% + \ifx\pxAliasedPxjafont\@undefined + \PackageError\pxcz@pkgname + {FATAL: Old 'pxjafont' is loaded}{\@ehc} + \expandafter\@@end\fi}{} + +%% \ifpxcz@uptex +\newif\ifpxcz@uptex \pxcz@uptexfalse +\edef\pxcz@tmpa{\string\ucs}\edef\pxcz@tmpb{\meaning\ucs} +\ifx\pxcz@tmpa\pxcz@tmpb \pxcz@uptextrue \fi + +%% \ifpxcz@otf@deluxe +\newif\ifpxcz@otf@deluxe \pxcz@otf@deluxefalse +\@ifpackagewith{otf}{deluxe}{\pxcz@otf@deluxetrue}{} +\@ifpackagewith{pxotf}{deluxe}{\pxcz@otf@deluxetrue}{} + +%% \ifpxcz@otf@multi +\newif\ifpxcz@otf@multi \pxcz@otf@multifalse +\@ifpackagewith{otf}{multi}{\pxcz@otf@multitrue}{} + +%% \ifpxcz@otf@expert +\newif\ifpxcz@otf@expert \pxcz@otf@expertfalse +\@ifpackagewith{otf}{expert}{\pxcz@otf@experttrue}{} + +%% \pxcz@pxufont@avail +\IfFileExists{pxufont-ruby.sty}{\chardef\pxcz@pxufont@avail=2 }{% +\IfFileExists{pxufont.sty}{\chardef\pxcz@pxufont@avail=1 }{% + \chardef\pxcz@pxufont@avail=0 }} + +%% \pxcz@pxufont@loaded +\@ifpackageloaded{pxufont}{% + \ifx t\pxufontUseRubyFont \chardef\pxcz@pxufont@loaded=2 + \else \chardef\pxcz@pxufont@loaded=1 + \fi +}{%else + \chardef\pxcz@pxufont@loaded=0 +} + +%--------------------------------------- handle options + +%% variables +\newif\ifpxcz@enabled \pxcz@enabledtrue +\let\pxcz@alphabet=n +\newif\ifpxcz@otf \pxcz@otftrue +\newif\ifpxcz@cmap@alpha +\newif\ifpxcz@mmivjis +\newif\ifpxcz@everypage +\newif\ifpxcz@oneweight +\newif\ifpxcz@uniquify +\newif\ifpxcz@fullwidth +\let\pxcz@directunicode\relax +\let\pxcz@main@preset\relax +\let\pxcz@file@preset\relax +\newif\ifpxcz@file@preset@tl +\newif\ifpxcz@alpha +\newif\ifpxcz@rel +\newif\ifpxcz@dumpmap +\newif\ifpxcz@dumpmap@tl +\newif\ifpxcz@switch@font \pxcz@switch@fonttrue +\newif\ifpxcz@switch@font@xwid +\newif\ifpxcz@switch@font@xjis +\let\pxcz@strict@csi\relax +\newif\ifpxcz@directunicode@default +\let\pxcz@legacycode\relax +\let\pxcz@expert\relax +\newif\ifpxcz@glyphid + +%% process options +% drivers +\DeclareOption{nodvidriver}{\pxcz@enabledfalse} +\DeclareOption{dvips}{\pxcz@enabledfalse} +\DeclareOption{dviout}{\pxcz@enabledfalse} +\DeclareOption{xdvi}{\pxcz@enabledfalse} +\DeclareOption{dvipdfmx}{\pxcz@enabledtrue} +% (no)alphabet / relfont +\DeclareOption{alphabet}{\let\pxcz@alphabet=t} +\DeclareOption{noalphabet}{\let\pxcz@alphabet=f} +\DeclareOption{relfont}{\let\pxcz@alphabet=r} +% (no)otf +\DeclareOption{otf}{\pxcz@otftrue} +\DeclareOption{nootf}{\pxcz@otffalse} +\DeclareOption{utf}{\pxcz@otftrue} +\DeclareOption{noutf}{\pxcz@otffalse} +% (no)usecmapforalphabet +\DeclareOption{usecmapforalphabet}{\pxcz@cmap@alphatrue} +\DeclareOption{nousecmapforalphabet}{\pxcz@cmap@alphafalse} +% (no)prefer2004jis / (no)jis2004 +\DeclareOption{prefer2004jis}{\pxcz@mmivjistrue} +\DeclareOption{noprefer2004jis}{\pxcz@mmivjisfalse} +\DeclareOption{jis2004}{\pxcz@mmivjistrue} +\DeclareOption{nojis2004}{\pxcz@mmivjisfalse} +% (no)everypage +\DeclareOption{everypage}{\pxcz@everypagetrue} +\DeclareOption{noeverypage}{\pxcz@everypagefalse} +% (no)oneweight +\DeclareOption{oneweight}{\pxcz@oneweighttrue} +\DeclareOption{nooneweight}{\pxcz@oneweightfalse} +% (no)directunicode / directunicode* +\chardef\pxcz@directunicode@none=0 +\chardef\pxcz@directunicode@otf=1 +\chardef\pxcz@directunicode@all=2 +\chardef\pxcz@directunicode@full=3 +\DeclareOption{directunicode*}{\let\pxcz@directunicode\pxcz@directunicode@all} +\DeclareOption{directunicode}{\let\pxcz@directunicode\pxcz@directunicode@otf} +\DeclareOption{nodirectunicode}{\let\pxcz@directunicode\pxcz@directunicode@none} +% (no)dumpmap +\DeclareOption{dumpmap}{\pxcz@dumpmaptrue} +\DeclareOption{nodumpmap}{\pxcz@dumpmapfalse} +% (no)dumpmaptl +\DeclareOption{dumpmaptl}{\pxcz@dumpmap@tltrue} +\DeclareOption{nodumpmaptl}{\pxcz@dumpmap@tlfalse} +% (no)switchfont +\DeclareOption{switchfont}{\pxcz@switch@fonttrue} +\DeclareOption{noswitchfont}{\pxcz@switch@fontfalse} +% (no)strictcsi +\DeclareOption{strictcsi}{\let\pxcz@strict@csi=t} +\DeclareOption{nostrictcsi}{\let\pxcz@strict@csi=f} +% XXXXX-legacycode +\chardef\pxcz@legacycode@apply=0 +\chardef\pxcz@legacycode@ignore=1 +\chardef\pxcz@legacycode@suppress=2 +\chardef\pxcz@legacycode@replace=3 +\DeclareOption{apply-legacycode}{\let\pxcz@legacycode\pxcz@legacycode@apply} +\DeclareOption{ignore-legacycode}{\let\pxcz@legacycode\pxcz@legacycode@ignore} +\DeclareOption{suppress-legacycode}{\let\pxcz@legacycode\pxcz@legacycode@suppress} +\DeclareOption{replace-legacycode}{\let\pxcz@legacycode\pxcz@legacycode@replace} +% (no)expert +\DeclareOption{expert}{\let\pxcz@expert=t} +\DeclareOption{noexpert}{\let\pxcz@expert=f} +% (no)glyphid +\DeclareOption{glyphid}{\pxcz@glyphidtrue} +\DeclareOption{noglyphid}{\pxcz@glyphidfalse} +% preset spec options +\pxcz@onlypreamble@def\pxcz@all@main@preset{% + noembed,% + %(uniweight) + ms,ipa,ipaex,% + %(multiweight) + ms-hg,ipa-hg,ipaex-hg,moga-mobo,moga-mobo-ex,moga-maruberi,ume,% + kozuka-pro,kozuka-pr6,kozuka-pr6n,hiragino-pro,hiragino-pron,% + hiragino-elcapitan-pro,hiragino-elcapitan-pron,% + morisawa-pro,morisawa-pr6n,yu-win,yu-win10,yu-win10+,yu-osx,% + sourcehan-otc,sourcehan,sourcehan-jp,noto-otc,noto,noto-jp,% + sourcehan-otc+,sourcehan+,noto-otc+,noto+,% + %(alias) + hiragino,noto-otf,% + noEmbed,kozuka,hiragino-elcapitan,morisawa} +\pxcz@onlypreamble@def\pxcz@all@abolished@preset{% + ipa-otf,ipa-otf-dx,kozuka4,kozuka6,kozuka6n, + ms-dx,ipa-ttf,ipa-ttf-dx,ipav2,ipav2-dx,ipa-dx,hiragino-dx} + % But note, 'hiragino' != 'hiragino-pro' +\def\pxcz@do#1{\DeclareOption{#1}{\def\pxcz@main@preset{#1}}} +\@for\pxcz@x:=\pxcz@all@main@preset\do{% + \expandafter\pxcz@do\expandafter{\pxcz@x}} +\@for\pxcz@x:=\pxcz@all@abolished@preset\do{% + \expandafter\pxcz@do\expandafter{\pxcz@x}} +% others +% The 'unicode' option means a Unicode-oriented mapping, and requires +% dvipdfmx of version 20170627 or later. The 'unicode-fwid' is a variant. +% The 'unicode*(-fwid)' option is a transitional (deteriorated) version +% of 'unicode(-fwid)' and can work with dvipdfmx of version 20170318. +\pxcz@onlypreamble@csdef{pxcz@POPT/unicode}{% + \let\pxcz@directunicode\pxcz@directunicode@full} +\pxcz@onlypreamble@csdef{pxcz@POPT/unicode*}{% + \pxcz@uniquifytrue + \let\pxcz@directunicode\pxcz@directunicode@full} +\pxcz@onlypreamble@csdef{pxcz@POPT/unicode-fwid}{% + \pxcz@fullwidthtrue + \let\pxcz@directunicode\pxcz@directunicode@full} +\pxcz@onlypreamble@csdef{pxcz@POPT/unicode*-fwid}{% + \pxcz@fullwidthtrue \pxcz@uniquifytrue + \let\pxcz@directunicode\pxcz@directunicode@full} +\DeclareOption*{% + \pxcz@csuse@or{pxcz@POPT/\CurrentOption}{% + \pxcz@parse@opt\CurrentOption + \ifpxcz@ok\else \@unknownoptionerror \fi}} +\pxcz@onlypreamble@def\pxcz@parse@opt#1{% + \expandafter\pxcz@parse@opt@a#1\@nnil} +\pxcz@onlypreamble@def\pxcz@parse@opt@a{% + \futurelet\pxcz@tok\pxcz@parse@opt@b} +\pxcz@onlypreamble@def\pxcz@parse@opt@b{% + \pxcz@okfalse + \let\pxcz@tmpa\remove@to@nnil + \ifx+\pxcz@tok + \pxcz@file@preset@tltrue \let\pxcz@tmpa\pxcz@parse@opt@c + \else\ifx*\pxcz@tok + \pxcz@file@preset@tlfalse \let\pxcz@tmpa\pxcz@parse@opt@c + \fi\fi \pxcz@tmpa} +\pxcz@onlypreamble@def\pxcz@parse@opt@c#1#2\@nnil{% + \pxcz@oktrue + \edef\pxcz@file@preset{#2}} +% dispatch +\ProcessOptions* + +%% 'unicode*' and 'unicode*-fwid' are DEPRECATED +\ifpxcz@uniquify + \PackageWarningNoLine\pxcz@pkgname + {IMPORTANT: Option 'unicode*\ifpxcz@fullwidth -fwid\fi' + is DEPRECATED!\MessageBreak + This option invokes a transitional setting that\MessageBreak + is specially tailored for TL2017, and will be\MessageBreak + abolished in near future.\MessageBreak + You should update to TL2018 or later and use\MessageBreak + option 'unicode\ifpxcz@fullwidth -fwid\fi' instead} +\fi + +%% 'everypage' needs 'atbegshi' package +\ifpxcz@everypage +\RequirePackage{atbegshi} +\fi + +%% apply default value for \pxcz@directunicode +\ifx\pxcz@directunicode\relax + \let\pxcz@directunicode\pxcz@directunicode@none + \ifnum\pxcz@pxufont@loaded>0 + \PackageWarningNoLine\pxcz@pkgname + {Option 'unicode' is enabled, since the package\MessageBreak + 'pxufont' is already loaded} + \let\pxcz@directunicode\pxcz@directunicode@full + \fi + \pxcz@directunicode@defaulttrue +\fi + +%% set 'pxcz@alpha' +\@tempswafalse +\if\pxcz@main@preset\relax + \if\pxcz@file@preset\relax \@tempswatrue \fi +\fi +\if t\pxcz@alphabet \pxcz@alphatrue +\else\if f\pxcz@alphabet \pxcz@alphafalse +\else\if r\pxcz@alphabet \pxcz@alphafalse +\else\if@tempswa \pxcz@alphatrue +\else \pxcz@alphafalse +\fi\fi\fi\fi +\ifpxcz@alpha + \IfFileExists{pxchfon0.def}{}{%else + \PackageError\pxcz@pkgname + {Option 'alphabet' not available in Lite edition}% + {You must install full edition of PXchfon bundle, or specify + 'noalphabet'\MessageBreak as package option.}% + \pxcz@alphafalse} +\fi + +%% set 'pxcz@rel' +\if r\pxcz@alphabet \pxcz@reltrue +\else \pxcz@relfalse +\fi +\ifpxcz@rel + \IfFileExists{pxchfon0.def}{}{%else + \PackageError\pxcz@pkgname + {Option 'relfont' not available in Lite edition}% + {You must install full edition of PXchfon bundle.}% + \pxcz@relfalse} +\fi + +%% \ifpxcz@alphafont +% Whether or not alphabet fonts are used. +\newif\ifpxcz@alphafont +\ifpxcz@alpha \pxcz@alphafonttrue +\else\ifpxcz@rel \pxcz@alphafonttrue +\else \pxcz@alphafontfalse +\fi\fi + +%% apply default for \pxcz@strict@csi +\ifx\pxcz@strict@csi\relax + % 'dumpmap(tl)' changes the 'strictcsi' default to true. + \let\pxcz@strict@csi=f + \ifpxcz@dumpmap \let\pxcz@strict@csi=t \fi + \ifpxcz@dumpmap@tl \let\pxcz@strict@csi=t \fi +\fi +\if t\pxcz@strict@csi + % 'strictcsi' requires some pdfTeX feature. + \ifx\pdffiledump\@undefined + \PackageWarningNoLine\pxcz@pkgname + {The option 'strictcsi' cannot be used, because\MessageBreak + the engine does not support '\string\pdffiledump'} + \let\pxcz@strict@csi=f + \fi +\fi + +%% apply 'switch@font' +\ifpxcz@switch@font + \pxcz@switch@font@xjistrue +\else + \let\pxcz@switch@font@xwidtrue\pxcz@switch@font@xwidfalse + \let\pxcz@switch@font@xjistrue\pxcz@switch@font@xjisfalse +\fi + +%--------------------------------------- preset-dependent setup + +%% variables +\newif\ifpxcz@warn@unless@all@defined +\newif\ifpxcz@warn@unless@all@embedded + +%% \pxcz@apply@opt@unicode +% Forces the 'unicode' setup (unless a directunicode option was given). +\pxcz@onlypreamble@def\pxcz@apply@opt@unicode{% + \ifpxcz@directunicode@default % default -> unicode + \pxcz@warn@unicode + \let\pxcz@directunicode\pxcz@directunicode@full + \pxcz@uniquifyfalse + \else\ifnum\pxcz@directunicode=\pxcz@directunicode@full + \ifpxcz@uniquify % unicode* -> unicode+ + \pxcz@switch@font@xwidtrue \pxcz@uniquifyfalse + \fi % unicode -> (unchanged) + \else \pxcz@uniquifyfalse % otherwise, enable switch-font + \fi\fi} +%% \pxcz@apply@opt@unicodeP +% Forces the 'unicode+' setup, which is a 'unicode' with switch-font +% enabled on the width features. +\pxcz@onlypreamble@def\pxcz@apply@opt@unicodeP{% + \pxcz@uniquifyfalse + \pxcz@switch@font@xwidtrue % 'unicode+' + \ifnum\pxcz@directunicode=\pxcz@directunicode@full\else + \pxcz@warn@unicode + \let\pxcz@directunicode\pxcz@directunicode@full + \fi} +%% \pxcz@warn@unicode +\pxcz@onlypreamble@def\pxcz@warn@unicode{% + \PackageWarningNoLine\pxcz@pkgname + {The option 'unicode' is enforced, because the\MessageBreak + preset '\pxcz@main@preset' is selected.}} + +%% the setup +\def\pxcz@do#1{% + \edef\pxcz@tmpa{#1}% + \pxcz@cond\ifx\pxcz@main@preset\pxcz@tmpa\fi + {\@firstofone}{\@gobble}} +% A 'XXXX+' preset forces 'unicode+' setting. +% 'sourcehan(-otc)' and 'noto(-otc)' should force 'unicode', but currently +% equivalent to the corresponding 'XXXX+' preset. +\pxcz@do{sourcehan}{\pxcz@apply@opt@unicode} +\pxcz@do{sourcehan-otc}{\pxcz@apply@opt@unicode} +\pxcz@do{sourcehan-jp}{\pxcz@apply@opt@unicode} +\pxcz@do{noto}{\pxcz@apply@opt@unicode} +\pxcz@do{noto-otf}{\pxcz@apply@opt@unicode} +\pxcz@do{noto-otc}{\pxcz@apply@opt@unicode} +\pxcz@do{noto-jp}{\pxcz@apply@opt@unicode} +\pxcz@do{sourcehan+}{\pxcz@apply@opt@unicodeP} +\pxcz@do{sourcehan-otc+}{\pxcz@apply@opt@unicodeP} +\pxcz@do{noto+}{\pxcz@apply@opt@unicodeP} +\pxcz@do{noto-otc+}{\pxcz@apply@opt@unicodeP} +\pxcz@do{yu-win10+}{\pxcz@apply@opt@unicodeP} +% No-embed is not supported under the 'unicode' setup +\ifnum\pxcz@directunicode=\pxcz@directunicode@full + \pxcz@warn@unless@all@embeddedtrue +\fi + +%% apply default for \pxcz@legacycode +\ifx\pxcz@legacycode\relax + \ifnum\pxcz@directunicode=\pxcz@directunicode@full + \let\pxcz@legacycode\pxcz@legacycode@replace + \else \let\pxcz@legacycode\pxcz@legacycode@apply + \fi +\fi + +%% 'replace-lecacycode' requires the 'pxufont' package +\ifnum\pxcz@legacycode=\pxcz@legacycode@replace + \ifnum\pxcz@pxufont@avail<1 + \PackageError\pxcz@pkgname + {The option 'replace-lecacycode' requires the 'pxufont'\MessageBreak + package, but it is not installed}% + {The option 'suprress-lecacycode' is applied as fallback.\MessageBreak + \@ehc} + \let\pxcz@legacycode\pxcz@legacycode@suppress + \fi +\fi + +%% check requirements for 'glyphid' +\ifpxcz@glyphid + \pxcz@oktrue + \ifnum\pxcz@legacycode=\pxcz@legacycode@replace\else \pxcz@okfalse \fi + \ifpxcz@uptex\else \pxcz@okfalse \fi + \ifnum\pxcz@pxufont@avail<2 \pxcz@okfalse \fi + \ifpxcz@ok\else + \PackageError\pxcz@pkgname + {The option 'glyphid' cannot be used here. You must\MessageBreak + use upLaTeX and the 'unicode' option, and package\MessageBreak + 'pxufont' of v0.5 or later must be installed} + {\@ehc} + \pxcz@glyphidfalse + \fi +\fi + +%% check requirements for 'expert' +\pxcz@oktrue +\ifnum\pxcz@legacycode=\pxcz@legacycode@replace\else \pxcz@okfalse \fi +\ifnum\pxcz@directunicode=\pxcz@directunicode@full\else \pxcz@okfalse \fi +\ifpxcz@uniquify \pxcz@okfalse \fi % no 'unicode*' +\ifpxcz@switch@font@xwid \pxcz@okfalse \fi % no 'unicode+' +\ifnum\pxcz@pxufont@avail<2 \pxcz@okfalse \fi +\ifpxcz@ok\else + \if t\pxcz@expert % explicitly given + \PackageError\pxcz@pkgname + {The option 'expert' cannot be used here. You must\MessageBreak + use upLaTeX and the 'unicode' option, and package\MessageBreak + 'pxufont' of v0.5 or later must be installed} + {\@ehc} + \fi + \let\pxcz@expert=f +\fi + +%% apply default for \pxcz@expert +\ifpxcz@otf@expert + \ifx\pxcz@expert\relax + \let\pxcz@expert=t + \fi +\else + \if t\pxcz@expert + \PackageWarningNoLine\pxcz@pkgname + {The 'expert' option will be ignored, since the\MessageBreak + expert mode of the 'otf' package is not enabled} + \fi + \let\pxcz@expert=f +\fi +\if t\pxcz@expert + \pxcz@warn@unless@all@definedtrue +\fi + +%--------------------------------------- user interface + +%% \pxcz@sym@list +\def\pxcz@sym@list{% + mnl,mnr,mnb,gtr,gtb,gtx,gtu,mgr,kom,kog,scm,scg,tcm,tcg} + +%%<*> \setminchofont/\setgothicfont/etc. +\newcommand*\setminchofont{\pxcz@setfont{mnl,mnr,mnb}} +\newcommand*\setgothicfont{\pxcz@setfont{gtr,gtb,gtx,gtu}} +\newcommand*\setlightminchofont{\pxcz@setfont{mnl}} +\newcommand*\setmediumminchofont{\pxcz@setfont{mnr}} +\newcommand*\setboldminchofont{\pxcz@setfont{mnb}} +\newcommand*\setmediumgothicfont{\pxcz@setfont{gtr}} +\newcommand*\setboldgothicfont{\pxcz@setfont{gtb}} +\newcommand*\setxboldgothicfont{\pxcz@setfont{gtx}} +\newcommand*\setoneweightgothicfont{\pxcz@setfont{gtu}} +\newcommand*\setmarugothicfont{\pxcz@setfont{mgr}} +\newcommand*\setkoreanminchofont{\pxcz@setfont{kom}} +\newcommand*\setkoreangothicfont{\pxcz@setfont{kog}} +\newcommand*\setschineseminchofont{\pxcz@setfont{scm}} +\newcommand*\setschinesegothicfont{\pxcz@setfont{scg}} +\newcommand*\settchineseminchofont{\pxcz@setfont{tcm}} +\newcommand*\settchinesegothicfont{\pxcz@setfont{tcg}} +\pxcz@onlypreamble@def\pxcz@setfont#1{\@ifnextchar[%] + {\pxcz@setfont@a{#1}}{\pxcz@setfont@a{#1}[0]}} +\pxcz@onlypreamble@def\pxcz@setfont@a#1[#2]#3{% + \edef\pxcz@tmpa{#3}\pxcz@lower\pxcz@tmpa + \pxcz@split{?:}{?\pxcz@tmpa}% + \ifx\pxcz@pre\relax + \pxcz@split{tc?}{\pxcz@tmpa?}% + \ifx\pxcz@pre\relax \pxcz@setfont@b{#1}{#3}% + \else \pxcz@setfont@b{#1}{:#2:#3}% + \fi + \else \pxcz@setfont@b{#1}{#3}% + \fi} +\pxcz@onlypreamble@def\pxcz@setfont@b#1#2{% + \@for\pxcz@tmpx:=#1\do{% + \@namedef{pxcz@FS/\pxcz@tmpx}{#2}}} +\@for\pxcz@x:=\pxcz@sym@list\do{% + \@namedef{pxcz@FS/\pxcz@x}{}} + +%--------------------------------------- '\asUTF' +% NB. This feature is superseded by the \diruni command. +\ifpxcz@uptex + +%%<*> \asUTF{<jachar>} +\AtBeginDocument{% + \@ifpackageloaded{otf}{% + \providecommand*\asUTF{\pxcz@asutf@a}% + }{}% +} +\def\pxcz@asutf@a#1{% + \pxcz@warn@depre@asutf + \kchardef\pxcz@tmpa=`#1\relax + \expandafter\pxcz@asutf@b\meaning\pxcz@tmpa\relax +} +\def\pxcz@asutf@b#1"#2\relax{% + \UTF{#2}% +} +\def\pxcz@warn@depre@asutf{% + \PackageWarningNoLine\pxcz@pkgname + {Important: Command '\string\asUTF' is DEPRECATED}% + \global\let\pxcz@warn@depre@asutf\relax +} + +\fi +%--------------------------------------- fontmap internals + +%% \pxcz@noembed +% The value given to \set...font to mean 'no-embed'. +\def\pxcz@noembed{*} + +%% \pxcz@kill@mapping +\def\pxcz@kill@mapping{!} + +%% \pxcz@cmap@directuni +% CMap symbol for "direct unicode". +\def\pxcz@cmap@directuni{unicode} + +%% \pxcz@cmap@hwuni +% CMap name for halfwidth fonts. +\def\pxcz@cmap@hwuni{UniJIS-UCS2-HW-H} + +%%<*> \usecmapforalphabet/\nousecmapforalphabet +\newcommand*\usecmapforalphabet{% + \global\pxcz@cmap@alphatrue} +\newcommand*\nousecmapforalphabet{% + \global\pxcz@cmap@alphafalse} + +%% \pxcz@NEF/<sym> +\def\pxcz@do#1#2{% + \def\pxcz@tmpb{#2}% + \@for\pxcz@tmpa:=#1\do{% + \expandafter\let\csname pxcz@NEF/\pxcz@tmpa\endcsname\pxcz@tmpb + }} +\pxcz@do{mnl,mnr,mnb}{Ryumin-Light} +\pxcz@do{gtr,gtb,gtx,gtu,mgr}{GothicBBB-Medium} +\pxcz@do{kom}{HYSMyeongJo-Medium} +\pxcz@do{kog}{HYGoThic-Medium} +\pxcz@do{scm}{STSong-Light} +\pxcz@do{scg}{STHeiti-Regular} +\pxcz@do{tcm}{MSung-Light} +\pxcz@do{tcg}{MHei-Medium} + +%%<+> \JaFontReplacementFor{<sym>} +\newcommand*\JaFontReplacementFor[1]{% + \csname pxcz@FS/#1\endcsname} + +%%<+> \JaFontReplacementHook{<code>} +\@onlypreamble\JaFontReplacementHook +\newcommand*\JaFontReplacementHook{% + \g@addto@macro\pxcz@user@hook} +\let\pxcz@user@hook\@empty + +%%<+> \JaFontUserDefinedMap +\@onlypreamble\JaFontUserDefinedMap +\newcommand*\JaFontUserDefinedMap{% + \g@addto@macro\pxcz@user@map} +\let\pxcz@user@map\@empty +\@namedef{pxcz@FS/*}{\pxcz@empty} + +%%<+> \usefontmapline{<map-line>} +\@onlypreamble\usefontmapline +\newcommand*\usefontmapline[1]{% + \JaFontUserDefinedMap{\pxcz@addtospec@alt\pxcz@mapline{#1}}} + +%%<+> \usefontmapfile{<map-file>} +\@onlypreamble\usefontmapfile +\newcommand*\usefontmapfile[1]{% + \JaFontUserDefinedMap{\pxcz@addtospec@alt\pxcz@mapfile{#1}}} + +%% \pxcz@check@extra +% Executed at the begin-document hook. +\@onlypreamble\pxcz@check@extra +\let\pxcz@check@extra\@empty + +%--------------------------------------- map entry handling + +%%<*> \setnewglyphcmapprefix{<str>} +\def\pxcz@pfx@jis@dflt{2004-} +\def\pxcz@pfx@jis@star{JISX0213-2004-} +\@onlypreamble\setnewglyphcmapprefix +\newcommand*\setnewglyphcmapprefix{% + \@ifstar{\pxcz@set@pfx@jis\pxcz@pfx@jis@star}% + {\pxcz@set@pfx@jis}} +\def\pxcz@set@pfx@jis#1{% + \edef\pxcz@pfx@jis{#1}} +\setnewglyphcmapprefix{\pxcz@pfx@jis@dflt} + +%% variables +\let\pxcz@sym\relax +\let\pxcz@cmap\relax +\let\pxcz@font\relax +\let\pxcz@csi\relax +\newif\ifpxcz@vert +\newif\ifpxcz@retain +\newif\ifpxcz@retain@csi +\let\pxcz@lopts\relax +\let\pxcz@mopts\relax +\let\pxcz@font@tribe\relax +\newif\ifpxcz@noembed@used + +%% \pxcz@@jpXX +\edef\pxcz@@jpXX{% + \ifpxcz@mmivjis jp04\else jp90\fi} +%% \pxcz@add@lopt +\pxcz@onlypreamble@def\pxcz@add@lopt#1{% + \edef\pxcz@lopts{% + \ifx\pxcz@lopts\@empty\else \pxcz@lopts:\fi#1}} +%% \pxcz@uniquify@lopts +\pxcz@onlypreamble@def\pxcz@uniquify@lopts#1#2{% + \pxcz@oktrue + \def\pxcz@tmpb{jp90}\ifx\pxcz@tmpb\pxcz@lopts\pxcz@okfalse\fi + \def\pxcz@tmpb{jp04}\ifx\pxcz@tmpb\pxcz@lopts\pxcz@okfalse\fi + \ifx\@empty\pxcz@lopts\if t#1\pxcz@okfalse\fi\fi + \ifpxcz@ok + \edef\pxcz@lopts{#2}% + \fi} + +%% \pxcz@is@jis@cmap +\pxcz@onlypreamble@def\pxcz@is@jis@cmap{% + \pxcz@okfalse + \expandafter\pxcz@is@jis@cmap@a\pxcz@cmap\pxcz@end} +\pxcz@onlypreamble@def\pxcz@is@jis@cmap@a#1#2\pxcz@end{% + \ifx\pxcz@mt#2\pxcz@mt \pxcz@oktrue \fi} + +%% \pxcz@force@mmiv@cmap +\pxcz@onlypreamble@def\pxcz@force@mmiv@cmap{% + \pxcz@is@jis@cmap \ifpxcz@ok + \edef\pxcz@cmap{\pxcz@pfx@jis\pxcz@cmap}% + \else + \pxcz@split{UniJIS-}\pxcz@cmap + \ifx\pxcz@pre\relax\else + \edef\pxcz@cmap{UniJIS2004-\pxcz@post}% + \fi + \fi} + +%% \pxcz@inspect@font@tribe +\pxcz@onlypreamble@def\pxcz@inspect@font@tribe{% + \let\pxcz@font@tribe\@empty + \ifx\pxcz@font\@empty + \else\ifx\pxcz@font\pxcz@noembed + \else + \pxcz@inspect@font@tribe@a{?SourceHanSerif-}{.otf?}{sourcehan}% + \pxcz@inspect@font@tribe@a{?SourceHanSans-}{.otf?}{sourcehan}% + \pxcz@inspect@font@tribe@a{?:0:SourceHanSerif-}{.ttc?}{sourcehanC}% + \pxcz@inspect@font@tribe@a{?:0:SourceHanSans-}{.ttc?}{sourcehanC}% + \pxcz@inspect@font@tribe@a{?NotoSerifCJKjp-}{.otf?}{noto}% + \pxcz@inspect@font@tribe@a{?NotoSansCJKjp-}{.otf?}{noto}% + \pxcz@inspect@font@tribe@a{?:0:NotoSerifCJK-}{.ttc?}{notoC}% + \pxcz@inspect@font@tribe@a{?:0:NotoSansCJK-}{.ttc?}{notoC}% + \pxcz@inspect@font@tribe@a{?yumin}{.ttf?}{yumin}% + \pxcz@inspect@font@tribe@a{?YUMIN}{.TTF?}{yuminU}% + \pxcz@inspect@font@tribe@a{:YuGoth}{.ttc?}{yugoth}% + \pxcz@inspect@font@tribe@a{:YUGOTH}{.TTC?}{yugoth}% + \pxcz@inspect@font@tribe@a{:moga}{.ttc?}{mogamobo}% + \pxcz@inspect@font@tribe@a{:mobo}{.ttc?}{mogamobo}% + \fi\fi + \ifx\pxcz@font@tribe\@empty\else + \PackageInfo\pxcz@pkgname + {Font tribe is '\pxcz@font@tribe':\MessageBreak + \@spaces\pxcz@font\@gobble}% + \fi} +\pxcz@onlypreamble@def\pxcz@inspect@font@tribe@a#1#2#3{% + \pxcz@split{#1}{?\pxcz@font}% + \ifx\pxcz@pre\relax\else + \pxcz@split{#2}{\pxcz@font?}% + \ifx\pxcz@pre\relax\else + \def\pxcz@font@tribe{#3}% + \fi + \fi} + +%% \pxcz@switch@font@for{<feature>} +% Modifies \pxcz@font, assuming \pxcz@font@tribe is properly set. +\pxcz@onlypreamble@def\pxcz@switch@font@for#1{% + \pxcz@csletcs{pxcz@tmpb}{pxcz@switch@font@@\pxcz@font@tribe @#1}% + \ifx\pxcz@tmpb\relax\else +%\typeout{#1:\pxcz@font-->\expandafter\pxcz@tmpb\pxcz@font}% + \edef\pxcz@font{\expandafter\pxcz@tmpb\pxcz@font}% + \fi} +% entries +\ifpxcz@switch@font@xwid + \def\pxcz@switch@font@@sourcehanC@fwid#1:0:{:2:} + \def\pxcz@switch@font@@sourcehanC@hwid#1:0:{:1:} + \def\pxcz@switch@font@@sourcehan@fwid#1-{#1SC-} + \def\pxcz@switch@font@@sourcehan@hwid#1-{#1K-} + \def\pxcz@switch@font@@notoC@fwid#1:0:{:2:} + \def\pxcz@switch@font@@notoC@hwid#1:0:{:1:} + \def\pxcz@switch@font@@noto@fwid#1jp{#1sc} + \def\pxcz@switch@font@@noto@hwid#1jp{#1kr} + \def\pxcz@switch@font@@yugoth@fwid#1:0:{:1:} + \def\pxcz@switch@font@@yumin@fwid#1.ttf{% + \@nameuse{pxcz@SFYM/#1.ttf}} + \def\pxcz@switch@font@@yuminU@fwid#1.TTF{% + \@nameuse{pxcz@SFYM/#1.TTF}} + \def\pxcz@do#1{\@namedef{pxcz@SFYM/#1}} + \pxcz@do{yuminl.ttf}{:1:YuGothL.ttc} + \pxcz@do{yumin.ttf}{:1:YuGothR.ttc} + \pxcz@do{yumindb.ttf}{:1:YuGothM.ttc} + \pxcz@do{YUMINL.TTF}{:1:YUGOTHL.TTC} + \pxcz@do{YUMIN.TTF}{:1:YUGOTHR.TTC} + \pxcz@do{YUMINDB.TTF}{:1:YUGOTHM.TTC} +\fi +\ifpxcz@switch@font@xjis + \@namedef{pxcz@switch@font@@mogamobo@jp90}#1.ttc{% + \pxcz@csuse@or{pxcz@SFMG/#1.ttc}{#1.ttc}} + \def\pxcz@do#1#2#3{\@namedef{pxcz@SFMG/:#1:#3}{:#2:#3}} + \pxcz@do{0}{3}{mogam.ttc} + \pxcz@do{1}{4}{mogam.ttc} + \pxcz@do{0}{3}{mogamb.ttc} + \pxcz@do{1}{4}{mogamb.ttc} + \pxcz@do{0}{2}{mogag.ttc} + \pxcz@do{1}{3}{mogag.ttc} + \pxcz@do{0}{2}{mogagb.ttc} + \pxcz@do{1}{3}{mogagb.ttc} + \pxcz@do{0}{2}{mobog.ttc} + \pxcz@do{1}{3}{mobog.ttc} + \pxcz@do{0}{2}{mobogb.ttc} + \pxcz@do{1}{3}{mobogb.ttc} +\fi + +%% \pxcz@declare@entry@modifier{<name>} +\pxcz@onlypreamble@def\pxcz@declare@entry@modifier#1{% + \pxcz@onlypreamble@csdef{pxcz@MEM/#1}} + +%% entry modifiers +% Uni: Changes cmap to 'unicode' if directunicode. +\pxcz@declare@entry@modifier{Uni}{% + \ifnum\pxcz@directunicode<\pxcz@directunicode@otf\else + \ifx\pxcz@font\pxcz@noembed\else + \let\pxcz@cmap\pxcz@cmap@directuni + \fi + \fi} +% Uni*: Changes cmap to 'unicode' if directunicode*. +\pxcz@declare@entry@modifier{Uni*}{% + \ifnum\pxcz@directunicode<\pxcz@directunicode@all\else + \ifx\pxcz@font\pxcz@noembed\else + \let\pxcz@cmap\pxcz@cmap@directuni + \fi + \fi} +% Switch: Selects 90 or 04 (according to mmivjis) +\pxcz@declare@entry@modifier{Switch}{% + \ifpxcz@mmivjis + \pxcz@force@mmiv@cmap + \else + \pxcz@switch@font@for{jp90}% + \fi + \pxcz@add@lopt{\pxcz@@jpXX}} +% 04 +\pxcz@declare@entry@modifier{04}{% + \pxcz@add@lopt{jp04}} +% 90 +\pxcz@declare@entry@modifier{90}{% + \pxcz@switch@font@for{jp90}% + \pxcz@add@lopt{jp90}} +% HWid +\pxcz@declare@entry@modifier{HWid}{% + \ifx\pxcz@font\pxcz@noembed \pxcz@okfalse + \else\ifnum\pxcz@directunicode=\pxcz@directunicode@full \pxcz@oktrue + \else\ifpxcz@cmap@alpha \pxcz@okfalse + \else \pxcz@oktrue + \fi\fi\fi + \ifpxcz@ok + \let\pxcz@cmap\pxcz@cmap@directuni + \pxcz@switch@font@for{hwid}% + \else \let\pxcz@cmap\pxcz@cmap@hwuni + \fi + \pxcz@add@lopt{hwid}} +% FWid +\pxcz@declare@entry@modifier{FWid}{% + \pxcz@switch@font@for{fwid}% + \pxcz@add@lopt{fwid}} +% AJ16/AK12/AG14/AC14 +\pxcz@declare@entry@modifier{AJ16}{\def\pxcz@csi{AJ16}} +\pxcz@declare@entry@modifier{AK12}{\def\pxcz@csi{AK12}\pxcz@retaintrue} +\pxcz@declare@entry@modifier{AG14}{\def\pxcz@csi{AG14}\pxcz@retaintrue} +\pxcz@declare@entry@modifier{AC14}{\def\pxcz@csi{AC14}\pxcz@retaintrue} +% V: Adds '-w 1' if cmap is 'unicode'. +\pxcz@declare@entry@modifier{V}{% + \pxcz@verttrue + \ifx\pxcz@cmap\pxcz@cmap@directuni + \edef\pxcz@mopts{ -w 1\pxcz@mopts}% + \fi} +% Exp: Adds 'hkna/vkna' if cmap is 'unicode'. +\pxcz@declare@entry@modifier{Exp}{% + \if t\pxcz@expert \ifx\pxcz@cmap\pxcz@cmap@directuni + \ifpxcz@vert \pxcz@add@lopt{vkna}% + \else \pxcz@add@lopt{hkna}% + \fi + \fi\fi} +% Ruby +\pxcz@declare@entry@modifier{Ruby}{% + \if t\pxcz@expert + \let\pxcz@cmap\pxcz@cmap@directuni + \pxcz@add@lopt{ruby}% + \fi} +% I +\pxcz@declare@entry@modifier{I}{% + \def\pxcz@csi{I}% + \pxcz@retaintrue \pxcz@retain@csitrue} +% Fin: final step +\pxcz@declare@entry@modifier{Fin}{% + \ifx\pxcz@csi\relax\else + \ifpxcz@retain@csi + \edef\pxcz@mopts{/\pxcz@csi}% + \else\expandafter\ifx\csname pxcz@OT/\pxcz@sym\endcsname\relax + \edef\pxcz@mopts{/\pxcz@csi}% + \else % omit CSI part for CFF fonts + \let\pxcz@mopts\@empty + \fi\fi + \fi} + +%% \pxcz@spec +\let\pxcz@spec\@empty + +%% \pxcz@addtospec{<id>} +\pxcz@onlypreamble@def\pxcz@addtospec#1{% + \begingroup + \let\Entry\pxcz@Entry + \@nameuse{pxcz@ME/#1}% + \endgroup} +%% \Entry{<sym>}{<tfm>}{<cmap>}{<modify>,...} +\pxcz@onlypreamble@def\pxcz@Entry#1#2#3#4{% + \def\pxcz@sym{#1}\def\pxcz@cmap{#3}% + \let\pxcz@csi\relax \let\pxcz@mopts\@empty \let\pxcz@lopts\@empty + \pxcz@retainfalse \pxcz@retain@csifalse \pxcz@vertfalse + \edef\pxcz@font{\@nameuse{pxcz@FS/\pxcz@sym}}% + \pxcz@inspect@font@tribe + % apply modifiers + \@for\pxcz@tmpx:=#4,Fin\do{% + \ifx\pxcz@font\@empty\else + \@nameuse{pxcz@MEM/\pxcz@tmpx}% + \fi}% + % resolve no-embed font spec + \ifx\pxcz@font\pxcz@noembed + \edef\pxcz@font{!\@nameuse{pxcz@NEF/\pxcz@sym}}% + \pxcz@retaintrue + \global\pxcz@noembed@usedtrue + \fi + % apply layout options when using 'unicode' + \ifnum\pxcz@directunicode<\pxcz@directunicode@full\else + \ifx\pxcz@cmap\pxcz@cmap@directuni + \ifpxcz@uniquify + \pxcz@uniquify@lopts{t}{\pxcz@@jpXX}% + \ifpxcz@fullwidth + \pxcz@add@lopt{fwid}% + \fi + \else + \ifpxcz@fullwidth + \pxcz@split{wid}\pxcz@lopts\ifx\pxcz@pre\relax + \pxcz@add@lopt{fwid}% + \fi + \fi + \fi + \ifx\pxcz@lopts\@empty\else + \edef\pxcz@mopts{\pxcz@mopts\space -l \pxcz@lopts}% + \fi + \fi + \fi + % suppress legacy-code mappings unless 'apply-legacycode' + \ifx\pxcz@cmap\pxcz@cmap@directuni\else \ifpxcz@retain\else + \ifnum\pxcz@legacycode=\pxcz@legacycode@apply % no-op + \else\ifnum\pxcz@legacycode=\pxcz@legacycode@ignore + \let\pxcz@font\@empty % skip + \else\ifx\pxcz@font\@empty\else + \let\pxcz@font\pxcz@kill@mapping % kill + \fi\fi\fi + \fi\fi + % output it + \ifx\pxcz@font\pxcz@kill@mapping + \xdef\pxcz@spec{\pxcz@spec\noexpand\special{% + \pxcz@mapline{-#2}}}% + \else\ifx\pxcz@font\@empty\else + \xdef\pxcz@spec{\pxcz@spec\noexpand\special{% + \pxcz@mapline{#2 \pxcz@cmap\space\pxcz@font\pxcz@mopts}}}% + \fi\fi} + +%% \pxcz@do@file@preset +\pxcz@onlypreamble@def\pxcz@do@file@preset{% + \ifpxcz@file@preset@tl + \pxcz@do@file@preset@a{ptex-}% + \ifpxcz@uptex \pxcz@do@file@preset@a{uptex-}\fi + \ifpxcz@otf + \pxcz@do@file@preset@a{otf-}% + \ifpxcz@uptex \pxcz@do@file@preset@a{otf-up-}\fi + \fi + \else + \pxcz@do@file@preset@a{}% + \fi} +\pxcz@onlypreamble@def\pxcz@do@file@preset@a#1{% + \pxcz@addtospec@alt\pxcz@mapfile{#1\pxcz@file@preset.map}} + +%% \pxcz@addtospec@alt +\def\pxcz@addtospec@alt#1#2{% + \xdef\pxcz@spec{\pxcz@spec\noexpand\special{#1{#2}}}} +\def\pxcz@mapfile#1{pdf:mapfile #1} +\def\pxcz@mapline#1{pdf:mapline #1} + +%--------------------------------------- map entry definitions + +%% \pxcz@mapentry{<id>}{<text>} +\pxcz@onlypreamble@def\pxcz@mapentry#1{% + \pxcz@onlypreamble@csdef{pxcz@ME/#1}} + +%% map entries +\pxcz@mapentry{STD}{% +\Entry{mnr}{rml} {H} {Switch}% +\Entry{mnr}{rmlv} {V} {Switch,V}% +\Entry{gtu}{gbm} {H} {Switch}% +\Entry{gtu}{gbmv} {V} {Switch,V}% +} +\pxcz@mapentry{ALPHA}{% +\Entry{mnl}{r-cfjar-l-@PXcjk0@}{unicode} {HWid}% +\Entry{mnl}{r-cfjar-lz-@PXcjk0@}{UniJIS-UCS2-H} {Uni*,FWid}% +\Entry{mnr}{r-cfjar-r-@PXcjk0@}{unicode} {HWid}% +\Entry{mnr}{r-cfjar-rz-@PXcjk0@}{UniJIS-UCS2-H} {Uni*,FWid}% +\Entry{mnb}{r-cfjar-b-@PXcjk0@}{unicode} {HWid}% +\Entry{mnb}{r-cfjar-bz-@PXcjk0@}{UniJIS-UCS2-H} {Uni*,FWid}% +\Entry{gtr}{r-cfjas-r-@PXcjk0@}{unicode} {HWid}% +\Entry{gtr}{r-cfjas-rz-@PXcjk0@}{UniJIS-UCS2-H} {Uni*,FWid}% +\Entry{gtb}{r-cfjas-b-@PXcjk0@}{unicode} {HWid}% +\Entry{gtb}{r-cfjas-bz-@PXcjk0@}{UniJIS-UCS2-H} {Uni*,FWid}% +\Entry{gtx}{r-cfjas-x-@PXcjk0@}{unicode} {HWid}% +\Entry{gtx}{r-cfjas-xz-@PXcjk0@}{UniJIS-UCS2-H} {Uni*,FWid}% +\Entry{mgr}{r-cfjam-r-@PXcjk0@}{unicode} {HWid}% +\Entry{mgr}{r-cfjam-rz-@PXcjk0@}{UniJIS-UCS2-H} {Uni*,FWid}% +} +\pxcz@mapentry{UTF}{% +\Entry{mnr}{unijmin-h} {UniJIS-UTF16-H} {Uni*,Switch}% +\Entry{mnr}{unijmin-v} {UniJIS-UTF16-V} {Uni*,Switch,V}% +\Entry{mnr}{cidmin-h} {Identity-H} {AJ16}% +\Entry{mnr}{cidmin-v} {Identity-V} {AJ16,V}% +\Entry{mnr}{hmr} {H} {Switch}% +\Entry{mnr}{hmrv} {V} {Switch,V}% +\Entry{gtu}{unijgoth-h} {UniJIS-UTF16-H} {Uni*,Switch}% +\Entry{gtu}{unijgoth-v} {UniJIS-UTF16-V} {Uni*,Switch,V}% +\Entry{gtu}{cidgoth-h} {Identity-H} {AJ16}% +\Entry{gtu}{cidgoth-v} {Identity-V} {AJ16,V}% +\Entry{gtu}{hkb} {H} {Switch}% +\Entry{gtu}{hkbv} {V} {Switch,V}% +} +\pxcz@mapentry{OTF}{% +\Entry{mnl}{otf-ujml-h} {UniJIS-UTF16-H} {Uni,90,FWid}% +\Entry{mnl}{otf-ujml-v} {UniJIS-UTF16-V} {Uni,90,FWid,V}% +\Entry{mnl}{otf-cjml-h} {Identity-H} {AJ16}% +\Entry{mnl}{otf-cjml-v} {Identity-V} {AJ16,V}% +\Entry{mnl}{hminl-h} {H} {90}% +\Entry{mnl}{hminl-v} {V} {90,V}% +\Entry{mnl}{otf-ujmln-h} {UniJIS2004-UTF16-H} {Uni,04,FWid}% +\Entry{mnl}{otf-ujmln-v} {UniJIS2004-UTF16-V} {Uni,04,FWid,V}% +\Entry{mnl}{hminln-h} {H} {}% +\Entry{mnl}{hminln-v} {V} {V}% +\Entry{mnr}{otf-ujmr-h} {UniJIS-UTF16-H} {Uni,90,FWid}% +\Entry{mnr}{otf-ujmr-v} {UniJIS-UTF16-V} {Uni,90,FWid,V}% +\Entry{mnr}{otf-cjmr-h} {Identity-H} {AJ16}% +\Entry{mnr}{otf-cjmr-v} {Identity-V} {AJ16,V}% +\Entry{mnr}{hminr-h} {H} {90}% +\Entry{mnr}{hminr-v} {V} {90,V}% +\Entry{mnr}{otf-ujmrn-h} {UniJIS2004-UTF16-H} {Uni,04,FWid}% +\Entry{mnr}{otf-ujmrn-v} {UniJIS2004-UTF16-V} {Uni,04,FWid,V}% +\Entry{mnr}{hminrn-h} {H} {}% +\Entry{mnr}{hminrn-v} {V} {V}% +\Entry{mnb}{otf-ujmb-h} {UniJIS-UTF16-H} {Uni,90,FWid}% +\Entry{mnb}{otf-ujmb-v} {UniJIS-UTF16-V} {Uni,90,FWid,V}% +\Entry{mnb}{otf-cjmb-h} {Identity-H} {AJ16}% +\Entry{mnb}{otf-cjmb-v} {Identity-V} {AJ16,V}% +\Entry{mnb}{hminb-h} {H} {90}% +\Entry{mnb}{hminb-v} {V} {90,V}% +\Entry{mnb}{otf-ujmbn-h} {UniJIS2004-UTF16-H} {Uni,04,FWid}% +\Entry{mnb}{otf-ujmbn-v} {UniJIS2004-UTF16-V} {Uni,04,FWid,V}% +\Entry{mnb}{hminbn-h} {H} {}% +\Entry{mnb}{hminbn-v} {V} {V}% +\Entry{gtr}{otf-ujgr-h} {UniJIS-UTF16-H} {Uni,90,FWid}% +\Entry{gtr}{otf-ujgr-v} {UniJIS-UTF16-V} {Uni,90,FWid,V}% +\Entry{gtr}{otf-cjgr-h} {Identity-H} {AJ16}% +\Entry{gtr}{otf-cjgr-v} {Identity-V} {AJ16,V}% +\Entry{gtr}{hgothr-h} {H} {90}% +\Entry{gtr}{hgothr-v} {V} {90,V}% +\Entry{gtr}{otf-ujgrn-h} {UniJIS2004-UTF16-H} {Uni,04,FWid}% +\Entry{gtr}{otf-ujgrn-v} {UniJIS2004-UTF16-V} {Uni,04,FWid,V}% +\Entry{gtr}{hgothrn-h} {H} {}% +\Entry{gtr}{hgothrn-v} {V} {V}% +\Entry{gtb}{otf-ujgb-h} {UniJIS-UTF16-H} {Uni,90,FWid}% +\Entry{gtb}{otf-ujgb-v} {UniJIS-UTF16-V} {Uni,90,FWid,V}% +\Entry{gtb}{otf-cjgb-h} {Identity-H} {AJ16}% +\Entry{gtb}{otf-cjgb-v} {Identity-V} {AJ16,V}% +\Entry{gtb}{hgothb-h} {H} {90}% +\Entry{gtb}{hgothb-v} {V} {90,V}% +\Entry{gtb}{otf-ujgbn-h} {UniJIS2004-UTF16-H} {Uni,04,FWid}% +\Entry{gtb}{otf-ujgbn-v} {UniJIS2004-UTF16-V} {Uni,04,FWid,V}% +\Entry{gtb}{hgothbn-h} {H} {}% +\Entry{gtb}{hgothbn-v} {V} {V}% +\Entry{gtx}{otf-ujge-h} {UniJIS-UTF16-H} {Uni,90,FWid}% +\Entry{gtx}{otf-ujge-v} {UniJIS-UTF16-V} {Uni,90,FWid,V}% +\Entry{gtx}{otf-cjge-h} {Identity-H} {AJ16}% +\Entry{gtx}{otf-cjge-v} {Identity-V} {AJ16,V}% +\Entry{gtx}{hgotheb-h} {H} {90}% +\Entry{gtx}{hgotheb-v} {V} {90,V}% +\Entry{gtx}{otf-ujgen-h} {UniJIS2004-UTF16-H} {Uni,04,FWid}% +\Entry{gtx}{otf-ujgen-v} {UniJIS2004-UTF16-V} {Uni,04,FWid,V}% +\Entry{gtx}{hgothebn-h} {H} {}% +\Entry{gtx}{hgothebn-v} {V} {V}% +\Entry{mgr}{otf-ujmgr-h} {UniJIS-UTF16-H} {Uni,90,FWid}% +\Entry{mgr}{otf-ujmgr-v} {UniJIS-UTF16-V} {Uni,90,FWid,V}% +\Entry{mgr}{otf-cjmgr-h} {Identity-H} {AJ16}% +\Entry{mgr}{otf-cjmgr-v} {Identity-V} {AJ16,V}% +\Entry{mgr}{hmgothr-h} {H} {90}% +\Entry{mgr}{hmgothr-v} {V} {90,V}% +\Entry{mgr}{otf-ujmgrn-h} {UniJIS2004-UTF16-H} {Uni,04,FWid}% +\Entry{mgr}{otf-ujmgrn-v} {UniJIS2004-UTF16-V} {Uni,04,FWid,V}% +\Entry{mgr}{hmgothrn-h} {H} {}% +\Entry{mgr}{hmgothrn-v} {V} {V}% +% +\ifpxcz@otf@multi +\Entry{kom}{otf-ukmr-h} {UniKS-UTF16-H} {Uni,FWid}% +\Entry{kom}{otf-ukmr-v} {UniKS-UTF16-V} {Uni,FWid,V}% +\Entry{kom}{otf-ckmr-h} {Identity-H} {AK12}% +\Entry{kom}{otf-ckmr-v} {Identity-V} {AK12,V}% +\Entry{kog}{otf-ukgr-h} {UniKS-UTF16-H} {Uni,FWid}% +\Entry{kog}{otf-ukgr-v} {UniKS-UTF16-V} {Uni,FWid,V}% +\Entry{kog}{otf-ckgr-h} {Identity-H} {AK12}% +\Entry{kog}{otf-ckgr-v} {Identity-V} {AK12,V}% +\Entry{scm}{otf-ucmr-h} {UniGB-UTF16-H} {Uni,FWid}% +\Entry{scm}{otf-ucmr-v} {UniGB-UTF16-V} {Uni,FWid,V}% +\Entry{scm}{otf-ccmr-h} {Identity-H} {AG14}% +\Entry{scm}{otf-ccmr-v} {Identity-V} {AG14,V}% +\Entry{scg}{otf-ucgr-h} {UniGB-UTF16-H} {Uni,FWid}% +\Entry{scg}{otf-ucgr-v} {UniGB-UTF16-V} {Uni,FWid,V}% +\Entry{scg}{otf-ccgr-h} {Identity-H} {AG14}% +\Entry{scg}{otf-ccgr-v} {Identity-V} {AG14,V}% +\Entry{tcm}{otf-utmr-h} {UniCNS-UTF16-H} {Uni,FWid}% +\Entry{tcm}{otf-utmr-v} {UniCNS-UTF16-V} {Uni,FWid,V}% +\Entry{tcm}{otf-ctmr-h} {Identity-H} {AC14}% +\Entry{tcm}{otf-ctmr-v} {Identity-V} {AC14,V}% +\Entry{tcg}{otf-utgr-h} {UniCNS-UTF16-H} {Uni,FWid}% +\Entry{tcg}{otf-utgr-v} {UniCNS-UTF16-V} {Uni,FWid,V}% +\Entry{tcg}{otf-ctgr-h} {Identity-H} {AC14}% +\Entry{tcg}{otf-ctgr-v} {Identity-V} {AC14,V}% +\fi +} +\pxcz@mapentry{UPSTD}{% +\Entry{mnr}{uprml-h} {UniJIS-UTF16-H} {Uni*,Switch}% +\Entry{mnr}{uprml-v} {UniJIS-UTF16-V} {Uni*,Switch,V}% +\Entry{mnr}{uprml-hq} {UniJIS-UCS2-H} {Uni*,FWid}% +\Entry{gtu}{upgbm-h} {UniJIS-UTF16-H} {Uni*,Switch}% +\Entry{gtu}{upgbm-v} {UniJIS-UTF16-V} {Uni*,Switch,V}% +\Entry{gtu}{upgbm-hq} {UniJIS-UCS2-H} {Uni*,FWid}% +\Entry{mnr}{urml} {UniJIS-UTF16-H} {Uni*,Switch}% +\Entry{mnr}{urmlv} {UniJIS-UTF16-V} {Uni*,Switch,V}% +\Entry{gtu}{ugbm} {UniJIS-UTF16-H} {Uni*,Switch}% +\Entry{gtu}{ugbmv} {UniJIS-UTF16-V} {Uni*,Switch,V}% +% +\Entry{kom}{uphysmjm-h} {UniKS-UTF16-H} {Uni*}% +\Entry{kom}{uphysmjm-v} {UniKS-UTF16-V} {Uni*,V}% +\Entry{kog}{uphygt-h} {UniKS-UTF16-H} {Uni*}% +\Entry{kog}{uphygt-v} {UniKS-UTF16-V} {Uni*,V}% +\Entry{scm}{upstsl-h} {UniGB-UTF16-H} {Uni*}% +\Entry{scm}{upstsl-v} {UniGB-UTF16-V} {Uni*,V}% +\Entry{scg}{upstht-h} {UniGB-UTF16-H} {Uni*}% +\Entry{scg}{upstht-v} {UniGB-UTF16-V} {Uni*,V}% +\Entry{tcm}{upmsl-h} {UniCNS-UTF16-H} {Uni*}% +\Entry{tcm}{upmsl-v} {UniCNS-UTF16-V} {Uni*,V}% +\Entry{tcg}{upmhm-h} {UniCNS-UTF16-H} {Uni*}% +\Entry{tcg}{upmhm-v} {UniCNS-UTF16-V} {Uni*,V}% +} +\pxcz@mapentry{UPOTF}{% +\Entry{mnl}{uphminl-h} {UniJIS-UTF16-H} {Uni*,90,Exp}% +\Entry{mnl}{uphminl-v} {UniJIS-UTF16-V} {Uni*,90,V,Exp}% +\Entry{mnl}{uphminln-h} {UniJIS2004-UTF16-H} {Uni*,04,Exp}% +\Entry{mnl}{uphminln-v} {UniJIS2004-UTF16-V} {Uni*,04,V,Exp}% +\Entry{mnr}{uphminr-h} {UniJIS-UTF16-H} {Uni*,90,Exp}% +\Entry{mnr}{uphminr-v} {UniJIS-UTF16-V} {Uni*,90,V,Exp}% +\Entry{mnr}{uphminrn-h} {UniJIS2004-UTF16-H} {Uni*,04,Exp}% +\Entry{mnr}{uphminrn-v} {UniJIS2004-UTF16-V} {Uni*,04,V,Exp}% +\Entry{mnb}{uphminb-h} {UniJIS-UTF16-H} {Uni*,90,Exp}% +\Entry{mnb}{uphminb-v} {UniJIS-UTF16-V} {Uni*,90,V,Exp}% +\Entry{mnb}{uphminbn-h} {UniJIS2004-UTF16-H} {Uni*,04,Exp}% +\Entry{mnb}{uphminbn-v} {UniJIS2004-UTF16-V} {Uni*,04,V,Exp}% +\Entry{gtr}{uphgothr-h} {UniJIS-UTF16-H} {Uni*,90,Exp}% +\Entry{gtr}{uphgothr-v} {UniJIS-UTF16-V} {Uni*,90,V,Exp}% +\Entry{gtr}{uphgothrn-h} {UniJIS2004-UTF16-H} {Uni*,04,Exp}% +\Entry{gtr}{uphgothrn-v} {UniJIS2004-UTF16-V} {Uni*,04,V,Exp}% +\Entry{gtb}{uphgothb-h} {UniJIS-UTF16-H} {Uni*,90,Exp}% +\Entry{gtb}{uphgothb-v} {UniJIS-UTF16-V} {Uni*,90,V,Exp}% +\Entry{gtb}{uphgothbn-h} {UniJIS2004-UTF16-H} {Uni*,04,Exp}% +\Entry{gtb}{uphgothbn-v} {UniJIS2004-UTF16-V} {Uni*,04,V,Exp}% +\Entry{gtx}{uphgotheb-h} {UniJIS-UTF16-H} {Uni*,90,Exp}% +\Entry{gtx}{uphgotheb-v} {UniJIS-UTF16-V} {Uni*,90,V,Exp}% +\Entry{gtx}{uphgothebn-h} {UniJIS2004-UTF16-H} {Uni*,04,Exp}% +\Entry{gtx}{uphgothebn-v} {UniJIS2004-UTF16-V} {Uni*,04,V,Exp}% +\Entry{mgr}{uphmgothr-h} {UniJIS-UTF16-H} {Uni*,90,Exp}% +\Entry{mgr}{uphmgothr-v} {UniJIS-UTF16-V} {Uni*,90,V,Exp}% +\Entry{mgr}{uphmgothrn-h} {UniJIS2004-UTF16-H} {Uni*,04,Exp}% +\Entry{mgr}{uphmgothrn-v} {UniJIS2004-UTF16-V} {Uni*,04,V,Exp}% +} +\pxcz@mapentry{GID}{% +\Entry{mnl}{zur-gjml-h} {Identity-H} {I}% +\Entry{mnl}{zur-gjml-v} {Identity-V} {I,V}% +\Entry{mnr}{zur-gjmr-h} {Identity-H} {I}% +\Entry{mnr}{zur-gjmr-v} {Identity-V} {I,V}% +\Entry{mnb}{zur-gjmb-h} {Identity-H} {I}% +\Entry{mnb}{zur-gjmb-v} {Identity-V} {I,V}% +\Entry{gtr}{zur-gjgr-h} {Identity-H} {I}% +\Entry{gtr}{zur-gjgr-v} {Identity-V} {I,V}% +\Entry{gtb}{zur-gjgb-h} {Identity-H} {I}% +\Entry{gtb}{zur-gjgb-v} {Identity-V} {I,V}% +\Entry{gtx}{zur-gjge-h} {Identity-H} {I}% +\Entry{gtx}{zur-gjge-v} {Identity-V} {I,V}% +\Entry{mgr}{zur-gjmgr-h} {Identity-H} {I}% +\Entry{mgr}{zur-gjmgr-v} {Identity-V} {I,V}% +} +\pxcz@mapentry{EXPERT}{% +\Entry{mnl}{zur-rjml-h} {unicode} {Ruby}% +\Entry{mnl}{zur-rjml-v} {unicode} {V,Ruby}% +\Entry{mnr}{zur-rjmr-h} {unicode} {Ruby}% +\Entry{mnr}{zur-rjmr-v} {unicode} {V,Ruby}% +\Entry{mnb}{zur-rjmb-h} {unicode} {Ruby}% +\Entry{mnb}{zur-rjmb-v} {unicode} {V,Ruby}% +\Entry{gtr}{zur-rjgr-h} {unicode} {Ruby}% +\Entry{gtr}{zur-rjgr-v} {unicode} {V,Ruby}% +\Entry{gtb}{zur-rjgb-h} {unicode} {Ruby}% +\Entry{gtb}{zur-rjgb-v} {unicode} {V,Ruby}% +\Entry{gtx}{zur-rjge-h} {unicode} {Ruby}% +\Entry{gtx}{zur-rjge-v} {unicode} {V,Ruby}% +\Entry{mgr}{zur-rjmgr-h} {unicode} {Ruby}% +\Entry{mgr}{zur-rjmgr-v} {unicode} {V,Ruby}% +} +\pxcz@mapentry{PXOTF}{% +} + +% user-defined map +\pxcz@mapentry{USR}{% + \pxcz@user@map +} + +%--------------------------------------- '\diruni' + +%% variables +\newif\ifpxcz@diruni@ok +\let\pxcz@otf@weight\relax + +%% check if \diruni is available +\ifpxcz@uptex + \@ifpackageloaded{otf}{% directunicode needs otf + \ifnum\pxcz@directunicode>\z@ \pxcz@diruni@oktrue \fi + }{%else + \ifnum\pxcz@directunicode<\pxcz@directunicode@all\else + \pxcz@diruni@oktrue % directunicode* does not need otf + \AtBeginDocument{% to laod otf later causes inconsistency + \@ifpackageloaded{otf}{\pxcz@diruni@okfalse}{}}% + \fi + } +\fi + +%%<*> \diruni +\DeclareRobustCommand*{\diruni}{% + \not@math@alphabet\diruni\relax + \fontshape{diruni}\selectfont +} + +%%<*> \textdiruni{<text>} +\newcommand*{\textdiruni}[1]{% + \relax\ifmmode\hbox\fi{\diruni#1}% +} + +\ifpxcz@diruni@ok %---- <*diruni-ok> + +%% \pxcz@otf@weight: otf weight mode +% watch out for priority... +\@ifpackagewith{otf}{deluxe}{% + \let\pxcz@otf@weight=d +}{\@ifpackagewith{otf}{bold}{% + \let\pxcz@otf@weight=b +}{\@ifpackagewith{otf}{expert}{% + \let\pxcz@otf@weight=r % 'expert' cancels 'noreplace' +}{\@ifpackagewith{otf}{noreplace}{% + \let\pxcz@otf@weight=n +}{\@ifpackageloaded{otf}{% + \let\pxcz@otf@weight=r +}{%else + \let\pxcz@otf@weight=n +}}}}} +%% \pxcz@otf@mmivjis: otf jis2004 +\@ifpackagewith{otf}{jis2004}{% + \let\pxcz@otf@mmivjis=t% +}{%else + \let\pxcz@otf@mmivjis=f% +} +%% \pxcz@du@scale +\let\pxcz@du@scale\utf@sc@le +\ifx\pxcz@du@scale\@undefined + \let\pxcz@du@scale\Cjascale +\fi +\ifx\pxcz@du@scale\@undefined + \edef\pxcz@du@scale{\ifx\jsc@JYn\@undefined 0.962216\else 0.924715\fi}% +\fi + +%% \pxcz@du@decl@shape{<fam>}{<ser>}<sw>{<tfmname>}{<suffix>} +\pxcz@onlypreamble@def\pxcz@du@decl@shape#1#2#3#4#5{% +\DeclareFontShape{JY2}{#1}{#2}{diruni}{<->% + \pxcz@du@shape@spec{#3}{#4}{#5}{h}}{}% +\DeclareFontShape{JT2}{#1}{#2}{diruni}{<->% + \pxcz@du@shape@spec{#3}{#4}{#5}{v}}{}} +\pxcz@onlypreamble@def\pxcz@du@shape@spec#1#2#3#4{% + \if#1t% + s*[\pxcz@du@scale]#2\if t\pxcz@otf@mmivjis#3\fi-#4% + \else#2\fi} + +\if d\pxcz@otf@weight % deluxe +\pxcz@du@decl@shape{hmc}{l}t{otf-ujml}{n}% +\pxcz@du@decl@shape{hmc}{m}t{otf-ujmr}{n}% +\pxcz@du@decl@shape{hmc}{bx}t{otf-ujmb}{n}% +\pxcz@du@decl@shape{hgt}{m}t{otf-ujgr}{n}% +\pxcz@du@decl@shape{hgt}{bx}t{otf-ujgb}{n}% +\pxcz@du@decl@shape{hgt}{eb}t{otf-ujge}{n}% +\pxcz@du@decl@shape{mg}{m}t{otf-ujmgr}{n}% +\else\if b\pxcz@otf@weight % bold +\pxcz@du@decl@shape{hmc}{m}t{otf-ujmr}{n}% +\pxcz@du@decl@shape{hmc}{bx}f{ssub*hgt/m/diruni}{}% +\pxcz@du@decl@shape{hgt}{m}t{otf-ujgb}{n}% +\pxcz@du@decl@shape{hgt}{bx}f{ssub*hgt/m/diruni}{}% +\else\if r\pxcz@otf@weight % default +\pxcz@du@decl@shape{hmc}{m}t{otf-ujmr}{n}% +\pxcz@du@decl@shape{hmc}{bx}f{ssub*hgt/m/diruni}{}% +\pxcz@du@decl@shape{hgt}{m}t{otf-ujgr}{n}% +\pxcz@du@decl@shape{hgt}{bx}f{ssub*hgt/m/diruni}{}% +\else % noreplace +\ifnum\pxcz@directunicode>\@ne % (directunicode*) +\pxcz@du@decl@shape{mc}{m}t{uprml}{}% +\pxcz@du@decl@shape{mc}{bx}f{ssub*gt/m/diruni}{}% +\pxcz@du@decl@shape{gt}{m}t{upgbm}{}% +\pxcz@du@decl@shape{gt}{bx}f{ssub*gt/m/diruni}{}% +\else % (directunicode) +\pxcz@du@decl@shape{mc}{m}t{otf-ujmr}{n}% +\pxcz@du@decl@shape{mc}{bx}f{ssub*gt/m/diruni}{}% +\pxcz@du@decl@shape{gt}{m}t{otf-ujgr}{n}% +\pxcz@du@decl@shape{gt}{bx}f{ssub*gt/m/diruni}{}% +\fi +\fi\fi\fi + +\AtBeginDocument{% + \def\pxcz@do#1#2#3{% + \DeclareFontShape{#1}{#2}{#3}{diruni}{<->ssub*#2/#3/n}{}}% + \@for\pxcz@tmpa:={\rmdefault,\sfdefault,\ttdefault}\do{% + \pxcz@force@load@font@fam\pxcz@tmpa + \@for\pxcz@tmpb:={m,bx}\do{% + \edef\pxcz@tmpb{{\f@encoding}{\pxcz@tmpa}{\pxcz@tmpb}}% + \expandafter\pxcz@do\pxcz@tmpb}}% +} +\pxcz@onlypreamble@def\pxcz@force@load@font@fam#1{% + \begingroup + \edef\f@family{#1}\def\f@series{m}\def\f@shape{n}% + \xdef\font@name{\csname\curr@fontshape/\f@size\endcsname}% + \let\extract@font\relax + \pickup@font + \endgroup +} + +\ifpxcz@glyphid %---- <*glyphid> + +%%<*> \gid{<number>} +\DeclareRobustCommand*{\gid}[1]{% + \begingroup + \kanjishape{dirgid}\selectfont + \kchar#1\relax + \endgroup} + +%% \pxcz@dg@decl@shape{<fam>}{<ser>}<sw>{<tfmname>} +\pxcz@onlypreamble@def\pxcz@dg@decl@shape#1#2#3#4{% +\DeclareFontShape{JY2}{#1}{#2}{dirgid}{<->% + \pxcz@dg@shape@spec{#3}{#4}{h}}{}% +\DeclareFontShape{JT2}{#1}{#2}{dirgid}{<->% + \pxcz@dg@shape@spec{#3}{#4}{v}}{}} +\pxcz@onlypreamble@def\pxcz@dg@shape@spec#1#2#3{% + \if#1t% + s*[\pxcz@du@scale]#2-#3% + \else#2\fi} + +\if d\pxcz@otf@weight % deluxe +\pxcz@dg@decl@shape{hmc}{l}t{zur-gjml}% +\pxcz@dg@decl@shape{hmc}{m}t{zur-gjmr}% +\pxcz@dg@decl@shape{hmc}{bx}t{zur-gjmb}% +\pxcz@dg@decl@shape{hgt}{m}t{zur-gjgr}% +\pxcz@dg@decl@shape{hgt}{bx}t{zur-gjgb}% +\pxcz@dg@decl@shape{hgt}{eb}t{zur-gjge}% +\pxcz@dg@decl@shape{mg}{m}t{zur-gjmgr}% +\else\if b\pxcz@otf@weight % bold +\pxcz@dg@decl@shape{hmc}{m}t{zur-gjmr}% +\pxcz@dg@decl@shape{hmc}{bx}f{ssub*hgt/m/dirgid}{}% +\pxcz@dg@decl@shape{hgt}{m}t{zur-gjgb}% +\pxcz@dg@decl@shape{hgt}{bx}f{ssub*hgt/m/dirgid}{}% +\else\if r\pxcz@otf@weight % default +\pxcz@dg@decl@shape{hmc}{m}t{zur-gjmr}% +\pxcz@dg@decl@shape{hmc}{bx}f{ssub*hgt/m/dirgid}{}% +\pxcz@dg@decl@shape{hgt}{m}t{zur-gjgr}% +\pxcz@dg@decl@shape{hgt}{bx}f{ssub*hgt/m/dirgid}{}% +\else % noreplace +\pxcz@dg@decl@shape{mc}{m}t{zur-gjmr}% +\pxcz@dg@decl@shape{mc}{bx}f{ssub*gt/m/dirgid}{}% +\pxcz@dg@decl@shape{gt}{m}t{zur-gjgr}% +\pxcz@dg@decl@shape{gt}{bx}f{ssub*gt/m/dirgid}{}% +\fi\fi\fi + +\fi %---- </glyphid> + +\fi %---- </diruni-ok> + +%% \pxcz@err@diruni +\ifcase\pxcz@directunicode + \def\pxcz@errhelp@diruni{% + You must use upLaTeX and load pxchfon with 'directunicode(*)' option.} +\else + \def\pxcz@errhelp@diruni{% + You must use upLaTeX and load pxchfon after 'otf' package.} +\fi +\def\pxcz@err@diruni{% + \PackageError\pxcz@pkgname + {Command '\string\diruni' not available}% + {\pxcz@errhelp@diruni\MessageBreak\@ehc}% + \global\let\pxcz@err@diruni\relax} +\AtBeginDocument{% + \ifpxcz@diruni@ok + \let\pxcz@err@diruni\relax + \let\pxcz@errhelp@diruni\relax + \else + \let\diruni\pxcz@err@diruni + \fi} + +%--------------------------------------- 'alphabet' option + +%% check for textcomp +\newif\ifpxcz@textcomp +\@ifpackageloaded{textcomp}{\pxcz@textcomptrue}{} + +%% \pxcz@afont@enc@list +\def\pxcz@afont@enc@list{OT1,T1} +\ifpxcz@textcomp \g@addto@macro\pxcz@afont@enc@list{,TS1}\fi +%% \pxcz@decl@family{<fam>} +\pxcz@onlypreamble@def\pxcz@decl@family#1{% + \ifpxcz@textcomp \DeclareEncodingSubset{TS1}{#1}{3}\fi + \@for\pxcz@x:=\pxcz@afont@enc@list\do{% + \DeclareFontFamily{\pxcz@x}{#1}{}}} +%% \pxcz@decl@shape{<fam>}{<ser>}<sw>{<font>} +\pxcz@onlypreamble@def\pxcz@decl@shape#1#2#3#4{% + \if s#3% + \@for\pxcz@x:=\pxcz@afont@enc@list\do{% + \DeclareFontShape{\pxcz@x}{#1}{#2}{n}{<->ssub*#4}{}}% + \else + \DeclareFontShape{OT1}{#1}{#2}{n}{<->#4-l5j}{}% + \DeclareFontShape {T1}{#1}{#2}{n}{<->#4-t1}{}% + \ifpxcz@textcomp + \DeclareFontShape{TS1}{#1}{#2}{n}{<->#4-ts1}{}% + \fi + \fi + \@for\pxcz@x:=\pxcz@afont@enc@list\do{% + \DeclareFontShape{\pxcz@x}{#1}{#2}{it}{<->ssub*#1/#2/n}{}% + \DeclareFontShape{\pxcz@x}{#1}{#2}{sl}{<->ssub*#1/#2/n}{}}} + +\ifpxcz@alphafont %---- <*alphabet> +\ifpxcz@otf@deluxe %---- <*otfdx> : otf with deluxe option + % define families cfjar & cfjas +\pxcz@decl@family{cfjar}% +\pxcz@decl@shape{cfjar}{l}n{cfjar-l}% +\pxcz@decl@shape{cfjar}{m}n{cfjar-r}% +\pxcz@decl@shape{cfjar}{bx}n{cfjar-b}% +\pxcz@decl@family{cfjas}% +\pxcz@decl@shape{cfjas}{m}n{cfjas-r}% +\pxcz@decl@shape{cfjas}{bx}n{cfjas-b}% +\pxcz@decl@shape{cfjas}{eb}n{cfjas-x}% +\pxcz@decl@family{cfjam}% +\pxcz@decl@shape{cfjam}{m}n{cfjam-r}% + % redefine \ltseries & \ebseries so they affect roman font +\let\ltseries\relax \let\ebseries\relax +\DeclareRobustCommand\ltseries{% + \not@math@alphabet\ltseries\relax + \fontseries\ltdefault\selectfont}% +\DeclareRobustCommand\ebseries{% + \not@math@alphabet\ebseries\relax + \fontseries\ebdefault\selectfont}% +\else %---- <*!otfdx> +\pxcz@decl@family{cfjar}% +\pxcz@decl@shape{cfjar}{m}n{cfjar-r}% +\pxcz@decl@shape{cfjar}{bx}s{cfjas/m/n}% +\pxcz@decl@family{cfjas}% +\pxcz@decl@shape{cfjas}{m}n{cfjas-r}% +\pxcz@decl@shape{cfjas}{bx}s{cfjas/m/n}% +\pxcz@onlypreamble@def\pxcz@err@dxotf#1{% + \PackageError\pxcz@pkgname + {Loaded before '#1' with 'deluxe'}% + {This package must be loaded after '#1' with 'deluxe' option + when using both.}} +\g@addto@macro\pxcz@check@extra{% + \expandafter\let\expandafter\pxcz@x\csname pxcz@FS/mnr\endcsname + \ifx\pxcz@x\@empty\else + % if mnr is replaced but gtr is not then ... + \expandafter\ifx\csname pxcz@FS/gtr\endcsname\@empty + {\expandafter\let\csname pxcz@FS/gtr\endcsname\pxcz@x + \pxcz@Entry{gtr}{r-cfjas-r-@PXcjk0@}{unicode}{HWid}}% + \fi\fi + \@ifpackagewith{otf}{deluxe}{\pxcz@err@dxotf{otf}}{}% + \@ifpackagewith{pxotf}{deluxe}{\pxcz@err@dxotf{pxotf}}{}% +} +\fi %---- </otfdx> +\fi %---- </alphabet> + +%--------------------------------------- begin-document hook + +%% variables +\let\pxcz@afont@enc\relax + +%% \pxcz@mgfamily@hook +\def\pxcz@mgfamily@hook{\romanfamily{cfjam}} + +%% \pxcz@set@page@hook{<text>} +\ifpxcz@everypage +\pxcz@onlypreamble@def\pxcz@set@page@hook#1{% + \AtBeginShipout{\setbox\AtBeginShipoutBox=\vbox{% + \baselineskip\z@skip\lineskip\z@skip\lineskiplimit\z@ + #1\copy\AtBeginShipoutBox}}} +\else +\pxcz@onlypreamble@def\pxcz@set@page@hook#1{% + % this is \AtBeginDvi with forcing of yoko-dir added + \global\setbox\@begindvibox\vbox{\yoko\unvbox\@begindvibox#1}} +\fi + +%% \pxcz@check@alldefined{<sym>,...} +\pxcz@onlypreamble@def\pxcz@check@alldefined#1{% + \pxcz@oktrue + \@for\pxcz@x:={#1}\do{% + \expandafter\ifx\csname pxcz@FS/\pxcz@x\endcsname\@empty + \pxcz@okfalse \fi}} + +%% \pxcz@decl@relfont{<fam>}{<afam>}{<ser>,...} +\pxcz@onlypreamble@def\pxcz@decl@relfont#1#2#3{% + \@for\pxcz@x:={#3}\do{% + \expandafter\ifx\csname\k@encoding/#1/\pxcz@x/n\endcsname\relax\else + \edef\pxcz@tmpa{\noexpand\DeclareRelationFont + {\k@encoding}{#1}{\pxcz@x}{}{\pxcz@afont@enc}{#2}{\pxcz@x}{}% + }\pxcz@tmpa + \fi}% + \PackageInfo\pxcz@pkgname + {Relation font set for \k@encoding/#1}} + +%% \pxcz@check@afont@enc +\pxcz@onlypreamble@def\pxcz@check@afont@enc{% + \pxcz@oktrue % OT1 is always okay + \expandafter\ifx\csname\pxcz@afont@enc+cfjar\endcsname\relax + \pxcz@okfalse \fi + % if not okay, use OT1 instead + \ifpxcz@ok\else \def\pxcz@afont@enc{OT1}\fi} + +%% the begin-document hook +\pxcz@onlypreamble@def\pxcz@doc@hook{% + \pxcz@user@hook + \ifx\pxcz@file@preset\relax\else + \pxcz@do@file@preset + \fi + \ifx t\pxcz@strict@csi + \pxcz@inspect@flavor@all + \fi + \ifpxcz@alpha % 'alphabet' + \pxcz@check@alldefined{mnl,mnr,mnb}% + \ifpxcz@ok \renewcommand\rmdefault{cfjar}\fi + \pxcz@check@alldefined{gtr,gtb,gtx}% + \ifpxcz@ok \renewcommand\sfdefault{cfjas}\fi + % attach hook to \mgfamily if mgr font is defined + \pxcz@check@alldefined{mgr} + \ifpxcz@ok\ifpxcz@otf@deluxe + \begingroup + \def\pxcz@x##1{\toks@\expandafter{##1}% + \xdef##1{\noexpand\pxcz@mgfamily@hook\the\toks@}% + }\expandafter\pxcz@x\csname mgfamily \endcsname + \endgroup + \fi\fi + % decide alphabet font encoding + \edef\pxcz@afont@enc{\encodingdefault}% + \pxcz@check@afont@enc\ifpxcz@ok\else + \PackageWarningNoLine\pxcz@pkgname + {Default encoding is changed to 'OT1' because% + \MessageBreak'alphabet' option is in effect}% + \renewcommand\encodingdefault{OT1}% + \fi + \normalfont + \pxcz@addtospec{ALPHA}% + \fi + \ifpxcz@rel % 'relfont' + \edef\pxcz@afont@enc{\encodingdefault}% + \pxcz@check@afont@enc + \pxcz@check@alldefined{mnl,mnr,mnb}% + \ifpxcz@ok \pxcz@decl@relfont\mcdefault{cfjar}{m,bx,l}\fi + \pxcz@check@alldefined{gtr,gtb,gtx}% + \ifpxcz@ok \pxcz@decl@relfont\gtdefault{cfjas}{m,bx,eb}\fi + \pxcz@check@alldefined{mgr}% + \ifpxcz@ok\ifpxcz@otf@deluxe + \pxcz@decl@relfont\mgdefault{cfjam}{m}% + \fi\fi + \pxcz@addtospec{ALPHA}% + \fi + \ifpxcz@uptex\else + \pxcz@addtospec{STD}% + \fi + \ifnum0\ifnum\pxcz@legacycode=\pxcz@legacycode@replace 1\fi + \ifpxcz@uptex 1\fi >\z@ + \pxcz@addtospec{UPSTD}% + \fi + \ifpxcz@otf + \@ifpackageloaded{otf}{\pxcz@otftrue}{\pxcz@otffalse}% + \@ifpackageloaded{utf}{\pxcz@utftrue}{\pxcz@utffalse}% + \fi + \ifpxcz@otf + \ifnum0\ifnum\pxcz@legacycode=\pxcz@legacycode@replace 1\fi + \ifpxcz@uptex 1\fi >\z@ + \pxcz@addtospec{UPOTF}% + \fi + \pxcz@addtospec{OTF}% + \fi + \ifpxcz@glyphid \pxcz@addtospec{GID}% + \fi + \ifx t\pxcz@expert \pxcz@addtospec{EXPERT}% + \fi + \ifpxcz@utf \pxcz@addtospec{UTF}% + \fi + \@ifpackageloaded{pxotf}{\pxcz@oktrue}{\pxcz@okfalse}% + \@ifpackageloaded{pxfontenc}{\pxcz@oktrue}{}% + \ifpxcz@ok \pxcz@addtospec{PXOTF}% + \fi + % warn if some weights are not substituted, and if necessaty + \ifpxcz@warn@unless@all@defined + \ifpxcz@otf@deluxe + \pxcz@check@alldefined{mnl,mnr,mnb,gtr,gtb,gtx,mgr}% + \else \pxcz@check@alldefined{mnr,mnb,gtr,gtb}% + \fi + \ifpxcz@ok\else + \PackageWarningNoLine\pxcz@pkgname + {Some font weights are not substituted.\MessageBreak + So some features of pxchfon might not work\MessageBreak + properly when applied to such weights}% + \fi + \fi + % warn if some weights are not embedded, and if necessaty + \ifpxcz@warn@unless@all@embedded \ifpxcz@noembed@used + \PackageWarningNoLine\pxcz@pkgname + {Some font weights have no-embed setting.\MessageBreak + So some features of pxchfon might not work\MessageBreak + properly when applied to such weights}% + \fi\fi + % + \pxcz@check@extra + \pxcz@addtospec{USR}% + \ifpxcz@enabled + \pxcz@set@page@hook{\pxcz@spec}% + \else\ifx\pxcz@spec\@empty\else + \PackageWarningNoLine\pxcz@pkgname + {Font mapping is disabled, since the driver in use\MessageBreak + is not dvipdfmx}% + \fi\fi + \ifpxcz@dumpmap + \pxcz@do@dumpmap + \fi + \ifpxcz@dumpmap@tl + \pxcz@do@dumpmap@tl + \fi +} +\AtBeginDocument{\pxcz@doc@hook} + +%--------------------------------------- strict-CSI mode +\ifx t\pxcz@strict@csi +% In this section, the e-TeX extension plus \pdffiledump and +% \pdffilesize is assumed to be available. + +%% variables +\newcount\pxcz@cntr +\let\pxcz@insf@file\relax +\let\pxcz@insf@idx\relax +\let\pxcz@insf@nfont\relax +\let\pxcz@kpse@dir\relax + +%% constants +\def\pxcz@insf@@OTTO{"4F54544F } +\def\pxcz@insf@@IZ{"00010000 } +\def\pxcz@insf@@ttcf{"74746366 } + +%% \pxcz@insf@read@word{<offset>} +% Reads a 32-bit integer from \pxcz@insf@file at the given offset, +% and sets the value (or -1 on error) to \pxcz@cntr. +\pxcz@onlypreamble@def\pxcz@insf@read@word#1{% + \pxcz@cntr=#1\relax + \edef\pxcz@tmpa{\pdffiledump offset\pxcz@cntr length1{\pxcz@insf@file}}% + \ifnum"0\pxcz@tmpa<"80 + \advance\pxcz@cntr\@ne + \edef\pxcz@tmpb{\pdffiledump offset\pxcz@cntr length3{\pxcz@insf@file}}% + \ifnum"1\pxcz@tmpb<"1000000 \pxcz@cntr\m@ne % truncated + \else \pxcz@cntr"\pxcz@tmpa\pxcz@tmpb\relax % the value + \fi + \else \pxcz@cntr\m@ne % overflow + \fi} + +%% \pxcz@inspect@flavor{<path>}{<index>} +% Sets the result to \pxcz@cntr. +% 1=CFF, 0=TTF, <0 if error. +\pxcz@onlypreamble@def\pxcz@inspect@flavor#1#2{% + \edef\pxcz@insf@file{#1}% + \mathchardef\pxcz@insf@idx=#2\relax + \pxcz@insf@read@word{0}% outer tag + \ifnum\pxcz@cntr=\pxcz@insf@@ttcf % TTC/OTC + \pxcz@insf@read@word{8}% font count + \ifnum\pxcz@cntr>"7FFF \pxcz@cntr\m@ne \fi + \ifnum\pxcz@cntr>\m@ne + \mathchardef\pxcz@insf@nfont\pxcz@cntr + \@tempcnta\pxcz@insf@idx \multiply\@tempcnta4 + \advance\@tempcnta12 \pxcz@insf@read@word{\@tempcnta}% inner tag + \@tempcnta\pxcz@cntr + \fi + \else % not collection + \@tempcnta=0 \chardef\pxcz@insf@nfont=1 + \fi + \ifnum\pxcz@cntr>\m@ne % no format error so far + \ifnum\pxcz@insf@idx<\pxcz@insf@nfont + \pxcz@insf@read@word{\@tempcnta}% + \ifnum\pxcz@cntr=\m@ne % ERROR: bad format + \else\ifnum\pxcz@cntr=\pxcz@insf@@OTTO \pxcz@cntr\@ne % CFF-flavor + \else\ifnum\pxcz@cntr=\pxcz@insf@@IZ \pxcz@cntr\z@ % TTF-flavor + \else \pxcz@cntr-\thr@@ % ERROR: unknown tag + \fi\fi\fi + \else \pxcz@cntr-\tw@ % ERROR: bad index + \fi + %else ERROR: bad format + \fi} + +%% \pxcz@kpse@dir@cache +% to spped up \pxcz@kpsewhich +\pxcz@onlypreamble@let\pxcz@kpse@dir@cache\@empty + +%% \pxcz@kpsewhich{<filename>} +% Sets to \pxcz@kpse@dir the directory where the file is found +% (or \relax if not found). +\pxcz@onlypreamble@def\pxcz@kpsewhich#1{% + \edef\pxcz@tmpa{#1}\let\pxcz@kpse@dir\relax + \let\do\pxcz@kpsewhich@do \pxcz@kpse@dir@cache\relax + \ifx\pxcz@kpse@dir\relax + \chardef\pxcz@tmpz=\endlinechar \endlinechar\m@ne + \openin\@inputcheck="|kpsewhich \pxcz@tmpa"\relax + \unless\ifeof\@inputcheck + \readline\@inputcheck to\pxcz@tmpb + \unless\ifx\pxcz@tmpb\@empty + \let\pxcz@kpse@dir\@empty \let\do\relax + \expandafter\pxcz@kpsewhich@a\pxcz@tmpb/\pxcz@end + \edef\pxcz@kpse@dir@cache{% + \pxcz@kpse@dir@cache\do{\pxcz@kpse@dir}}% + \fi + \fi + \endlinechar\pxcz@tmpz + \fi} +\pxcz@onlypreamble@def\pxcz@kpsewhich@a#1/#2\pxcz@end{% + \ifx\pxcz@end#2\pxcz@end \expandafter\@gobble + \else \expandafter\@firstofone + \fi{% + \edef\pxcz@kpse@dir{\pxcz@kpse@dir#1/}% + \pxcz@kpsewhich@a#2\pxcz@end}} +\pxcz@onlypreamble@def\pxcz@kpsewhich@do#1{% + \ifnum0\pdffilesize{#1\pxcz@tmpa}>\z@ + \def\pxcz@kpse@dir{#1}% + \expandafter\pxcz@kpsewhich@do@a + \fi} +\def\pxcz@kpsewhich@do@a#1\relax{} + +%% \pxcz@inspect@flavor@all +% Sets \[pxcz@OT/<sym>]. +\pxcz@onlypreamble@def\pxcz@inspect@flavor@all{% + \@for\pxcz@tmpa:=\pxcz@sym@list\do{% + \edef\pxcz@tmpa{{\pxcz@tmpa}{\@nameuse{pxcz@FS/\pxcz@tmpa}}}% + \expandafter\pxcz@inspect@flavor@all@a\pxcz@tmpa}} +\pxcz@onlypreamble@def\pxcz@inspect@flavor@all@a#1#2{% + \def\pxcz@tmpa{#2}% + \ifx\pxcz@tmpa\@empty + \else\ifx\pxcz@tmpa\pxcz@noembed + \@namedef{pxcz@OT/#1}{t}% + \else \pxcz@inspect@flavor@all@b#2\pxcz@end{#1}% + \fi\fi} +\pxcz@onlypreamble@def\pxcz@inspect@flavor@all@b#1#2\pxcz@end{% + \edef\pxcz@tmpa{\ifx:#1\else:0:\fi#1#2}% + \expandafter\pxcz@inspect@flavor@all@c\pxcz@tmpa\pxcz@end} +\pxcz@onlypreamble@def\pxcz@inspect@flavor@all@c:#1:#2\pxcz@end#3{% + \pxcz@kpsewhich{#2}% + \unless\ifx\pxcz@kpse@dir\relax + \pxcz@inspect@flavor{\pxcz@kpse@dir#2}{#1}% +%\typeout{#3)\pxcz@kpse@dir#2;#1==>\the\pxcz@cntr}% + \ifnum\pxcz@cntr>\z@ + \@namedef{pxcz@OT/#3}{t}% + \fi + \fi} + +\fi +%--------------------------------------- dump font map +% if some dumpmap is enabled... +\ifnum 0\ifpxcz@dumpmap 1\fi + \ifpxcz@dumpmap@tl 1\fi >\z@ + +%% variables +\let\pxcz@dump@text\relax +\let\pxcz@spec@save\relax +\newwrite\pxcz@fout + +%% \pxcz@add@to@dump@text +\def\pxcz@add@to@dump@text#1{% + \edef\pxcz@dump@text{\pxcz@dump@text#1}} + +%% \pxcz@dump@special{<string>} +\pxcz@onlypreamble@def\pxcz@dump@special#1{% + \pxcz@dump@special@a#1\bxcz@end} +\pxcz@onlypreamble@def\pxcz@dump@special@a#1 #2\bxcz@end{% + \@nameuse{pxcz@dump@special@#1}\@gobble{#2}} +\@namedef{pxcz@dump@special@pdf:mapline}#1#2{% + \pxcz@add@to@dump@text{\pxcz@rmin#2^^J}} + +%% \pxcz@rmin +\def\pxcz@rmin#1{% + \ifx-#1\@percentchar\else#1\fi} + +%% \pxcz@dump@spec@to{<file-name>} +\pxcz@onlypreamble@def\pxcz@dump@spec@to#1{% + \def\pxcz@dump@text{\@percentchar\space#1^^J}% + \let\special\pxcz@dump@special + \pxcz@spec \let\special\relax + \pxcz@add@to@dump@text{\@percentchar\space EOF}% + \immediate\openout\pxcz@fout=#1\relax + \immediate\write\pxcz@fout{\pxcz@dump@text}% + \immediate\closeout\pxcz@fout} + +%% \pxcz@do@dumpmap +\pxcz@onlypreamble@def\pxcz@do@dumpmap{% + \begingroup + \pxcz@dump@spec@to{\jobname.map}% + \endgroup} + +%% \pxcz@do@dumpmap@tl +\pxcz@onlypreamble@def\pxcz@do@dumpmap@tl{% + \begingroup + \let\pxcz@spec@save\pxcz@spec + \pxcz@do@dumpmap@tl@a{STD}{ptex-\jobname}% + \pxcz@do@dumpmap@tl@a{UPSTD}{uptex-\jobname}% + \pxcz@do@dumpmap@tl@a{OTF}{otf-\jobname}% + \pxcz@do@dumpmap@tl@a{UPOTF}{otf-up-\jobname}% + \global\let\pxcz@spec\pxcz@spec@save + \endgroup} +\pxcz@onlypreamble@def\pxcz@do@dumpmap@tl@a#1#2{% + \global\let\pxcz@spec\@empty + \pxcz@addtospec{#1}% + \pxcz@dump@spec@to{#2.map}} + +\fi +%--------------------------------------- preset japanese font mappings + +%% \pxcz@declare@preset{<name>}{<text>} +\pxcz@onlypreamble@def\pxcz@declare@preset#1{% + \pxcz@onlypreamble@csdef{pxcz@the@preset@#1}} + +%% \pxcz@declare@preset@alias{<name1>}{<name2>} +\pxcz@onlypreamble@def\pxcz@declare@preset@alias#1#2{% + \expandafter\pxcz@onlypreamble@let\csname pxcz@the@preset@#1% + \expandafter\endcsname\csname pxcz@the@preset@#2\endcsname} + +%% \pxcz@abolished@preset +\pxcz@onlypreamble@def\pxcz@abolished@preset{% + \PackageError\pxcz@pkgname + {The old preset '\pxcz@main@preset' is *abolished*}{\@ehc}% + \pxcz@uniweight{ERROR.ttf}{ERROR.ttf}} +\@for\pxcz@x:=\pxcz@all@abolished@preset\do{% + \pxcz@onlypreamble@csdef{pxcz@the@preset@\pxcz@x}{\pxcz@abolished@preset}} + +%% \pxcz@uniweight{<font-mn>}{<font-gt>} +\pxcz@onlypreamble@def\pxcz@uniweight#1#2{% + \setminchofont{#1}\setgothicfont{#2}\setmarugothicfont{#2}} + +%% \pxcz@multiweight{<font-mnl>}{<font-mnr>}{<font-mnb>} +%% {<font-gtr>}{<font-gtb>}{<font-gtx>}{<font-gtu>}{<font-mgr>} +\pxcz@onlypreamble@def\pxcz@multiweight#1#2#3#4#5#6#7#8{% + \setminchofont{#2}\setgothicfont{#7}\setmarugothicfont{#8}% + \ifpxcz@oneweight\else + \setlightminchofont{#1}\setboldminchofont{#3}% + \setmediumgothicfont{#4}\setboldgothicfont{#5}\setxboldgothicfont{#6}% + \fi} + +%% \pxcz@use@preset{<name>} +\pxcz@onlypreamble@def\pxcz@use@preset#1{% + \csname pxcz@the@preset@#1\endcsname} + +%% definitions of main preset mappings +\pxcz@declare@preset{noembed}{% + \pxcz@uniweight{*}{*}} +%(uniweight) +\pxcz@declare@preset{ms}{% + \pxcz@uniweight{:0:msmincho.ttc}{:0:msgothic.ttc}} +\pxcz@declare@preset{ipa}{% + \pxcz@uniweight{ipam.ttf}{ipag.ttf}} +\pxcz@declare@preset{ipaex}{% + \pxcz@uniweight{ipaexm.ttf}{ipaexg.ttf}} +%(multiweight) +\pxcz@declare@preset{ms-hg}{% + \pxcz@multiweight{:0:msmincho.ttc}{:0:msmincho.ttc}{:0:hgrme.ttc}% + {:0:hgrgm.ttc}{:0:hgrge.ttc}{:0:hgrsgu.ttc}{:0:msgothic.ttc}{hgrsmp.ttf}} +\pxcz@declare@preset{ipa-hg}{% + \pxcz@multiweight{ipam.ttf}{ipam.ttf}{:0:hgrme.ttc}% + {:0:hgrgm.ttc}{:0:hgrge.ttc}{:0:hgrsgu.ttc}{ipag.ttf}{hgrsmp.ttf}} +\pxcz@declare@preset{ipaex-hg}{% + \pxcz@multiweight{ipaexm.ttf}{ipaexm.ttf}{:0:hgrme.ttc}% + {:0:hgrgm.ttc}{:0:hgrge.ttc}{:0:hgrsgu.ttc}{ipaexg.ttf}{hgrsmp.ttf}} +\pxcz@declare@preset{moga-mobo}{% + \pxcz@multiweight{:0:mogam.ttc}{:0:mogam.ttc}{:0:mogamb.ttc}% + {:0:mogag.ttc}{:0:mogagb.ttc}{:0:mogagb.ttc}{:0:mogag.ttc}{:0:mobog.ttc}} +\pxcz@declare@preset{moga-mobo-ex}{% + \pxcz@multiweight{:1:mogam.ttc}{:1:mogam.ttc}{:1:mogamb.ttc}% + {:1:mogag.ttc}{:1:mogagb.ttc}{:1:mogagb.ttc}{:1:mogag.ttc}{:1:mobog.ttc}} +\pxcz@declare@preset{moga-maruberi}{% + \pxcz@multiweight{:0:mogam.ttc}{:0:mogam.ttc}{:0:mogamb.ttc}% + {:0:mogag.ttc}{:0:mogagb.ttc}{:0:mogagb.ttc}{:0:mogag.ttc}{MTLmr3m.ttf}} +\pxcz@declare@preset{ume}{% + \pxcz@multiweight{ume-tmo3.ttf}{ume-tmo3.ttf}{ume-tmo3.ttf}% + {ume-tgo4.ttf}{ume-tgo5.ttf}{ume-tgo5.ttf}{ume-tgo5.ttf}{ume-tgo4.ttf}} +\pxcz@declare@preset{kozuka-pro}{% + \usecmapforalphabet + \pxcz@multiweight{KozMinPro-Light.otf}{KozMinPro-Regular.otf}% + {KozMinPro-Bold.otf}{KozGoPro-Regular.otf}{KozGoPro-Bold.otf}% + {KozGoPro-Heavy.otf}{KozGoPro-Medium.otf}{KozGoPro-Heavy.otf}} +\pxcz@declare@preset{kozuka-pr6}{% + \usecmapforalphabet + \pxcz@multiweight{KozMinProVI-Light.otf}{KozMinProVI-Regular.otf}% + {KozMinProVI-Bold.otf}{KozGoProVI-Regular.otf}{KozGoProVI-Bold.otf}% + {KozGoProVI-Heavy.otf}{KozGoProVI-Medium.otf}{KozGoProVI-Heavy.otf}} +\pxcz@declare@preset{kozuka-pr6n}{% + \usecmapforalphabet + \pxcz@multiweight{KozMinPr6N-Light.otf}{KozMinPr6N-Regular.otf}% + {KozMinPr6N-Bold.otf}{KozGoPr6N-Regular.otf}{KozGoPr6N-Bold.otf}% + {KozGoPr6N-Heavy.otf}{KozGoPr6N-Medium.otf}{KozGoPr6N-Heavy.otf}} +\pxcz@declare@preset{hiragino-pro}{% + \usecmapforalphabet + \pxcz@multiweight{HiraMinPro-W2.otf}{HiraMinPro-W3.otf}% + {HiraMinPro-W6.otf}{HiraKakuPro-W3.otf}{HiraKakuPro-W6.otf}% + {HiraKakuStd-W8.otf}{HiraKakuPro-W6.otf}{HiraMaruPro-W4.otf}} +\pxcz@declare@preset{hiragino-pron}{% + \usecmapforalphabet + \pxcz@multiweight{HiraMinProN-W2.otf}{HiraMinProN-W3.otf}% + {HiraMinProN-W6.otf}{HiraKakuProN-W3.otf}{HiraKakuProN-W6.otf}% + {HiraKakuStdN-W8.otf}{HiraKakuProN-W6.otf}{HiraMaruProN-W4.otf}} +\pxcz@declare@preset{hiragino-elcapitan-pro}{% + \usecmapforalphabet + \pxcz@multiweight{HiraMinPro-W2.otf}{:1:HiraginoSerif-W3.ttc}% + {:1:HiraginoSerif-W6.ttc}{:3:HiraginoSans-W3.ttc}{:3:HiraginoSans-W6.ttc}% + {:2:HiraginoSans-W8.ttc}{:3:HiraginoSans-W6.ttc}{:0:HiraginoSansR-W4.ttc}} +\pxcz@declare@preset{hiragino-elcapitan-pron}{% + \usecmapforalphabet + \pxcz@multiweight{HiraMinProN-W2.otf}{:0:HiraginoSerif-W3.ttc}% + {:0:HiraginoSerif-W6.ttc}{:2:HiraginoSans-W3.ttc}{:2:HiraginoSans-W6.ttc}% + {:3:HiraginoSans-W8.ttc}{:2:HiraginoSans-W6.ttc}{:1:HiraginoSansR-W4.ttc}} +\pxcz@declare@preset{morisawa-pro}{% + \usecmapforalphabet + \pxcz@multiweight{A-OTF-RyuminPro-Light.otf}{A-OTF-RyuminPro-Light.otf}% + {A-OTF-FutoMinA101Pro-Bold.otf}{A-OTF-GothicBBBPro-Medium.otf}% + {A-OTF-FutoGoB101Pro-Bold}{A-OTF-MidashiGoPro-MB31.otf}% + {A-OTF-GothicBBBPro-Medium.otf}{A-OTF-Jun101Pro-Light.otf}} +\pxcz@declare@preset{morisawa-pr6n}{% + \usecmapforalphabet + \pxcz@multiweight{A-OTF-RyuminPr6N-Light.otf}{A-OTF-RyuminPr6N-Light.otf}% + {A-OTF-FutoMinA101Pr6N-Bold.otf}{A-OTF-GothicBBBPr6N-Medium.otf}% + {A-OTF-FutoGoB101Pr6N-Bold}{A-OTF-MidashiGoPr6N-MB31.otf}% + {A-OTF-GothicBBBPr6N-Medium.otf}{A-OTF-Jun101Pro-Light.otf}} +\pxcz@declare@preset{yu-win}{% + \pxcz@multiweight{yuminl.ttf}{yumin.ttf}% + {yumindb.ttf}{yugothic.ttf}{yugothib.ttf}% + {yugothib.ttf}{yugothic.ttf}{yugothic.ttf}} +\pxcz@declare@preset{yu-win10}{% + \pxcz@multiweight{yuminl.ttf}{yumin.ttf}% + {yumindb.ttf}{:0:YuGothR.ttc}{:0:YuGothB.ttc}% + {:0:YuGothB.ttc}{:0:YuGothM.ttc}{:0:YuGothM.ttc}} +\pxcz@declare@preset{yu-osx}{% + \usecmapforalphabet + \pxcz@multiweight{YuMin-Medium.otf}{YuMin-Medium.otf}% + {YuMin-Demibold.otf}{YuGo-Medium.otf}{YuGo-Bold.otf}% + {YuGo-Bold.otf}{YuGo-Medium.otf}{YuGo-Medium.otf}} +% Source Han Sans/Serif, "OTC" +\pxcz@declare@preset{sourcehan-otc}{% + \pxcz@multiweight{:0:SourceHanSerif-Light.ttc}% + {:0:SourceHanSerif-Regular.ttc}{:0:SourceHanSerif-Bold.ttc}% + {:0:SourceHanSans-Regular.ttc}{:0:SourceHanSans-Bold.ttc}% + {:0:SourceHanSans-Heavy.ttc}{:0:SourceHanSans-Medium.ttc}% + {:0:SourceHanSans-Medium.ttc}} +% Source Han Sans/Serif, "Language-specific OTF" +\pxcz@declare@preset{sourcehan}{% + \pxcz@multiweight{SourceHanSerif-Light.otf}% + {SourceHanSerif-Regular.otf}{SourceHanSerif-Bold.otf}% + {SourceHanSans-Regular.otf}{SourceHanSans-Bold.otf}% + {SourceHanSans-Heavy.otf}{SourceHanSans-Medium.otf}% + {SourceHanSans-Medium.otf}} +% Source Han Sans/Serif, "Region-specific Subset OTF" +\pxcz@declare@preset{sourcehan-jp}{% + \pxcz@multiweight{SourceHanSerifJP-Light.otf}% + {SourceHanSerifJP-Regular.otf}{SourceHanSerifJP-Bold.otf}% + {SourceHanSansJP-Regular.otf}{SourceHanSansJP-Bold.otf}% + {SourceHanSansJP-Heavy.otf}{SourceHanSansJP-Medium.otf}% + {SourceHanSansJP-Medium.otf}} +% Noto Sans/Serif CJK, "OpenType/CFF Collection (OTC)" +\pxcz@declare@preset{noto-otc}{% + \pxcz@multiweight{:0:NotoSerifCJK-Light.ttc}% + {:0:NotoSerifCJK-Regular.ttc}{:0:NotoSerifCJK-Bold.ttc}% + {:0:NotoSansCJK-Regular.ttc}{:0:NotoSansCJK-Bold.ttc}% + {:0:NotoSansCJK-Black.ttc}{:0:NotoSansCJK-Medium.ttc}% + {:0:NotoSansCJK-Medium.ttc}} +% Noto Sans/Serif CJK, "Language-specific OpenType/CFF (OTF)" +\pxcz@declare@preset{noto}{% + \pxcz@multiweight{NotoSerifCJKjp-Light.otf}% + {NotoSerifCJKjp-Regular.otf}{NotoSerifCJKjp-Bold.otf}% + {NotoSansCJKjp-Regular.otf}{NotoSansCJKjp-Bold.otf}% + {NotoSansCJKjp-Black.otf}{NotoSansCJKjp-Medium.otf}% + {NotoSansCJKjp-Medium.otf}} +% Noto Sans/Serif CJK, "Region-specific Subset OpenType/CFF (Subset OTF)" +\pxcz@declare@preset{noto-jp}{% + \pxcz@multiweight{NotoSerifJP-Light.otf}% + {NotoSerifJP-Regular.otf}{NotoSerifJP-Bold.otf}% + {NotoSansJP-Regular.otf}{NotoSansJP-Bold.otf}% + {NotoSansJP-Black.otf}{NotoSansJP-Medium.otf}% + {NotoSansJP-Medium.otf}} +%(alias) +\pxcz@declare@preset@alias{hiragino}{hiragino-pro} +\pxcz@declare@preset@alias{noEmbed}{noembed} +\pxcz@declare@preset@alias{kozuka}{kozuka-pro} +\pxcz@declare@preset@alias{hiragino-elcapitan}{hiragino-elcapitan-pro} +\pxcz@declare@preset@alias{morisawa}{morisawa-pro} +\pxcz@declare@preset@alias{noto-otf}{noto} +%(plus-variants) +\pxcz@declare@preset@alias{sourcehan+}{sourcehan} +\pxcz@declare@preset@alias{sourcehan-otc+}{sourcehan-otc} +\pxcz@declare@preset@alias{noto+}{noto} +\pxcz@declare@preset@alias{noto-otc+}{noto-otc} +\pxcz@declare@preset@alias{yu-win10+}{yu-win10} + +%% ... and invokes the specified one! +\if\pxcz@main@preset\relax\else +\pxcz@use@preset{\pxcz@main@preset} +\fi + +%% load pxufont +\ifx t\pxcz@expert + \RequirePackage{pxufont-ruby}[] +\else\ifnum\pxcz@legacycode=\pxcz@legacycode@replace + \RequirePackage{pxufont}[] +\fi\fi + +%--------------------------------------- all done +\endinput +%% EOF diff --git a/language/japanese/pxchfon/pxchfon.tex b/language/japanese/pxchfon/pxchfon.tex new file mode 100644 index 0000000000..1493bc92fc --- /dev/null +++ b/language/japanese/pxchfon/pxchfon.tex @@ -0,0 +1,1352 @@ +% 文字コードは UTF-8 +% uplatex で組版する +\documentclass[uplatex,dvipdfmx,a4paper]{jsarticle} +\usepackage[T1]{fontenc} +\usepackage{lmodern,textcomp} +\usepackage{color} +\definecolor{myblue}{rgb}{0,0,0.75} +\definecolor{mygreen}{rgb}{0,0.45,0} +\usepackage[colorlinks,hyperfootnotes=false]{hyperref} +\usepackage{pxjahyper} +\hypersetup{linkcolor=myblue,urlcolor=mygreen} +\usepackage{metalogo} +\usepackage{shortvrb} +\MakeShortVerb{\|} +\newcommand{\PkgVersion}{1.5a} +\newcommand{\PkgDate}{2019/07/10} +\newcommand{\Pkg}[1]{\textsf{#1}} +\newcommand{\Meta}[1]{$\langle$\mbox{}#1\mbox{}$\rangle$} +\newcommand{\Note}{\par\noindent ※} +\newcommand{\Means}{:\ } +\providecommand{\Strong}[1]{\textsf{#1}} +\providecommand{\pTeX}{p\TeX} +\providecommand{\pLaTeX}{p\LaTeX} +\providecommand{\upTeX}{u\pTeX} +\providecommand{\upLaTeX}{u\pLaTeX} +%----------------------------------------------------------- +\begin{document} +\title{\Pkg{pxchfon} パッケージ} +\author{八登崇之\ (Takayuki YATO; aka.~``ZR'')} +\date{v\PkgVersion\quad[\PkgDate]} +\maketitle +\tableofcontents + +%=========================================================== +\section{概要} + +{\pLaTeX}/{\upLaTeX}+dvipdfmxのワークフローでPDF文書を作る場合に、 +標準の和文フォント(明朝・ゴシック)に対して実際に使われる +OpenTypeフォントをユーザが指定する機能を提供する。 +使用するフォントを{\LaTeX}文書中で指定するので、 +一度パッケージをインストールするだけで、 +任意の日本語フォント(ただし等幅に限る)を使うことができる。 +欧文部分を同じ日本語フォントで置き換えることも可能である。 +\Pkg{japanese-otf}\footnote{\Pkg{japanese-otf}パッケージ\Means + https://www.ctan.org/pkg/japanese-otf}% +パッケージにも対応している。 + +また、{(u)\pLaTeX}において広く行われているフォント設定 +(IPAexフォントの使用等)をパッケージオプション一つで適用する機能 +(プリセット指定)も備えている。 + +%=========================================================== +\section{前提環境} + +\begin{itemize} +\item {\TeX}フォーマット\Means {\LaTeX} +\item {\TeX}エンジン\Means {\pTeX}/{\upTeX} +\item DVIウェア\Means dvipdfmx +\item 前提パッケージ\Means + \begin{itemize} + \item \Pkg{atbegshi}パッケージ(|everypage| オプション使用時) + \item \Pkg{pxufont}パッケージ(|unicode| オプション使用時) + \end{itemize} +\end{itemize} + +%=========================================================== +\section{読込} +\label{sec:Loading} + +プレアンブルにおいて、|\usepackage| を用いて読み込む。 +\begin{quote}\small\begin{verbatim} +\usepackage[<オプション>,...]{pxchfon} +\end{verbatim}\end{quote} + +オプションは次のものが用意されている。 + +\begin{itemize} +\item \Strong{ドライバオプション}\Means + |dvipdfmx|、|dvips|、|dviout|、|xdvi| および |nodvidriver|% + \footnote{ドライバ依存動作を明示的に無効化するための指定。} + が指定できる。 + ただし、本パッケージの主要機能である + 「フォントマップの文書内での指定」 + がサポートされるのはdvipdfmxのみである。 + 他のDVIウェアにおける動作については + \ref{sec:Other-Drivers}節を参照。 + ドライバオプションの既定値は |dvipdfmx| である。 +\item \Strong{プリセット指定オプション}(|ipaex|、|hiragino-pron| 等) + 名前に対応するプリセット指定を有効にする。 + \Note 詳細については\ref{sec:Preset}節を参照。 +\item \Strong{ファイルプリセット指定オプション}% + (|+|\mbox{}\textgt{名前} または |*|\mbox{}\textgt{名前}) + 名前に対応するファイルプリセット指定を有効にする。 + \Note 詳細については\ref{sec:FilePreset}節を参照。 +\item |alphabet|\Means + 欧文フォントも指定されたフォントの英数字部分で置き換える。 + (明朝が |\rmfamily|、ゴシックが |\sffamily| に適用される。) + \Note 技術的制約のため + \footnote{プロポーショナル幅のフォントを使うためには、 + そのフォントに合わせた{\TeX}側の論理フォント(TFM)を + 事前に用意する必要があるため。 + 和文が全角幅しか使えないのも同じ理由である。}、 + \Strong{半角等幅のフォント}しかサポートされないことに注意してほしい。 + つまり、この設定を使うと欧文が全て等幅になってしまう。 + 「部分的に欧文フォントを和文フォントに合わせたい」という場合は、 + 後述の |relfont| オプションの使用も検討されたい。 + \Note プリセット指定オプション\Strong{不使用}の場合は + こちらが既定で有効になる。 + すなわち\Strong{欧文フォントも置き換えられる}。 +\item |noalphabet|\Means + |alphabet| の否定。 + 欧文フォントは変更しない。 +% インストール時に欧文用の設定をしていない場合は必ずこれを +% 指定する必要がある。 + \Note プリセット指定オプション使用の場合はこちらが既定で有効になる。 +\item |otf|(既定)\Means + \Pkg{japanese-otf}パッケージの使用時に、 + そのフォントも置き換えの対象とする。 +\item |nootf|\Means + |otf| の否定。 + \Pkg{japanese-otf}パッケージのフォントは置き換えない。 + \Note この場合、\Pkg{japanese-otf}パッケージで |noreplace| を + 指定しない限り、標準の和文フォントは変化しない。 +\item |prefer2004jis|\Means + {\pTeX}/{\upTeX}の標準和文フォントのCMapを「2004JIS字形」指定の + ものに変更する。 + \footnote{\Pkg{japanese-otf}パッケージの和文フォントについては、 + \Pkg{japanese-otf}パッケージの |jis2004| オプションで2004JIS字形 + 指定を行う仕様になっている。 + そのため、本パッケージの |prefer2004jis| の対象にはならない。 + ところが0.7h版以前の本パッケージでは、 + {\upTeX}上の\Pkg{japanese-otf}の和文フォントにも |prefer2004jis| を + 適用していた。 + これは、昔の\Pkg{japanese-otf}が{\upTeX}上では |jis2004| オプションに + 未対応であったためであり、非公式の暫定仕様であった。 + 現在では、この暫定仕様は廃止されている。} +\item |noprefer2004jis|(既定)\Means + |prefer2004jis| の否定。 +\item |(no)jis2004|\Means + |(no)prefer2004jis| の別名。 + \Note グローバルオプションに |jis2004| を指定して\Pkg{japanese-otf}と + \Pkg{pxchfon}の両方に適用することを意図している。 +\item |oneweight|\Means + \Pkg{japanese-otf}パッケージを単ウェイトで使用する場合に、 + プリセット設定で使われるフォントの集合を{\pTeX}標準と同一にする。 + \footnote{小塚フォントのプリセットでは、{\pTeX}標準のゴシック + (jisg等)にはMウェイト(Acrobatに付属のフォントの一つ)を + 割り当てる一方で、\Pkg{japanese-otf}パッケージの3ウェイトのゴシックには + R、B、Hウェイトを割り当てている。 + 従って、\Pkg{japanese-otf}を単ウェイトで用いる時にMウェイトを使いたい + 場合には \texttt{oneweight} オプションを指定すればよい。 + 現状では、小塚フォント以外のプリセットではこのオプションを + 用いる必要はない。} +\item |nooneweight|(既定)\Means + |oneweight| の否定。 +\end{itemize} + +\paragraph{上級者向けオプション} +\begin{itemize} +\item |relfont|\Means + 指定された和文フォントの英数字部分を({\pLaTeX}の標準機能である) + \Strong{従属欧文フォント}として設定する。 + すなわち、既定では欧文フォントは置き換えないが、|\selectfont| で + 和文フォントを選択する際に予め |\userelfont| を実行しておくと + 欧文も和文と同じ書体になる。 + \footnote{特に + 「\texttt{\symbol{`\\}userelfont\symbol{`\\}selectfont}」 + だけ実行すると、欧文が現在の和文と同じ書体になる。} + (ただし適用すべき和文ファミリについて置換が設定されていない + 場合は無効になる。) + \Note |alphabet|、|noalphabet|、|relfont| の3つのオプションは + 排他である。 +\item |everypage|\Means + DVIの全ページにマップ設定を書き込む。 + \Note 詳細については\ref{sec:PageSelection}節を参照。 +\item |noeverypage|(既定)\Means + |everypage|の否定。 + DVIの先頭ページにのみマップ設定を書き込む。 +\item \Strong{Unicode直接指定オプション}\Means + 一部または全部のフォントについて、エンコーディング指定方式を + “Cmap指定”から“Unicode直接指定”に変更する。 + |nounicode|(既定)、|directunicode|、|directunicode*|、 + |unicode*|、|unicode| の5種類の指定がある。 + \Note 詳細については\ref{sec:DirectUnicode}節を参照。 + \Note 一部のプリセット指定(|sourcehan|等)は + Unicode直接指定の既定値を変更する。 +%\item |directunicode|\Means +% \Pkg{japanese-otf}パッケージのUnicode出力用フォント(|\UTF{}| の出力) +% について、Unicodeを用いてフォントのグリフにアクセスするように +% 設定する。 +% この設定を用いると、当該のフォントのもつ任意のUnicode文字 +% (ただし全角幅に限る)が利用可能になる。 +% \footnote{通常は、Unicodeを一旦Adobe-Japan1のCIDに変換して、 +% CIDでフォントのグリフにアクセスするという処理になる。 +% このため、Adobe-Japan1のグリフと対応しないUnicode文字は +% 普通は使えない。なお、\texttt{directunicode} は0.6c版では +% 横書きのみの対応であったが、0.7版で縦書きにも対応した。 +% ただし、dvipdfmxの仕様の都合で、縦書き用グリフにはならない。 +% また、現状では実質的に効果がBMP内の文字に限られる。} +%\item |directunicode*|\Means +% |directunicode| の設定を適用し、さらに、{\upTeX}標準の +% 和文フォントにもUnicodeを用いたグリフアクセスを設定する。 +% \Note これは、「非標準的なCMapをもつOpenTypeフォント +% \footnote{例えば、Adobeの「Source Han Sans」など。}% +% を\Pkg{pxchfon}で使いたい」 +% という要求のための部分的な解決法である。 +% このオプションを利用する場合、状況によって一部の出力が異常になる +% 可能性があることに予め注意すべきである。 +% 例えば、|prefer2004jis| は機能しなくなるし、また縦組の約物の +% 出力は異常になる。 +%\item |nodirectunicode|(既定)\Means +% |directunicode| の否定。 +\item |usecmapforalphabet|\Means + |alphabet|(または |relfont|)を指定して日本語フォントの英数字部分を + 欧文フォントとして使う際に、そのエンコーディング指定方式を + “CMap指定”にする。 +% \Note “CMap指定”と“Unicode直接指定”の違いについては +% \ref{sec:DirectUnicode}節を参照。 + \Note 半角英数字用の\texttt{UniJIS-UCS2-HW-H}というCMapが指定される。 + \Note 字形セットがAJ1であるOpenTypeフォントの場合、“Unicode直接指定” + を使うと英数字がプロポーショナル幅のものになるがこれは + サポートされない(|alphabet| オプションの説明を参照)ので、 + このオプションを指定して半角幅のものを使う必要がある。 +\item |nousecmapforalphabet|(既定)\Means + |usecmapforalphabet| の否定。 + \Note 和文と異なり、欧文フォントでは実質的に“Unicode直接指定”の方が + 既定となっている。 + \Note 一部のプリセット指定は |usecmapforalphabet| の指定を強制する。 +\item |dumpmap|\Means + 「通常マップファイルダンプ出力」を有効にする。 + すなわち、本パッケージにより文書に設定されるマップ行を、 + \Meta{ジョブ名}|.map| の名のファイルに書き出す。 +\item |nodumpmap|(既定)\Means + |dumpmap| の否定。 +\item |dumpmaptl|\Means + 「{\TeX} Liveマップファイルダンプ出力」を有効にする。 + すなわち、本パッケージによる設定を再現する + kanji-config-updmap用のマップファイルのセット + (|ptex-NAME.map|、|otf-NAME.map|、|uptex-NAME.map|、 + |otf-up-NAME.map| の4つ、ただし |NAME| はジョブ名) + を出力する。 + \Note 例えば、\Pkg{japanese-otf}パッケージが使われない場合は + \Pkg{japanese-otf}パッケージ用のマップ行は適用されない。 + そのため、通常ダンプ出力はそのようなマップ行は書き出されない。 + これに対して、 + {\TeX} Live用ダンプ出力は「実際に適用されるか」は無関係で + kanji-config-updmapの規則に従うため、 + \Pkg{japanese-otf}パッケージ用のマップが |otf-*.map| に書き出される。 +\item |nodumpmaptl|(既定)\Means + |dumpmaptl| の否定。 +\item |strictcsi|\Means + |Identity-H/V| のCMapが指定されたマップ行について、CSI指定は + (仕様に厳密に従って)フォントがTrueTypeグリフの場合にのみ出力する。 + \Note 「CSI指定」とはフォントファイル名の直後に書く“|/AJ1|”の類の + ことで、本来は(グリフ集合情報を持たない)TrueTypeグリフのフォント + のためのものである。 + しかし、CFFグリフのフォントに対してCSI指定があっても特に問題は + 起こらず、また、フォントのグリフ種別の判断する処理は少し時間が + かかるため、既定では厳密な判定は行わない。 +\item |nostrictcsi|(既定)\Means + |strictcsi| の否定。 + |Identity-H/V| に対するCSI指定は常に出力される。 + \Note さすがにファイルに出力されたマップ行に不備があるのは + 避けたいので、|dumpmap(tl)| が指定された場合は、 + 既定が |strictcsi| に変更される。 +\item |expert|(既定)\Means + Unicode直接指定の適用時 + \footnote{置換されていないウェイトはUnicode直接指定にならない。 + (\ref{ssec:DirectUnicodeNotice}節の注意を参照。)}% + に\Pkg{japanese-otf}の |expert| オプション + の機能を(可能な範囲で)エミュレートする。 + \Note \Pkg{japanese-otf}の |expert| が指定されない場合は無意味。 +\item |noexpert|\Means + |expert| の否定。 + Unicode直接指定時には\Pkg{japanese-otf}の |expert| は無効になる。 +\item |glyphid|\Means + GID指定入力(|\gid| 命令)の機能を有効にする。 + \Note エンジンが{\upTeX}でかつUnicode直接指定 + \footnote{置換されていないウェイトはUnicode直接指定にならない。 + (\ref{ssec:DirectUnicodeNotice}節の注意を参照。)}% + が有効の場合にのみ利用できる。 +\item |noglyphid|(既定)\Means + |glyphid| の否定。 +\end{itemize} + +%=========================================================== +\section{機能} + +以下に該当する和文(CJK)用の論理フォント(原メトリックTFM)について、 +それに対応する物理フォント(OpenTypeフォント)を +ユーザ指定のものに置き換える。 +\begin{itemize} +\item {\pTeX}の標準のフォント --- |rml*|/|gbm*| +\item {\upTeX}の日本語フォント --- |urml*|/|ugbm*|/|uprml*|/|upgbm*| +\item {\upTeX}の中国語・韓国語フォント +\item \Pkg{UTF}パッケージのフォント --- |hmr*|/|hkb*|/|unij*|/|cid*| +\item \Pkg{japanese-otf}パッケージの日本語フォント + --- |{,up}hmin*|/|{,up}hgoth*|/|otf-{u,c}j*| +\item \Pkg{japanese-otf}パッケージの中国語・韓国語フォント +\item \Pkg{pxufont}パッケージのフォント + --- |zur-?j*| +%\item \Pkg{PXfontspec}パッケージの日本語フォント --- |nja{r,s}-*| +\end{itemize} + +\Note 中国語・韓国語フォントに対するサポートの詳細については +\ref{sec:Non-Japanese}を参照。 + +和文フォント置換は、dvipdfmxのマップ設定を文書内で +(一時的に)変更するという方法で実現している。 +欧文フォントについては実現方法が少し異なる +(\ref{sec:Mechanism-Alph}節を参照)。 + +\paragraph{単ウェイトの場合の設定} + +\Pkg{japanese-otf}パッケージを |deluxe| オプション付きで用いている +場合\textgt{以外}、すなわち明朝・ゴシックとも単ウェイトの場合、 +以下の命令を用いる。 + +\begin{itemize} +\item |\setminchofont[|\Meta{番号}|]{|\Meta{フォントファイル名}|}|\Means + 明朝体(|\mcfamily|)のフォントを置き換えるフォントを + ファイル名で指定する。 + TTC形式の場合の該当のフォントの番号を\Meta{番号}に指定する。 +\item |\setgothicfont[|\Meta{番号}|]{|\Meta{フォントファイル名}|}|\Means + ゴシック体(|\gtfamily|% + \footnote{単ウェイト設定を用いる多くの場合、明朝体の太字 + (|\mcfamily|\linebreak[0]|\bfseries|)は + ゴシック体(|\gtfamily| と同じもの)で代替される。}% + )のフォントを置き換えるフォントをファイル名で指定する。 + \Meta{番号}の意味は前項と同じ。 +\item 以上の2つの命令、および以降で紹介するフォント設定命令について、 + \Meta{フォントファイル名}の値を |*| にするとフォント非埋込を指示する。 + また、この値を空にすると、以前に(当該の命令により)設定されていた + 値を取り消して(dvipdfmxの)既定の設定に戻す。 +\end{itemize} + +以下に設定例を示す。 + +\begin{quote}\small\begin{verbatim} +\setminchofont{ipam.ttf} % 明朝体は"IPA明朝" +\setgothicfont[0]{msgothic.ttc} % ゴシック体は"MS ゴシック" +\setminchofont{*} % 明朝体は非埋込 +\setgothicfont{} % ゴシック体は既定設定に従う +\end{verbatim}\end{quote} + +\paragraph{多ウェイトの場合の設定} + +\Pkg{japanese-otf}パッケージを |deluxe| 付きで用いている場合は、 +明朝・ゴシックともに3ウェイトを使う。 +この時は、各ウェイト毎にフォント指定ができる。 +またこの場合、丸ゴシック(|\mgfamily|)が使用可能になるが、 +これに対して置き換えるフォントを指定することができる。 + +\begin{itemize} +\newcommand*{\CNot}{\footnotesize} +\item |\setlightminchofont[|\Meta{番号}|]{|\Meta{フォントファイル名}|}|\Means + 明朝・細ウェイト{\CNot (|\mcfamily\ltseries|)} +\item |\setmediumminchofont[|\Meta{番号}|]{|\Meta{フォントファイル名}|}|\Means + 明朝・中ウェイト{\CNot (|\mcfamily\mdseries|)} +\item |\setboldminchofont[|\Meta{番号}|]{|\Meta{フォントファイル名}|}|\Means + 明朝・太ウェイト{\CNot (|\mcfamily\bfseries|)} +\item |\setmediumgothicfont[|\Meta{番号}|]{|\Meta{フォントファイル名}|}|\Means + ゴシック・中ウェイト{\CNot (|\gtfamily\mdseries|)} +\item |\setboldgothicfont[|\Meta{番号}|]{|\Meta{フォントファイル名}|}|\Means + ゴシック・太ウェイト{\CNot (|\gtfamily\bfseries|)} +\item |\setxboldgothicfont[|\Meta{番号}|]{|\Meta{フォントファイル名}|}|\Means + ゴシック・極太ウェイト{\CNot (|\gtfamily\ebseries|)} +\item |\setmarugothicfont[|\Meta{番号}|]{|\Meta{フォントファイル名}|}|\Means + 丸ゴシック{\CNot (|\mgfamily|)} +\end{itemize} + +さらに、この場合、|\setminchofont| と |\setgothicfont| は各々のファミリの +3ウェイト全てを指定のフォントで置き換える。 +実質的に単ウェイトになってしまうようで無意味に思えるが、 +例えば明朝を実際には 2ウェイトしか使わないという時に、 +\begin{quote}\small\begin{verbatim} +\setminchofont{minchoW3.otf} %まず3ウェイト指定して +\setboldminchofont{minchoW6.otf} %太だけ再指定する +\end{verbatim}\end{quote} +とする使い方が考えられる。 +特に、欧文フォントも置き換えたい場合は3ウェイトが +全て指定されていないと有効にならないので、 +\begin{quote}\small\begin{verbatim} +\setmediumminchofont{minchoW3.otf} +\setboldminchofont{minchoW6.otf} +\end{verbatim}\end{quote} +では思い通りにならないことになる。 +また、この仕様のため、|deluxe| 以外の場合 +(既定、|bold|、|noreplace|)は |\setgothicfont| で指定した +ものが確実にゴシック(単ウェイト)に反映される。 + +\paragraph{上級者向け機能} +\begin{itemize} +\item |\usecmapforalphabet|\Means + |usecmapforalphabet| オプションの設定に切り替える。 + (\ref{sec:Loading}節を参照。) +\item |\nousecmapforalphabet|\Means + |nousecmapforalphabet| オプションの設定に切り替える。 +\item |\setnewglyphcmapprefix{|\Meta{文字列}|}|\Means + 2004JIS用のJISコード系のCMapの名前の接頭辞を指定する。 + そのようなCMapは、{\pTeX}の標準和文フォントについて2004JIS字形を + 選択(|prefer2004jis| 指定)した時に必要となるが、 + Adobeが配布しているCMapファイルには該当するものがないので、 + それを適宜用意してそのファイル名をこの命令で指定する必要がある。 + 引数に与えるのは最後の1文字(書字方向の「|H|」「|V|」)を除いた + 部分の文字列である。\par + CMap名接頭辞の既定値は「|2004-|」で、これは最近の{\TeX} Liveに + 含まれている「|2004-H|」等のCMapファイルを用いることを意味する。% + \footnote{% + 引数に \texttt{*} を与えた場合は \texttt{JISX0213-2004-H} が + 指定されたと見なされる(歴史的理由から)。} +\item |\usefontmapfile{|\Meta{マップファイル名}|}|\Means + 指定のdvipdfmx用のマップファイルの読込を指示する。 + pdf{\TeX}の |\pdfmapfile| に相当する機能。 +\item |\usefontmapline{|\Meta{マップ行}|}|\Means + dvipdfmxのマップ行を直接指定して、その読込を指示する。 + pdf{\TeX}の |\pdfmapline| に相当する機能。 +\item |\diruni|\Means + 現在の和文フォントを“Unicode直接入力” + (フォントマップを“Unicode直接指定”にした上で + さらに和文VFをバイパスする) + の状態に切り替える(宣言型命令)。 + これにより、実際のフォントがサポートする任意の + 文字が出力可能となる。 + その代わり、この状態では、約物の周りの空き調整が無効になる。 +% 詳細については\ref{sec:Loading}節の |directunicode| オプションの +% 説明を参照されたい。 + \Note “Unicode直接指定”のオプションの何れか + (|unicode|等)が有効であり、 + かつ現在の和文ファミリについてフォントの置き換えが有効に + なっている必要がある。 + \Note 全角幅のグリフでないと正常に出力されない。 + \Note この命令自体は単にシェープを |diruni| という値に変えて + いるだけであり、このシェープに“Unicode直接入力”のフォントが + 予め設定されているわけである。 +\item |\textdiruni{|\Meta{テキスト}|}|\Means + |\diruni| に対応する引数型命令。 +\item |\gid{|\Meta{整数}|}|\Means + 現在の和文フォントで、指定の値のGIDをもつグリフを出力する。 + \Note 全角幅のグリフでないと正常に出力されない。 + \Note エンジンが{\upLaTeX}であり、 + |unicode| オプションが指定されていて、かつ、 + 現在の和文ファミリについてフォントの置き換えが有効に + 有効になっている必要がある。 +\end{itemize} + +%=========================================================== +\section{プリセット指定} +\label{sec:Preset} + +このパッケージの元々の意図は、標準のフォントを +普段使っているものと全く別の書体に変えることであったが、 +例えば「普段使う設定が複数ありそれを簡単に切り替えたい」という +場合にも有用である。 +そこで、{\pTeX}において広く行われている設定をパッケージ内に +組み込んで、パッケージオプションでそれを呼び出すという機能が +後になって追加された。 +\footnote{元々は\Pkg{PXjafont}という別のパッケージで +提供されていた機能であるが、 +0.5版からこのパッケージに組み入れることにした。} + +パッケージオプションにプリセット名を指定すると予め決められたフォント +ファイル名が |\setminchofont| 等の命令で設定される。 +例えば、 +\begin{quote}\small\begin{verbatim} +\usepackage[ipa]{pxchfon} +\end{verbatim}\end{quote} +は以下の記述と同等になる。 +\begin{quote}\small\begin{verbatim} +\usepackage[noalphabet]{pxchfon} +\setminchofont{ipam.ttf} +\setgothicfont{ipag.ttf} +\end{verbatim}\end{quote} + +注意として、プリセット指定を用いた場合は、 +欧文フォントの置換について |noalphabet|(無効)が既定になる。 +プリセット指定の場合は和文が「普通の」明朝・ゴシックのフォントと +なるので欧文フォントを変更しない場合が多いと考えられるためである。 + +%------------------- +\subsection{単ウェイト用の設定} + +後述の「多ウェイト用の設定」で述べられた設定以外で使う場合に使用する。 + +\begin{itemize} +\item |noembed|\Means + フォントを埋め込まない。 +\begin{quote}\small\begin{verbatim} +\setminchofont{*} % 非埋込 +\setgothicfont{*} % 非埋込 +\end{verbatim}\end{quote} + +\item |ms|\Means + MSフォント。 +\begin{quote}\small\begin{verbatim} +\setminchofont[0]{msmincho.ttc} % MS 明朝 +\setgothicfont[0]{msgothic.ttc} % MS ゴシック +\end{verbatim}\end{quote} + +\item |ipa|\Means + IPAフォント。 +\begin{quote}\small\begin{verbatim} +\setminchofont{ipam.ttf} % IPA明朝 +\setgothicfont{ipag.ttf} % IPAゴシック +\end{verbatim}\end{quote} + +\item |ipaex|\Means + IPAexフォント。 +\begin{quote}\small\begin{verbatim} +\setminchofont{ipaexm.ttf} % IPAex明朝 +\setgothicfont{ipaexg.ttf} % IPAexゴシック +\end{verbatim}\end{quote} +\end{itemize} + +%------------------- +\subsection{多ウェイト用の設定} + +\Pkg{japanese-otf}パッケージの |deluxe| オプション使用時に有効になる。 +明朝3ウェイト、ゴシック3ウェイト、丸ゴシック1ウェイトを設定する。 + +\begin{itemize} +\item |ms-hg|\Means + MSフォント + HGフォント。 + \Note HGフォント = Microsoft Office 付属の日本語フォント + \Note 「HG丸ゴシックM-PRO」 + は欧文が等幅でないので |alphabet| オプション指定と + ともに使うことができない。 + (後掲の |ipa-hg|、|ipaex-hg| についても同様。) + +\begin{quote}\small\begin{verbatim} +\setminchofont[0]{msmincho.ttc} % MS 明朝 +\setboldminchofont[0]{hgrme.ttc} % HG明朝E +\setgothicfont[0]{msgothic.ttc} % MS ゴシック +\setmediumgothicfont[0]{hgrgm.ttc} % HGゴシックM +\setboldgothicfont[0]{hgrge.ttc} % HGゴシックE +\setxboldgothicfont[0]{hgrsgu.ttc} % HG創英角ゴシックUB +\setmarugothic{hgrsmp.ttf} % HG丸ゴシックM-PRO +\end{verbatim}\end{quote} + +\item |ipa-hg|\Means + IPAフォント + HGフォント。 +\begin{quote}\small\begin{verbatim} +\setminchofont{ipam.ttf} % IPA明朝 +\setboldminchofont[0]{hgrme.ttc} % HG明朝E +\setgothicfont{ipag.ttf} % IPAゴシック +\setmediumgothicfont[0]{hgrgm.ttc} % HGゴシックM +\setboldgothicfont[0]{hgrge.ttc} % HGゴシックE +\setxboldgothicfont[0]{hgrsgu.ttc} % HG創英角ゴシックUB +\setmarugothic{hgrsmp.ttf} % HG丸ゴシックM-PRO +\end{verbatim}\end{quote} + +\item |ipaex-hg|\Means + IPAexフォント + HGフォント。 +\begin{quote}\small\begin{verbatim} +\setminchofont{ipaexm.ttf} % IPAex明朝 +\setboldminchofont[0]{hgrme.ttc} % HG明朝E +\setgothicfont{ipaexg.ttf} % IPAexゴシック +\setmediumgothicfont[0]{hgrgm.ttc} % HGゴシックM +\setboldgothicfont[0]{hgrge.ttc} % HGゴシックE +\setxboldgothicfont[0]{hgrsgu.ttc} % HG創英角ゴシックUB +\setmarugothic{hgrsmp.ttf} % HG丸ゴシックM-PRO +\end{verbatim}\end{quote} + +\item |moga-mobo|\Means + Mogaフォント + Moboフォント。 + \Note 「丸ゴシック」ファミリに MoboGothic を充てている。 + \Note Moga/MoboフォントはCIDアクセス非対応であるが、 + フォント実体を変えることで |prefer2004jis| オプションに + 対応させている。 + \par\medskip + \textgt{|prefer2004jis| 非指定時} +\begin{quote}\small\begin{verbatim} +\setminchofont[3]{mogam.ttc} % Moga90Mincho +\setboldminchofont[3]{mogamb.ttc} % Moga90Mincho Bold +\setgothicfont[2]{mogag.ttc} % Moga90Gothic +\setboldgothicfont[2]{mogagb.ttc} % Moga90Gothic Bold +\setxboldgothicfont[2]{mogagb.ttc} % Moga90Gothic Bold +\setmarugothic[2]{mobog.ttc} % Mobo90Gothic +\end{verbatim}\end{quote} + \par\medskip + \textgt{|prefer2004jis| 指定時} +\begin{quote}\small\begin{verbatim} +\setminchofont[0]{mogam.ttc} % MogaMincho +\setboldminchofont[0]{mogamb.ttc} % MogaMincho Bold +\setgothicfont[0]{mogag.ttc} % MogaGothic +\setboldgothicfont[0]{mogagb.ttc} % MogaGothic Bold +\setxboldgothicfont[0]{mogagb.ttc} % MogaGothic Bold +\setmarugothic[0]{mobog.ttc} % MoboGothic +\end{verbatim}\end{quote} + +\item |moga-mobo-ex|\Means + MogaExフォント + MoboExフォント。 + \Note 「丸ゴシック」ファミリに MoboExGothic を充てている。 + \Note フォント実体を変えることで |prefer2004jis| オプションに + 対応させている。 + \par\medskip + \textgt{|prefer2004jis| 非指定時} +\begin{quote}\small\begin{verbatim} +\setminchofont[4]{mogam.ttc} % MogaEx90Mincho +\setboldminchofont[4]{mogamb.ttc} % MogaEx90Mincho Bold +\setgothicfont[3]{mogag.ttc} % MogaEx90Gothic +\setboldgothicfont[3]{mogagb.ttc} % MogaEx90Gothic Bold +\setxboldgothicfont[3]{mogagb.ttc} % MogaEx90Gothic Bold +\setmarugothic[3]{mobog.ttc} % MoboEx90Gothic +\end{verbatim}\end{quote} + \par\medskip + \textgt{|prefer2004jis| 指定時} +\begin{quote}\small\begin{verbatim} +\setminchofont[1]{mogam.ttc} % MogaExMincho +\setboldminchofont[1]{mogamb.ttc} % MogaExMincho Bold +\setgothicfont[1]{mogag.ttc} % MogaExGothic +\setboldgothicfont[1]{mogagb.ttc} % MogaExGothic Bold +\setxboldgothicfont[1]{mogagb.ttc} % MogaExGothic Bold +\setmarugothic[1]{mobog.ttc} % MoboExGothic +\end{verbatim}\end{quote} + +\item |moga-maruberi|\Means + Mogaフォント + モトヤLマルベリ3等幅。 + \Note |moga-mobo| と以下を除いて同じ。 +\begin{quote}\small\begin{verbatim} +\setmarugothic{MTLmr3m.ttf} % モトヤLマルベリ3等幅 +\end{verbatim}\end{quote} + +\item |ume|\Means + 梅フォント。 +\begin{quote}\small\begin{verbatim} +\setminchofont{ume-tmo3.ttf} % 梅明朝 +\setgothicfont{ume-tgo5.ttf} % 梅ゴシックO5 +\setmediumgothicfont{ume-tgo4.ttf} % 梅ゴシック +\setmarugothic{ume-tgo5.ttf} % 梅ゴシックO5 +\end{verbatim}\end{quote} + +\item |kozuka-pro|\Means + 小塚フォント(Pro版)。 +\begin{quote}\small\begin{verbatim} +\setminchofont{KozMinPro-Regular.otf} % 小塚明朝 Pro R +\setlightminchofont{KozMinPro-Light.otf} % 小塚明朝 Pro L +\setboldminchofont{KozMinPro-Bold.otf} % 小塚明朝 Pro B +\setgothicfont{KozGoPro-Medium.otf} % 小塚ゴシック Pro M +\setmediumgothicfont{KozGoPro-Regular.otf} % 小塚ゴシック Pro R +\setboldgothicfont{KozGoPro-Bold.otf} % 小塚ゴシック Pro B +\setxboldgothicfont{KozGoPro-Heavy.otf} % 小塚ゴシック Pro H +\setmarugothicfont{KozGoPro-Heavy.otf} % 小塚ゴシック Pro H +\end{verbatim}\end{quote} + +\item |kozuka-pr6|\Means + 小塚フォント(Pr6版)。 +\begin{quote}\small\begin{verbatim} +\setminchofont{KozMinProVI-Regular.otf} % 小塚明朝 Pro-VI R +\setlightminchofont{KozMinProVI-Light.otf} % 小塚明朝 Pro-VI L +\setboldminchofont{KozMinProVI-Bold.otf} % 小塚明朝 Pro-VI B +\setgothicfont{KozGoProVI-Medium.otf} % 小塚ゴシック Pro-VI M +\setmediumgothicfont{KozGoProVI-Regular.otf} % 小塚ゴシック Pro-VI R +\setboldgothicfont{KozGoProVI-Bold.otf} % 小塚ゴシック Pro-VI B +\setxboldgothicfont{KozGoProVI-Heavy.otf} % 小塚ゴシック Pro-VI H +\setmarugothicfont{KozGoProVI-Heavy.otf} % 小塚ゴシック Pro-VI H +\end{verbatim}\end{quote} + +\item |kozuka-pr6n|\Means + 小塚フォント(Pr6n版)。 +\begin{quote}\small\begin{verbatim} +\setminchofont{KozMinPr6N-Regular.otf} % 小塚明朝 Pr6N R +\setlightminchofont{KozMinPr6N-Light.otf} % 小塚明朝 Pr6N L +\setboldminchofont{KozMinPr6N-Bold.otf} % 小塚明朝 Pr6N B +\setgothicfont{KozGoPr6N-Medium.otf} % 小塚ゴシック Pr6N M +\setmediumgothicfont{KozGoPr6N-Regular.otf} % 小塚ゴシック Pr6N R +\setboldgothicfont{KozGoPr6N-Bold.otf} % 小塚ゴシック Pr6N B +\setxboldgothicfont{KozGoPr6N-Heavy.otf} % 小塚ゴシック Pr6N H +\setmarugothicfont{KozGoPr6N-Heavy.otf} % 小塚ゴシック Pr6N H +\end{verbatim}\end{quote} + +\item |hiragino-pro|\Means + ヒラギノフォント基本6書体セット(Pro/Std版) + 明朝W2。 +\begin{quote}\small\begin{verbatim} +\setminchofont{HiraMinPro-W3.otf} % ヒラギノ明朝 Pro W3 +\setlightminchofont{HiraMinPro-W2.otf} % ヒラギノ明朝 Pro W2 +\setboldminchofont{HiraMinPro-W6.otf} % ヒラギノ明朝 Pro W6 +\setgothicfont{HiraKakuPro-W3.otf} % ヒラギノ角ゴ Pro W3 +\setboldgothicfont{HiraKakuPro-W6.otf} % ヒラギノ角ゴ Pro W6 +\setxboldgothicfont{HiraKakuStd-W8.otf} % ヒラギノ角ゴ Std W8 +\setmarugothicfont{HiraMaruPro-W4.otf} % ヒラギノ丸ゴ Pro W4 +\end{verbatim}\end{quote} + +\item |hiragino-pron|\Means + ヒラギノフォント基本6書体セット(ProN/StdN版) + 明朝W2。 +\begin{quote}\small\begin{verbatim} +\setminchofont{HiraMinProN-W3.otf} % ヒラギノ明朝 ProN W3 +\setlightminchofont{HiraMinProN-W2.otf} % ヒラギノ明朝 ProN W2 +\setboldminchofont{HiraMinProN-W6.otf} % ヒラギノ明朝 ProN W6 +\setgothicfont{HiraKakuProN-W3.otf} % ヒラギノ角ゴ ProN W3 +\setboldgothicfont{HiraKakuProN-W6.otf} % ヒラギノ角ゴ ProN W6 +\setxboldgothicfont{HiraKakuStdN-W8.otf} % ヒラギノ角ゴ StdN W8 +\setmarugothicfont{HiraMaruProN-W4.otf} % ヒラギノ丸ゴ ProN W4 +\end{verbatim}\end{quote} + +\item |hiragino-elcapitan-pro|\Means + ヒラギノフォント(Mac~OS~X El~Capitan 搭載;Pro/Std版) + 明朝W2。 +\begin{quote}\small\begin{verbatim} +\setminchofont[1]{HiraginoSerif-W3.ttc} +\setlightminchofont{HiraMinPro-W2.otf} +\setboldminchofont[1]{HiraginoSerif-W6.ttc} +\setgothicfont[3]{HiraginoSans-W3.ttc} +\setboldgothicfont[3]{HiraginoSans-W6.ttc} +\setxboldgothicfont[2]{HiraginoSans-W8.ttc} +\setmarugothicfont[0]{HiraginoSansR-W4.ttc} +\end{verbatim}\end{quote} + +\item |hiragino-elcapitan-pron|\Means + ヒラギノフォント(Mac~OS~X El~Capitan 搭載;ProN/StdN版) + 明朝W2。 +\begin{quote}\small\begin{verbatim} +\setminchofont[0]{HiraginoSerif-W3.ttc} +\setlightminchofont{HiraMinProN-W2.otf} +\setboldminchofont[0]{HiraginoSerif-W6.ttc} +\setgothicfont[2]{HiraginoSans-W3.ttc} +\setboldgothicfont[2]{HiraginoSans-W6.ttc} +\setxboldgothicfont[3]{HiraginoSans-W8.ttc} +\setmarugothicfont[1]{HiraginoSansR-W4.ttc} +\end{verbatim}\end{quote} + +\item |morisawa-pro|\Means + モリサワフォント基本7書体(Pro版)。 +\begin{quote}\small\begin{verbatim} +\setminchofont{A-OTF-RyuminPro-Light.otf} % A-OTF リュウミン Pro L-KL +\setboldminchofont{A-OTF-FutoMinA101Pro-Bold.otf} % A-OTF 太ミンA101 Pro +\setgothicfont{A-OTF-GothicBBBPro-Medium.otf} % A-OTF 中ゴシックBBB Pro +\setboldgothicfont{A-OTF-FutoGoB101Pro-Bold.otf} % A-OTF 太ゴB101 Pro +\setxboldgothicfont{A-OTF-MidashiGoPro-MB31.otf} % A-OTF 見出ゴMB31 Pro +\setmarugothicfont{A-OTF-Jun101Pro-Light.otf} % A-OTF じゅん Pro 101 +\end{verbatim}\end{quote} + +\item |morisawa-pr6n|\Means + モリサワフォント基本7書体(Pr6N版 + \footnote{「じゅん」はPr6N版が存在しないためPro版が使われる。})。 +\begin{quote}\small\begin{verbatim} +\setminchofont{A-OTF-RyuminPr6N-Light.otf} % A-OTF リュウミン Pr6N L-KL +\setboldminchofont{A-OTF-FutoMinA101Pr6N-Bold.otf} % A-OTF 太ミンA101 Pr6N +\setgothicfont{A-OTF-GothicBBBPr6N-Medium.otf} % A-OTF 中ゴシックBBB Pr6N +\setboldgothicfont{A-OTF-FutoGoB101Pr6N-Bold.otf} % A-OTF 太ゴB101 Pr6N +\setxboldgothicfont{A-OTF-MidashiGoPr6N-MB31.otf} % A-OTF 見出ゴMB31 Pr6N +\setmarugothicfont{A-OTF-Jun101Pro-Light.otf} % A-OTF じゅん Pro 101 +\end{verbatim}\end{quote} + +\item |yu-win|\Means + 游書体(Windows~8.1搭載版)。 +\begin{quote}\small\begin{verbatim} +\setminchofont{yumin.ttf} % 游明朝 Regular +\setlightminchofont{yuminl.ttf} % 游明朝 Light +\setboldminchofont{yumindb.ttf} % 游明朝 Demibold +\setgothicfont{yugothic.ttf} % 游ゴシック Regular +\setboldgothicfont{yugothib.ttf} % 游ゴシック Bold +\setxboldgothicfont{yugothib.ttf} % 游ゴシック Bold +\setmarugothicfont{yugothic.ttf} % 游ゴシック Regular +\end{verbatim}\end{quote} + +\item |yu-win10|\Means + 游書体(Windows~10搭載版)。 + \Note フォントの性質のため、この設定では欧文引用符 + “\,”‘\,’の出力が不正になる。 + この不具合は |unicode| オプションを指定する + (dvipdfmxの20170918版が必要)、 + または代わりに |yu-win10+| プリセットを指定する + (dvipdfmxの20170318版が必要)ことで回避できる。 + 詳細については\ref{sec:DirectUnicode}節を参照されたい。 + +\begin{quote}\small\begin{verbatim} +\setminchofont{yumin.ttf} +\setlightminchofont{yuminl.ttf} +\setboldminchofont{yumindb.ttf} +\setgothicfont[0]{YuGothM.ttc} +\setmediumgothicfont[0]{YuGothR.ttc} +\setboldgothicfont[0]{YuGothB.ttc} +\setxboldgothicfont[0]{YuGothB.ttc} +\setmarugothicfont[0]{YuGothM.ttc} +\end{verbatim}\end{quote} + +\item |yu-osx|\Means + 游書体(Mac OS X搭載版)。 +\begin{quote}\small\begin{verbatim} +\setminchofont{YuMin-Medium.otf} % 游明朝体 ミディアム +\setboldminchofont{YuMin-Demibold.ttf} % 游明朝体 デミボールド +\setgothicfont{YuGo-Medium.otf} % 游ゴシック体 ミディアム +\setboldgothicfont{YuGo-Bold.otf} % 游ゴシック体 ボールド +\setxboldgothicfont{YuGo-Bold.otf} % 游ゴシック体 ボールド +\setmarugothicfont{YuGo-Medium.otf} % 游ゴシック体 ミディアム +\end{verbatim}\end{quote} + +\item |sourcehan-otc|\Means + Source Han Serif(源ノ明朝)+ Source Han Sans(源ノ角ゴシック)、 + OTC版。 + +\begin{quote}\small\begin{verbatim} +\setminchofont[0]{SourceHanSerif-Regular.ttc} +\setlightminchofont[0]{SourceHanSerif-Light.ttc} +\setboldminchofont[0]{SourceHanSerif-Bold.ttc} +\setgothicfont[0]{SourceHanSans-Medium.ttc} +\setmediumgothicfont[0]{SourceHanSans-Regular.ttc} +\setboldgothicfont[0]{SourceHanSans-Bold.ttc} +\setxboldgothicfont[0]{SourceHanSans-Heavy.ttc} +\setmarugothicfont[0]{SourceHanSans-Medium.ttc} +\end{verbatim}\end{quote} + +\item |sourcehan|\Means + Source Han Serif(源ノ明朝)+ Source Han Sans(源ノ角ゴシック)、 + 言語別OTF版。 + +\begin{quote}\small\begin{verbatim} +\setminchofont{SourceHanSerif-Regular.otf} +\setlightminchofont{SourceHanSerif-Light.otf} +\setboldminchofont{SourceHanSerif-Bold.otf} +\setgothicfont{SourceHanSans-Medium.otf} +\setmediumgothicfont{SourceHanSans-Regular.otf} +\setboldgothicfont{SourceHanSans-Bold.otf} +\setxboldgothicfont{SourceHanSans-Heavy.otf} +\setmarugothicfont{SourceHanSans-Medium.otf} +\end{verbatim}\end{quote} + +\item |sourcehan-jp|\Means + Source Han Serif JP(源ノ明朝)+ Source Han Sans JP(源ノ角ゴシック)、 + 地域別サブセットOTF版。 + +\begin{quote}\small\begin{verbatim} +\setminchofont{SourceHanSerifJP-Regular.otf} +\setlightminchofont{SourceHanSerifJP-Light.otf} +\setboldminchofont{SourceHanSerifJP-Bold.otf} +\setgothicfont{SourceHanSansJP-Medium.otf} +\setmediumgothicfont{SourceHanSansJP-Regular.otf} +\setboldgothicfont{SourceHanSansJP-Bold.otf} +\setxboldgothicfont{SourceHanSansJP-Heavy.otf} +\setmarugothicfont{SourceHanSansJP-Medium.otf} +\end{verbatim}\end{quote} + +\item |noto-otc|\Means + Noto Serif CJK JP + Noto Sans CJK JP、 + OTC版。 + +\begin{quote}\small\begin{verbatim} +\setminchofont[0]{NotoSerifCJK-Regular.ttc} +\setlightminchofont[0]{NotoSerifCJK-Light.ttc} +\setboldminchofont[0]{NotoSerifCJK-Bold.ttc} +\setgothicfont[0]{NotoSansCJK-Medium.ttc} +\setmediumgothicfont[0]{NotoSansCJK-Regular.ttc} +\setboldgothicfont[0]{NotoSansCJK-Bold.ttc} +\setxboldgothicfont[0]{NotoSansCJK-Black.ttc} +\setmarugothicfont[0]{NotoSansCJK-Medium.ttc} +\end{verbatim}\end{quote} + +\item |noto|\Means + Noto Serif CJK JP + Noto Sans CJK JP、 + 言語別OTF版。 + +\begin{quote}\small\begin{verbatim} +\setminchofont{NotoSerifCJKjp-Regular.otf} +\setlightminchofont{NotoSerifCJKjp-Light.otf} +\setboldminchofont{NotoSerifCJKjp-Bold.otf} +\setgothicfont{NotoSansCJKjp-Medium.otf} +\setmediumgothicfont{NotoSansCJKjp-Regular.otf} +\setboldgothicfont{NotoSansCJKjp-Bold.otf} +\setxboldgothicfont{NotoSansCJKjp-Black.otf} +\setmarugothicfont{NotoSansCJKjp-Medium.otf} +\end{verbatim}\end{quote} + +\item |noto-jp|\Means + Noto Serif JP + Noto Sans JP、 + 地域別サブセットOTF版。 + +\begin{quote}\small\begin{verbatim} +\setminchofont{NotoSerifJP-Regular.otf} +\setlightminchofont{NotoSerifJP-Light.otf} +\setboldminchofont{NotoSerifJP-Bold.otf} +\setgothicfont{NotoSansJP-Medium.otf} +\setmediumgothicfont{NotoSansJP-Regular.otf} +\setboldgothicfont{NotoSansJP-Bold.otf} +\setxboldgothicfont{NotoSansJP-Black.otf} +\setmarugothicfont{NotoSansJP-Medium.otf} +\end{verbatim}\end{quote} + +\end{itemize} + +%------------------- +\subsection{ptex-fontmaps互換のオプション} + +\Pkg{ptex-fontmaps}のプリセット名を別名として用意した。 + +\begin{itemize} +\item |noEmbed|\Means |noembed| の別名。 +\item |kozuka|\Means |kozuka-pro| の別名。 +\item |hiragino|\Means |hiragino-pro| の別名。 +\item |hiragino-elcapitan|\Means |hiragino-elcapitan-pro| の別名。 +\item |morisawa|\Means |morisawa-pro| の別名。 +\end{itemize} + +%------------------- +\subsection{廃止されたオプション} + +以下に挙げるのは、0.5版以降で非推奨となっていたプリセット設定である。 +これらは1.0版において\textgt{廃止}されたため、 +現在は使用するとエラーが発生する。 + +\begin{itemize} +\item |ipa-otf|\Means + 「拡張子が |.otf| の」IPAフォント。 + \Note 代替のプリセットはない。 +\item |ipa-otf-dx|\Means + 「拡張子が |.otf| の」IPAフォント + HGフォント。 + \Note 代替のプリセットはない。 +\item |kozuka4|\Means + 小塚フォント(Pro版)の単ウェイト使用。 + \Note |kozuka-pro|+|oneweight| オプションで代替可能。 +\item |kozuka6|\Means + 小塚フォント(Pr6版)の単ウェイト使用。 + \Note |kozuka-pr6|+|oneweight| オプションで代替可能。 +\item |kozuka6n|\Means + 小塚フォント(Pr6n版)の単ウェイト使用。 + \Note |kozuka-pr6n|+|oneweight| オプションで代替可能。 +\item |hiragino|\Means + ヒラギノフォントの単ウェイト使用。 + \Note |hiragino-pro|+|oneweight| オプションで代替可能。 + \Note 1.2a版以降で、|hiragino-pro| の別名として再定義された。 +\item |ms-dx|\Means |ms-hg| の別名。 +\item |ipa-ttf|\Means |ipa| の別名。 +\item |ipa-ttf-dx|\Means |ipa-hg| の別名。 +\item |ipav2|\Means |ipa| の別名。 +\item |ipav2-dx|\Means |ipa-hg| の別名。 +\item |ipa-dx|\Means |ipa-hg| の別名。 +\item |hiragino-dx|\Means |hiragino-pro| の別名。 +\end{itemize} + +%=========================================================== +\section{ファイルプリセット機能} +\label{sec:FilePreset} + +ファイルプリセット機能を利用すると、既存のdvipdfmx用のマップファイル +の読込を文書内で指定することが可能になる。 +パッケージオプションに次の何れかの形式の文字列を指定すると、 +ファイルプリセットの指定と見なされる。 + +\begin{itemize} +\item |+|\mbox{}\textgt{名前}\Means + {\TeX} Live用ファイルプリセット。 +\item |*|\mbox{}\textgt{名前}\Means + 単純ファイルプリセット。 +\end{itemize} + +\subsection{{\TeX} Live用ファイルプリセット機能} + +{\TeX} Liveでは{(u)\pLaTeX}のフォントの設定を +kanji-config-updmapというユーティリティで行うことができる。 +そこでは、決まった形式のファイル名をもつdvipdfmx用の +マップファイルを用意していて、ユーザが要求したプリセット名に +対応したファイルをupdmapの機構を用いて有効化することで、 +dvipdfmxの既定の設定を切り替えている。 + +パッケージオプションとして |+| で始まる文字列 +(仮に |+NAME| とする)を与えると、 +kanji-config-updmap用のマップファイルの読込が指示される。 +具体的には、以下の名前のマップファイルが読み込まれる。 + +\begin{itemize} +\item {\pLaTeX}の場合: + \begin{itemize} + \item |ptex-NAME.map| + \item |otf-NAME.map| + \end{itemize} +\item {\upLaTeX}の場合、上記のものに加えて以下のもの: + \begin{itemize} + \item |uptex-NAME.map| + \item |otf-up-NAME.map| + \end{itemize} +\end{itemize} + +例えば、{\pLaTeX}文書において以下のようにパッケージを読み込んだとする。 + +\begin{quote}\small\begin{verbatim} +\usepackage[+yu-win]{pxchfon} +\end{verbatim}\end{quote} + +この場合、|ptex-yu-win.map| と |otf-yu-win.map| の2つのマップファイル +がdvipdfmx実行時に読み込まれる。 + +\subsection{単純ファイルプリセット機能} + +パッケージオプションとして |*| で始まる文字列 +(仮に |*NAME| とする)を与えると、 +|NAME.map| という名前のマップファイルの読込が指示される。 + +例えば、以下のようにパッケージを読み込んだとする。 + +\begin{quote}\small\begin{verbatim} +\usepackage[*yu]{pxchfon} +\end{verbatim}\end{quote} + +この場合、|yu.map| というマップファイル +\footnote{例えばW32{\TeX}ではこの名前のマップファイルが + 用意されている。}% +がdvipdfmx実行時に読み込まれる。 + + +%=========================================================== +\section{Unicode直接指定} +\label{sec:DirectUnicode} + +dvipdfmxのフォントマップ設定において、和文フォントのエンコーディングを +指定する方法は“CMap指定”と“Unicode直接指定”の2種類がある。 +\footnote{詳細についてはdvipdfmxのマニュアルを参照されたい。} +かつては、Unicodeで包摂されている異体字を区別するためには +CMap指定の利用が必須であったため、慣習的に、dvipdfmxのフォントマップ +設定においてはCMap指定が主に用いられてきた。 + +しかしこのCMap指定は、Adobe-Japan1(AJ1)% +\footnote{または各々のCJK言語の“Adobe標準”のグリフ集合、 +例えば簡体字中国語ならAdobe-GB1。}% +のグリフ集合に対応したOpenTypeフォントにしか適用できない、 +という欠点がある。 +近年は、“AJ1でない”OpenTypeフォント +\footnote{例えば、Adobe開発のフリーフォントの +「Source Han Serif(源ノ明朝)」など。}% +が普及しつつあり、そのようなフォントでは異体字の切替などの +付加機能を専ら“OpenType属性の指定”により行うことを想定している。 +これに対応するため、dvipdfmxのマップ指定において +“OpenType属性の指定”がサポートされるようになった。 + +\Pkg{pxchfon}では和文フォントのエンコーディングに対する +Unicode直接指定をサポートしている。 +特に1.0版から、新しいdvipdfmxのOpenType属性の指定を積極的に +利用することで、“AJ1でない”フォントを使用した場合でも、 +CMap指定の場合の機能性を可能な限り保つことを目指している。 + +\Note Unicode直接指定に対するサポートは発展途上であるため、 +過渡的な要素が多く混ざっていてやや煩雑になっていることに +注意してほしい。 + +\paragraph{“Unicode直接指定”オプション} +以下のパッケージオプションを指定することで +Unicode直接指定の有効・無効を切り替えられる。 + +\begin{itemize} +\item |unicode|\Means + 全般的にUnicode直接指定を利用する。 + 最も理想的な設定であるが、\Strong{{\TeX} Live 2018以降のdvipdfmx}% + (20170918版以降)が必要である。 +\item |unicode*|\Means + {\TeX} Live 2017のdvipdfmx(20170318版)専用の\Strong{過渡的}な設定。 + \Note 1.5版以降では\Strong{非推奨}であり、 + 将来的に廃止される予定である。 +\item |directunicode*|\Means + 全般的にUnicode直接指定を利用するが、 + 古い({\TeX} Live 2016以前の)dvipdfmxに + 対応するために、OpenType属性の指定を全く行わない。 + つまり、入力のUnicode文字に対する既定のグリフが常に出力され、 + 異体字の区別は全て無効になる。 +\item |directunicode|\Means + \Pkg{japanese-otf}の|\UTF|入力のフォントに限って + Unicode直接指定を利用する。 + |directunicode*| と同じくOpenType属性の指定を全く行わない。 + \Note 前述の通り |directunicode*| はデメリットが強いため、 + 適用範囲を限定したもの。 +\end{itemize} + +\paragraph{Unicode直接指定専用プリセット} + +以下に挙げるプリセット設定は“AJ1でない”OpenTypeフォントを +利用するものである。 +そのため、これらのプリセットを指定した場合は、 +自動的に |unicode| が(既定として)指定される% +\footnote{1.0~1.1b版では{\TeX} Live 2017のための暫定措置として +「|+|付の特殊プリセットへの自動振替」が行われていたが、 +1.2版から本来の仕様が適用される。}。 + +\begin{itemize} +\item |sourcehan-otc| +\item |sourcehan| +\item |sourcehan-jp| +\item |noto-otc| +\item |noto| +\item |noto-jp| +\end{itemize} + +\paragraph{特殊プリセット指定\<(非推奨)} + +以下に挙げるプリセット設定は{\TeX} Live 2017% +(dvipdfmx 20170318版)のために用意された特殊な設定である。 + +1.5版においてこれらのプリセットは\Strong{非推奨}となった。 +将来的には廃止される予定である。 +そのため、これらのプリセットを利用している場合は、 +\Strong{{\TeX}システムを更新}(dvipdfmxを20170918版以降に)した上で、 +“本来の正しい設定”に移行することを推奨する。 + +\begin{itemize} +\item |sourcehan+|、|sourcehan-otc+|、|noto+|、|noto-otc+|:\\ + →代わりに|+|無しの名前(|sourcehan| 等)を指定する。 + \Note 前述の通り、|unicode| は自動的に補われる。 + \Note 日本語版以外のフォントはもはや不要である。 + +\item |yu-win10+|:\\ + →代わりに |yu-win10| と |unicode| を指定する。 +\end{itemize} + +%------------------- +\subsection{Unicode直接指定に関する注意事項} +\label{ssec:DirectUnicodeNotice} + +\begin{itemize} +\item プリセット指定または |\set...font| 命令で + フォントを置換していないウェイトについては、 + |unicode| 指定時であってもUnicode直接指定は効かない。 + 従って、そのようなウェイトはUnicode直接指定が想定する出力には + ならず、またUnicode直接指定を必要とする機能 + (|expert| や |glyphid| の各オプション) + も使えない。 +\item 特に、|expert| については、 + 非置換のウェイトの動作が非常に複雑で解りにくい。 + 従って、|expert| を指定する場合は、全ファミリ・ウェイトについて + 置換を指定することを推奨する + (これに反する場合は警告が出る)。 +\item 非埋込を指定したウェイトについてはUnicode直接指定が + 無効になる。 + この動作も非常に解りにくいため、 + Unicode直接指定を用いる場合は、非埋込の指定をしないことを推奨する + (これに反する場合は警告が出る)。 +\end{itemize} + + +%=========================================================== +\section{dvipdfmxのページ抜粋処理への対応} +\label{sec:PageSelection} + +dvipdfmxには元のDVI文書の一部のページだけを抜粋してPDF文書に変換する +機能がある(|-s| オプション)。 +ところが、本パッケージでは、ユーザ命令で指定されたフォントマップ情報を、 +DVIの先頭ページに書き出すという処理方法をとっている +(すなわち「ページ独立性」を保っていない)ため、 +先頭ページを含まない抜粋を行った場合は、 +フォント置換が効かないという現象が発生する。 + +この問題を解決するのが |everypage| パッケージオプションである。 +このオプションが指定された場合は、 +DVI文書の全てのページにフォントマップ情報を書き出すので、 +ページ抜粋を行っても確実にフォント置換が有効になる。 +ただし、このオプションを指定する場合は\Pkg{atbegshi}パッケージが +必要である。 + +%=========================================================== +\section{欧文フォントの置換の原理} +\label{sec:Mechanism-Alph} + +指定された和文フォントの半角部分からなる欧文フォントファミリとして +OT1/cfjar(明朝)、OT1/cfjas(ゴシック)、OT1/cfjam(丸ゴシック) +の3つ(以下では\Strong{CFJAファミリ}と総称する)を定義している。 +その上で、CFJAファミリに対するマップ指定を和文と同じ方法で行っている。 +なお、CFJAファミリは内部ではOT1として扱われるが、 +実際にはOT1の一部のグリフしか持っていない。 + +\paragraph{alphabetオプション指定時} +オプション |alphabet| を指定した場合、 +CFJAファミリを既定の欧文ファミリとして設定する +(cfjar→|\rmdefault|;cfjas→|\sfdefault|)。 +従って、例えば一時的に従来のCMフォントを使いたい場合は、 +適宜ファミリの変更(|\fontfamily{cmr}|等)を行えばよい。 + +\paragraph{relfontオプション指定時} +オプション |relfont| を指定した場合、 +CFJAファミリを和文ファミリの従属欧文フォントに +(cfjarを |\mcfamily| に、cfjasを |\gtfamily| に、 +cfjamを |\mgfamily| に対して)設定する。 + +\paragraph{利用可能な欧文エンコーディング} +現状で、CFJAファミリが対応している欧文エンコーディングは +OT1、T1、TS1の3つである +\footnote{1.4版でT1に“暫定対応”し、1.5版でT1とTS1に正式に対応した。}% +(TS1は事前に\Pkg{textcomp}を読み込んだ場合にのみ有効) +このため、欧文フォントの置換 +(\texttt{alphabet}や\texttt{relfont}オプション) +を利用する文書は、欧文エンコーディングがOT1かT1である必要がある +\footnote{TS1は記号用のエンコーディングであり、本文の既定の +エンコーディングとして使うものではない。}。 + +何れのエンコーディングを用いる場合でも、様々な理由により、利用できる +文字の種類が限られている。 +\begin{enumerate} +\item AJ1対応のOpenTypeフォントを指定して、かつ |usecmapforalphabet| + オプションを指定した場合、 + 以下の文字(でかつ当該の欧文エンコーディングに含まれるもの)が使える。 + \Note AJ1対応フォント用のプリセット(|kozuka-pr6n| 等)を + 指定した場合は |usecmapforalphabet| は自動的に有効になる。 + \begin{itemize} + \item[a)] ASCII文字 + \footnote{出力される文字の話であることに注意。 + 例えば、OT1やT1で \textsf{\textquotesingle}(U+0027)を + 入力したときに出力される文字は \textsf{\textquoteright}(U+2019) + であり、これはASCII文字ではない。 + なお、TS1はU+0027を含む。}% + およびen-ダッシュ(\textsf{--})。 + \Note これらは半角幅である。 + \item[b)] クオート(\textsf{`` '' ` '})。 + \Note これらは和文用の全角幅の字形を、空きを詰めて半角幅で出力する。 + \item[c)] em-ダッシュ(\textsf{---})。 + \Note これらはU+2015の全角幅の字形をそのまま全角幅で出力する。 + \end{itemize} +\item 1以外の場合、 + 以下の文字(でかつ当該の欧文エンコーディングに含まれるもの)が使える。 + \Note この場合、既定では欧文は |directunicode*| 相当の状態になる。 + \begin{itemize} + \item 1項のa、b、cの文字はフォントが正しい幅 + (aは半角、bとcは半角)の字形を持っていれば使える。 + \item それ以外でも、Unicodeにある文字である大部分の文字は、 + フォントが半角幅の字形を持っていれば使える。 + \Note 半角幅のまま出力される。 + \item |unicode| オプションを指定すると、正しい幅の字形を優先して + 使おうとするため、既定の場合よりも多くの文字が使える。 + \end{itemize} +\end{enumerate} + + +%=========================================================== +\section{注意事項} +\label{sec:Notice} + +\begin{itemize} +\item 指定できるフォントは等幅のものに限られる。 + 実際に使われるメトリックは置換前と変わらない。 + (例えば jsarticle の標準設定ならJISメトリック) +\item 欧文部分を置き換えた場合、残念ながら欧文も等幅 + (半角幅)になってしまう。 + さらに、アクセント付きの文字(\'e 等)や非英語文字 + ({\ss} 等)も使えない。 + 大抵の日本語用フォントにはその文字を出力するためのグリフがそもそも + ないのであるが、例えあったとしても使えない。 +\item \Pkg{japanese-otf}/\Pkg{UTF}パッケージ使用時に |\UTF| や |\CID| で + 指定した文字が出力されるかは、 + 指定したフォントがその文字を持っているかに依存する。 +\item |deluxe| 付きの\Pkg{japanese-otf}パッケージと |alphabet| 付きの + \Pkg{pxchfon}を同時に使う場合には、 + \Pkg{japanese-otf}パッケージを先に読み込む必要がある。 + (これに反した場合はエラーになる。) +\item 単ウェイトの場合は、明朝の太字はゴシックになるという一般的な + 設定に欧文フォントの置換の際にも従っているが、 + 明朝のみが置換されている場合は、 + 明朝の置換フォントが太字にも適用される。 +%\item 既述のように、0.3版以降では\Pkg{japanese-otf}パッケージで |deluxe|、 +% |bold|、|noreplace| のいずれも指定されてない場合でも |\setgothicfont| +% が有効になる。 +\end{itemize} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\appendix +%=========================================================== +\section{dvipdfmx以外のDVIウェアでの使用} +\label{sec:Other-Drivers} + +本パッケージの核心の機能である +「使用フォントを文書中で指定する」 +ことの実現にはdvipdfmxの拡張機能を利用している。 +従って、dvipdfmxの利用が必須となるのだが、 +(プレビュー等の目的で) +文書中で指定したフォントが反映されなくてもよいのなら、 +他のDVIウェアでも本パッケージを利用した +DVI文書を扱える可能性がある。 + +%------------------- +\subsection{和文フォントだけを置き換えた場合(\texttt{noalphabet} 指定時)} + +この設定で生成されるDVIファイルを +dvipdfmx以外のDVIウェアに読ませた場合、 +フォント置換が無視され、 +そのソフトウェアで設定されたフォントで出力されるはずである。 +%ただ、ソフトウェアによっては、警告やエラーが出る可能性もある。 + +%------------------- +\subsection{欧文フォントも置き換えた場合(\texttt{alphabet} 指定時)} + +欧文フォントを置き換えたDVIファイルは、 +独自の欧文フォント(|r-cfja?-?-l0j| という形式の名前) +を含んでいるので、 +少なくともそれに関する設定をしない限りはdvipdfmx以外の +DVIウェアで処理することができない。 +さらに、このフォントを扱うためにはDVIウェアが +サブフォント(sfd)に対応している必要がある。 +文書中での設定をdvipdfmx以外のDVIウェアで活かすことはできない。 +しかし、「独自部分の欧文フォントを常に特定の代替フォントで表示させる」 +ということは、sfd対応のDVIウェアであれば可能である。 + +以下に、ttf2pkについて、「常にIPAフォントで代替する」 +ための設定を掲げておく。 +この記述をttf2pkのマップファイル(ttfonts.map)に加えると、 +例えば、dvioutで本パッケージ使用のDVIファイルを閲覧できるようになる。 + +\begin{quote}\small\begin{verbatim} +r-cfjar-l-@PXcjk0@ msmincho.ttc FontIndex=0 +r-cfjar-r-@PXcjk0@ msmincho.ttc FontIndex=0 +r-cfjar-b-@PXcjk0@ msmincho.ttc FontIndex=0 +r-cfjas-r-@PXcjk0@ msgothic.ttc FontIndex=0 +r-cfjas-b-@PXcjk0@ msgothic.ttc FontIndex=0 +r-cfjas-x-@PXcjk0@ msgothic.ttc FontIndex=0 +\end{verbatim}\end{quote} + +%=========================================================== +\section{pxjafontパッケージ} + +現在の版の\Pkg{pxchfon}パッケージは旧来の\Pkg{pxjafont}の機能を +取り込んでいるため、\Pkg{pxjafont}は不要である。 +古い環境との互換性のため\Pkg{pxjafont}を残していたが、 +1.0版において\Pkg{pxjafont}の使用を非推奨の扱いとした。 +(近い将来に廃止予定。) + +\Pkg{pxjafont}を利用しているユーザは、 +\ref{sec:Preset}節を参照して現在の\Pkg{pxchfon}用の +適切な設定に書き直す必要がある。 + +\Note 古いプリセット名の中に廃止されたものがあるので注意。 + +%=========================================================== +\section{中国語・韓国語フォントへの対応} +\label{sec:Non-Japanese} + +0.7c版で\Pkg{japanese-otf}パッケージ(|multi| オプション指定)および +{\upTeX}標準の中国語・韓国語フォントについてのサポートを始めた。 +以下の命令で、実フォントの置換指定ができる。 + +\begin{itemize} +\newcommand*{\CNot}{\footnotesize} +\item |\setkoreanminchofont[|\Meta{番号}|]{|\Meta{フォントファイル名}|}|\Means + 韓国語・明朝体。 +\item |\setkoreangothicfont[|\Meta{番号}|]{|\Meta{フォントファイル名}|}|\Means + 韓国語・ゴシック体。 +\item |\setschineseminchofont[|\Meta{番号}|]{|\Meta{フォントファイル名}|}|\Means + 簡体字中国語・明朝体(宋体)。 +\item |\setschinesegothicfont[|\Meta{番号}|]{|\Meta{フォントファイル名}|}|\Means + 簡体字中国語・ゴシック体(黒体)。 +\item |\settchineseminchofont[|\Meta{番号}|]{|\Meta{フォントファイル名}|}|\Means + 繁体字中国語・明朝体(明体)。 +\item |\settchinesegothicfont[|\Meta{番号}|]{|\Meta{フォントファイル名}|}|\Means + 繁体字中国語・ゴシック体(黒体)。 +\end{itemize} + +注意事項。 + +\begin{itemize} +\item プリセット指定は中国語・韓国語のフォントについては何も指定しない。 +従って、上記の命令を用いない場合は、これらのフォントのマップ再設定が +行われることはない。 +\item 「Unicode直接指定オプション」は中国語・韓国語のフォントに対しても +有効である。 +|directunicode| の場合は「\Pkg{japanese-otf}パッケージのUnicode入力命令」 +(|\UTFK|、|\UTFM|、等)が対象となり、 +それ以外はこれに加えて{\upTeX}標準のフォントも +対象になる。 +\end{itemize} + +%=========================================================== +\end{document} +%% EOF diff --git a/language/japanese/pxchfon/pxchfon0.def b/language/japanese/pxchfon/pxchfon0.def new file mode 100644 index 0000000000..1be68f098f --- /dev/null +++ b/language/japanese/pxchfon/pxchfon0.def @@ -0,0 +1,4 @@ +% pxchfon0.def +% This file does nothing; it exists for check for full installation. +\relax +% EOF diff --git a/language/japanese/pxchfon/pxjafont.sty b/language/japanese/pxchfon/pxjafont.sty new file mode 100644 index 0000000000..ad79f5bcbd --- /dev/null +++ b/language/japanese/pxchfon/pxjafont.sty @@ -0,0 +1,24 @@ +%% +%% This is file 'pxjafont.sty'. +%% +%% Copyright (c) 2019 Takayuki YATO (aka. "ZR") +%% GitHub: https://github.com/zr-tex8r +%% Twitter: @zr_tex8r +%% +%% This package is distributed under the MIT License. +%% + +%% package declaration +\NeedsTeXFormat{pLaTeX2e} +\ProvidesPackage{pxjafont} +%% show warning +\PackageWarning{pxchfon} + {!!!!!!!!!!!! IMPORTANT WARNING !!!!!!!!!!!!\MessageBreak + The package 'pxjafont' is obsolete and its use is\MessageBreak + deprecated. please refer to the manual of pxchfon.\MessageBreak + The warning is issued} +%% delegate +\let\pxAliasedPxjafont=t +\RequirePackageWithOptions{pxchfon}[] +\endinput +%% EOF diff --git a/language/japanese/pxchfon/sample/sample-2000jis.pdf b/language/japanese/pxchfon/sample/sample-2000jis.pdf Binary files differnew file mode 100644 index 0000000000..e9034e19a9 --- /dev/null +++ b/language/japanese/pxchfon/sample/sample-2000jis.pdf diff --git a/language/japanese/pxchfon/sample/sample-2000jis.tex b/language/japanese/pxchfon/sample/sample-2000jis.tex new file mode 100644 index 0000000000..d8f11703aa --- /dev/null +++ b/language/japanese/pxchfon/sample/sample-2000jis.tex @@ -0,0 +1,7 @@ +% 文字コードはUTF-8 (platex -kanji=utf8) +\documentclass[a6paper,papersize]{jsarticle} +\usepackage[noembed,noprefer2004jis]{pxchfon} % no-embed +%\usepackage[hiragino-pron,noprefer2004jis]{pxchfon} % embed Hiragino ProN +\begin{document} +葛餅で蓬餅で、かつ煎餅! +\end{document} diff --git a/language/japanese/pxchfon/sample/sample-2004jis.pdf b/language/japanese/pxchfon/sample/sample-2004jis.pdf Binary files differnew file mode 100644 index 0000000000..27e567b8e0 --- /dev/null +++ b/language/japanese/pxchfon/sample/sample-2004jis.pdf diff --git a/language/japanese/pxchfon/sample/sample-2004jis.tex b/language/japanese/pxchfon/sample/sample-2004jis.tex new file mode 100644 index 0000000000..2563674efc --- /dev/null +++ b/language/japanese/pxchfon/sample/sample-2004jis.tex @@ -0,0 +1,7 @@ +% 文字コードはUTF-8 (platex -kanji=utf8) +\documentclass[a6paper,papersize]{jsarticle} +\usepackage[noembed,prefer2004jis]{pxchfon} % no-embed +%\usepackage[hiragino-pron,prefer2004jis]{pxchfon} % embed Hiragino ProN +\begin{document} +葛餅で蓬餅で、かつ煎餅! +\end{document} diff --git a/language/japanese/pxchfon/sample/sample-pxchfon.pdf b/language/japanese/pxchfon/sample/sample-pxchfon.pdf Binary files differnew file mode 100644 index 0000000000..38ed09884e --- /dev/null +++ b/language/japanese/pxchfon/sample/sample-pxchfon.pdf diff --git a/language/japanese/pxchfon/sample/sample-pxchfon.tex b/language/japanese/pxchfon/sample/sample-pxchfon.tex new file mode 100644 index 0000000000..504b1eb411 --- /dev/null +++ b/language/japanese/pxchfon/sample/sample-pxchfon.tex @@ -0,0 +1,56 @@ +% 文字コードはUTF-8 (platex -kanji=utf8) +\documentclass[a4paper]{jsarticle} +\usepackage{pxchfon} +\setminchofont[0]{hgrgy.ttc} % HG行書体 +\setgothicfont[0]{hgrpp1.ttc} % HG創英角ポップ体 +\usepackage{otf} + % 箇条書きの番号を丸数字と小文字ローマ数字に +\renewcommand{\theenumi}{\ajLabel\ajMaru{enumi}} +\renewcommand{\labelenumi}{\theenumi} +\renewcommand{\theenumii}{\ajLabel\ajroman{enumii}} +\renewcommand{\labelenumii}{\theenumii} +\begin{document} +\title{pxchfon パッケージ} +\author{ZR} +\date{2009 年 3 月 29 日} +\maketitle + +\section{はじめに} +この文書は pxchfon パッケージの使用例を示したものである。 +このパッケージでは「明朝」「ゴシック」に対応するフォントを +ユーザ指定の日本語フォントに置き換えられる。 +一度インストールしてしまえば、あとは {\LaTeX} 文書内で +フォントファイル名を直接指定することで任意のフォントが使える。 +この文書では明朝を「HG行書体」(hgrgy.ttc)、ゴシックを +\textsf{「HG創英角\aj半角{ホ゜ッフ゜}体」(hgrppl.ttc)}に置き換えている。 + +\section{特徴} +\begin{enumerate} +\item 既定の和文のフォント(明朝・ゴシック)を指定のものに + 置き換える。 + \begin{enumerate} + \item 既定の欧文ファミリ(rmfamily・sffamily)を和文フォントの + 従属欧文に置き換える設定も可能。 + \item 数式フォントは置換されない。 + \end{enumerate} +\item 一度インストールすると、それだけで任意の日本語フォントに + 適用できる。 + \begin{enumerate} + \item しかも和文のみを置き換える場合なら、インストールも簡単。 + \item 置き換えるフォントは、{\LaTeX} 文書内でファイル名で + 指定する。 + \end{enumerate} +\item ただし、等幅のフォントしか利用できない。 + \begin{enumerate} + \item 欧文も等幅(半角)になってしまう。 + \item しかもアクセント付文字・非英語文字( + {\fontfamily{cmr}\selectfont \'e, \ss} 等)が使えない。 + \item 残念。 + \end{enumerate} +\item dvipdfmx 専用。 + \begin{enumerate} + \item 非常に残念。 + \end{enumerate} +\end{enumerate} + +\end{document} diff --git a/language/japanese/pxchfon/tfm/cfjam-r-l0j.tfm b/language/japanese/pxchfon/tfm/cfjam-r-l0j.tfm Binary files differnew file mode 100644 index 0000000000..1ce1eefb59 --- /dev/null +++ b/language/japanese/pxchfon/tfm/cfjam-r-l0j.tfm diff --git a/language/japanese/pxchfon/tfm/cfjam-r-l5j.tfm b/language/japanese/pxchfon/tfm/cfjam-r-l5j.tfm Binary files differnew file mode 100644 index 0000000000..882477d2ca --- /dev/null +++ b/language/japanese/pxchfon/tfm/cfjam-r-l5j.tfm diff --git a/language/japanese/pxchfon/tfm/cfjam-r-t1.tfm b/language/japanese/pxchfon/tfm/cfjam-r-t1.tfm Binary files differnew file mode 100644 index 0000000000..00c6a1e020 --- /dev/null +++ b/language/japanese/pxchfon/tfm/cfjam-r-t1.tfm diff --git a/language/japanese/pxchfon/tfm/cfjam-r-ts1.tfm b/language/japanese/pxchfon/tfm/cfjam-r-ts1.tfm Binary files differnew file mode 100644 index 0000000000..3f56f7e836 --- /dev/null +++ b/language/japanese/pxchfon/tfm/cfjam-r-ts1.tfm diff --git a/language/japanese/pxchfon/tfm/cfjar-b-l0j.tfm b/language/japanese/pxchfon/tfm/cfjar-b-l0j.tfm Binary files differnew file mode 100644 index 0000000000..8ab7c83105 --- /dev/null +++ b/language/japanese/pxchfon/tfm/cfjar-b-l0j.tfm diff --git a/language/japanese/pxchfon/tfm/cfjar-b-l5j.tfm b/language/japanese/pxchfon/tfm/cfjar-b-l5j.tfm Binary files differnew file mode 100644 index 0000000000..1aa122601f --- /dev/null +++ b/language/japanese/pxchfon/tfm/cfjar-b-l5j.tfm diff --git a/language/japanese/pxchfon/tfm/cfjar-b-t1.tfm b/language/japanese/pxchfon/tfm/cfjar-b-t1.tfm Binary files differnew file mode 100644 index 0000000000..93ba9c37b8 --- /dev/null +++ b/language/japanese/pxchfon/tfm/cfjar-b-t1.tfm diff --git a/language/japanese/pxchfon/tfm/cfjar-b-ts1.tfm b/language/japanese/pxchfon/tfm/cfjar-b-ts1.tfm Binary files differnew file mode 100644 index 0000000000..a254dad89f --- /dev/null +++ b/language/japanese/pxchfon/tfm/cfjar-b-ts1.tfm diff --git a/language/japanese/pxchfon/tfm/cfjar-l-l0j.tfm b/language/japanese/pxchfon/tfm/cfjar-l-l0j.tfm Binary files differnew file mode 100644 index 0000000000..8ab7c83105 --- /dev/null +++ b/language/japanese/pxchfon/tfm/cfjar-l-l0j.tfm diff --git a/language/japanese/pxchfon/tfm/cfjar-l-l5j.tfm b/language/japanese/pxchfon/tfm/cfjar-l-l5j.tfm Binary files differnew file mode 100644 index 0000000000..1aa122601f --- /dev/null +++ b/language/japanese/pxchfon/tfm/cfjar-l-l5j.tfm diff --git a/language/japanese/pxchfon/tfm/cfjar-l-t1.tfm b/language/japanese/pxchfon/tfm/cfjar-l-t1.tfm Binary files differnew file mode 100644 index 0000000000..93ba9c37b8 --- /dev/null +++ b/language/japanese/pxchfon/tfm/cfjar-l-t1.tfm diff --git a/language/japanese/pxchfon/tfm/cfjar-l-ts1.tfm b/language/japanese/pxchfon/tfm/cfjar-l-ts1.tfm Binary files differnew file mode 100644 index 0000000000..a254dad89f --- /dev/null +++ b/language/japanese/pxchfon/tfm/cfjar-l-ts1.tfm diff --git a/language/japanese/pxchfon/tfm/cfjar-r-l0j.tfm b/language/japanese/pxchfon/tfm/cfjar-r-l0j.tfm Binary files differnew file mode 100644 index 0000000000..8ab7c83105 --- /dev/null +++ b/language/japanese/pxchfon/tfm/cfjar-r-l0j.tfm diff --git a/language/japanese/pxchfon/tfm/cfjar-r-l5j.tfm b/language/japanese/pxchfon/tfm/cfjar-r-l5j.tfm Binary files differnew file mode 100644 index 0000000000..1aa122601f --- /dev/null +++ b/language/japanese/pxchfon/tfm/cfjar-r-l5j.tfm diff --git a/language/japanese/pxchfon/tfm/cfjar-r-t1.tfm b/language/japanese/pxchfon/tfm/cfjar-r-t1.tfm Binary files differnew file mode 100644 index 0000000000..93ba9c37b8 --- /dev/null +++ b/language/japanese/pxchfon/tfm/cfjar-r-t1.tfm diff --git a/language/japanese/pxchfon/tfm/cfjar-r-ts1.tfm b/language/japanese/pxchfon/tfm/cfjar-r-ts1.tfm Binary files differnew file mode 100644 index 0000000000..a254dad89f --- /dev/null +++ b/language/japanese/pxchfon/tfm/cfjar-r-ts1.tfm diff --git a/language/japanese/pxchfon/tfm/cfjas-b-l0j.tfm b/language/japanese/pxchfon/tfm/cfjas-b-l0j.tfm Binary files differnew file mode 100644 index 0000000000..ef482a497c --- /dev/null +++ b/language/japanese/pxchfon/tfm/cfjas-b-l0j.tfm diff --git a/language/japanese/pxchfon/tfm/cfjas-b-l5j.tfm b/language/japanese/pxchfon/tfm/cfjas-b-l5j.tfm Binary files differnew file mode 100644 index 0000000000..4217e24ead --- /dev/null +++ b/language/japanese/pxchfon/tfm/cfjas-b-l5j.tfm diff --git a/language/japanese/pxchfon/tfm/cfjas-b-t1.tfm b/language/japanese/pxchfon/tfm/cfjas-b-t1.tfm Binary files differnew file mode 100644 index 0000000000..9fb0e93f07 --- /dev/null +++ b/language/japanese/pxchfon/tfm/cfjas-b-t1.tfm diff --git a/language/japanese/pxchfon/tfm/cfjas-b-ts1.tfm b/language/japanese/pxchfon/tfm/cfjas-b-ts1.tfm Binary files differnew file mode 100644 index 0000000000..22ca080736 --- /dev/null +++ b/language/japanese/pxchfon/tfm/cfjas-b-ts1.tfm diff --git a/language/japanese/pxchfon/tfm/cfjas-r-l0j.tfm b/language/japanese/pxchfon/tfm/cfjas-r-l0j.tfm Binary files differnew file mode 100644 index 0000000000..ef482a497c --- /dev/null +++ b/language/japanese/pxchfon/tfm/cfjas-r-l0j.tfm diff --git a/language/japanese/pxchfon/tfm/cfjas-r-l5j.tfm b/language/japanese/pxchfon/tfm/cfjas-r-l5j.tfm Binary files differnew file mode 100644 index 0000000000..4217e24ead --- /dev/null +++ b/language/japanese/pxchfon/tfm/cfjas-r-l5j.tfm diff --git a/language/japanese/pxchfon/tfm/cfjas-r-t1.tfm b/language/japanese/pxchfon/tfm/cfjas-r-t1.tfm Binary files differnew file mode 100644 index 0000000000..9fb0e93f07 --- /dev/null +++ b/language/japanese/pxchfon/tfm/cfjas-r-t1.tfm diff --git a/language/japanese/pxchfon/tfm/cfjas-r-ts1.tfm b/language/japanese/pxchfon/tfm/cfjas-r-ts1.tfm Binary files differnew file mode 100644 index 0000000000..22ca080736 --- /dev/null +++ b/language/japanese/pxchfon/tfm/cfjas-r-ts1.tfm diff --git a/language/japanese/pxchfon/tfm/cfjas-x-l0j.tfm b/language/japanese/pxchfon/tfm/cfjas-x-l0j.tfm Binary files differnew file mode 100644 index 0000000000..ef482a497c --- /dev/null +++ b/language/japanese/pxchfon/tfm/cfjas-x-l0j.tfm diff --git a/language/japanese/pxchfon/tfm/cfjas-x-l5j.tfm b/language/japanese/pxchfon/tfm/cfjas-x-l5j.tfm Binary files differnew file mode 100644 index 0000000000..4217e24ead --- /dev/null +++ b/language/japanese/pxchfon/tfm/cfjas-x-l5j.tfm diff --git a/language/japanese/pxchfon/tfm/cfjas-x-t1.tfm b/language/japanese/pxchfon/tfm/cfjas-x-t1.tfm Binary files differnew file mode 100644 index 0000000000..9fb0e93f07 --- /dev/null +++ b/language/japanese/pxchfon/tfm/cfjas-x-t1.tfm diff --git a/language/japanese/pxchfon/tfm/cfjas-x-ts1.tfm b/language/japanese/pxchfon/tfm/cfjas-x-ts1.tfm Binary files differnew file mode 100644 index 0000000000..22ca080736 --- /dev/null +++ b/language/japanese/pxchfon/tfm/cfjas-x-ts1.tfm diff --git a/language/japanese/pxchfon/tfm/r-cfjam-r-l0j.tfm b/language/japanese/pxchfon/tfm/r-cfjam-r-l0j.tfm Binary files differnew file mode 100644 index 0000000000..b23da58d46 --- /dev/null +++ b/language/japanese/pxchfon/tfm/r-cfjam-r-l0j.tfm diff --git a/language/japanese/pxchfon/tfm/r-cfjam-r-t1.tfm b/language/japanese/pxchfon/tfm/r-cfjam-r-t1.tfm Binary files differnew file mode 100644 index 0000000000..f79c95b877 --- /dev/null +++ b/language/japanese/pxchfon/tfm/r-cfjam-r-t1.tfm diff --git a/language/japanese/pxchfon/tfm/r-cfjam-r-ts1.tfm b/language/japanese/pxchfon/tfm/r-cfjam-r-ts1.tfm Binary files differnew file mode 100644 index 0000000000..d44b375460 --- /dev/null +++ b/language/japanese/pxchfon/tfm/r-cfjam-r-ts1.tfm diff --git a/language/japanese/pxchfon/tfm/r-cfjam-rz-l0j.tfm b/language/japanese/pxchfon/tfm/r-cfjam-rz-l0j.tfm Binary files differnew file mode 100644 index 0000000000..9666a37fc6 --- /dev/null +++ b/language/japanese/pxchfon/tfm/r-cfjam-rz-l0j.tfm diff --git a/language/japanese/pxchfon/tfm/r-cfjar-b-l0j.tfm b/language/japanese/pxchfon/tfm/r-cfjar-b-l0j.tfm Binary files differnew file mode 100644 index 0000000000..c9f89c5480 --- /dev/null +++ b/language/japanese/pxchfon/tfm/r-cfjar-b-l0j.tfm diff --git a/language/japanese/pxchfon/tfm/r-cfjar-b-t1.tfm b/language/japanese/pxchfon/tfm/r-cfjar-b-t1.tfm Binary files differnew file mode 100644 index 0000000000..7e0c5dc73b --- /dev/null +++ b/language/japanese/pxchfon/tfm/r-cfjar-b-t1.tfm diff --git a/language/japanese/pxchfon/tfm/r-cfjar-b-ts1.tfm b/language/japanese/pxchfon/tfm/r-cfjar-b-ts1.tfm Binary files differnew file mode 100644 index 0000000000..0ff306f220 --- /dev/null +++ b/language/japanese/pxchfon/tfm/r-cfjar-b-ts1.tfm diff --git a/language/japanese/pxchfon/tfm/r-cfjar-bz-l0j.tfm b/language/japanese/pxchfon/tfm/r-cfjar-bz-l0j.tfm Binary files differnew file mode 100644 index 0000000000..b6f4d38b55 --- /dev/null +++ b/language/japanese/pxchfon/tfm/r-cfjar-bz-l0j.tfm diff --git a/language/japanese/pxchfon/tfm/r-cfjar-l-l0j.tfm b/language/japanese/pxchfon/tfm/r-cfjar-l-l0j.tfm Binary files differnew file mode 100644 index 0000000000..c9f89c5480 --- /dev/null +++ b/language/japanese/pxchfon/tfm/r-cfjar-l-l0j.tfm diff --git a/language/japanese/pxchfon/tfm/r-cfjar-l-t1.tfm b/language/japanese/pxchfon/tfm/r-cfjar-l-t1.tfm Binary files differnew file mode 100644 index 0000000000..7e0c5dc73b --- /dev/null +++ b/language/japanese/pxchfon/tfm/r-cfjar-l-t1.tfm diff --git a/language/japanese/pxchfon/tfm/r-cfjar-l-ts1.tfm b/language/japanese/pxchfon/tfm/r-cfjar-l-ts1.tfm Binary files differnew file mode 100644 index 0000000000..0ff306f220 --- /dev/null +++ b/language/japanese/pxchfon/tfm/r-cfjar-l-ts1.tfm diff --git a/language/japanese/pxchfon/tfm/r-cfjar-lz-l0j.tfm b/language/japanese/pxchfon/tfm/r-cfjar-lz-l0j.tfm Binary files differnew file mode 100644 index 0000000000..7a0d9dd3a7 --- /dev/null +++ b/language/japanese/pxchfon/tfm/r-cfjar-lz-l0j.tfm diff --git a/language/japanese/pxchfon/tfm/r-cfjar-r-l0j.tfm b/language/japanese/pxchfon/tfm/r-cfjar-r-l0j.tfm Binary files differnew file mode 100644 index 0000000000..c9f89c5480 --- /dev/null +++ b/language/japanese/pxchfon/tfm/r-cfjar-r-l0j.tfm diff --git a/language/japanese/pxchfon/tfm/r-cfjar-r-t1.tfm b/language/japanese/pxchfon/tfm/r-cfjar-r-t1.tfm Binary files differnew file mode 100644 index 0000000000..7e0c5dc73b --- /dev/null +++ b/language/japanese/pxchfon/tfm/r-cfjar-r-t1.tfm diff --git a/language/japanese/pxchfon/tfm/r-cfjar-r-ts1.tfm b/language/japanese/pxchfon/tfm/r-cfjar-r-ts1.tfm Binary files differnew file mode 100644 index 0000000000..0ff306f220 --- /dev/null +++ b/language/japanese/pxchfon/tfm/r-cfjar-r-ts1.tfm diff --git a/language/japanese/pxchfon/tfm/r-cfjar-rz-l0j.tfm b/language/japanese/pxchfon/tfm/r-cfjar-rz-l0j.tfm Binary files differnew file mode 100644 index 0000000000..4ba4409204 --- /dev/null +++ b/language/japanese/pxchfon/tfm/r-cfjar-rz-l0j.tfm diff --git a/language/japanese/pxchfon/tfm/r-cfjas-b-l0j.tfm b/language/japanese/pxchfon/tfm/r-cfjas-b-l0j.tfm Binary files differnew file mode 100644 index 0000000000..1ce191cd79 --- /dev/null +++ b/language/japanese/pxchfon/tfm/r-cfjas-b-l0j.tfm diff --git a/language/japanese/pxchfon/tfm/r-cfjas-b-t1.tfm b/language/japanese/pxchfon/tfm/r-cfjas-b-t1.tfm Binary files differnew file mode 100644 index 0000000000..9a821a75fe --- /dev/null +++ b/language/japanese/pxchfon/tfm/r-cfjas-b-t1.tfm diff --git a/language/japanese/pxchfon/tfm/r-cfjas-b-ts1.tfm b/language/japanese/pxchfon/tfm/r-cfjas-b-ts1.tfm Binary files differnew file mode 100644 index 0000000000..43fc0c144b --- /dev/null +++ b/language/japanese/pxchfon/tfm/r-cfjas-b-ts1.tfm diff --git a/language/japanese/pxchfon/tfm/r-cfjas-bz-l0j.tfm b/language/japanese/pxchfon/tfm/r-cfjas-bz-l0j.tfm Binary files differnew file mode 100644 index 0000000000..6ff8357a11 --- /dev/null +++ b/language/japanese/pxchfon/tfm/r-cfjas-bz-l0j.tfm diff --git a/language/japanese/pxchfon/tfm/r-cfjas-r-l0j.tfm b/language/japanese/pxchfon/tfm/r-cfjas-r-l0j.tfm Binary files differnew file mode 100644 index 0000000000..1ce191cd79 --- /dev/null +++ b/language/japanese/pxchfon/tfm/r-cfjas-r-l0j.tfm diff --git a/language/japanese/pxchfon/tfm/r-cfjas-r-t1.tfm b/language/japanese/pxchfon/tfm/r-cfjas-r-t1.tfm Binary files differnew file mode 100644 index 0000000000..9a821a75fe --- /dev/null +++ b/language/japanese/pxchfon/tfm/r-cfjas-r-t1.tfm diff --git a/language/japanese/pxchfon/tfm/r-cfjas-r-ts1.tfm b/language/japanese/pxchfon/tfm/r-cfjas-r-ts1.tfm Binary files differnew file mode 100644 index 0000000000..43fc0c144b --- /dev/null +++ b/language/japanese/pxchfon/tfm/r-cfjas-r-ts1.tfm diff --git a/language/japanese/pxchfon/tfm/r-cfjas-rz-l0j.tfm b/language/japanese/pxchfon/tfm/r-cfjas-rz-l0j.tfm Binary files differnew file mode 100644 index 0000000000..8754540826 --- /dev/null +++ b/language/japanese/pxchfon/tfm/r-cfjas-rz-l0j.tfm diff --git a/language/japanese/pxchfon/tfm/r-cfjas-x-l0j.tfm b/language/japanese/pxchfon/tfm/r-cfjas-x-l0j.tfm Binary files differnew file mode 100644 index 0000000000..1ce191cd79 --- /dev/null +++ b/language/japanese/pxchfon/tfm/r-cfjas-x-l0j.tfm diff --git a/language/japanese/pxchfon/tfm/r-cfjas-x-t1.tfm b/language/japanese/pxchfon/tfm/r-cfjas-x-t1.tfm Binary files differnew file mode 100644 index 0000000000..9a821a75fe --- /dev/null +++ b/language/japanese/pxchfon/tfm/r-cfjas-x-t1.tfm diff --git a/language/japanese/pxchfon/tfm/r-cfjas-x-ts1.tfm b/language/japanese/pxchfon/tfm/r-cfjas-x-ts1.tfm Binary files differnew file mode 100644 index 0000000000..43fc0c144b --- /dev/null +++ b/language/japanese/pxchfon/tfm/r-cfjas-x-ts1.tfm diff --git a/language/japanese/pxchfon/tfm/r-cfjas-xz-l0j.tfm b/language/japanese/pxchfon/tfm/r-cfjas-xz-l0j.tfm Binary files differnew file mode 100644 index 0000000000..ed424d178f --- /dev/null +++ b/language/japanese/pxchfon/tfm/r-cfjas-xz-l0j.tfm diff --git a/language/japanese/pxchfon/vf/cfjam-r-l0j.vf b/language/japanese/pxchfon/vf/cfjam-r-l0j.vf Binary files differnew file mode 100644 index 0000000000..95662b4788 --- /dev/null +++ b/language/japanese/pxchfon/vf/cfjam-r-l0j.vf diff --git a/language/japanese/pxchfon/vf/cfjam-r-l5j.vf b/language/japanese/pxchfon/vf/cfjam-r-l5j.vf Binary files differnew file mode 100644 index 0000000000..1a4112d7d9 --- /dev/null +++ b/language/japanese/pxchfon/vf/cfjam-r-l5j.vf diff --git a/language/japanese/pxchfon/vf/cfjam-r-t1.vf b/language/japanese/pxchfon/vf/cfjam-r-t1.vf Binary files differnew file mode 100644 index 0000000000..29229d696b --- /dev/null +++ b/language/japanese/pxchfon/vf/cfjam-r-t1.vf diff --git a/language/japanese/pxchfon/vf/cfjam-r-ts1.vf b/language/japanese/pxchfon/vf/cfjam-r-ts1.vf Binary files differnew file mode 100644 index 0000000000..713d1293c3 --- /dev/null +++ b/language/japanese/pxchfon/vf/cfjam-r-ts1.vf diff --git a/language/japanese/pxchfon/vf/cfjar-b-l0j.vf b/language/japanese/pxchfon/vf/cfjar-b-l0j.vf Binary files differnew file mode 100644 index 0000000000..691e35568d --- /dev/null +++ b/language/japanese/pxchfon/vf/cfjar-b-l0j.vf diff --git a/language/japanese/pxchfon/vf/cfjar-b-l5j.vf b/language/japanese/pxchfon/vf/cfjar-b-l5j.vf Binary files differnew file mode 100644 index 0000000000..3e0fcb098a --- /dev/null +++ b/language/japanese/pxchfon/vf/cfjar-b-l5j.vf diff --git a/language/japanese/pxchfon/vf/cfjar-b-t1.vf b/language/japanese/pxchfon/vf/cfjar-b-t1.vf Binary files differnew file mode 100644 index 0000000000..4314f1be8e --- /dev/null +++ b/language/japanese/pxchfon/vf/cfjar-b-t1.vf diff --git a/language/japanese/pxchfon/vf/cfjar-b-ts1.vf b/language/japanese/pxchfon/vf/cfjar-b-ts1.vf Binary files differnew file mode 100644 index 0000000000..9ed12d5a7e --- /dev/null +++ b/language/japanese/pxchfon/vf/cfjar-b-ts1.vf diff --git a/language/japanese/pxchfon/vf/cfjar-l-l0j.vf b/language/japanese/pxchfon/vf/cfjar-l-l0j.vf Binary files differnew file mode 100644 index 0000000000..f1446f879a --- /dev/null +++ b/language/japanese/pxchfon/vf/cfjar-l-l0j.vf diff --git a/language/japanese/pxchfon/vf/cfjar-l-l5j.vf b/language/japanese/pxchfon/vf/cfjar-l-l5j.vf Binary files differnew file mode 100644 index 0000000000..a0eff1a30b --- /dev/null +++ b/language/japanese/pxchfon/vf/cfjar-l-l5j.vf diff --git a/language/japanese/pxchfon/vf/cfjar-l-t1.vf b/language/japanese/pxchfon/vf/cfjar-l-t1.vf Binary files differnew file mode 100644 index 0000000000..9327d0ca2b --- /dev/null +++ b/language/japanese/pxchfon/vf/cfjar-l-t1.vf diff --git a/language/japanese/pxchfon/vf/cfjar-l-ts1.vf b/language/japanese/pxchfon/vf/cfjar-l-ts1.vf Binary files differnew file mode 100644 index 0000000000..22d88d661b --- /dev/null +++ b/language/japanese/pxchfon/vf/cfjar-l-ts1.vf diff --git a/language/japanese/pxchfon/vf/cfjar-r-l0j.vf b/language/japanese/pxchfon/vf/cfjar-r-l0j.vf Binary files differnew file mode 100644 index 0000000000..6caaca72d5 --- /dev/null +++ b/language/japanese/pxchfon/vf/cfjar-r-l0j.vf diff --git a/language/japanese/pxchfon/vf/cfjar-r-l5j.vf b/language/japanese/pxchfon/vf/cfjar-r-l5j.vf Binary files differnew file mode 100644 index 0000000000..baa61e9ea5 --- /dev/null +++ b/language/japanese/pxchfon/vf/cfjar-r-l5j.vf diff --git a/language/japanese/pxchfon/vf/cfjar-r-t1.vf b/language/japanese/pxchfon/vf/cfjar-r-t1.vf Binary files differnew file mode 100644 index 0000000000..051349ff3c --- /dev/null +++ b/language/japanese/pxchfon/vf/cfjar-r-t1.vf diff --git a/language/japanese/pxchfon/vf/cfjar-r-ts1.vf b/language/japanese/pxchfon/vf/cfjar-r-ts1.vf Binary files differnew file mode 100644 index 0000000000..dd01810657 --- /dev/null +++ b/language/japanese/pxchfon/vf/cfjar-r-ts1.vf diff --git a/language/japanese/pxchfon/vf/cfjas-b-l0j.vf b/language/japanese/pxchfon/vf/cfjas-b-l0j.vf Binary files differnew file mode 100644 index 0000000000..b8d611659d --- /dev/null +++ b/language/japanese/pxchfon/vf/cfjas-b-l0j.vf diff --git a/language/japanese/pxchfon/vf/cfjas-b-l5j.vf b/language/japanese/pxchfon/vf/cfjas-b-l5j.vf Binary files differnew file mode 100644 index 0000000000..ae1b994ccb --- /dev/null +++ b/language/japanese/pxchfon/vf/cfjas-b-l5j.vf diff --git a/language/japanese/pxchfon/vf/cfjas-b-t1.vf b/language/japanese/pxchfon/vf/cfjas-b-t1.vf Binary files differnew file mode 100644 index 0000000000..8370253a7c --- /dev/null +++ b/language/japanese/pxchfon/vf/cfjas-b-t1.vf diff --git a/language/japanese/pxchfon/vf/cfjas-b-ts1.vf b/language/japanese/pxchfon/vf/cfjas-b-ts1.vf Binary files differnew file mode 100644 index 0000000000..52742ece27 --- /dev/null +++ b/language/japanese/pxchfon/vf/cfjas-b-ts1.vf diff --git a/language/japanese/pxchfon/vf/cfjas-r-l0j.vf b/language/japanese/pxchfon/vf/cfjas-r-l0j.vf Binary files differnew file mode 100644 index 0000000000..f3b60a2537 --- /dev/null +++ b/language/japanese/pxchfon/vf/cfjas-r-l0j.vf diff --git a/language/japanese/pxchfon/vf/cfjas-r-l5j.vf b/language/japanese/pxchfon/vf/cfjas-r-l5j.vf Binary files differnew file mode 100644 index 0000000000..51b6b8c6cf --- /dev/null +++ b/language/japanese/pxchfon/vf/cfjas-r-l5j.vf diff --git a/language/japanese/pxchfon/vf/cfjas-r-t1.vf b/language/japanese/pxchfon/vf/cfjas-r-t1.vf Binary files differnew file mode 100644 index 0000000000..bf1e491fd1 --- /dev/null +++ b/language/japanese/pxchfon/vf/cfjas-r-t1.vf diff --git a/language/japanese/pxchfon/vf/cfjas-r-ts1.vf b/language/japanese/pxchfon/vf/cfjas-r-ts1.vf Binary files differnew file mode 100644 index 0000000000..0bbe6b763b --- /dev/null +++ b/language/japanese/pxchfon/vf/cfjas-r-ts1.vf diff --git a/language/japanese/pxchfon/vf/cfjas-x-l0j.vf b/language/japanese/pxchfon/vf/cfjas-x-l0j.vf Binary files differnew file mode 100644 index 0000000000..c1314dbd50 --- /dev/null +++ b/language/japanese/pxchfon/vf/cfjas-x-l0j.vf diff --git a/language/japanese/pxchfon/vf/cfjas-x-l5j.vf b/language/japanese/pxchfon/vf/cfjas-x-l5j.vf Binary files differnew file mode 100644 index 0000000000..c3a8db3bfb --- /dev/null +++ b/language/japanese/pxchfon/vf/cfjas-x-l5j.vf diff --git a/language/japanese/pxchfon/vf/cfjas-x-t1.vf b/language/japanese/pxchfon/vf/cfjas-x-t1.vf Binary files differnew file mode 100644 index 0000000000..98fc3f1211 --- /dev/null +++ b/language/japanese/pxchfon/vf/cfjas-x-t1.vf diff --git a/language/japanese/pxchfon/vf/cfjas-x-ts1.vf b/language/japanese/pxchfon/vf/cfjas-x-ts1.vf Binary files differnew file mode 100644 index 0000000000..d6e314825b --- /dev/null +++ b/language/japanese/pxchfon/vf/cfjas-x-ts1.vf |