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
7 \jfont\rml={file:ipam.ttf:jfm=ujis} at 10pt
8 \rml あ\inhibitglue\char"201Cあ・い←IPA\hbox{}明朝 (ipam)
10 \jfont\rml={file:KozMinPr6N-Regular.otf:jfm=ujis} at 10pt
11 \rml あ\inhibitglue\char"201Cあ・い←KozMinPr6N-Regular
13 \jfont\rml={file:ipamp.ttf:jfm=ujis} at 10pt
14 \rml あ\inhibitglue\char"201Cあ・い←IPA P\hbox{}明朝 (ipamp)
17 \globaljfont\rml={psft:GothicBBB-Medium:jfm=bad} at 10pt % must be error
19 \rml あ123 % \rml は未定義となる
23 \font\rml={file:ipaexg.ttf} at 10pt\rml
25 ここからは,欧文文字フォントはIPA EXゴシック
30 \ltjdefcharrange{9}{`あ,"E0-"FF}
31 「\char"F4」は9番の文字範囲なので,和文扱いのはず
33 {iso8859-1 和文扱い:\ltjsetparameter{jacharrange={1,8}}%
34 \ltjgetparameter{jacharrange}{1}%
37 {iso8859-1 欧文扱い:\ltjsetparameter{jacharrange={-1,-8}}%
38 \ltjgetparameter{jacharrange}{1}%
42 \ltjgetparameter{jacharrange}{1}%
47 \ltjgetparameter{jacharrange}{0}
48 \ltjgetparameter{jacharrange}{1}
49 \ltjgetparameter{jacharrange}{2}
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"
60 \ltjsetparameter{jacharrange={-217}}
62 \ltjgetparameter{jacharrange}{\ltjgetparameter{chartorange}{"CFFFF}}←CFFFF欧文扱い
63 \ltjsetparameter{jacharrange={218}}
65 \ltjgetparameter{jacharrange}{\ltjgetparameter{chartorange}{"CFFFF}}←CFFFF和文扱い
68 \setbox0=\hbox{\ltjsetparameter{kanjiskip=-5pt}
69 あいうえお\hbox{\ltjsetparameter{kanjiskip=12pt}かきくけこ}さしすせそ\par a}\copy0
72 {\ltjsetparameter{kanjiskip=3pt}
73 あいうえお{\ltjsetparameter{kanjiskip=-5pt}% this setting is ignored
76 {\ltjsetparameter{kanjiskip=3pt}
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
86 \directlua{function print_fn(...)
88 tex.print('\\par ', ...)
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}%
100 %\tracingonline=1\tracingoutput=1\showboxdepth=3\showboxbreadth=100
102 \head{JA--JA (penなし)}
104 \setbox0=\hbox{\rmlh あア}\dumplist0
106 \setbox0=\hbox{\rmlh あイ}\dumplist0
108 \setbox0=\hbox{\rmlh あウ}\dumplist0
110 \setbox0=\hbox{\rmlh いア}\dumplist0
112 \setbox0=\hbox{\rmlh いイ}\dumplist0
114 \setbox0=\hbox{\rmlh いウ}\dumplist0
116 \head{JA--EN (penなし)}
118 \setbox0=\hbox{\rmlh あa}\dumplist0
120 \setbox0=\hbox{\rmlh いa}\dumplist0
122 \setbox0=\hbox{\rmlh うa}\dumplist0
124 \setbox0=\hbox{\rmlh えa}\dumplist0
126 \setbox0=\hbox{\rmlh おa}\dumplist0
128 \head{EN--JA (penなし)}
130 \setbox0=\hbox{\rmlh aあ}\dumplist0
132 \setbox0=\hbox{\rmlh aい}\dumplist0
134 \setbox0=\hbox{\rmlh aう}\dumplist0
136 \head{JA--明kern (penなし)}
138 \setbox0=\hbox{\rmlh あ\kern3pt}\dumplist0
140 \setbox0=\hbox{\rmlh い\kern3pt}\dumplist0
142 \setbox0=\hbox{\rmlh う\kern3pt}\dumplist0
144 \head{明kern--JA (penなし)}
146 \setbox0=\hbox{\rmlh \kern3ptあ}\dumplist0
148 \setbox0=\hbox{\rmlh \kern3ptい}\dumplist0
150 \setbox0=\hbox{\rmlh \kern3ptう}\dumplist0
152 \head{JA--hbox (penなし)}
154 \setbox0=\hbox{\rmlh あ\hbox{}}\dumplist0
156 \setbox0=\hbox{\rmlh い\hbox{}}\dumplist0
158 \setbox0=\hbox{\rmlh う\hbox{}}\dumplist0
160 \setbox0=\hbox{\rmlh え\hbox{}}\dumplist0
162 \setbox0=\hbox{\rmlh あ\hbox{ア}}\dumplist0
164 \setbox0=\hbox{\rmlh あ\hbox{a}}\dumplist0
166 \setbox0=\hbox{\rmlh い\hbox{a}}\dumplist0
168 \head{hbox--JA (penなし)}
170 \setbox0=\hbox{\rmlh \hbox{}あ}\dumplist0
172 \setbox0=\hbox{\rmlh \hbox{}い}\dumplist0
174 \setbox0=\hbox{\rmlh \hbox{}う}\dumplist0
178 \ltjsetparameter{prebreakpenalty={`(,123}}
179 \ltjsetparameter{postbreakpenalty={`あ,123}}
180 \ltjsetparameter{prebreakpenalty={`い,571}, postbreakpenalty={`い,123}}
181 \ltjsetparameter{postbreakpenalty={`う,123}}
182 \ltjsetparameter{postbreakpenalty={`え,123}}
183 \ltjsetparameter{postbreakpenalty={`お,123}}
184 \ltjsetparameter{postbreakpenalty={`a,321}}
185 \head{JA--JA (penあり)}
187 \setbox0=\hbox{\rmlh あア}\dumplist0
189 \setbox0=\hbox{\rmlh あイ}\dumplist0
191 \setbox0=\hbox{\rmlh あウ}\dumplist0
193 \setbox0=\hbox{\rmlh いア}\dumplist0
195 \setbox0=\hbox{\rmlh いイ}\dumplist0
197 \setbox0=\hbox{\rmlh いウ}\dumplist0
199 \head{JA--EN (penあり)}
201 \setbox0=\hbox{\rmlh あa}\dumplist0
203 \setbox0=\hbox{\rmlh いa}\dumplist0
205 \setbox0=\hbox{\rmlh うa}\dumplist0
207 \setbox0=\hbox{\rmlh えa}\dumplist0
209 \setbox0=\hbox{\rmlh おa}\dumplist0
211 \head{EN--JA (penあり)}
213 \setbox0=\hbox{\rmlh aあ}\dumplist0
215 \setbox0=\hbox{\rmlh aい}\dumplist0
217 \setbox0=\hbox{\rmlh aう}\dumplist0
219 \head{JA--hbox (penあり)}
221 \setbox0=\hbox{\rmlh あ\hbox{}}\dumplist0
223 \setbox0=\hbox{\rmlh い\hbox{}}\dumplist0
225 \setbox0=\hbox{\rmlh う\hbox{}}\dumplist0
227 \setbox0=\hbox{\rmlh え\hbox{}}\dumplist0
229 \setbox0=\hbox{\rmlh あ\hbox{ア}}\dumplist0
231 \setbox0=\hbox{\rmlh あ\hbox{a}}\dumplist0
233 \setbox0=\hbox{\rmlh い\hbox{a}}\dumplist0
235 \setbox0=\hbox{\rmlh \hbox{(}い\hbox{)}}\dumplist0
237 \head{hbox--JA (penあり)}
239 \setbox0=\hbox{\rmlh \hbox{}あ}\dumplist0
241 \setbox0=\hbox{\rmlh \hbox{}い}\dumplist0
243 \setbox0=\hbox{\rmlh \hbox{}う}\dumplist0
245 \head{italic correction}
247 \setbox0=\hbox{\it f\/(\/あ}\dumplist0
252 \noindent{\gt\bf [x]kanjiskipの挿入}
254 \head{kanjiskip from JFM, autospacing (JA--JA)}
255 \setbox0=\hbox{\rmlh ああ}\dumplist0
257 {\ltjsetparameter{kanjiskip=\maxdimen}
258 \setbox0=\hbox{\rmlh ああ}\dumplist0
259 \jfont\rmlk={psft:Ryumin-Light:jfm=test} at 12pt
260 \setbox0=\hbox{\rmlk は\rmlh あ}\dumplist0}
262 \def\naspc{\ltjsetparameter{autospacing=false}\relax}
263 \def\naxspc{\ltjsetparameter{autoxspacing=false}\relax}
264 \setbox0=\hbox{\rmlh あ\naspc ああ}\dumplist0
266 \head{kanjiskip from JFM/autoxspacing (JA--EN)}
267 \setbox0=\hbox{\rmlh まx}\dumplist0
269 \setbox0=\hbox{\rmlh ま\naxspc x}\dumplist0
271 \setbox0=\hbox{\naxspc\rmlh まx}\dumplist0
273 {\ltjsetparameter{xkanjiskip=\maxdimen}\setbox0=\hbox{\rmlh まx}\dumplist0}
275 {\ltjsetparameter{jaxspmode={`ま,preonly}}
276 \setbox0=\hbox{\rmlh まx}\dumplist0}
277 {\ltjsetparameter{alxspmode={`x,postonly}}
278 \setbox0=\hbox{\rmlh まx}\dumplist0}
280 \head{xkanjiskip from JFM/autoxspacing (EN--JA)}
281 \setbox0=\hbox{\rmlh xま}\dumplist0
283 \setbox0=\hbox{\rmlh x\naxspc ま}\dumplist0
285 \setbox0=\hbox{\naxspc\rmlh xま}\dumplist0
287 {\ltjsetparameter{xkanjiskip=\maxdimen}\setbox0=\hbox{\rmlh xま}\dumplist0}
289 {\ltjsetparameter{jaxspmode={`ま,postonly}}
290 \setbox0=\hbox{\rmlh xま}\dumplist0}
291 {\ltjsetparameter{alxspmode={`x,inhibit}}
292 \setbox0=\hbox{\rmlh xまおx}\dumplist0}
294 \head{more than one penalty}
296 \setbox0=\hbox{\rmlh お\penalty1701\penalty1701\penalty1701い}
298 \setbox0=\hbox{\rmlh お\penalty1701\penalty1701\penalty1701お}
300 \setbox0=\hbox{\rmlh あ\penalty1701\penalty1701\penalty1701い}
302 \setbox0=\hbox{\rmlh あ\penalty1701\penalty1701\penalty1701お}
305 \head{その他: italic correction and accents}
307 \setbox0=\hbox{\tenrm あ\/j}
309 \setbox0=\hbox{\tenrm )\/j}
311 \setbox0=\hbox{\tenrm\rmlh れ\v{A})}
314 \head{その他: box boundary}
316 \setbox0=\hbox{\rmlh かあか}
318 \setbox0=\hbox{a\setbox3=\hbox{\rmlh かあか}\unhbox3a}
320 \setbox0=\hbox{a\setbox3=\hbox{\rmlh か}\box3a}
322 \setbox0=\hbox{\rmlh き\hbox{か}き\hbox{き}き}
325 {\ltjsetparameter{postbreakpenalty={`あ,1000},prebreakpenalty={`あ,1000}}
326 \setbox0=\hbox{あ\hbox{(}あ\setbox3=\hbox{(}\unhbox3あ}
330 \head{その他: paragraph, hbox and math boundary}
332 \setbox1=\vbox{\parindent19.2pt \rmlh\hsize=100pt\parfillskip=30pt
333 かエ\par\global\setbox0=\lastbox}
336 \setbox1=\vbox{\noindent\rmlh\hsize=100pt\parfillskip=30pt
337 かエ\par\global\setbox0=\lastbox}
340 \setbox0=\hbox{\rmlh かエ}
343 \setbox0=\hbox{\rmlh あ$a$さ$a$か}
346 \head{その他: unhbox の連続}
348 \setbox0=\hbox{\tenmin\setbox1=\hbox{)}\setbox2=\hbox{a}\unhbox1\unhbox2}
351 \setbox3=\hbox{\tenmin\setbox1=\hbox{)}\setbox2=\hbox{a}\unhbox1\unhbox2}
352 \setbox0=\hbox{\unhbox3}
355 \setbox0=\hbox{\tenmin\setbox1=\hbox{()}\setbox2=\hbox{「」}%
356 \unhcopy1\unhbox1\unhbox2}
359 \setbox0=\hbox{\tenmin\setbox1=\hbox{}あ\unhbox1い}
362 \setbox0=\hbox{\tenmin\setbox1=\hbox{\tate }あ\unhbox1い}
365 \head{その他: 「前由来」「後由来」JFM由来グルー}
366 \setbox0=\hbox{\tenmin あ\fivemin (}
369 \setbox0=\hbox{\fivemin あ\tenmin (}
372 \setbox0=\hbox{\fivemin .\tenmin ・}
375 \setbox0=\hbox{\tenmin .\fivemin ・}
378 \head{その他: JFM and kerning}
379 \jfont\kmd=KozMinPr6N-Regular.otf:jfm=test;script=latn;+kern;+liga
380 \jfont\kmn=KozMinPr6N-Regular.otf:jfm=test;-kern
382 \setbox0=\hbox{\kmd タノタイクノ}
385 \setbox0=\hbox{\kmn タノタイクノ}
388 \setbox0=\hbox{\kmd タ\/ノ}
391 \setbox0=\hbox{\kmd 」カ゚.}