summaryrefslogtreecommitdiff
path: root/macros/plain/contrib/TypeSpec
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
committerNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
commite0c6872cf40896c7be36b11dcc744620f10adf1d (patch)
tree60335e10d2f4354b0674ec22d7b53f0f8abee672 /macros/plain/contrib/TypeSpec
Initial commit
Diffstat (limited to 'macros/plain/contrib/TypeSpec')
-rw-r--r--macros/plain/contrib/TypeSpec/TypeSp01.tex1
-rw-r--r--macros/plain/contrib/TypeSpec/TypeSp02.tex1
-rw-r--r--macros/plain/contrib/TypeSpec/TypeSp03.tex1
-rw-r--r--macros/plain/contrib/TypeSpec/TypeSp04.tex1
-rw-r--r--macros/plain/contrib/TypeSpec/TypeSp05.tex1
-rw-r--r--macros/plain/contrib/TypeSpec/TypeSp06.tex1
-rw-r--r--macros/plain/contrib/TypeSpec/TypeSp07.tex1
-rw-r--r--macros/plain/contrib/TypeSpec/TypeSp08.tex1
-rw-r--r--macros/plain/contrib/TypeSpec/TypeSp09.tex1
-rw-r--r--macros/plain/contrib/TypeSpec/TypeSp10.tex1
-rw-r--r--macros/plain/contrib/TypeSpec/TypeSpec.pdfbin0 -> 646412 bytes
-rw-r--r--macros/plain/contrib/TypeSpec/TypeSpec.tex1
12 files changed, 11 insertions, 0 deletions
diff --git a/macros/plain/contrib/TypeSpec/TypeSp01.tex b/macros/plain/contrib/TypeSpec/TypeSp01.tex
new file mode 100644
index 0000000000..c0539262c8
--- /dev/null
+++ b/macros/plain/contrib/TypeSpec/TypeSp01.tex
@@ -0,0 +1 @@
+%%% Stephen Moye %%% Stephen_Moye@brown.edu %%% Brown University %%% Graphic Services % Much of the math in this example is simple modular arithmetic, % and gets around the fact that \TeX can only do integer math. % % This sort of typesetting project is probably better suited to % TrueType or PostScript typefaces. \newtoks\dspfont %%% Fill in the \TeX name of the font here: \dspfont={ACaslonI} %%% Fill in the name of the typeface as you want it at the top of the page \def\fontname{Adobe Caslon Italic} %%% The following is for notes in the comments at the bottom %%% of the page following the type stats. %%% Just leave it empty if you have nothing to say... \def\comment{Carol Twombly} %\hsize7.5in \hoffset-.5in \parindent0pt \nopagenumbers \voffset-.5in \advance\vsize by 1in \font\text=\the\dspfont\space at 10pt \font\tiny=\the\dspfont\space at 8pt \font\name=\the\dspfont\space at 24pt \newtoks\ntext \newtoks\pantext \newtoks\loremtext % \newbox\testbox % \newdimen\bigger \newdimen\dspsize \newdimen\dspsizeincr \newdimen\habcwd \newdimen\ctextsz \newdimen\leading \newdimen\xheight \newdimen\ascheight \newdimen\kernone \newdimen\kerntwo \newdimen\adjust \adjust0pt \newdimen\dist \newdimen\scratchdim % \newcount\dsplineno \newcount\picawd \newcount\pointwd \newcount\spconv \newcount\measure \newcount\divisor \newcount\scratch \newcount\sscratch \newcount\xascrnum \newcount\intgp \newcount\fracp \newcount\scppt \scppt=65536 \ntext={Typography may be defined as both an art and a craft. It is an art in that what it does, it does for its own sake, according to its own internal sense of what is beautiful and right. It is a craft in that what it does, it does for a purpose outside itself: it provides a means of storing, shaping and conveying information. Typography is, therefore, a selfless art -- a contradiction in terms, perhaps -- and is at its best when it is least perceived to be doing anything, indeed when there is no active awareness of perceiving it, directly, at all, but rather perceiving, through it, the knowledge which animates the type on the page. Quality in typography results from an effortless perfection of conception and execution in the creation of a balance between beauty \& utility: compromising neither, calling attention to neither, yet achieving both.\thinspace\nobreak\leaders\hrule\hfill\null\par} %%% The following pangrams were collected by David Lemon of Adobe Systems, Inc. %%% This is just a small sample from the entire collection. \pantext={Brick quiz whangs jumpy veldt fox. Nymphs vex, beg quick fjord waltz. Quick wafting zephyrs vex bold Jim. West quickly gave Bert handsome prizes for six juicy plums. Freight to me sixty dozen quart jars and twelve black pans. My help squeezed back in again and joined the weavers after six. Turgid saxophones blew over Mick's jazzy quiff. Five wine experts jokingly quizzed sample chablis. My grandfather picks up quartz and valuable onyx jewels. Mix Zapf with Veljovic and get quirky Beziers. All questions asked by five watch experts amazed the judge. Back in June we delivered oxygen equipment of the same size. We have just quoted on nine dozen boxes of grey lamp wicks. A large fawn jumped quickly over white zinc boxes. The exodus of jazzy pigeons is craved by squeamish walkers.\thinspace\nobreak\leaders\hrule\hfill\hbox{}\par} \loremtext={Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh eusi\-mod tincidunt ut laor\-eet dolore magna ali\-quam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit la\-bortis nisl ut ali\-quip exea commodo consequat. Quousque tandem abutere, Catilina, patientia nostra? Quamdiu nos etiam furor iste tuus eludet? quem ad finem sese effrenata jactibit audicia? nihilne te nocturnum pr\ae sidium palatii, nihil urbis vigil\ae . Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh eusi\-mod tincidunt ut laor\-eet dolore magna ali\-quam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit la\-bortis nisl ut ali\-quip exea commodo consequat. Quousque tandem abutere, Catilina, patientia nostra? Quamdiu nos etiam furor iste tuus eludet? quem ad finem sese effrenata jactibit audicia? \thinspace\nobreak\leaders\hrule\hfill\null\par} \def\abc{abcdefghijklmnopqrstuvwxyz} \def\habc{\abc\abc abcdefghijklm} \def\dabc{AGQMstaefgpy1234?!\&} \def\ucabc{ABCDEFGHIJKLMNOPQRSTUVWXYZ} \def\freqabc{\text zjqx% kkvv% bbbbppppyyyywwwwgggg% mmmmmmffffffccccccuuuuuu% lllllllldddddddd% hhhhhhhhhhhhrrrrrrrrrrrrssssssssssss% ooooooooooooooiiiiiiiiiiiiiinnnnnnnnnnnnnn% aaaaaaaaaaaaaaaatttttttttttttttttt% eeeeeeeeeeeeeeeeeeeeeeee}% 204 chars \def\ast{*} \def\per{.} %%% Convert from TeX's bulky 4-decimal point measurements to 1 \def\prettypt#1{\dist=#1 \multiply\dist10 \scratch=\number\dist \divide\scratch\scppt \intgp=\scratch \divide\intgp10 \sscratch=\intgp \multiply\sscratch10 \advance\scratch-\sscratch \fracp=\scratch \hbox{\the\intgp.\the\fracp}pt\ } %%% Converts points to inches. \def\cvptin#1{\dist=#1 \multiply\dist by 10 \scratch=\number\dist \divide\scratch\scppt \multiply\scratch100 \fracp=\scratch \divide\scratch72270 \intgp=\scratch \multiply\scratch72270 \advance\fracp-\scratch \multiply\fracp10 \divide\fracp7227 \hbox{\the\intgp.\ifnum\fracp<10 0\the\fracp \else\the\fracp\fi in}} %%% Type factor = ([Type size] * [# of characters in a sample])/(linear length of sample) %%% Based on {\it Brown's Index}, Bruce Brown, Greenwood Publishing, Great Britain 1983 \def\typefact{% \dist=10pt \spconv=\number\dist \multiply\spconv by 12 \multiply\spconv by 204 \setbox1=\hbox{\text\freqabc}% \divisor=\number\wd1 \divide\divisor by 100 \divide\spconv by \divisor \scratch=\spconv \divide\scratch100 \divisor=\scratch \multiply \scratch100 \advance\spconv-\scratch \hbox{\number\divisor.\ifnum\spconv<10 0\the\spconv \else \the\spconv\fi}} \setbox0=\hbox{\tiny 0} \kernone=.5\wd0 \kerntwo=\wd0 \def\k{\kern-\kernone} \def\kk{\kern-\kerntwo} \def\endline{\hbox to 0pt{\vrule width1pt height\baselineskip% depth.25\baselineskip\hss}} \def\iline{\hbox to 0pt{\vrule width.25pt height\baselineskip\hss}} \def\hline{\hbox to 0pt{\vrule width.25pt height.75\baselineskip\hss}} \def\qline{\hbox to 0pt{\vrule width.25pt height.55\baselineskip\hss}} \def\eline{\hbox to 0pt{\vrule width.25pt height.35\baselineskip\hss}} \def\sline{\hbox to 0pt{\vrule width.25pt height.15\baselineskip\hss}} \def\itick{\hbox to 1in{\iline\hfill}} \def\htick{\hbox to .5in{\hline\hfill}} \def\qtick{\hbox to .25in{\qline\hfill}} \def\etick{\hbox to .125in{\eline\hfill}} \def\stick{\hbox to .0625in{\sline\hfill}} \def\dhtick{\hbox to .5in{\hline\hfill}} \def\dttick{\hbox to .1in{\qline\hfill}} \def\dftick{\hbox to .05in{\eline\hfill}} \def\pctick{\hbox to 1pc{\iline\hss}} \def\hpctick{\hbox to .5pc{\qline\hss}} \def\druler#1 {\hbox to #1{\endline\hfill\endline} \kern-\baselineskip \bigger=#1 \advance\bigger by .5in \hbox to #1{\hrulefill}\kern-\baselineskip \hbox to \bigger{\leaders\itick\hfill}\kern-\baselineskip \hbox to #1{\leaders\dhtick\hfill}\kern-\baselineskip \hbox to #1{\leaders\dttick\hfill}\kern-\baselineskip \hbox to #1{\leaders\dftick\hfill}} \def\pcruler#1 {\hbox to #1{\endline\hfill\endline} \kern-\baselineskip \hbox to #1{\hrulefill}\kern-\baselineskip \hbox to #1{\leaders\pctick\hfill}\kern-\baselineskip \hbox to #1{\leaders\hpctick\hfill}} %%% Calculates the largest display typesize to fit \hsize %%% First typeset it very small (.5pt) then calculate a %%% scale factor to get it to fit to \hsize \font\dsp=\the\dspfont\space at .1pt \setbox0=\hbox{\dsp \dabc}% \dspsize=\hsize \scratch=\dspsize \multiply\scratch10 \divisor=\wd0 \divide\scratch by \divisor \dspsize=\scratch pt \divide\dspsize by 100 %%% Calculates the increment such that smallest display size is 12pt \dspsizeincr=\dspsize \advance\dspsizeincr by -12pt \divide\dspsizeincr by 5 \dsplineno6 \kern-1\baselineskip {\name \fontname\par} \hbox to \hsize{\hrulefill}\kern-.5\baselineskip %%% Display Type \bgroup \loop\font\dsp=\the\dspfont\space at \dspsize \dsp \baselineskip1em \hbox to\hsize{\dabc\hfill\hss\rlap{\tiny\enskip\prettypt{\the\dspsize}}}% \vskip.075in\relax \ifnum\dsplineno>1 \global\advance\dsplineno by-1\relax \advance\dspsize by -\dspsizeincr \font\dsp=\the\dspfont\space at \dspsize\repeat \egroup \setbox0=\hbox{\text x} \xheight=\ht0 %%% Leading calculations \setbox0=\hbox{\text Ilpgy} \ascheight=\ht0 \leading=\ht0 \adjust=\xheight \advance\adjust-.5\leading \advance\leading\dp0 \leading=1.175\leading \ifdim\dp0<.05\ht0 \advance\adjust.5\xheight\fi \advance\leading by \adjust \baselineskip\leading %%% Calculates ratio of x-height to ascender height \dimen0=\the\fontdimen5\text \xascrnum=\dimen0% \divisor=\number\ascheight \multiply\xascrnum by 100\relax \divide\xascrnum by\ascheight %%% Calculates width of 2.5 lc alphabets in picas and points \setbox0=\hbox{\text\habc} \habcwd=\wd0 \def\showhabcwd{% \scratchdim=\habcwd \scratchdim=\scratchdim \scratch=\number\scratchdim \divide\scratch\scppt \sscratch=\scratch \divide\scratch12 \picawd=\scratch \multiply\scratch by 12 \advance\sscratch-\scratch \pointwd=\sscratch \hbox{\the\picawd pc\the\pointwd}} %%% Calculates the largest typesize to fit 70 characters to 4.5in. %%% First typeset it very small (.5pt) then calculate a %%% scale factor to get it to fit to 4.5in. \font\calcfont=\the\dspfont\space at .5pt \setbox0=\hbox{\calcfont \habc}% \dspsize=4.5in \scratch=\dspsize \multiply\scratch10 \divisor=\wd0 \divide\scratch by \divisor \ctextsz=\scratch pt \divide\ctextsz by 20 \vskip.2in \text \vbox{\baselineskip1.2\baselineskip% \druler{6.51in} % {\hsize6in \settabs 6\columns\tiny \+Decimal Inches&\k 1&\k 2&\k 3&\k 4&\k 5&\k 6\cr} % \text 1234567890\$\%\&?(``\thinspace'')\par \habc\par \uppercase\expandafter{\abc}\vskip.5em % \pcruler{38pc} % {\hsize35pc \settabs 7\columns\tiny \+Picas&\k 5&\kk 10&\kk 15&\kk 20&\kk 25&\kk 30&\kk 35\cr}\vfill} \vskip.25in %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%% %%% Change the text sample here. %%% The choices are \ntext, \pantext and \loremtext %%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \vbox{% \hsize\habcwd \baselineskip\leading \the\ntext} \vfill \hbox to \hsize{\hrulefill} \smallskip \vbox{% \emergencystretch1em\tiny \hsize.8\habcwd \baselineskip.9\leading % \halign to \hsize{#\hfil\tabskip0pt plus 1fill&\hfil#\tabskip0pt\cr Type stats:\cr \noalign{\smallskip\hrule\smallskip} Text sample (10pt) leading&\prettypt{\the\leading}\unskip\cr \noalign{\smallskip\hrule\smallskip} Width of 2.5 lowercase 10pt alphabets&\showhabcwd\ or \cvptin{\the\habcwd}\unskip\cr \noalign{\smallskip\hrule\smallskip} Type size required for a 4.5in measure&\prettypt{\the\ctextsz}\unskip\cr \noalign{\smallskip\hrule\smallskip} Ratio of x-height to ascender height&\hbox{0.\the\xascrnum}\cr \noalign{\smallskip\hrule\smallskip} Typefactor&\typefact\cr \noalign{\smallskip\hrule}} \smallskip \comment}% \eject\end \ No newline at end of file
diff --git a/macros/plain/contrib/TypeSpec/TypeSp02.tex b/macros/plain/contrib/TypeSpec/TypeSp02.tex
new file mode 100644
index 0000000000..b35dfe0c76
--- /dev/null
+++ b/macros/plain/contrib/TypeSpec/TypeSp02.tex
@@ -0,0 +1 @@
+%%% Stephen Moye %%% Stephen_Moye@brown.edu %%% Brown University %%% Graphic Services % Much of the math in this example is simple modular arithmetic, % and gets around the fact that \TeX can only do integer math. % % This sort of typesetting project is probably better suited to % TrueType or PostScript typefaces. \newtoks\dspfont %%% Fill in the \TeX name of the font here: \dspfont={ACaslon} %%% Fill in the name of the typeface as you want it at the top of the page \def\fontname{Adobe Caslon} %%% The following is for notes in the comments at the bottom %%% of the page following the type stats. %%% Just leave it empty if you have nothing to say... \def\comment{Drawn by Carol Twombly.} %\hsize7.5in \hoffset-.5in \parindent0pt \nopagenumbers \voffset-.5in \advance\vsize by 1in \font\text=\the\dspfont\space at 10pt \font\tiny=\the\dspfont\space at 8pt \font\name=\the\dspfont\space at 24pt \newtoks\ntext \newtoks\pantext \newtoks\loremtext % \newbox\testbox % \newdimen\bigger \newdimen\dspsize \newdimen\dspsizeincr \newdimen\habcwd \newdimen\ctextsz \newdimen\leading \newdimen\xheight \newdimen\ascheight \newdimen\kernone \newdimen\kerntwo \newdimen\adjust \adjust0pt \newdimen\dist \newdimen\scratchdim % \newcount\dsplineno \newcount\picawd \newcount\pointwd \newcount\spconv \newcount\measure \newcount\divisor \newcount\scratch \newcount\sscratch \newcount\xascrnum \newcount\intgp \newcount\fracp \newcount\scppt \scppt=65536 \ntext={Typography may be defined as both an art and a craft. It is an art in that what it does, it does for its own sake, according to its own internal sense of what is beautiful and right. It is a craft in that what it does, it does for a purpose outside itself: it provides a means of storing, shaping and conveying information. Typography is, therefore, a selfless art -- a contradiction in terms, perhaps -- and is at its best when it is least perceived to be doing anything, indeed when there is no active awareness of perceiving it, directly, at all, but rather perceiving, through it, the knowledge which animates the type on the page. Quality in typography results from an effortless perfection of conception and execution in the creation of a balance between beauty \& utility: compromising neither, calling attention to neither, yet achieving both.\thinspace\nobreak\leaders\hrule\hfill\null\par} %%% The following pangrams were collected by David Lemon of Adobe Systems, Inc. %%% This is just a small sample from the entire collection. \pantext={Brick quiz whangs jumpy veldt fox. Nymphs vex, beg quick fjord waltz. Quick wafting zephyrs vex bold Jim. West quickly gave Bert handsome prizes for six juicy plums. Freight to me sixty dozen quart jars and twelve black pans. My help squeezed back in again and joined the weavers after six. Turgid saxophones blew over Mick's jazzy quiff. Five wine experts jokingly quizzed sample chablis. My grandfather picks up quartz and valuable onyx jewels. Mix Zapf with Veljovic and get quirky Beziers. All questions asked by five watch experts amazed the judge. Back in June we delivered oxygen equipment of the same size. We have just quoted on nine dozen boxes of grey lamp wicks. A large fawn jumped quickly over white zinc boxes. The exodus of jazzy pigeons is craved by squeamish walkers.\thinspace\nobreak\leaders\hrule\hfill\hbox{}\par} \loremtext={Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh eusi\-mod tincidunt ut laor\-eet dolore magna ali\-quam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit la\-bortis nisl ut ali\-quip exea commodo consequat. Quousque tandem abutere, Catilina, patientia nostra? Quamdiu nos etiam furor iste tuus eludet? quem ad finem sese effrenata jactibit audicia? nihilne te nocturnum pr\ae sidium palatii, nihil urbis vigil\ae . Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh eusi\-mod tincidunt ut laor\-eet dolore magna ali\-quam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit la\-bortis nisl ut ali\-quip exea commodo consequat. Quousque tandem abutere, Catilina, patientia nostra? Quamdiu nos etiam furor iste tuus eludet? quem ad finem sese effrenata jactibit audicia? nihilne te nocturnum pr\ae sidium palatii, nihil urbis vigil\ae .\thinspace\nobreak\leaders\hrule\hfill\null\par} \def\abc{abcdefghijklmnopqrstuvwxyz} \def\habc{\abc\abc abcdefghijklm} \def\dabc{AGQMstaefgpy1234?!\&} \def\ucabc{ABCDEFGHIJKLMNOPQRSTUVWXYZ} \def\buclcabc{AaBbCcDdEeFfGgHhIiJjKkLlMmNnOo} \def\euclcabc{PpQqRrSsTtUuVvWwXxYyZz?\&} \def\freqabc{\text zjqx% kkvv% bbbbppppyyyywwwwgggg% mmmmmmffffffccccccuuuuuu% lllllllldddddddd% hhhhhhhhhhhhrrrrrrrrrrrrssssssssssss% ooooooooooooooiiiiiiiiiiiiiinnnnnnnnnnnnnn% aaaaaaaaaaaaaaaatttttttttttttttttt% eeeeeeeeeeeeeeeeeeeeeeee}% 204 chars \def\ast{*} \def\per{.} %%% Convert from TeX's bulky 4-decimal point measurements to 1 \def\prettypt#1{\dist=#1 \multiply\dist10 \scratch=\number\dist \divide\scratch\scppt \intgp=\scratch \divide\intgp10 \sscratch=\intgp \multiply\sscratch10 \advance\scratch-\sscratch \fracp=\scratch \hbox{\the\intgp.\the\fracp}pt\ } \def\cvptin#1{\dist=#1 \multiply\dist by 10 \scratch=\number\dist \divide\scratch\scppt \multiply\scratch100 \fracp=\scratch \divide\scratch72270 \intgp=\scratch \multiply\scratch72270 \advance\fracp-\scratch \multiply\fracp10 \divide\fracp7227 \hbox{\the\intgp.\ifnum\fracp<10 0\the\fracp \else\the\fracp\fi in}} %%% Type factor = ([Type size] * [# of characters in a sample])/(linear length of sample) %%% Based on {\it Brown's Index}, Bruce Brown, Greenwood Publishing, Great Britain 1983 \def\typefact{% \dist=10pt \spconv=\number\dist \multiply\spconv by 12 \multiply\spconv by 204 \setbox1=\hbox{\text\freqabc}% \divisor=\number\wd1 \divide\divisor by 100 \divide\spconv by \divisor \scratch=\spconv \divide\scratch100 \divisor=\scratch \multiply \scratch100 \advance\spconv-\scratch \hbox{\number\divisor.\ifnum\spconv<10 0\the\spconv \else \the\spconv\fi}} \setbox0=\hbox{\tiny 0} \kernone=.5\wd0 \kerntwo=\wd0 \def\k{\kern-\kernone} \def\kk{\kern-\kerntwo} \def\endline{\hbox to 0pt{\vrule width1pt height\baselineskip% depth.25\baselineskip\hss}} \def\iline{\hbox to 0pt{\vrule width.25pt height\baselineskip\hss}} \def\hline{\hbox to 0pt{\vrule width.25pt height.75\baselineskip\hss}} \def\qline{\hbox to 0pt{\vrule width.25pt height.55\baselineskip\hss}} \def\eline{\hbox to 0pt{\vrule width.25pt height.35\baselineskip\hss}} \def\sline{\hbox to 0pt{\vrule width.25pt height.15\baselineskip\hss}} \def\itick{\hbox to 1in{\iline\hfill}} \def\htick{\hbox to .5in{\hline\hfill}} \def\qtick{\hbox to .25in{\qline\hfill}} \def\etick{\hbox to .125in{\eline\hfill}} \def\stick{\hbox to .0625in{\sline\hfill}} \def\dhtick{\hbox to .5in{\hline\hfill}} \def\dttick{\hbox to .1in{\qline\hfill}} \def\dftick{\hbox to .05in{\eline\hfill}} \def\pctick{\hbox to 1pc{\iline\hss}} \def\hpctick{\hbox to .5pc{\qline\hss}} \def\druler#1 {\hbox to #1{\endline\hfill\endline} \kern-\baselineskip \bigger=#1 \advance\bigger by .5in \hbox to #1{\hrulefill}\kern-\baselineskip \hbox to \bigger{\leaders\itick\hfill}\kern-\baselineskip \hbox to #1{\leaders\dhtick\hfill}\kern-\baselineskip \hbox to #1{\leaders\dttick\hfill}\kern-\baselineskip \hbox to #1{\leaders\dftick\hfill}} \def\pcruler#1 {\hbox to #1{\endline\hfill\endline} \kern-\baselineskip \hbox to #1{\hrulefill}\kern-\baselineskip \hbox to #1{\leaders\pctick\hfill}\kern-\baselineskip \hbox to #1{\leaders\hpctick\hfill}} %%% Calculates the largest display typesize to fit \hsize %%% First typeset it very small (.5pt) then calculate a %%% scale factor to get it to fit to \hsize \font\dsp=\the\dspfont\space at .1pt \setbox0=\hbox{\dsp \buclcabc}% \dspsize=\hsize \scratch=\dspsize \multiply\scratch10 \divisor=\wd0 \divide\scratch by \divisor \dspsize=\scratch pt \divide\dspsize by 100 %%% Calculates the increment such that smallest display size is 12pt \dspsizeincr=\dspsize \advance\dspsizeincr by -12pt \divide\dspsizeincr by 3 \dsplineno4 \kern-1\baselineskip {\name \fontname\par} \hbox to \hsize{\hrulefill}\kern-.5\baselineskip %%% Display Type \bgroup \loop\font\dsp=\the\dspfont\space at \dspsize \dsp \baselineskip1.1em \hbox to\hsize{\buclcabc\hfill\rlap{{\text\prettypt{\the\dspsize}}}}% \hbox{\euclcabc}\vskip.075in \ifnum\dsplineno>1 \global\advance\dsplineno by-1 \advance\dspsize by -\dspsizeincr \font\dsp=\the\dspfont\space at \dspsize\repeat \egroup \setbox0=\hbox{\text x} \xheight=\ht0 %%% Leading calculations \setbox0=\hbox{\text Ilpgy} \ascheight=\ht0 \leading=\ht0 \adjust=\xheight \advance\adjust-.5\leading \advance\leading\dp0 \leading=1.175\leading \ifdim\dp0<.05\ht0 \advance\adjust.5\xheight\fi \advance\leading by \adjust \baselineskip\leading %%% Calculates ratio of x-height to ascender height \dimen0=\the\fontdimen5\text \xascrnum=\dimen0% \divisor=\number\ascheight \multiply\xascrnum by 100\relax \divide\xascrnum by\ascheight %%% Calculates width of 2.5 lc alphabets in picas and points \setbox0=\hbox{\text\habc} \habcwd=\wd0 \def\showhabcwd{% \scratchdim=\habcwd \scratchdim=\scratchdim \scratch=\number\scratchdim \divide\scratch\scppt \sscratch=\scratch \divide\scratch12 \picawd=\scratch \multiply\scratch by 12 \advance\sscratch-\scratch \pointwd=\sscratch \hbox{\the\picawd pc\the\pointwd}} %%% Calculates the largest typesize to fit 70 characters to 4.5in. %%% First typeset it very small (.5pt) then calculate a %%% scale factor to get it to fit to 4.5in. \font\calcfont=\the\dspfont\space at .5pt \setbox0=\hbox{\calcfont \habc}% \dspsize=4.5in \scratch=\dspsize \multiply\scratch10 \divisor=\wd0 \divide\scratch by \divisor \ctextsz=\scratch pt \divide\ctextsz by 20 \vskip.2in \text \vbox{\baselineskip1.2\baselineskip% \druler{6.51in} % {\hsize6in \settabs 6\columns\tiny \+Decimal Inches&\k 1&\k 2&\k 3&\k 4&\k 5&\k 6\cr} % \text 1234567890\$\%\&?(``\thinspace'')\par \habc\par \uppercase\expandafter{\abc}\vskip.5em % \pcruler{38pc} % {\hsize35pc \settabs 7\columns\tiny \+Picas&\k 5&\kk 10&\kk 15&\kk 20&\kk 25&\kk 30&\kk 35\cr}\vfill} \vskip.25in %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%% %%% Change the text sample here. %%% The choices are \ntext, \pantext and \loremtext %%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \vbox{% \hsize\habcwd \baselineskip\leading \the\pantext} \vfill \hbox to \hsize{\hrulefill} \smallskip \vbox{% \emergencystretch1em\tiny \hsize.8\habcwd \baselineskip.9\leading % \halign to \hsize{#\hfil\tabskip0pt plus 1fill&\hfil#\tabskip0pt\cr Type stats:\cr \noalign{\smallskip\hrule\smallskip} Text sample (10pt) leading&\prettypt{\the\leading}\unskip\cr \noalign{\smallskip\hrule\smallskip} Width of 2.5 lowercase 10pt alphabets&\showhabcwd\ or \cvptin{\the\habcwd}\unskip\cr \noalign{\smallskip\hrule\smallskip} Type size required for a 4.5in measure&\prettypt{\the\ctextsz}\unskip\cr \noalign{\smallskip\hrule\smallskip} Ratio of x-height to ascender height&\hbox{0.\the\xascrnum}\cr \noalign{\smallskip\hrule\smallskip} Typefactor&\typefact\cr \noalign{\smallskip\hrule}} \smallskip \comment}% \eject\end \ No newline at end of file
diff --git a/macros/plain/contrib/TypeSpec/TypeSp03.tex b/macros/plain/contrib/TypeSpec/TypeSp03.tex
new file mode 100644
index 0000000000..5634c175de
--- /dev/null
+++ b/macros/plain/contrib/TypeSpec/TypeSp03.tex
@@ -0,0 +1 @@
+%%% Stephen Moye %%% Stephen_Moye@brown.edu %%% Brown University %%% Graphic Services % Much of the math in this example is simple modular arithmetic, % and gets around the fact that \TeX can only do integer math. % % This sort of typesetting project is probably better suited to % TrueType or PostScript typefaces. \newtoks\dspfont %%% Fill in the \TeX name of the font here: \dspfont={cmr12} %%% Fill in the name of the typeface as you want it at the top of the page \def\fontname{Computer Modern 12} %%% The following is for notes in the comments at the bottom %%% of the page following the type stats. %%% Just leave it empty if you have nothing to say... \def\comment{Drawn by Donald Knuth.} %\hsize7.5in \hoffset-.5in \parindent0pt \nopagenumbers \voffset-.5in \advance\vsize by 1in \font\text=\the\dspfont\space at 10pt \font\tiny=\the\dspfont\space at 8pt \font\name=\the\dspfont\space at 24pt \newtoks\ntext \newtoks\pantext \newtoks\loremtext % \newbox\testbox % \newdimen\bigger \newdimen\dspsize \newdimen\dspsizeincr \newdimen\habcwd \newdimen\ctextsz \newdimen\leading \newdimen\xheight \newdimen\ascheight \newdimen\kernone \newdimen\kerntwo \newdimen\adjust \adjust0pt \newdimen\dist \newdimen\scratchdim % \newcount\dsplineno \newcount\picawd \newcount\pointwd \newcount\spconv \newcount\measure \newcount\divisor \newcount\scratch \newcount\sscratch \newcount\xascrnum \newcount\intgp \newcount\fracp \newcount\scppt \scppt=65536 \ntext={Typography may be defined as both an art and a craft. It is an art in that what it does, it does for its own sake, according to its own internal sense of what is beautiful and right. It is a craft in that what it does, it does for a purpose outside itself: it provides a means of storing, shaping and conveying information. Typography is, therefore, a selfless art -- a contradiction in terms, perhaps -- and is at its best when it is least perceived to be doing anything, indeed when there is no active awareness of perceiving it, directly, at all, but rather perceiving, through it, the knowledge which animates the type on the page. Quality in typography results from an effortless perfection of conception and execution in the creation of a balance between beauty \& utility: compromising neither, calling attention to neither, yet achieving both.\thinspace\nobreak\leaders\hrule\hfill\null\par} %%% The following pangrams were collected by David Lemon of Adobe Systems, Inc. %%% This is just a small sample from the entire collection. \pantext={Brick quiz whangs jumpy veldt fox. Nymphs vex, beg quick fjord waltz. Quick wafting zephyrs vex bold Jim. West quickly gave Bert handsome prizes for six juicy plums. Freight to me sixty dozen quart jars and twelve black pans. My help squeezed back in again and joined the weavers after six. Turgid saxophones blew over Mick's jazzy quiff. Five wine experts jokingly quizzed sample chablis. My grandfather picks up quartz and valuable onyx jewels. Mix Zapf with Veljovic and get quirky Beziers. All questions asked by five watch experts amazed the judge. Back in June we delivered oxygen equipment of the same size. We have just quoted on nine dozen boxes of grey lamp wicks. A large fawn jumped quickly over white zinc boxes. The exodus of jazzy pigeons is craved by squeamish walkers.\thinspace\nobreak\leaders\hrule\hfill\hbox{}\par} \loremtext={Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh eusi\-mod tincidunt ut laor\-eet dolore magna ali\-quam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit la\-bortis nisl ut ali\-quip exea commodo consequat. Quousque tandem abutere, Catilina, patientia nostra? Quamdiu nos etiam furor iste tuus eludet? quem ad finem sese effrenata jactibit audicia? nihilne te nocturnum pr\ae sidium palatii, nihil urbis vigil\ae . Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh eusi\-mod tincidunt ut laor\-eet dolore magna ali\-quam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit la\-bortis nisl ut ali\-quip exea commodo consequat. Quousque tandem abutere, Catilina, patientia nostra? Quamdiu nos etiam furor iste tuus eludet? quem ad finem sese effrenata jactibit audicia? nihilne te nocturnum pr\ae sidium palatii, nihil urbis vigil\ae .\thinspace\nobreak\leaders\hrule\hfill\null\par} \def\abc{abcdefghijklmnopqrstuvwxyz} \def\habc{\abc\abc abcdefghijklm} \def\dabc{AGQMstaefgpy1234?!\&} \def\ucabc{ABCDEFGHIJKLMNOPQRSTUVWXYZ\&} \def\freqabc{\text zjqx% kkvv% bbbbppppyyyywwwwgggg% mmmmmmffffffccccccuuuuuu% lllllllldddddddd% hhhhhhhhhhhhrrrrrrrrrrrrssssssssssss% ooooooooooooooiiiiiiiiiiiiiinnnnnnnnnnnnnn% aaaaaaaaaaaaaaaatttttttttttttttttt% eeeeeeeeeeeeeeeeeeeeeeee}% 204 chars \def\ast{*} \def\per{.} %%% Convert from TeX's bulky 4-decimal point measurements to 1 \def\prettypt#1{\dist=#1 \multiply\dist10 \scratch=\number\dist \divide\scratch\scppt \intgp=\scratch \divide\intgp10 \sscratch=\intgp \multiply\sscratch10 \advance\scratch-\sscratch \fracp=\scratch \hbox{\the\intgp.\the\fracp}pt\ } \def\cvptin#1{\dist=#1 \multiply\dist by 10 \scratch=\number\dist \divide\scratch\scppt \multiply\scratch100 \fracp=\scratch \divide\scratch72270 \intgp=\scratch \multiply\scratch72270 \advance\fracp-\scratch \multiply\fracp10 \divide\fracp7227 \hbox{\the\intgp.\ifnum\fracp<10 0\the\fracp \else\the\fracp\fi in}} %%% Type factor = ([Type size] * [# of characters in a sample])/(linear length of sample) %%% Based on {\it Brown's Index}, Bruce Brown, Greenwood Publishing, Great Britain 1983 \def\typefact{% \dist=10pt \spconv=\number\dist \multiply\spconv by 12 \multiply\spconv by 204 \setbox1=\hbox{\text\freqabc}% \divisor=\number\wd1 \divide\divisor by 100 \divide\spconv by \divisor \scratch=\spconv \divide\scratch100 \divisor=\scratch \multiply \scratch100 \advance\spconv-\scratch \hbox{\number\divisor.\ifnum\spconv<10 0\the\spconv \else \the\spconv\fi}} \setbox0=\hbox{\tiny 0} \kernone=.5\wd0 \kerntwo=\wd0 \def\k{\kern-\kernone} \def\kk{\kern-\kerntwo} \def\endline{\hbox to 0pt{\vrule width1pt height\baselineskip% depth.25\baselineskip\hss}} \def\iline{\hbox to 0pt{\vrule width.25pt height\baselineskip\hss}} \def\hline{\hbox to 0pt{\vrule width.25pt height.75\baselineskip\hss}} \def\qline{\hbox to 0pt{\vrule width.25pt height.55\baselineskip\hss}} \def\eline{\hbox to 0pt{\vrule width.25pt height.35\baselineskip\hss}} \def\sline{\hbox to 0pt{\vrule width.25pt height.15\baselineskip\hss}} \def\itick{\hbox to 1in{\iline\hfill}} \def\htick{\hbox to .5in{\hline\hfill}} \def\qtick{\hbox to .25in{\qline\hfill}} \def\etick{\hbox to .125in{\eline\hfill}} \def\stick{\hbox to .0625in{\sline\hfill}} \def\dhtick{\hbox to .5in{\hline\hfill}} \def\dttick{\hbox to .1in{\qline\hfill}} \def\dftick{\hbox to .05in{\eline\hfill}} \def\pctick{\hbox to 1pc{\iline\hss}} \def\hpctick{\hbox to .5pc{\qline\hss}} \def\druler#1 {\hbox to #1{\endline\hfill\endline} \kern-\baselineskip \bigger=#1 \advance\bigger by .5in \hbox to #1{\hrulefill}\kern-\baselineskip \hbox to \bigger{\leaders\itick\hfill}\kern-\baselineskip \hbox to #1{\leaders\dhtick\hfill}\kern-\baselineskip \hbox to #1{\leaders\dttick\hfill}\kern-\baselineskip \hbox to #1{\leaders\dftick\hfill}} \def\pcruler#1 {\hbox to #1{\endline\hfill\endline} \kern-\baselineskip \hbox to #1{\hrulefill}\kern-\baselineskip \hbox to #1{\leaders\pctick\hfill}\kern-\baselineskip \hbox to #1{\leaders\hpctick\hfill}} %%% Calculates the largest display typesize to fit \hsize %%% First typeset it very small (.5pt) then calculate a %%% scale factor to get it to fit to \hsize \font\dsp=\the\dspfont\space at .1pt \setbox0=\hbox{\dsp \ucabc}% \dspsize=\hsize \scratch=\dspsize \multiply\scratch10 \divisor=\wd0 \divide\scratch by \divisor \dspsize=\scratch pt \divide\dspsize by 100 %%% Calculates the increment such that smallest display size is 12pt \dspsizeincr=\dspsize \advance\dspsizeincr by -12pt \divide\dspsizeincr by 3 \dsplineno4 \kern-1\baselineskip {\name \fontname\par} \hbox to \hsize{\hrulefill}\kern-.25\baselineskip %%% Display Type \bgroup \loop\font\dsp=\the\dspfont\space at \dspsize \dsp \baselineskip1em \hbox to\hsize{\ucabc\hfill\rlap{\text\prettypt{\the\dspsize}}} \hbox{\abc}\vskip.075in \ifnum\dsplineno>1 \global\advance\dsplineno by-1 \advance\dspsize by -\dspsizeincr \font\dsp=\the\dspfont\space at \dspsize\repeat \egroup \setbox0=\hbox{\text x} \xheight=\ht0 %%% Leading calculations \setbox0=\hbox{\text Ilpgy} \ascheight=\ht0 \leading=\ht0 \adjust=\xheight \advance\adjust-.5\leading \advance\leading\dp0 \leading=1.175\leading \ifdim\dp0<.05\ht0 \advance\adjust.5\xheight\fi \advance\leading by \adjust \baselineskip\leading %%% Calculates ratio of x-height to ascender height \dimen0=\the\fontdimen5\text \xascrnum=\dimen0% \divisor=\number\ascheight \multiply\xascrnum by 100\relax \divide\xascrnum by\ascheight %%% Calculates width of 2.5 lc alphabets in picas and points \setbox0=\hbox{\text\habc} \habcwd=\wd0 \def\showhabcwd{% \scratchdim=\habcwd \scratchdim=\scratchdim \scratch=\number\scratchdim \divide\scratch\scppt \sscratch=\scratch \divide\scratch12 \picawd=\scratch \multiply\scratch by 12 \advance\sscratch-\scratch \pointwd=\sscratch \hbox{\the\picawd pc\the\pointwd}} %%% Calculates the largest typesize to fit 70 characters to 4.5in. %%% First typeset it very small (.5pt) then calculate a %%% scale factor to get it to fit to 4.5in. \font\calcfont=\the\dspfont\space at .5pt \setbox0=\hbox{\calcfont \habc}% \dspsize=4.5in \scratch=\dspsize \multiply\scratch10 \divisor=\wd0 \divide\scratch by \divisor \ctextsz=\scratch pt \divide\ctextsz by 20 \vskip.2in \text \vbox{\baselineskip1.2\baselineskip% \druler{6.51in} % {\hsize6in \settabs 6\columns\tiny \+Decimal Inches&\k 1&\k 2&\k 3&\k 4&\k 5&\k 6\cr} % \text 1234567890\$\%\&?(``\thinspace'')\par \habc\par \uppercase\expandafter{\abc}\vskip.5em % \pcruler{38pc} % {\hsize35pc \settabs 7\columns\tiny \+Picas&\k 5&\kk 10&\kk 15&\kk 20&\kk 25&\kk 30&\kk 35\cr}\vfill} \vskip.25in %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%% %%% Change the text sample here. %%% The choices are \ntext, \pantext and \loremtext %%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \vbox{% \hsize\habcwd \baselineskip\leading \the\loremtext} \vfill \hbox to \hsize{\hrulefill} \smallskip \vbox{% \emergencystretch1em\tiny \hsize.8\habcwd \baselineskip.9\leading % \halign to \hsize{#\hfil\tabskip0pt plus 1fill&\hfil#\tabskip0pt\cr Type stats:\cr \noalign{\smallskip\hrule\smallskip} Text sample (10pt) leading&\prettypt{\the\leading}\unskip\cr \noalign{\smallskip\hrule\smallskip} Width of 2.5 lowercase 10pt alphabets&\showhabcwd\ or \cvptin{\the\habcwd}\unskip\cr \noalign{\smallskip\hrule\smallskip} Type size required for a 4.5in measure&\prettypt{\the\ctextsz}\unskip\cr \noalign{\smallskip\hrule\smallskip} Ratio of x-height to ascender height&\hbox{0.\the\xascrnum}\cr \noalign{\smallskip\hrule\smallskip} Typefactor&\typefact\cr \noalign{\smallskip\hrule}} \smallskip \comment}% \eject\end \ No newline at end of file
diff --git a/macros/plain/contrib/TypeSpec/TypeSp04.tex b/macros/plain/contrib/TypeSpec/TypeSp04.tex
new file mode 100644
index 0000000000..2f10f5bba8
--- /dev/null
+++ b/macros/plain/contrib/TypeSpec/TypeSp04.tex
@@ -0,0 +1 @@
+%%% Stephen Moye %%% Stephen_Moye@brown.edu %%% Brown University %%% Graphic Services %%%%% Registers \newtoks\dspfont \newdimen\dspsize \newdimen\letterboxwd \newcount\scratch \newcount\divisor %%%%% Layout options \parindent0pt \nopagenumbers \vsize10in \voffset-.5in \hsize7.5in \hoffset-.5in %%%%% Macros %%% This is the macro that does all the work. %%% #1 -> TeX's name for the desired font %%% #2 -> The name font name as you want it to print %%% #3 -> The name of the type's designer, or other salient %%% piece of information that lends itself to display %%% #4 -> The size of the type inside the box %%% #5 -> The overall desired width of the box \def\makefontbox#1#2#3#4#5{% \dspfont={#1}% \def\fontname{#2}% \font\test=\the\dspfont\space at #4 \test \baselineskip1.25em \setbox0=\vbox{\halign to #5{% ##\tabskip0pt plus 1fill&\hfil##\hfil&\hfil##\hfil&\hfil##\hfil&\hfil##\hfil& \hfil##\hfil&\hfil##\hfil& \hfil##\hfil&\hfil##\hfil&\hfil##\hfil&\hfil##\hfil&\hfil##\hfil\tabskip0pt\cr \noalign{\red\hrule\black\medskip} %%% Substitute any characters you like to suit your purposes A&B&C&D&E\enskip&1&2&\enskip a&b&c&d&e\cr F&G&H&I&J\enskip&3&4&\enskip f&g&h&i&j\cr K&L&M&N&O\enskip&5&6&\enskip k&l&m&n&o\cr P&Q&R&S&T\enskip&7&8&\enskip p&q&r&s&t\cr U&V&W&X&Y\enskip&9&0&\enskip u&v&w&x&y\cr (&&Z&&)&\&&\char166&[&&z&&]\cr \noalign{\medskip\red\hrule\black}}}% \letterboxwd=\wd0 \vtop{\hsize\letterboxwd \if\empty#2 \else\makefit{#2}\fi% \smallskip \box0% \smallskip \if\empty#3 \else \makefit{#3}\fi}} %%% Fit text to a given size by first setting the text %%% very tiny and then determining a scaling factor. \def\makefit#1{\font\dsp=\the\dspfont\space at .1pt% \setbox1=\hbox{\dsp #1}% \dspsize=\letterboxwd \scratch=\dspsize \multiply\scratch10 \divisor=\wd1 \divide\scratch by \divisor \dspsize=\scratch pt \divide\dspsize by 100 \hbox{\font\dsp=\the\dspfont\space at\dspsize \dsp #1}} %%% For Textures users, and anyone else who can use color %%% via the \special mechanism \def\red{% \special{color push} \special{color define red rgb 1.0 0 0} \special{color red}} \def\blue{% \special{color push} \special{color define blue rgb 0 0 1.0} \special{color blue}} \def\green{% \special{color push} \special{color define green rgb 0 1.0 0} \special{color green}} \def\black{\special{color pop}} %%%%% Example -- this is just a suggestion to get you started. %%% Make the `grid'. This is just for fun. For even more fun, %%% color the rules -- red, blue and green are very printerly. %%% The easy way, as here, is to make your pattern in a \vbox %%% set to \vsize, then all you have to do is \kern-\vsize %%% to start setting type over the grid. \vbox to \vsize{\blue \hrule \vss \noindent\llap{\vrule height\vsize\hskip0pt}% \hskip2in\kern2pt\vrule height\vsize\hskip1pt% \hskip3.5in\kern-6pt\vrule height\vsize\hskip1pt% \hfill\rlap{\hskip0pt\vrule height\vsize} \vss \hrule\black} \kern-\vsize %%% Now do the text bits \line{\hskip1pt\makefontbox{ACaslon}{Adobe Caslon Roman}{ }{11pt}{2in}\hfill \makefontbox{ACaslonI}{Adobe Caslon Italic}{ }{11pt}{2in}\hskip1pt} \vfill \red\hrule\black \bigskip %%% Notice that the narrow measure (3.5in) used for the quotation %%% required some \emergencystretch. \begingroup \font\rm=ACaslon at 10pt \rm \baselineskip1.35em \font\it=ACaslonI at 10pt \moveright 2.1in\vbox{\hsize3.3in \emergencystretch.5em% A lot of mathematics and technical knowledge are involved in our work today. I would not call us artists any more. I think `alphabet designer' is more accurate, and our comrade is no longer the punchcutter but the electronics engineer. If the technician learns that he doesn't have to work with a crazy artist, and the designer learns a little about electronics, they will make an ideal team. It is still teamwork as it was in the good old days of metal type. \bigskip \it Hermann Zapf\par} \bigskip \red\hrule\black \endgroup \vfill\vfill \line{\hskip1pt\makefontbox{ACaslonB}{Adobe Caslon Bold}{ }{11pt}{2in}\hfill \makefontbox{ACaslonBI}{Adobe Caslon BoldItalic}{Carol Twombly}{11pt}{2in}\hskip1pt} \line{\hss} \eject \ No newline at end of file
diff --git a/macros/plain/contrib/TypeSpec/TypeSp05.tex b/macros/plain/contrib/TypeSpec/TypeSp05.tex
new file mode 100644
index 0000000000..58b99fe112
--- /dev/null
+++ b/macros/plain/contrib/TypeSpec/TypeSp05.tex
@@ -0,0 +1 @@
+%%% Stephen Moye %%% Stephen_Moye@brown.edu %%% Brown University %%% Graphic Services \newtoks\texfont \newtoks\symbolfont \newdimen\boxwd \newdimen\boxht \newdimen\thicklineht \newdimen\linewd \newdimen\nummove \newdimen\charmove \newdimen\kernchar \newdimen\dividerht \newcount\charcount \charcount=0 \newcount\numcount \numcount=0 \newcount\loopcount \def\setfont#1{\texfont={#1} \font\text=\the\texfont\space at 10pt \font\note=\the\texfont\space at 8pt \font\name=\the\texfont\space at 18pt \font\numfont=Helvetica at 8pt} \def\setsymbolfont#1#2{\texfont={#2} \symbolfont={#1} \font\text=\the\symbolfont\space at 10pt \font\note=\the\texfont\space at 8pt \font\name=\the\texfont\space at 18pt \font\numfont=Helvetica at 8pt} \def\startnum#1{\charcount=#1 \numcount=#1} \def\nextchar{\text\char\charcount \global\advance\charcount1} \def\nextnum{\numfont\number\numcount \global\advance\numcount1} \def\charbox{% \vbox to\boxht{% \hsize\boxwd\kern\charmove\centerline{\kern\kernchar\strut\nextchar}\vss}} \def\numline{\centerline{\white\nextnum\black}} \def\numlinenc{\centerline{\nextnum}} \def\boxit{\vbox{\hsize\boxwd\hrule height\linewd\hbox{\vrule width\linewd% \charbox\vrule width\linewd}% \hrule height\dividerht}% \kern-\linewd} %%% For the numbers, uses color or gray \def\nboxit{\dimen0\boxwd \advance\dimen0\linewd \dimen1\thicklineht \advance\dimen1\linewd \vbox{\hsize\boxwd \gray\hrule width\dimen0 height\dimen1\black \kern-\thicklineht \kern-2\linewd \hrule height\linewd \hbox{\vrule width\linewd% \vbox to \thicklineht{\hsize\boxwd \kern\nummove\numline\vss}% \vrule width\linewd}\hrule height\linewd}\kern-\linewd} %%% For the numbers, no color \def\nboxitnc{% \dimen0\thicklineht \advance\dimen0 2\linewd \vbox to\dimen0{\hsize\boxwd \hrule height\linewd \hbox{\vrule height\thicklineht width\linewd% \vbox to\thicklineht{\kern\nummove\numlinenc}% \vrule width\linewd}\vss\hrule height\linewd}\kern-\linewd} \def\white{\special{color push}% \special{color define white cmyk 0 0 0 0}% \special{color white}} \def\gray{\special{color push}% \special{color gray .4}} \def\black{\special{color pop}} \def\lineofchars#1{\loopcount=#1% \noindent\loop \boxit \ifnum\loopcount>1\advance\loopcount-1 \repeat\par \loopcount=#1% \nointerlineskip \kern-\linewd \nointerlineskip \noindent\loop\nboxit \ifnum\loopcount>1\advance\loopcount-1 \repeat\par \kern-\linewd} %%% For no color or gray, use this \def\lineofcharsnc#1{\loopcount=#1% \noindent\loop \boxit \ifnum\loopcount>1\advance\loopcount-1 \repeat\par \loopcount=#1% \nointerlineskip \kern-\linewd \noindent\loop\nboxitnc \ifnum\loopcount>1\advance\loopcount-1 \repeat\par \kern-\linewd} %%% Setup \boxwd=.25in \boxht=.3in \thicklineht=13pt \linewd=.25pt \dividerht=.75pt \parindent=0pt \nummove3pt \charmove5pt \kernchar-1pt \startnum{0} \setfont{ACaslon} %%% Draw the boxes \leftskip1in \name Adobe Caslon\par \smallskip \lineofchars{16} \smallskip \lineofchars{16} \smallskip \lineofchars{16} \smallskip \lineofchars{16} \smallskip \lineofchars{16} \smallskip \lineofchars{16} \smallskip \lineofchars{16} \smallskip \lineofchars{16} \note Carol Twombly \vfill\eject \startnum{0} \setfont{cmr12} %%% Draw the boxes \leftskip1in \name Computer Modern\par \smallskip \lineofcharsnc{16} \smallskip \lineofcharsnc{16} \smallskip \lineofcharsnc{16} \smallskip \lineofcharsnc{16} \smallskip \lineofcharsnc{16} \smallskip \lineofcharsnc{16} \smallskip \lineofcharsnc{16} \smallskip \lineofcharsnc{16} \note Donald E. Knuth \vfill\eject \startnum{32} \setsymbolfont{Dingbats}{Helvetica} %%% Draw the boxes \leftskip1in \name Zapf Dingbats\par \smallskip \lineofcharsnc{16} \smallskip \lineofcharsnc{16} \smallskip \lineofcharsnc{16} \smallskip \lineofcharsnc{16} \smallskip \lineofcharsnc{16} \smallskip \lineofcharsnc{16} \note Hermann Zapf \bye \ No newline at end of file
diff --git a/macros/plain/contrib/TypeSpec/TypeSp06.tex b/macros/plain/contrib/TypeSpec/TypeSp06.tex
new file mode 100644
index 0000000000..a50835fd86
--- /dev/null
+++ b/macros/plain/contrib/TypeSpec/TypeSp06.tex
@@ -0,0 +1 @@
+%%% Stephen Moye %%% Stephen_Moye@brown.edu %%% Brown University %%% Graphic Services \newdimen\basesize \newdimen\dist \newdimen\baseblsk \newdimen\xheight \newdimen\ascheight \newdimen\leading \newdimen\adjust \newcount\scratch \newcount\scppt \scppt=65536 \newcount\intgp \newcount\sscratch \newcount\fracp \hsize7.5in \hoffset-.5in \vsize10in \voffset-.5in \nopagenumbers \parindent0pt \def\setuptype#1#2#3#4{\font\bigtext=#3 at 18pt \basesize=#2 \font\tinynote=#4 at 8pt \font\bigdisp=#1 at \basesize \font\meddisp=#1 at .75\basesize \font\smalldisp=#1 at .5\basesize \font\tinydisp=#1 at .41666\basesize \setbox0=\vbox{\bigdisp ILyg} \baseblsk=\ht0 \advance\baseblsk\dp0 \baseblsk=1.2\baseblsk} %%% Leading calculations \def\setleading{\setbox0=\hbox{x} \xheight=\ht0 \setbox0=\hbox{Ilpgy} \ascheight=\ht0 \leading=\ht0 \adjust=\xheight \advance\adjust-.5\leading \advance\leading\dp0 \leading=1.175\leading \ifdim\dp0<.05\ht0 \advance\adjust.5\xheight\fi \advance\leading by \adjust \baselineskip\leading} \def\prettypt#1{\dist=#1 \multiply\dist10 \scratch=\number\dist \divide\scratch\scppt \intgp=\scratch \divide\intgp10 \sscratch=\intgp \multiply\sscratch10 \advance\scratch-\sscratch \fracp=\scratch \hbox{\the\intgp.\the\fracp}pt\ } %%% \setuptype{uaur}{24pt}{Helvetica}{HelveticaI} \leftline{\bigtext Audubon Script} \smallskip \hrule \smallskip \rightline{\tinynote Type used in James Audubon's ``Birds of America'', translated to PostScript by Richard Beatty} \bigskip \line{% \vtop to 9in{\bigdisp \baselineskip=.75\baseblsk plus 1fil \halign{&#\hfill\cr% Abound\cr Bridges\cr Canoe\cr Dismay\cr English\cr French\cr Genoa\cr Happy\cr Igloo\cr Jury\cr Kimono\cr Lyric\cr Musical\cr Narcissus\cr Opera\cr Precise\cr Quartz\cr Royal\cr Sable\cr Transience\cr Umbrage\cr Velvet\cr Waxen\cr Xanadu\cr Yucca\cr Zabaglione\cr}}\hfill \vtop to 9in{\bigdisp \baselineskip\baseblsk plus 1fil \halign{ &\hfil\thinspace#&\thinspace#\hfil& \enskip#\enskip& \hfil\thinspace#&\thinspace#\hfil\cr A&a&&B&b\cr C&c&&D&d\cr E&e&&F&f\cr G&g&&H&h\cr I&i&&J&j\cr K&k&&L&l\cr M&m&&N&n\cr O&o&&P&p\cr Q&q&&R&r\cr S&s&&T&t\cr U&u&&V&v\cr W&w&&X&x\cr Y&y&&Z&z\cr \span0&\span1\cr \span2&\span3\cr \span4&\span5&\cr \span6&\span7&\cr \span8&\&&9&\cr}}\hfill \vtop{\hsize3in \emergencystretch2em \bigdisp \setleading Brick quiz whangs jumpy veldt fox. Nymphs vex, beg quick fjord waltz. Quick wafting zephyrs vex bold Jim. \rightline{\tinynote \prettypt{\basesize}/\prettypt{\the\baselineskip}} \smallskip \hrule \bigskip\bigskip \meddisp \setleading West quickly gave Bert handsome prizes for six juicy plums. Freight to me sixty dozen quart jars and twelve black pans. My help squeezed back in again and joined the weavers after six. Turgid saxophones blew over Mick's jazzy quiff. \rightline{\tinynote \prettypt{.75\basesize}/\prettypt{\the\baselineskip}} \smallskip \hrule \bigskip\bigskip \smalldisp \setleading Five wine experts jokingly quizzed sample chablis. My grandfather picks up quartz and valuable onyx jewels. Mix Zapf with Veljovic and get quirky Beziers. All questions asked by five watch experts amazed the judge. Back in June we delivered oxygen equipment of the same size. We have just quoted on nine dozen boxes of grey lamp wicks. A large fawn jumped quickly over white zinc boxes. The exodus of jazzy pigeons is craved by squeamish walkers. \rightline{\tinynote \prettypt{.5\basesize}/\prettypt{\the\baselineskip}} \smallskip \hrule \bigskip\bigskip \tinydisp \setleading Murky haze enveloped a city as jarring quakes broke fourty-six windows. The brazen jackal querulously attacked a ferral vixen, maiming her paw. Karate experts bring down victims with just a few amazingly quick chops. The fabled quetzal roosted on a mulberry twig, vexing the peevish jockey. King Alexander was just partly overcome after quizzing Diogenes in his tub. The exiled queen justly moved, celebrated with a dazzling fireworks display. \rightline{\tinynote \prettypt{.41666666\basesize}/\prettypt{\the\baselineskip}} \smallskip \hrule}} \bye \ No newline at end of file
diff --git a/macros/plain/contrib/TypeSpec/TypeSp07.tex b/macros/plain/contrib/TypeSpec/TypeSp07.tex
new file mode 100644
index 0000000000..959f8b1714
--- /dev/null
+++ b/macros/plain/contrib/TypeSpec/TypeSp07.tex
@@ -0,0 +1 @@
+%%% Stephen Moye %%% Stephen_Moye@brown.edu %%% Brown University %%% Graphic Services \newdimen\dspsize \newdimen\leading \newdimen\ascheight \newdimen\xheight \newdimen\adjust \newdimen\sampletextwd \newdimen\abcdwd \newdimen\twocolwd \newcount\scratch \newcount\divisor \newtoks\texttoks %%% %%% %%% Set it very small, then find a %%% scaling factor to get it to fit % #1 - font; #2 - width to fit; #3 - the text \def\fitit#1#2#3{\font\dsp=#1 at .1pt \setbox0=\hbox{\dsp #3}% \dspsize=#2 \scratch=\dspsize \multiply\scratch10 \divisor=\wd0 \divide\scratch by \divisor \dspsize=\scratch pt \divide\dspsize by 100 \message{\the\dspsize}% \font\dsp=#1 at \dspsize \hbox{\dsp#3}} %%% Leading derived from the characteristics of the type \def\setleading{% \setbox0=\hbox{Ilpgy} \setbox1=\hbox{x} \xheight=\ht1 \ascheight=\ht0 \leading=\ht0 \adjust=\xheight \advance\adjust-.5\leading \advance\leading\dp0 \leading=1.175\leading \ifdim\dp0<.05\ht0 \advance\adjust.5\xheight\fi \advance\leading by \adjust \baselineskip\leading \message{the leading=\the\leading}} \def\setuptype#1{% \font\Diamond=#1 at 4pt \font\Pearl=#1 at 4.5pt \font\Ruby=#1 at 5pt \font\Nonpareil=#1 at 6pt \font\Emerald=#1 at 6.5pt \font\Minion=#1 at 7pt \font\Brevier=#1 at 7.5pt \font\Bourgeois=#1 at 8pt \font\LongPrimer=#1 at 9pt \font\SmallPica=#1 at 10pt \font\Pica=#1 at 12pt \font\English=#1 at 14pt \font\GreatPrimer=#1 at 16pt \font\Paragon=#1 at 18pt \font\Twolinesmallpica=#1 at 21pt \font\Twolinepica=#1 at 24pt} \def\isetuptype#1{% \font\iDiamond=#1 at 4pt \font\iPearl=#1 at 4.5pt \font\iRuby=#1 at 5pt \font\iNonpareil=#1 at 6pt \font\iEmerald=#1 at 6.5pt \font\iMinion=#1 at 7pt \font\iBrevier=#1 at 7.5pt \font\iBourgeois=#1 at 8pt \font\iLongPrimer=#1 at 9pt \font\iSmallPica=#1 at 10pt \font\iPica=#1 at 12pt \font\iEnglish=#1 at 14pt \font\iGreatPrimer=#1 at 16pt \font\iParagon=#1 at 18pt \font\iTwolinesmallpica=#1 at 21pt \font\iTwolinepica=#1 at 24pt} \def\bsetuptype#1{% \font\bDiamond=#1 at 4pt \font\bPearl=#1 at 4.5pt \font\bRuby=#1 at 5pt \font\bNonpareil=#1 at 6pt \font\bEmerald=#1 at 6.5pt \font\bMinion=#1 at 7pt \font\bBrevier=#1 at 7.5pt \font\bBourgeois=#1 at 8pt \font\bLongPrimer=#1 at 9pt \font\bSmallPica=#1 at 10pt \font\bPica=#1 at 12pt \font\bEnglish=#1 at 14pt \font\bGreatPrimer=#1 at 16pt \font\bParagon=#1 at 18pt \font\bTwolinesmallpica=#1 at 21pt \font\bTwolinepica=#1 at 24pt} \def\bisetuptype#1{% \font\biDiamond=#1 at 4pt \font\biPearl=#1 at 4.5pt \font\biRuby=#1 at 5pt \font\biNonpareil=#1 at 6pt \font\biEmerald=#1 at 6.5pt \font\biMinion=#1 at 7pt \font\biBrevier=#1 at 7.5pt \font\biBourgeois=#1 at 8pt \font\biLongPrimer=#1 at 9pt \font\biSmallPica=#1 at 10pt \font\biPica=#1 at 12pt \font\biEnglish=#1 at 14pt \font\biGreatPrimer=#1 at 16pt \font\biParagon=#1 at 18pt \font\biTwolinesmallpica=#1 at 21pt \font\biTwolinepica=#1 at 24pt} \def\bigtosmall#1{% \begingroup\obeylines\offinterlineskip \fitit{#1}{\abcdwd}{ABCD} \vfill \fitit{#1}{\abcdwd}{ABCDE} \vfill \fitit{#1}{\abcdwd}{ABCDEFG} \vfill \fitit{#1}{\abcdwd}{ABCDEFGHI} \vfill \fitit{#1}{\abcdwd}{ABCDEFGHIJK} \vfill \fitit{#1}{\abcdwd}{ABCDEFGHIJKLMN} \vfill \fitit{#1}{\abcdwd}{ABCDEFGHIJKLMNOPQ} \vfill \fitit{#1}{\abcdwd}{ABCDEFGHIJKLMNOPQRST} \vfill \fitit{#1}{\abcdwd}{ABCDEFGHIJKLMNOPQRSTUVW} \vfill \fitit{#1}{\abcdwd}{ABCDEFGHIJKLMNOPQRSTUVWXYZ} \endgroup} \def\smalltobig#1{% \begingroup\obeylines\offinterlineskip \fitit{#1}{\abcdwd}{ABCDEFGHIJKLMNOPQRSTUVWXYZ} \vfill \fitit{#1}{\abcdwd}{ABCDEFGHIJKLMNOPQRSTUVW} \vfill \fitit{#1}{\abcdwd}{ABCDEFGHIJKLMNOPQRST} \vfill \fitit{#1}{\abcdwd}{ABCDEFGHIJKLMNOPQ} \vfill \fitit{#1}{\abcdwd}{ABCDEFGHIJKLMN} \vfill \fitit{#1}{\abcdwd}{ABCDEFGHIJK} \vfill \fitit{#1}{\abcdwd}{ABCDEFGHI} \vfill \fitit{#1}{\abcdwd}{ABCDEFG} \vfill \fitit{#1}{\abcdwd}{ABCDE} \vfill \fitit{#1}{\abcdwd}{ABCD} \endgroup} \texttoks={Quousque tandem a\-bu\-te\-re, Ca\-ti\-li\-na, patientia nostra? Qua\-m\-diu nos etiam furor iste tuus eludet? quem ad finem sese effrenata jactibit audicia? nihilne te nocturnum pr\ae si\-di\-um palatii, nihil urbis vigil\ae. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh eusi\-mod tincidunt ut laor\-eet dolore magna ali\-quam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit la\-bortis nisl ut ali\-quip exea commodo consequat. Quousque tandem abutere, Catilina, patientia nostra? Quamdiu nos etiam furor iste tuus eludet? quem ad finem sese effrenata jactibit audicia? nihilne te nocturnum pr\ae sidium palatii, nihil urbis vigil\ae.} %%% 1-Roman TeX name, 2-Italic TeX name, 3-name of size, %%% 4-number of lines in sample \def\textsamps#1#2#3#4{% \begingroup#1\setleading %% Uniform leading \setbox0=\vbox{% \hbadness10000\emergencystretch1em\hsize\sampletextwd\the\texttoks}% \setbox1=\vsplit0 to #4\baselineskip \setbox2=\vbox{#2% \hbadness10000\emergencystretch1em\hsize\sampletextwd\the\texttoks}% \setbox3=\vsplit2 to #4\baselineskip \line{% \vbox{\hsize\sampletextwd\centerline{\strut#1[#3]}\unvbox1}% \hfill \vbox{\hsize\sampletextwd\centerline{\strut#2[#3]}\unvbox3}\hskip.05in}% \endgroup} %%% #1 - Font TeX name; #2 - number of lines in sample %%% #3 - Printed name of font \def\textbox#1#2#3{% \begingroup#1% \setbox0=\vbox{% \hbadness10000\emergencystretch1em\hsize\sampletextwd\the\texttoks}% \setbox1=\vsplit0 to #2\baselineskip \vbox{\hsize\sampletextwd\centerline{\strut#1[#3]}\unvbox1}% \endgroup} %%% %%% Example %%% %%% Setup %%% We don't need indents, complaints about \vboxes and page numbers \parindent0pt \vbadness10000 \nopagenumbers %%% Set up all the ype \isetuptype{ACaslonI} \setuptype{ACaslon} \bsetuptype{ACaslonB} \bisetuptype{ACaslonBI} %%% Shape the page \vsize10in \voffset-.5in \hsize7.5in \hoffset-.5in %%% The width of the text sample columns: \sampletextwd2.7in %%% The width of the ABCD example \abcdwd1.4in %%% Now the overall width of the text column examples \twocolwd=\hsize \advance\twocolwd-\abcdwd \advance\twocolwd2\sampletextwd \divide\twocolwd2 %%% %%% Experiments %%% \centerline{\fitit{ACaslon}{4.1in}{A SAMPLE}} \smallskip \hrule \smallskip \line{\vbox to 8in{\hsize\twocolwd% \textsamps{\Ruby}{\iRuby}{Ruby}{6}% \vfill \textsamps{\Nonpareil}{\iNonpareil}{Nonpareil}{6}% \vfill \textsamps{\Minion}{\iMinion}{Minion}{5}% \vfill \textsamps{\Bourgeois}{\iBourgeois}{Bourgeois}{5}% \vfill \textsamps{\LongPrimer}{\iLongPrimer}{Long Primer}{4}% \vfill \textsamps{\SmallPica}{\iSmallPica}{Small Pica}{4}% \vfill \textsamps{\Pica}{\iPica}{Pica}{4}% \vfill \textsamps{\English}{\iEnglish}{English}{4}}% \hfill \vrule \hfill \vbox to 8in{\hsize1in \bigtosmall{ACaslon} \vfill \smalltobig{ACaslonI} \vfill \bigtosmall{ACaslonB} \vfill \smalltobig{ACaslonBI}}} \smallskip \hrule \smallskip \hrule \smallskip \Minion \setleading \sampletextwd=\hsize \divide\sampletextwd4 \advance\sampletextwd-1pc \line{% \textbox{\Minion}{4}{Roman} \hfill \textbox{\iMinion}{4}{Italick} \hfill \textbox{\bMinion}{4}{Bold} \hfill \textbox{\biMinion}{4}{Bold-Italick}} \smallskip \hrule \smallskip \hrule \smallskip \centerline{\iPica Adobe Caslon --- \Pica Carol Twombly} %%% The End \bye \ No newline at end of file
diff --git a/macros/plain/contrib/TypeSpec/TypeSp08.tex b/macros/plain/contrib/TypeSpec/TypeSp08.tex
new file mode 100644
index 0000000000..6b9ab4b966
--- /dev/null
+++ b/macros/plain/contrib/TypeSpec/TypeSp08.tex
@@ -0,0 +1 @@
+%%% Stephen Moye %%% Stephen_Moye@brown.edu %%% Brown University %%% Graphic Services \newdimen\leading \newdimen\ascheight \newdimen\xheight \newdimen\adjust \newdimen\sampletextwd \newdimen\gutter \newdimen\dist \newdimen\mainleading \newcount\scratch \newcount\divisor \newcount\spconv \newcount\divisor \newcount\scratch \newcount\sscratch \newcount\intgp \newcount\fracp \newtoks\texttoks %%% \vbadness10000 %%% \def\setleading{% \setbox0=\hbox{Ilpgy}% \setbox1=\hbox{x}% \xheight=\ht1 \ascheight=\ht0 \leading=\ht0 \adjust=\xheight \advance\adjust-.5\leading \advance\leading\dp0 \leading=1.2\leading \ifdim\dp0<.05\ht0 \advance\adjust.5\xheight\fi \advance\leading by \adjust \baselineskip=\leading} %%% Type factor = ([Type size] * [# of characters in a sample])/(linear length of sample) %%% Based on {\it Brown's Index}, Bruce Brown, Greenwood Publishing, Great Britain 1983 \def\typefact#1{% \dist=10pt \font\facttext=#1 at\dist \spconv=\number\dist \multiply\spconv by 12 \multiply\spconv by 204 \setbox1=\hbox{\facttext\freqabc}% \divisor=\number\wd1 \divide\divisor by 100 \divide\spconv by \divisor \scratch=\spconv \divide\scratch100 \divisor=\scratch \multiply \scratch100 \advance\spconv-\scratch \hbox{\number\divisor.\ifnum\spconv<10 0\the\spconv \else \the\spconv\fi}} %%% Convert from TeX's bulky 4-decimal point measurements to 1 \def\prettypt#1{\dist=#1% \multiply\dist10% \scratch=\number\dist \divide\scratch65536% \intgp=\scratch \divide\intgp10% \sscratch=\intgp \multiply\sscratch10 \advance\scratch-\sscratch \fracp=\scratch \hbox{\the\intgp.\the\fracp}pt} \def\displaytype#1{% \font\bigtype=#1 at 24pt \font\medtype=#1 at 18pt \font\normtype=#1 at 14pt \font\smalltype=#1 at 12pt \font\tinytype=#1 at 10pt \font\tinytinytype=#1 at 8pt} \texttoks={\emergencystretch1em Brick quiz whangs jumpy veldt fox. Nymphs vex, beg quick fjord waltz. Quick wafting zephyrs vex bold Jim. West quickly gave Bert handsome prizes for six juicy plums. Freight to me sixty dozen quart jars and twelve black pans. My help squeezed back in again and joined the weavers after six. Turgid saxophones blew over Mick's jazzy quiff. Five wine experts jokingly quizzed sample chablis. My grandfather picks up quartz and valuable onyx jewels. Mix Zapf with Veljovic and get quirky Beziers. All questions asked by five watch experts amazed the judge. Back in June we delivered oxygen equipment of the same size. We have just quoted on nine dozen boxes of grey lamp wicks. A large fawn jumped quickly over white zinc boxes. The exodus of jazzy pigeons is craved by squeamish walkers.} \def\freqabc{\text zjqx% kkvv% bbbbppppyyyywwwwgggg% mmmmmmffffffccccccuuuuuu% lllllllldddddddd% hhhhhhhhhhhhrrrrrrrrrrrrssssssssssss% ooooooooooooooiiiiiiiiiiiiiinnnnnnnnnnnnnn% aaaaaaaaaaaaaaaatttttttttttttttttt% eeeeeeeeeeeeeeeeeeeeeeee}% 204 chars %%% #1 - Font TeX name; #2 - number of lines in sample %%% #3 - Printed name of font \def\textbox#1#2#3{%% \setbox0=\vtop{#1% \hbadness10000\emergencystretch1em\hsize\sampletextwd\the\texttoks}% \setbox1=\vsplit0 to #2\baselineskip \vtop{\hsize\sampletextwd\centerline{\strut#1[#3]}\smallskip\unvbox1\relax% %%% Comment-out the following line if you don't want/need numbers in the sample text 1\hfill2\hfill3\hfill4\hfill5\hfill6\hfill7\hfill8\hfill9\hfill0\hfill\&\null\par% }} \def\setupmargnote{% \tinytinytype \setleading \baselineskip=\leading \vskip\baselineskip} %%% 1-type size; 2-Number of lines; %%% 3-TeX type name 1; 4-Printed type name 1; %%% 5-TeX type name 2; 6-Printed type name 2 \def\lineoftwo#1#2#3#4#5#6{% \begingroup \font\typeone=#3 at #1% %% Set up baselineskip for the two samples %% and the info for the margin notes for the %% sample on the left: \typeone\setleading \calcxaratio{\typeone} \baselineskip=\leading \mainleading=\leading \font\typetwo=#5 at #1% \line{% \llap{\vtop{\setupmargnote% \halign{\hfill##\cr#1\cr \prettypt{\the\mainleading}\cr \typefact{#3}\cr 0.\the\xascrnum\cr}}\enskip}\hss% \textbox{\typeone}{#2}{#4}% \hskip\gutter %% Setup the info for the margin note describing %% the sample on the right \typetwo \setleading \calcxaratio{\typetwo} \textbox{\typetwo}{#2}{#6}% \hss \rlap{\enskip\vtop{\setupmargnote% \halign{##\hfil\cr#1\cr \prettypt{\the\mainleading}\cr \typefact{#5}\cr 0.\the\xascrnum\cr}}}% }\endgroup} \def\lineofone#1#2#3#4{% \begingroup \font\typeone=#3 at #1 \typeone \setleading \calcxaratio{\typeone} \baselineskip=\leading \line{\hss%% \hbox{\textbox{\typeone}{#2}{#4}% \hss \rlap{\enskip\vtop{\setupmargnote% \halign{##\hfil\cr #1\cr \prettypt{\the\mainleading}\cr \typefact{#3}\cr 0.\the\xascrnum\cr}}}}% \hss}\endgroup} \def\comment#1{% \bigskip \hrule \smallskip \line{\hfill\vbox{\hyphenpenalty10000 \emergencystretch1em% \leftskip0pt plus 4em \rightskip0pt \parfillskip0pt \tinytinytype\setleading\hsize.75\sampletextwd\noindent#1}}} %%% %%% Example %%% %%% Setup \parindent0pt \nopagenumbers \hsize6in \hoffset.25in \gutter1pc \sampletextwd2.85in \displaytype{Helvetica} %%% %%% The Page %%% \leftline{\medtype Centaur} \smallskip \hrule \bigskip \lineoftwo{12pt}{10}{Centaur}{Centaur}{CentaurI}{Centaur Italic} \bigskip \lineoftwo{12pt}{10}{CentaurB}{Centaur Bold}{CentaurBI}{Centaur Bold-Italic} \comment{Centaur, drawn by Bruce Rogers and Frederick Warde} %%% %%% The End %%% \bye \ No newline at end of file
diff --git a/macros/plain/contrib/TypeSpec/TypeSp09.tex b/macros/plain/contrib/TypeSpec/TypeSp09.tex
new file mode 100644
index 0000000000..dadab51935
--- /dev/null
+++ b/macros/plain/contrib/TypeSpec/TypeSp09.tex
@@ -0,0 +1 @@
+%%% Stephen Moye %%% Stephen_Moye@brown.edu %%% Brown University %%% Graphic Services \newdimen\leading \newdimen\ascheight \newdimen\xheight \newdimen\adjust \newdimen\sampletextwd \newdimen\gutter \newdimen\dist \newdimen\dspsize \newdimen\dspsizeincr \newdimen\depth \newdimen\mainleading \newcount\scratch \newcount\divisor \newcount\spconv \newcount\divisor \newcount\scratch \newcount\sscratch \newcount\intgp \newcount\fracp \newcount\dsplineno \newcount\xascrnum \newtoks\texttoks \newtoks\dspfont %%% \vbadness10000 %%% \def\setleading{% \setbox0=\hbox{Ilpgy}% \setbox1=\hbox{x}% \xheight=\ht1 \ascheight=\ht0 \depth=\dp0 \leading=\ht0 \advance\leading \depth \leading=1.25\leading \dimen0=\ascheight \divide\dimen0 by 2\relax \advance\dimen0-\xheight %%% Account for large x-height \ifdim\dimen0<0pt \else \advance\leading-\dimen0\fi %%% Account for missing descenders -- smallcaps for instance \ifdim\depth<.1\ascheight \advance \leading .4\ascheight\fi} %%% Calculates ratio of x-height to ascender height \def\calcxaratio#1{% \dimen0=\the\fontdimen5#1 \xascrnum=\dimen0% \divisor=\number\ascheight \multiply\xascrnum by 100\relax \divide\xascrnum by\ascheight} %%% Type factor = ([Type size] * [# of characters in a sample])/(linear length of sample) %%% Based on {\it Brown's Index}, Bruce Brown, Greenwood Publishing, Great Britain 1983 \def\typefact#1{% \dist=10pt \font\facttext=#1 at\dist \spconv=\number\dist \multiply\spconv by 12 \multiply\spconv by 204 \setbox1=\hbox{\facttext\freqabc}% \divisor=\number\wd1 \divide\divisor by 100 \divide\spconv by \divisor \scratch=\spconv \divide\scratch100 \divisor=\scratch \multiply \scratch100 \advance\spconv-\scratch \hbox{\number\divisor.\ifnum\spconv<10 0\the\spconv \else \the\spconv\fi}} %%% Convert from TeX's bulky 4-decimal point measurements to 1 \def\prettypt#1{\dist=#1% \multiply\dist10% \scratch=\number\dist \divide\scratch65536% \intgp=\scratch \divide\intgp10% \sscratch=\intgp \multiply\sscratch10 \advance\scratch-\sscratch \fracp=\scratch \hbox{\the\intgp.\the\fracp}pt} \def\displaytype#1{% \font\bigtype=#1 at 24pt \font\medtype=#1 at 18pt \font\normtype=#1 at 14pt \font\smalltype=#1 at 12pt \font\tinytype=#1 at 10pt \font\tinytinytype=#1 at 8pt} \texttoks={\emergencystretch2em Brick quiz whangs jumpy veldt fox. Nymphs vex, beg quick fjord waltz. Quick wafting zephyrs vex bold Jim. West quickly gave Bert handsome prizes for six juicy plums. Freight to me sixty dozen quart jars and twelve black pans. My help squeezed back in again and joined the weavers after six. Turgid saxophones blew over Mick's jazzy quiff. Five wine experts jokingly quizzed sample chablis. My grandfather picks up quartz and valuable onyx jewels. Mix Zapf with Veljovic and get quirky Beziers. All questions asked by five watch experts amazed the judge. Back in June we delivered oxygen equipment of the same size. We have just quoted on nine dozen boxes of grey lamp wicks. A large fawn jumped quickly over white zinc boxes. The exodus of jazzy pigeons is craved by squeamish walkers.} \def\freqabc{zjqx% kkvv% bbbbppppyyyywwwwgggg% mmmmmmffffffccccccuuuuuu% lllllllldddddddd% hhhhhhhhhhhhrrrrrrrrrrrrssssssssssss% ooooooooooooooiiiiiiiiiiiiiinnnnnnnnnnnnnn% aaaaaaaaaaaaaaaatttttttttttttttttt% eeeeeeeeeeeeeeeeeeeeeeee}% 204 chars %%% #1 - Font TeX name; #2 - number of lines in sample %%% #3 - Printed name of font \def\textbox#1#2#3{#1%\setleading%% \setbox0=\vtop{% \hbadness10000\hsize\sampletextwd\the\texttoks}% \setbox1=\vsplit0 to #2\baselineskip \vtop{\hsize\sampletextwd\centerline{\strut#1[#3]}\smallskip\unvbox1\relax% %%% Comment-out the following line if you don't want/need numbers in the sample text 1\hfill2\hfill3\hfill4\hfill5\hfill6\hfill7\hfill8\hfill9\hfill0\hfill\&\null\par% }} \def\setupmargnote{% \tinytinytype \setleading \baselineskip=\leading \vskip\baselineskip} %%% 1-type size; 2-Number of lines; %%% 3-TeX type name 1; 4-Printed type name 1; %%% 5-TeX type name 2; 6-Printed type name 2 \def\lineoftwo#1#2#3#4#5#6{% \begingroup \font\typeone=#3 at #1% %% Set up baselineskip for the two samples %% and the info for the margin notes for the %% sample on the left: \typeone\setleading \calcxaratio{\typeone} \baselineskip=\leading \mainleading=\leading \font\typetwo=#5 at #1% \line{% \llap{\vtop{\setupmargnote% \halign{\hfill##\cr#1\cr \prettypt{\the\mainleading}\cr \typefact{#3}\cr 0.\the\xascrnum\cr}}\enskip}\hss% \textbox{\typeone}{#2}{#4}% \hskip\gutter %% Setup the info for the margin note describing %% the sample on the right \typetwo \setleading \calcxaratio{\typetwo} \textbox{\typetwo}{#2}{#6}% \hss \rlap{\enskip\vtop{\setupmargnote% \halign{##\hfil\cr#1\cr \prettypt{\the\mainleading}\cr \typefact{#5}\cr 0.\the\xascrnum\cr}}}% }\endgroup} \def\lineofone#1#2#3#4{% \begingroup \font\typeone=#3 at #1 \typeone \setleading \calcxaratio{\typeone} \baselineskip=\leading \line{\hss%% \hbox{\textbox{\typeone}{#2}{#4}% \hss \rlap{\enskip\vtop{\setupmargnote% \halign{##\hfil\cr #1\cr \prettypt{\the\mainleading}\cr \typefact{#3}\cr 0.\the\xascrnum\cr}}}}% \hss}\endgroup} \def\comment#1{% \bigskip \hrule \smallskip \line{\hfill\vbox{\hyphenpenalty10000 \emergencystretch1em% \leftskip0pt plus 4em \rightskip0pt \parfillskip0pt \tinytinytype\setleading\hsize.75\sampletextwd\noindent#1}}} %%% Calculates the largest display typesize to fit \hsize %%% First typeset it very small (.1pt) and measure its width %%% then scale it to get it to fit to \hsize \def\dabc{AGQMstaefgpy1234?!\&} \def\makedisplay#1{% \dspfont={#1} \font\dsp=\the\dspfont\space at .1pt \setbox0=\hbox{\dsp \dabc}% \dspsize=\hsize \scratch=\dspsize \multiply\scratch10 \divisor=\wd0 \divide\scratch by \divisor \dspsize=\scratch pt \divide\dspsize by 100 %%% Calculates the increment such that smallest display size is 12pt \dspsizeincr=\dspsize \advance\dspsizeincr by -12pt \divide\dspsizeincr by 6 \dsplineno7 %%% Make the display \bgroup \loop\font\dsp=\the\dspfont\space at \dspsize \dsp \baselineskip1em \hbox to\hsize{\dabc\hfill\hss\rlap{\tinytinytype\enskip\prettypt{\the\dspsize}}}% \vskip.075in\relax \ifnum\dsplineno>1 \global\advance\dsplineno by-1\relax \advance\dspsize by -\dspsizeincr \font\dsp=\the\dspfont\space at \dspsize\repeat \egroup} %%% %%% Example %%% %%% Setup \parindent0pt \nopagenumbers \hsize6in \hoffset.25in \gutter1pc \sampletextwd2.85in \displaytype{Helvetica} %%% %%% The Page %%% \leftline{\medtype BodoniClassic} \smallskip \hrule \bigskip %%% Display Type \makedisplay{BodoniClassic-Roman} \bigskip \hrule \bigskip \lineoftwo{10pt}{9}{BodoniClassic-Roman}{Bodoni Classic}{BodoniClassic-Italic}{Bodoni Classic Italic} \bigskip \lineoftwo{10pt}{9}{BodoniClassic-Bold}{BodoniClassic bold}{BodoniClassic-BoldItalic}{BodoniClassic BoldItalic} \comment{BodoniClassic, drawn by Bruce Rogers; italic by Frederick Warde} %%% %%% The End %%% \bye \ No newline at end of file
diff --git a/macros/plain/contrib/TypeSpec/TypeSp10.tex b/macros/plain/contrib/TypeSpec/TypeSp10.tex
new file mode 100644
index 0000000000..37f91b9884
--- /dev/null
+++ b/macros/plain/contrib/TypeSpec/TypeSp10.tex
@@ -0,0 +1 @@
+%%% Stephen Moye %%% Stephen_Moye@brown.edu %%% Brown University %%% Graphic Services \newdimen\leading \newdimen\ascheight \newdimen\xheight \newdimen\adjust \newdimen\sampletextwd \newdimen\gutter \newdimen\dist \newdimen\dspsize \newdimen\dspsizeincr \newdimen\depth \newdimen\mainleading \newcount\scratch \newcount\divisor \newcount\spconv \newcount\divisor \newcount\scratch \newcount\sscratch \newcount\intgp \newcount\fracp \newcount\dsplineno \newcount\xascrnum \newtoks\texttoks \newtoks\dspfont %%% \vbadness10000 %%% \def\setleading{% \setbox0=\hbox{Ilpgy}% \setbox1=\hbox{x}% \xheight=\ht1 \ascheight=\ht0 \depth=\dp0 \leading=\ht0 \advance\leading \depth \leading=1.25\leading \dimen0=\ascheight \divide\dimen0 by 2\relax \advance\dimen0-\xheight %%% Account for large x-height \ifdim\dimen0<0pt \else \advance\leading-\dimen0\fi %%% Account for missing descenders -- smallcaps for instance \ifdim\depth<.1\ascheight \advance \leading .4\ascheight\fi} %%% Calculates ratio of x-height to ascender height \def\calcxaratio#1{% \dimen0=\the\fontdimen5#1 \xascrnum=\dimen0% \divisor=\number\ascheight \multiply\xascrnum by 100\relax \divide\xascrnum by\ascheight} %%% Type factor = ([Type size] * [# of characters in a sample])/(linear length of sample) %%% Based on {\it Brown's Index}, Bruce Brown, Greenwood Publishing, Great Britain 1983 \def\typefact#1{% \dist=10pt \font\facttext=#1 at\dist \spconv=\number\dist \multiply\spconv by 12 \multiply\spconv by 204 \setbox1=\hbox{\facttext\freqabc}% \divisor=\number\wd1 \divide\divisor by 100 \divide\spconv by \divisor \scratch=\spconv \divide\scratch100 \divisor=\scratch \multiply \scratch100 \advance\spconv-\scratch \hbox{\number\divisor.\ifnum\spconv<10 0\the\spconv \else \the\spconv\fi}} %%% Convert from TeX's bulky 4-decimal point measurements to 1 \def\prettypt#1{\dist=#1% \multiply\dist10% \scratch=\number\dist \divide\scratch65536% \intgp=\scratch \divide\intgp10% \sscratch=\intgp \multiply\sscratch10 \advance\scratch-\sscratch \fracp=\scratch \hbox{\the\intgp.\the\fracp}pt} \def\displaytype#1{% \font\bigtype=#1 at 24pt \font\medtype=#1 at 18pt \font\normtype=#1 at 14pt \font\smalltype=#1 at 12pt \font\tinytype=#1 at 10pt \font\tinytinytype=#1 at 8pt} \texttoks={\emergencystretch2em Brick quiz whangs jumpy veldt fox. Nymphs vex, beg quick fjord waltz. Quick wafting zephyrs vex bold Jim. West quickly gave Bert handsome prizes for six juicy plums. Freight to me sixty dozen quart jars and twelve black pans. My help squeezed back in again and joined the weavers after six. Turgid saxophones blew over Mick's jazzy quiff. Five wine experts jokingly quizzed sample chablis. My grandfather picks up quartz and valuable onyx jewels and objects. Mix Zapf with Veljovic and get quirky Beziers. All questions asked by five watch experts amazed the judge. Back in June we delivered oxygen equipment of the same size. We have just quoted on nine dozen boxes of grey lamp wicks. A large fawn jumped quickly over white zinc boxes. The exodus of jazzy pigeons is craved by squeamish walkers.} \def\freqabc{zjqx% kkvv% bbbbppppyyyywwwwgggg% mmmmmmffffffccccccuuuuuu% lllllllldddddddd% hhhhhhhhhhhhrrrrrrrrrrrrssssssssssss% ooooooooooooooiiiiiiiiiiiiiinnnnnnnnnnnnnn% aaaaaaaaaaaaaaaatttttttttttttttttt% eeeeeeeeeeeeeeeeeeeeeeee}% 204 chars %%% #1 - Font TeX name; #2 - number of lines in sample %%% #3 - Printed name of font \def\textbox#1#2#3{#1%\setleading%% \setbox0=\vtop{% \hbadness10000\hsize\sampletextwd\the\texttoks}% \setbox1=\vsplit0 to #2\baselineskip \vtop{\hsize\sampletextwd\centerline{\strut#1[#3]}\smallskip\unvbox1\relax% %%% Comment-out the following line if you don't want/need numbers in the sample text 1\hfill2\hfill3\hfill4\hfill5\hfill6\hfill7\hfill8\hfill9\hfill0\hfill\&\null\par% }} \def\setupmargnote{% \tinytinytype \setleading \baselineskip=\leading \vskip\baselineskip} %%% 1-type size; 2-Number of lines; %%% 3-TeX type name 1; 4-Printed type name 1; %%% 5-TeX type name 2; 6-Printed type name 2 \def\lineoftwo#1#2#3#4#5#6{% \begingroup \font\typeone=#3 at #1% %% Set up baselineskip for the two samples %% and the info for the margin notes for the %% sample on the left: \typeone\setleading \calcxaratio{\typeone} \baselineskip=\leading \mainleading=\leading \font\typetwo=#5 at #1% \line{% \llap{\vtop{\setupmargnote% \halign{\hfill##\cr#1\cr \prettypt{\the\mainleading}\cr \typefact{#3}\cr 0.\the\xascrnum\cr}}\enskip}\hss% \textbox{\typeone}{#2}{#4}% \hskip\gutter %% Setup the info for the margin note describing %% the sample on the right \typetwo \setleading \calcxaratio{\typetwo} \textbox{\typetwo}{#2}{#6}% \hss \rlap{\enskip\vtop{\setupmargnote% \halign{##\hfil\cr#1\cr \prettypt{\the\mainleading}\cr \typefact{#5}\cr 0.\the\xascrnum\cr}}}% }\endgroup} %% #1 Type size; #2 number of lines %% #3 TeX name of type; #4 Printed type name \def\lineofone#1#2#3#4{% \begingroup \font\typeone=#3 at #1 \typeone \setleading \calcxaratio{\typeone} \baselineskip=\leading \mainleading=\leading \line{\hss%% \hbox{\textbox{\typeone}{#2}{#4}% \rlap{\enskip\vtop{\setupmargnote% \halign{##\hfil\cr #1\cr \prettypt{\the\mainleading}\cr \typefact{#3}\cr 0.\the\xascrnum\cr}}}}% \hss}\endgroup} \def\comment#1{% \bigskip \hrule \smallskip \line{\hfill\vbox{\hyphenpenalty10000 \emergencystretch1em% \leftskip0pt plus 4em \rightskip0pt \parfillskip0pt \tinytinytype\setleading\hsize.75\sampletextwd\noindent#1}}} %%% Calculates the largest display typesize to fit \hsize %%% First typeset it very small (.1pt) and measure its width %%% then scale it to get it to fit to \hsize \def\dabc{AGQMstaefgpy1234?!\&} \def\makedisplay#1{% \dspfont={#1} \font\dsp=\the\dspfont\space at .1pt \setbox0=\hbox{\dsp \dabc}% \dspsize=\hsize \scratch=\dspsize \multiply\scratch10 \divisor=\wd0 \divide\scratch by \divisor \dspsize=\scratch pt \divide\dspsize by 100 %%% Calculates the increment such that smallest display size is 12pt \dspsizeincr=\dspsize \advance\dspsizeincr by -12pt \divide\dspsizeincr by 6 \dsplineno7 %%% Make the display \bgroup \loop\font\dsp=\the\dspfont\space at \dspsize \dsp \baselineskip1em \hbox to\hsize{\dabc\hfill\hss\rlap{\tinytinytype\enskip\prettypt{\the\dspsize}}}% \vskip.075in\relax \ifnum\dsplineno>1 \global\advance\dsplineno by-1\relax \advance\dspsize by -\dspsizeincr \font\dsp=\the\dspfont\space at \dspsize\repeat \egroup} %%% %%% Example %%% %%% Setup \parindent0pt \nopagenumbers \hsize6in \hoffset.25in \gutter1pc \sampletextwd2.85in \displaytype{Helvetica} %%% %%% The Page %%% \leftline{\medtype Romus} \smallskip \hrule \bigskip %%% Display Type \makedisplay{Romus} \bigskip \hrule \bigskip \lineofone{10pt}{9}{Romus}{Romus} \bigskip \lineofone{10pt}{9}{RomusI}{Romus Italic} \comment{Romulus and Cancelleresca Bastarda drawn by Jan van Krimpen, digitized by Richard Beatty.} %%% %%% The End %%% \bye \ No newline at end of file
diff --git a/macros/plain/contrib/TypeSpec/TypeSpec.pdf b/macros/plain/contrib/TypeSpec/TypeSpec.pdf
new file mode 100644
index 0000000000..5a63b687b7
--- /dev/null
+++ b/macros/plain/contrib/TypeSpec/TypeSpec.pdf
Binary files differ
diff --git a/macros/plain/contrib/TypeSpec/TypeSpec.tex b/macros/plain/contrib/TypeSpec/TypeSpec.tex
new file mode 100644
index 0000000000..5cfb6c056d
--- /dev/null
+++ b/macros/plain/contrib/TypeSpec/TypeSpec.tex
@@ -0,0 +1 @@
+\hsize4.5in \hoffset6.5in \advance\hoffset-\hsize \divide\hoffset2 \def\ob{\tt\string{} \def\cb{\tt\string}} \footline={\ifnum\pageno=1 \else \hss\folio\hss\fi} \chardef\other=12 \def\deactivate{% \catcode`\\=\other \catcode`\{=\other \catcode`\}=\other \catcode`\$=\other \catcode`\&=\other \catcode`\#=\other \catcode`\%=\other \catcode`\~=\other \catcode`\^=\other \catcode`\_=\other} \def\makeactive#1{\catcode`#1=\active \ignorespaces} \def\LaTeX{L\kern-.26em \raise.6ex\hbox{\fivei A}% \kern-.15em TeX}% {\makeactive\^^M % \gdef\obeywhitespace{\makeactive\^^M % \let^^M=\newline % \aftergroup\removebox % \obeyspaces}} \def\newline{\par\indent} \def\removebox{\setbox0=\lastbox} {\catcode`\|=\active \gdef\verbatim{% \par\begingroup\deactivate\obeywhitespace\tt \catcode`\|=\active \def|{\endgroup\par}}} \clubpenalty10000 \widowpenalty10000 \raggedbottom \interlinepenalty10000 \def\section#1\par{% \medskip \noindent\llap{\raise1.25pt\hbox{$\diamond$\enskip}}{\bf#1}\par\nobreak\noindent} \section Introduction I use a lot of type. I also use \TeX~--~what better medium can there be for showing off type?~--~in its Macintosh incarnation as Textures. I need samples that I can show clients, and that I can refer to for the technical details of the typeface. The results are the type specimens you see here. The code itself has some annotations that you might want to read. The macros are not complex~--~I don't have time to decode clever macros, and I may need to alter them for unusual situations as they arise. You are encouraged to do the same. The current distribution of these specimens includes: This introduction; eight type specimens; an Acrobat PDF file with typeset examples of the specimens and this introduction. Some of the fonts in these examples (particularly {\it Centaur} in {\tt TypeSpc8.tex}) were made \TeX-ready by using Alan Jeffrey's {\tt fontinst}. The {\tt fontinst} package is discussed in considerable detail in Alan Hoenig's new book {\it\TeX\ Unbound:\ \LaTeX\ and \TeX\ Strategies for Fonts, Graphics \& More} (Oxford 1998), which discusses {\tt fontinst} over the course of several chapters and works through numerous examples. If you deal at all with fonts and \TeX\ you will need this book. Clearly, these specimens will be most easily produced on systems that use outline fonts as opposed to bitmaps. I have used these specimens on a Mac with Textures using both PostScript and TrueType, and on a PC with PC\TeX using TrueType. Textures (now at version 2.0) is interesting in that it can create font metrics ``on the fly'' from the Mac's bitmap files. For more demanding work, you will, however, want to stick with {\tt fontinst}. \section A word about color Blue Sky Research {\it Textures} is a wonderful implementation of \TeX\ that has a very convenient way to use color through the {\tt\string\special} mechanism. I'm going to describe it so that if you use a different implementation that can take advantage of color, you will understand the macros here. Color is invoked by: \verbatim\special{color rgb 1.0 0.0 0.0}| \noindent This tells \TeX\ to trun everything red from this point on. This specification could also have been given by: \verbatim\special{color cmyk 0.0 1.0 0.1 0.0}| \noindent as red in the CMYK model is 100\% of magenta and yellow. To jump back and forth between colors, Textures has a color stack and you can push colors onto the stack and pop them off. So, a typical use of color might be something like this: \verbatim\special{color push}% Puts current color (black) on stack| \verbatim%%% Calls red and puts it on stack:| \verbatim\special{color rgb 1.0 0.0 0.0}| \verbatim Some text in red.| \verbatim\special{color pop}% Pops red off stack, restores black| \verbatim More text in black.| \noindent Simple. You can also define a color for later use: \verbatim\special{color define red rgb 1.0 0.0 0.0}| \noindent and summon it by calling: \verbatim\special{color red}| \noindent The advantage of this is that you can call colors that downstream processors (separation software, or a printer) can use to identify color use. You can even screen the color for tints: \verbatim\special{color red .5}| \noindent which would give a 50\% tint of red, or pink. \section TypeSpc1.tex, TypeSpc2.tex, TypeSpc3.tex These are essentially variations on a theme, differing only in the display type at the top of the page. TypeSpc1 has a selection of telltale characters. The top of the {\it A\/} often has a distinctive treatment; the lower half of the {\it G\/} and the tail of the {\it Q\/} also tend to be distinctive; the shape and size of the enclosed areas of the lowercase {\it a\/} and {\it e\/} are also telltale, and important in that very small such spaces are likely to close up under less than ideal printing conditions; the ampersand frequently has a good deal of creativity lavished upon it. TypeSpc2 sets the uppercase and lowercase of each letter next to each other. TypeSpc3 has a line of uppercase characters (not good design, but some people like or expect it) followed by a line of lowercase characters. \section Selecting the type At the beginning you can insert three items of information: the \TeX\ name of the font; the name of the font that will appear as the `title' of the specimen; and any comments that you wish to have at the end of the chart. I like this specimen because the chosen typeface is used for the whole specimen, including annotations. Clearly, these specimens and macros are more suited to PostScript and TrueType fonts than bitmaps -- proceed accordingly. \section Column width Under normal circumstances, a column of type should be about 70 lowercase characters (about 2.5 lowercase alphabets) in width, or about 4.5 inches in width, which ever comes first. Much longer, and the eye tires, and loses its place when moving to the next line; much shorter and you increase the level of visual noise such as hyphenation and highly variable word spacing. This sample shows 10pt type at the width of 2.5 lowercase alphabets, and calculates the size of type necessay to set 70 characters to a measure of 4.5 inches. Interestingly, 10pt type usually comes very close to fitting 4.5 inches with 70 characters. One of the most common signs of uninformed typography is column width that pays no attention to the realities of type and reading. \section Leading The calculation of leading~--~{\tt\string\baselineskip} in \TeX~--~is based purely on the physical realities of the type being set. The maximum height and depth of the typeface's characters is found, and then a percentage of that amount is added to itself to arrive at the leading. The x-height of the font is also given some influence over the leading. \section Choice of text I have provided three sample texts in token registers. The first is a simple piece of English prose. The second is a collection of {\it pangrams}~--~sentences using all twenty-six letters of the alphabet~--~from the large collection of David Lemon of Adobe Systems, Inc.; so you get to see all of the letters of the alphabet in use. The third is an amalgam of Latin and semi-Latin texts. In the first place, Latin~--~as Beatrice Warde pointed out~--~has fewer descenders so the text sits more cleanly on the baseline; second, as W.\ A.\ Dwiggins pointed out to Beatrice Warde, it is good to have a sample of text in a language the reader does not read~--~in this way the reader looks at the type itself, and not through the type to the information it conveys. \section Type factor The type factor is basically an extension of the the characters per pica concept, but scaled to the size of the typeface. It is based on a sample of type in which $f=(c\,t)/m$ where $f$ is the typefactor, $c$ is the number of characters in the sample, $t$ is the type size in points, and $m$ is the total horizontal width of the sample. The formula can be put to some good use. For instance, characters per pica, $p$, can be obtained from $p=h/f$ where $h$ is the size of the type in points; the size of the type, $h$, necessary to place $n$ characters on a column width of $w$ (in picas) is: $h=(fw)/n$. I have used a sample based on the relative frequency of letters in English. This gives excellent agreement with published figures, particularly those in {\it Brown's Index}. It is best not to take figures like characters-per-pica or type factors too seriously. They are very useful for judging the relative characteristics of typefaces. Before computer typesetting they were far more useful when the actual typesetting of material was costly and time-consuming. Computers allow us to be able to change typesetting parameters interactively and quickly, relieving us from having to know precisely ahead of time how the material is going to layout. \section The ratio of the x-height to the ascender height This is an important characheristic of type. As x-height increases, type tends to look darker, or more crowded on the page. The antidote to this is to increase the leading slightly. {\it See above.} \section TypeSpc4.tex -- a mini-specimen The principal attraction of TypeSpc4 is the {\tt\string\makefontbox} macro which gives a kind miniature specimen that can be as little or as large as you like. In the examples I give, the grid is certainly optional as is the use of color: They are merely suggestions to get you started. The five arguments to {\tt\string\makefontbox} are as follows: \medskip \vbox{\raggedright\parskip3pt \itemitem{\#1}\TeX's name for the desired font \itemitem{\#2}The name font name as you want it to print \itemitem{\#3}The name of the type's designer, or other salient piece of information that lends itself to display \itemitem{\#4}The size of the type inside the box \itemitem{\#5}The overall desired width of the box} \section TypeSpc5.tex -- by the numbers It is very often useful to know where the characters of a typeface are, and to gain an overall impression of all of the characters of a font. This specimen is simply an enumeration of the characters with respect to their character numbers. The macro to notice is {\tt\string\lineofchars}. You can specify how may characters are to be in the line, and what the numerical starting point will be. Numerous other design variables can be specified, and they are discussed in TypeSpc5.tex. \section TypeSpc6.tex -- for florid fonts There are times when you simply have to see a font in all its splendor. You don't need it at every imaginable size. And in the case of ornate calligraphic fonts, it does not make any sense at all to shove uppercase letters together for any reason, not even for display. \section TypeSpc7.tex -- homage \`a Caslon This ornate example is meant to be both fun and useful. It was inspired by the specimen sheets of William Caslon. The names of the type sizes~--~Ruby, Minion, Brevier, etc.~--~are traditional and could be replaced with sizes in points. This is a useful sample for PostScript typefaces which are often packaged as a family of four fonts: roman, italic, bold and bold-italic. The principle fonts are the roman and italic, however, and these are the fonts primarily featured in this specimen. The sample text is in a token list and can be changed at will~--~just make sure that there is enough of it. \section TypeSpc8.tex This specimen uses techniques that we have established in earlier samples. Again, this is suitable for typefaces that exist in pairs (or pairs of pairs) of fonts: roman and italic, bold and bold-italic. There is also a macro for a single, centered paragraph that could be used, say, for small caps. The type size, leading and type factor are given for each font. \section TypeSpc9.tex I combined two formats here to show off the principal characteristics of the roman along with the fonts of the family as used for text. \section TypeSp10.tex Another variation using one sample per line. Also notice the very beautiful typeface. \bigskip \hrule \section Stephen Moye, 23 IV 1998 Stephen\hbox to .5em{\hrulefill}Moye@brown.edu\hfill\break Brown University Graphic Services \bye \ No newline at end of file