}
}
+%% 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}
\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:
\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 } {
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
--- /dev/null
+%#!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