Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

otf.sty: 新NFSS対応(シリーズ b も太字に etc.) #7

Open
aminophen opened this issue Jul 24, 2018 · 7 comments
Open

otf.sty: 新NFSS対応(シリーズ b も太字に etc.) #7

aminophen opened this issue Jul 24, 2018 · 7 comments

Comments

@aminophen
Copy link
Member

texjporg/platex#74 と同じ話が otf パッケージにも当てはまるので,「\DeclareFontShape を追加することで和文のシリーズ b も太字になるようにしたい」という話をメモしておきます。

@aminophen
Copy link
Member Author

aminophen commented Feb 1, 2020

止まっていましたが texjporg/platex#88 のとおり,LaTeX2e 2020-02-02 では \bfdefault が bx ではなく b になるので,こちらの issue も対応検討しましょう。


ちなみに:

\def\kanjishapedefault{n}
\documentclass{jsarticle}
\usepackage{tgtermes,tgheros}
\usepackage{otf}
\begin{document}
ほげほげ{\bfseries ぴよぴよ}
\end{document}

の処理結果は…:

LaTeX2e 2019-10-01 + pLaTeX2e 2019-10-01

LaTeX Font Warning: Font shape `JT1/hmc/b/n' undefined
(Font)              using `JT1/hmc/m/n' instead on input line 6.
LaTeX Font Warning: Font shape `JY1/hmc/b/n' undefined
(Font)              using `JY1/hmc/m/n' instead on input line 6.

LaTeX2e 2020-02-02 + pLaTeX2e 2019-10-01

LaTeX Font Warning: Font shape `JT1/hmc/b/n' undefined
(Font)              using `JT1/hmc/m/n' instead on input line 6.
LaTeX Font Warning: Font shape `JY1/hmc/b/n' undefined
(Font)              using `JY1/hmc/m/n' instead on input line 6.

LaTeX2e 2020-02-02 + pLaTeX2e 2020-02-02 ('dev' or 'dev-j')

LaTeX Font Warning: Font shape `JY1/hmc/b/n' undefined
(Font)              using `JY1/hmc/bx/n' instead on input line 6.

すなわち,(p)LaTeX を「新 NFSS 対応版」にすれば一応フォールバックが bx になる模様。理由は

\DeclareFontSeriesChangeRule {m}{b}  {b}  {bx}

だから。

@aminophen
Copy link
Member Author

aminophen commented Apr 7, 2020

メモ:NFSS が新しくなった件に関連して otf.sty の \put@character\kanjishape が呼び出されるのがやっぱりキニナル…。「シェープ更新規則 (\DeclareFontShapeChangeRule)」に由来するおかしなことが起きないか確認しておきたい。

@aminophen
Copy link
Member Author

NFSS が新しくなった件に関連して otf.sty の
\put@character\kanjishape が呼び出されるのがやっぱりキニナル…。

まだ実用において報告はあがっていませんが,原理的には

\documentclass{article}
\usepackage[noreplace]{otf}

% 誰かが「独自シェープ "x"」を定義したとする
\DeclareFontShape{JY1}{mc}{m}{x}{<-> jisg}{}

% 或るパッケージが「シェープ更新規則」を定義したとする
\DeclareFontShapeChangeRule{sl}{n}{x}{n}

\begin{document}

標準ちょっと、% シェープ: n
\kanjishape{x}\selectfont 独自ちょっと、% シェープ: x
\kanjishape{sl}\selectfont 斜体ちょっと、% シェープ: sl
%
% "𣏐" (U+233D0)
% = OTF パッケージの \UTF で utfjmrn-h.tfm に割り当て
%   切替は \kanjishape{n} によって行われる
%   -> すなわち "sl" から "n" への更新とみなされる
%
% ところが \DeclareFontShapeChangeRule{sl}{n}{x}{n} により
%   "sl" から "n" への更新は "x" が存在すれば "x" になる
%   -> すなわち "sl" から "x" へ更新されてしまう
%
\UTF{233D0}

\end{document}

ということが起きてしまいます。\DeclareFontShapeChangeRule による干渉を避けるため,OTF パッケージ内部では \kanjishape を使わずに直接 \def\k@shape{目的のシェープ} としておくのが安全ですね。

@aminophen
Copy link
Member Author

LaTeX2e 2020-02-02 では \bfdefault が bx ではなく b になる

量が多いので後で。

\DeclareFontShapeChangeRule による干渉

6e185cc (branch 'kanjishape') で対処。

@aminophen aminophen changed the title otf.sty: シリーズ b も太字に otf.sty: 新NFSS対応(シリーズ b も太字に etc.) Oct 3, 2020
@aminophen
Copy link
Member Author

aminophen commented Jun 6, 2021

OTF パッケージ内部では \kanjishape を使わずに直接 \def\k@shape{目的のシェープ} としておくのが安全ですね。

LaTeX2e 2021-06-01 で「実際のシェープ更新を \selectfont に遅らせて \delayed@[f/k]@adjustment にて一括実行」となりました。これに伴い「直接 \def\k@shape{目的のシェープ} とするときは \delayed@k@adjustment も空にリセットしないといけない」という新ルールが爆誕してしまっています。うーん

→ より安全なのはローレベル命令ではなくハイレベル命令を使う方法だという考えに則れば「\kanjishapeforce が定義されていればそれを使う,無ければ \kanjishape を使う」が安全かも。(f530a3c)

@aminophen
Copy link
Member Author

埋もれていた 'kanjishape' ブランチをマージ。

※ 結局「\DeclareFontShape を追加することで和文のシリーズ b も太字になるようにしたい」は対応まだ。(新 NFSS の更新規則により b → bx にフォールバックするので結果は変わらないが,警告を消したい)

t-tk added a commit that referenced this issue Jun 2, 2023
@t-tk
Copy link
Contributor

t-tk commented Jun 25, 2023

kanjishape の対応は、今回 2023-06-25 の japanese-otf のCTAN投稿に入れました。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants