\ltj_fontspec_define_altfont_option:nn {Font} {
\fontspec_complete_fontname:Nn \l_ltj_fontspec_altname_tl {#1}
}
-\cs_new:Nn \__ltj_fontspec_altfont_key_code:n
-{
- \clist_put_right:Nn \l_ltj_fontspec_altfont_clist {#1}
-}
\__fontspec_keys_define_code:nnn {fontspec-ltjaltfont-reparse} {AltFont} {
- \__ltj_fontspec_altfont_key_code:n { #1 }
+ \clist_put_right:Nn \l_ltj_fontspec_altfont_clist { #1 }
+}
+\__fontspec_keys_define_code:nnn {fontspec-ltjaltfont-reparse} {YokoFeatures} {
+ \clist_put_right:Nn \l_ltj_fontspec_fontfeat_yoko_clist { #1 }
+}
+\__fontspec_keys_define_code:nnn {fontspec-ltjaltfont-reparse} {TateFeatures} {
+ \clist_put_right:Nn \l_ltj_fontspec_fontfeat_tate_clist { #1 }
+}
+\__fontspec_keys_define_code:nnn {fontspec-ltjaltfont-reparse} {TateFont} {
+ \tl_if_empty:nF {#1} {
+ \fontspec_complete_fontname:Nn \l_ltj_fontspec_fontname_tate_tl {#1}
+ }
}
%%
\clist_new:N \l_ltj_fontspec_fontfeat_yoko_clist
\cs_new:Nn \ltj_fontspec_select:nn {
\group_begin:
\ltj_fontspec_define_option:nn {AltFont} {
- \__ltj_fontspec_altfont_key_code:n { ##1 }
+ \clist_put_right:Nn \l_ltj_fontspec_altfont_clist {##1}
}
\ltj_fontspec_define_option:nn {CID} {
\__fontspec_update_featstr:n {cid=##1}
}
%% declare_shape
+
+\cs_new:Nn \ltj_fontspec_declare_shape_yoko:nnnn {
+ \ltj_fontspec_declare_shape_aux:nnnnnn {#1} {#2} {#3} {#4} { JY3 } { \l_ltj_fontspec_fontfeat_yoko_clist }
+}
+\cs_new:Nn \ltj_fontspec_declare_shape_tate:nnnn {
+ \ltj_fontspec_declare_shape_aux:nnnnnn {#1} {#2} {#3} {#4} { JT3 } { \l_ltj_fontspec_fontfeat_tate_clist }
+}
\cs_new:Nn \ltj_fontspec_declare_shape:nnnn {
- \ltj_fontspec_declare_shape_aux:nnxxnn {#1} {#2} {#3} {#4} { JY3 } { \l_ltj_fontspec_fontfeat_yoko_clist }
- \ltj_fontspec_declare_shape_aux:nnxxnn {#1} {#2} {#3} {#4} { JT3 } { \l_ltj_fontspec_fontfeat_tate_clist }
+ \ltj_fontspec_declare_shape_yoko:nnnn {#1} {#2} {#3} {#4}
+ \ltj_fontspec_declare_shape_tate:nnnn {#1} {#2} {#3} {#4}
}
+\cs_generate_variant:Nn \ltj_fontspec_declare_shape:nnnn {nnxx}
+\cs_generate_variant:Nn \ltj_fontspec_declare_shape_yoko:nnnn {nnxx}
+\cs_generate_variant:Nn \ltj_fontspec_declare_shape_tate:nnnn {nnxx}
\cs_new:Nn \ltj_fontspec_declare_shape_aux:nnnnnn
{
\__fontspec_declare_shapes_normal:nn {#1} {#2}
\__fontspec_declare_shape_slanted:nn {#1} {#2}
}
-\cs_generate_variant:Nn \ltj_fontspec_declare_shape:nnnn {nnxx}
-\cs_generate_variant:Nn \ltj_fontspec_declare_shape_aux:nnnnnn {nnxxnn}
\cs_new:Nn \ltj_fontspec_set_family:Nnn {
\cs_set_eq:NN \fontspec_select:nn \ltj_fontspec_select:nn
\cs_set_eq:NN \__ltj_fontspec_orig_DeclareFontShape \DeclareFontShape
\cs_new:Nn \ltj_fontspec_make_font_shapes:Nnnnn {
\group_begin:
+ %% 基底フォント
\cs_set_eq:NN \__fontspec_font_set:Nnn \use_none:nnn
\cs_set_eq:NN \__fontspec_font_if_null:NT \use_none:nn
\cs_set_eq:NN \__fontspec_declare_shape:nnxx \ltj_fontspec_declare_shape:nnxx
\__ltj_orig_fontspec_make_font_shapes:Nnnnn {#1} {#2} {#3} {#4} {#5}
%%
+ \ltj_fontspec_make_font_shapes_alt:Nnnnnn {#1}{#2}{#3}
+ {#4, \l_ltj_fontspec_fontfeat_yoko_clist}{#5} {JY3 }
+ \ltj_fontspec_make_font_shapes_alt:Nnnnnn {#1}{#2}{#3}
+ {#4, \l_ltj_fontspec_fontfeat_tate_clist}{#5} {JT3}
+ \group_end:
+ }
+
+%%% Altfont 内部処理部
+\cs_new:Nn \ltj_fontspec_make_font_shapes_alt:Nnnnnn {
+ \group_begin:
+ \str_if_eq:nnTF { #6 } { JY3 } {
+ \cs_set_eq:NN \__fontspec_declare_shape:nnxx \ltj_fontspec_declare_shape_yoko:nnxx
+ }{
+ \cs_set_eq:NN \__fontspec_declare_shape:nnxx \ltj_fontspec_declare_shape_tate:nnxx
+ }
\keys_set_known:nn {fontspec-ltjaltfont-reparse} { #4 }
\clist_if_empty:NF \l_ltj_fontspec_altfont_clist {
\int_gzero:N \g_ltj_fontspec_altnumber_int
\keys_set_known:nxN {fontspec-ltjaltfont} { \exp_after:wN \use:n ##1 }
\l_ltj_fontspec_altfont_leftover_clist
+ \keys_set_known:nn {fontspec-ltjaltfont-reparse} { \exp_after:wN \use:n ##1 }
\tl_if_empty:NT \l_ltj_fontspec_altrange_tl {
\msg_warning:nnn {luatexja-fontspec} {altfont-ignored-by-norange} { ##1 }
} {
\msg_warning:nnn {luatexja-fontspec} {altfont-ignored-by-rangeonly} { ##1 }
} {
+ \typeout{LEFT:~<\l_ltj_fontspec_altfont_leftover_clist>~vs~4~<#4>}
\__ltj_orig_fontspec_make_font_shapes:Nnnnn
{ \l_ltj_fontspec_altname_tl } {#2}
{#3 _ alt \int_use:N \g_ltj_fontspec_altnumber_int }
{#4, \l_ltj_fontspec_altfont_leftover_clist }
{#5}
\DeclareAlternateKanjiFont
- {JY3}{ \l_fontspec_family_tl }{#2}{#3}%
- {JY3}{ \l_fontspec_family_tl }{#2}
- { #3 _alt \int_use:N \g_ltj_fontspec_altnumber_int }
- { \l_ltj_fontspec_altrange_tl }
- \DeclareAlternateKanjiFont
- {JT3}{ \l_fontspec_family_tl }{#2}{#3}%
- {JT3}{ \l_fontspec_family_tl }{#2}
+ { #6 }{ \l_fontspec_family_tl }{#2}{#3}%
+ { #6 }{ \l_fontspec_family_tl }{#2}
{ #3 _alt \int_use:N \g_ltj_fontspec_altnumber_int }
{ \l_ltj_fontspec_altrange_tl }
\int_gincr:N \g_ltj_fontspec_altnumber_int
}
}
\group_end:
- }
+}
+
%%%%%%%% User commands
\DeclareDocumentCommand \jfontspec { O{} m O{} } {
',', '.'
},
align = 'left', left = 0.00, down = 0.00,
- width = 1.0, height = vht, depth = vht, italic=0.0,
+ width = 0.5, height = vht, depth = vht, italic=0.0,
glue = {
[0] = { 0.5, 0.190480, 0.5 },
[1] = { 0, 0, 0 },
'、', '。'
},
align = 'left', left = 0.00, down = 0.00,
- width = 1.0, height = vht, depth = vht, italic=0.0,
+ width = 0.5, height = vht, depth = vht, italic=0.0,
glue = {
[0] = { 0.5, 0.190480, 0.5 },
[1] = { 0, 0, 0 },
v.align = 'left' -- left
end
if real_char then
- print(i, v.width)
if type(v.width)~='number' and v.width~='prop' then
defjfm_res= nil; return
else
\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},
+ {Range="3080-"30FF, Color=7F0000,}
},
BoldFont={ JJSYuGothicPr6N-M },
]{JJSYuMinchoPr6N-R}
\jfontspec[
AltFont={
{Font=JJSYuMin5goKn-R,Range="3000-"30FF, Color=007F00},
- {Font=DejaVuSans, Range={"21B3,"21B5},Color=0000FF,JFM=prop },
+ {Font=DejaVuSans, Range={"21B3,"21B5},Color=0000FF,YokoFeatures={JFM=prop} },
}
]{JJSYuMinchoPr6N-R}
}
\section{addfontfeatures}
+\piyo\test
\addjfontfeatures{
AltFont={ {Range="4F00-"6FFF, Color=0000FF}, },
- Color=001F00,CJKShape=Traditional
-% AltFontFeature, AltFontRange は累積しない
+ Color=003F00,CJKShape=Traditional
+%% AltFont は累積する
}
\makeatletter\k@family\test
+\section{YokoFeaturesなどとの関係}
\paragraph{うまくいかない例: YokoFeatures等の中にAltFont}
{%
-\addjfontfeature{
+\jfontspec[
YokoFeatures = {
AltFont={
{Font=JJSYuMin5goKn-D,Range="3000-"30FF, Color=003F3F},
{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{ã\81\86ã\81¾ã\81\8fã\81\84ã\81\8bã\81ªã\81\84例: AltFontの中にYokoFeature}
+\paragraph{ã\81\86ã\81¾ã\81\8fã\81\84ã\81\8f例: AltFontの中にYokoFeature}
{%
-\addjfontfeature{
+\jfontspec[
%YokoFeatures = { JFM=min },
AltFont={
{
- YokoFeatures = { Font=JJSYuMin5goKn-D, Color=FF3F3F },
- TateFeatures = { Font=JJSYuMin5goKn-R, Color=7F0000, JFM=tmin },
+ Font=JJSYuMin5goKn-D, YokoFeatures = { Color=FF3F3F },
+ TateFont = JJSYuMin5goKn-R, TateFeatures = { Color=7F0000, JFM=tmin },
Range="3000-"304F,
},
{
- YokoFeatures = { Font=JJSYuMin5goKn-D, Color=FF3F3F },
- TateFeatures = { Font=JJSYuMin5goKn-R, Color=00007F },
+ Font=JJSYuMin5goKn-D, YokoFeatures = { Color=4F3F3F },
+ TateFont=JJSYuMin5goKn-R, TateFeatures = { Color=00007F },
Range="3050-"30FF,
},
}
-}
+]{JJSYuMinchoPr6N-R}
\makeatletter\k@family\test
}
\paragraph{BoldFeaturesとAltFontその1}
\jfontspec
[
- AltFont = { { Color=0000FF, Range="4000-"9FFF } },
+ AltFont = { { Color=0000FF, Range="6000-"9FFF } },
BoldFont=KozMinPr6N-Bold,
UprightFeatures = {
- AltFont = { { Font=KozGoPr6N-Light, Range="3000-"30FF } },
+ AltFont = {
+ { Font=KozGoPr6N-Light, Range="3000-"30FF, TateFont = KozGoPr6N-Heavy,
+ YokoFeatures={ Color=4F0000} }
+ },
},
BoldFeatures = { Color=006F00,
AltFont = { { Font=KozGoPr6N-Bold, Range="3000-"30FF } },