OSDN Git Service

Updated documents
[luatex-ja/luatexja.git] / test / test04-jfm.tex
1 %#!luatex test04-jfm.tex
2 \input luatexja-core.sty
3 \def\head#1{\medskip\penalty-100\noindent{\bf\tengt ■ #1}\par\penalty10000 }
4 \jfont\rml={psft:Ryumin-Light:jfm=ujis} at 10pt
5 \rml あ\inhibitglue\char"201Cあ・い\inhibitglue ()あ←Ryumin-Light
6
7 \jfont\rml={file:ipam.ttf:jfm=ujis} at 10pt
8 \rml あ\inhibitglue\char"201Cあ・い←IPA\hbox{}明朝 (ipam)
9
10 \jfont\rml={file:KozMinPr6N-Regular.otf:jfm=ujis} at 10pt
11 \rml あ\inhibitglue\char"201Cあ・い←KozMinPr6N-Regular
12
13 \jfont\rml={file:ipamp.ttf:jfm=ujis} at 10pt
14 \rml あ\inhibitglue\char"201Cあ・い←IPA P\hbox{}明朝 (ipamp)
15
16 {\scrollmode
17 \globaljfont\rml={psft:GothicBBB-Medium:jfm=bad} at 10pt % must be error
18 }
19 \rml あ123 % \rml は未定義となる
20 {\tt\meaning\rml}
21
22 \bigskip
23 \font\rml={file:ipaexg.ttf} at 10pt\rml
24
25 ここからは,欧文文字フォントはIPA EXゴシック
26
27
28 \head{文字範囲の代入/取得テスト}
29
30 \ltjdefcharrange{9}{`あ,"E0-"FF}
31 「\char"F4」は9番の文字範囲なので,和文扱いのはず
32
33 {iso8859-1 和文扱い:\ltjsetparameter{jacharrange={1,8}}%
34 \ltjgetparameter{jacharrange}{1}%
35 § ¶ ° £ ¥ \char"F4}
36
37 {iso8859-1 欧文扱い:\ltjsetparameter{jacharrange={-1,-8}}%
38 \ltjgetparameter{jacharrange}{1}%
39 § ¶ ° £ ¥ \char"F4}
40
41 {標準:%
42 \ltjgetparameter{jacharrange}{1}%
43 § ¶ ° £ ¥ \char"F4}
44
45
46 \head{文字範囲の状況取得}
47 \ltjgetparameter{jacharrange}{0}
48 \ltjgetparameter{jacharrange}{1}
49 \ltjgetparameter{jacharrange}{2}
50
51 \head{文字コード→文字範囲}
52 \ltjgetparameter{chartorange}{`A} % must be -1
53 \ltjgetparameter{chartorange}{`い} % must be 6
54 \ltjgetparameter{chartorange}{`§} % must be 8
55 \ltjgetparameter{chartorange}{"F7} % must be 9
56 \ltjgetparameter{chartorange}{-1}  % must be error "
57 \ltjgetparameter{chartorange}{"CFFFF}  % must be 217"
58
59 \medskip
60 \ltjsetparameter{jacharrange={-217}}
61 あ\char"CFFFFあ
62 \ltjgetparameter{jacharrange}{\ltjgetparameter{chartorange}{"CFFFF}}←CFFFF欧文扱い
63 \ltjsetparameter{jacharrange={218}}
64 あ\char"CFFFFあ
65 \ltjgetparameter{jacharrange}{\ltjgetparameter{chartorange}{"CFFFF}}←CFFFF和文扱い
66
67 \head{Ticket \#25121}
68 \setbox0=\hbox{\ltjsetparameter{kanjiskip=-5pt}
69 あいうえお\hbox{\ltjsetparameter{kanjiskip=12pt}かきくけこ}さしすせそ\par a}\copy0
70
71
72 {\ltjsetparameter{kanjiskip=3pt}
73 あいうえお{\ltjsetparameter{kanjiskip=-5pt}% this setting is ignored
74 かきくけこ}さしすせそ\par}
75
76 {\ltjsetparameter{kanjiskip=3pt}
77 あいうえおさしすせそ}\par
78
79 \vfill\eject\tracingonline=0
80 \noindent{\bf\gt  以下はJFMグルー挿入検証}
81 \jfont\rmlh={psft:Ryumin-Light:jfm=test} at 10pt
82 \jfont\sixgt={psft:GothicBBB-Medium:jfm=ujis} at 6pt
83 \font\sixtt=cmtt10 at 6pt
84
85 {\let\\=\relax
86 \directlua{function print_fn(...)
87   print(...)
88   tex.print('\\par ', ...)
89 end}}
90 \unless\ifdefined\ltjgetwd \let\ltjgetwd\wd\fi
91 \def\dumplist#1{\par\noindent\leavevmode
92 {\dimen0=\ltjgetwd#1}%
93 \hbox to 0.2\hsize{\copy#1\hss}%
94 \vbox{\hsize=0.6\hsize\sixtt\baselineskip=7.2pt\sixgt\let\\=\relax
95 \directlua{print('======')
96   luatexja.ext_show_node_list(tex.getbox(#1).head, '', print_fn)
97   print('======')}\hrule}%
98 }
99
100 \catcode`_=12
101 %\tracingonline=1\tracingoutput=1\showboxdepth=3\showboxbreadth=100
102
103 \head{JA--JA (penなし)}
104
105 \setbox0=\hbox{\rmlh あア}\dumplist0
106
107 \setbox0=\hbox{\rmlh あイ}\dumplist0
108
109 \setbox0=\hbox{\rmlh あウ}\dumplist0
110
111 \setbox0=\hbox{\rmlh いア}\dumplist0
112
113 \setbox0=\hbox{\rmlh いイ}\dumplist0
114
115 \setbox0=\hbox{\rmlh いウ}\dumplist0
116
117 \head{JA--EN (penなし)}
118
119 \setbox0=\hbox{\rmlh あa}\dumplist0
120
121 \setbox0=\hbox{\rmlh あ(}\dumplist0
122
123 \setbox0=\hbox{\rmlh あ)}\dumplist0
124
125 \setbox0=\hbox{\rmlh いa}\dumplist0
126
127 \setbox0=\hbox{\rmlh うa}\dumplist0
128
129 \setbox0=\hbox{\rmlh えa}\dumplist0
130
131 \setbox0=\hbox{\rmlh おa}\dumplist0
132
133 \head{EN--JA (penなし)}
134
135 \setbox0=\hbox{\rmlh aあ}\dumplist0
136
137 \setbox0=\hbox{\rmlh (あ}\dumplist0
138
139 \setbox0=\hbox{\rmlh )あ}\dumplist0
140
141 \setbox0=\hbox{\rmlh aい}\dumplist0
142
143 \setbox0=\hbox{\rmlh aう}\dumplist0
144
145 \head{JA--明kern (penなし)}
146
147 \setbox0=\hbox{\rmlh あ\kern3pt}\dumplist0
148
149 \setbox0=\hbox{\rmlh い\kern3pt}\dumplist0
150
151 \setbox0=\hbox{\rmlh う\kern3pt}\dumplist0
152
153 \head{明kern--JA (penなし)}
154
155 \setbox0=\hbox{\rmlh \kern3ptあ}\dumplist0
156
157 \setbox0=\hbox{\rmlh \kern3ptい}\dumplist0
158
159 \setbox0=\hbox{\rmlh \kern3ptう}\dumplist0
160
161 \head{JA--hbox (penなし)}
162
163 \setbox0=\hbox{\rmlh あ\hbox{}}\dumplist0
164
165 \setbox0=\hbox{\rmlh い\hbox{}}\dumplist0
166
167 \setbox0=\hbox{\rmlh う\hbox{}}\dumplist0
168
169 \setbox0=\hbox{\rmlh え\hbox{}}\dumplist0
170
171 \setbox0=\hbox{\rmlh あ\hbox{ア}}\dumplist0
172
173 \setbox0=\hbox{\rmlh あ\hbox{a}}\dumplist0
174
175 \setbox0=\hbox{\rmlh い\hbox{a}}\dumplist0
176
177 \head{hbox--JA (penなし)}
178
179 \setbox0=\hbox{\rmlh \hbox{}あ}\dumplist0
180
181 \setbox0=\hbox{\rmlh \hbox{}い}\dumplist0
182
183 \setbox0=\hbox{\rmlh \hbox{}う}\dumplist0
184
185 {\vfill\eject%
186
187 \ltjsetparameter{prebreakpenalty={`(,123}}
188 \ltjsetparameter{postbreakpenalty={`あ,123}}
189 \ltjsetparameter{prebreakpenalty={`い,571}, postbreakpenalty={`い,123}}
190 \ltjsetparameter{postbreakpenalty={`う,123}}
191 \ltjsetparameter{postbreakpenalty={`え,123}}
192 \ltjsetparameter{postbreakpenalty={`お,123}}
193 \ltjsetparameter{postbreakpenalty={`a,321}}
194 \head{JA--JA (penあり)}
195
196 \setbox0=\hbox{\rmlh あア}\dumplist0
197
198 \setbox0=\hbox{\rmlh あイ}\dumplist0
199
200 \setbox0=\hbox{\rmlh あウ}\dumplist0
201
202 \setbox0=\hbox{\rmlh いア}\dumplist0
203
204 \setbox0=\hbox{\rmlh いイ}\dumplist0
205
206 \setbox0=\hbox{\rmlh いウ}\dumplist0
207
208 \head{JA--EN (penあり)}
209
210 \setbox0=\hbox{\rmlh あa}\dumplist0
211
212 \setbox0=\hbox{\rmlh いa}\dumplist0
213
214 \setbox0=\hbox{\rmlh うa}\dumplist0
215
216 \setbox0=\hbox{\rmlh えa}\dumplist0
217
218 \setbox0=\hbox{\rmlh おa}\dumplist0
219
220 \head{EN--JA (penあり)}
221
222 \setbox0=\hbox{\rmlh aあ}\dumplist0
223
224 \setbox0=\hbox{\rmlh aい}\dumplist0
225
226 \setbox0=\hbox{\rmlh aう}\dumplist0
227
228 \head{JA--hbox (penあり)}
229
230 \setbox0=\hbox{\rmlh あ\hbox{}}\dumplist0
231
232 \setbox0=\hbox{\rmlh い\hbox{}}\dumplist0
233
234 \setbox0=\hbox{\rmlh う\hbox{}}\dumplist0
235
236 \setbox0=\hbox{\rmlh え\hbox{}}\dumplist0
237
238 \setbox0=\hbox{\rmlh あ\hbox{ア}}\dumplist0
239
240 \setbox0=\hbox{\rmlh あ\hbox{a}}\dumplist0
241
242 \setbox0=\hbox{\rmlh い\hbox{a}}\dumplist0
243
244 \setbox0=\hbox{\rmlh \hbox{(}い\hbox{)}}\dumplist0
245
246 \head{hbox--JA (penあり)}
247
248 \setbox0=\hbox{\rmlh \hbox{}あ}\dumplist0
249
250 \setbox0=\hbox{\rmlh \hbox{}い}\dumplist0
251
252 \setbox0=\hbox{\rmlh \hbox{}う}\dumplist0
253
254 \head{italic correction}
255
256 \setbox0=\hbox{\it f\/(\/あ}\dumplist0
257
258 }
259
260 \vfill\eject
261 \noindent{\gt\bf [x]kanjiskipの挿入}
262
263 \head{kanjiskip from JFM, autospacing (JA--JA)}
264 \setbox0=\hbox{\rmlh ああ}\dumplist0
265
266 {\ltjsetparameter{kanjiskip=\maxdimen}
267 \setbox0=\hbox{\rmlh ああ}\dumplist0
268 \jfont\rmlk={psft:Ryumin-Light:jfm=test} at 12pt
269 \setbox0=\hbox{\rmlk は\rmlh あ}\dumplist0}
270
271 \def\naspc{\ltjsetparameter{autospacing=false}\relax}
272 \def\naxspc{\ltjsetparameter{autoxspacing=false}\relax}
273 \setbox0=\hbox{\rmlh あ\naspc ああ}\dumplist0
274
275 \head{kanjiskip from JFM/autoxspacing (JA--EN)}
276 \setbox0=\hbox{\rmlh まx}\dumplist0
277
278 \setbox0=\hbox{\rmlh ま\naxspc x}\dumplist0
279
280 \setbox0=\hbox{\naxspc\rmlh まx}\dumplist0
281
282 {\ltjsetparameter{xkanjiskip=\maxdimen}\setbox0=\hbox{\rmlh まx}\dumplist0}
283
284 {\ltjsetparameter{jaxspmode={`ま,preonly}}
285 \setbox0=\hbox{\rmlh まx}\dumplist0}
286 {\ltjsetparameter{alxspmode={`x,postonly}}
287 \setbox0=\hbox{\rmlh まx}\dumplist0}
288
289 \head{xkanjiskip from JFM/autoxspacing (EN--JA)}
290 \setbox0=\hbox{\rmlh xま}\dumplist0
291
292 \setbox0=\hbox{\rmlh x\naxspc ま}\dumplist0
293
294 \setbox0=\hbox{\naxspc\rmlh xま}\dumplist0
295
296 {\ltjsetparameter{xkanjiskip=\maxdimen}\setbox0=\hbox{\rmlh xま}\dumplist0}
297
298 {\ltjsetparameter{jaxspmode={`ま,postonly}}
299 \setbox0=\hbox{\rmlh xま}\dumplist0}
300 {\ltjsetparameter{alxspmode={`x,inhibit}}
301 \setbox0=\hbox{\rmlh xまおx}\dumplist0}
302
303 \head{more than one penalty}
304
305 \setbox0=\hbox{\rmlh お\penalty1701\penalty1701\penalty1701い}
306 \dumplist0
307 \setbox0=\hbox{\rmlh お\penalty1701\penalty1701\penalty1701お}
308 \dumplist0
309 \setbox0=\hbox{\rmlh あ\penalty1701\penalty1701\penalty1701い}
310 \dumplist0
311 \setbox0=\hbox{\rmlh あ\penalty1701\penalty1701\penalty1701お}
312 \dumplist0
313
314 \head{その他: italic correction and accents}
315
316 \setbox0=\hbox{\tenrm あ\/j}
317 \dumplist0
318 \setbox0=\hbox{\tenrm )\/j}
319 \dumplist0
320 \setbox0=\hbox{\tenrm\rmlh れ\v{A})}
321 \dumplist0
322
323 \head{その他: box boundary}
324
325 \setbox0=\hbox{\rmlh かあか}
326 \dumplist0
327 \setbox0=\hbox{a\setbox3=\hbox{\rmlh  かあか}\unhbox3a}
328 \dumplist0
329 \setbox0=\hbox{a\setbox3=\hbox{\rmlh  か}\box3a}
330 \dumplist0
331 \setbox0=\hbox{\rmlh き\hbox{か}き\hbox{き}き}
332 \dumplist0
333
334 {\ltjsetparameter{postbreakpenalty={`あ,1000},prebreakpenalty={`あ,1000}}
335 \setbox0=\hbox{あ\hbox{(}あ\setbox3=\hbox{(}\unhbox3あ}
336 \dumplist0}
337
338 \vfill\eject
339 \head{その他: paragraph, hbox and math boundary}
340
341 \setbox1=\vbox{\parindent19.2pt \rmlh\hsize=100pt\parfillskip=30pt
342 かエ\par\global\setbox0=\lastbox}
343 \dumplist0
344
345 \setbox1=\vbox{\noindent\rmlh\hsize=100pt\parfillskip=30pt
346 かエ\par\global\setbox0=\lastbox}
347 \dumplist0
348
349 \setbox0=\hbox{\rmlh かエ}
350 \dumplist0
351
352 \setbox0=\hbox{\rmlh あ$a$さ$a$か}
353 \dumplist0
354
355 \head{その他: unhbox の連続}
356 \message{HOGE}
357 \setbox0=\hbox{\tenmin\setbox1=\hbox{)}\setbox2=\hbox{a}\unhbox1\unhbox2}
358 \dumplist0
359
360 \setbox3=\hbox{\tenmin\setbox1=\hbox{)}\setbox2=\hbox{a}\unhbox1\unhbox2}
361 \setbox0=\hbox{\unhbox3}
362 \dumplist0
363
364 \setbox0=\hbox{\tenmin\setbox1=\hbox{()}\setbox2=\hbox{「」}%
365   \unhcopy1\unhbox1\unhbox2}
366 \dumplist0
367
368 \setbox0=\hbox{\tenmin\setbox1=\hbox{}あ\unhbox1い}
369 \dumplist0
370
371 \setbox0=\hbox{\tenmin\setbox1=\hbox{\tate }あ\unhbox1い}
372 \dumplist0
373
374 \head{その他: 「前由来」「後由来」JFM由来グルー}
375 \setbox0=\hbox{\tenmin あ\fivemin (}
376 \dumplist0
377
378 \setbox0=\hbox{\fivemin あ\tenmin (}
379 \dumplist0
380
381 \setbox0=\hbox{\fivemin .\tenmin ・}
382 \dumplist0
383
384 \setbox0=\hbox{\tenmin .\fivemin ・}
385 \dumplist0
386
387 \head{その他: JFM and kerning}
388 \jfont\kmd=KozMinPr6N-Regular.otf:jfm=test;script=latn;+kern;+liga
389 \jfont\kmn=KozMinPr6N-Regular.otf:jfm=test;-kern
390
391 \setbox0=\hbox{\kmd タノタイクノ}
392 \dumplist0
393
394 \setbox0=\hbox{\kmn タノタイクノ}
395 \dumplist0
396
397 \setbox0=\hbox{\kmd タ\/ノ}
398 \dumplist0
399
400 \setbox0=\hbox{\kmd 」カ゚.}
401 \dumplist0
402
403 \head{その他: kanjiskip with inf stretch}
404 \jfont\knx=KozMinPr6N-Regular.otf:jfm=test2;-kern
405
406 \ltjsetparameter{kanjiskip=1pt plus 1.25fil minus 2.75fill}
407 \ltjsetparameter{differentjfm=average}
408 \setbox0=\hbox{感感」\knx 感}
409 \dumplist0
410
411 \end