From: Hironori Kitagawa Date: Wed, 26 Mar 2014 12:22:12 +0000 (+0900) Subject: luatexja-fontspec.sty: Added AltFont, AltFontFeatures, AltFontRange keys. X-Git-Tag: 20140504.0~8^2~1 X-Git-Url: http://git.osdn.jp/view?a=commitdiff_plain;h=a4cb0fb9e083ff339ba8f923c8c3a3a5deebb418;p=luatex-ja%2Fluatexja.git luatexja-fontspec.sty: Added AltFont, AltFontFeatures, AltFontRange keys. --- diff --git a/src/addons/luatexja-fontspec.sty b/src/addons/luatexja-fontspec.sty index 4623675..6eba74a 100644 --- a/src/addons/luatexja-fontspec.sty +++ b/src/addons/luatexja-fontspec.sty @@ -81,8 +81,51 @@ } } +%% Alternate Fonts +\bool_new:N \l_fontspec_alt_bool +\tl_clear:N \ltj_fontspec_fontname_alt_tl +\tl_clear:N \ltj_fontspec_fontfeat_alt_clist +\tl_clear:N \ltj_fontspec_altrange_clist + +\cs_new:Nn \__ltj_fontspec_altfontrange_key_code:n + { + \bool_if:NF \l_fontspec_firsttime_bool + { + \tl_set:Nn \ltj_fontspec_altrange_clist {#1} + } + } +\cs_new:Nn \__ltj_fontspec_altfontfeature_key_code:n + { + \bool_if:NF \l_fontspec_firsttime_bool + { + \tl_if_empty:nTF {#1} + { \bool_set_false:N \ltj_fontspec_alt_bool } + { \bool_set_true:N \ltj_fontspec_alt_bool } + \tl_set:Nn \ltj_fontspec_fontfeat_alt_clist {, #1} + \fontspec_update_fontid:n {altfeat:#1} + } + } +\cs_new:Nn \__ltj_fontspec_altfont_key_code:n + { + \tl_if_empty:nF {#1} + { + \fontspec_complete_fontname:Nn \ltj_fontspec_fontname_alt_tl {#1} + \fontspec_update_fontid:n {alt:#1} + } + } + \cs_new:Nn \ltj_fontspec_select:nn { \group_begin: + \bool_set_false:N \ltj_fontspec_alt_bool + \ltj_fontspec_define_option:nn {AltFont} { + \__ltj_fontspec_altfont_key_code:n { ##1 } + } + \ltj_fontspec_define_option:nn {AltFontFeatures} { + \__ltj_fontspec_altfontfeature_key_code:n { ##1 } + } + \ltj_fontspec_define_option:nn {AltFontRange} { + \__ltj_fontspec_altfontrange_key_code:n { ##1 } + } \ltj_fontspec_define_option:nn {CID} { \fontspec_update_fontid:n {+cid=##1} \fontspec_update_featstr:n {cid=##1} @@ -110,8 +153,10 @@ \tl_set:Nn \zf@enc {JY3} } \tl_set:Nx \g_fontspec_default_fontopts_tl - {JFM=ujis,Scale=\fp_use:N \g_ltj_fontspec_scale_fp,Kerning=Off,\g_ltj_fontspec_default_fontopts_tl} + {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 \DeclareFontFamily \DeclareKanjiFamily \fontspec_select:nn{#1}{#2} \group_end: @@ -124,6 +169,45 @@ \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_fontspec_orig_DeclareFontShape \DeclareFontShape +\def \ltj_fontspec_dummy_DeclareFontShape #1#2#3#4#5#6 {} +\cs_new:Nn \ltj_fontspec_make_font_shapes:nnnn { + \ltj_orig_fontspec_make_font_shapes:nnnn {#1} {#2} {#3} {#4} + \group_begin: + \__fontspec_load_fontname:n {#1} + \cs_set_eq:NN \DeclareFontShape \ltj_fontspec_dummy_DeclareFontShape + \fontspec_declare_shape:nnn {#2}{#3} + { \quark_if_no_value:NF \l__fontspec_fontopts_clist {\l__fontspec_fontopts_clist,} #4 } + \cs_set_eq:NN \DeclareFontShape \ltj_fontspec_orig_DeclareFontShape + \typeout{2: #2, 3: #3, \l_fontspec_family_tl, \ltj_fontspec_altrange_clist.} + \typeout{<\bool_if:NTF \ltj_fontspec_alt_bool T F >, + < \ltj_fontspec_fontname_alt_tl >, < \ltj_fontspec_fontfeat_alt_clist > } + \tl_if_empty:NTF \ltj_fontspec_fontname_alt_tl + { + \bool_if:NT \ltj_fontspec_alt_bool + { + \fontspec_declare_shape:nnn {#2} { #3 _alt } + { + \quark_if_no_value:NF \l__fontspec_fontopts_clist {\l__fontspec_fontopts_clist,} + #4 , \ltj_fontspec_fontfeat_alt_clist + } + \DeclareAlternateKanjiFont {JY3}{ \l_fontspec_family_tl }{#2}{#3}% + {JY3}{ \l_fontspec_family_tl }{#2}{ #3 _alt }{ \ltj_fontspec_altrange_clist } + } + } + { + \__fontspec_load_fontname:n {\ltj_fontspec_fontname_alt_tl} + \fontspec_declare_shape:nnn {#2} { #3 _alt } + { + \quark_if_no_value:NF \l__fontspec_fontopts_clist {\l__fontspec_fontopts_clist,} + #4 , \ltj_fontspec_fontfeat_alt_clist + } + \DeclareAlternateKanjiFont {JY3}{ \l_fontspec_family_tl }{#2}{#3}% + {JY3}{ \l_fontspec_family_tl }{#2}{ #3 _alt }{ \ltj_fontspec_altrange_clist } + } + \group_end: + } %%%%%%%% User commands \DeclareDocumentCommand \jfontspec { O{} m } { diff --git a/src/ltj-jfmglue.lua b/src/ltj-jfmglue.lua index 99fcd66..eb01747 100644 --- a/src/ltj-jfmglue.lua +++ b/src/ltj-jfmglue.lua @@ -941,10 +941,13 @@ do local lp, par_indented, lpi, lps = head, 'boxbdd', getid(head), getsubtype(head) while lp and ((lpi==id_whatsit and lps~=sid_user) or ((lpi==id_hlist) and (lps==3))) do - if (lpi==id_hlist) and (lps==3) then par_indented = 'parbdd' end + if (lpi==id_hlist) and (lps==3) then + Np.char, par_indented = 'parbdd', 'parbdd' + Np.width = getfield(lp, 'width') + end lp=node_next(lp); lpi, lps = getid(lp), getsubtype(lp) end return lp, node_tail(head), par_indented - else + else return head, nil, 'boxbdd' end end diff --git a/test/test20a-mfont-fontspec.pdf b/test/test20a-mfont-fontspec.pdf new file mode 100644 index 0000000..37ca514 Binary files /dev/null and b/test/test20a-mfont-fontspec.pdf differ diff --git a/test/test20a-mfont-fontspec.tex b/test/test20a-mfont-fontspec.tex new file mode 100644 index 0000000..ecd0e3a --- /dev/null +++ b/test/test20a-mfont-fontspec.tex @@ -0,0 +1,40 @@ +%#!luajitlatex +\documentclass{ltjsarticle} +\usepackage{luatexja-fontspec,luatexja-otf} +\setmainjfont[ + AltFontFeatures={ Color=00003F, CharacterWidth=Half }, + BoldFont = { KozMinPr6N-Bold.otf }, + BoldFeatures = { AltFont={ KozGoPr6N-Bold.otf } }, + AltFontRange = { "3000-"30FF }, +]{KozMinPr6N-Regular.otf} + +\setsansjfont{KozGoPr6N-Regular.otf} + +\long\def\test{% + あいうえお医学アイウエオ医学 + \textbf{あいうえお医学アイウエオ医学} + \textgt{あいうえお医学アイウエオ医学}\par +% + 日本国民は、正当に選挙された国会における代表者を通じて行動し、 + われらとわれらの子孫のために、諸国民との協和による成果と、 + わが国全土にわたつて自由のもたらす恵沢を確保し、政府の行為によつて + 再び戦争の惨禍が起ることのないやうにすることを決意し、 + ここに主権が国民に存することを宣言し、この憲法を確定する。 + そもそも国政は、国民の厳粛な信託によるものであつて、その権威は国民に由来し、 + その権力は国民の代表者がこれを行使し、その福利は国民がこれを享受する。 + これは人類普遍の原理であり、この憲法は、かかる原理に基くものである。 + われらは、これに反する一切の憲法、法令及び詔勅を排除する。 +} +\begin{document} + +\test + +\paragraph{addfontfeatures}\ \par +\addjfontfeatures{ + AltFontFeatures={ Color=0000FF }, AltFontRange= { "3040-"304F }, + Color=001F00, CJKShape=Traditional +} +% AltFontFeature, AltFontRange は累積しない +\test + +\end{document} \ No newline at end of file