\fi}
\DeclareRobustCommand\normalfont{%
\useroman\encodingdefault\familydefault\seriesdefault\shapedefault
- \usekanji\kanjiencodingdefault\kanjifamilydefault\kanjiseriesdefault\kanjishapedefault
- \ignorespaces}
+ \usekanji\kanjiencodingdefault\kanjifamilydefault\kanjiseriesdefault\kanjishapedefault}
\let\reset@font\normalfont
\ifdefined\@rmfamilyhook
--- /dev/null
+\ifdefined\directlua
+ \documentclass{ltjarticle}
+\else\ifdefined\ucs
+ \documentclass{ujarticle}
+\else
+ \documentclass{jarticle}
+\fi\fi
+\makeatletter
+\newcount\REPCNT
+\def\REP{%
+ <\the\REPCNT: \f@shape/\k@shape>%
+ \typeout{<\the\REPCNT: \f@shape/\k@shape>}%
+ \global\advance\REPCNT by1\relax}
+
+\makeatother
+
+\begin{document}
+
+{\itshape a\REP}
+% 内部で \fontshape が欧文と和文の両方を変えようとする
+% => 和文の変更に失敗しても警告は出したくない
+
+{\fontshape{ait}
+ \selectfont\REP}
+% \fontshape は欧文と和文の両方を変えようとする
+% => 和文の変更に失敗しても警告は出したくない
+
+{\fontshapeforce{asl}
+ \selectfont\REP}
+% \fontshapeforce は欧文と和文の両方を変えようとする
+% => 和文の変更に失敗しても警告は出したくない
+
+{\kanjishape{kit}
+ \selectfont\REP}
+% \kanjishape は和文だけを変更 => 警告すべき
+
+{\kanjishapeforce{ksl}
+ \selectfont\REP}
+% \kanjishapeforce は和文だけを変更 => 警告すべき
+
+{\usefont{\csname k@encoding\endcsname}{mc}{m}{ksc}\REP}
+% \usefont は encoding に応じて \useroman と \usekanji の一方だけを実行
+% この例は和文横組フォントだけを変えることを意図 => 警告すべき
+
+{\fontshape{asc}
+ \selectfont\REP}
+% \fontshape は欧文と和文の両方を変えようとする
+% => 和文の変更に失敗しても警告は出したくない
+
+{\fontshapeforce{asw}
+ \selectfont\REP}
+% \fontshapeforce は欧文と和文の両方を変えようとする
+% => 和文の変更に失敗しても警告は出したくない
+
+\end{document}