OSDN Git Service

luatexja-fontspec-26h: AltFont and Boldfont
authorHironori Kitagawa <h_kitagawa2001@yahoo.co.jp>
Thu, 2 Aug 2018 02:09:42 +0000 (11:09 +0900)
committerHironori Kitagawa <h_kitagawa2001@yahoo.co.jp>
Thu, 2 Aug 2018 02:09:42 +0000 (11:09 +0900)
src/addons/luatexja-fontspec-26h.sty

index 8cd664f..7f3f60c 100644 (file)
@@ -3,7 +3,7 @@
 %
 
 \NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{luatexja-fontspec-26h}[2018/07/31 fontspec support of LuaTeX-ja]
+\ProvidesPackage{luatexja-fontspec-26h}[2018/08/02 fontspec support of LuaTeX-ja]
 \RequirePackage{l3keys2e,luatexja}
 \ExplSyntaxOn
 
   \DeclareKanjiFamily {JT3} {#2} {#3}
 }
 
+%% save and restore global variable
 \tl_new:N \g__ltj_fontspec_kanji_nfss_family_tl
 \tl_new:N \g__ltj_fontspec_orig_nfss_family_tl
+%\seq_new:N \g__ltj_fontspec_kanji_bf_series_seq
+\seq_new:N \g__ltj_fontspec_orig_bf_series_seq
+\clist_new:N \g__ltj_fontspec_kanji_default_fontopts_clist
+\clist_new:N \g__ltj_fontspec_orig_default_fontopts_clist
+
+\cs_new:Nn \__ltj_set_global_variable_for_kanji: {
+  \tl_gset_eq:NN \g__ltj_fontspec_orig_nfss_family_tl \g__fontspec_nfss_family_tl
+  \tl_gset_eq:NN \g__fontspec_nfss_family_tl \g__ltj_fontspec_kanji_nfss_family_tl
+  \seq_gset_eq:NN \g__ltj_fontspec_orig_bf_series_seq \g__fontspec_bf_series_seq
+  %\seq_gset_eq:NN \g__fontspec_bf_series_seq \g__ltj_fontspec_kanji_bf_series_seq
+  \seq_gclear:N \g__fontspec_bf_series_seq
+  \clist_set_eq:NN \g__ltj_fontspec_orig_default_fontopts_clist \g__fontspec_default_fontopts_clist
+  \clist_set_eq:NN \g__fontspec_default_fontopts_clist \g__ltj_fontspec_kanji_default_fontopts_clist
+}
+
+\cs_new:Nn \__ltj_restore_global_variable: {
+  \tl_gset_eq:NN \g__ltj_fontspec_kanji_nfss_family_tl \g__fontspec_nfss_family_tl
+  \tl_gset_eq:NN \g__fontspec_nfss_family_tl \g__ltj_fontspec_orig_nfss_family_tl
+  %\seq_gset_eq:NN \g__ltj_fontspec_kanji_bf_series_seq \g__fontspec_bf_series_seq
+  \seq_gset_eq:NN \g__fontspec_bf_series_seq \g__ltj_fontspec_orig_bf_series_seq
+  \clist_set_eq:NN \g__ltj_fontspec_kanji_default_fontopts_clist \g__fontspec_default_fontopts_clist
+  \clist_set_eq:NN \g__fontspec_default_fontopts_clist \g__ltj_fontspec_orig_default_fontopts_clist
+}
 
 \cs_set_eq:NN \__ltj_orig_fontspec_select_font_family:nn \__fontspec_select_font_family:nn
 \cs_new_protected:Nn \ltj_fontspec_select_font_family:nn {
   \clist_set:Nx \g__fontspec_default_fontopts_clist {
     YokoFeatures = { JFM=ujis }, TateFeatures = { JFM=ujisv },
     Scale=\Cjascale, Kerning=Off, Script=CJK,
-    \g__ltj_fontspec_default_fontopts_clist
+    \g__ltj_fontspec_kanji_default_fontopts_clist
   }
   \prop_set_eq:NN \g__fontspec_fontopts_prop \g__ltj_fontspec_fontopts_prop
   \cs_set_eq:NN \__fontspec_make_font_shapes:Nnnnn \ltj_fontspec_make_font_shapes:Nnnnn
  }
 
 \cs_new:Nn \ltj_fontspec_set_family:Nnn {
-  %\typeout{A>>[\g__fontspec_nfss_family_tl][\g__ltj_fontspec_kanji_nfss_family_tl]}
-  \tl_gset_eq:NN \g__ltj_fontspec_orig_nfss_family_tl \g__fontspec_nfss_family_tl
-  \tl_gset_eq:NN \g__fontspec_nfss_family_tl \g__ltj_fontspec_kanji_nfss_family_tl
+  \__ltj_set_global_variable_for_kanji:
   \cs_set_eq:NN \__fontspec_select_font_family:nn \ltj_fontspec_select_font_family:nn
   \__ltj_orig_fontspec_set_family:Nnn #1 {#2} {#3}
-  \cs_set_eq:NN \__fontspec_select_font_family:nn \__ltj_orig_fontspec_select_font_family:nn
-  \tl_gset_eq:NN \g__ltj_fontspec_kanji_nfss_family_tl \g__fontspec_nfss_family_tl
-  \tl_gset_eq:NN \g__fontspec_nfss_family_tl \g__ltj_fontspec_orig_nfss_family_tl
-  %\typeout{B>>[\g__fontspec_nfss_family_tl][\g__ltj_fontspec_kanji_nfss_family_tl]}
+  \__ltj_restore_global_variable:
 }
 \cs_set_eq:NN \__ltj_orig_fontspec_set_family:Nnn \fontspec_set_family:Nnn
 \cs_set_eq:NN \__ltj_orig_fontspec_make_font_shapes:Nnnnn \__fontspec_make_font_shapes:Nnnnn
                 {#4, \l_ltj_fontspec_altfont_leftover_clist }
                 {#5}
             \DeclareAlternateKanjiFont
-              { #6 }{ \l_fontspec_family_tl }{#2}{#3}%
-              { #6 }{ \l_fontspec_family_tl }{#2}
+              { #6 }{ \g__fontspec_nfss_family_tl }{#2}{#3}%
+              { #6 }{ \g__fontspec_nfss_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
   \newjfontfamily #1 [ BoldFont={},ItalicFont={},SmallCapsFont={},#2,#4 ] {#3}
 }
 
-\clist_new:N \g__ltj_fontspec_default_fontopts_clist
 \prop_new:N \g__ltj_fontspec_fontopts_prop
 \DeclareDocumentCommand \defaultjfontfeatures { t+ o m }
  {
  }
 \cs_new:Nn \__ltj_fontspec_set_default_features:nn
  {
-   \clist_set_eq:NN \l__ltj_fontspec_tmp_clist \g__fontspec_default_fontopts_clist
-   \clist_set_eq:NN \g__fontspec_default_fontopts_clist \g__ltj_fontspec_default_fontopts_clist
+   \__ltj_set_global_variable_for_kanji:
    \__fontspec_set_default_features:nn {#1} {#2}
-   \clist_set_eq:NN \g__ltj_fontspec_default_fontopts_clist \g__fontspec_default_fontopts_clist
-   \clist_set_eq:NN \g__fontspec_default_fontopts_clist \l__ltj_fontspec_tmp_clist
+   \__ltj_restore_global_variable:
  }
 \cs_new:Nn \__ltj_fontspec_set_font_default_features:nnn
  {
 \DeclareDocumentCommand \addjfontfeatures {m} {
   \ltj_fontspec_if_fontspec_font:TF
    {
-    %\typeout{C>>[\g__fontspec_nfss_family_tl][\g__ltj_fontspec_kanji_nfss_family_tl]}
-    \tl_gset_eq:NN \g__ltj_fontspec_orig_nfss_family_tl \g__fontspec_nfss_family_tl
-    \tl_gset_eq:NN \g__fontspec_nfss_family_tl \g__ltj_fontspec_kanji_nfss_family_tl
+    \__ltj_set_global_variable_for_kanji:
     \group_begin:
       \tl_set_eq:NN \f@family \k@family
       \cs_set_eq:NN \__fontspec_select_font_family:nn \ltj_fontspec_select_font_family:nn
       \addfontfeatures {#1}
     \group_end:
     \kanjifamily\g__fontspec_nfss_family_tl\selectfont
-    \tl_gset_eq:NN \g__ltj_fontspec_kanji_nfss_family_tl \g__fontspec_nfss_family_tl
-    \tl_gset_eq:NN \g__fontspec_nfss_family_tl \g__ltj_fontspec_orig_nfss_family_tl
-    %\typeout{D>>[\g__fontspec_nfss_family_tl][\g__ltj_fontspec_kanji_nfss_family_tl]}
+    \__ltj_restore_global_variable:
    }{
     \msg_warning:nn  {luatexja-fontspec} {addjfontfeatures-ignored}
    }