OSDN Git Service

6f469fc08fff7ea53130f1fc2e82a93e391a47ee
[luatex-ja/luatexja.git] / src / patches / lltjp-fontspec.sty
1 %
2 % lltjp-fontspec.sty 2018-08-24
3 %
4
5 \NeedsTeXFormat{LaTeX2e}
6
7 \RequirePackage{fontspec}
8 \ExplSyntaxOn
9
10 % <= v2.6g uses \l__fontspec_nfss_enc_tl instead of \g__fontspec_nfss_enc_tl
11 \ifdefined \g__fontspec_nfss_enc_tl \else
12   \def \g__fontspec_nfss_enc_tl { \l__fontspec_nfss_enc_tl }
13 \fi
14
15 %%%%%%%% fontspec v2.5c overwrites \rmfamily etc. in \setmainfont
16 \@ifpackagelater{fontspec}{2018/07/29}{ %% 2.6h or later
17 \cs_set:Nn \__fontspec_main_setmainfont:nn
18   {
19     \fontspec_set_family:Nnn \l__fontspec_rmfamily_family_tl {#1} {#2}
20     \tl_set_eq:NN \rmdefault \l__fontspec_rmfamily_family_tl
21     \use:x
22       {
23         \exp_not:n { \DeclareRobustCommand \rmfamily }
24           {
25             \exp_not:N \fontencoding { \g__fontspec_nfss_enc_tl }
26             \exp_not:N \fontfamily { \l__fontspec_rmfamily_family_tl }
27     \exp_not:N\if@ltj@match@family\exp_not:N\kanjifamily\exp_not:N\mcdefault\exp_not:N\fi%%%
28             \exp_not:N \selectfont
29           }
30       }
31     \str_if_eq_x:nnT {\familydefault} {\rmdefault}
32       { \tl_set_eq:NN \encodingdefault \g__fontspec_nfss_enc_tl }
33     \__fontspec_setmainfont_hook:nn {#1} {#2}
34     \normalfont
35   }
36 \cs_set:Nn \__fontspec_main_setsansfont:nn
37   {
38     \fontspec_set_family:Nnn \l__fontspec_sffamily_family_tl {#1} {#2}
39     \tl_set_eq:NN \sfdefault \l__fontspec_sffamily_family_tl
40     \use:x
41       {
42         \exp_not:n { \DeclareRobustCommand \sffamily }
43           {
44             \exp_not:N \fontencoding { \g__fontspec_nfss_enc_tl }
45             \exp_not:N \fontfamily { \l__fontspec_sffamily_family_tl }
46     \exp_not:N\if@ltj@match@family\exp_not:N\kanjifamily\exp_not:N\gtdefault\exp_not:N\fi%%%
47             \exp_not:N \selectfont
48           }
49       }
50     \str_if_eq_x:nnT {\familydefault} {\sfdefault}
51       { \tl_set_eq:NN \encodingdefault \g__fontspec_nfss_enc_tl }
52     \__fontspec_setsansfont_hook:nn {#1} {#2}
53     \normalfont
54   }
55 \cs_set:Nn \__fontspec_main_setmonofont:nn
56   {
57     \fontspec_set_family:Nnn \l__fontspec_ttfamily_family_tl {#1} {#2}
58     \tl_set_eq:NN \ttdefault \l__fontspec_ttfamily_family_tl
59     \use:x
60       {
61         \exp_not:n { \DeclareRobustCommand \ttfamily }
62           {
63             \exp_not:N \fontencoding { \g__fontspec_nfss_enc_tl }
64             \exp_not:N \fontfamily { \l__fontspec_ttfamily_family_tl }
65     \exp_not:N\if@ltj@match@family\exp_not:N\kanjifamily\exp_not:N\jttdefault\exp_not:N\fi%%%
66             \exp_not:N \selectfont
67           }
68       }
69     \str_if_eq_x:nnT {\familydefault} {\ttdefault}
70       { \tl_set_eq:NN \encodingdefault \g__fontspec_nfss_enc_tl }
71     \__fontspec_setmonofont_hook:nn {#1} {#2}
72     \normalfont
73   }
74 }{ %% <= 2.6g
75 \DeclareDocumentCommand \setmainfont { O{} m O{} }
76  {
77   \fontspec_set_family:Nnn \g__fontspec_rmfamily_family {#1,#3} {#2}
78   \tl_set_eq:NN \rmdefault \g__fontspec_rmfamily_family
79   \use:x { \exp_not:n { \DeclareRobustCommand \rmfamily }
80    {
81     \exp_not:N \fontencoding { \g__fontspec_nfss_enc_tl }
82     \exp_not:N \fontfamily { \g__fontspec_rmfamily_family }
83     \exp_not:N\if@ltj@match@family\exp_not:N\kanjifamily\exp_not:N\mcdefault\exp_not:N\fi%%%
84     \exp_not:N \selectfont
85    }
86   }
87   \str_if_eq_x:nnT {\familydefault} {\rmdefault}
88     { \tl_set_eq:NN \encodingdefault \g__fontspec_nfss_enc_tl }
89   \normalfont
90   \ignorespaces
91  }
92 \DeclareDocumentCommand \setsansfont { O{} m O{} }
93  {
94   \fontspec_set_family:Nnn \g__fontspec_sffamily_family {#1,#3} {#2}
95   \tl_set_eq:NN \sfdefault \g__fontspec_sffamily_family
96   \use:x { \exp_not:n { \DeclareRobustCommand \sffamily }
97    {
98     \exp_not:N \fontencoding { \g__fontspec_nfss_enc_tl }
99     \exp_not:N \fontfamily { \g__fontspec_sffamily_family }
100     \exp_not:N\if@ltj@match@family\exp_not:N\kanjifamily\exp_not:N\gtdefault\exp_not:N\fi%%%
101     \exp_not:N \selectfont
102    }
103   }
104   \str_if_eq_x:nnT {\familydefault} {\sfdefault}
105     { \tl_set_eq:NN \encodingdefault \g__fontspec_nfss_enc_tl }
106   \normalfont
107   \ignorespaces
108  }
109 \DeclareDocumentCommand \setmonofont { O{} m O{} }
110  {
111   \fontspec_set_family:Nnn \g__fontspec_ttfamily_family {#1,#3} {#2}
112   \tl_set_eq:NN \ttdefault \g__fontspec_ttfamily_family
113   \use:x { \exp_not:n { \DeclareRobustCommand \ttfamily }
114    {
115     \exp_not:N \fontencoding { \g__fontspec_nfss_enc_tl }
116     \exp_not:N \fontfamily { \g__fontspec_ttfamily_family }
117     \exp_not:N\if@ltj@match@family\exp_not:N\kanjifamily\exp_not:N\jttdefault\exp_not:N\fi%%%
118     \exp_not:N \selectfont
119    }
120   }
121   \str_if_eq_x:nnT {\familydefault} {\ttdefault}
122     { \tl_set_eq:NN \encodingdefault \g__fontspec_nfss_enc_tl }
123   \normalfont
124   \ignorespaces
125  }
126 }
127
128 \cs_set:Nn \fontspec_visible_space:
129  {
130  \__fontspec_primitive_font_glyph_if_exist:NnTF \font {"2423}
131    { \ltjalchar"2423\scan_stop: }
132    { \fontspec_visible_space_fallback: }
133  }
134
135 \AtBeginDocument{
136   \cs_if_exist:NF \verbvisiblespace {
137     % >= LaTeX2e <2018-12-01> does not need the following patch
138     \def\verb
139     {
140       \relax\ifmmode\hbox\else\leavevmode\fi % same as lltjcore
141       \bgroup
142         \verb@eol@error \let\do\@makeother \dospecials
143         \verbatim@font\@noligs
144         \@ifstar\__fontspecsverb\@verb
145     }
146   }
147 }
148 \cs_set:Npn \emshape { \gtfamily \itshape }
149 \cs_set:Npn \eminnershape { \mcfamily \upshape }
150
151 \ExplSyntaxOff
152 \expandafter\patchcmd\csname TU\string\textasteriskcentered\endcsname{\char}{\ltjalchar}{}{}
153
154 \endinput
155