1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20\unprotect
21
22\gdef\module_fonts_show_prepare#1
23 {\iftok{#1}\emptytoks
24 \edef\m_module_fonts_show_title{\the\bodyfontsize}
25 \else
26 \switchtobodyfont[#1]
27 \edef\m_module_fonts_show_title{#1}
28 \fi
29 \ifempty\fontclass
30 \edef\m_module_fonts_show_title{[\m_module_fonts_show_title]}
31 \orelse\ifx\fontclass\m_module_fonts_show_title
32 \edef\m_module_fonts_show_title{[\m_module_fonts_show_title]}
33 \else
34 \edef\m_module_fonts_show_title{[\fontclass]\space[\m_module_fonts_show_title]}
35 \fi}
36
37\permanent\protected\tolerant\gdef\showbodyfont[#1]
38 {\ifinsidefloat\else\startbaselinecorrection\fi
39 \vbox
40 {\module_fonts_show_prepare{#1}
41 \def\next##1##2##3##4
42 {\bTR
43 \bTD{##4}\type{##1}\eTD
44 \bTD{##4}##1##3{\tf ##2}\eTD
45 \bTD{##4}##1##3{\tf ##2}\eTD
46 \bTD{##4}##1##3{\bf ##2}\eTD
47 \bTD{##4}##1##3{\sl ##2}\eTD
48 \bTD{##4}##1##3{\it ##2}\eTD
49 \bTD{##4}##1##3{\bs ##2}\eTD
50 \bTD{##4}##1##3{\bi ##2}\eTD
51 \bTD{##4}##1##3{\tfx ##2}\eTD
52 \bTD{##4}##1##3{\tfxx ##2}\eTD
53 \bTD{##4}##1##3{\tfa ##2}\eTD
54 \bTD{##4}##1##3{\tfb ##2}\eTD
55 \bTD{##4}##1##3{\tfc ##2}\eTD
56 \bTD{##4}##1##3{\tfd ##2}\eTD
57 \eTR}
58 \bTABLE[\c!align=\v!middle,\c!loffset=.5ex,\c!roffset=.5ex]
59 \bTR\bTD[\c!nx=14,\c!offset=1ex]\tttf{\m_module_fonts_show_title}\eTD\eTR
60 \next{}{}\type{}
61 \next\rm{\languageparameter\c!text}\relax{\tfd\setstrut\strut}
62 \next\ss{\languageparameter\c!text}\relax{\tfd\setstrut\strut}
63 \next\tt{\languageparameter\c!text}\relax{\tfd\setstrut\strut}
64 \next\mr{\languageparameter\c!text}\mathematics{\tfd\setstrut\strut}
65 \eTABLE}
66 \ifinsidefloat\else\stopbaselinecorrection\fi}
67
68\permanent\protected\tolerant\gdef\showbodyfontenvironment[#1]
69 {\ifinsidefloat\else\startbaselinecorrection\fi
70 \vbox
71 {\module_fonts_show_prepare{#1}
72 \def\next##1##2
73 {\bTR
74 \bTD##1\bodyfontsizevariable{##2}\s!text\eTD
75 \bTD##1\bodyfontsizevariable{##2}\s!script\eTD
76 \bTD##1\bodyfontsizevariable{##2}\s!scriptscript\eTD
77 \bTD##1\bodyfontsizevariable{##2}\s!x\eTD
78 \bTD##1\bodyfontsizevariable{##2}\s!xx\eTD
79 \bTD##1\bodyfontsizevariable{##2}\v!small\eTD
80 \bTD##1\bodyfontsizevariable{##2}\v!big\eTD
81
82 \eTR}
83 \def\nextone{\next\relax}
84 \bTABLE[\c!align=\v!middle,\c!loffset=.5ex,\c!roffset=.5ex]
85 \bTR\bTD[\c!nx=7,\c!offset=1ex]\tttf{\m_module_fonts_show_title}\eTD\eTR
86 \next{\tttf\thirdofthreearguments}\relax
87 \processbodyfontenvironmentlist{nextone}
88 \eTABLE}
89 \ifinsidefloat\else\stopbaselinecorrection\fi}
90
91\permanent\protected\tolerant\gdef\showfont[#1]#*[#2]
92 {\bgroup
93 \iftok{#1}\emptytoks\else
94 \definedfont[#1]
95 \ifdim40\emwidth>\hsize
96 \glyphscale750\relax
97 \fi
98 \fi
99 \integerdef\c_module_fonts_font_id\fontid\font
100 \ifempty{#2}
101 \module_fonts_show_font_indeed{#1}\zerocount
102 \orelse\ifcstok{#2}\v!all
103 \dostepwiserecurse\zerocount{255}\plusone
104 {\scratchcounterone \recurselevel
105 \scratchcountertwo \numexpr\scratchcounterone*256\relax
106 \scratchcounterthree\numexpr\scratchcountertwo255\relax
107 \doloop
108 {\iffontchar\font\scratchcountertwo
109 \module_fonts_show_font_indeed{#1}\scratchcounterone
110 \exitloop
111 \orelse\ifnum\scratchcountertwo=\scratchcounterthree
112 \exitloop
113 \else
114 \advanceby\scratchcountertwo\plusone
115 \fi}}
116 \else
117 \processcommalist[#2]{\module_fonts_show_font_indeed{#1}}
118 \fi
119 \egroup}
120
121\gdef\module_fonts_show_font_indeed#1#2
122 {\bgroup
123 \ifinsidefloat\else\startbaselinecorrection\fi
124 \vbox\bgroup
125 \scratchdimenone 2.5\emwidth
126 \scratchdimentwo 2.4\emwidth
127 \scratchdimenthree2.3\emwidth
128 \scratchcounterfour#2\relax
129 \forgetall
130 \startoverlay
131 {\vbox
132 {\tf
133 \setstrut
134 \setfontid\c_module_fonts_font_id
135 \offinterlineskip
136 \protected\def\wrapbox##1
137 {\vpack to \scratchdimenone
138 {\vss
139 \hpack to \scratchdimenone
140 {\setfontid\c_module_fonts_font_id
141 \ifzeropt\interwordspace
142 \setbox##1\hpack{\raise.5\dp##1\hpack{\lower.5\ht##1\copy##1}}
143 \ht##1\zeropoint
144 \dp##1\zeropoint
145 \else
146 \ht##1\strutht
147 \dp##1\strutdp
148 \strut
149 \fi
150 \hss\copy##1\hss}
151 \vss}}
152 \protected\def\textbox##1
153 {\vpack to \scratchdimentwo
154 {\hsize\scratchdimenthree
155 ##1
156 \par}}
157 \protected\def\scratchnum
158 {\blue
159 \tinyfont
160 \hfill
161 \number\scratchcounter
162 \vfill
163 \octnumber\scratchcounter
164 \hfill
165 \lchexnumbers\scratchcounter}
166 \setbox\scratchboxone\hpack{\tf\textbox{}}
167 \setbox\scratchboxtwo\hpack{\tf\gray\vrule\s!width\exheight\s!height.5\exheight\s!depth.5\exheight}
168 \setbox\scratchboxtwo\wrapbox\scratchboxtwo
169 \setbox\scratchboxthree\hpack
170 {\startoverlay
171 {\box\scratchboxtwo}
172 {\box\scratchboxone}
173 \stopoverlay}
174 \dostepwiserecurse\zerocount{15}\plusone
175 {\scratchcounterone\recurselevel
176 \hpack
177 {\dostepwiserecurse\zerocount{15}\plusone
178 {\scratchcountertwo \recurselevel
179 \scratchcounterthree\numexpr\scratchcounterone*16\scratchcountertwo\relax
180 \scratchcounterthree\numexpr\scratchcounterfour*256\scratchcounterthree\relax
181 \iffontchar\font\scratchcounterthree
182 \setbox\scratchbox\ruledhpack{\char\scratchcounterthree}
183 \bgroup
184 \tf
185 \startoverlay
186 {\wrapbox\scratchbox}
187 {\textbox\scratchnum}
188 \stopoverlay
189 \egroup
190 \else
191 \copy\scratchboxthree
192 \fi}}}
193 \par}}
194 {\tf\basegrid[\c!nx=16,\c!ny=16,\c!dx=2.5,\c!dy=2.5,\c!unit=em]}
195 \stopoverlay
196 \nointerlineskip
197 \vskip2\points
198
199 \edef\theshowfontspecs{name: {\noexpand\black\fontname\font}\quad plane: \the\scratchcounterfour\enspace"\hexnumber\scratchcounterfour}
200 \tf
201 \hbox to 40\emwidth{\blue\hfill\tinyfont\setstrut\strut\theshowfontspecs}
202 \egroup
203 \ifinsidefloat\else\stopbaselinecorrection\fi
204 \egroup}
205
206
207
208
209
210
211\permanent\protected\tolerant\gdef\showfontstyle[#1]#*[#2]#*[#3]#*[#4]
212 {\bgroup
213 \edef\m_module_fonts_show_styles {\iftok{#2}\emptytoks\s!rm,\s!ss,\s!tt,\s!mm\else#2\fi}
214 \edef\m_module_fonts_show_alternatives{\iftok{#3}\emptytoks\s!tf,\s!bf,\s!it,\s!sl,\s!bs,\s!bi\else#3\fi}
215 \iftok{#1}\emptytoks\else
216 \switchtobodyfont[#1]
217 \fi
218 \raggedright
219 \protected\def\dododocommand##1
220 {\dostepwiserecurse\zerocount{255}\plusone
221 {\scratchcounter\numexpr##1*256\recurselevel\relax
222 \iffontchar\font\scratchcounter\relax
223 \char\scratchcounter
224 \space
225 \fi}}
226 \protected\def\dodocommand##1##2
227 {\starttextrule{\tttf #1 ##1 ##2}
228 \nobreak\getvalue{##2}
229 \ifempty{#4}
230 \dododocommand\zerocount
231 \orelse\ifcstok{#4}\v!all
232 \dostepwiserecurse\zerocount{255}\plusone
233 {\normalexpanded{\dododocommand{\recurselevel}}}
234 \else
235 \processcommalist[#4]{\dododocommand}
236 \fi
237 \par \nobreak
238 \stoptextrule}
239 \protected\def\docommand##1
240 {\getvalue{##1}
241 \processcommacommand[\m_module_fonts_show_alternatives]{\dodocommand{##1}}}
242 \processcommacommand[\m_module_fonts_show_styles]\docommand
243 \egroup}
244
245\permanent\protected\gdef\showligature#1
246 {\hbox{\type{#1}\enspace\showglyphs#1}}
247
248\permanent\protected\tolerant\gdef\showligatures[#1]
249 {\bgroup
250 \def\module_fonts_show_ligature##1{\hbox{\showglyphs##1}}
251 \ifempty{#1}\else
252 \definedfont[#1*default]
253 \fi
254 \starttabulate[*{7}{c}]
255 \NC\type{ff}
256 \NC\type{fi}
257 \NC\type{fl}
258 \NC\type{ffi}
259 \NC\type{ffl}
260 \NC\type{}
261 \NC\type{}
262 \NC\NR
263 \NC\module_fonts_show_ligature{ff}
264 \NC\module_fonts_show_ligature{fi}
265 \NC\module_fonts_show_ligature{fl}
266 \NC\module_fonts_show_ligature{ffi}
267 \NC\module_fonts_show_ligature{ffl}
268 \NC\module_fonts_show_ligature{}
269 \NC\module_fonts_show_ligature{}
270 \NC\NR
271 \stoptabulate
272 \egroup}
273
274\permanent\protected\gdef\showkerning
275 {\groupedcommandcs\showfontkerns\relax}
276
277\permanent\gdef\module_fonts_char_ratio#1#2
278 {\ifzeropt\nextboxhtdp\else
279 \cldcontext{\number#1/\number\nextboxhtdp}
280 \fi}
281
282\permanent\protected\gdef\showcharratio
283 {\dowithnextboxcontent
284 {\switchtobodyfont[10pt]}
285 {\starttabulate[lll]
286 \NC height \NC \the\nextboxht \NC \module_fonts_char_ratio\nextboxht \NC \NR
287 \NC depth \NC \the\nextboxdp \NC \module_fonts_char_ratio\nextboxdp \NC \NR
288 \stoptabulate}
289 \hbox}
290
291\permanent\protected\gdef\showfontparameters
292 {\starttabulate[tll]
293 \NC \type {\slantperpoint} \NC \the\fontslantperpoint \font \NC\NR
294 \NC \type {\interwordspace} \NC \the\fontinterwordspace \font \NC\NR
295 \NC \type {\interwordstretch} \NC \the\fontinterwordstretch\font \NC\NR
296 \NC \type {\interwordshrink} \NC \the\fontinterwordshrink \font \NC\NR
297 \NC \type {\exheight} \NC \the\fontexheight \font \NC\NR
298 \NC \type {\emwidth} \NC \the\fontemwidth \font \NC\NR
299 \NC \type {\extraspace} \NC \the\fontextraspace \font \NC\NR
300 \stoptabulate}
301
302\protected\gdef\module_fonts_show_minimal_baseline#1
303 {\setbox\scratchbox\ruledhbox{#1}
304 \normalexpanded {
305 \NC \ruledhbox{#1}
306 \NC >
307 \NC \the\htdp\scratchbox
308 \NC =
309 \NC \the\ht\scratchbox
310 \NC
311 \NC \the\dp\scratchbox
312 \NC \ifcmpdim\htdp\scratchbox\baselineskip <\or=\or>\fi
313 \NC \the\baselineskip
314 \NC (\ifdim\htdp\scratchbox>\baselineskip not \fi ok)
315 \NC \NR}}
316
317\permanent\protected\gdef\showminimalbaseline
318 {\starttabulate[lTTTTTTTTT]
319 \module_fonts_show_minimal_baseline{\hbox to \emwidth{\hss\showstruts\strut\hss}}
320 \module_fonts_show_minimal_baseline{()}
321 \module_fonts_show_minimal_baseline{\normalstartimath\frac{1}{2}x\normalsuperscript2\normalsubscript3\normalstopimath}
322 \stoptabulate}
323
324\permanent\protected\tolerant\gdef\showfontstrip[#1]
325 {\bgroup
326 \def\module_fonts_show_strip_a##1##2
327 {\tttf\string##1}
328 \def\module_fonts_show_strip_b##1##2
329 {\ruledhbox{\switchtobodyfont[#1]##1{##2}}}
330 \def\module_fonts_show_strip_c##1##2
331 {\setbox\scratchbox\hbox{\switchtobodyfont[#1]##1{##2}}
332 \tt\tfx\the\ht\scratchbox}
333 \def\module_fonts_show_strip_d##1##2
334 {\setbox\scratchbox\hbox{\switchtobodyfont[#1]##1{##2}}
335 \tt\tfx\the\wd\scratchbox}
336 \def\module_fonts_show_strip_indeed##1##2##3
337 {\NC##2\rm{##3}\NC
338 ##2\ss{##3}\NC
339 ##2\tt{##3}\NC
340 ##2\mathematics{##3}\NC
341 \tttf##1\NR}
342 \starttabulate[ccccc]
343 \module_fonts_show_strip_indeed\relax\module_fonts_show_strip_a\empty
344 \TB
345 \module_fonts_show_strip_indeed\relax\module_fonts_show_strip_b{xxxx}
346 \module_fonts_show_strip_indeed\relax\module_fonts_show_strip_b{12345}
347 \module_fonts_show_strip_indeed\relax\module_fonts_show_strip_b{(Agw)}
348 \TB
349 \module_fonts_show_strip_indeed{(x height)}\module_fonts_show_strip_c{x}
350 \module_fonts_show_strip_indeed{(m width)}\module_fonts_show_strip_d{m}
351 \stoptabulate
352 \egroup}
353
354
355
356
357\newbox\otfcollector
358
359\permanent\protected\gdef\startotfcollecting{\ctxlua{nodes.tracers.steppers.start()}}
360\permanent\protected\gdef\stopotfcollecting {\ctxlua{nodes.tracers.steppers.stop()}}
361\permanent\protected\gdef\resetotfcollecting{\ctxlua{nodes.tracers.steppers.reset()}}
362
363
364
365
366\permanent\protected\gdef\showotfstepglyphs#1
367 {\ctxlua{nodes.tracers.steppers.glyphs(\number\otfcollector,#1)}
368 \unhbox\otfcollector}
369
370\permanent\protected\gdef\otfstepspace
371 {\removeunwantedspaces
372 \hskip.5\emwidth \s!plus .125\emwidth \s!minus .125\emwidth\relax}
373
374\permanent\protected\gdef\otfstepcharcommand#1#2#3
375 {\otfstepspace
376 \iftok{#3}{mark}\expandafter\underbar\fi{U\hexnumber{#2}}:
377 \setbox\scratchbox\hbox{\ctxlua{nodes.tracers.fontchar(#1,#2)}}
378 \ifzeropt\wd\scratchbox
379 \scratchwidth.125\onepoint
380 \scratchdistance\dimexpr(\emwidth2\scratchwidth)\relax
381 \kern\scratchdistance
382 \ruledhbox to \scratchwidth{\hss\box\scratchbox\hss}
383 \kern\scratchwidth
384 \hskip\scratchdistance
385 \else
386 \ruledhbox{\box\scratchbox}
387 \fi
388 \otfstepspace}
389
390\permanent\protected\gdef\otfstepfontcommand#1#2#3
391 {\begingroup
392 \tttf #1: #2 @ \the\dimexpr#3\scaledpoint\relax
393 \endgroup}
394
395\permanent\protected\gdef\otfstepmessagecommand#1#2
396 {\begingroup
397 \tttf\language\minusone
398 \veryraggedright
399 \forgetparindent
400 \forgeteverypar
401 \hangindent\emwidth
402 \hangafter\plusone
403 \dontleavehmode\detokenize{#1}\removeunwantedspaces
404 \ifempty{#2}\else,\space\detokenize{#2}\fi\endgraf
405 \endgroup
406 \blank}
407
408\permanent\protected\gdef\showotfstepfont
409 {\ctxlua{nodes.tracers.steppers.font("otfstepfontcommand")}}
410
411\permanent\protected\gdef\showotfstepchars#1
412 {\ctxlua{nodes.tracers.steppers.codes(#1,"otfstepcharcommand","otfstepspace")}}
413
414\permanent\protected\gdef\showotfstepmessages#1
415 {\ctxlua{nodes.tracers.steppers.messages(#1,"otfstepmessagecommand",true)}}
416
417\permanent\protected\gdef\showotfstepfeatures
418 {\ctxlua{nodes.tracers.steppers.features()}}
419
420\permanent\protected\gdef\otfnoffeaturesteps
421 {\ctxlua{nodes.tracers.steppers.nofsteps()}}
422
423\newconstant\showotfstepsmode \showotfstepsmode\plusfour
424
425\protected\gdef\showotfsteps_n
426 {\blank
427 \begingroup
428 \advanceby\leftskip6\emwidth
429 \showotfstepmessages\recurselevel
430 \par
431 \endgroup
432 \blank
433 \dontleavehmode
434 \hbox to \hsize \bgroup
435 \hbox to 6\emwidth \bgroup
436 \bf
437 \ifnum\recurselevel=\scratchcounter result\else step \recurselevel\fi
438 \hss
439 \egroup
440 \vtop \bgroup
441 \hsize\dimexpr\hsize6\emwidth\relax
442 \resetallattributes
443 \lefttoright
444 \dontleavehmode
445 \ifnum\recurselevel=\scratchcounter
446 \ruledhbox{\box\otfcompositionbox}
447 \else
448 \ruledhbox{\showotfstepglyphs\recurselevel}
449 \fi
450 \quad
451 \showotfstepchars\recurselevel
452 \hfill
453 \par
454 \egroup
455 \egroup
456 \blank}
457
458\permanent\protected\gdef\showotfsteps
459 {\begingroup
460 \veryraggedright
461 \forgetparindent
462 \forgeteverypar
463 \tt
464 \lefttoright
465 \hbox to \hsize \bgroup
466 \hbox to 6\emwidth{\bf font\hss}
467 \vtop \bgroup
468 \hsize\dimexpr\hsize6\emwidth\relax
469 \language\minusone
470 \bf
471 \showotfstepfont
472 \egroup
473 \egroup
474 \blank
475 \hbox to \hsize \bgroup
476 \hbox to 6\emwidth{\bf features\hss}
477 \vtop \bgroup
478 \hsize\dimexpr\hsize6\emwidth\relax
479 \language\minusone
480 \showotfstepfeatures
481 \egroup
482 \egroup
483 \blank
484 \scratchcounter\otfnoffeaturesteps\relax
485 \dorecurse\scratchcounter
486 {\ifcase\showotfstepsmode
487 \or
488 \ifnum\recurselevel=\plusone
489 \showotfsteps_n
490 \fi
491 \or
492 \ifnum\recurselevel=\scratchcounter
493 \showotfsteps_n
494 \fi
495 \or
496 \ifnum\recurselevel=\plusone
497 \showotfsteps_n
498 \orelse\ifnum\recurselevel=\scratchcounter
499 \showotfsteps_n
500 \fi
501 \else
502 \showotfsteps_n
503 \fi}
504 \endgroup}
505
506\permanent\protected\gdef\startotfsample
507 {\enabletrackers[otf.sample.silent]
508 \startotfcollecting
509 \begingroup
510 \veryraggedright
511 \forgetparindent
512 \forgeteverypar}
513
514\permanent\protected\gdef\stopotfsample
515 {\endgroup
516 \stopotfcollecting
517 \disabletrackers[otf.sample]
518 \showotfsteps
519 \resetotfcollecting}
520
521\newbox\otfcompositionbox
522
523
524
525\installcorenamespace{otfcompositiondir}
526
527\gletcsname\??otfcompositiondir 1\endcsname\righttoleft
528\gletcsname\??otfcompositiondir r2l\endcsname\righttoleft
529\gletcsname\??otfcompositiondir l2r\endcsname\lefttoright
530\gletcsname\??otfcompositiondir 1\endcsname\lefttoright
531\gletcsname\??otfcompositiondir 1\endcsname\lefttoright
532
533\permanent\protected\gdef\setotfcompositiondirection#1
534 {\begincsname\??otfcompositiondir#1\endcsname}
535
536\permanent\protected\gdef\showotfcomposition#1#2#3
537 {\begingroup
538 \forgetparindent
539 \forgeteverypar
540
541 \setupalign[\v!verytolerant,\v!flushleft]
542 \startotfsample
543 \nohyphens
544 \global\setbox\otfcompositionbox\hbox{\definedfont[#1]\relax\setotfcompositiondirection{#2}\relax#3}
545 \stopotfsample
546 \endgroup}
547
548
549
550
551
552
553
554
555
556\permanent\protected\gdef\showotfcompositionlist#1#2#3
557 {\begingroup
558 \definedfont[#1]
559 \setbox\scratchbox\hbox\bgroup
560 \setotfcompositiondirection{#2}
561 #3
562 \egroup
563 \strut
564 \def##1{\kern\onepoint\string\kern\onepoint##1\kern\onepoint\string\kern\onepoint}
565 \cldcontext{nodes.listtoutf(tex.box[\number\scratchbox].list,"{\\kern\\onepoint}",true)}
566 \endgroup}
567
568\mutable\glet\showotfcompositionsample\gobbleoneargument
569
570\permanent\protected\gdef\startotfcompositionlist#1#2#3\stopotfcompositionlist
571 {\begingroup
572 \protected\def\showotfcompositionsample##1
573 {\NC\type{##1}
574 \NC\showotfcompositionlist{Mono}{#2}{##1}
575 \NC\showotfcompositionlist{#1}{#2}{##1}
576 \NC\definedfont[#1]##1
577 \NC\NR}
578 \starttabulate[]
579 #3
580 \stoptabulate
581 \endgroup}
582
583\aliased\glet\stopotfcompositionlist\relax
584
585
586
587\permanent\protected\def\showbodyfontstate
588 {\dontleavehmode
589 \start
590 \infofont
591 [fontclass: \fontclass,\space
592 fontbody: \fontbody ,\space
593 fontface: \fontface ,\space
594 fontsize: \fontsize ]
595 \stop}
596
597\protect
598
599\continueifinputfile{sfontsshow.mkxl}
600
601\setupwhitespace[big]
602
603\dontcomplain
604
605\starttext
606
607\startsubject[title=\type{\showkerning}]
608 \showkerning{Just a small sentence with hopefully some kerns.}
609\stopsubject
610
611\startsubject[title=\type{\showcharratio}]
612 \showcharratio{testg}
613\stopsubject
614
615\startsubject[title=\type{\showfontparameters}]
616 \showfontparameters
617\stopsubject
618
619\startsubject[title=\type{\showminimalbaseline}]
620 \showminimalbaseline
621\stopsubject
622
623\startsubject[title=\type{\showfontstrip}]
624 \showfontstrip
625\stopsubject
626
627\startsubject[title=\type{\showbodyfont}]
628 \showbodyfont
629\stopsubject
630
631\startsubject[title=\type{\showbodyfontenvironment}]
632 \showbodyfontenvironment
633\stopsubject
634
635\startsubject[title=\type{\showligature}]
636 \showligature{fi}
637 \showligature{fx}
638\stopsubject
639
640\startsubject[title=\type{\showligatures}]
641 \showligatures
642\stopsubject
643
644\startsubject[title=\type{\showfontstyle}]
645 \showfontstyle[][rm][tf][all]
646\stopsubject
647
648\startsubject[title=\type{\showfont}]
649 \showfont
650\stopsubject
651
652\startsubject[title=\type{\showbodyfontstate}]
653 \showbodyfontstate
654\stopsubject
655
656\page
657
658\startsubject[title=\type{\showotfcomposition}]
659 \showotfcomposition{arabtype*arabic at 48pt}{1}{الضَّرَّ}
660 \page
661 \showotfcomposition{arabtype*arabic at 48pt}{1}{لِلّٰهِ}
662 \page
663\stopsubject
664
665\stoptext
666 |