OSDN Git Service

Fix a memory leak in jfmglue.lua and pretreat.lua.
[luatex-ja/luatexja.git] / src / luatexja-fontspec.sty
index 7de4063..1c34d5d 100644 (file)
@@ -5,7 +5,7 @@
 \NeedsTeXFormat{LaTeX2e}
 \ProvidesPackage{luatexja-fontspec}[2011/09/23 v0.2]
 
-\RequirePackage{fontspec}[2011/09/18] % v2.2a
+\RequirePackage{fontspec}
 \RequirePackage{luatexja}
 
 \ExplSyntaxOn
   it~ cannot~ be~ used~ with~ a~ font~ that~ wasn't~ selected~ by~ luatexja-fontspec.
 }
 
+\cs_generate_variant:Nn \prg_new_conditional:Nnn {Nnx}
+
+\prg_new_conditional:Nnx \ltj_fontspec_if_liiikeys: {TF,F} {
+  \@ifpackagelater {fontspec} {2011/09/13}
+  { \exp_not:N \prg_return_true: }  % fontspec >= 2.2 (l3keys)
+  { \exp_not:N \prg_return_false: } % fontspec <  2.2 (xkeyval)
+}
+
+\cs_new:Nn \ltj_fontspec_define_option:nn {
+  \ltj_fontspec_if_liiikeys:TF {
+    \keys_define:nn {fontspec} { #1 .code:n = {#2}}
+  } {
+    \define@key[zf]{options}{#1}{#2}
+  }
+}
+
+\cs_new:Nn \ltj_fontspec_define_preparse_external:nn {
+  \ltj_fontspec_if_liiikeys:TF {
+    \keys_define:nn {fontspec-preparse-external} { #1 .code:n = {#2}}
+  } {
+    \define@key[zf]{preparse-external}{#1}{#2}
+  }
+}
+
 \cs_new:Nn \ltj_fontspec_select:nn {
   \group_begin:
-  \keys_define:nn {fontspec} { JFM .code:n = {
-      \fontspec_update_fontid:n  {+jfm=##1}
-      \fontspec_update_featstr:n {jfm=##1}      
-    }
+  \ltj_fontspec_define_option:nn {JFM} {
+    \fontspec_update_fontid:n  {+jfm=##1}
+    \fontspec_update_featstr:n {jfm=##1}      
   }
-  \keys_define:nn {fontspec} { JFM-var .code:n = {
-      \fontspec_update_fontid:n  {+jfmvar=##1}
-      \fontspec_update_featstr:n {jfmvar=##1}      
-    }
+  \ltj_fontspec_define_option:nn {JFM-var} {
+    \fontspec_update_fontid:n  {+jfmvar=##1}
+    \fontspec_update_featstr:n {jfmvar=##1}      
   }
-  \keys_define:nn {fontspec-preparse-external} { NoEmbed .code:n = {
-      \cs_set:Nn \fontspec_namewrap:n {psft:####1}
-    }
+  \ltj_fontspec_define_preparse_external:nn {NoEmbed} {
+    \cs_set:Nn \fontspec_namewrap:n {psft:####1}
+  }
+  %% Omit the warning message
+  %% "OpenType feature 'Kerning=Off' (-kern) not available ..."
+  \ltj_fontspec_define_option:nn {Kerning/Off} {
+    \fontspec_update_fontid:n  {-kern}
+    \fontspec_update_featstr:n {-kern}      
+  }  
+  \ltj_fontspec_if_liiikeys:TF {
+    \tl_set:Nn \g_fontspec_encoding_tl {JY3}
+  } {
+    \tl_set:Nn \zf@enc {JY3}
   }
-  \tl_set:Nn \g_fontspec_encoding_tl {JY3}
   \tl_set:Nx \g_fontspec_default_fontopts_tl 
-             {JFM=ujis,Scale=0.960444,\g_ltj_fontspec_default_fontopts_tl}
+             {JFM=ujis,Scale=0.962216,Kerning=Off,\g_ltj_fontspec_default_fontopts_tl}
   \cs_set_eq:NN \DeclareFontFamily \DeclareKanjiFamily
   \fontspec_select:nn{#1}{#2}
-  \tl_set:Nn \l_fontspec_lang_tl   {dflt}
-  \tl_set:Nn \l_fontspec_script_tl {latn}
-  \fontspec_check_ot_feat:nT {+kern} {
-    \tl_set:Nx \g_fontspec_default_fontopts_tl 
-               {JFM=ujis,Scale=0.960444,Kerning=Off,\g_ltj_fontspec_default_fontopts_tl}
-    \fontspec_select:nn{#1}{#2}
-  }
   \group_end:
+  \ltj_fontspec_if_liiikeys:F {
+    \tl_set_eq:NN \l_fontspec_family_tl \zf@family
+  }
 }
 
 \cs_new:Nn \ltj_fontspec_set_family:Nnn {