OSDN Git Service

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