1 local is_vt, is_qj, is_bj, is_km
3 if luatexja.jfont.jfm_feature then
4 is_vt = luatexja.jfont.jfm_feature.vert
5 is_qj = luatexja.jfont.jfm_feature.quanjiao
6 is_bj = luatexja.jfont.jfm_feature.banjiao
7 is_km = luatexja.jfont.jfm_feature.kaiming
11 not ((is_qj and not (is_bj or is_km)) or (is_bj and not (is_qj or is_km)) or
12 (is_km and not (is_qj or is_bj)))
15 'You must specify ONLY ONE feature among "quanjiao", "banjiao" and ' ..
20 local function aki(wd, pr, km)
24 (is_bj and {0, wd, 0, priority = {p, -p}} or
25 {wd, 0, wd, priority = {p, -p}}) or
26 (is_qj and {wd, 0, wd, priority = {p, -p}} or
27 {0, wd, 0, priority = {p, -p}})
30 luatexja.jfont.define_jfm {
32 dir = is_vt and 'tate' or 'yoko',
35 kanjiskip = {0.0, 0.25, 0},
36 xkanjiskip = {0.25, 0.25, .125},
42 height = is_vt and 0.5 or 0.88,
43 depth = is_vt and 0.5 or 0.12,
48 [22] = is_vt and {} or aki(0.25),
50 [4] = aki(0.25, 1, true)
52 round_threshold = 0.01
77 height = is_vt and 0.5 or 0.88,
78 depth = is_vt and 0.5 or 0.12,
82 [22] = is_vt and {} or aki(0.25),
84 [4] = aki(0.25, 1, true)
111 height = is_vt and 0.5 or 0.88,
112 depth = is_vt and 0.5 or 0.12,
118 [22] = is_vt and {} or aki(0.25),
120 [4] = aki(0.25, 1, true),
122 [51] = aki(0.25, -1),
133 height = is_vt and 0.5 or 0.88,
134 depth = is_vt and 0.5 or 0.12,
141 [22] = is_vt and aki(0.5) or aki(0.25),
143 [4] = is_qj and {0.5, 0, 0.5, priority = {1, -1}} or
144 (is_bj and {0, 0.5, 0, priority = {1, -1}} or
145 {0.25, 0.25, 0.25, priority = {1, -1}}),
158 width = is_vt and 1 or 0.5,
159 height = is_vt and 0.5 or 0.88,
160 depth = is_vt and 0.5 or 0.12,
163 [0] = is_vt and {} or aki(0.25),
164 [1] = is_vt and {} or aki(0.25),
165 [2] = is_vt and {} or aki(0.25),
166 [21] = is_vt and aki(0.25) or aki(0.5),
167 [22] = is_vt and {} or aki(0.5),
168 [3] = is_vt and aki(0.25, -1) or aki(0.5, -1),
169 [4] = is_vt and aki(0.25, 1, true) or
170 (is_qj and {0.5, 0, 0.5, priority = {1, -1}} or
171 (is_bj and {0, 0.5, 0, priority = {1, -1}} or
172 {0.25, 0.25, 0.25, priority = {1, -1}})),
173 [41] = is_vt and {} or aki(0.25),
174 [5] = is_vt and {} or aki(0.25),
175 [51] = is_vt and {} or aki(0.25),
176 [52] = is_vt and {} or aki(0.25)
186 height = is_vt and 0.5 or 0.88,
187 depth = is_vt and 0.5 or 0.12,
194 [22] = is_vt and aki(0.25, -1) or aki(0.5, -1),
196 [4] = is_qj and {0.5, 0, 0.5, priority = {1, -1}} or
197 (is_bj and {0, 0.5, 0, priority = {1, -1}} or
198 {0.25, 0.25, 0.25, priority = {1, -1}}),
199 [41] = aki(0.25, -1),
201 [51] = aki(0.25, -1),
212 height = is_vt and 0.5 or 0.88,
213 depth = is_vt and 0.5 or 0.12,
216 [0] = aki(0.25, 1, true),
217 [1] = aki(0.25, 1, true),
218 [2] = aki(0.25, 1, true),
219 [21] = aki(0.5, 1, true),
220 [22] = is_vt and aki(0.25, 1, true) or aki(0.5, 1, true),
221 [3] = is_qj and {0.5, 0, 0.5, priority = {1, -1}} or
222 (is_bj and {0, 0.5, 0, priority = {1, -1}} or
223 {0.25, 0.25, 0.25, priority = {1, -1}}),
224 [4] = is_qj and {0.5, 0, 0.5, priority = {1, -1}} or
225 (is_bj and {0, 0.5, 0, priority = {1, -1}} or
226 {0.25, 0.25, 0.25, priority = {1, -1}}),
227 [41] = aki(0.25, 1, true),
228 [5] = aki(0.25, 1, true),
229 [51] = aki(0.25, 1, true),
230 [52] = aki(0.25, 1, true)
235 chars = {'?', '!', '‼', '⁇', '⁈', '⁉'},
240 height = is_vt and 0.5 or 0.88,
241 depth = is_vt and 0.5 or 0.12,
245 [22] = is_vt and {} or aki(0.25),
247 [4] = aki(0.25, 1, true)
264 height = is_vt and 0.5 or 0.88,
265 depth = is_vt and 0.5 or 0.12,
270 [22] = is_vt and {} or aki(0.25),
272 [4] = aki(0.25, -1, true)
281 -- U+2E3A TWO-EM DASH
287 height = is_vt and 0.5 or 0.88,
288 depth = is_vt and 0.5 or 0.12,
293 [22] = is_vt and {} or aki(0.25),
295 [4] = aki(0.25, -1, true)
304 -- U+2E3B THREE-EM DASH
310 height = is_vt and 0.5 or 0.88,
311 depth = is_vt and 0.5 or 0.12,
316 [22] = is_vt and {} or aki(0.25),
318 [4] = aki(0.25, -1, true)
328 chars = {'boxbdd', 'parbdd', 'glue'}