OSDN Git Service

NFSS in LaTeX 2020-02-02 (as "basis")
authorHironori Kitagawa <h_kitagawa2001@yahoo.co.jp>
Sun, 12 Jan 2020 01:06:16 +0000 (10:06 +0900)
committerHironori Kitagawa <h_kitagawa2001@yahoo.co.jp>
Sun, 12 Jan 2020 01:06:16 +0000 (10:06 +0900)
src/patches/lltjdefs.sty
src/patches/lltjfont.sty
test/test31-nfss20200202.tex [new file with mode: 0644]

index 204adbc..6a5e9d0 100644 (file)
@@ -40,8 +40,8 @@
 \DeclareFontShape{JY3}{gt}{m}{n}{<-> s*[\ifdefined\Cjascale\Cjascale\else 0.962216\fi] \ltj@stdgtfont:jfm=\ltj@stdyokojfm}{}
 \DeclareFontShape{JY3}{mc}{bx}{n}{<-> ssub*gt/m/n}{}
 \DeclareFontShape{JY3}{gt}{bx}{n}{<-> ssub*gt/m/n}{}
-\DeclareFontShape{JY3}{mc}{b}{n}{<-> ssub*mc/bx/n}{}
-\DeclareFontShape{JY3}{gt}{b}{n}{<-> ssub*gt/bx/n}{}
+\DeclareFontShape{JY3}{mc}{b}{n}{<-> ssub*gt/m/n}{}
+\DeclareFontShape{JY3}{gt}{b}{n}{<-> ssub*gt/m/n}{}
 
 \DeclareKanjiFamily{JT3}{mc}{}
 \DeclareFontShape{JT3}{mc}{m}{n}{<-> s*[\ifdefined\Cjascale\Cjascale\else 0.962216\fi] \ltj@stdmcfont:jfm=\ltj@stdtatejfm}{}
@@ -49,8 +49,8 @@
 \DeclareFontShape{JT3}{gt}{m}{n}{<-> s*[\ifdefined\Cjascale\Cjascale\else 0.962216\fi] \ltj@stdgtfont:jfm=\ltj@stdtatejfm}{}
 \DeclareFontShape{JT3}{mc}{bx}{n}{<-> ssub*gt/m/n}{}
 \DeclareFontShape{JT3}{gt}{bx}{n}{<-> ssub*gt/m/n}{}
-\DeclareFontShape{JT3}{mc}{b}{n}{<-> ssub*mc/bx/n}{}
-\DeclareFontShape{JT3}{gt}{b}{n}{<-> ssub*gt/bx/n}{}
+\DeclareFontShape{JT3}{mc}{b}{n}{<-> ssub*gt/m/n}{}
+\DeclareFontShape{JT3}{gt}{b}{n}{<-> ssub*gt/m/n}{}
 \KanjiEncodingPair{JY3}{JT3}
 
 \DeclareRelationFont{JY3}{gt}{m}{}{TU}{lmr}{bx}{}
 \newif\if@ltj@match@family
 \@ltj@match@familyfalse
 \def\verbatim@font{\normalfont\ttfamily\kanjifamily\jttdefault\selectfont}
-\DeclareRobustCommand\rmfamily
-        {\not@math@alphabet\rmfamily\mathrm
-                   \romanfamily\rmdefault
-                   \if@ltj@match@family\kanjifamily\mcdefault\fi\selectfont}
-\DeclareRobustCommand\sffamily
-        {\not@math@alphabet\sffamily\mathsf
-                   \romanfamily\sfdefault
-                   \if@ltj@match@family\kanjifamily\gtdefault\fi\selectfont}
-\DeclareRobustCommand\ttfamily
-        {\not@math@alphabet\ttfamily\mathtt
-                   \romanfamily\ttdefault
-                   \if@ltj@match@family\kanjifamily\jttdefault\fi\selectfont}
+\def\@ltj@hook@family#1#2{ % #1: csname #2: contents
+  \ifcsname @#1hook\endcsname % LaTeX 2020-02-02
+       \csappto{@#1hook}{#2}%
+  \else
+       \ifcsname #1 \endcsname
+         \expandafter\patchcmd\csname #1 \endcsname{\selectfont}{#2\selectfont}{}{}%
+       \else
+         \PackageWarningNoLine{luatexja}{%
+               Patching to \expandafter\string\csname #1\endcsname\space failed
+         }%
+       \fi
+  \fi
+}
+\@ltj@hook@family{rmfamily}{\if@ltj@match@family\kanjifamily\mcdefault\fi}
+\@ltj@hook@family{sffamily}{\if@ltj@match@family\kanjifamily\gtdefault\fi}
+\@ltj@hook@family{ttfamily}{\if@ltj@match@family\kanjifamily\jttdefault\fi}
+
 %%% \eminnershape
-\DeclareRobustCommand\em
-        {\@nomath\em \ifdim \fontdimen\@ne\font >\z@
-                       \eminnershape \else \gtfamily \itshape \fi}
+\expandafter\patchcmd\csname em \endcsname{\itshape}{\gtfamily\itshape}{}{}
 \def\eminnershape{\mcfamily \upshape}
 
 \ltjdefcharrange{1}{"80-"36F, "1E00-"1EFF}
index 0f572b5..51f3c9a 100644 (file)
@@ -3,7 +3,7 @@
 %
 
 \NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{lltjfont}[2019/09/25 Patch to NFSS2 for LuaTeX-ja]
+\ProvidesPackage{lltjfont}[2020/01/12 Patch to NFSS2 for LuaTeX-ja]
 
 \def\ltj@chardef@text@cmd#1{%
   \let\@ifdefinable\@@ifdefinable%
     \edef\k@family{#1}\edef\f@family{#1}%
   \fi\fi
 }
+
+\ifdefined\fontseriesforce
+%%%% LaTeX 2020-02-02
+\DeclareRobustCommand\romanseriesforce[1]{\edef\f@series{#1}}
+\DeclareRobustCommand\kanjiseriesforce[1]{\edef\k@series{#1}}
+\DeclareRobustCommand\fontseriesforce[1]{\kanjiseries{#1}\romanseries{#1}}
+\DeclareRobustCommand\romanshapeforce[1]{\edef\f@shape{#1}}
+\DeclareRobustCommand\kanjishapeforce[1]{\edef\k@shape{#1}}
+\DeclareRobustCommand\fontshapeforce[1]{\kanjishape{#1}\romanshape{#1}}
+
+\def\merge@font@kanji@series#1{%
+  \expandafter\expandafter\expandafter
+  \merge@font@kanji@series@
+    \csname series@\k@series @#1\endcsname
+    {#1}%
+    \@nil
+}
+\def\set@target@kanji@series#1{%
+    \edef\k@series{#1}%
+    \edef\k@series{\expandafter\series@drop@one@m\k@series mm\series@drop@one@m}%
+}
+\def\merge@font@kanji@series@#1#2#3\@nil{%
+  \def\@reserveda{#3}%
+  \ifx\@reserveda\@empty
+    \set@target@kanji@series{#2}%
+  \else
+    \begingroup\let\f@encoding\k@encoding\let\f@family\k@family
+          \maybe@load@fontshape\endgroup
+    \edef\@reserveda{\k@encoding /\k@family /#1/\k@shape}%
+     \ifcsname \@reserveda \endcsname
+       \set@target@kanji@series{#1}%
+    \else
+       \ifcsname \k@encoding /\k@family /#2/\k@shape \endcsname
+         \set@target@kanji@series{#2}%
+         \@font@shape@subst@warning
+       \else
+         \set@target@kanji@series{#3}%
+         \@font@shape@subst@warning
+       \fi
+    \fi
+  \fi
+}
+\def\merge@font@kanji@shape#1{%
+  \expandafter\expandafter\expandafter
+  \merge@font@kanji@shape@
+    \csname shape@\k@shape @#1\endcsname
+    {#1}%
+    \@nil
+}
+\def\merge@font@kanji@shape@#1#2#3\@nil{%
+  \def\@reserveda{#3}%
+  \ifx\@reserveda\@empty
+    \edef\k@shape{#2}%
+  \else
+    \maybe@load@fontshape
+    \edef\@reserveda{\k@encoding /\k@family /\k@series/#1}%
+     \ifcsname \@reserveda\endcsname
+       \edef\k@shape{#1}%
+    \else
+       \ifcsname \k@encoding /\k@family /\k@series/#2\endcsname
+         \edef\k@shape{#2}%
+         \@font@shape@subst@warning
+       \else
+         \edef\k@shape{#3}%
+         \@font@shape@subst@warning
+       \fi
+    \fi
+  \fi
+}
+\DeclareRobustCommand\romanseries[1]{\merge@font@series{#1}}
+\DeclareRobustCommand\kanjiseries[1]{\merge@font@kanji@series{#1}}
+\DeclareRobustCommand\fontseries[1]{%
+   \merge@font@series{#1}\merge@font@kanji@series{#1}}
+\DeclareRobustCommand\romanshape[1]{\merge@font@shape{#1}}
+\DeclareRobustCommand\kanjishape[1]{\merge@font@kanji@shape{#1}}
+\DeclareRobustCommand\fontshape[1]{%
+   \merge@font@shape{#1}\merge@font@kanji@shape{#1}}
+\else
+%%%% LaTeX 2019-10-01
 \DeclareRobustCommand\romanseries[1]{\edef\f@series{#1}}
 \DeclareRobustCommand\kanjiseries[1]{\edef\k@series{#1}}
 \DeclareRobustCommand\fontseries[1]{\kanjiseries{#1}\romanseries{#1}}
 \DeclareRobustCommand\romanshape[1]{\edef\f@shape{#1}}
 \DeclareRobustCommand\kanjishape[1]{\edef\k@shape{#1}}
 \DeclareRobustCommand\fontshape[1]{\kanjishape{#1}\romanshape{#1}}
+\fi
 \DeclareRobustCommand\usekanji[4]{%
     \kanjiencoding{#1}\kanjifamily{#2}\kanjiseries{#3}\kanjishape{#4}%
     \selectfont\ignorespaces}
diff --git a/test/test31-nfss20200202.tex b/test/test31-nfss20200202.tex
new file mode 100644 (file)
index 0000000..495886c
--- /dev/null
@@ -0,0 +1,19 @@
+\documentclass{ltjarticle}
+\makeatletter
+\def\TEST{%
+ \par
+  A: \f@encoding/\f@family/\f@series/\f@shape.
+  K: \k@encoding/\k@family/\k@series/\k@shape.
+  あいうABC
+}
+\begin{document}
+
+\bfdefault
+\TEST
+\emph{\TEST}
+\textsf{\TEST}
+\textbf{\TEST}
+{\fontseries{b}\selectfont \TEST}
+{\fontseries{bx}\selectfont \TEST}
+\textsc{\textit{\TEST}}
+\end{document}
\ No newline at end of file