OSDN Git Service

luatexja-fontspec: Fix \addjfontfeatures.
[luatex-ja/luatexja.git] / src / addons / luatexja-fontspec-24.sty
index 7696714..894f3cf 100644 (file)
 }
 
 \cs_new:Nn \__ltj_fontspec_altfont_key_code:n
- {
+{
   \clist_set:Nn \l_ltj_fontspec_altfont_clist  {#1}
-  \fontspec_update_fontid:n {alt:#1}
- }
+}
 
+\cs_set_eq:NN \__ltj_orig_fontspec_select:nn \fontspec_select:nn
 \cs_new:Nn \ltj_fontspec_select:nn {
   \group_begin:
   \ltj_fontspec_define_option:nn {AltFont} {
     \__fontspec_update_featstr:n {jfmvar=##1}
   }
   \ltj_fontspec_define_preparse_external:nn {NoEmbed} {
-    \cs_set:Nn \fontspec_namewrap:n {psft:####1}
+    \cs_set:Nn \__fontspec_namewrap:n {psft:####1}
   }
   %% Omit the warning message
   %% "OpenType feature 'Kerning=Off' (-kern) not available ..."
              {JFM=ujis, Scale=\fp_use:N \g_ltj_fontspec_scale_fp,
               Kerning=Off, \g_ltj_fontspec_default_fontopts_tl}
   \prop_set_eq:NN \g__fontspec_fontopts_prop \g__ltj_fontspec_fontopts_prop
-  \cs_set_eq:NN \fontspec_make_font_shapes:nnnn \ltj_fontspec_make_font_shapes:nnnn
+  \cs_set_eq:NN \__fontspec_make_font_shapes:Nnnnn \ltj_fontspec_make_font_shapes:Nnnnn
   \cs_set_eq:NN \DeclareFontFamily \DeclareKanjiFamily
-  \fontspec_select:nn{#1}{#2}
+  \__ltj_orig_fontspec_select:nn{#1}{#2}
   \group_end:
 }
 
   \ltj_fontspec_select:nn{#2}{#3}
   \tl_set_eq:NN #1 \l_fontspec_family_tl
 }
-\cs_set_eq:NN \__ltj_orig_fontspec_make_font_shapes:nnnn \fontspec_make_font_shapes:nnnn
+\cs_set_eq:NN \__ltj_orig_fontspec_make_font_shapes:Nnnnn \__fontspec_make_font_shapes:Nnnnn
 \cs_set_eq:NN \__ltj_fontspec_orig_DeclareFontShape \DeclareFontShape
-\cs_new:Nn \ltj_fontspec_make_font_shapes:nnnn {
-  \__ltj_orig_fontspec_make_font_shapes:nnnn {#1} {#2} {#3} {#4}
+\cs_new:Nn \ltj_fontspec_make_font_shapes:Nnnnn {
+  \__ltj_orig_fontspec_make_font_shapes:Nnnnn {#1} {#2} {#3} {#4} {#5}
   \group_begin:
     %% Parse font features. However, we have to avoid redefine already defined shape.
     \__fontspec_load_fontname:n {#1}
     \cs_set_eq:NN \DeclareFontShape \use_none:nnnnnn
-    \fontspec_declare_shape:nnn {#2}{#3}
-     { \quark_if_no_value:NF \l__fontspec_fontopts_clist {\l__fontspec_fontopts_clist,} #4 }
+    \__fontspec_declare_shape:nnxx {#2} {#3} { \l__fontspec_fontopts_clist, #4 } {#5}
     \cs_set_eq:NN \DeclareFontShape \__ltj_fontspec_orig_DeclareFontShape
     %%
     \clist_if_empty:NF \l_ltj_fontspec_altfont_clist {
           } {
             \group_begin:
               \__fontspec_load_fontname:n { \l_ltj_fontspec_altname_tl }
-              \fontspec_declare_shape:nnn {#2}
+              \__fontspec_declare_shape:nnxx {#2}
                 {#3 _ alt \int_use:N \g_ltj_fontspec_altnumber_int }
-                {
-                  \quark_if_no_value:NF \l__fontspec_fontopts_clist {\l__fontspec_fontopts_clist,}
-                  #4 , \l_ltj_fontspec_altfont_leftover_clist
-                }
+                {\l__fontspec_fontopts_clist, #4 , \l_ltj_fontspec_altfont_leftover_clist}
+                {#5}
             \group_end:
             \DeclareAlternateKanjiFont
               {JY3}{ \l_fontspec_family_tl }{#2}{#3}%
  }
 
 \DeclareDocumentCommand \addjfontfeatures {m} {
-  \ifcsname zf@family@fontdef\k@family\endcsname
+  \ltj_fontspec_if_fontspec_font:TF
+   {
     \group_begin:
-      \tl_clear:N \g_ltj_fontspec_default_fontopts_tl
-      \use:x {
-        \exp_not:N\ltj_fontspec_select:nn
-          {\csname zf@family@options\k@family\endcsname,#1}
-          {\csname zf@family@fontname\k@family\endcsname}
-      }
+      \tl_set_eq:NN \f@family \k@family
+      \cs_set_eq:NN \fontspec_select:nn \ltj_fontspec_select:nn
+      \addfontfeatures {#1}
     \group_end:
     \fontfamily\l_fontspec_family_tl\selectfont
-  \else
+   }{
     \msg_warning:nn  {luatexja-fontspec} {addjfontfeatures-ignored}
-  \fi
+   }
   \ignorespaces
 }
 
 \cs_set_eq:NN \addjfontfeature \addjfontfeatures
 
+\prg_new_conditional:Nnn \ltj_fontspec_if_fontspec_font: {TF,T,F}
+{
+  \cs_if_exist:cTF {g__fontspec_ \k@family _prop} \prg_return_true: \prg_return_false:
+}
+
+
 %%% CJKShape=JIS2004
 \__fontspec_define_feature_option:nnnnn{CJKShape}{JIS2004}{20}{5}{+jp04}