%% Alternate Fonts
\bool_new:N \l_fontspec_alt_bool
-\tl_clear:N \ltj_fontspec_fontname_alt_tl
-\tl_clear:N \ltj_fontspec_fontfeat_alt_clist
-\tl_clear:N \ltj_fontspec_altrange_clist
+\seq_clear_new:N \ltj_fontspec_fontname_alt_seq
+\seq_clear_new:N \ltj_fontspec_fontfeat_alt_seq
+\seq_clear_new:N \ltj_fontspec_altrange_seq
+\tl_clear_new:N \ltj_fontspec_fontname_alt_tl
+\tl_clear_new:N \ltj_fontspec_fontfeat_alt_tl
+\tl_clear_new:N \ltj_fontspec_altrange_tl
\cs_new:Nn \__ltj_fontspec_altfontrange_key_code:n
{
+ \fontspec_update_fontid:n {altfrange:#1}
\bool_if:NF \l_fontspec_firsttime_bool
{
- \tl_set:Nn \ltj_fontspec_altrange_clist {#1}
+ \seq_set_split:Nnn \ltj_fontspec_altrange_seq , {#1}
}
}
\cs_new:Nn \__ltj_fontspec_altfontfeature_key_code:n
\fontspec_update_fontid:n {altfeat:#1}
\bool_if:NF \l_fontspec_firsttime_bool
{
- \tl_if_empty:nTF {#1}
- { \bool_set_false:N \ltj_fontspec_alt_bool }
- { \bool_set_true:N \ltj_fontspec_alt_bool }
- \tl_set:Nn \ltj_fontspec_fontfeat_alt_clist {, #1}
+ \seq_set_split:Nnn \ltj_fontspec_fontfeat_alt_seq , {#1}
}
}
+
+
+\cs_new:Nn \__ltj_fontspec_altfont_map:n {
+ \fontspec_complete_fontname:Nn \l_tmpb_tl {#1}
+ \seq_put_right:No \l_tmpa_seq \l_tmpb_tl
+}
+
\cs_new:Nn \__ltj_fontspec_altfont_key_code:n
{
\tl_if_empty:nF {#1}
{
- \fontspec_complete_fontname:Nn \ltj_fontspec_fontname_alt_tl {#1}
- \fontspec_update_fontid:n {alt:#1}
+ \seq_set_split:Nnn \ltj_fontspec_fontname_alt_seq , {#1}
+ \seq_clear:N \l_tmpa_seq
+ \seq_map_function:NN \ltj_fontspec_fontname_alt_seq \__ltj_fontspec_altfont_map:n
+ \seq_set_eq:NN \ltj_fontspec_fontname_alt_seq \l_tmpa_seq
+ \fontspec_update_fontid:n {alt:#1}
}
}
\fontspec_declare_shape:nnn {#2}{#3}
{ \quark_if_no_value:NF \l__fontspec_fontopts_clist {\l__fontspec_fontopts_clist,} #4 }
\cs_set_eq:NN \DeclareFontShape \ltj_fontspec_orig_DeclareFontShape
- \tl_if_empty:NTF \ltj_fontspec_fontname_alt_tl
- {
- \bool_if:NT \ltj_fontspec_alt_bool
- {
- \fontspec_declare_shape:nnn {#2} { #3 _alt }
- {
- \quark_if_no_value:NF \l__fontspec_fontopts_clist {\l__fontspec_fontopts_clist,}
- #4 , \ltj_fontspec_fontfeat_alt_clist
+ %%
+ \bool_if:NF {
+ \int_compare_p:nNn { \seq_count:N \ltj_fontspec_fontfeat_alt_seq }
+ < { \seq_count:N \ltj_fontspec_altrange_seq }
+ ||
+ \int_compare_p:nNn { \seq_count:N \ltj_fontspec_fontname_alt_seq }
+ < { \seq_count:N \ltj_fontspec_altrange_seq }
+ } {
+ \int_zero:N \l_tmpa_int
+ \bool_until_do:nn { \seq_if_empty_p:N \ltj_fontspec_altrange_seq } {
+ \seq_pop:NN \ltj_fontspec_altrange_seq \ltj_fontspec_altrange_tl
+ \seq_pop:NN \ltj_fontspec_fontfeat_alt_seq \ltj_fontspec_fontfeat_alt_tl
+ \seq_pop:NN \ltj_fontspec_fontname_alt_seq \ltj_fontspec_fontname_alt_tl
+ \group_begin:
+ \__fontspec_load_fontname:n {
+ \quark_if_no_value:NTF \ltj_fontspec_fontname_alt_tl
+ { #1 } {
+ \tl_if_empty:NTF \ltj_fontspec_fontname_alt_tl
+ {#1} \ltj_fontspec_fontname_alt_tl
+ }
}
- \DeclareAlternateKanjiFont {JY3}{ \l_fontspec_family_tl }{#2}{#3}%
- {JY3}{ \l_fontspec_family_tl }{#2}{ #3 _alt }{ \ltj_fontspec_altrange_clist }
- }
- }
- {
- \__fontspec_load_fontname:n {\ltj_fontspec_fontname_alt_tl}
- \fontspec_declare_shape:nnn {#2} { #3 _alt }
- {
- \quark_if_no_value:NF \l__fontspec_fontopts_clist {\l__fontspec_fontopts_clist,}
- #4 , \ltj_fontspec_fontfeat_alt_clist
- }
- \DeclareAlternateKanjiFont {JY3}{ \l_fontspec_family_tl }{#2}{#3}%
- {JY3}{ \l_fontspec_family_tl }{#2}{ #3 _alt }{ \ltj_fontspec_altrange_clist }
- }
+ \fontspec_declare_shape:nnn {#2}{#3 _ alt \int_use:N \l_tmpa_int } {
+ \quark_if_no_value:NF \l__fontspec_fontopts_clist {\l__fontspec_fontopts_clist,}
+ #4 ,
+ \quark_if_no_value:NF \ltj_fontspec_fontfeat_alt_tl \ltj_fontspec_fontfeat_alt_tl
+ }
+ \DeclareAlternateKanjiFont
+ {JY3}{ \l_fontspec_family_tl }{#2}{#3}%
+ {JY3}{ \l_fontspec_family_tl }{#2}{ #3 _alt\int_use:N \l_tmpa_int }
+ { \ltj_fontspec_altrange_tl }
+ \group_end:
+ \int_incr:N \l_tmpa_int
+ }
+ }
\group_end:
}
\fi
\fi}
-
\endinput
-%#!luajitlatex
+%#!lualatex test20a-mfont-fontspec.tex
\documentclass{ltjsarticle}
\usepackage{luatexja-fontspec,luatexja-otf}
-\setmainjfont[
- AltFontFeatures={ Color=00003F, CharacterWidth=Half },
- BoldFont = { KozMinPr6N-Bold.otf },
- BoldFeatures = { AltFont={ KozGoPr6N-Bold.otf } },
- AltFontRange = { "3000-"30FF },
-]{KozMinPr6N-Regular.otf}
-\setsansjfont{KozGoPr6N-Regular.otf}
+\newjfontfamily\fuga[
+ AltFontFeatures = { { Color=7F0000, CharacterWidth=Half } },
+% AltFontFeatures = { Color=7F0000, CharacterWidth=Half }, ではいけない
+ AltFontRange = { "3000-"30FF } ,
+ AltFont = JJSYuGothicPr6N-M
+]{JJSYuMinchoPr6N-R}
+
+\newjfontfamily\hoge[
+ AltFontFeatures = { { Color=00007F, CharacterWidth=Half }, { Color=7F0000 } },
+ AltFontRange = { { "3000-"307F }, { "3080-"30FF } },
+ AltFont = { , JJSYuGothicPr6N-M},
+ BoldFont = { JJSYuGothicPr6N-M },
+ BoldFeatures = { AltFont={ , } },
+]{JJSYuMinchoPr6N-R}
+
+\newjfontfamily\piyo[
+% カタカナ は JJSYuGothicPr6N-M
+% ひらがな は JJSYuMinchoPr6N-R #00007F, 半角
+ AltFontFeatures = { { Color=00007F, CharacterWidth=Half } },
+ AltFontRange = { { "3000-"309F }, { "3080-"30FF } },
+ AltFont = { , JJSYuGothicPr6N-M},
+]{JJSYuMinchoPr6N-R}
+
+\setsansjfont{KozGoPr6N-Medium}
\long\def\test{%
あいうえお医学アイウエオ医学
- \textbf{あいうえお医学アイウエオ医学}
- \textgt{あいうえお医学アイウエオ医学}\par
+ \textbf{あいうえお医学アイウエオ医学}\par
%
日本国民は、正当に選挙された国会における代表者を通じて行動し、
われらとわれらの子孫のために、諸国民との協和による成果と、
}
\begin{document}
-\test
+\fuga\test
+
+\medskip
+\hoge\test
+
+\medskip\piyo\test
\paragraph{addfontfeatures}\ \par
\addjfontfeatures{
- AltFontFeatures={ Color=0000FF }, AltFontRange= { "3040-"304F },
- Color=001F00, CJKShape=Traditional
-}
+ AltFontFeatures={Color=0000FF},
+ AltFontRange={"3040-"304F,"3080-"30FF},
+% { {"3040-"304F}, {"3080-"30FF} } の意味になるので,
+% 3040-304F: 青,
+% 3080-30FF: ゴチ(addjfontfeatures 前でそのような指定があるため)
+ Color=001F00,CJKShape=Traditional
% AltFontFeature, AltFontRange は累積しない
+}
\test
+\typeout{5号かな}
+\jfontspec[
+ AltFont={JJSYuMin5goKn-R,DejaVuSans },
+ AltFontFeatures={,{Color=0000FF,JFM=prop }},
+ AltFontRange={"3000-"30FF,{"21B3,"21B5 }}%"
+]{JJSYuMinchoPr6N-R}
+
+日本国民は、正当に選挙された国会における代表者を通じて行動し、
+(\ltjjachar"21B3)
+(\ltjjachar"21B4)
+(\ltjjachar"21B5)
\end{document}
\ No newline at end of file