%#!lualatex test20a-mfont-fontspec.tex
\documentclass{ltjsarticle}
\usepackage{luatexja-fontspec,luatexja-otf}

\makeatletter
\let\ltj@orig@DeclareFontShape@=\DeclareFontShape@
\def\@@@DeclareFontShape@#1#2#3#4#5#6{%
\immediate\typeout{DFS |#1|#2|#3|#4|#5|#6|}%
\ltj@orig@DeclareFontShape@{#1}{#2}{#3}{#4}{#5}{#6}%
}
\makeatother



\newjfontfamily\hoge[
  AltFont={ 
    {Range="3000-"307F, Font=JJSYuGothicPr6N-M, Color=00007F, CharacterWidth=Half},
    {Range="3080-"30FF, Color=7F0000,}
  },
  BoldFont={ JJSYuGothicPr6N-M }, 
]{JJSYuMinchoPr6N-R}

\newjfontfamily\piyo[
  AltFont={ 
    {Range="3000-"309F, CharacterWidth=Half},
    {Range="30A0-"30FF, Font=JJSYuGothicPr6N-M}
  }
% カタカナ は JJSYuGothicPr6N-M
% ひらがな は JJSYuMinchoPr6N-R 半角
]{JJSYuMinchoPr6N-R}

\setsansjfont{KozGoPr6N-Medium}

\long\def\test{%
  あいうえお医学アイウエオ医学
  \textbf{あいうえお医学アイウエオ医学}\par
%
  日本国民は、正当に選挙された国会における代表者を通じて行動し、
  われらとわれらの子孫のために、諸国民との協和による成果と、
  わが国全土にわたつて自由のもたらす恵沢を確保し、政府の行為によつて
  再び戦争の惨禍が起ることのないやうにすることを決意し、
  ここに主権が国民に存することを宣言し、この憲法を確定する。
  そもそも国政は、国民の厳粛な信託によるものであつて、その権威は国民に由来し、
  その権力は国民の代表者がこれを行使し、その福利は国民がこれを享受する。
  これは人類普遍の原理であり、この憲法は、かかる原理に基くものである。
  われらは、これに反する一切の憲法、法令及び詔勅を排除する。

  \vbox{\tate\hsize=10\zw
  日本国民は、正当に選挙された国会における代表者を通じて行動し、
  われらとわれらの子孫のために、諸国民との協和による成果と、
  わが国全土にわたつて自由のもたらす恵沢を確保し、政府の行為によつて
  再び戦争の惨禍が起ることのないやうにすることを決意し、
  ここに主権が国民に存することを宣言し、この憲法を確定する。
  }
}
\begin{document}

\hoge\test

\medskip\piyo\test

\newpage
%\typeout{!!!! 5gou kana}
\section{5号かな}
{%
\jfontspec[
  AltFont={
    {Font=JJSYuMin5goKn-R,Range="3000-"30FF, Color=007F00},
    {Font=DejaVuSans, Range={"21B3,"21B5},Color=0000FF,YokoFeatures={JFM=prop} },
  }
]{JJSYuMinchoPr6N-R}

\makeatletter\k@family
日本国民は、正当に選挙された国会における代表者を通じて行動し、
（\ltjjachar"21B3）
（\ltjjachar"21B4）
（\ltjjachar"21B5）%"
}

\newpage
\section{addfontfeatures}
\piyo\test
\addjfontfeatures{
  AltFont={ {Range="4F00-"6FFF, Color=0000FF}, },
  Color=003F00,CJKShape=Traditional
%% AltFont は累積する
}
\makeatletter\k@family\test

\section{YokoFeaturesなどとの関係}
\paragraph{うまくいかない例: YokoFeatures等の中にAltFont}
{%
\jfontspec[
  YokoFeatures = {
    AltFont={
      {Font=JJSYuMin5goKn-D,Range="3000-"30FF, Color=003F3F},
    }, JFM=min,
  },
  TateFeatures = {
    AltFont={
      {Font=JJSYuMin5goKn-R,Range="3000-"304F, Color=7F0000, JFM=tmin },
      {Font=JJSYuMin5goKn-R,Range="3050-"30FF, Color=00007F},
    },
  }
]{JJSYuMinchoPr6N-R}
\makeatletter\k@family\test
}
\paragraph{うまくいく例: AltFontの中にYokoFeature}
{%
\jfontspec[
  %YokoFeatures = { JFM=min },
  AltFont={
    { 
      Font=JJSYuMin5goKn-D, YokoFeatures = { Color=FF3F3F },
      TateFont = JJSYuMin5goKn-R, TateFeatures = { Color=7F0000, JFM=tmin  },
      Range="3000-"304F, 
    },
    { 
      Font=JJSYuMin5goKn-D, YokoFeatures = { Color=4F3F3F },
      TateFont=JJSYuMin5goKn-R, TateFeatures = { Color=00007F },
      Range="3050-"30FF, 
    },
  }
]{JJSYuMinchoPr6N-R}
\makeatletter\k@family\test
}

どっちかではうまくいくようにしたいが……

\typeout{!!! BOLD}
\paragraph{BoldFeaturesとAltFontその1}
\jfontspec
[
  AltFont={{Color=0000FF, Range="6000-"9FFF}},
  BoldFont=KozMinPr6N-Bold,
  UprightFeatures = {
    AltFont = {
      { Font=KozGoPr6N-Light, Range="3000-"30FF, TateFont = KozGoPr6N-Heavy,
        YokoFeatures={ Color=4F0000} } 
    },
  },
  BoldFeatures = { Color=006F00,
    AltFont = { { Font=KozGoPr6N-Bold, Range="3000-"30FF } },
  }, 
]{KozMinPr6N-Light}
\test
\bfseries\test

\end{document}