OSDN Git Service

7de40631e099d102a814644ef799fe0ea7bde708
[luatex-ja/luatexja.git] / src / luatexja-fontspec.sty
1 %
2 % luatexja-fontspec.sty
3 %
4
5 \NeedsTeXFormat{LaTeX2e}
6 \ProvidesPackage{luatexja-fontspec}[2011/09/23 v0.2]
7
8 \RequirePackage{fontspec}[2011/09/18] % v2.2a
9 \RequirePackage{luatexja}
10
11 \ExplSyntaxOn
12
13 \cs_new:Npn \ltj_fontspec_warning:n   { \msg_warning:nn   {ltj-fontspec} }
14
15 \msg_new:nnn {ltj-fontspec} {addjfontfeatures-ignored}
16 {
17   \string\addjfontfeature (s)~ ignored;\\
18   it~ cannot~ be~ used~ with~ a~ font~ that~ wasn't~ selected~ by~ luatexja-fontspec.
19 }
20
21 \cs_new:Nn \ltj_fontspec_select:nn {
22   \group_begin:
23   \keys_define:nn {fontspec} { JFM .code:n = {
24       \fontspec_update_fontid:n  {+jfm=##1}
25       \fontspec_update_featstr:n {jfm=##1}      
26     }
27   }
28   \keys_define:nn {fontspec} { JFM-var .code:n = {
29       \fontspec_update_fontid:n  {+jfmvar=##1}
30       \fontspec_update_featstr:n {jfmvar=##1}      
31     }
32   }
33   \keys_define:nn {fontspec-preparse-external} { NoEmbed .code:n = {
34       \cs_set:Nn \fontspec_namewrap:n {psft:####1}
35     }
36   }
37   \tl_set:Nn \g_fontspec_encoding_tl {JY3}
38   \tl_set:Nx \g_fontspec_default_fontopts_tl 
39              {JFM=ujis,Scale=0.960444,\g_ltj_fontspec_default_fontopts_tl}
40   \cs_set_eq:NN \DeclareFontFamily \DeclareKanjiFamily
41   \fontspec_select:nn{#1}{#2}
42   \tl_set:Nn \l_fontspec_lang_tl   {dflt}
43   \tl_set:Nn \l_fontspec_script_tl {latn}
44   \fontspec_check_ot_feat:nT {+kern} {
45     \tl_set:Nx \g_fontspec_default_fontopts_tl 
46                {JFM=ujis,Scale=0.960444,Kerning=Off,\g_ltj_fontspec_default_fontopts_tl}
47     \fontspec_select:nn{#1}{#2}
48   }
49   \group_end:
50 }
51
52 \cs_new:Nn \ltj_fontspec_set_family:Nnn {
53   \ltj_fontspec_select:nn{#2}{#3}
54   \tl_set_eq:NN #1 \l_fontspec_family_tl
55 }
56
57 \DeclareDocumentCommand \jfontspec { O{} m } {
58   \ltj_fontspec_set_family:Nnn \k@family {#1}{#2}
59   \selectfont
60   \ignorespaces
61 }
62
63 \DeclareDocumentCommand \setmainjfont { O{} m } {
64   \ltj_fontspec_set_family:Nnn \mcdefault {#1}{#2}
65   \normalfont
66 }
67
68 \DeclareDocumentCommand \setsansjfont { O{} m } {
69   \ltj_fontspec_set_family:Nnn \gtdefault {#1}{#2}
70   \normalfont
71 }
72
73 \DeclareDocumentCommand \newjfontfamily { m O{} m } {
74   \ltj_fontspec_select:nn{#2}{#3}
75   \use:x {
76     \exp_not:N \DeclareRobustCommand \exp_not:N #1 {
77       \exp_not:N \kanjifamily {\l_fontspec_family_tl} \exp_not:N \selectfont
78     }
79   }
80 }
81
82 \DeclareDocumentCommand \newjfontface { m O{} m } {
83   \newjfontfamily #1 [ BoldFont={},ItalicFont={},SmallCapsFont={},#2 ] {#3}
84 }
85
86 \DeclareDocumentCommand \defaultjfontfeatures {m} {
87   \tl_set:Nn \g_ltj_fontspec_default_fontopts_tl {#1,}
88 }
89
90 \tl_clear:N \g_ltj_fontspec_default_fontopts_tl
91
92 \DeclareDocumentCommand \addjfontfeatures {m} {
93   \ifcsname zf@family@fontdef\k@family\endcsname
94     \group_begin:
95       \tl_clear:N \g_ltj_fontspec_default_fontopts_tl
96       \use:x {
97         \exp_not:N\ltj_fontspec_select:nn
98           {\csname zf@family@options\k@family\endcsname,#1}
99           {\csname zf@family@fontname\k@family\endcsname}
100       }
101     \group_end:
102     \fontfamily\l_fontspec_family_tl\selectfont
103   \else
104     \ltj_fontspec_warning:n {addjfontfeatures-ignored}
105   \fi
106   \ignorespaces
107 }
108
109 \cs_set_eq:NN \addjfontfeature \addjfontfeatures
110
111 \endinput