From 4931885dfd0ba77dba495413098ad4b1a32748ff Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Tue, 29 Aug 2023 23:20:18 +0000 Subject: pxchfon (30aug23) git-svn-id: svn://tug.org/texlive/trunk@68103 c570f23f-e606-0410-a88d-b1316a301751 --- Master/texmf-dist/doc/platex/pxchfon/README-ja.md | 43 +- Master/texmf-dist/doc/platex/pxchfon/README.md | 15 + Master/texmf-dist/doc/platex/pxchfon/pxchfon.pdf | Bin 263472 -> 272287 bytes Master/texmf-dist/doc/platex/pxchfon/pxchfon.tex | 236 +++++--- Master/texmf-dist/tex/platex/pxchfon/pxchfon.sty | 690 +++++++++++----------- Master/texmf-dist/tex/platex/pxchfon/pxjafont.sty | 24 - 6 files changed, 521 insertions(+), 487 deletions(-) delete mode 100644 Master/texmf-dist/tex/platex/pxchfon/pxjafont.sty (limited to 'Master/texmf-dist') diff --git a/Master/texmf-dist/doc/platex/pxchfon/README-ja.md b/Master/texmf-dist/doc/platex/pxchfon/README-ja.md index ed76bf0f822..ee6573018ce 100644 --- a/Master/texmf-dist/doc/platex/pxchfon/README-ja.md +++ b/Master/texmf-dist/doc/platex/pxchfon/README-ja.md @@ -3,25 +3,28 @@ PXchfon パッケージバンドル LaTeX: pLaTeX/upLateX における日本語フォント設定 -pLaTeX / upLaTeX の文書の標準のフォント(明朝・ゴシック)をユーザ指定の -ものに置き換える。dvipdfmx 専用である。他のフォント追加パッケージと -異なり、追加するフォントを LaTeX 文書中で指定するので、一度パッケージ -をインストールするだけで、任意の日本語フォント(ただし等幅に限る)を -使うことができる。欧文部分を同じ日本語フォントで置き換えることも可能で -ある。UTF / OTF パッケージにも対応している。 +pLaTeX/upLaTeX+dvipdfmx のワークフローで PDF 文書を作る場合に、標準の +和文フォント(明朝・ゴシック)に対して実際に使われる OpenTypeフォントを +ユーザが指定する機能を提供する。使用するフォントを LaTeX 文書中で指定 +するので、一度パッケージをインストールするだけで、任意の日本語フォント +(ただし等幅に限る)を使うことができる。 -0.5 版での拡張で、pTeX において広く行われているフォント設定(IPA フォント -の使用等)をパッケージオプション一つで行う機能を追加した。この機能は元々、 -別の PXjafont パッケージとして提供されていたものである。 +japanese-otf パッケージにも対応している。 + +また、upLaTeX において広く行われているフォント設定(IPA フォントの仕様 +等)をパッケージオプション一つで行う機能(プリセット指定)も備えている。 ### 前提環境 * フォーマット: LaTeX - * エンジン: pTeX、upTeX + * エンジン: + - pTeX: 3.0 版以降 + - upTeX: 0.10 版以降 + ※一部の機能は e-TeX 拡張を必要とする。 * DVIウェア: dvipdfmx * 依存パッケージ: - - atbegshi パッケージ(`everypage` オプション使用時) - - pxufont パッケージ(`unicode` オプション使用時) + - atbegshi パッケージ: `everypage` オプション使用時 + - pxufont パッケージ: `unicode` オプション使用時 ### インストール @@ -54,6 +57,22 @@ MITライセンスの下で配布される。 更新履歴 -------- + * Version 2.0 ‹2023/08/28› + - keyval パッケージを使用する。 + - Unicode 直接指定のオプションを key-value 形式の `unicode` キーに + 統一する。(旧形式も当面は使用可能。) + - オプション `(no)fullwidth` を追加。 + ※試験的機能のオプション `unicode(*)-fwid` は廃止。 + - オプション `legacycode` を追加。 + ※試験的機能の旧型式オプションは廃止。 + - オプション `legacycode-replace` を追加。 + - プリセット非指定時の `(no)alphabet` の省略を非推奨とする。 + - 多ウェイト用のユーザ命令が用いられたのに japanese-otf の `deluxe` + が有効でない場合は警告を出す。 + - オプション `maybe-multiweight` を追加。 + - `\asUTF` 命令を廃止。 + - `unicode*` オプションを廃止。 + - pxjafont パッケージを廃止。 * Version 1.9b ‹2023/08/18› - (試験的) jfmsync 機能。 * Version 1.9a ‹2023/02/22› diff --git a/Master/texmf-dist/doc/platex/pxchfon/README.md b/Master/texmf-dist/doc/platex/pxchfon/README.md index 88c85f255c9..6cd05a265c9 100644 --- a/Master/texmf-dist/doc/platex/pxchfon/README.md +++ b/Master/texmf-dist/doc/platex/pxchfon/README.md @@ -39,6 +39,21 @@ This package is distributed under the MIT License. Revision History ---------------- + * Version 2.0 ‹2023/08/28› + - Use keyval package. + - Now options on direct-Unicode settings are provided as a single + key-value option `unicode`. (The old options are also supported.) + - New option `(no)fullwidth`. + (Experimental option `unicode(*)-fwid` is removed.) + - New options `legacycode` and `legacycode-replace`. + (Old experimental options on “legacycode” are removed.) + - Warn if `(no)alphabet` is omitted without using a preset. + - Warn if user commands on multi-weight are used without employing + `deluxe` option of japanese-otf package. + - New option `maybe-multiweight`. + - Abolish command `\asUTF`. + - Abolish option `unicode*`. + - Abolish pxjafont package. * Version 1.9b ‹2023/08/18› - (Experimental) Add “jfmsync” feature. * Version 1.9a ‹2023/02/22› diff --git a/Master/texmf-dist/doc/platex/pxchfon/pxchfon.pdf b/Master/texmf-dist/doc/platex/pxchfon/pxchfon.pdf index 277f31af6b1..10ce88b39dd 100644 Binary files a/Master/texmf-dist/doc/platex/pxchfon/pxchfon.pdf and b/Master/texmf-dist/doc/platex/pxchfon/pxchfon.pdf differ diff --git a/Master/texmf-dist/doc/platex/pxchfon/pxchfon.tex b/Master/texmf-dist/doc/platex/pxchfon/pxchfon.tex index 2a33dd19a06..b58048a15ba 100644 --- a/Master/texmf-dist/doc/platex/pxchfon/pxchfon.tex +++ b/Master/texmf-dist/doc/platex/pxchfon/pxchfon.tex @@ -13,11 +13,11 @@ pdftitle={pxchfonパッケージ}, pdfauthor={八登崇之}} \usepackage{bxtexlogo} -\bxtexlogoimport{*} +\bxtexlogoimport{*,logo-e} \usepackage{shortvrb} \MakeShortVerb{\|} -\newcommand{\PkgVersion}{1.9b} -\newcommand{\PkgDate}{2023/08/18} +\newcommand{\PkgVersion}{2.0} +\newcommand{\PkgDate}{2023/08/28} \newcommand{\Pkg}[1]{\textsf{#1}} \newcommand{\Meta}[1]{$\langle$\mbox{}#1\mbox{}$\rangle$} \newcommand{\Note}{\par\noindent ※} @@ -34,6 +34,7 @@ %=========================================================== \section{概要} +\label{sec:Introduction} {\pLaTeX}/{\upLaTeX}+dvipdfmxのワークフローでPDF文書を作る場合に、 標準の和文フォント(明朝・ゴシック)に対して実際に使われる @@ -55,12 +56,18 @@ OpenTypeフォントをユーザが指定する機能を提供する。 %=========================================================== \section{前提環境} +\label{sec:Prerequisites} \begin{itemize} \item {\TeX}フォーマット\Means {\LaTeX} -\item {\TeX}エンジン\Means {\pTeX}/{\upTeX} +\item {\TeX}エンジン\Means + \begin{itemize} + \item \pTeX(3.0版以降) + \item \upTeX(0.10版以降) + \end{itemize} + \Note 一部の機能は{\eTeX}拡張を必要とする。 \item DVIウェア\Means dvipdfmx - (詳細は\ref{sec:Loading}節参照) + (詳細は\ref{sec:Loading}節と\ref{sec:Other-Drivers}を参照) \item 前提パッケージ\Means \begin{itemize} \item \Pkg{atbegshi}パッケージ(|everypage| オプション使用時) @@ -90,7 +97,7 @@ OpenTypeフォントをユーザが指定する機能を提供する。 \footnote{現状では、|dvipdfmx| 以外のドライバ指定は 全て |nodvidriver| と等価である。}% 他のDVIウェアにおける動作については - \ref{sec:Other-Drivers}節を参照。 + \ref{sec:Other-Drivers}を参照。 ドライバオプションの既定値は |dvipdfmx| である。 \item \Strong{プリセット指定オプション}(|ms|、|haranoaji| 等) 名前に対応するプリセット指定を有効にする。 @@ -111,29 +118,38 @@ OpenTypeフォントをユーザが指定する機能を提供する。 指定のマップファイルを読み込む」ことを指示する。 \Note 詳細については\ref{sec:MapFileLoad}節を参照。 \item |alphabet|\Means - 欧文フォントも指定されたフォントの英数字部分で置き換える。 + 欧文フォントも(本パッケージの機能で) + 指定されたフォントの英数字部分で置き換える。 (明朝が |\rmfamily|、ゴシックが |\sffamily| に適用される。) \Note 技術的制約のため \footnote{プロポーショナル幅のフォントを使うためには、 - そのフォントに合わせた{\TeX}側の論理フォント(TFM)を + そのフォントの字幅に合わせた{\TeX}側の論理フォント(TFM)を 事前に用意する必要があるため。 和文が全角幅しか使えないのも同じ理由である。}、 \Strong{半角等幅のフォント}しかサポートされないことに注意してほしい。 つまり、この設定を使うと欧文が全て等幅になってしまう。 「部分的に欧文フォントを和文フォントに合わせたい」という場合は、 後述の |relfont| オプションの使用も検討されたい。 - \Note プリセット指定オプション\Strong{不使用}の場合は - こちらが既定で有効になる。 - すなわち\Strong{欧文フォントも置き換えられる}。 \item |noalphabet|\Means |alphabet| の否定。 欧文フォントは変更しない。 % インストール時に欧文用の設定をしていない場合は必ずこれを % 指定する必要がある。 - \Note プリセット指定オプション使用の場合はこちらが既定で有効になる。 + \Note |alphabet| と |noalphabet| と後述の |relfont| の3つの + オプションは排他である。 + プリセット指定オプション\Strong{使用}の場合は、 + このうち |noalphabet| が既定で有効になる。 + プリセット指定オプション\Strong{不使用}の場合は、 + 以前の版では |alphabet| が既定になっていた。 + 今でもこの動作は維持されているが、 + 2.0版以降はこの既定設定を利用することは\Strong{非推奨}% + \footnote{プリセット指定オプションの有無により既定が変わる仕様は + 好ましくないため。}% + となり、プリセット不使用の場合は + 3つのオプションの何れかを指定することが推奨される。 \item |otf|(既定)\Means \Pkg{japanese-otf}パッケージの使用時に、 - そのフォントも置き換えの対象とする。 + そのフォントも置換の対象とする。 \item |nootf|\Means |otf| の否定。 \Pkg{japanese-otf}パッケージのフォントは置き換えない。 @@ -196,50 +212,22 @@ OpenTypeフォントをユーザが指定する機能を提供する。 \item |noeverypage|(既定)\Means |everypage|の否定。 出力DVIの先頭ページにのみフォントマップ設定を書き込む。 -\item \Strong{Unicode直接指定オプション}\Means +\item |unicode|[|=|\Meta{値}]\Means + Unicode直接指定。 一部または全部のフォントについて、エンコーディング指定方式を “CMap指定”から“Unicode直接指定”に変更する。 - |nodirectunicode|(既定:CMap設定のまま)、 - |directunicode|、|directunicode*|、 - |unicode*|、|unicode| の5種類の指定がある。 + 有効な値は |false|(既定)、|UTF|、|simple|、|full| の4つである。 + 値を省略して「|unicode|」だけ書いた場合は |full| が指定される。 \Note 詳細については\ref{sec:DirectUnicode}節を参照。 \Note 一部のプリセット指定(|sourcehan|等)は - Unicode直接指定の既定値を変更する。 + |unicode| の既定値を変更する。 \Note Unicode直接指定を有効にするオプションを指定しても、 置換されて\Strong{いない}ウェイトはUnicode直接指定にならない。 (詳しくは\ref{ssec:DirectUnicodeNotice}節の注意を参照。) -%\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フォントの場合、既定では \footnote{|unicode| オプションが指定されない場合。}% @@ -247,7 +235,7 @@ OpenTypeフォントをユーザが指定する機能を提供する。 このオプションを指定して半角幅のものを使う必要がある。 \item |nousecmapforalphabet|(既定)\Means |usecmapforalphabet| の否定。 - \Note 和文と異なり、欧文フォントでは実質的に“Unicode直接指定”の方が + \Note 和文と異なり、欧文フォントでは実質的にUnicode直接指定の方が 既定となっている。 \Note 一部のプリセット指定は |usecmapforalphabet| の指定を強制する。 \item |dumpmap|\Means @@ -282,12 +270,44 @@ OpenTypeフォントをユーザが指定する機能を提供する。 しかし、CFFグリフのフォントに対してCSI指定があっても特に問題は 起こらず、また、フォントのグリフ種別の判断する処理は少し時間が かかるため、既定では厳密な判定は行わない。 + \Note 2014/05/06以降の版の{\logoe-(u)\pTeX}が必要である。 \item |nostrictcsi|(既定)\Means |strictcsi| の否定。 |Identity-H|/|-V| に対するCSI指定は常に出力される。 \Note さすがにファイルに出力されたマップ行に不備があるのは 避けたいので、|dumpmap(tl)| が指定された場合は、 既定が |strictcsi| に変更される。 +\item |fullwidth|\Means + Unicode直接指定が有効である場合に、 + 全角幅のグリフを優先させる。 + \Note 全角幅想定の文字が使える可能性が増えるという利点がある一方で、 + 半角幅想定の文字が使える可能性が減るという欠点もある。 +\item |nofullwidth|(既定)\Means + |fullwidth| の否定。 +\item |legacycode=|\Meta{値}\Means + Unicode直接指定を全体に採用した場合 + \footnote{つまり、|unicode| オプションの値が |simple| + または |full| である場合。 + ただし現状では |unicode| の値がこれ以外の場合でも |legacycode| + の値は設定可能であるが、恐らく既定の |apply| 以外の設定は + 無益であろう。}% + にエンコーディングがUnicodeではない原メトリック和文TFMに関する + マップ行に対する取扱を規定する。 + 有効な値は以下の通り\Means + \begin{itemize} + \item |apply|(既定)\Means + “CMap指定”のマップ行を出力する。 + \item |ignore|\Means + マップ行を出力しない。 + \item |suppress|\Means + 当該のTFMの無効化を指示するマップ行を出力する。 + \end{itemize} + \Note |legacycode-replace| が真の場合は既定値が |suppress| に + 変更される。 +\item |legacycode-replace=|\Meta{真偽値}\Means + \Pkg{pxufont}パッケージを読み込んで、原メトリック和文TFMについて + エンコーディングがUnicodeのもののみが利用されるようにする。 + 既定値は偽だが、|unicode| オプションが |full| の場合は真に変更される。 \item |expert|(既定)\Means Unicode直接指定が有効な場合 に\Pkg{japanese-otf}の |expert| オプション @@ -302,10 +322,20 @@ OpenTypeフォントをユーザが指定する機能を提供する。 が有効の場合にのみ利用できる。 \item |noglyphid|(既定)\Means |glyphid| の否定。 +\item |maybe-multiweight|\Means + 「|deluxe| オプション付きの\Pkg{japanese-otf}パッケージが読み込まれて + いないにもかかわらず多ウェイト用のフォント設定命令が使われた」 + 際に出る警告を抑止する。% + \footnote{例えば + 「単ウェイト・多ウェイト兼用を意図したフォント設定命令を + テンプレートに記述している」 + 「\Pkg{japanese-otf}以外でその和文TFMを流用している」 + などの状況を想定している。} \end{itemize} %=========================================================== \section{機能} +\label{sec:Usage} 以下に該当する和文(CJK)用の論理フォント(原メトリックTFM)について、 それに対応する物理フォント(OpenTypeフォント)を @@ -438,17 +468,13 @@ OpenTypeフォントをユーザが指定する機能を提供する。 \Note pdf{\TeX}の |\pdfmapline| に相当する機能。 \item |\diruni|\Means 現在の和文フォントを“Unicode直接入力” - (フォントマップを“Unicode直接指定”にした上で + (フォントマップをUnicode直接指定にした上で さらに和文VFをバイパスする) の状態に切り替える(宣言型命令)。 これにより、実際のフォントに存在する任意の全角幅の 文字が出力可能となる。 その代わり、この状態では、約物の周りの空き調整が無効になる。 -% 詳細については\ref{sec:Loading}節の |directunicode| オプションの -% 説明を参照されたい。 - \Note “Unicode直接指定”のオプションの何れか - (|unicode|等)が有効であり、 - かつ現在の和文ファミリについてフォントの置き換えが有効に + \Note 現在のウェイトについてUnicode直接指定が有効に なっている必要がある。 \Note この命令自体は単にNFSSのシェープ値を |diruni| という値に変えて いるだけであり、このシェープに“Unicode直接入力”のフォントが @@ -459,8 +485,7 @@ OpenTypeフォントをユーザが指定する機能を提供する。 現在の和文フォントで、指定の値のGIDをもつグリフを出力する。 \Note 全角幅のグリフでないと正常に出力されない。 \Note エンジンが{\upLaTeX}であり、 - |unicode| オプションが指定されていて、かつ、 - 現在の和文ファミリについてフォントの置き換えが有効に + かつ、現在のウェイトについてUnicode直接指定が 有効になっている必要がある。 \end{itemize} @@ -471,14 +496,14 @@ OpenTypeフォントをユーザが指定する機能を提供する。 このパッケージの元々の意図は、標準のフォントを 普段使っているものと全く別の書体に変えることであったが、 例えば「普段使う設定が複数ありそれを簡単に切り替えたい」という -場合にも有用である。 -そこで、{\pTeX}において広く行われている設定をパッケージ内に +場合にも有用であることがわかった。 +そこで、{(u)\pLaTeX}において広く行われている設定をパッケージ内に 組み込んで、パッケージオプションでそれを呼び出すという機能が 後になって追加された。 \footnote{元々は\Pkg{pxjafont}という別のパッケージで 提供されていた機能であるが、 0.5版からこのパッケージに組み入れることにした。 -詳しくは付録\ref{sec:Pkg-pxjafont}を参照。} +詳しくは\ref{sec:Package-pxjafont}を参照。} パッケージオプションにプリセット名を指定すると予め決められたフォント ファイル名が |\setminchofont| 等の命令で設定される。 @@ -737,6 +762,8 @@ OpenTypeフォントをユーザが指定する機能を提供する。 \setxboldgothicfont[3]{HiraginoSans-W8.ttc} \setmarugothicfont[1]{HiraginoSansR-W4.ttc} \end{verbatim}\end{quote} +\Note 「新しいmacOSのヒラギノフォント」用のプリセットについては + \ref{ssec:Package-pxchfon-extras}節を参照されたい。 \item |morisawa-pro|\Means モリサワフォント基本7書体(Pro版)。 @@ -924,6 +951,7 @@ OpenTypeフォントをユーザが指定する機能を提供する。 %------------------- \subsection{pxchfon-extrasパッケージ} +\label{ssec:Package-pxchfon-extras} 本パッケージの方針として、 「プロプライエタリなフォントを利用するためのプリセット設定」 @@ -979,6 +1007,24 @@ OpenTypeフォントをユーザが指定する機能を提供する。 \item |hiragino-dx|\Means |hiragino-pro| の別名。 \end{itemize} +以下に挙げるプリセット設定は{\TeX}~Live 2017% +(dvipdfmx 20170318版)のために用意された特殊な設定である。 +1.5版においてこれらのプリセットは\Strong{非推奨}となり、 +2.0版で廃止された。 +これらのプリセットを利用していた場合は、 +\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} + %=========================================================== \section{ファイルプリセット機能} \label{sec:FilePreset} @@ -1191,9 +1237,9 @@ CMap指定の利用が必須であったため、慣習的に、dvipdfmxのフ \footnote{例えば、Adobe開発のフリーフォントの 「Source Han Serif(源ノ明朝)」など。}% が普及しつつあり、そのようなフォントでは異体字の切替などの -付加機能を専ら“OpenType属性の指定”により行うことを想定している。 +付加機能を専ら「OpenType属性の指定」により行うことを想定している。 これに対応するため、dvipdfmxのマップ指定において -“OpenType属性の指定”がサポートされるようになった。 +OpenType属性の指定がサポートされるようになった。 \Pkg{pxchfon}では和文フォントのエンコーディングに対する Unicode直接指定をサポートしている。 @@ -1205,33 +1251,50 @@ CMap指定の場合の機能性を可能な限り保つことを目指してい 過渡的な要素が多く混ざっていてやや煩雑になっていることに 注意してほしい。 -\paragraph{“Unicode直接指定”オプション} -以下のパッケージオプションを指定することで +\paragraph{Unicode直接指定オプション} +|unicode| オプションを指定することで Unicode直接指定の有効・無効を切り替えられる。 \begin{itemize} -\item |unicode|\Means +\item |unicode|[|=full|]\Means 全般的にUnicode直接指定を利用する。 最も理想的な設定であるが、\Strong{{\TeX}~Live 2018以降のdvipdfmx}% (20170918版以降)が必要である。 -\item |unicode*|\Means - {\TeX}~Live 2017のdvipdfmx(20170318版)専用の\Strong{過渡的}な設定。 - \Note 1.5版以降では\Strong{非推奨}であり、 - 2.0版で\Strong{廃止}される予定である。 -\item |directunicode*|\Means +\item |unicode=all|\Means 全般的にUnicode直接指定を利用するが、 古い({\TeX}~Live 2016以前の)dvipdfmxに 対応するために、OpenType属性の指定を全く行わない。 つまり、入力のUnicode文字に対する既定のグリフが常に出力され、 異体字の区別は全て無効になる。 -\item |directunicode|\Means +\item |unicode=UTF|\Means \Pkg{japanese-otf}の|\UTF|入力のフォントに限って Unicode直接指定を利用する。 - |directunicode*| と同じくOpenType属性の指定を全く行わない。 - \Note 前述の通り |directunicode*| はデメリットが強いため、 + |all| と同じくOpenType属性の指定を全く行わない。 + \Note 前述の通り |all| はデメリットが強いため、 適用範囲を限定したもの。 +\item |unicode=false|\Means + Unicode直接指定を利用せず、全般的にCMap指定を適用する。 \end{itemize} +\Note 単に |unicode| と指定するのは |unicode=full| と等価になる。 +\Note 以前は |unicode=all| は |directunicode*|、 +|unicode=UTF| は |directunicode| という指定方法であったが、 +極めて解りにくいので2.0版で「key-value型の |unicode| オプション」 +に統一された。 +従来の形式も当面はサポートされるが新しい |unicode| の使用を推奨する。% +\footnote{なお「単独の |unicode|」も従来の動作を維持しているが、 + これは古い形式ではなく + 「新しい |unicode| の指定法の一種」として扱う。} + +{\TeX}~Live 2017のdvipdfmx(20170318版)専用の\Strong{過渡的}な設定 +である |unicode*| は2.0版で\Strong{廃止}された。 +これを使っている場合は、\Strong{{\TeX}システムを更新}% +(dvipdfmxを20170918版以降に)した上で、 +代わりに |unicode| を指定することを推奨 +\footnote{|unicode=all| は{\TeX}~Live 2017でも使えるが、 + 出力は元々の |unicode*| より劣化する。}% +する。 + \paragraph{Unicode直接指定専用プリセット} 以下に挙げるプリセット設定は“AJ1でない”OpenTypeフォントを @@ -1251,27 +1314,6 @@ Unicode直接指定の有効・無効を切り替えられる。 \item |noto-jp| \end{itemize} -\paragraph{特殊プリセット指定\<(非推奨)} - -以下に挙げるプリセット設定は{\TeX}~Live 2017% -(dvipdfmx 20170318版)のために用意された特殊な設定である。 - -1.5版においてこれらのプリセットは\Strong{非推奨}となった。 -2.0版で廃止される予定である。 -そのため、これらのプリセットを利用している場合は、 -\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} @@ -1471,18 +1513,16 @@ r-cfjam-r-@PXcjk0@ msgothic.ttc FontIndex=0 %=========================================================== \section{pxjafontパッケージ} -\label{sec:Pkg-pxjafont} +\label{sec:Package-pxjafont} 現在の版の\Pkg{pxchfon}パッケージは旧来の\Pkg{pxjafont}の機能を 取り込んでいるため、\Pkg{pxjafont}は不要である。 古い環境との互換性のため\Pkg{pxjafont}を残していたが、 -1.0版において\Pkg{pxjafont}の使用を\Strong{非推奨}の扱いとした。 -(2.0版においてに\Strong{廃止}予定。) +2.0版において\Strong{廃止}された。 -\Pkg{pxjafont}を利用しているユーザは、 +\Pkg{pxjafont}を利用していたユーザは、 \ref{sec:Preset}節を参照して現在の\Pkg{pxchfon}用の 適切な設定に書き直す必要がある。 - \Note 古いプリセット名の中に廃止されたものがあるので注意。 %=========================================================== @@ -1589,7 +1629,7 @@ r-cfjam-r-@PXcjk0@ msgothic.ttc FontIndex=0 日本語用のフォントについて用いられることが想定されている。 \item 「Unicode直接指定オプション」は中国語・韓国語のフォントに対しても 有効である。 -|directunicode| の場合は「\Pkg{japanese-otf}パッケージのUnicode入力命令」 +|unicode=UTF| の場合は「\Pkg{japanese-otf}パッケージのUnicode入力命令」 (|\UTFK|、|\UTFM|、等)が対象となり、 それ以外はこれに加えて{\upTeX}標準のフォントも 対象になる。 diff --git a/Master/texmf-dist/tex/platex/pxchfon/pxchfon.sty b/Master/texmf-dist/tex/platex/pxchfon/pxchfon.sty index 8ba5fce6b38..310af67b713 100644 --- a/Master/texmf-dist/tex/platex/pxchfon/pxchfon.sty +++ b/Master/texmf-dist/tex/platex/pxchfon/pxchfon.sty @@ -10,14 +10,18 @@ %% package declaration \NeedsTeXFormat{pLaTeX2e} -\ProvidesPackage{pxchfon}[2023/08/18 v1.9b] +\ProvidesPackage{pxchfon}[2023/08/28 v2.0] \def\pxcz@pkgname{pxchfon} %--------------------------------------- general +%% packages +\RequirePackage{keyval} + %% variables \newif\ifpxcz@ok \newif\ifpxcz@utf +\let\pxcz@value\relax \let\pxcz@pre\relax \let\pxcz@post\relax @@ -55,6 +59,29 @@ \def\pxcz@lower@a#1\pxcz@end#2{% \lowercase{\def#2{#1}}} +%% \pxcz@setkeys{}{} +\pxcz@onlypreamble@def\pxcz@setkeys#1#2{% + \def\KV@errx##1{#2}% + \edef\pxcz@do{\noexpand\setkeys{pxchfon}{#1}}\pxcz@do + \let\KV@errx\pxcz@org@KV@errx} +\let\pxcz@org@KV@errx\KV@errx + +%% \pxcz@handle@kvopt{}{}{}{} +%% \pxcz@handle@bool@kvopt{}{}{} +\pxcz@onlypreamble@def\pxcz@handle@kvopt{% + \pxcz@handle@kvopt@a{@@}} +\pxcz@onlypreamble@def\pxcz@handle@bool@kvopt#1#2#3{% + \pxcz@handle@kvopt@a{}{#1}{#2}{#3}{\pxcz@value}} +\pxcz@onlypreamble@def\pxcz@handle@kvopt@a#1#2#3#4{% + \@nameuse{pxcz@#3@giventrue}% + \pxcz@csletcs{pxcz@value}{pxcz@#3#1#4}% + \ifx\pxcz@value\relax + \PackageError\pxcz@pkgname + {Invalid value for option key '#2'\MessageBreak (#4)}% + \expandafter\@gobble + \else \expandafter\@firstofone + \fi} + %% \pxcz@split{}{} \def\pxcz@split#1#2{% \edef\pxcz@tmpx{{#1}{#2}}% @@ -73,13 +100,10 @@ %--------------------------------------- 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}{} + \PackageError\pxcz@pkgname + {Old 'pxjafont' is loaded}{\@ehc} + \endinput}{} %% \ifpxcz@uptex \newif\ifpxcz@uptex \pxcz@uptexfalse @@ -96,10 +120,32 @@ \edef\pxcz@JYn{% \ifpxcz@uptex JY2\else JY1\fi} +%% \ifpxcz@lite@mode +\newif\ifpxcz@lite@mode +\IfFileExists{pxchfon0.def}{}{%else + \PackageInfo\pxcz@pkgname + {Working in Lite mode\@gobble}% + \pxcz@lite@modetrue} + +%% \ifpxcz@otf@loaded %% \ifpxcz@otf@deluxe +%% \pxcz@otf@weight: otf weight mode +\newif\ifpxcz@otf@loaded \pxcz@otf@loadedtrue \newif\ifpxcz@otf@deluxe \pxcz@otf@deluxefalse -\@ifpackagewith{otf}{deluxe}{\pxcz@otf@deluxetrue}{} -\@ifpackagewith{pxotf}{deluxe}{\pxcz@otf@deluxetrue}{} +% watch out for priority... +\@ifpackagewith{otf}{deluxe}{% + \pxcz@otf@deluxetrue \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 + \pxcz@otf@loadedfalse \let\pxcz@otf@weight=n +}}}}} %% \ifpxcz@otf@multi \newif\ifpxcz@otf@multi \pxcz@otf@multifalse @@ -109,6 +155,21 @@ \newif\ifpxcz@otf@expert \pxcz@otf@expertfalse \@ifpackagewith{otf}{expert}{\pxcz@otf@experttrue}{} +%% \ifpxcz@otf@mmivjis: 'jis2004' of otf is used? +\newif\ifpxcz@otf@mmivjis \pxcz@otf@mmivjisfalse +\@ifpackagewith{otf}{jis2004}{\pxcz@otf@mmivjistrue}{} + +%% \pxcz@jascale +\ifpxcz@uptex % do not consider JFM scale + \let\pxcz@jascale\utf@sc@le + \ifx\pxcz@jascale\@undefined + \let\pxcz@jascale\Cjascale + \fi + \ifx\pxcz@jascale\@undefined + \edef\pxcz@jascale{\ifx\jsc@JYn\@undefined 0.962216\else 0.924715\fi}% + \fi +\fi + %% \pxcz@pxufont@avail \IfFileExists{pxufont-ruby.sty}{\chardef\pxcz@pxufont@avail=2 }{% \IfFileExists{pxufont.sty}{\chardef\pxcz@pxufont@avail=1 }{% @@ -127,6 +188,11 @@ \newif\ifpxcz@old@hook@system \@ifl@t@r\fmtversion{2020/10/01}{}{\pxcz@old@hook@systemtrue} +%% \pxcz@hy@disable@commands{} +\pxcz@onlypreamble@def\pxcz@hy@disable@commands{% + \providecommand*\pdfstringdefPreHook{}% + \g@addto@macro\pdfstringdefPreHook} + %--------------------------------------- custom presets %% \pxcz@custom@presets @@ -184,30 +250,28 @@ %% variables \newif\ifpxcz@enabled \pxcz@enabledtrue -\let\pxcz@alphabet=n +\let\pxcz@alphabet\relax \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@unicode\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 +\newif\ifpxcz@unicode@given \let\pxcz@legacycode\relax +\newif\ifpxcz@legacycode@replace +\newif\ifpxcz@legacycode@replace@given \let\pxcz@expert\relax -\newif\ifpxcz@glyphid +\chardef\pxcz@glyphid\z@ \newif\ifpxcz@autojfmsync %% process options @@ -240,14 +304,23 @@ % (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} +% unicode= +\chardef\pxcz@unicode@@false=0 +\chardef\pxcz@unicode@@UTF=1 +\chardef\pxcz@unicode@@simple=2 +\chardef\pxcz@unicode@@full=3 +\chardef\pxcz@unicode@@true=\pxcz@unicode@@full +\define@key{pxchfon}{unicode}[true]{% + \pxcz@handle@kvopt{unicode}{unicode}{#1}{% + \let\pxcz@unicode\pxcz@value}} +\DeclareOption{nounicode}{\setkeys{pxchfon}{unicode=false}} +% (old options) +\DeclareOption{directunicode*}{\setkeys{pxchfon}{unicode=simple}} +\DeclareOption{directunicode}{\setkeys{pxchfon}{unicode=UTF}} +\DeclareOption{nodirectunicode}{\setkeys{pxchfon}{unicode=false}} +% (no)fullwidth +\DeclareOption{fullwidth}{\pxcz@fullwidthtrue} +\DeclareOption{nofullwidth}{\pxcz@fullwidthfalse} % (no)dumpmap \DeclareOption{dumpmap}{\pxcz@dumpmaptrue} \DeclareOption{nodumpmap}{\pxcz@dumpmapfalse} @@ -260,24 +333,55 @@ % (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} +% legacycode= +\chardef\pxcz@legacycode@@apply=0 +\chardef\pxcz@legacycode@@ignore=1 +\chardef\pxcz@legacycode@@suppress=2 +\define@key{pxchfon}{legacycode}{% + \pxcz@handle@kvopt{legacycode}{legacycode}{#1}{% + \let\pxcz@legacycode\pxcz@value}} +% legacycode-replace= +\define@key{pxchfon}{legacycode-replace}[true]{% + \pxcz@handle@bool@kvopt{legacycode-replace}{legacycode@replace}{#1}} % (no)expert \DeclareOption{expert}{\let\pxcz@expert=t} \DeclareOption{noexpert}{\let\pxcz@expert=f} % (no)glyphid -\DeclareOption{glyphid}{\pxcz@glyphidtrue} -\DeclareOption{noglyphid}{\pxcz@glyphidfalse} +\DeclareOption{glyphid}{\chardef\pxcz@glyphid=2 } +\DeclareOption{noglyphid}{\chardef\pxcz@glyphid=0 } % (no)autojfmsync \DeclareOption{autojfmsync}{\pxcz@autojfmsynctrue} \DeclareOption{noautojfmsync}{\pxcz@autojfmsyncfalse} +% maybe-multiweight +\DeclareOption{maybe-multiweight}{\let\pxchfonMaybeMultiweight=t} +% use= +\define@key{pxchfon}{use}{% + \pxcz@okfalse + \pxcz@split{:}{#1}\ifx\pxcz@pre\relax + \pxcz@handle@use@b{file}{#1}% + \else + \pxcz@handle@use@a{file}{file}% + \pxcz@handle@use@a{tl-ja}{ja}% + \pxcz@handle@use@a{tl-ko}{ko}% + \pxcz@handle@use@a{tl-sc}{sc}% + \pxcz@handle@use@a{tl-tc}{tc}% + \pxcz@handle@use@a{tl}{ja}% + \fi + \ifpxcz@ok\else + \PackageError\pxcz@pkgname + {The value for option 'use' has an invalid prefix:\MessageBreak + ('\pxcz@pre:')}% + {\@ehc}% + \fi} +\pxcz@onlypreamble@def\pxcz@handle@use@a#1#2{% + \ifpxcz@ok\else + \def\pxcz@tmpb{#1}\ifx\pxcz@pre\pxcz@tmpb + \pxcz@handle@use@b{#2}{\pxcz@post}% + \fi\fi} +\pxcz@onlypreamble@def\pxcz@handle@use@b#1#2{% + \edef\pxcz@use@list{\pxcz@use@list\pxcz@use@do{#1}{#2}}% + \pxcz@oktrue} + % preset spec options \pxcz@onlypreamble@def\pxcz@all@main@preset{% noembed,% @@ -287,16 +391,16 @@ 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,% + morisawa-pro,morisawa-pr6n,yu-win,yu-win10,yu-osx,% sourcehan-otc,sourcehan,sourcehan-jp,noto-otc,noto,noto-jp,% haranoaji,% - sourcehan-otc+,sourcehan+,noto-otc+,noto+,% sourcehan-otc!,sourcehan!,sourcehan-jp!,noto-otc!,noto!,noto-jp!,% noto-otf!,% %(alias) hiragino,noto-otf,% noEmbed,kozuka,hiragino-elcapitan,morisawa} \pxcz@onlypreamble@def\pxcz@all@abolished@preset{% + sourcehan+,sourcehan-otc+,noto+,noto-otc+,yu-win10+, ipa-otf,ipa-otf-dx,kozuka4,kozuka6,kozuka6n, ms-dx,ipa-ttf,ipa-ttf-dx,ipav2,ipav2-dx,ipa-dx,hiragino-dx} \def\pxcz@do#1{\DeclareOption{#1}{\def\pxcz@main@preset{#1}}} @@ -310,25 +414,21 @@ %% 'local-only' constant options % The 'unicode' option means a Unicode-oriented mapping, and requires % dvipdfmx of version 20170918 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. -% NOTE: 'unicode*(-fwid)' is DEPRECATED and will be abolished in v2.0. -\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} +% The 'unicode*(-fwid)' option is ABOLISHED. +\define@key{pxchfon}{unicode*}[]{% + \PackageError\pxcz@pkgname + {Option 'unicode*' is ABOLISHED!\MessageBreak + You should update to TL2018 or later and use\MessageBreak + option 'unicode' instead}% + {This option was to invoke a transitional setting\MessageBreak + that was specially tailored for TL2017.\MessageBreak + \@ehc}} % general option handler \DeclareOption*{% - \pxcz@csuse@or{pxcz@POPT/\CurrentOption}{% - \pxcz@parse@opt\CurrentOption - \ifpxcz@ok\else \@unknownoptionerror \fi}} + \pxcz@parse@opt\CurrentOption + \ifpxcz@ok\else + \pxcz@setkeys{\CurrentOption}{\@unknownoptionerror}% + \fi} %% \pxcz@use@list \pxcz@onlypreamble@let\pxcz@use@list\@empty @@ -337,13 +437,6 @@ %% \pxcz@parse@opt{