summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/plain/lh
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2009-08-23 00:18:32 +0000
committerKarl Berry <karl@freefriends.org>2009-08-23 00:18:32 +0000
commitb21bdce6c58c224889030af836f34d96ff1a2131 (patch)
tree02a70e5e7d0774665066de0f201333e6b2c70cc5 /Master/texmf-dist/tex/plain/lh
parenta638995999fb20ed70793583d70a92c71f19bd6b (diff)
lh(fonts) 3.5g (5aug09)
git-svn-id: svn://tug.org/texlive/trunk@14821 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/plain/lh')
-rw-r--r--Master/texmf-dist/tex/plain/lh/testfox.tex258
-rw-r--r--Master/texmf-dist/tex/plain/lh/testkern.tex164
2 files changed, 422 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/plain/lh/testfox.tex b/Master/texmf-dist/tex/plain/lh/testfox.tex
new file mode 100644
index 00000000000..9b854218dda
--- /dev/null
+++ b/Master/texmf-dist/tex/plain/lh/testfox.tex
@@ -0,0 +1,258 @@
+% testfo(nt)x -- testfont.tex + \xtable stuff
+% (\xtable has decimal numbers \xtables starts from char128)
+% macro \startfont has penalty additions
+% A testbed for font evaluation (see The METAFONTbook, Appendix H)
+%
+%% Cyrillic font container with T2 encoding beta-support
+%
+% This file is future part of lxfonts package
+% Version 3.5 // Patchlevel=0
+% (c) O.Lapko
+%
+% This package is freeware product under conditions similar to
+% those of D. E. Knuth specified for the Computer Modern family of fonts.
+% In particular, only the authors are entitled to modify this file
+% (and all this package as well) and to save it under the same name.
+%
+% Content:
+%
+% eXtended file testfont.tex
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\tracinglostchars=0
+\tolerance=1000
+\raggedbottom
+\nopagenumbers
+\parindent=0pt
+\newlinechar=`@
+\hyphenpenalty=200
+\doublehyphendemerits=30000
+\hyphenation{prom-i-nent}
+
+\newcount\m \newcount\n \newcount\p \newdimen\dim
+\chardef\other=12
+
+\def\today{\ifcase\month\or
+ January\or February\or March\or April\or May\or June\or
+ July\or August\or September\or October\or November\or December\fi
+ \space\number\day, \number\year}
+\def\hours{\n=\time \divide\n 60
+ \m=-\n \multiply\m 60 \advance\m \time
+%!!!
+ \twodigits\n:\twodigits\m}
+\def\twodigits#1{\ifnum #1<10 0\fi \number#1}
+
+\def\init{\message{@Name of the font to test = }
+ \read-1 to\fontname \startfont
+ \message{Now type a test command (\string\help\space for help):}}
+\def\startfont{\font\testfont=\fontname \spaceskip=0pt
+ \leftline{\sevenrm Test of \fontname\unskip\ on \today\ at \hours}%
+%!!!
+ \penalty10000\medskip
+ \testfont \setbaselineskip
+ \ifdim\fontdimen6\testfont<10pt \rightskip=0pt plus 20pt
+ \else\rightskip=0pt plus 2em \fi
+ \spaceskip=\fontdimen2\testfont % space between words (\raggedright)
+ \xspaceskip=\fontdimen2\testfont \advance\xspaceskip by\fontdimen7\testfont}
+
+{\catcode`\|=0 \catcode`\\=\other
+|gdef|help{|message{%
+\init switches to another font;@%
+\end or \bye finishes the run;@%
+\table prints the font layout in tabular format;@%
+\xtable prints the font layout in tabular format (+decimal nums);@%
+\text prints a sample text, assuming TeX text font conventions;@%
+\sample combines \table and \text;@%
+\mixture mixes a background character with a series of others;@%
+\alternation interleaves a background character with a series;@%
+\alphabet prints all lowercase letters within a given background;@%
+\ALPHABET prints all uppercase letters within a given background;@%
+\series prints a series of letters within a given background;@%
+\lowers prints a comprehensive test of lowercase;@%
+\uppers prints a comprehensive test of uppercase;@%
+\digits prints a comprehensive test of numerals;@%
+\math prints a comprehensive test of TeX math italic;@%
+\names prints a text that mixes upper and lower case;@%
+\punct prints a punctuation test;@%
+\bigtest combines many of the above routines;@%
+\help repeats this message;@%
+and you can use ordinary TeX commands (e.g., to \input a file).}}}
+
+\def\setbaselineskip{\setbox0=\hbox{\n=0
+\loop\char\n \ifnum \n<255 \advance\n 1 \repeat}
+\baselineskip=6pt \advance\baselineskip\ht0 \advance\baselineskip\dp0 }
+
+\def\setchar#1{{\escapechar-1\message{\string#1 character = }%
+ \def\do##1{\catcode`##1=\other}\dospecials
+ \read-1 to\next
+ \expandafter\finsetchar\next\next#1}}
+\def\finsetchar#1#2\next#3{\global\chardef#3=`#1
+ \ifnum #3=`\# \global\chardef#3=#2 \fi}
+\def\promptthree{\setchar\background
+ \setchar\starting \setchar\ending}
+
+\def\mixture{\promptthree \domix\mixpattern}
+\def\alternation{\promptthree \domix\altpattern}
+\def\mixpattern{\0\1\0\0\1\1\0\0\0\1\1\1\0\1}
+\def\altpattern{\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0}
+\def\domix#1{\par\chardef\0=\background \n=\starting
+ \loop \chardef\1=\n #1\endgraf
+ \ifnum \n<\ending \advance\n 1 \repeat}
+
+\def\!{\discretionary{\background}{\background}{\background}}
+\def\series{\promptthree \!\doseries\starting\ending\par}
+\def\doseries#1#2{\n=#1\loop\char\n\!\ifnum\n<#2\advance\n 1 \repeat}
+\def\complower{\!\doseries{`a}{`z}\doseries{'31}{'34}\par}
+\def\compupper{\!\doseries{`A}{`Z}\doseries{'35}{'37}\par}
+\def\compdigs{\!\doseries{`0}{`9}\par}
+\def\alphabet{\setchar\background\complower}
+\def\ALPHABET{\setchar\background\compupper}
+
+\def\lowers{\docomprehensive\complower{`a}{`z}{'31}{'34}}
+\def\uppers{\docomprehensive\compupper{`A}{`Z}{'35}{'37}}
+\def\digits{\docomprehensive\compdigs{`0}{`4}{`5}{`9}}
+\def\docomprehensive#1#2#3#4#5{\par\chardef\background=#2
+ \loop{#1} \ifnum\background<#3\m=\background\advance\m 1
+ \chardef\background=\m \repeat \chardef\background=#4
+ \loop{#1} \ifnum\background<#5\m=\background\advance\m 1
+ \chardef\background=\m \repeat}
+
+\def\names{ {\AA}ngel\aa\ Beatrice Claire
+ Diana \'Erica Fran\c{c}oise Ginette H\'el\`ene Iris
+ Jackie K\=aren {\L}au\.ra Mar{\'\i}a N\H{a}ta{\l}{\u\i}e {\O}ctave
+ Pauline Qu\^eneau Roxanne Sabine T\~a{\'\j}a Ur\v{s}ula
+ Vivian Wendy Xanthippe Yv{\o}nne Z\"azilie\par}
+\def\punct{\par\dopunct{min}\dopunct{pig}\dopunct{hid}
+ \dopunct{HIE}\dopunct{TIP}\dopunct{fluff}
+ \$1,234.56 + 7/8 = 9\% @ \#0\par}
+\def\dopunct#1{#1,\ #1:\ #1;\ `#1'\ ?`#1?\ !`#1!\ (#1)\ [#1]\ #1*\ #1.\par}
+
+\def\bigtest{\sample
+ hamburgefonstiv HAMBURGEFONSTIV\par
+ \names \punct \lowers \uppers \digits}
+
+\def\math{\textfont1=\testfont \skewchar\testfont=\skewtrial
+ \mathchardef\Gamma="100 \mathchardef\Delta="101
+ \mathchardef\Theta="102 \mathchardef\Lambda="103 \mathchardef\Xi="104
+ \mathchardef\Pi="105 \mathchardef\Sigma="106 \mathchardef\Upsilon="107
+ \mathchardef\Phi="108 \mathchardef\Psi="109 \mathchardef\Omega="10A
+ \def\ii{i} \def\jj{j}
+ \def\\##1{|##1|+}\mathtrial
+ \def\\##1{##1_2+}\mathtrial
+ \def\\##1{##1^2+}\mathtrial
+ \def\\##1{##1/2+}\mathtrial
+ \def\\##1{2/##1+}\mathtrial
+ \def\\##1{##1,{}+}\mathtrial
+ \def\\##1{d##1+}\mathtrial
+ \let\ii=\imath \let\jj=\jmath \def\\##1{\hat##1+}\mathtrial}
+\newcount\skewtrial \skewtrial='177
+\def\mathtrial{$\\A \\B \\C \\D \\E \\F \\G \\H \\I \\J \\K \\L \\M \\N \\O
+ \\P \\Q \\R \\S \\T \\U \\V \\W \\X \\Y \\Z \\a \\b \\c \\d \\e \\f \\g
+ \\h \\\ii \\\jj \\k \\l \\m \\n \\o \\p \\q \\r \\s \\t \\u \\v \\w \\x \\y
+ \\z \\\alpha \\\beta \\\gamma \\\delta \\\epsilon \\\zeta \\\eta \\\theta
+ \\\iota \\\kappa \\\lambda \\\mu \\\nu \\\xi \\\pi \\\rho \\\sigma \\\tau
+ \\\upsilon \\\phi \\\chi \\\psi \\\omega \\\vartheta \\\varpi \\\varphi
+ \\\Gamma \\\Delta \\\Theta \\\Lambda \\\Xi \\\Pi \\\Sigma \\\Upsilon
+ \\\Phi \\\Psi \\\Omega \\\partial \\\ell \\\wp$\par}
+\def\mathsy{\begingroup\skewtrial='060 % for math symbol font tests
+ \def\mathtrial{$\\A \\B \\C \\D \\E \\F \\G \\H \\I \\J \\K \\L
+ \\M \\N \\O \\P \\Q \\R \\S \\T \\U \\V \\W \\X \\Y \\Z$\par}
+ \math\endgroup}
+
+\def\oct#1{\hbox{\rm\'{}\kern-.2em\it#1\/\kern.05em}} % octal constant
+\def\hex#1{\hbox{\rm\H{}\tt#1}} % hexadecimal constant
+\def\|{\omit\vrule}
+\def\setdigs#1"#2{\gdef\h{#2}% \h=hex prefix; \0\1=corresponding octal
+ \m=\n \divide\m by 64 \xdef\0{\the\m}%
+ \multiply\m by-64 \advance\m by\n \divide\m by 8 \xdef\1{\the\m}}
+\def\testrow{\setbox0=\hbox{\penalty 1\def\\{\char"\h}%
+ \\0\\1\\2\\3\\4\\5\\6\\7\\8\\9\\A\\B\\C\\D\\E\\F%
+ \global\p=\lastpenalty}} % \p=1 if none of the characters exist
+\def\oddline{\cr
+ \noalign{\nointerlineskip}
+ \multispan{19}\hrulefill&
+ \setbox0=\hbox{\lower 2.3pt\hbox{\hex{\h x}}}\smash{\box0}\cr
+ \noalign{\nointerlineskip}}
+\newif\ifskipping
+\def\evenline{\loop\skippingfalse
+ \ifnum\n<256 \m=\n \divide\m 16 \chardef\next=\m
+ \expandafter\setdigs\meaning\next \testrow
+ \ifnum\p=1 \skippingtrue \fi\fi
+ \ifskipping \global\advance\n 16 \repeat
+ \ifnum\n=256 \let\next=\endchart\else\let\next=\morechart\fi
+ \next}
+\def\sevenline{\loop\skippingfalse
+ \ifnum\n<256 \m=\n \divide\m 16 \chardef\next=\m
+ \expandafter\setdigs\meaning\next \testrow
+ \ifnum\n<128 \skippingtrue \else\ifnum\p=1 \skippingtrue \fi\fi\fi
+ \ifskipping \global\advance\n 16 \repeat
+ \ifnum\n=256 \let\next=\endchart\else\let\next=\morechart\fi
+ \next}
+\def\morechart{\cr\noalign{\hrule\penalty5000}
+ \chartline \oddline \m=\1 \advance\m 1 \xdef\1{\the\m}
+ \chartline \evenline}
+\def\chartline{&\oct{\0\1x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\|&}
+\def\chartstrut{\lower4.5pt\vbox to14pt{}}
+\def\table{$$\global\n=0
+ \halign to\hsize\bgroup
+ \chartstrut##\tabskip0pt plus10pt&
+ &\hfil##\hfil&\vrule##\cr
+ \lower6.5pt\null
+ &&&\oct0&&\oct1&&\oct2&&\oct3&&\oct4&&\oct5&&\oct6&&\oct7&\evenline}
+%!!!
+\def\xtable{$$\global\n=0
+ \halign to\hsize\bgroup
+ \chartstrut##\tabskip0pt plus10pt&
+ &\hfil##\hfil&\vrule\smashnum##\cr
+ \lower6.5pt\null
+ &&\|&\oct0&\|&\oct1&\|&\oct2&\|&\oct3&\|&\oct4
+ &\|&\oct5&\|&\oct6&\|&\oct7&\|\evenline}
+%!!!
+\def\xtables{$$\global\n=128
+ \halign to\hsize\bgroup
+ \chartstrut##\tabskip0pt plus10pt&
+ &\hfil##\hfil&\vrule\smashnum##\cr
+ \lower6.5pt\null
+ &&\|&\oct0&\|&\oct1&\|&\oct2&\|&\oct3&\|&\oct4
+ &\|&\oct5&\|&\oct6&\|&\oct7&\|\sevenline}
+\def\endchart{\cr\noalign{\hrule}%
+ \raise11.5pt\null&&\|&\hex 8&\|&\hex 9&\|&\hex A&\|&\hex B&\|
+ &\hex C&\|&\hex D&\|&\hex E&\|&\hex F&\|\cr\egroup$$\par}
+\def\:{\setbox0=\hbox{\char\n}%
+ \ifdim\ht0>7.5pt\reposition
+ \else\ifdim\dp0>2.5pt\reposition\fi\fi
+ \box0\global\advance\n 1 }
+\def\reposition{\setbox0=\vbox{\kern2pt\box0}\dim=\dp0
+ \advance\dim 2pt \dp0=\dim}
+\def\centerlargechars{
+ \def\reposition{\setbox0=\hbox{$\vcenter{\kern2pt\box0\kern2pt}$}}}
+%!!!
+\def\smashnum{\smash{\hbox to0pt{\fiverm\kern.2em\lower1.5ex\hbox
+{\number\n}\hss}}}
+
+\def\text{{\advance\baselineskip-4pt
+\setbox0=\hbox{abcdefghijklmnopqrstuvwxyz}
+\ifdim\hsize>2\wd0 \ifdim 15pc>2\wd0 \hsize=15pc \else \hsize=2\wd0 \fi\fi
+On November 14, 1885, Senator \& Mrs.~Leland Stanford called
+together at their San Francisco mansion the 24~prominent men who had
+been chosen as the first trustees of The Leland Stanford Junior University.
+They handed to the board the Founding Grant of the University, which they
+had executed three days before. This document---with various amendments,
+legislative acts, and court decrees---remains as the University's charter.
+In bold, sweeping language it stipulates that the objectives of the University
+are ``to qualify students for personal success and direct usefulness in life;
+and to promote the publick welfare by exercising an influence in behalf of
+humanity and civilization, teaching the blessings of liberty regulated by
+law, and inculcating love and reverence for the great principles of
+government as derived from the inalienable rights of man to life, liberty,
+and the pursuit of happiness.'' \moretext
+(!`THE DAZED BROWN FOX QUICKLY GAVE 12345--67890 JUMPS!)\par}}
+\def\moretext{?`But aren't Kafka's Schlo{\ss} and {\AE}sop's {\OE}uvres
+often na{\"\i}ve vis-\`a-vis the d{\ae}monic ph{\oe}nix's official r\^ole
+in fluffy souffl\'es? }
+\def\omitaccents{\let\moretext=\relax}
+
+\def\sample{\table\text}
+
+\ifx\noinit!\else\init\fi
diff --git a/Master/texmf-dist/tex/plain/lh/testkern.tex b/Master/texmf-dist/tex/plain/lh/testkern.tex
new file mode 100644
index 00000000000..f14dd58337c
--- /dev/null
+++ b/Master/texmf-dist/tex/plain/lh/testkern.tex
@@ -0,0 +1,164 @@
+%
+% testkern.tex
+%
+%% Cyrillic font container with T2 encoding beta-support
+%
+% This file is future part of lxfonts package
+% Version 3.5 // Patchlevel=0
+% (c) O.Lapko
+%
+% This package is freeware product under conditions similar to
+% those of D. E. Knuth specified for the Computer Modern family of fonts.
+% In particular, only the authors are entitled to modify this file
+% (and all this package as well) and to save it under the same name.
+%
+% Content:
+%
+% TeX file with macros for testing kerns between letters in fonts
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\newcount\chu \newcount\chl \newcount\chtemp
+\newcount \hours \newcount \minutes
+
+\let\xpar=\par
+
+\def\LHpair#1 #2.{\noindent\chu=#1%
+{\loop \chl=\chu
+{\loop \char\chu\char\chl\char\chu{}\char\chl{}\char\chu\
+\advance\chl by 1 \let\chtemp\chl#2\xpar\noindent}%
+\global\advance\chu by 1 \let\chtemp\chu#2\xpar}}
+
+\def\LHcross#1 #2 #3.{\noindent\chu=#1\chl=#2%
+\def\H{\discretionary{\char\chu}{\char\chu}{\char\chu}}%
+{\char\chu\loop\char\chl\H%
+\advance\chl by 1 \let\chtemp\chl#3\xpar}}
+
+\def\LHdot#1 #2.{\noindent\chu=#1%
+{\loop \char\chu.\ \char\chu.\ %
+\advance\chl by 1 \let\chtemp\chl#2\xpar}}
+
+\def\LHuplow#1 #2; #3 #4.{\noindent\chu=#1%
+{\loop \chl=#3%
+{\loop \char\chu\char\chl\char\chl\ \char\chu{}\char\chl{}\char\chl\
+\advance\chl by 1 \let\chtemp\chl#4\xpar\noindent}%
+\global\advance\chu by 1 \let\chtemp\chu#2\xpar}}
+
+\def\LHblks #1#2#3{\par\baselineskip=2.65ex\lineskip2pt
+{\noindent
+\chu=#1\loop
+\centerline{\quad\llap{\rm\number\chu $:\,$}%
+\chl=#1\loop \setbox0\hbox{\char\chu}%
+\rlap{\lower\dp0\hbox{\vrule\vbox{\hrule\box0\hrule}\vrule}}\hskip1.25em%
+\global\advance\chu by 1 \advance\chl by 1 \ifnum\chl<#3 \repeat \hfill}
+\ifnum\chu<#2 \repeat}}
+
+\def\LHblk{\LHblks{0}{256}{16}}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%T2
+\def\Ttwo{%
+\LHpair 128 \ifnum\chtemp=157\chtemp=192 \ifnum\chtemp<224\repeat.
+\eject
+\LHpair 160 \ifnum\chtemp=189\chtemp=224 \ifnum\chtemp<256\repeat.
+\eject
+\LHcross 205 128 \ifnum\chtemp=157\chtemp=192 \ifnum\chtemp<224\repeat.
+\LHcross 237 160 \ifnum\chtemp=189\chtemp=224 \ifnum\chtemp<256\repeat.
+\LHdot 128 \ifnum\chtemp=157\chtemp=192 \ifnum\chtemp<224\repeat.
+\LHdot 160 \ifnum\chtemp=189\chtemp=224 \ifnum\chtemp<256\repeat.
+\eject
+\LHuplow 128 \ifnum\chtemp=157\chtemp=192 \ifnum\chtemp<224\repeat; 160 \loTtwo.
+}
+
+%ALT
+\def\ALT{%
+\LHpair 128 %
+ \ifnum\chtemp=160\chtemp=242\fi %
+ \ifnum\chtemp=243\chtemp=244\fi %
+ \ifnum\chtemp=245\chtemp=246\fi %
+ \ifnum\chtemp=247\chtemp=248\fi %
+ \ifnum\chtemp=249\chtemp=250\fi %
+ \ifnum\chtemp<251\repeat.
+\eject
+\LHpair 160 %
+ \ifnum\chtemp=176\chtemp=224\fi %
+ \ifnum\chtemp=240\chtemp=241\fi %
+ \ifnum\chtemp=242\chtemp=243\fi %
+ \ifnum\chtemp=244\chtemp=245\fi %
+ \ifnum\chtemp=246\chtemp=247\fi %
+ \ifnum\chtemp=248\chtemp=249\fi %
+ \ifnum\chtemp=250\chtemp=251\fi %
+ \ifnum\chtemp<252\repeat.
+\eject
+\LHcross 205 128 %
+ \ifnum\chtemp=160\chtemp=242\fi %
+ \ifnum\chtemp=243\chtemp=244\fi %
+ \ifnum\chtemp=245\chtemp=246\fi %
+ \ifnum\chtemp=247\chtemp=248\fi %
+ \ifnum\chtemp=249\chtemp=250\fi %
+ \ifnum\chtemp<251\repeat.
+\LHcross 237 160 %
+ \ifnum\chtemp=176\chtemp=224\fi %
+ \ifnum\chtemp=240\chtemp=241\fi %
+ \ifnum\chtemp=242\chtemp=243\fi %
+ \ifnum\chtemp=244\chtemp=245\fi %
+ \ifnum\chtemp=246\chtemp=247\fi %
+ \ifnum\chtemp=248\chtemp=249\fi %
+ \ifnum\chtemp=250\chtemp=251\fi %
+ \ifnum\chtemp<252\repeat.
+\LHdot 128 %
+ \ifnum\chtemp=160\chtemp=242\fi %
+ \ifnum\chtemp=243\chtemp=244\fi %
+ \ifnum\chtemp=245\chtemp=246\fi %
+ \ifnum\chtemp=247\chtemp=248\fi %
+ \ifnum\chtemp=249\chtemp=250\fi %
+ \ifnum\chtemp<251\repeat.
+\LHdot 160 %
+ \ifnum\chtemp=176\chtemp=224\fi %
+ \ifnum\chtemp=240\chtemp=241\fi %
+ \ifnum\chtemp=242\chtemp=243\fi %
+ \ifnum\chtemp=244\chtemp=245\fi %
+ \ifnum\chtemp=246\chtemp=247\fi %
+ \ifnum\chtemp=248\chtemp=249\fi %
+ \ifnum\chtemp=250\chtemp=251\fi %
+ \ifnum\chtemp<252\repeat.
+\eject
+\LHuplow 128 %
+ \ifnum\chtemp=160\chtemp=242\fi %
+ \ifnum\chtemp=243\chtemp=244\fi %
+ \ifnum\chtemp=245\chtemp=246\fi %
+ \ifnum\chtemp=247\chtemp=248\fi %
+ \ifnum\chtemp=249\chtemp=250\fi %
+ \ifnum\chtemp<251\repeat;
+ 160 %
+ \ifnum\chtemp=176\chtemp=224\fi %
+ \ifnum\chtemp=240\chtemp=241\fi %
+ \ifnum\chtemp=242\chtemp=243\fi %
+ \ifnum\chtemp=244\chtemp=245\fi %
+ \ifnum\chtemp=246\chtemp=247\fi %
+ \ifnum\chtemp=248\chtemp=249\fi %
+ \ifnum\chtemp=250\chtemp=251\fi %
+ \ifnum\chtemp<252\repeat.
+}
+\newlinechar=`@
+{\chardef\other=12
+\catcode`\|=0 \catcode`\\=\other
+|gdef|kernhelp{|message{@%
+=====================================================================@%
+YOU MAY USE THESE COMMANDS AFTER SELECTING TEST FONT:@@%
+\kernhelp - this help;@%
+\help - main testfo(nt)x.tex's help;@%
+\init - set font name to be tested;@@%
+\ALT - kerning test in LCY encoding (lh* fonts);@%
+\Ttwo - kerning test in T2/X2 encoding (rx/l(a/b/c)* fonts);@@%
+\LHblk - test for char boxes and char placement inside framed boxes;@%
+\LHblks{<num1>}{<num2>}{<num3>} - "low level" macro for previous one;@%
+where:@
+ <num1> - number of first code number (e.g. 0 in \LHblk);@
+ <num2> - number of last code number+1 (e.g. 256 in \LHblk);@
+ <num3> - number of characters per line (e.g. 16 in \LHblk)@%
+=====================================================================@%
+}}}
+
+\kernhelp\par
+\input testfox