OSDN Git Service

luatexja-preset: use l3keys2e (to accept 'scale=<fp>,nfssonly')
authorHironori Kitagawa <h_kitagawa2001@yahoo.co.jp>
Thu, 31 Dec 2015 08:22:42 +0000 (17:22 +0900)
committerHironori Kitagawa <h_kitagawa2001@yahoo.co.jp>
Thu, 31 Dec 2015 08:22:42 +0000 (17:22 +0900)
src/addons/luatexja-preset.sty
src/addons/luatexja-ruby.sty
src/ltj-jfont.lua
test/test16-preset.pdf
test/test16-preset.tex

index f66d0e0..c06ed7c 100644 (file)
@@ -1,43 +1,58 @@
 % luatexja-preset.sty
 \ProvidesPackage{luatexja-preset}[2015/06/28 Japanese font presets]
 
-\RequirePackage{expl3}
+\RequirePackage{expl3,l3keys2e}
 \RequirePackage{luatexja}
 \ExplSyntaxOn
 
-%%%% message
+\fp_new:N \l_ltjpreset_scale_fp
+\group_begin:
+\fontsize{10}{10}\selectfont
+\fp_gset:Nn \l_ltjpreset_scale_fp {\zw / 10}
+\group_end:
+
+\keys_define:nn { luatexja-preset }{  
+  unknown .code:n = \PassOptionsToPackage { \l_keys_key_tl } { luatexja-fontspec },
+  scale .fp_gset:N = \l_ltjpreset_scale_fp
+}
+\cs_new:Nn \ltjpreset_declare_option:nn {
+  \keys_define:nn { luatexja-preset }{
+    #1 .code:n = #2,
+    #1. value_forbidden:n = true
+  }
+}
+
 \bool_new:N \l_ltjpreset_nfssonly_bool % nfssonly
 \bool_set_false:N \l_ltjpreset_nfssonly_bool
-\DeclareOption{nfssonly}  {\bool_set_true:N \l_ltjpreset_nfssonly_bool}
-\DeclareOption{fontspec}  {\bool_set_false:N \l_ltjpreset_nfssonly_bool}
+\ltjpreset_declare_option:nn{nfssonly}  {\bool_set_true:N \l_ltjpreset_nfssonly_bool}
+\ltjpreset_declare_option:nn{fontspec}  {\bool_set_false:N \l_ltjpreset_nfssonly_bool}
 
 \bool_new:N \l_ltjpreset_bold_bool % bold
 \bool_set_false:N \l_ltjpreset_bold_bool
-\DeclareOption{bold}  {\bool_set_true:N \l_ltjpreset_bold_bool}
-\DeclareOption{nobold}{\bool_set_false:N \l_ltjpreset_bold_bool}
+\ltjpreset_declare_option:nn{bold}  {\bool_set_true:N \l_ltjpreset_bold_bool}
+\ltjpreset_declare_option:nn{nobold}{\bool_set_false:N \l_ltjpreset_bold_bool}
 
 \bool_new:N \l_ltjpreset_expert_bool % expert
 \bool_set_false:N \l_ltjpreset_expert_bool
-\DeclareOption{expert}  {\bool_set_true:N \l_ltjpreset_expert_bool}
-\DeclareOption{noexpert}{\bool_set_false:N \l_ltjpreset_expert_bool}
+\ltjpreset_declare_option:nn{expert}  {\bool_set_true:N \l_ltjpreset_expert_bool}
+\ltjpreset_declare_option:nn{noexpert}{\bool_set_false:N \l_ltjpreset_expert_bool}
 
 \int_new:N \l_ltjpreset_deluxe_int % deluxe
 \int_set:Nn \l_ltjpreset_deluxe_int { 0 }
-\DeclareOption{deluxe}{\int_set:Nn \l_ltjpreset_deluxe_int { 2 }}   % 6 fonts
-\DeclareOption{nodeluxe}{\int_set:Nn \l_ltjpreset_deluxe_int { 0 }} % 2 fonts
+\ltjpreset_declare_option:nn{deluxe}{\int_set:Nn \l_ltjpreset_deluxe_int { 2 }}   % 6 fonts
+\ltjpreset_declare_option:nn{nodeluxe}{\int_set:Nn \l_ltjpreset_deluxe_int { 0 }} % 2 fonts
 
-\DeclareOption*{\PassOptionsToPackage{\CurrentOption}{luatexja-fontspec}}
 % JFM
 \cs_set:Npn \ltjpreset_use_jfm: {ujis}  % 使用する JFM
-%%% \DeclareOption{min}{\cs_set:Npn  \ltjpreset_use_jfm: {min}} % min
+%%% \ltjpreset_declare_option:nn{min}{\cs_set:Npn  \ltjpreset_use_jfm: {min}} % min
 %%% ↑jfm-min.lua が横組み・縦組み専用仮名に追いついていないので使用禁止
-\DeclareOption{jis}{\cs_set:Npn  \ltjpreset_use_jfm: {jis}}     % jis
-\DeclareOption{ujis}{\cs_set:Npn  \ltjpreset_use_jfm: {ujis}}   % ujis
+\ltjpreset_declare_option:nn{jis}{\cs_set:Npn  \ltjpreset_use_jfm: {jis}}     % jis
+\ltjpreset_declare_option:nn{ujis}{\cs_set:Npn  \ltjpreset_use_jfm: {ujis}}   % ujis
 
 % 漢字字形
 \tl_new:N \l_ltjpreset_kanji_shape_tl
-\DeclareOption{90jis}{  \tl_set:Nn \l_ltjpreset_kanji_shape_tl { , CJKShape=JIS1990 }} % 90jis
-\DeclareOption{jis2004}{\tl_set:Nn \l_ltjpreset_kanji_shape_tl { , CJKShape=JIS2004 }} % jis2004
+\ltjpreset_declare_option:nn{90jis}{  \tl_set:Nn \l_ltjpreset_kanji_shape_tl { , CJKShape=JIS1990 }} % 90jis
+\ltjpreset_declare_option:nn{jis2004}{\tl_set:Nn \l_ltjpreset_kanji_shape_tl { , CJKShape=JIS2004 }} % jis2004
 
 % font preset
 \bool_new:N \l_ltjpreset_office_bool  % MS Office の HG 系フォントを使っているか
 }
 
 
+%%%%%%%% プリセット達
+
 % 小塚 (Adobe)
 %% Pro
-\DeclareOption{kozuka-pro}{
+\ltjpreset_declare_option:nn{kozuka-pro}{
   \ltjpreset_set_multi:n {
     KozMinPro-Regular , % mc/m
     KozMinPro-Bold ,    % mc/bx
@@ -77,7 +94,7 @@
   }
 }
 %% Pr6
-\DeclareOption{kozuka-pr6}{
+\ltjpreset_declare_option:nn{kozuka-pr6}{
   \ltjpreset_set_multi:n {
     KozMinProVI-Regular , % mc/m
     KozMinProVI-Bold ,    % mc/bx
   }
 }
 %% Pr6N
-\DeclareOption{kozuka-pr6n}{
+\ltjpreset_declare_option:nn{kozuka-pr6n}{
   \ltjpreset_set_multi:n {
     KozMinPr6N-Regular , % mc/m
     KozMinPr6N-Bold ,    % mc/bx
 }
 
 % ヒラギノ (OSX)
-\DeclareOption{hiragino-pro}{
+\ltjpreset_declare_option:nn{hiragino-pro}{
   \ltjpreset_set_multi:n {
     HiraMinPro-W3 , 
     HiraMinPro-W6 , 
     HiraMaruPro-W4 , 
   }
 }
-\DeclareOption{hiragino-pron}{
+\ltjpreset_declare_option:nn{hiragino-pron}{
   \ltjpreset_set_multi:n {
     HiraMinProN-W3 , 
     HiraMinProN-W6 , 
 }
 
 % モリサワ
-\DeclareOption{morisawa-pro}{
+\ltjpreset_declare_option:nn{morisawa-pro}{
   \ltjpreset_set_multi:n {
     A-OTF-RyuminPro-Light.otf , A-OTF-FutoMinA101Pro-Bold.otf ,    % mc/m, mc/bx
     A-OTF-GothicBBBPro-Medium.otf , A-OTF-FutoGoB101Pro-Bold.otf , % gt/m, gt/bx (multiweight))
     A-OTF-Jun101Pro-Light.otf % mg/m
   }
 }
-\DeclareOption{morisawa-pr6n}{
+\ltjpreset_declare_option:nn{morisawa-pr6n}{
   \ltjpreset_set_multi:n {
     A-OTF-RyuminPr6N-Light.otf , A-OTF-FutoMinA101Pr6N-Bold.otf ,    % mc/m, mc/bx
     A-OTF-GothicBBBPr6N-Medium.otf , A-OTF-FutoGoB101Pr6N-Bold.otf , % gt/m, gt/bx (multiweight))
 }
 
 % 游明朝/游ゴシック (Win8.1)
-\DeclareOption{yu-win}{
+\ltjpreset_declare_option:nn{yu-win}{
   \ltjpreset_set_multi:n {
     YuMincho-Regular , YuMincho-Demibold , % mc/m, mc/bx
     YuGothic-Regular , YuGothic-Bold ,     % gt/m, gt/bx (multiweight))
 
 % Yu fonts in OSX
 % according to http://support.apple.com/kb/HT5944
-\DeclareOption{yu-osx}{
+\ltjpreset_declare_option:nn{yu-osx}{
   \ltjpreset_set_multi:n {
     YuMincho~Medium , YuMincho~Demibold , % mc/m, mc/bx
     YuGothic~Medium , YuGothic~Bold ,     % gt/m, gt/bx (multiweight))
 }
 
 % moga-mobo
-\DeclareOption{moga-mobo}{
+\ltjpreset_declare_option:nn{moga-mobo}{
   \ltjpreset_set_multi:n {
     Moga90Mincho, Moga90Mincho~Bold ,       % mc/m, mc/bx
     Moga90Gothic, Moga90Gothic~Bold ,       % gt/m, gt/bx (multiweight))
 
 
 % ipa, ipaex, ms
-\DeclareOption{ipa}{
+\ltjpreset_declare_option:nn{ipa}{
   \ltjpreset_set_uni:nn { IPAMincho } { IPAGothic }
 }
-\DeclareOption{ipaex}{
+\ltjpreset_declare_option:nn{ipaex}{
   \ltjpreset_set_uni:nn { IPAExMincho } { IPAExGothic }
 }
-\DeclareOption{ms}{
+\ltjpreset_declare_option:nn{ms}{
   \ltjpreset_set_uni:nn { MS-Mincho } { MS-Gothic }
 }
 
 % {ipa,ipaex,ms}-dx % Office 付属フォントを利用
-\DeclareOption{ipaex-hg}{
+\ltjpreset_declare_option:nn{ipaex-hg}{
   \ltjpreset_set_office:nn { IPAExMincho } { IPAExGothic }
 }
-\DeclareOption{ipa-hg}{
+\ltjpreset_declare_option:nn{ipa-hg}{
   \ltjpreset_set_office:nn { IPAMincho } { IPAGothic }
 }
-\DeclareOption{ms-hg}{
+\ltjpreset_declare_option:nn{ms-hg}{
   \ltjpreset_set_office:nn { MS-Mincho } { MS-Gothic }
 }
 
 
 % 非埋込
-\DeclareOption{noembed}{
+\ltjpreset_declare_option:nn{noembed}{
   \ltjpreset_set_uni:nn { Ryumin-Light } { GothicBBB-Medium }
   \bool_set_true:N \l_ltjpreset_noembed_bool
 }
 
-\ExecuteOptions{ipaex}
-
-\ProcessOptions*
+\keys_set:nn { luatexja-preset }{ ipaex }
+\ProcessKeysOptions { luatexja-preset }
 
 %%%%%%%% main routine
 
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 %%%%%%%% nfss only
 \bool_if:NTF \l_ltjpreset_nfssonly_bool {
-
-\fp_new:N \l_ltjpreset_scale_fp
-\group_begin:
-\fontsize{10}{10}\selectfont
-\fp_gset:Nn \l_ltjpreset_scale_fp {\zw / 10}
-\group_end:
 \msg_new:nnn { luatexja-preset }{ scale }{
   Japanese~fonts~will~be~scaled~by~\fp_use:N \l_ltjpreset_scale_fp.
 }
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 %%%%%%%% fontspec
 } {
-
+\PassOptionsToPackage { scale = \fp_use:N \l_ltjpreset_scale_fp } { luatexja-fontspec }
 \RequirePackage{luatexja-fontspec}
 % scale
 \msg_new:nnn { luatexja-preset }{ scale }{
index f3ad648..6b5075f 100644 (file)
@@ -4,7 +4,7 @@
 
 % LaTeX only!
 \NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{luatexja-ruby}[2015/05/09 v0.22]
+\ProvidesPackage{luatexja-ruby}[2015/12/29 v0.23]
 \RequirePackage{luatexja}
 
 %%------------------
index cfd544c..6b52ae2 100644 (file)
@@ -699,7 +699,7 @@ do
    local function add_fl_table(dest, glyphs, unitable, asc_des, units)
       local tg, glyphmin, glyphmax = glyphs.glyphs, 0, glyphs.glyphmax
       for _,v in pairs(fields(glyphs)) do
-        if v=='glyphmin' then glyphmin = glyphs.glyphmin; break end
+        if v=='glyphmin' then glyphmin, glyphmax = glyphs.glyphmin, glyphmax+1; break end
       end
       for i = glyphmin, glyphmax-1 do
         local gv = tg[i]
index f1dd58a..373b6c7 100644 (file)
Binary files a/test/test16-preset.pdf and b/test/test16-preset.pdf differ
index 478c018..a012452 100644 (file)
@@ -1,7 +1,6 @@
-%#!luajitlatex test16-preset && pdffonts test16-preset.pdf
-\documentclass{ltjsarticle}
-\usepackage{fontspec}
-\usepackage[hiragino-pron,jis2004,deluxe,expert,nfssonly]{luatexja-preset}
+%#!lualatex test16-preset && pdffonts test16-preset.pdf
+\documentclass{ltjarticle}
+\usepackage[moga-mobo,deluxe,expert, nfssonly, jis2004, match]{luatexja-preset}
 \begin{document}
 \makeatletter
 \def\r#1#2{ \csname #1family \endcsname \csname #2series \endcsname
@@ -35,6 +34,9 @@
 \r{tt}{bf}
 
 $あいう\mathgt{あいう}$
+
+\normalfont
+{あいうえおabc \sf あいうえおabc}
 \end{document}
 
 3.88