From b21bdce6c58c224889030af836f34d96ff1a2131 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Sun, 23 Aug 2009 00:18:32 +0000 Subject: lh(fonts) 3.5g (5aug09) git-svn-id: svn://tug.org/texlive/trunk@14821 c570f23f-e606-0410-a88d-b1316a301751 --- Master/texmf-dist/tex/plain/lh/testfox.tex | 258 ++++++++++++++++++++++++++++ Master/texmf-dist/tex/plain/lh/testkern.tex | 164 ++++++++++++++++++ 2 files changed, 422 insertions(+) create mode 100644 Master/texmf-dist/tex/plain/lh/testfox.tex create mode 100644 Master/texmf-dist/tex/plain/lh/testkern.tex (limited to 'Master/texmf-dist/tex/plain/lh') 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{}{}{} - "low level" macro for previous one;@% +where:@ + - number of first code number (e.g. 0 in \LHblk);@ + - number of last code number+1 (e.g. 256 in \LHblk);@ + - number of characters per line (e.g. 16 in \LHblk)@% +=====================================================================@% +}}} + +\kernhelp\par +\input testfox -- cgit v1.2.3