From 9d6e6a74d3d198ed9a27b0011a6988340ec36a62 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Sun, 5 Aug 2007 18:36:05 +0000 Subject: kerntest rearrange (report from francois charette, 3aug07) git-svn-id: svn://tug.org/texlive/trunk@4698 c570f23f-e606-0410-a88d-b1316a301751 --- Build/cdbuild/ctan2tds.pl | 1 + Build/tools/tpm-ctan-check | 2 +- Master/texmf-dist/doc/latex/kerntest/kerntest.xml | 36 - Master/texmf-dist/doc/latex/kerntest/krntst-v.tex | 25 + Master/texmf-dist/doc/latex/kerntest/t1cmr-1200.fd | 22 - Master/texmf-dist/source/latex/kerntest/Makefile | 227 + .../texmf-dist/source/latex/kerntest/kerntest.dtx | 5373 ++++++++++++++++++++ .../texmf-dist/source/latex/kerntest/kerntest.ins | 37 + .../source/latex/kerntest/latex/kerntest/Makefile | 227 - .../latex/kerntest/latex/kerntest/kerntest.dtx | 5373 -------------------- .../latex/kerntest/latex/kerntest/kerntest.ins | 37 - Master/texmf-dist/tex/latex/kerntest/t1cmr-1200.fd | 22 + 12 files changed, 5686 insertions(+), 5696 deletions(-) delete mode 100644 Master/texmf-dist/doc/latex/kerntest/kerntest.xml create mode 100644 Master/texmf-dist/doc/latex/kerntest/krntst-v.tex delete mode 100644 Master/texmf-dist/doc/latex/kerntest/t1cmr-1200.fd create mode 100644 Master/texmf-dist/source/latex/kerntest/Makefile create mode 100644 Master/texmf-dist/source/latex/kerntest/kerntest.dtx create mode 100644 Master/texmf-dist/source/latex/kerntest/kerntest.ins delete mode 100644 Master/texmf-dist/source/latex/kerntest/latex/kerntest/Makefile delete mode 100644 Master/texmf-dist/source/latex/kerntest/latex/kerntest/kerntest.dtx delete mode 100644 Master/texmf-dist/source/latex/kerntest/latex/kerntest/kerntest.ins create mode 100644 Master/texmf-dist/tex/latex/kerntest/t1cmr-1200.fd diff --git a/Build/cdbuild/ctan2tds.pl b/Build/cdbuild/ctan2tds.pl index 5e947afb0e8..eb5d57b7a18 100755 --- a/Build/cdbuild/ctan2tds.pl +++ b/Build/cdbuild/ctan2tds.pl @@ -1048,6 +1048,7 @@ $standardpro='\.pro'; $standardmap='\.map'; %specialmap = ( 'arabxetex' => '\.(map|tec)$', + 'kerntest' => 'NULL', # skip test map file ); $standardmapdest = "fonts/map/dvips"; %specialmapdest = ( diff --git a/Build/tools/tpm-ctan-check b/Build/tools/tpm-ctan-check index 4db1d28a34b..96785b88f10 100755 --- a/Build/tools/tpm-ctan-check +++ b/Build/tools/tpm-ctan-check @@ -70,7 +70,7 @@ my @WorkingTPM = qw( invoice iopart-num isodoc isorot isotope itnumpar iwona japanese jeopardy jneurosci jpsj jurabib juramisc - kalender kerkis keystroke koma-script kpfonts + kalender kerkis kerntest keystroke koma-script kpfonts l2picfaq l2tabu-english labelcas labels latex latex-tds layouts lcd lcg leading leaflet ledmac leftidx lewis lfb lgreek lh limap linearA lineno lipsum listings listliketab lkproof lm diff --git a/Master/texmf-dist/doc/latex/kerntest/kerntest.xml b/Master/texmf-dist/doc/latex/kerntest/kerntest.xml deleted file mode 100644 index 92e660b440d..00000000000 --- a/Master/texmf-dist/doc/latex/kerntest/kerntest.xml +++ /dev/null @@ -1,36 +0,0 @@ - - - - - kerntest - Print tables and generate mtx files that help to adjust kernings. - - Harald Harders - h.harders@tu-bs.de - - - - 1.32 - - - - -This class makes it easy to generate tables that show many different -kerning pairs of an arbitrary font, usable by LaTeX. -It shows the kerning values that are used by the the font by default. - -In addition, this class enables the user to alternate the kernings -and to observe the results. -Kerning pairs can be defined for groups of similar glyphs at once. -Automatically, an mtx file is generated that can be loaded by -fontinst to introduce the user-made kernings into the virtual font -for LaTeX. - - - - latex3 - macros/latex/contrib/kerntest - - diff --git a/Master/texmf-dist/doc/latex/kerntest/krntst-v.tex b/Master/texmf-dist/doc/latex/kerntest/krntst-v.tex new file mode 100644 index 00000000000..d9a62410fef --- /dev/null +++ b/Master/texmf-dist/doc/latex/kerntest/krntst-v.tex @@ -0,0 +1,25 @@ +%% +%% This is file `krntst-v.tex', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% kerntest.dtx (with options: `version') +%% +%% kerntest class +%% +%% Copyright 2004 Harald Harders +%% +%% This program can be redistributed and/or modified under the terms +%% of the LaTeX Project Public License Distributed from CTAN +%% archives in directory macros/latex/base/lppl.txt; either +%% version 1.3 of the License, or any later version. +%% +%% h.harders@tu-bs.de +%% +\ProvidesFile{krntst-v.tex} + [2004/04/14 v1.32 Generate kerning tables] + +\endinput +%% +%% End of file `krntst-v.tex'. diff --git a/Master/texmf-dist/doc/latex/kerntest/t1cmr-1200.fd b/Master/texmf-dist/doc/latex/kerntest/t1cmr-1200.fd deleted file mode 100644 index 1f14490c80a..00000000000 --- a/Master/texmf-dist/doc/latex/kerntest/t1cmr-1200.fd +++ /dev/null @@ -1,22 +0,0 @@ - %% -%% This is file `t1cmr-1200.fd'. -%% -\ProvidesFile{t1cmr-1200.fd} - [2004/04/01 v1.0 Non-Standard LaTeX font definitions] -\providecommand{\krntstexmplfamily}[5]{% - \DeclareFontShape{#1}{#2}{#3}{#4}% - {<-> #51200}{}} -\DeclareFontFamily{T1}{cmr}{} -\krntstexmplfamily{T1}{cmr}{m}{n}{ecrm} -\krntstexmplfamily{T1}{cmr}{m}{sl}{ecsl} -\krntstexmplfamily{T1}{cmr}{m}{it}{ecti} -\krntstexmplfamily{T1}{cmr}{m}{sc}{eccc} -\krntstexmplfamily{T1}{cmr}{bx}{n}{ecbx} -\krntstexmplfamily{T1}{cmr}{b}{n}{ecrb} -\krntstexmplfamily{T1}{cmr}{bx}{it}{ecbi} -\krntstexmplfamily{T1}{cmr}{bx}{sl}{ecbl} -\krntstexmplfamily{T1}{cmr}{bx}{sc}{ecxc} -\krntstexmplfamily{T1}{cmr}{m}{ui}{ecui} -\endinput -%% -%% End of file `t1cmr-1200.fd'. diff --git a/Master/texmf-dist/source/latex/kerntest/Makefile b/Master/texmf-dist/source/latex/kerntest/Makefile new file mode 100644 index 00000000000..e5c279f4d86 --- /dev/null +++ b/Master/texmf-dist/source/latex/kerntest/Makefile @@ -0,0 +1,227 @@ +# --------------------------------------------------------------- + +SRCDIR=kerntest +INSTALLDIR=`kpsewhich --expand-path='$$TEXMFLOCAL'`/tex/latex/kerntest +DOCDIR=`kpsewhich --expand-path='$$TEXMFLOCAL'`/doc/latex/kerntest +SOURCEDIR=`kpsewhich --expand-path='$$TEXMFLOCAL'`/source/latex/kerntest +VERSION=`grep -e '\\[.*\\]' krntst-v.tex | sed 's/ \\[[0-9/]* *\\([v0-9]*\\)\\.\\([0-9]*\\).*\\]/\\1_\\2/'` + +TEX= \ + kerntest.cls \ + ly1mtx.clo \ + ot1mtx.clo \ + t1mtx.clo \ + t2amtx.clo \ + t2bmtx.clo \ + ts1mtx.clo \ + +DOC= \ + kerntest.pdf \ + t1-XXX-m-n.tex \ + ts1-XXX-m-n.tex \ + ot1-XXX-m-n.tex \ + schoolb.map \ + schoolb1.tex \ + schoolb2.tex \ + t1-9nc-m-n-1.tex \ + t1-9nc-m-n-2.tex \ + t1-cmr-m-n-1200.tex \ + t1-ptm-m-n.tex \ + t1-ptm-bx-n-example.tex \ + t1cmr-1200.fd \ + t1-ptm-m-n-shortexample.tex \ + testschoolb.tex \ + README \ + ChangeLog \ + ToDo \ + kerntest.xml \ + +SOURCE= \ + Makefile \ + kerntest.dtx \ + kerntest.ins \ + +# --------------------------------------------------------------- + +.SUFFIXES: .cls .ins .dtx .dvi .ps .pdf + +# --------------------------------------------------------------- +.ins.cls: + latex $< + +.dtx.pdf: + pdflatex $< + pdflatex $< + makeindex -s gind.ist $(*D)/$(*F) + makeindex -s gglo.ist -o $(*D)/$(*F).gls $(*D)/$(*F).glo + pdflatex $< + +.dvi.ps: + dvips -o $(*D)/$(*F).ps $(*D)/$(*F) + +# --------------------------------------------------------------- + +all: kerntest.cls + +dist: all t1-ptm-bx-n-example.pdf t1-ptm-m-n-shortexample.pdf \ + testschoolb-2.pdf kerntest.pdf + +# --------------------------------------------------------------- + +t1-ptm-bx-n-example.pdf: t1-ptm-bx-n-example.tex kerntest.cls + latex t1-ptm-bx-n-example + latex t1-ptm-bx-n-example + latex t1-ptm-bx-n-example + dvips -E -o t1-ptm-bx-n-example.ps t1-ptm-bx-n-example + epstopdf t1-ptm-bx-n-example.ps + +t1-ptm-m-n-shortexample.pdf: t1-ptm-m-n-shortexample.tex kerntest.cls + latex t1-ptm-m-n-shortexample + latex t1-ptm-m-n-shortexample + latex t1-ptm-m-n-shortexample + dvips -E -o t1-ptm-m-n-shortexample.ps t1-ptm-m-n-shortexample + epstopdf t1-ptm-m-n-shortexample.ps + +# --------------------------------------------------------------- + +clean: + @-rm -f kerntest.glo kerntest.gls kerntest.idx kerntest.ilg + @-rm -f kerntest.ind kerntest.aux kerntest.log kerntest.toc + @-rm -f *~ + @-rm -f t1-ptm-bx-n-example.aux t1-ptm-bx-n-example.dvi + @-rm -f t1-ptm-bx-n-example.log t1-ptm-bx-n-example.ps + @-rm -f t1-ptm-m-n-shortexample.aux t1-ptm-m-n-shortexample.dvi + @-rm -f t1-ptm-m-n-shortexample.log t1-ptm-m-n-shortexample.ps + @-rm -f t1-ptm-m-n-shortexample.mtx + @-rm -f testschoolb.dvi testschoolb-2.ps + @-rm -f testschoolb.aux testschoolb.log + @-rm -f c059013l.mtx c059013l.pl 9ncr8?.mtx 9ncr8?.pl 9ncr8?.vpl + @-rm -f t1-9nc-m-n-1.dvi t1-9nc-m-n-1.ps + @-rm -f t1-9nc-m-n-1.aux t1-9nc-m-n-1.log + @-rm -f t1-9nc-m-n-2.dvi t1-9nc-m-n-2.ps + @-rm -f t1-9nc-m-n-2.aux t1-9nc-m-n-2.log + @-rm -f t1-9nc-m-n-2.mtx + @-rm -f schoolb1.log schoolb2.log + @-rm -f t1-cmr-m-n-1200.aux t1-cmr-m-n-1200.log t1-cmr-m-n-1200.mtx + +distclean: clean + @-rm -f kerntest.cls *mtx.clo + @-rm -f krntst-v.tex + @-rm -f t1-ptm-bx-n-example.mtx t1-ptm-bx-n-example.pdf + @-rm -f t1-ptm-m-n-shortexample.pdf + @-rm -f t*19nc.fd 9ncr8?.tfm 9ncr8?.vf + @-rm -f t1-XXX-m-n.tex ts1-XXX-m-n.tex ot1-XXX-m-n.tex + @-rm -f t1-9nc-m-n-1.pdf t1-9nc-m-n-1.mtx + @-rm -f t1-9nc-m-n-2.pdf + @-rm -f t1-cmr-m-n-1200.dvi t1-cmr-m-n-1200.pdf + @-rm -f testschoolb-1.pdf testschoolb-2.pdf + +# --------------------------------------------------------------- + +tar: dist clean + echo Lege kerntest-$(VERSION).tar.gz an + -rm -f kerntest-$(VERSION).tar.gz + tar czCf .. kerntest-$(VERSION).tar.gz \ + $(SRCDIR)/README \ + $(SRCDIR)/ChangeLog \ + $(SRCDIR)/ToDo \ + $(SRCDIR)/Makefile \ + $(SRCDIR)/kerntest.dtx \ + $(SRCDIR)/kerntest.ins \ + $(SRCDIR)/kerntest.pdf \ + $(SRCDIR)/kerntest.xml \ + $(SRCDIR)/schoolb.map \ + $(SRCDIR)/schoolb1.tex \ + $(SRCDIR)/schoolb2.tex \ + $(SRCDIR)/t1-9nc-m-n-1.tex \ + $(SRCDIR)/t1-9nc-m-n-2.tex \ + $(SRCDIR)/t1-ptm-bx-n-example.tex \ + $(SRCDIR)/t1-ptm-m-n-shortexample.tex \ + $(SRCDIR)/t1-ptm-m-n.tex \ + $(SRCDIR)/t1-cmr-m-n-1200.tex \ + $(SRCDIR)/t1cmr-1200.fd \ + $(SRCDIR)/testschoolb.tex \ + +# --------------------------------------------------------------- + +texlive: all clean + @-rm -rf texmf + mkdir -p texmf/tex/latex/kerntest + mkdir -p texmf/doc/latex/kerntest + mkdir -p texmf/source/latex/kerntest + cp $(TEX) texmf/tex/latex/kerntest + cp $(DOC) texmf/doc/latex/kerntest + cp $(SOURCE) texmf/source/latex/kerntest + +# --------------------------------------------------------------- + +zip: texlive + -@rm -f kerntest-$(VERSION).zip + zip -r kerntest-$(VERSION).zip texmf + @-rm -r texmf/ + +# --------------------------------------------------------------- + +install: all + if [ ! -d $(INSTALLDIR) ]; then mkdir -p $(INSTALLDIR); fi + if [ ! -d $(DOCDIR) ]; then mkdir -p $(DOCDIR); fi + if [ ! -d $(SOURCEDIR) ]; then mkdir -p $(SOURCEDIR); fi + install -m644 $(TEX) $(INSTALLDIR) + install -m644 $(DOC) $(DOCDIR) + install -m644 $(SOURCE) $(SOURCEDIR) + texhash + +# --------------------------------------------------------------- + +testschoolb-2.pdf: c059013l.pfb c059013l.afm schoolb1.tex schoolb2.tex \ + t1-9nc-m-n-1.tex t1-9nc-m-n-2.tex Makefile testschoolb.tex \ + kerntest.cls + tex schoolb1 + pltotf 9ncr8r.pl + vptovf 9ncr8c.vpl + vptovf 9ncr8t.vpl + @-rm -f c059013l.mtx c059013l.pl 9ncr8?.mtx 9ncr8?.pl 9ncr8?.vpl +# + latex testschoolb + dvips -E -u +./schoolb.map -o testschoolb-1.ps testschoolb + epstopdf testschoolb-1.ps + @-rm -f testschoolb.dvi testschoolb-1.ps + @-rm -f testschoolb.aux testschoolb.log +# + latex t1-9nc-m-n-1 + latex t1-9nc-m-n-1 + latex t1-9nc-m-n-1 + dvips -E -u +./schoolb.map -o t1-9nc-m-n-1.ps t1-9nc-m-n-1 + epstopdf t1-9nc-m-n-1.ps + @-rm -f t1-9nc-m-n-1.dvi t1-9nc-m-n-1.ps + @-rm -f t1-9nc-m-n-1.aux t1-9nc-m-n-1.log +# + tex schoolb2 + pltotf 9ncr8r.pl + vptovf 9ncr8c.vpl + vptovf 9ncr8t.vpl + @-rm -f c059013l.mtx c059013l.pl 9ncr8?.mtx 9ncr8?.pl 9ncr8?.vpl +# + latex testschoolb + dvips -E -u +./schoolb.map -o testschoolb-2.ps testschoolb + epstopdf testschoolb-2.ps + @-rm -f testschoolb.dvi testschoolb-2.ps + @-rm -f testschoolb.aux testschoolb.log +# + latex t1-9nc-m-n-2 + latex t1-9nc-m-n-2 + latex t1-9nc-m-n-2 + dvips -E -u +./schoolb.map -o t1-9nc-m-n-2.ps t1-9nc-m-n-2 + epstopdf t1-9nc-m-n-2.ps + @-rm -f t1-9nc-m-n-2.dvi t1-9nc-m-n-2.ps + @-rm -f t1-9nc-m-n-2.aux t1-9nc-m-n-2.log + @-rm -f t1-9nc-m-n-2.mtx + +# --------------------------------------------------------------- + +kerntest.cls: kerntest.ins kerntest.dtx +kerntest.pdf: kerntest.ins kerntest.dtx t1-ptm-bx-n-example.pdf \ + t1-ptm-m-n-shortexample.pdf schoolb1.tex testschoolb-2.pdf + +# --------------------------------------------------------------- + diff --git a/Master/texmf-dist/source/latex/kerntest/kerntest.dtx b/Master/texmf-dist/source/latex/kerntest/kerntest.dtx new file mode 100644 index 00000000000..b233abca351 --- /dev/null +++ b/Master/texmf-dist/source/latex/kerntest/kerntest.dtx @@ -0,0 +1,5373 @@ +% \iffalse meta comment +% File: kerntest.dtx Copyright (C) 2004 Harald Harders +% \fi +% +% \iffalse +% +%<*driver> +\listfiles +\documentclass[ngerman,english,a4paper]{ltxdoc} +\usepackage[T1]{fontenc} +\usepackage[latin1]{inputenc} +\IfFileExists{fix-cm.sty}{\usepackage{fix-cm}}{} +\usepackage{longtable} +\usepackage{graphicx} +\let\origverbatim\verbatim +\let\endorigverbatim\endverbatim +\usepackage{verbatim} +\usepackage{babel} +\usepackage{calc} +\usepackage{url} +\IfFileExists{booktabs.sty}{\usepackage{booktabs}}{% + \GenericWarning{kerntest.dtx}{Package file booktabs.sty not + found. Documentation formatting will be poor}% + \def\toprule\hline + \def\midrule\hline + \def\bottomrule\hline +} +\IfFileExists{krntst-v.tex}{% + \input{krntst-v.tex} + \GetFileInfo{krntst-v.tex} +}{% + \ClassError{kerntest}{File krntst-v.tex not found, please run `latex + kerntest.ins' first.}{No additional help}% + \def\fileversion{\textbf{??}}% + \def\filedate{\textbf{??}}% +} +\title{The \texttt{kerntest} package} +\author{Harald Harders\\\texttt{h.harders@tu-bs.de}} +\date{Version \fileversion\ (\filedate), printed \today} +\makeatletter +\newlength\tempdima +\newlength\tempdimb +\renewenvironment{table}[1][]{% + \@float{table}[#1]% + \centering% + \setlength{\tempdima}{\abovecaptionskip}% + \setlength{\abovecaptionskip}{\belowcaptionskip}% + \setlength{\belowcaptionskip}{\tempdima}% +}{% + \end@float +} +\def\meta@font@select{\normalfont\itshape} +%% +\def\DescribeOpt{\leavevmode\@bsphack\begingroup\MakePrivateLetters + \Describe@Opt} +\def\Describe@Opt#1{\endgroup + \marginpar{\raggedleft\PrintDescribeOpt{#1}}% + \SpecialOptIndex{#1}\@esphack\ignorespaces} +\def\SpecialOptIndex#1{\@bsphack + \index{#1\actualchar{\protect\ttfamily#1} + (class option)\encapchar usage}% + \index{class options:\levelchar{\protect\ttfamily#1}\encapchar + usage}\@esphack} +\@ifundefined{PrintDescribeOpt} + {\def\PrintDescribeOpt#1{\strut \MacroFont #1\ }}{} +\@ifundefined{PrintOptName} + {\def\PrintOptName#1{\strut \MacroFont #1\ }}{} +%% +\makeatother +%% +\newenvironment{fontbox}{% + \begin{quote} + \usefont{T1}{ptm}{m}{n}\fontsize{25}{12}\selectfont + \fboxsep-0.5\fboxrule +}{% + \end{quote} + \ignorespacesafterend +} +\newcommand\timesfont[1]{{\usefont{T1}{ptm}{m}{n}#1}} +%% +\newcommand\getkern[2]{% + \settowidth\tempdima{#1#2}% + \settowidth\tempdimb{#1\kern0pt#2}% + \setlength\tempdima{\tempdima-\tempdimb-\fboxrule}% +} +%% +\EnableCrossrefs +\CodelineIndex +\DoNotIndex{\def,\edef,\let,\newcommand,\newenvironment,\newcounter} +\DoNotIndex{\setcounter,\space,\if,\else,\fi,\empty,\@empty,\ifx,\fi} +\DoNotIndex{\ifnum,\fi,\expandafter,\csname,\endcsname,\the} +\DoNotIndex{\MessageBreak,\message,\newlength,\newif,\xdef,\newcount} +\DoNotIndex{\begingroup,\endgroup,\,,\@tempcnta,\@tempdima,\advance} +\DoNotIndex{\ensuremath,\filedate,\fileversion,\docdate} +\DoNotIndex{\mathit,\mathrm,\mathsf,\nprt@tmp,\nprt@tmpnum,\relax} +\DoNotIndex{\protect,\renewcommand,\setlength,\settowidth,\stepcounter} +\DoNotIndex{\string} +\CodelineNumbered +\RecordChanges +\CheckSum{6031} +\begin{document} + \DocInput{kerntest.dtx} +\end{document} +% +% \fi +% +% \changes{1.00}{2004/04/01}{Total new implementation}% +% \changes{1.10}{2004/04/06}{Add option `writeall'}% +% \changes{1.11}{2004/04/06}{Added more literature to bibliography}% +% \changes{1.20}{2004/04/11}{Allow to give glyphs by number (decimal, +% hex, octal) or by PostScript name}% +% \changes{1.20}{2004/04/11}{Write glyph name to table}% +% \changes{1.20}{2004/04/11}{Find and complain inconsistent kerning +% data}% +% \changes{1.20}{2004/04/11}{Introduce glyph classes to set the +% kerning for similar glyph shapes by once}% +% \changes{1.20}{2004/04/11}{Reduce left margin}% +% \changes{1.30}{2004/04/12}{Add encodings OT1, T2A, T2B, and LY1}% +% \changes{1.30}{2004/04/12}{Template for OT1 encoding}% +% \changes{1.30}{2004/04/12}{Parameter-dependent encodings (for +% example with or without ligatures)}% +% \changes{1.30}{2004/04/12}{New option |designsize| for giving the +% design size of the font explicitely}% +% \changes{1.31}{2004/04/13}{Use \cs{setleftkerning} and +% \cs{setrightkerning} instead of writing every kerning pair}% +% \changes{1.32}{2004/04/14}{Allow to set relative kerning widths in +% glyph classes}% +% +% \maketitle +% \begin{abstract} +% \noindent +% This class makes it easy to generate tables that show many different +% kerning pairs of an arbitrary font, usable by \LaTeX. +% It shows the kerning values that are used by the the font by default. +% +% In addition, this class enables the user to alternate the kernings +% and to observe the results. +% Kerning pairs can be defined for groups of similar glyphs at once. +% Automatically, an |mtx| file is generated that can be loaded by +% |fontinst| to introduce the user-made kernings into the virtual font +% for \LaTeX. +% \end{abstract} +% +% \tableofcontents +% +% \section*{Copyright} +% Copyright 2004 Harald Harders. +% +% This program can be redistributed and/or modified under the terms +% of the LaTeX Project Public License Distributed from CTAN +% archives in directory macros/latex/base/lppl.txt; either +% version 1.3 of the License, or any later version. +% +% \section{Introduction} +% +% Every glyph of a font is surrounded by a bouding box. +% Have a look at these glyphs: +% \begin{fontbox} +% ^^A \fbox{\raisebox{0pt}[\fontdimen12\font][\fontdimen11\font]{A}} +% \fbox{A} \fbox{m} \fbox{f} +% \itshape\fbox{A} \fbox{m} \fbox{f} +% \end{fontbox} +% As can be seen in this example, the glyphs may extend the bounding +% box. +% +% Normally, one character is placed after the other by simply putting +% the bounding boxes directly after each other: +% \begin{fontbox} +% \fbox{A}\kern-\fboxrule +% \fbox{H}\kern-\fboxrule\fbox{V}\kern-\fboxrule +% \fbox{A}\kern-\fboxrule\fbox{m}\kern-\fboxrule +% \fbox{f}\kern-\fboxrule\fbox{T} +% +% \itshape +% \fbox{A}\kern-\fboxrule +% \fbox{H}\kern-\fboxrule\fbox{V}\kern-\fboxrule +% \fbox{A}\kern-\fboxrule\fbox{m}\kern-\fboxrule +% \fbox{f}\kern-\fboxrule\fbox{T} +% \end{fontbox} +% In most cases, this works great, but sometimes the distance between +% two glyphs is ugly then. +% Here, for instance, have a look at +% ``\timesfont{V\kern0pt A}'', ``\timesfont{f\kern0pt T}'', +% ``\timesfont{\itshape V\kern0pt A}'', and +% ``\timesfont{\itshape f\kern0pt T}''. +% To improve these cases, the bounding boxes are moved together or +% away from another, as shown in the next example. +% This is called kerning. +% To be able to do the kerning, the font contains a table of pairs of +% glyphs and the distance to move the second one. +% \begin{fontbox} +% \fbox{A}\getkern{A}{H}\kern\tempdima +% \fbox{H}\getkern{H}{V}\kern\tempdima +% \fbox{V}\getkern{V}{A}\kern\tempdima +% \fbox{A}\getkern{A}{m}\kern\tempdima +% \fbox{m}\getkern{m}{f}\kern\tempdima +% \fbox{f}\getkern{f}{T}\kern\tempdima +% \fbox{T} +% +% \itshape +% \fbox{A}\getkern{A}{H}\kern\tempdima +% \fbox{H}\getkern{H}{V}\kern\tempdima +% \fbox{V}\getkern{V}{A}\kern\tempdima +% \fbox{A}\getkern{A}{m}\kern\tempdima +% \fbox{m}\getkern{m}{f}\kern\tempdima +% \fbox{f}\getkern{f}{T}\kern\tempdima +% \fbox{T} +% \end{fontbox} +% What you see here is the original kerning of the Times Roman +% installed in your \TeX\ system. +% The V--A pairs are improved; but the f still touches the T which is +% not wanted. +% The Times Roman font misses this kerning pair. +% Better were this: +% \begin{fontbox} +% \fbox{A}\getkern{A}{H}\kern\tempdima +% \fbox{H}\getkern{H}{V}\kern\tempdima +% \fbox{V}\getkern{V}{A}\kern\tempdima +% \fbox{A}\getkern{A}{m}\kern\tempdima +% \fbox{m}\getkern{m}{f}\kern\tempdima +% \fbox{f}\kern0.06em +% \fbox{T} +% +% \itshape +% \fbox{A}\getkern{A}{H}\kern\tempdima +% \fbox{H}\getkern{H}{V}\kern\tempdima +% \fbox{V}\getkern{V}{A}\kern\tempdima +% \fbox{A}\getkern{A}{m}\kern\tempdima +% \fbox{m}\getkern{m}{f}\kern\tempdima +% \fbox{f}\kern0.07em +% \fbox{T} +% \end{fontbox} +% +% Most fonts are missing many of these kerning pairs that are +% necessary for a good typography. +% Especially if you are writing in a language other than English, many +% kernig pairs are missing. +% Have a look at this example with quotation marks used in German, +% with the original kerning of the Times: +% \begin{fontbox} +% \fbox{,,}\getkern{,,}{T}\kern\tempdima +% \fbox{T}\getkern{T}{A}\kern\tempdima +% \fbox{A}\getkern{A}{``}\kern\tempdima +% \fbox{``} +% \fbox{>>}\getkern{>>}{V}\kern\tempdima +% \fbox{V}\getkern{V}{a}\kern\tempdima +% \fbox{a}\getkern{a}{V}\kern\tempdima +% \fbox{V}\getkern{V}{<<}\kern\tempdima +% \fbox{<<} +% \end{fontbox} +% As you can see, there is no kerning at all. +% +% And here comes, what this class is intended to do: +% It is difficult to calculate the necessary kerning automatically. +% Thus, it can be helpful to generate some kerning pairs and to try +% different amounts of kernings. +% Compare the different kernings in this example (this time without +% the bounding boxes): +% \begin{fontbox} +% A`` +% A\kern-0.04em`` +% A\kern-0.08em`` +% A\kern-0.12em`` +% A\kern-0.16em`` +% A\kern-0.20em`` +% A\kern-0.24em`` +% A\kern-0.28em`` +% A\kern-0.32em`` +% A\kern-0.36em`` +% \end{fontbox} +% The first one is without kerning. +% The kerning in the last one ($-0.35\,\mathrm{em}$) is surely too +% much since both glyphs touch each other. +% It really isn't easy to find the ``perfect'' kerning. +% One remark here: It is worse to have a too tight kerning than too +% less kerning. Thus please do as little kerning as you think can work +% well. +% +% With the |kerntest| class, it is easy to try out different values. +% How this can be done is described in the next section. +% +% +% \section{Usage of the class} +% +% \subsection{Introduction} +% +% In the simplest case, you can use the package like this: +% \verbatiminput{t1-ptm-m-n-shortexample.tex} +% You have to define the font family to be tested in the optional +% argument of the \cs{documentclass} command. +% The syntax is |family=|\meta{font family}, while \meta{font +% family} is the typical abbreviation according to Karl Berry's name +% scheme~\cite{berry1999a}, e.g., |cmr| for Computer Modern Roman, +% |ptm| for Times Roman, |phv| for Helvetica, |pmnj| for Adobe Minion +% with old-style numbers, |pmnx| for Adobe Minion with expert +% characters. +% +% The options |extraname=shortexample| and |footer=false| are not so +% important and described later. +% +% \DescribeEnv{kerntable}% +% The kerning table is generated by the |kerntable| environment which +% is represented by a |longtable| environment internally. +% \DescribeMacro{\testkern}% +% Each line of this environment has to contain one \cs{testkern} +% command with five arguments: +% \begin{enumerate} +% \item The first one contains the name or character number of the +% left character in the table (see Fig.~\ref{fig:shortexample}). +% Which glyph corresponds to a given value depends on the used +% encoding, default is the cork encoding |T1|. +% The glyph can be specified by giving a decimal number (|0| to +% |255|), a hexadecimal number (|"0| to |"FF|), an octal +% number (|'0| to |'377|), or by giving the PostScript glyph +% name, e.g., |grave|, |guillemotright|, |A|, |Aring|. +% It does not work to give \LaTeX\ sequences as |<<|, +% |\guillemotright|, etc. +% \item The second argument gives the kerning of the characters +% defined in the first and in the third argument. +% The used unit are Postscript Type\,1 font units which have the +% length of 0.001\,em. +% It is not allowed to specify another unit. +% +% If the second argument is ``|-|'' the original kerning of the +% font is shown (first line of the example). +% +% If a value is given (second line) the original kerning is +% overwritten by the given value. +% Negative values reduce the distance of the glyphs, positive values +% increase it. +% \item The third argument specifies the second glyph. +% \item The fourth argument is the kerning between the second and the +% third glyph and works exactly as the second argument. +% \item The fifth argument specifies the third glyph. +% \end{enumerate} +% After the \cs{testkern} command, an arbitrary (but short) comment +% may be added. +% Often, it is good to write the name of the glyph here. +% With |t1-XXX-m-n.tex| and |ts1-XXX-m-n.tex|, two templates are given +% that contains all glyph names for the |T1| and |TS1| encodings. +% +% Each line in the |kerntable| environment (even the last one) has to +% end with a |\\| or \cs{tabularnewline}. +% +% The output of this file is shown in Fig.~\ref{fig:shortexample}. +% \begin{figure} +% \centering +% \fboxsep=1mm +% \makebox[\textwidth][c]{% +% \fbox{\includegraphics[scale=0.8]{t1-ptm-m-n-shortexample}}} +% \caption{Example for a part of a kerning table (explanations in the +% text)} +% \label{fig:shortexample} +% \end{figure} +% In the first column, the number of the middle character (argument +% |#3| of the \cs{testkern} command is listed, followed by the +% PostScript glyph name. +% In the third column, the combination of characters is printed with +% original kerning for both pairs, while the forth column shows the +% newly suggested kerning. +% In the fifth column, both variants are printed over each other (the +% old one grey, the new one black). +% The next two columns show the values of the two kerning pairs in +% Postscript font units (normally, 0.001\,em). +% If the user has not given a new kerning the original value is +% printed in grey. +% If the user has defined a new kerning, this new value is printed in +% black. +% If, in this case, the old kerning is unequal zero, it is printed in +% parentheses before the new value (second line of the example). +% The rest of each line are examples and comments. +% +% +% \subsection{Most features by example} +% +% The next example shows some more switches that can be defined by the +% user:\label{page:example} +% \verbatiminput{t1-ptm-bx-n-example.tex} +% Have a look at the results in Fig~\ref{fig:example} before the +% switches are explained. +% \begin{figure} +% \centering +% \fboxsep=1mm +% \makebox[\textwidth][c]{% +% \fbox{\includegraphics[scale=0.8]{t1-ptm-bx-n-example}}} +% \caption{Example for a part of a kerning table (explanations in the +% text). +% The labels marked with a star are described in +% Section~\ref{sec:advanced}.}% +% \label{fig:example} +% \end{figure} +% +% \DescribeMacro{\kernsetup}% +% All class options except |family| can either be given as class +% option in the optional argument of the \cs{documentclass} command or +% as argument of the \cs{kernsetup} command. +% The |family| class option has to be given in the \cs{documentclass} +% command. +% Here comes a list of all class options: +% \begin{description} +% \item [|encoding=|\meta{font encoding}:] +% \DescribeOpt{encoding}% +% Font encoding (default: |T1|). +% Currently, |OT1|, |T1|, |TS1|, |T2A|, |T2B|, and +% |LY1|\footnote{While the other encodings are generated starting +% from |.etx| files, the LY1 encoding has been extracted from +% |texnansi.enc|. Some glyphs may have incorrect names.} are +% supported. +% \item [|family=|\meta{font family}:] +% \DescribeOpt{family}% +% Abbreviation of the font-family name according to Karl Berry's +% scheme~\cite{berry1999a}. +% This option is mandatory in the optional argument of the +% \cs{documentclass} command. +% \item [|series=|\meta{font series}:] +% \DescribeOpt{series}% +% Abbreviation for the series of the font (default: |m|), e.g., |m| +% for medium, |sb| for semibold, |b| for bold, |bx| for bold +% extended. +% \item [|shape=|\meta{font shape}:] +% \DescribeOpt{shape}% +% Abbreviation for the font shape (default: |n|), e.g., |n| for +% upright, |it| for italic, |sl| for slanted, |sc| for small caps, +% |scit| for italic small caps. +% \item [|size=|\meta{font size}:] +% \DescribeOpt{size}% +% Size of the tested font (default: |17.28pt|) in arbitrary units. +% This sets the \cs{baselineskip} to 1.2 times the given value. +% The |size| option does not change the size of the legend text +% which is fixed to 10\,pt. +% \item [|baselineskip=|\meta{baselineskip}:] +% \DescribeOpt{baselineskip}% +% Sets the \cs{baselineskip} explicitly. +% To take effect, it has to be given after the option |size| +% (default: |1.2*17.28pt|). +% \item [|designsize=|\meta{design size}:] +% \DescribeOpt{designsize}% +% For calculating the kerning data, a PostScript font unit is used +% which is 1/1000 of the font's design size. +% Unfortunately, it is not possible to get this size reliably in +% \LaTeX. +% For most fonts, 1\,em corresponds to the design size. +% But in some cases, it is not true: +% \begin{enumerate} +% \item Some fonts have a different em length, for example, the +% Computer Modern fonts. +% Then, the size given by the option |size| corresponds to the +% design size, but 1\,em does not. +% \item If the font is scaled by the |.fd| file, 1\,em is also +% scaled and may correspond to the design size while the size +% given with |size| does not. +% \end{enumerate} +% Since in most cases, 1\,em is the correct design size, this is the +% default. +% If it is not, you can give the correct design size by using the +% option |designsize|, for example, |designsize=0.9em|, +% |designsize=17pt|. +% \item [|example=|\meta{text}:] +% \DescribeOpt{example}% +% Alters the example text for columns 5 and 6 (default: |example|). +% \item [|papersize=|\meta{papersize}] +% \DescribeOpt{papersize}% +% Tells the |geometry| package which pagesize to use. +% Supported are all pagesizes handled by |geometry|, e.g., +% |a4paper|, |letter|, |legal| (no default). +% \item [|extraname=|\meta{fontname extension}:] +% \DescribeOpt{extraname}% +% Normally, the heading of each page of output as well as the +% filename of the |mtx| file are generated automatically by appending +% encoding, font family, font series, and font shape, e.g., +% |t1-cmr-m-n.mtx|. +% If you use this option, |-|\meta{fontname extension} is added both +% to the headings and to the filename. +% For example, |extraname=test1| leads to |t1-cmr-m-n-test1.mtx|. +% This is useful if you want to generate different |mtx| files that +% normally got the same name.\footnote{This is why the first example +% used this option.} +% \item [|color=|{\ensuremath\langle}|true|/|false|{\ensuremath\rangle}:] +% \DescribeOpt{color}% +% Switches on color output (default: |false|). +% New values are printed in red, while the old ones are printed +% black instead of black/grey. +% \item [|copyquotation=|{\ensuremath +%\langle}|true|/|false|{\ensuremath\rangle}:] +% \DescribeOpt{copyquotation}% +% If a kerning pair containing a double quotation mark, including +% guillemots, is set, write also the corresponding single one to the +% |mtx| file. +% \item [|writeall=|{\ensuremath +%\langle}|true|/|false|{\ensuremath\rangle}:] +% \DescribeOpt{writeall}% +% Write also the original kerning data to the |mtx| file. +% \item [|footer=|{\ensuremath +%\langle}|true|/|false|{\ensuremath\rangle}:] +% \DescribeOpt{footer}% +% Switch on or off the footline.\footnote{This option seems only to +% work in the \cs{documentclass} options. Don't ask me why.} +% \end{description} +% +% It has been mentioned some times that an |mtx| file is generated +% automatically. +% |mtx| files contain the font metrics during the fontinst process. +% Amongst other things, they contain the kerning data. +% For example, the |mtx| file generated by the last example looks like this: +% \verbatiminput{t1-ptm-bx-n-example.mtx} +% Only new or changed kerning values are inserted (e.g., +% |quotedblleft|--|A| is not included). +% +% \DescribeMacro{\mtxcomment} +% Using the \cs{mtxcomment}\marg{comment} command, you can write the +% given argument as comment into the |mtx| file. +% +% +% \subsection{Encoding-dependent parameters}% +% +% Some encodings may have slight differences depending on the used +% shape. +% For example, typewriter fonts may have ligatures but they are +% normally not used. +% Thus, the encodings do not have some glyphs when used with +% typewriter fonts (e.g., |ff|, |fi|, |ffi|, |fl|, |ffl| are +% missing). +% +% \DescribeMacro{\encodingsetup}% +% The class provides an interface to give the necessary parameters to +% these encodings. +% Use the command \cs{encodingsetup} that takes a comma-separated list +% of options as argument (as \cs{kernsetup}). +% +% Here are the encoding-specific options: +% \begin{description} +% \item [T1 encoding:]\strut +% \begin{description} +% \item [|ligaturing=|\meta{number}:] +% \DescribeOpt{ligaturing}% +% Level of how many ligatures are used (|-2|, |-1|, |0|, or |1|, +% default |1|). +% Here is the description from |t1.etx| (version 1.923, 2002/10/29): +% \begin{enumerate} +% \item[$1$] +% All the standard ligature glyphs (\texttt{fi}, \texttt{fl}, +% \texttt{ff}, \texttt{ffi}, \texttt{ffl}, \texttt{IJ}, and +% \texttt{ij}) are included and the normal ligaturing instructions +% (those for the \texttt{f}-ligatures) are included. +% \item[$0$] +% All the standard ligature glyphs are included, but none of their +% ligaturing instructions. +% \item[$-1$] +% The seven slots normally used for ligatures are left empty. +% \item[$-2$] +% The seven slots normally used for ligatures are left empty, as +% are the slots normally used for \texttt{c}, \texttt{f}, +% \texttt{s}, \texttt{i}, and \texttt{I}. +% \end{enumerate} +% \end{description} +% \item [OT1 encoding:]\strut +% \begin{description} +% \item [|ligaturing=|\meta{number}:] +% \DescribeOpt{ligaturing}% +% Level of how many ligatures are used (|0|, |1|, or |2|, +% default |2|). +% Please refer to |ot1.etx| for more details. +% \item [|italicizing=|{\ensuremath +%\langle}|true|/|false|{\ensuremath\rangle}:] +% \DescribeOpt{italicizing}% +% Use |dollar| when |false| and |sterling| when |true| (default: +% |false|). +% \end{description} +% \end{description} +% +% +% \subsection{Advanced features}% +% \label{sec:advanced}% +% +% In most fonts, different glyphs need the same kerning because their +% left or right edges are very similar, for example, the kerning on +% the left sides of +% \symbol{66}, \symbol{68}, \symbol{132}, \symbol{208}, \symbol{69}, +% \symbol{133}, \symbol{134}, \symbol{200}, \symbol{201}, \symbol{202}, +% \symbol{203}, \symbol{070}, \symbol{072}, \symbol{073}, +% \symbol{157}, \symbol{204}, \symbol{205}, \symbol{206}, +% \symbol{207}, \symbol{156}, \symbol{074}, \symbol{075}, +% \symbol{076}, \symbol{136}, \symbol{137}, \symbol{138}, +% \symbol{078}, \symbol{139}, \symbol{140}, \symbol{209}, +% \symbol{080}, \symbol{082}, \symbol{143}, \symbol{144}, +% \symbol{141}, and \symbol{222} +% should be equal. +% +% \DescribeMacro{\defglyphclass}% +% \DescribeMacro{\newglyphclass}% +% \DescribeMacro{\renewglyphclass}% +% \DescribeMacro{\provideglyphclass}% +% This can be reached by using so called ``glyph classes''. +% A new glyph class can be defined using one of the commands +% \cs{defglyphclass}, \cs{newglyphclass}, \cs{renewglyphclass}, and +% \cs{provideglyphclass}. +% The differences are similar to these of the commands +% \cs{newcommand}, \cs{renewcommand}, etc. +% They all have the syntax +% \cs{defglyphclass}\marg{side}\marg{name}\marg{glyphlist}. +% \meta{side} specifies the side of the glyphs on which the kerning +% shall be equal (|left| or |right|). +% The parameter \meta{name} specifies the name of the glyph list, the +% list above could be named ``|H|'' because they all have a similar +% shape as the H. +% The third argument, \meta{glyphlist}, contains a comma-separated +% list of all glyphs (PostScript names or numbers---as usual). +% For example, the above list is build by this command:\footnote{Due +% to a problem between the |ltxdoc| and |verbatim| packages, the +% \texttt{\%} signs appear at the beginning of each line. Just +% delete them in mind.} +%\begin{verbatim} +%\newglyphclass{left}{H}{B,D,Dcaron,Eth,E,Ecaron,Eogonek,Egrave,% +% Eacute,Ecircumflex,Edieresis,F,H,I,Idotaccent,Igrave,Iacute,% +% Icircumflex,Idieresis,IJ,J,K,L,Lacute,Lcaron,Lslash,N,Nacute,% +% Ncaron,Ntilde,P,R,Racute,Rcaron,Ng,Thorn}\end{verbatim} +% +% You can specify arbitrary glyph classes. +% If you, for example, use the |copyquotation| option glyph classes +% are made containing one double and one single quotation mark each. +% +% When you write a kerning table using the |kerntable| environment and +% it happens that you change the kerning for a glyph that is member of +% a glyph class, the kernings for all other glyphs of the same glyph +% class are automatically changed on the specific side. +% This can be seen in the example on Page~\pageref{page:example} and +% in Figure~\ref{fig:example}: +% +% |period| and |comma| build a glyph pair on both sides. +% In the first line of the table, left and right kerning between the +% period and the quotation marks are changed by the user. +% The kerning between the comma and quotation marks is then set +% automatically; the user does not have to specify them again (the +% kerning data contain a simple |-| in the second line). +% If you specify the same value explicitly, a warning is generated. +% If you specify conflicting values, the programme generates an error +% message (not shown). +% +% Automatically generated kerning pairs are marked by $\ast$ behind +% the value (as can be seen in the second and 12th line of the +% example). +% Repeated values are marked by $^\dagger$. +% +% There is one shortcoming: +% If you don't specify the kerning for a glyph class at the first +% occurance of this glyph, the correct kerning data are not shown for +% the occurances before the position you have specified the kerning. +% In the example, the kerning between the members of the glyph class +% ``A'' (A, \"A, and \AA) and the right German quotation mark +% (\textquotedblleft), is not specified for the first char of the +% glyph class, \"A, but for the second one, A. +% Thus, the kerning of $-150$ is shown for ``A'' and for ``\AA'', but +% not for ``\"A''. +% But nevertheless, the kerning data written to the |mtx| files are +% correct. +% +% All glyphs, given by \cs{defglyphclass} get the same kerning by +% default. +% You can specify different scale factors by appending +% |[|\meta{scale}|]| to each glyph name; while a factor of |1000| is +% the default and means ``the same kerningn width''. +% +% For example, +%\begin{verbatim} +%\defglyphclass{right}{A}{A,Aring[800],Adieresis[1200],Abreve}\end{verbatim} +% defines a glyph class containing ``A'', ``\AA'', ``\"A'', and ``\u A''. +% All kernings on the right side of ``\AA'' have a width of 80\,%\ of +% these ``A'' has. +% ``\"A'' is kerned 120\,\% of ``A''. +% ``\u A'' is again kerned as ``A''. +% +% You can also specify a different scaling for the first glyph in the +% glyph class. +% But then, all values are scaled in order to reach a factor of |1000| +% for the first entry. +% For example, +%\begin{verbatim} +%\defglyphclass{right}{A}{A[500],Aring[400],Adieresis[600],Abreve[500]}\end{verbatim} +% is identical to the example above. +% +% The effect of scaled kernings can be seen in the example on +% Page~\pageref{page:example} and in Figure~\ref{fig:example} where +% ``\u A'' has half the scaling of ``A'' and ``\AA''. +% +% If two glyphs with scalings different from |1000| meet each other +% both scaling factors are multiplicated. +% +% There are some interesting commands to handle these glyph classes. +% Please have a look in Section~\ref{sec:glyphclasses} for their +% description. +% +% +% \section{Configuration file} +% +% If you are too lazy to put the same options into every source file +% you may write all options except |family| into the configuration +% file |kerntest.cfg| and put it into the \LaTeX\ path. +% If it is present, it is loaded automatically. +% +% +% +% \section{Kerning pairs that are often missing} +% +% This section shows some kerning pairs that are often missing, even +% in expensive fonts. +% This problem arises since most fonts are merely designed for the +% English language. +% +% \subsection{Character combinations} +% +% Some glyphs need a kerning to many other glyphs, including ``A'', +% ``T'', ``V'', ``W'', and ``Y''. +% For the ordinary lowercase letters, these kernings are included in +% most fonts (if the lowercase letter is on the right of the capital). +% But often, glyphs of other Languages than English are forgotten, +% e.g., ``T\c c'', ``V\'e'', etc. +% But you may not simply copy all kernings of, for instance, ``Ta'' to +% ``T\"a'', ``T\'a'', ``T\aa'', ``T\c a'' etc. +% Often, these glyphs have parts that force the kerning to be reduced +% or even deleted. +% +% Most character pairs with the uppercase letters (``A'', ``T'', +% ``V'', ``W'', ``Y'') after a lowercase letters are not kerned in the +% fonts. +% In most cases, this should not be a problem because these +% combinations are never printed. (Nowadays, its getting more and more +% important to have these kernings since it is a fashion to use +% uppercase letters within words, e.g., ``ServicePoint''.\footnote{The +% German railway company really uses this term!}) +% But some combinations really should be kerned: ``eV'' +% (electronvolt), ``mV'' (millivolt). +% +% \subsection{Quotation marks} +% +% Most fonts don't provide kerning for quotation marks other than the +% English ones. +% In English, ``Hello'' is used (``66--99''). +% French uses << and >>: <>. +% In German, the three possibilities ,,Hallo`` (``99--66''), +% >>Hallo<<, and >>Hallo<< are used. +% In Italian, <> or ``Ciao,, are possible. +% Swedish uses >>Hi>> or ''Hi''~\cite{forssman2002a}. +% For all non-English possibilities, most fonts have no kerning +% information. +% Thus, you should generate five tables for every font, hopefully +% containing all possibilities (\char019H\char020, +% \char020H\char019, \char016H\char017, \char018H\char016, +% \char017H\char018): +% |\testkern{019}{-}{|\meta{glyph}|}{-}{020}|, +% |\testkern{020}{-}{|\meta{glyph}|}{-}{019}|, +% |\testkern{016}{-}{|\meta{glyph}|}{-}{017}|, +% |\testkern{018}{-}{|\meta{glyph}|}{-}{016}|, +% |\testkern{017}{-}{|\meta{glyph}|}{-}{018}|, +% where \meta{glyph} stands for all 256 glyphs contained in a T1 +% encoded font. +% +% All problems mentioned for the double quotation marks apply also for +% their single variants (\glq, \grq, ', \flq, and \frq). +% In most cases, they need the same kerning as their double +% counterparts. +% +% There are two templates enclosed to build these kerning tables: +% |t1-XXX-m-n.tex| and |ts1-XXX-m-n.tex|. +% Hopefully, the names tell you which one to use. +% They contain some comments that should help to use them. +% +% One (repeated) remark: +% Please don't overdo the kerning if you adjust it. +% In most cases, good is less than you think on first sight. +% You can also orientate on predefined kernings. +% For example, the kerning for A`` should be similar to A''. +% +% But you are still not save to get the correct kerning when your font +% knows them. +% This is due to the fact that there are multiple possibilities to +% access the quotation marks. +% For example, << can be produced by |<<|, \cs{guillemotleft}, and +% even by \cs{symbol\{19\}} (if you are using T1 encoding). +% If you use |inputenc.sty| you may use the characters directly, +% e.g.,~|«|. +% And after loading |babel.sty|, you can use \cs{flqq} and when writing +% German |"<|. +% +% These possibilities are not equivalent. +% +% \begin{sloppypar} +% The direct commands \cs{textquotedblleft}, \cs{textquotedblright}, +% \cs{quotedblbase}, \cs{guillemotleft}, \cs{guillemotright}, +% \cs{textquoteleft}, \cs{textquoteright}, \cs{quotesinglbase}, +% \cs{guilsinglleft}, and \cs{guilsinglright} work properly; they kern +% on their left and their right side. +% \end{sloppypar} +% The directly written quotation marks (|«|, |»|, etc.) also work +% correctly because the corresponding encoding file (e.g., +% |latin1.def|) translates them to the direct commands. +% +% The ligatures |``| and |''| seem also to work correctly. +% But the ligature |,,| kerns correctly on its right side, but on its +% left side, it kerns as a comma. +% This may also be correct but it needn't be always the case. +% |<<| and |>>| do not kern at all on their left side.\footnote{I +% believe they kern as |<| reps.\ |>|. But these characters don't +% have any kerning information in most cases.} +% +% Looking at the |babel| commands, only \cs{grqq} and \cs{grq} surely +% work correct. +% The others (\cs{glqq}, \cs{glq}, \cs{flqq}, \cs{flq}, \cs{frqq}, +% \cs{frq}) are defined differently and thus do not guarantee to kern +% correctly. +% On 2003/04/01, I have posted a bug report. +% Let's see what happens. +% +% The |babel| shortcuts |"`|, |"'|, |"<|, and |">| work as good as the +% corresponding commands. +% +% If you want a correct behaviour of all |babel| quotation marks, just +% copy the definition of \cs{grqq} (it contains of three command +% definitions!) from |babel.def| into your code and change it +% according to produce the other quotation marks. +% +% +% \section{An example of how to optimize a font} +% +% In this section, a very simple example is shown how to install a +% single font shape with fontinst~\cite{fontinst1998a} and how to +% change kernings for it. +% If you really want to understand what happens read the fontinst +% manual~\cite{fontinst1998a}, ``\TeX\ Unbound'' by Alan +% Hoenig~\cite{hoenig1998a}, or ``The Font Installation Guide'' by +% Philipp Lehman~\cite{lehman2003a}. +% +% Ghostscript contains the font ``Century Schoolbook~L Roman'' which +% is shipped as files |c059013l.afm| and |c059013l.pfb|. +% Please copy these files into a temporary directory. +% +% According to Karl Berry's scheme, the fontname is |uncr8a|. +% But this font is already prepared on most \TeX\ systems. +% Thus we take the fontname |9ncr8a| here. +% This will be the name for the result file. +% +% Then, run \TeX\ (not \LaTeX) on the script |schoolb1.tex| which does +% most work to install a new font: +% \verbatiminput{schoolb1.tex} +% This run creates some files with the extensions |.pl| and |.vpl|. +% They have to be converted to |tfm| and |vf| files as follows: +% \verbatiminput{convert.sh} +% Now, you can delete the temporary files with the extensions |.mtx|, +% |.pl|, and |.vpl|. +% +% The new font is ready for use with \LaTeX, now (only for T1 and TS1 +% encoding, OT1 encoding has been left out). +% Just run \LaTeX\ on the test file |testschoolb.tex|. +% But you are not yet able to use dvips or \textsc{pdf}\LaTeX\ +% because they need a |map| file. +% The corresponding one, |schoolb.map| looks like this: +% \verbatiminput{schoolb.map} +% With help of this map file, the |dvi| file can be converted to +% Postscript using dvips: +% |dvips -u +./schoolb.map -o testeschoolb-1.ps testschoolb| +% Unfortunately, you cannot use \textsc{pdf}\LaTeX\ without adding the +% contents of |schoolb.map| to the global |map| file. +% +% When viewing the result in |testschoolb-1.ps| +% (Fig.~\ref{fig:centuryschool1}), you see that this specific font +% already has most kernings that are missing in other fonts. +% \begin{figure} +% \centering +% \fboxsep=1mm +% \makebox[\textwidth][c]{% +% \fbox{\includegraphics[scale=1.0]{testschoolb-1}}} +% \caption{Font example for Century Schoolbook L with original kerning} +% \label{fig:centuryschool1} +% \end{figure} +% The only really forgotten kernings are A``, A`, \u A``, and +% \quotesinglbase V. +% +% Emagine that many kernings were unsatisfactory. +% Then, we generate a kerning table containing the glyph combinations +% we do not like: +% \verbatiminput{t1-9nc-m-n-1.tex} +% \begin{figure} +% \centering +% \fboxsep=1mm +% \makebox[\textwidth][c]{% +% \fbox{\includegraphics[scale=0.8]{t1-9nc-m-n-1}}} +% \caption{Kerning table for Century Schoolbook L} +% \label{fig:centuryschool1-table} +% \end{figure} +% This leads to the output shown in +% Fig.~\ref{fig:centuryschool1-table} and to the |mtx| file +% |t1-9nc-m-n-1.mtx|: +% \verbatiminput{t1-9nc-m-n-1.mtx} +% Using this file, you can repeat the |fontinst| run with a slightly +% changed script |schoolb2.tex|: +% \verbatiminput{schoolb2.tex} +% The only change amongst |schoolb1.tex| is the added entry +% |t1-9nc-m-n-1,| at the beginning of the second argument of the +% \cs{installfont\{9ncr8t\}} command. +% This includes the new kernings into the generated font. +% After repeating also the |pltotf| and |vptovf| calls, you can use +% the font with the new kernings. +% Running \LaTeX\ and dvips again on |testschoolb.tex| gives the +% output of Fig.~\ref{fig:centuryschool2}. +% \begin{figure} +% \centering +% \fboxsep=1mm +% \makebox[\textwidth][c]{% +% \fbox{\includegraphics[scale=1.0]{testschoolb-1}}}\\[\medskipamount] +% \makebox[\textwidth][c]{% +% \fbox{\includegraphics[scale=1.0]{testschoolb-2}}} +% \caption{Font example for Century Schoolbook L with original (top) +% and modified (bottom) kerning. +% The kerning is much too strong. +% Here, it only shows the effect of altering the kerning.} +% \label{fig:centuryschool2} +% \end{figure} +% Here, the kerning values are much too strong. +% The only aim of this was to show a clear difference between original +% and modified kerning. +% Have a look at the \u A kernings. +% They have been set to be half as large as the A kernings on both +% sides. +% +% The last thing to do is to install the font files into the +% corresponding paths of your \TeX\ distribution and to append the map +% information to the global map files (normally by using |updmap|). +% +% +% \begin{thebibliography}{9} +% +% \newcommand\ctanurl[1]{\url{ftp://ftp.dante.de/tex-archive/#1}}% +% +% \bibitem{berry1999a} +% Karl Berry. +% \newblock Fontname, May 2003. +% \newblock \ctanurl{info/fontname/}. +% +% \bibitem{forssman2002a} +% Friedrich Forssman, Ralf de Jong. +% \newblock Detailtypografie, Verlag Hermann Schmidt, Mainz, Germany, +% 2002. +% +% \bibitem{hoenig1998a} +% Alan Hoenig. +% \newblock \TeX\ Unbound---\LaTeX\ \&\ \TeX\ Strategies for Fonts, +% Graphics, \&\ More, Oxford University Press, 1998. +% +% \bibitem{fontinst1998a} +% Alan Jeffry, Rowland McDonnell. +% \newblock fontinst---Font installation software for \TeX, June 1998. +% \newblock \ctanurl{fonts/utilities/fontinst/}. +% +% \bibitem{lehman2003a} +% Philipp Lehman. +% \newblock The Font Installation Guide, August 2003. +% \newblock \ctanurl{info/Type1fonts/fontinstallationguide.pdf}. +% +%\end{thebibliography} +% +% \StopEventually{\PrintChanges \PrintIndex} +% +% \section{The implementation} +% +% Heading of all files. +% \begin{macrocode} +%\ProvidesClass{kerntest} +%\ProvidesFile{t1mtx.clo} +%\ProvidesFile{ts1mtx.clo} +%\ProvidesFile{ot1mtx.clo} +%\ProvidesFile{t2amtx.clo} +%\ProvidesFile{t2bmtx.clo} +%\ProvidesFile{ly1mtx.clo} +%\ProvidesFile{krntst-v.tex} +% [2004/04/14 v1.32 Generate kerning tables] +% \end{macrocode} +% +% \subsection{Class file} +% +% Use a standard class as base. +% \begin{macrocode} +%<*class> +\LoadClass[10pt]{article} +% \end{macrocode} +% Use most of the space on the paper. +% \begin{macrocode} +\RequirePackage[top=18mm,left=15mm,right=15mm,bottom=20mm]{geometry} +% \end{macrocode} +% \changes{1.32}{2004/04/14}{Do not scale Helvetica by default because +% this breaks testing Helvetica}% +% Font for the legends. +% \begin{macrocode} +\renewcommand*\familydefault{\sfdefault} +\RequirePackage{helvet} +% \end{macrocode} +% More required packages. +% \begin{macrocode} +\RequirePackage{calc} +\RequirePackage{longtable} +\RequirePackage{array} +\RequirePackage{color} +\RequirePackage{ifthen} +\RequirePackage{keyval} +% \end{macrocode} +% Layout settings. +% \begin{macrocode} +\pagestyle{myheadings} +\def\@oddfoot{Kerning data, marked with $\ast$, are automatically reused + from values given before. + Repeated values are marked by $\dagger$.\hfill} +\def\@evenfoot{\@oddfoot} +\setlength{\parindent}{0mm} +% \end{macrocode} +% Declare lengths for the font size and the baselineskip. +% \begin{macrocode} +\newlength\krntst@size +\newlength\krntst@baselineskip +% \end{macrocode} +% Set the default values for the class options. +% \begin{macrocode} +\def\krntst@encoding{T1} +\def\krntst@series{m} +\def\krntst@shape{n} +\setlength\krntst@size{17.28pt} +\setlength\krntst@baselineskip{1.2\krntst@size} +\def\krntst@example{example} +\def\krntst@extraname{} +\definecolor{oldcolor}{gray}{0.5} +\definecolor{newcolor}{gray}{0} +\newboolean{krntst@writeall} +% \end{macrocode} +% The design size is given as command rather than as length because it +% shall not be calculated to a real length (in pt), but it shall scale +% with the chosen font. +% \begin{macrocode} +\newcommand\krntst@designsize{1em} +% \end{macrocode} +% Process the class options using the |keyval| package. +% \begin{macrocode} +\def\ProcessOptionsWithKV#1{% + \let\@tempc\relax + \let\KVo@tempa\@empty + \edef\KVo@tempa{% + \noexpand\setkeys{#1}{% + \@ptionlist{\@currname.\@currext}% + }% + }% + \KVo@tempa + \let\CurrentOption\@empty +} +% \end{macrocode} +% Define the keys for the class options and the \cs{kernsetup} +% command. +% \begin{macrocode} +\define@key{krntst}{encoding}{\def\krntst@encoding{#1}} +\define@key{krntst}{family}{\def\krntst@family{#1}} +\define@key{krntst}{series}{\def\krntst@series{#1}} +\define@key{krntst}{shape}{\def\krntst@shape{#1}} +\define@key{krntst}{size}{% + \setlength\krntst@size{#1}% + \setlength\krntst@baselineskip{1.2\krntst@size}% +} +\define@key{krntst}{baselineskip}{\setlength\krntst@baselineskip{#1}} +\define@key{krntst}{designsize}{\def\krntst@designsize{#1}}% +\define@key{krntst}{example}{\def\krntst@example{#1}} +\define@key{krntst}{papersize}{\geometry{#1}} +\define@key{krntst}{extraname}{\def\krntst@extraname{-#1}} +\define@key{krntst}{color}[true]{% + \csname if#1\endcsname + \definecolor{oldcolor}{gray}{0}% + \definecolor{newcolor}{rgb}{1,0,0}% + \else + \definecolor{oldcolor}{gray}{0.5}% + \definecolor{newcolor}{gray}{0}% + \fi +} +% \end{macrocode} +% Do the copying of quotation marks by introducing glyph classes. +% \begin{macrocode} +\define@key{krntst}{copyquotation}[true]{% + \csname if#1\endcsname + \newglyphclass{left}{leftguillemots}{guillemotleft,guilsinglleft}% + \newglyphclass{right}{leftguillemots}{guillemotleft,guilsinglleft}% + \newglyphclass{left}{rightguillemots}{guillemotright,guilsinglright}% + \newglyphclass{right}{rightguillemots}{guillemotright,guilsinglright}% + \newglyphclass{left}{leftquotes}{quotedblleft,quoteleft}% + \newglyphclass{right}{leftquotes}{quotedblleft,quoteleft}% + \newglyphclass{left}{rightquotes}{quotedblright,quoteright}% + \newglyphclass{right}{rightquotes}{quotedblright,quoteright}% + \newglyphclass{left}{basequotes}{quotedblbase,quotesinglbase}% + \newglyphclass{right}{basequotes}{quotedblbase,quotesinglbase}% + \fi +} +\define@key{krntst}{writeall}[true]{% + \setboolean{krntst@writeall}{#1}% + \ClassWarningNoLine{kerntest}{You are writing the new and the + original kerning data\MessageBreak + to the mtx file (option `writeall'). Normally, it is\MessageBreak + not necessary to write original data}% +} +\define@key{krntst}{footer}[true]{% + \csname if#1\endcsname + \else + \def\@oddfoot{}% + \def\@evenfoot{\@oddfoot}% + \fi +} +% \end{macrocode} +% \begin{macro}{\kernsetup} +% Define the macro \cs{kernsetup} and make it available only in the +% preamble. +% \begin{macrocode} +\newcommand\kernsetup{\setkeys{krntst}} +\@onlypreamble\kernsetup +% \end{macrocode} +% \end{macro} +% \changes{1.10}{2004/04/06}{Load configuration file if available}% +% Read in the configuration file if available. +% Do it before processing the options to allow the options to +% overwrite the configuration file entries. +% \begin{macrocode} +\AtEndOfClass{% + \InputIfFileExists{kerntest.cfg}{% + \message{Configuration file `kerntest.cfg' loaded.}% + }{% + \message{No configuration file `kerntest.cfg' found.}% + } +% \end{macrocode} +% Now, process the class options. +% \begin{macrocode} + \ProcessOptionsWithKV{krntst} +% \end{macrocode} +% This has to do something with a problem in |keyval.sty|. +% I do not really know what it does exactly. +% \begin{macrocode} + \let\@unprocessedoptions\relax +} +% \end{macrocode} +% Generate an error message if the class option |family| has not been +% given in the \cs{documentclass} command. +% \begin{macrocode} +\ifx\krntst@family\relax + \ClassError{kerntest}{Class option family not or incorrect + given\@gobble}{% + You have to specify the font family by using the + class\MessageBreak + option family=}% + \stop +\fi +% \end{macrocode} +% Redefine the |family| option to be unusable in the \cs{kernsetup} +% command. +% \begin{macrocode} +\AtEndOfClass{% + \define@key{krntst}{family}{% + \ClassError{kerntest}{Option `family' used outside + \string\documentclass\space command}{% + The option `family=' has to be specified in the + optional argument\MessageBreak + of the \string\documentclass\space command.}% + } +} +% \end{macrocode} +% \begin{macro}{\mtxcomment} +% Define a command that writes a comment to the |mtx| file. +% \begin{macrocode} +\newcommand\mtxcomment[1]{% + \protected@write\mtxfile{}{\@percentchar\space #1}% +} +% \end{macrocode} +% \end{macro} +% Define a command that is used to access the font for the legends. +% \begin{macrocode} +\newcommand\krntst@helpfont{\normalfont\normalsize} +% \end{macrocode} +% An internal counter that stores the slot of a glyph. +% \begin{macrocode} +\newcounter{@glyphslot}% +% \end{macrocode} +% The following commands have to be done at \cs{begin\{document\}} to +% ensure that all \cs{kernsetup} calls have been made before. +% \begin{macrocode} +\AtBeginDocument{% +% \end{macrocode} +% Load all used encodings and |T1| for the legends. +% If |T1| is used, it is loaded twice; it does not seem to be bad. +% \begin{macrocode} + \RequirePackage[\krntst@encoding,T1]{fontenc} +% \end{macrocode} +% Load the file that provides the Postscript glyph names. +% The trick to make it lowercase ist stolen from the |fontenc| +% package. +% \begin{macrocode} + \edef\reserved@f{% + \lowercase{\def\noexpand\reserved@f{\krntst@encoding mtx.clo}}}% + \reserved@f + \InputIfFileExists\reserved@f{}{% + \ClassWarningNoLine{kerntest}{Postscript name file `\reserved@f' + not found.\MessageBreak + The kerning table will be okay, but the generated mtx file will + not be usable}% + \newcommand\getpsname[1]{unknown character `##1'}% + }% +% \end{macrocode} +% \changes{1.32}{2004/04/14}{Direct access on glyph names instead of +% parsing \cs{getpsname}}% +% Generate macros of the form \cs{slotnumber@glyph@\meta{glyphname}} +% that return the slot number for each glyph. +% This is faster than parsing \cs{getpsname} for the searched glyph +% (on the cost of memory). +% \begin{macrocode} + \setcounter{@glyphslot}{0}% + \whiledo{\the\c@@glyphslot<256}{% + \expandafter\edef + \csname slotnumber@glyph@\getpsname{\the\c@@glyphslot}\endcsname{% + \the\c@@glyphslot}% + \stepcounter{@glyphslot}% + }% +% \end{macrocode} +% Initialise some font-specific things. +% This is done in a group to save the normal legend font outside the +% kerning table. +% \begin{macrocode} + \begingroup +% \end{macrocode} +% Switch to the font that shall be tested to see if the desired font +% size is possible etc. +% \begin{macrocode} + \usefont{\krntst@encoding}{\krntst@family}{\krntst@series}{\krntst@shape}% + \fontsize{\krntst@size}{\krntst@baselineskip}\selectfont% +% \end{macrocode} +% Set the Postscript font unit to 0.001 of the design size which is +% 1\,em, normally. +% \begin{macrocode} + \psunit=\krntst@designsize\relax + \global\psunit=0.001\psunit +% \end{macrocode} +% Give some feedback. +% \begin{macrocode} + \typeout{Requested: \krntst@encoding-\krntst@family-% + \krntst@series-\krntst@shape, size \the\krntst@size}% + \typeout{Using:\space\space\space\space\space \f@encoding-\f@family-% + \f@series-\f@shape, size \f@size pt}% + \expandafter\ifdim\the\krntst@size=\f@size pt\relax + \else + \ClassWarningNoLine{kerntest}{Using different font size than + requested}% + \fi + \setlength{\@tempdima}{\krntst@designsize}% + \typeout{Postscript font unit for design size \the\@tempdima: + \the\psunit}% + \expandafter\ifdim\the\@tempdima=\f@size pt\relax + \else + \ClassWarningNoLine{kerntest}{The design size (\the\@tempdima, + 1em by default,\MessageBreak + or given value from option `designsize') of the + font\MessageBreak + is not equal to the LaTeX font size (\f@size pt).\MessageBreak + This can have two reasons:\MessageBreak + 1. The font does not define 1em to be the design + size\MessageBreak + \space\space\space (for example, Computer + Modern).\MessageBreak + 2. The font is implicitely scaled by the fd-file\MessageBreak + \space\space\space (for example, when using + helvet.sty).\MessageBreak + This can cause the PostScript font unit length to + be\MessageBreak + incorrect. + You may set the design size for calculation\MessageBreak + of the font unit explicitely by using the class\MessageBreak + option `designsize'}% + \fi +% \end{macrocode} +% Define the name for the headings and the |mtx| file (lowercase trick +% again taken from |fontenc.sty|). +% \begin{macrocode} + \edef\mtxfilename{% + \lowercase{\gdef\noexpand\mtxfilename{% + \f@encoding-\f@family-\f@series-\f@shape\krntst@extraname}}}% + \mtxfilename +% \end{macrocode} +% Set the page headings. +% \begin{macrocode} + \markboth{\upshape Font \mtxfilename}{\upshape Font \mtxfilename}% +% \end{macrocode} +% Don't change the page headings by \cs{section} etc. +% \begin{macrocode} +% \global\def\markboth#1#2{}% +% \global\def\markright#1{}% +% \end{macrocode} +% Open the |mtx| file. +% \begin{macrocode} + \typeout{^^JWriting mtx file `\mtxfilename.mtx'^^J}% + \immediate\openout\mtxfile\mtxfilename.mtx +% \end{macrocode} +% Write a nice header to the |mtx| file. +% \begin{macrocode} + \protected@write\mtxfile{}{\@percentchar\@percentchar}% + \protected@write\mtxfile{}{\@percentchar\@percentchar\space + This is file `\mtxfilename.mtx',}% + \protected@write\mtxfile{}{\@percentchar\@percentchar\space + generated on \number\year/\number\month/\number\day\space + by kerntest.cls, (c) 2004 Harald Harders.}% + \protected@write\mtxfile{}{\@percentchar\@percentchar}% + \protected@write\mtxfile{}{\@percentchar\@percentchar\space + The original source file was:}% + \protected@write\mtxfile{}{\@percentchar\@percentchar}% + \protected@write\mtxfile{}{\@percentchar\@percentchar\space + \jobname\space (.tex?) with these font options:}% + \protected@write\mtxfile{}{\@percentchar\@percentchar\space + Encoding: \f@encoding}% + \protected@write\mtxfile{}{\@percentchar\@percentchar\space + Family: \space\space\f@family}% + \protected@write\mtxfile{}{\@percentchar\@percentchar\space + Series: \space\space\f@series}% + \protected@write\mtxfile{}{\@percentchar\@percentchar\space + Shape: \space\space\space\f@shape}% + \protected@write\mtxfile{}{\@percentchar\@percentchar\space + User-defined name: \krntst@extraname}% + \protected@write\mtxfile{}{\@percentchar\@percentchar}% + \protected@write\mtxfile{}{\string\relax}% + \protected@write\mtxfile{}{\string\metrics}% + \protected@write\mtxfile{}{\string\needsfontinstversion{1.926}}% + \protected@write\mtxfile{}{\@percentchar\@percentchar}% + \protected@write\mtxfile{}{\@percentchar\@percentchar\space + Kerning data for single characters and}% + \protected@write\mtxfile{}{\@percentchar\@percentchar\space + the first members of the glyph classes.}% + \protected@write\mtxfile{}{\@percentchar\@percentchar}% + \protected@write\mtxfile{}{\@percentchar\@percentchar\space + After each \string\setkern\space entry, the glyph classes}% + \protected@write\mtxfile{}{\@percentchar\@percentchar\space + for both glyphs are given (./. means no class).}% + \protected@write\mtxfile{}{\@percentchar\@percentchar}% + \endgroup +} +% \end{macrocode} +% Declare the output handle for the |mtx| file. +% \begin{macrocode} +\newwrite\mtxfile +% \end{macrocode} +% Round a length to an integer value. +% I am sure this can be done easier, but it works. +% \begin{macrocode} +\def\krntst@round#1.#2#3#4\@empty{% + \setlength\@tempdimc{#1pt}% + \if#2.% + \else + \ifnum#2>4 + \ifnum#1#2<0 + \addtolength\@tempdimc{-1.1pt}% + \else + \addtolength\@tempdimc{1.1pt}% + \fi + \fi + \fi + \edef\rnd@tempa{\strip@pt\@tempdimc}% + \expandafter\krntst@@round\rnd@tempa.000\@empty +} +% \end{macrocode} +% Calculate the rounded length. +% \begin{macrocode} +\def\krntst@@round#1.#2#3\@empty{\def\kernlen{#1}} +% \end{macrocode} +% \begin{macro}{\round} +% The user routine for rounding lengths. +% The rounded length is \emph{not} returned but saved in the macro +% \cs{kernlen}. +% \begin{macrocode} +\newcommand*\round[1]{% + \setlength\@tempdimc{#1}% + \edef\rnd@tempa{\strip@pt\@tempdimc}% + \expandafter\krntst@round\rnd@tempa.000\@empty +} +% \end{macrocode} +% \end{macro} +% Define the Postscript font length. +% \begin{macrocode} +\newlength\psunit +% \end{macrocode} +% \begin{macro}{\getpsunit} +% Saves the rounded length of arbitrary unit in Postscript font units +% in the dimension \cs{@tempdima}. +% It has to be used with \cs{strip@pt} to get rid of the unit ``pt'' +% which is wrong of course. +% \begin{macrocode} +\newcommand\getpsunit[1]{% + \setlength\@tempdima{1pt*\ratio{#1}{\psunit}}% +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\getkern} +% Get the kerning between the arguments |#1| and |#2|. +% This is done by typesetting |#1#2| with the natural kerning and with +% supressed kerning (|#1\kern 0pt#2|). +% The difference of the box widths is the kerning. +% Return an integer value in Postscript font units. +% \begin{macrocode} +\newcommand\getkern[2]{% + \settowidth\@tempdima{#1#2}% + \settowidth\@tempdimb{#1\kern0pt#2}% +% \end{macrocode} +% The next line works better than deviding |\@tempdima-\@tempdimb| by +% |0.001em| because rounding errors are avoided. +% \begin{macrocode} + \setlength\@tempdima{1pt*\ratio{(\@tempdima-\@tempdimb)*1000}{1em}}% + \round{\@tempdima}% +} +% \end{macrocode} +% \end{macro} +% The internal routine for \cs{saveslotnumber}. +% Finds out if a slot number or the Postscript name is given and saves +% the slot number in the counter |@glyphslot|. +% \begin{macrocode} +\def\@saveslotnumber#1#2\@empty{% + \if#1"\relax + \setcounter{@glyphslot}{#1#2}% + \else + \if#1'\relax + \setcounter{@glyphslot}{#1#2}% + \else + \ifnum9<1#1\relax + \setcounter{@glyphslot}{#1#2}% + \else + \begingroup\expandafter\expandafter\expandafter\endgroup + \expandafter\ifx\csname slotnumber@glyph@#1#2\endcsname\relax + \setcounter{@glyphslot}{-1}% + \else + \setcounter{@glyphslot}{\csname slotnumber@glyph@#1#2\endcsname}% + \fi + \fi + \fi + \fi + \ifnum\the\c@@glyphslot>255\relax + \setcounter{@glyphslot}{-1}% + \fi +} +% \end{macrocode} +% \begin{macro}{\saveslotnumber} +% Saves the slot number of a glyph given as second argument (by +% PostScript name or its slot number in decimals, octal, or +% hexadecimals) in the counter specified in the first argument. +% \begin{macrocode} +\DeclareRobustCommand*\saveslotnumber[2]{% + \expandafter\@saveslotnumber#2\@empty + \setcounter{#1}{\the\c@@glyphslot}% +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\getslotnumber} +% Returns the slot number of a given glyph (by PostScript name or its +% slot number in decimals, octal, or hexadecimals) in a decimal number. +% \begin{macrocode} +\newcommand\getslotnumber[1]{% + \expandafter\@saveslotnumber#1\@empty + \ifnum\the\c@@glyphslot<0\relax + \textbf{???}% + \else + \ifnum\c@@glyphslot<100\relax0\fi + \ifnum\c@@glyphslot<10\relax0\fi + \the\c@@glyphslot + \fi +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\printglyph} +% Print the glyph with the given PostScript name or slot number (in +% decimals, octal, or hexadecimals; as usual in \LaTeX). +% Unfortunately, no kerning appears on the left side of the printed +% glyph. +% For example, |\printglyph{A}V| is kerned, but |A\printglyph{V}| +% isn't. +% You can solve this by saving the slot number first and by using it +% later, for example: +%\begin{verbatim} +%\newcounter{slotV}% +%\saveslotnumber{slotV}{V}% +%A\char\arabic{slotV} +%\end{verbatim} +% \begin{macrocode} +\newcommand*\printglyph[1]{% + \expandafter\@saveslotnumber#1\@empty + \char\the\c@@glyphslot +} +% \end{macrocode} +% \end{macro} +% A help macro for comparing arguments with ``|-|''. +% \begin{macrocode} +\edef\@minussign{-}% +% \end{macrocode} +% Counters storing the slot numbers for the three glyphs used within +% one line of the |kerntable| environment. +% \begin{macrocode} +\newcounter{@slota} +\newcounter{@slotb} +\newcounter{@slotc} +% \end{macrocode} +% \begin{macro}{\testkern} +% The main macro of the class. +% It takes 5 arguments:\\ +% \marg{glyph 1}\marg{kerning 1--2}\marg{glyph 2}\marg{kerning +% 2--3}\marg{glyph 3}.\\ +% The glyphs are given by their number, not the glyphs itself. +% \begin{macrocode} +\newcommand\testkern[5]{% +% \end{macrocode} +% Save the kerning arguments globally because otherwise they got lost +% from tabular cell to tabular cell. +% \begin{macrocode} + \xdef\@kernlena{#2}% + \xdef\@kernlenb{#4}% +% \end{macrocode} +% Get the slot numbers for the three characters and save them in the +% counters |@slota|, |@slotb|, and |@slotc|. +% \begin{macrocode} + \saveslotnumber{@slota}{#1}% + \ifnum\the\c@@slota<0% + \ClassError{kerntest}{Used unknown glyph `#1'}{% + You may have misspelled the glyph or you have taken an invalid + number.}% + \setcounter{@slota}{0}% + \fi + \saveslotnumber{@slotb}{#3}% + \ifnum\the\c@@slotb<0% + \ClassError{kerntest}{Used unknown glyph `#3'}{% + You may have misspelled the glyph or you have taken an invalid + number.}% + \setcounter{@slotb}{0}% + \fi + \saveslotnumber{@slotc}{#5}% + \ifnum\the\c@@slotc<0% + \ClassError{kerntest}{Used unknown glyph `#5'}{% + You may have misspelled the glyph or you have taken an invalid + number.}% + \setcounter{@slotc}{0}% + \fi +% \end{macrocode} +% Find out if there are old kerning data for one of the two glyph +% pairs. +% +% First pair. +% +% The better form of \cs{@ifundefined} that does not define its +% argument as side-effect. +% \begin{macrocode} + \begingroup\expandafter\expandafter\expandafter\endgroup + \expandafter\ifx\csname kt@kerning@\getpsname{\the\c@@slota}@% + \getpsname{\the\c@@slotb}\endcsname\relax +% \end{macrocode} +% No old kerning. +% Thus don't do any kerning later. +% \begin{macrocode} + \gdef\oldkerna{}% + \else +% \end{macrocode} +% Old kerning exists. +% Save the old kerning to apply it later. +% \begin{macrocode} + \gdef\oldkerna{% + \kern + \csname kt@kerning@\getpsname{\the\c@@slota}@% + \getpsname{\the\c@@slotb}\endcsname + \psunit + }% +% \end{macrocode} +% If no new kerning ist given just tell the user that he reuses a +% kerning. +% \begin{macrocode} + \ifx\@kernlena\@minussign + \typeout{Kerning pair for \getpsname{\the\c@@slota}-% + \getpsname{\the\c@@slotb} reused (value + \csname kt@kerning@\getpsname{\the\c@@slota}@% + \getpsname{\the\c@@slotb}\endcsname).}% + \else +% \end{macrocode} +% Old kerning exists and new kerning, too. +% Test if the old and new kernings are identical. +% \begin{macrocode} + \ifnum\@kernlena=\csname kt@kerning@\getpsname{\the\c@@slota}@% + \getpsname{\the\c@@slotb}\endcsname\relax +% \end{macrocode} +% Yes. +% Nevertheless, generate a warning. +% \begin{macrocode} + \ClassWarning{kerntest}{Kerning for + \getpsname{\the\c@@slota}-\getpsname{\the\c@@slotb}\MessageBreak + repeated (value #2)}% + \else +% \end{macrocode} +% No. +% Produce an erroe message. +% \begin{macrocode} + \ClassError{kerntest}{Conflicting kerning for + \getpsname{\the\c@@slota}-\getpsname{\the\c@@slotb}\MessageBreak + (new value #2 != old value + \csname kt@kerning@\getpsname{\the\c@@slota}@% + \getpsname{\the\c@@slotb}\endcsname)% + }{% + You have given the kerning for the specified glyph pair + twice with different\MessageBreak + values. This may also appear when using glyph classes. + You have to give the\MessageBreak + kerning only once per glyph class.\MessageBreak + You may leave out the second kerning pair, or you may + give\MessageBreak + the kerning `-'. Then, the old value is reused. + }% + \fi + \fi + \fi +% \end{macrocode} +% Second pair. +% \begin{macrocode} + \begingroup\expandafter\expandafter\expandafter\endgroup + \expandafter\ifx\csname kt@kerning@\getpsname{\the\c@@slotb}@% + \getpsname{\the\c@@slotc}\endcsname\relax + \gdef\oldkernb{}% + \else + \gdef\oldkernb{% + \kern + \csname kt@kerning@\getpsname{\the\c@@slotb}@% + \getpsname{\the\c@@slotc}\endcsname + \psunit + }% +% + \ifx\@kernlenb\@minussign + \typeout{Kerning pair for \getpsname{\the\c@@slotb}-% + \getpsname{\the\c@@slotc} reused (value + \csname kt@kerning@\getpsname{\the\c@@slotb}@% + \getpsname{\the\c@@slotc}\endcsname).}% + \else + \ifnum\@kernlenb=\csname kt@kerning@\getpsname{\the\c@@slotb}@% + \getpsname{\the\c@@slotc}\endcsname\relax + \ClassWarning{kerntest}{Kerning for + \getpsname{\the\c@@slotb}-\getpsname{\the\c@@slotc}\MessageBreak + repeated (value #4)}% + \else + \ClassError{kerntest}{Conflicting kerning for + \getpsname{\the\c@@slotb}-\getpsname{\the\c@@slotc}\MessageBreak + (new value #4 != old value + \csname kt@kerning@\getpsname{\the\c@@slotb}@% + \getpsname{\the\c@@slotc}\endcsname)% + }{% + You have given the kerning for the specified glyph pair + twice with different\MessageBreak + values. This may also appear when using glyph classes. + You have to give the\MessageBreak + kerning only once per glyph class.\MessageBreak + You may leave out the second kerning pair, or you may + give\MessageBreak + the kerning `-'. Then, the old value is reused. + }% + \fi + \fi + \fi +% \end{macrocode} +% First, type the slot number of glyph~2. +% \begin{macrocode} + \krntst@helpfont\getslotnumber{#3}% + & +% \end{macrocode} +% Type the postscript name of glyph~2. +% \begin{macrocode} + \krntst@helpfont\getpsname{\the\c@@slotb}% + & +% \end{macrocode} +% Print the three glyphs with original kerning. +% \begin{macrocode} + \char\the\c@@slota\char\c@@slotb\char\c@@slotc% + & +% \end{macrocode} +% Print glyph~1. +% \begin{macrocode} + \char\the\c@@slota% +% \end{macrocode} +% If a kerning is given, apply it; otherwise do nothing. +% \begin{macrocode} + \ifx\@kernlena\@minussign + \oldkerna + \else + \kern#2\psunit + \fi +% \end{macrocode} +% Print glyph~2. +% \begin{macrocode} + \char\the\c@@slotb% +% \end{macrocode} +% If a kerning is given, apply it; otherwise do nothing. +% \begin{macrocode} + \ifx\@kernlenb\@minussign + \oldkernb + \else + \kern#4\psunit + \fi +% \end{macrocode} +% Print glyph~3. +% \begin{macrocode} + \char\the\c@@slotc% + & +% \end{macrocode} +% Do the same as in columns 2 and 3, but twice at the same place. +% First, natural kerning. +% \begin{macrocode} + \color{oldcolor}% + \makebox[0pt][l]{\char\the\c@@slota\char\the\c@@slotb\char\the\c@@slotc}% +% \end{macrocode} +% Second, newly given kerning. +% Switch the color depending if a kerning has been given. +% \begin{macrocode} + \ifx\@kernlena\@minussign + \ifthenelse{\equal{\oldkerna}{}}{}{\color{newcolor}}% + \else + \color{newcolor}% + \fi + \ifx\@kernlenb\@minussign + \ifthenelse{\equal{\oldkernb}{}}{}{\color{newcolor}}% + \else + \color{newcolor}% + \fi + \char\the\c@@slota% + \ifx\@kernlena\@minussign + \oldkerna + \else + \kern#2\psunit + \fi + \char\the\c@@slotb% + \ifx\@kernlenb\@minussign + \oldkernb + \else + \kern#4\psunit + \fi + \char\the\c@@slotc% + & +% \end{macrocode} +% Get the value of the natural kerning. +% This has to be done with the tested font switched on to get the +% right values. +% This value is saved in \cs{kernlen} for later use. +% \begin{macrocode} + \getkern{\char\the\c@@slota}{\char\the\c@@slotb}% +% \end{macrocode} +% Switch to the legend font. +% \begin{macrocode} + \krntst@helpfont +% \end{macrocode} +% If no kerning is given (\marg{kerning 1--2}|=-|) print out the +% original kerning. +% The part \cs{ifdim}\ldots\cs{fi} adds a |-| if the kerning is +% negative. +% Together with the negative kerning, this gives a ``--'' instead of a +% ``-''. +% \begin{macrocode} + \ifx\@kernlena\@minussign + \ifthenelse{\equal{\oldkerna}{}}{% + \textcolor{oldcolor}{\small + \ifdim\kernlen pt<0pt-\fi + \ifdim\kernlen pt>0pt+\fi + \kernlen}% + }{% + \ifnum\kernlen=0\relax + \else + \textcolor{oldcolor}{\small(% + \ifdim\kernlen pt<0pt-\fi + \ifdim\kernlen pt>0pt+\fi + \kernlen)}% + \fi + ~\textcolor{newcolor}{\large + \ifnum + \csname kt@kerning@\getpsname{\the\c@@slota}@% + \getpsname{\the\c@@slotb}\endcsname<0-\fi + \csname kt@kerning@\getpsname{\the\c@@slota}@% + \getpsname{\the\c@@slotb}\endcsname + \makebox[0pt][l]{$^\ast$}% + }% + }% +% \end{macrocode} +% Write old kerning to |mtx| file. +% \begin{macrocode} + \ifthenelse{\boolean{krntst@writeall}\and\not\equal{\kernlen}{0}}{% + \writemtxkern[original kerning]{\the\c@@slota}{% + \ifdim\kernlen pt>0pt+\fi\kernlen}{\the\c@@slotb}% + }{}% +% \end{macrocode} +% If a kerning is given print the new kerning (same trick with +% negative numbers). +% \begin{macrocode} + \else +% \end{macrocode} +% If there were original kerning data, print the in parenthesis first. +% \begin{macrocode} + \ifdim\kernlen pt=0pt + \else + \textcolor{oldcolor}{\small(% + \ifdim\kernlen pt<0pt-\fi + \ifdim\kernlen pt>0pt+\fi + \kernlen)} + \fi + \textcolor{newcolor}{\large + \ifnum#2<0-\fi#2% + \ifthenelse{\equal{\oldkerna}{}}{% + }{\makebox[0mm][l]{$^\dagger$}}% + }% +% \end{macrocode} +% Write the new kerning information into the |mtx| file. +% \begin{macrocode} + \ifthenelse{\equal{\oldkerna}{}}{% + \writemtxkern{\the\c@@slota}{#2}{\the\c@@slotb}% + }{}% + \fi + & +% \end{macrocode} +% Do the same for the second kerning pair. +% \begin{macrocode} + \getkern{\char\the\c@@slotb}{\char\the\c@@slotc}% + \krntst@helpfont + \ifx\@kernlenb\@minussign + \ifthenelse{\equal{\oldkernb}{}}{% + \textcolor{oldcolor}{\small + \ifdim\kernlen pt<0pt-\fi + \ifdim\kernlen pt>0pt+\fi + \kernlen}% + }{% + \ifnum\kernlen=0\relax + \else + \textcolor{oldcolor}{\small(% + \ifdim\kernlen pt<0pt-\fi + \ifdim\kernlen pt>0pt+\fi + \kernlen)}% + \fi + ~\textcolor{newcolor}{\large + \ifnum + \csname kt@kerning@\getpsname{\the\c@@slotb}@% + \getpsname{\the\c@@slotc}\endcsname<0-\fi + \csname kt@kerning@\getpsname{\the\c@@slotb}@% + \getpsname{\the\c@@slotc}\endcsname + \makebox[0pt][l]{$^\ast$}% + }% + }% + \ifthenelse{\boolean{krntst@writeall}\and\not\equal{\kernlen}{0}}{% + \writemtxkern[original kerning]{\the\c@@slotb}{% + \ifdim\kernlen pt>0pt+\fi\kernlen}{\the\c@@slotc}% + }{}% + \else + \ifdim\kernlen pt=0pt + \else + \textcolor{oldcolor}{\small(% + \ifdim\kernlen pt<0pt-\fi + \ifdim\kernlen pt>0pt+\fi + \kernlen)} + \fi + \textcolor{newcolor}{\large + \ifnum#4<0-\fi#4% + \ifthenelse{\equal{\oldkernb}{}}{% + }{\makebox[0mm][l]{$^\dagger$}}% + }% + \ifthenelse{\equal{\oldkernb}{}}{% + \writemtxkern{\the\c@@slotb}{#4}{\the\c@@slotc}% + }{}% + \fi + & +% \end{macrocode} +% Print the example with natural kerning. +% \begin{macrocode} + \char\the\c@@slota\char\the\c@@slotb + \krntst@example + \char\the\c@@slotb\char\the\c@@slotc + & +% \end{macrocode} +% Print the example with new kerning. +% \begin{macrocode} + \char\the\c@@slota% + \ifx\@kernlena\@minussign + \else + \kern#2\psunit + \fi + \char\the\c@@slotb\krntst@example\char\the\c@@slotb + \ifx\@kernlenb\@minussign + \else + \kern#4\psunit + \fi + \char\the\c@@slotc% + & +% \end{macrocode} +% Switch to legend font for the comments that may appear. +% \begin{macrocode} + \krntst@helpfont\ignorespaces +} +% \end{macrocode} +% \end{macro} +% \begin{environment}{kerntable} +% The kerning table environment. +% \begin{macrocode} +\newenvironment{kerntable}{% +% \end{macrocode} +% Switch to the tested font. +% \begin{macrocode} + \usefont{\krntst@encoding}{\krntst@family}{\krntst@series}{\krntst@shape}% + \fontsize{\krntst@size}{\krntst@baselineskip}\selectfont% +% \end{macrocode} +% Start a |longtable| environment for the kerning samples. +% \begin{macrocode} + \begin{longtable}[l]{@{}lll@{~}l@{~}l@{~}rrlll@{}} +% \end{macrocode} +% Type the header of the table. +% \begin{macrocode} + \krntst@helpfont slot& + \krntst@helpfont name& + \krntst@helpfont orig& + \krntst@helpfont new& + \krntst@helpfont both& + \krntst@helpfont k.\,1& + \krntst@helpfont k.\,2& + \krntst@helpfont orig.& + \krntst@helpfont new& + \krntst@helpfont comment\\ + \endhead +% \end{macrocode} +% Repeat it as footer. +% \begin{macrocode} + \krntst@helpfont slot& + \krntst@helpfont name& + \krntst@helpfont orig& + \krntst@helpfont new& + \krntst@helpfont both& + \krntst@helpfont k.\,1& + \krntst@helpfont k.\,2& + \krntst@helpfont orig.& + \krntst@helpfont new& + \krntst@helpfont comment\\ + \endfoot + }{% +% \end{macrocode} +% And now the end of the table. +% \begin{macrocode} + \end{longtable}% + \ignorespacesafterend +} +% \end{macrocode} +% \end{environment} +% \begin{macro}{\writemtxkern} +% \changes{1.32}{2004/04/14}{Speed up \cs{writemtxkern}}% +% \changes{1.10}{2004/04/06}{Handle optional comment}% +% Write an entry into the |mtx| file. +% This command copies double quotes to single quotes if requested +% (only if no optional argument is given). +% \begin{macrocode} +\newif\if@tempswb +\newcommand\writemtxkern[4][\@empty]{% +% \end{macrocode} +% Store the glyph names of both glyphs in \cs{@firstglyphname} and +% \cs{@secondglyphname}. +% \begin{macrocode} + \expandafter\@saveslotnumber#2\@empty + \edef\@firstglyphname{\getpsname{\c@@glyphslot}}% + \expandafter\@saveslotnumber#4\@empty + \edef\@secondglyphname{\getpsname{\c@@glyphslot}}% +% \end{macrocode} +% Test if a comment has been given. +% \begin{macrocode} + \ifthenelse{\equal{#1}{\@empty}}{% +% \end{macrocode} +% Get the corresponding glyph class for the first character and save +% it in \cs{rightkern}. +% If none, \cs{rightkern} is set to \cs{@empty}. +% \begin{macrocode} + \edef\rightkern{\getclassofglyph{right}{\@firstglyphname}}% +% \end{macrocode} +% If the glyph is in no glyph class, make a temporary glyph class +% \cs{rightkern} which contains only this glyph. +% Define the comment \cs{textright} for the |mtx| file. +% \begin{macrocode} + \ifthenelse{\equal{\rightkern}{\@empty}}{% + \edef\textright{./.}% + \def\rightkern{@firstglyphname}% + }{% + \edef\textright{\expandafter\@getclassname\rightkern\@empty}% + }% +% \end{macrocode} +% Get the corresponding glyph class for the second character and save +% it in \cs{leftkern}. +% If none, \cs{leftkern} is set to \cs{@empty}. +% \begin{macrocode} + \edef\leftkern{\getclassofglyph{left}{\@secondglyphname}}% +% \end{macrocode} +% If the glyph is in no glyph class, make a temporary glyph class +% \cs{leftkern} which contains only this glyph. +% Define the comment \cs{leftright} for the |mtx| file. +% \begin{macrocode} + \ifthenelse{\equal{\leftkern}{\@empty}}{% + \edef\textleft{./.}% + \def\leftkern{@secondglyphname}% + }{% + \edef\textleft{\expandafter\@getclassname\leftkern\@empty}% + }% +% \end{macrocode} +% Set the kernig data for all kerning pairs that can be found in both +% glyph classes \cs{rightkern} and \cs{leftkern}. +% \begin{macrocode} + \@tempswbtrue + \@forallinclass{\rightkern}{first}{% + \@forallinclass{\leftkern}{second}{% +% \end{macrocode} +% Write the kerning data to the |mtx| file, but only for the first +% members of the glyph classes. +% The others are set in the |mtx| file by \cs{setrightkerning} and +% \cs{setleftkerning}. +% \begin{macrocode} + \if@tempswb + \protected@write\mtxfile{}{% + \string\setkern + {\first}{\second}{#3}% + \@percentchar\space\space\textright\space-- \textleft + }% protected@write + \@tempswbfalse + \fi +% \end{macrocode} +% Define a command \cs{kt@kerning@\meta{first glyph}@\meta{second +% glyph}} that contains the kerning for later testing on conflicting +% values. +% Scale the kerning data according to the given values in +% \cs{defglyphclass}. +% \begin{macrocode} + \setcounter{@tmpscale}{#3*\first@scaling*\second@scaling/1000000}% + \typeout{\first-\second: \the@tmpscale}% + \expandafter\xdef\csname kt@kerning@\first @\second\endcsname{% + \the@tmpscale}% +% \expandafter\xdef\csname kt@kerning@\first @\second\endcsname{#3}% + }% forallinclass second + }% forallinclass first + }{% +% \end{macrocode} +% If an optional argument has been given, just write this kerning pair +% without any tests. +% \begin{macrocode} + \protected@write\mtxfile{}{% + \string\setkern + {\@firstglyphname}{\@secondglyphname}{#3}% + \@percentchar\space\space #1% + }% +% \end{macrocode} +% Nevertheless, generate the command for testing on conflicting values. +% \begin{macrocode} + \expandafter\xdef + \csname kt@kerning@\@firstglyphname@\@secondglyphname\endcsname{#3}% + }% +}% +% \end{macrocode} +% \end{macro} +% +% \subsubsection{Glyph classes}% +% \label{sec:glyphclasses}% +% +% \begin{macro}{\defglyphclass} +% The macro +% \cs{defglyphclass}\marg{side}\marg{name}\marg{glyphlist} +% defines a class of glyphs that have the same kerning on the same +% \meta{side} which has to be ``|left|'' or ``|right|''. +% \meta{name} is the name of the glyph class while \meta{glyphlist} is +% a comma-separated list of all glyphs that have the same kerning on +% their \meta{side} side. +% \begin{macrocode} +\newcounter{@tmpscale} +\newcounter{@firstscale} +\newcommand\defglyphclass[3]{% +% \end{macrocode} +% Do it at \cs{begin\{document\}} because otherwise it is not clear +% which encoding is used and thus the glyphs are not yet known. +% \begin{macrocode} + \AtBeginDocument{% +% \end{macrocode} +% Test if a list of glyph classes exists for the chosen \meta{side}. +% \begin{macrocode} + \@ifundefined{glyphclasslist@#1}{% +% \end{macrocode} +% No glyph class of the current \meta{side} has been defined, yet. +% Install a new one. +% \begin{macrocode} + \expandafter\def\csname glyphclasslist@#1\endcsname{% + glyphclass@#1@#2}% + }{% +% \end{macrocode} +% The needed glyph-class list exists. +% Test if there is an old glyph class with the same name (\meta{side} +% and \meta{name}). +% \begin{macrocode} + \begingroup + \@tempswatrue + \forallclasses{#1}{@tmpcls}{% + \ifthenelse{\equal{\@tmpcls}{glyphclass@#1@#2}}{% + \@tempswafalse + }{}% + }% +% \end{macrocode} +% If this is not the case, append the new glyph class to the glyph +% class list. +% \begin{macrocode} + \if@tempswa + \expandafter\xdef\csname glyphclasslist@#1\endcsname{% + \csname glyphclasslist@#1\endcsname,glyphclass@#1@#2}% + \fi + \endgroup + }% +% \end{macrocode} +% Define the macro \cs{glyphclass@\meta{side}@\meta{name}} that stores +% the \meta{glyphlist} for this glyph class. +% At this stage it is defined empty in order to avoid that error +% messages are generated for ``already used glyphs''. +% \begin{macrocode} + \expandafter\def\csname glyphclass@#1@#2\endcsname{}% +% \end{macrocode} +% Store the new \meta{glyphlist} in a temporary variable +% \cs{tmpglyphclass}. +% To do this, all glyphs of the list are converted to Postscript glyph +% names and tested if they are valid. +% Also, it is tested if a glyph is contained double. +% \changes{1.32}{2004/04/14}{Speed up \cs{defglyphclass}}% +% \begin{macrocode} + \edef\@tempa{#3}% + \@tempswbtrue + \@forallinclass{@tempa}{@tmpglyph}{% + \saveslotnumber{@glyphslot}{\@tmpglyph}% + \ifnum\the\c@@glyphslot<0% + \ClassError{kerntest}{Used unknown glyph `\@tmpglyph'}{% + You may have misspelled the glyph or you have taken an invalid + number. + This incorrect glyph is ignored.}% + \edef\thisglyphname{???}% + \else + \edef\thisglyphname{\getpsname{\the\c@@glyphslot}}% + \if@tempswb + \global\@tempswbfalse + \setcounter{@firstscale}{\@tmpglyph@scaling}% + \fi + \setcounter{@tmpscale}{1000*\@tmpglyph@scaling/\the@firstscale}% +% \end{macrocode} +% Now, it has to be tested if none of the glyphs of the new glyph list +% are in this or another list already. +% If so, generate an error message. +% Save the error state in \cs{@tempswa} to be able to add the glyph +% only if it is in no other glyph class. +% \begin{macrocode} + \@tempswatrue + \forallclasses{#1}{@tmpcls}{% + \@ifglyphinclass{\@tmpcls}{\@tmpglyph}{% + \@tempswafalse + \ClassError{kerntest}{Glyph `\@tmpglyph' + (`\thisglyphname',\MessageBreak + glyph class #1/#2) already\MessageBreak + in glyph + class (\expandafter\@getclassname\@tmpcls\@empty)% + }{% + Each glyph may only be once in one glyph class for + each side. + }% + }{}% + }% +% \end{macrocode} +% Append this glyph to the current glyph list. +% \begin{macrocode} + \if@tempswa + \ifthenelse{\equal{\csname glyphclass@#1@#2\endcsname}{}}{% + \expandafter\edef\csname glyphclass@#1@#2\endcsname{% + \thisglyphname[\the@tmpscale]}% + \edef\firstglyphinclass{\thisglyphname}% + }{% + \expandafter\edef\csname glyphclass@#1@#2\endcsname{% + \csname glyphclass@#1@#2\endcsname,% + \thisglyphname[\the@tmpscale]}% + }% +% \end{macrocode} +% Generate a macro \cs{glyphclass@glyph@}\meta{glyphname} which saves +% the corresponding glyph class for each glyph for faster access. +% \begin{macrocode} + \expandafter\edef + \csname glyphclass@glyph@#1@\thisglyphname\endcsname{% + glyphclass@#1@#2}% + \fi + \fi + }% +% \end{macrocode} +% Some feedback. +% \begin{macrocode} + \typeout{Glyph class `#1/#2' (\csname glyphclass@#1@#2\endcsname) + defined.}% + }% +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\newglyphclass} +% The macro +% \cs{newglyphclass} works as \cs{defglyphclass} but defines a new +% glyph class. +% It produces an error if the class already exists. +% \begin{macrocode} +\newcommand\newglyphclass[3]{% +% \end{macrocode} +% Test if this glyph class already exists and generate an error +% message if so. +% If not, call \cs{defglyphclass} to save the new glyph class. +% \begin{macrocode} + \AtBeginDocument{% + \@tempswatrue + \forallclasses{#1}{@tmpcls}{% + \ifthenelse{\equal{\@tmpcls}{glyphclass@#1@#2}}{% + \ClassError{kerntest}{Class `#1/#2' already exists}{% + The command is ignored.}% + \@tempswafalse + }{}% + }% + \if@tempswa + \defglyphclass{#1}{#2}{#3}% + \fi + }% +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\renewglyphclass} +% The macro +% \cs{renewglyphclass} works as \cs{newglyphclass} but redefines an +% existing one. +% \begin{macrocode} +\newcommand\renewglyphclass[3]{% +% \end{macrocode} +% Test if this glyph class does not exist and generate an error +% message if so. +% If it exists, call \cs{defglyphclass} to redefine the glyph class. +% \begin{macrocode} + \AtBeginDocument{% + \@tempswafalse + \forallclasses{#1}{@tmpcls}{% + \ifthenelse{\equal{\@tmpcls}{glyphclass@#1@#2}}{% + \@tempswatrue + }{}% + }% + \if@tempswa + \defglyphclass{#1}{#2}{#3}% + \else + \ClassError{kerntest}{Class `#1/#2' does not exists}{% + The command is ignored.}% + \fi + }% +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\provideglyphclass} +% The macro +% \cs{provideglyphclass} works as \cs{newglyphclass} but does only do +% its job if the glyph class does not exist right now. +% \begin{macrocode} +\newcommand\provideglyphclass[3]{% +% \end{macrocode} +% Test if this glyph class already exists. +% If not, call \cs{defglyphclass} to save the new glyph class. +% \begin{macrocode} + \AtBeginDocument{% + \@tempswatrue + \forallclasses{#1}{@tmpcls}{% + \ifthenelse{\equal{\@tmpcls}{glyphclass@#1@#2}}{% + \@tempswafalse + }{}% + }% + \if@tempswa + \defglyphclass{#1}{#2}{#3}% + \fi + }% +} +% \end{macrocode} +% \end{macro} +% Type out the human readable name \meta{side}/\meta{name} for a glyph +% class, giving the name of the corresponding macro. +% No test on a correct name is made. +% \begin{macrocode} +\def\@getclassname#1@#2@#3\@empty{#2/#3} +% \end{macrocode} +% \begin{macro}{\getclassofglyph} +% Syntax: \cs{getclassofglyph}\marg{side}\marg{glyph name}. +% +% Return the name of the glyph class, that contains the argument. +% If it is not contained in any class, \cs{@empty} is returned. +% The glyph name has to be given as argument. +% \begin{macrocode} +\newcommand*\getclassofglyph[2]{% + \expandafter\ifx\csname glyphclass@glyph@#1@#2\endcsname\relax + \@empty + \else + \csname glyphclass@glyph@#1@#2\endcsname + \fi +} +% \end{macrocode} +% \end{macro} +% An internal boolean for searching glyph classes. +% \begin{macrocode} +\newif\if@glyphfound +% \end{macrocode} +% \begin{macro}{\ifglyphinclass} +% \changes{1.32}{2004/04/14}{Speed up \cs{ifglyphinclass}}% +% Syntax: +% \cs{ifglyphinclass\marg{side}\marg{name}\marg{glyph}\marg{yes}\marg{no}}. +% Tests if the glyph \meta{glyph} is contained in the glyph class +% \meta{side}/\meta{name}. +% Depending on that, \meta{yes} or \meta{no} are executed. +% The work is done by \cs{@ifglyphinclass} described later. +% \begin{macrocode} +\newcommand\ifglyphinclass[5]{% + \@ifundefined{glyphclass@#1@#2}{% + \ClassError{kerntest}{Glyph class #1/#2 not available}{}% + }{% + \edef\@tempa{#3}% + \saveslotnumber{@tempcnta}{\@tempa}% + \ifnum\the\c@@tempcnta<0% + \ClassError{kerntest}{Used unknown glyph `#2'}{% + You may have misspelled the glyph or you have taken an invalid + number.}% + \else + \ifthenelse{\equal{glyphclass@#1@#2}{% + \getclassofglyph{#1}{\getpsname{\the\c@@tempcnta}}}}{% + #4% + }{% + #5% + }% + \fi +% \@ifglyphinclass{glyphclass@#1@#2}{#3}{#4}{#5}% + }% +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\@ifglyphinclass} +% \changes{1.32}{2004/04/14}{Speed up \cs{@ifglyphinclass}}% +% Syntax: +% \cs{@ifglyphinclass\marg{macro}\marg{glyph}\marg{yes}\marg{no}}. +% Tests if the glyph \meta{glyph} is contained in the glyph class +% with the macro name \cs{\meta{macro}}. +% Depending on that, \meta{yes} or \meta{no} are executed. +% \begin{macrocode} +\newcounter{@tempcnta} +\newcommand\@ifglyphinclass[4]{% + \@ifundefined{#1}{% + \ClassError{kerntest}{Glyph class #1 not available}{}% + }{% +% \end{macrocode} +% Extract the name of the side from the class macro name. +% \begin{macrocode} + \def\krntst@side##1@##2@##3\@empty{\edef\krntst@side{##2}}% + \expandafter\krntst@side#1\@empty +% \end{macrocode} +% Extract the name of the side from the class macro name. +% \begin{macrocode} + \edef\@tempa{#2}% +% \end{macrocode} +% Find out if the glyph is valid. +% \begin{macrocode} + \saveslotnumber{@tempcnta}{\@tempa}% + \ifnum\the\c@@tempcnta<0\relax + \ClassError{kerntest}{Used unknown glyph `#2'}{% + You may have misspelled the glyph or you have taken an invalid + number.}% + \else +% \end{macrocode} +% Test if the corrosponding class to the glyph is the requested one. +% \begin{macrocode} + \ifthenelse{\equal{#1}{% + \getclassofglyph{\krntst@side}{\getpsname{\the\c@@tempcnta}}}}{% + #3% + }{% + #4% + }% + \fi + }% +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\forallinclasses} +% Syntax: +% \cs{forallinclass\marg{side}\marg{name}\marg{glyph}\marg{action}} +% +% The commands in \meta{action} are executed once for every glyph of +% the glyph class \meta{side}/\meta{name}. +% In each run, the specific glyph is stored in the macro +% \cs{\meta{glyph}} which has to be given without leading backslash. +% This routine can be nested if \meta{glyph} is different for both +% layers, e.g., +%\begin{verbatim} +%\forallinclass{left}{H}{outer}{% +% \forallinclass{left}{H}{inner}{% +% glyph pair: ``\outer''--``\inner''\\ +% }% +%} +%\end{verbatim} +% \begin{macrocode} +\newcommand\forallinclass[4]{% + \@forallinclass{glyphclass@#1@#2}{#3}{#4}% +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\@forallinclasses} +% Syntax: +% \cs{@forallinclass\marg{macro}\marg{glyph}\marg{action}} +% +% The internal command for \cs{forallinclasses}. +% Takes the macro name for the glyph class instead of the side and the +% name. +% \begin{macrocode} +\newcommand\@forallinclass[3]{% +% \end{macrocode} +% Redefine \cs{stoploop} to use the current glyph variable as default. +% \begin{macrocode} + \renewcommand\stoploop[1][#2]{% + \expandafter\edef\csname ##1\endcsname{}% + }% +% \end{macrocode} +% Get the first glyph of the glyph list. +% It is stored in \cs{\meta{glyph}}. +% \begin{macrocode} + \begingroup\expandafter\expandafter\expandafter\endgroup + \expandafter\ifx\csname #1\endcsname\relax + \edef\kt@tempa{}% + \else + \edef\kt@tempa{\csname #1\endcsname}% + \fi + \expandafter\@nextglyphinclass\kt@tempa,\@empty{#2}% +% \end{macrocode} +% If this glyph is not empty, the end of the glyph class has not been +% reached. +% Then, enter the loop. +% \begin{macrocode} + \whiledo{\not\equal{\csname #2\endcsname}{}}{% +% \end{macrocode} +% Execute the loop commands. +% \begin{macrocode} + #3% +% \end{macrocode} +% Get the next glyph of the glyph list. +% It is stored in \cs{\meta{glyph}}. +% The if clause is necessary to handle \cs{stoploop}. +% \begin{macrocode} + \ifthenelse{\equal{\csname #2\endcsname}{}}{% + }{% + \edef\kt@tempa{\csname #2@rest\endcsname}% + \expandafter\@nextglyphinclass\kt@tempa,\@empty{#2}% + }% + }% +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\@nextglyphinclass} +% Everything before the first comma in the list is the next glyph in +% the glyph class. +% Store it in the macro given at the end of the argument list +% (\cs{\meta{\#3}}. +% Store the rest of the glyph class in \cs{\meta{\#3}@rest} for later +% work on it. +% \begin{macrocode} +\def\@@parseglyphname#1[#2]#3\@empty#4{% + \expandafter\edef\csname#4\endcsname{#1}% + \expandafter\xdef\csname#4@scaling\endcsname{#2}% +% \typeout{--> `#1' mit [\csname #4@scaling\endcsname], ignoriert: `#3', Name: `#4'}% +} +\def\@nextglyphinclass#1,#2\@empty#3{% + \expandafter\edef\csname#3@rest\endcsname{#2}% + \expandafter\@@parseglyphname#1[1000]\@empty{#3}% +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\forallclasses} +% Syntax: +% \cs{forallclasses\marg{side}\marg{glyph class}\marg{action}} +% +% The commands in \meta{action} are executed once for every glyph +% class of the glyph-class list \meta{side}. +% In each run, the specific glyph class is stored in the macro +% \cs{\meta{glyph class}} which has to be given without leading +% backslash. +% This routine can be nested if \meta{glyph class} is different for both +% layers. +% (Same as \cs{forallinclass}). +% \begin{macrocode} +\newcommand\forallclasses[3]{% + \renewcommand\stoploop[1][#2]{% + \expandafter\edef\csname ##1\endcsname{}% + }% + \begingroup\expandafter\expandafter\expandafter\endgroup + \expandafter\ifx\csname glyphclasslist@#1\endcsname\relax + \edef\kt@tempa{}% + \else + \edef\kt@tempa{\csname glyphclasslist@#1\endcsname}% + \fi + \expandafter\@nextclass\kt@tempa,\@empty{#2}% + \whiledo{\not\equal{\csname #2\endcsname}{}}{% + #3% + \ifthenelse{\equal{\csname #2\endcsname}{}}{% + }{% + \edef\kt@tempa{\csname #2@rest\endcsname}% + \expandafter\@nextclass\kt@tempa,\@empty{#2}% + }% + }% +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\stoploop} +% Stops the execution of \cs{forallclasses} or \cs{forallinclass}. +% The optional argument gives the stop variable. +% By this, also the outer loop can be stopped from the inner one. +% \begin{macrocode} +\newcommand\stoploop[1][]{% + \expandafter\edef\csname #1\endcsname{}% +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\@nextglyphinclass} +% Everything before the first comma in the list is the next glyph +% class in the glyph-class list. +% Store it in the macro given at the end of the argument list +% (\cs{\meta{\#3}}. +% Store the rest of the glyph-class list in \cs{\meta{\#3}@rest} for +% later work on it. +% \begin{macrocode} +\def\@nextclass#1,#2\@empty#3{% + \expandafter\edef\csname #3@rest\endcsname{#2}% + \expandafter\edef\csname #3\endcsname{#1}% +} +% \end{macrocode} +% \end{macro} +% +% \subsubsection{Extra commands for special encodings} +% +% Setup command for the different encodings. +% \begin{macrocode} +\newcommand\encodingsetup[1]{% + \AtBeginDocument{% + \typeout{Setup for font encoding. + This differs from encoding to encoding.}% + \setkeys{krnenc}{#1}% + }% +} +\@onlypreamble\encodingsetup +% \end{macrocode} +% +% \subsection{Footer of \texttt{mtx} file} +% +% +% Write a footer to the |mtx| file. +% This is done as last action of the class in order to ensure that all +% other things have been done before. +% \begin{macrocode} +\AtEndDocument{% +% \end{macrocode} +% First, write the kerning data for the glyph classes. +% \begin{macrocode} + \typeout{Writing kerning factors for glyph classes to mtx file}% + \protected@write\mtxfile{}{\@percentchar\@percentchar}% + \protected@write\mtxfile{}{\@percentchar\@percentchar\space + Kerning factors for the different glyph classes.}% + \protected@write\mtxfile{}{\@percentchar\@percentchar}% +% \end{macrocode} +% Define a command that does the output for the different sides. +% \begin{macrocode} + \def\@writeclass#1{% + \forallclasses{#1}{@tmpcls}{% + \typeout{\space\space for class + \expandafter\@getclassname\@tmpcls\@empty}% +% \end{macrocode} +% The first glyph is the referent glyph of the class. +% If the inner loop is executed the first time, set +% \cs{firstglyphinclass} to this value. +% \begin{macrocode} + \@tempswatrue + \@forallinclass{\@tmpcls}{@tmpglyph}{% + \if@tempswa + \edef\firstglyphinclass{\@tmpglyph}% + \@tempswafalse + \else +% \end{macrocode} +% For the other members of this class, write the +% \cs{set\meta{side}kerning} commands to the |mtx| file. +% \begin{macrocode} + \protected@write\mtxfile{}{% + \string\set#1kerning% + {\@tmpglyph}{\firstglyphinclass}{\@tmpglyph@scaling}% + \@percentchar\space\space + \expandafter\@getclassname\@tmpcls\@empty + }% + \fi + }% + }% + }% +% \end{macrocode} +% The sides |left| and |right| are defined. +% \begin{macrocode} + \@writeclass{left}% + \protected@write\mtxfile{}{\@percentchar\@percentchar}% + \@writeclass{right}% +% \end{macrocode} +% Write a real footer. +% \begin{macrocode} + \protected@write\mtxfile{}{\@percentchar\@percentchar}% + \protected@write\mtxfile{}{\string\endmetrics}% + \protected@write\mtxfile{}{\@percentchar\@percentchar}% + \protected@write\mtxfile{}{\@percentchar\@percentchar\space + End of file `\mtxfilename.mtx'.}% + \closeout\mtxfile + \typeout{^^JWritten mtx file `\mtxfilename.mtx'^^J}% +} +% +% \end{macrocode} +% +% +% \subsection{Class option files} +% +% To be able to write correct |mtx| files, the class has to know which +% glyph number has which Postscript name. +% This is done by the \cs{getpsname} macro which depends on the used +% encoding. +% This is done by loading different class option files. +% +% \subsubsection{T1 encoding} +% +% The |T1| encoding. +% The data are taken from |t1.etx|. +% \begin{macrocode} +%<*mtx&t1> +\makeatletter +% \end{macrocode} +% Set options to switch to other font shapes. +% \begin{macrocode} +\define@key{krnenc}{ligaturing}[1]{% + \typeout{T1 encoding: ligaturing = #1}% + \ifnum#1<0\relax + \expandafter\def\csname krntst@T1@027\endcsname{.notdef.027}% + \expandafter\def\csname krntst@T1@028\endcsname{.notdef.028}% + \expandafter\def\csname krntst@T1@029\endcsname{.notdef.029}% + \expandafter\def\csname krntst@T1@030\endcsname{.notdef.030}% + \expandafter\def\csname krntst@T1@031\endcsname{.notdef.031}% + \expandafter\def\csname krntst@T1@156\endcsname{.notdef.156}% + \expandafter\def\csname krntst@T1@188\endcsname{.notdef.188}% + \else + \expandafter\def\csname krntst@T1@027\endcsname{ff}% + \expandafter\def\csname krntst@T1@028\endcsname{fi}% + \expandafter\def\csname krntst@T1@029\endcsname{fl}% + \expandafter\def\csname krntst@T1@030\endcsname{ffi}% + \expandafter\def\csname krntst@T1@031\endcsname{ffl}% + \expandafter\def\csname krntst@T1@156\endcsname{IJ}% + \expandafter\def\csname krntst@T1@188\endcsname{ij}% + \fi + \ifnum#1<-1\relax + \expandafter\def\csname krntst@T1@073\endcsname{.notdef.073}% + \expandafter\def\csname krntst@T1@099\endcsname{.notdef.099}% + \expandafter\def\csname krntst@T1@102\endcsname{.notdef.102}% + \expandafter\def\csname krntst@T1@105\endcsname{.notdef.105}% + \expandafter\def\csname krntst@T1@115\endcsname{.notdef.115}% + \else + \expandafter\def\csname krntst@T1@073\endcsname{I}% + \expandafter\def\csname krntst@T1@099\endcsname{c}% + \expandafter\def\csname krntst@T1@102\endcsname{f}% + \expandafter\def\csname krntst@T1@105\endcsname{i}% + \expandafter\def\csname krntst@T1@115\endcsname{s}% + \fi +} +\typeout{^^JValid values for T1 encoding:}% +\typeout{ligaturing: -2, -1, 0, 1}% +\typeout{Defaults for T1 encoding:}% +\setkeys{krnenc}{ligaturing=1}% +\typeout{}% +\makeatother +% \end{macrocode} +% Now, set \cs{getpsname}. +% \begin{macrocode} +\newcommand\getpsname[1]{% + \ifcase#1% + grave\or% 000 + acute\or% 001 + circumflex\or% 002 + tilde\or% 003 + dieresis\or% 004 + hungarumlaut\or% 005 + ring\or% 006 + caron\or% 007 + breve\or% 008 + macron\or% 009 + dotaccent\or% 010 + cedilla\or% 011 + ogonek\or% 012 + quotesinglbase\or% 013 + guilsinglleft\or% 014 + guilsinglright\or% 015 + quotedblleft\or% 016 + quotedblright\or% 017 + quotedblbase\or% 018 + guillemotleft\or% 019 + guillemotright\or% 020 + rangedash\or% 021 + punctdash\or% 022 + compwordmark\or% 023 + perthousandzero\or% 024 + dotlessi\or% 025 + dotlessj\or% 026 + \csname krntst@T1@027\endcsname\or % 027 + \csname krntst@T1@028\endcsname\or % 028 + \csname krntst@T1@029\endcsname\or % 029 + \csname krntst@T1@030\endcsname\or % 030 + \csname krntst@T1@031\endcsname\or % 031 + visiblespace\or% 032 + exclam\or% 033 + quotedbl\or% 034 + numbersign\or% 035 + dollar\or% 036 + percent\or% 037 + ampersand\or% 038 + quoteright\or% 039 + parenleft\or% 040 + parenright\or% 041 + asterisk\or% 042 + plus\or% 043 + comma\or% 044 + hyphen\or% 045 + period\or% 046 + slash\or% 047 + zero\or% 048 + one\or% 049 + two\or% 050 + three\or% 051 + four\or% 052 + five\or% 053 + six\or% 054 + seven\or% 055 + eight\or% 056 + nine\or% 057 + colon\or% 058 + semicolon\or% 059 + less\or% 060 + equal\or% 061 + greater\or% 062 + question\or% 063 + at\or% 064 + A\or% 065 + B\or% 066 + C\or% 067 + D\or% 068 + E\or% 069 + F\or% 070 + G\or% 071 + H\or% 072 + \csname krntst@T1@073\endcsname\or % 073 + J\or% 074 + K\or% 075 + L\or% 076 + M\or% 077 + N\or% 078 + O\or% 079 + P\or% 080 + Q\or% 081 + R\or% 082 + S\or% 083 + T\or% 084 + U\or% 085 + V\or% 086 + W\or% 087 + X\or% 088 + Y\or% 089 + Z\or% 090 + bracketleft\or% 091 + backslash\or% 092 + bracketright\or% 093 + asciicircum\or% 094 + underscore\or% 095 + quoteleft\or% 096 + a\or% 097 + b\or% 098 + \csname krntst@T1@099\endcsname\or % 099 + d\or% 100 + e\or% 101 + \csname krntst@T1@102\endcsname\or % 102 + g\or% 103 + h\or% 104 + \csname krntst@T1@105\endcsname\or % 105 + j\or% 106 + k\or% 107 + l\or% 108 + m\or% 109 + n\or% 110 + o\or% 111 + p\or% 112 + q\or% 113 + r\or% 114 + \csname krntst@T1@115\endcsname\or % 115 + t\or% 116 + u\or% 117 + v\or% 118 + w\or% 119 + x\or% 120 + y\or% 121 + z\or% 122 + braceleft\or% 123 + bar\or% 124 + braceright\or% 125 + asciitilde\or% 126 + hyphenchar\or% 127 + Abreve\or% 128 + Aogonek\or% 129 + Cacute\or% 130 + Ccaron\or% 131 + Dcaron\or% 132 + Ecaron\or% 133 + Eogonek\or% 134 + Gbreve\or% 135 + Lacute\or% 136 + Lcaron\or% 137 + Lslash\or% 138 + Nacute\or% 139 + Ncaron\or% 140 + Ng\or% 141 + Ohungarumlaut\or% 142 + Racute\or% 143 + Rcaron\or% 144 + Sacute\or% 145 + Scaron\or% 146 + Scedilla\or% 147 + Tcaron\or% 148 + Tcedilla\or% 149 + Uhungarumlaut\or% 150 + Uring\or% 151 + Ydieresis\or% 152 + Zacute\or% 153 + Zcaron\or% 154 + Zdotaccent\or% 155 + \csname krntst@T1@156\endcsname\or % 156 + Idotaccent\or% 157 + dbar\or% 158 + section\or% 159 + abreve\or% 160 + aogonek\or% 161 + cacute\or% 162 + ccaron\or% 163 + dcaron\or% 164 + ecaron\or% 165 + eogonek\or% 166 + gbreve\or% 167 + lacute\or% 168 + lcaron\or% 169 + lslash\or% 170 + nacute\or% 171 + ncaron\or% 172 + ng\or% 173 + ohungarumlaut\or% 174 + racute\or% 175 + rcaron\or% 176 + sacute\or% 177 + scaron\or% 178 + scedilla\or% 179 + tcaron\or% 180 + tcedilla\or% 181 + uhungarumlaut\or% 182 + uring\or% 183 + ydieresis\or% 184 + zacute\or% 185 + zcaron\or% 186 + zdotaccent\or% 187 + \csname krntst@T1@188\endcsname\or % 188 + exclamdown\or% 189 + questiondown\or% 190 + sterling\or% 191 + Agrave\or% 192 + Aacute\or% 193 + Acircumflex\or% 194 + Atilde\or% 195 + Adieresis\or% 196 + Aring\or% 197 + AE\or% 198 + Ccedilla\or% 199 + Egrave\or% 200 + Eacute\or% 201 + Ecircumflex\or% 202 + Edieresis\or% 203 + Igrave\or% 204 + Iacute\or% 205 + Icircumflex\or% 206 + Idieresis\or% 207 + Eth\or% 208 + Ntilde\or% 209 + Ograve\or% 210 + Oacute\or% 211 + Ocircumflex\or% 212 + Otilde\or% 213 + Odieresis\or% 214 + OE\or% 215 + Oslash\or% 216 + Ugrave\or% 217 + Uacute\or% 218 + Ucircumflex\or% 219 + Udieresis\or% 220 + Yacute\or% 221 + Thorn\or% 222 + SS\or% 223 + agrave\or% 224 + aacute\or% 225 + acircumflex\or% 226 + atilde\or% 227 + adieresis\or% 228 + aring\or% 229 + ae\or% 230 + ccedilla\or% 231 + egrave\or% 232 + eacute\or% 233 + ecircumflex\or% 234 + edieresis\or% 235 + igrave\or% 236 + iacute\or% 237 + icircumflex\or% 238 + idieresis\or% 239 + eth\or% 240 + ntilde\or% 241 + ograve\or% 242 + oacute\or% 243 + ocircumflex\or% 244 + otilde\or% 245 + odieresis\or% 246 + oe\or% 247 + oslash\or% 248 + ugrave\or% 249 + uacute\or% 250 + ucircumflex\or% 251 + udieresis\or% 252 + yacute\or% 253 + thorn\or% 254 + germandbls\fi% 255 +} +% +% \end{macrocode} +% +% \subsubsection{TS1 encoding} +% +% The |TS1| encoding. +% The data are taken from |ts1.etx|. +% +% For unknown slots, a strange Postscript name is returned, but no +% warning is generated. +% \begin{macrocode} +%<*mtx&ts1> +\newcommand\getpsname[1]{% + \ifcase#1% + capitalgrave\or% 000 + capitalacute\or% 001 + capitalcircumflex\or% 002 + capitaltilde\or% 003 + capitaldieresis\or% 004 + capitalhungarumlaut\or% 005 + capitalring\or% 006 + capitalcaron\or% 007 + capitalbreve\or% 008 + capitalmacron\or% 009 + capitaldotaccent\or% 010 + cedilla\or% 011 + ogonek\or% 012 + quotesinglbase\or% 013 + .notdef.014\or% 014 + .notdef.015\or% 015 + .notdef.016\or% 016 + .notdef.017\or% 017 + quotedblbase\or% 018 + .notdef.019\or% 019 + .notdef.020\or% 020 + twelveudash\or% 021 + threequartersemdash\or% 022 + capitalcompwordmark\or% 023 + arrowleft\or% 024 + arrowright\or% 025 + tieaccentlowercase\or% 026 + tieaccentcapital\or% 027 + newtieaccentlowercase\or% 028 + newtieaccentcapital\or% 029 + ascendercompwordmark\or% 030 + blank\or% 031 + .notdef.032\or% 032 + .notdef.033\or% 033 + .notdef.034\or% 034 + .notdef.035\or% 035 + dollar\or% 036 + .notdef.037\or% 037 + .notdef.038\or% 038 + quotesingle\or% 039 + .notdef.040\or% 040 + .notdef.041\or% 041 + asteriskcentered\or% 042 + .notdef.043\or% 043 + comma\or% 044 + hyphendbl\or% 045 + period\or% 046 + fraction\or% 047 + zerooldstyle\or% 048 + oneoldstyle\or% 049 + twooldstyle\or% 050 + threeoldstyle\or% 051 + fouroldstyle\or% 052 + fiveoldstyle\or% 053 + sixoldstyle\or% 054 + sevenoldstyle\or% 055 + eightoldstyle\or% 056 + nineoldstyle\or% 057 + .notdef.058\or% 058 + .notdef.059\or% 059 + angbracketleft\or% 060 + minus\or% 061 + angbracketright\or% 062 + .notdef.063\or% 063 + .notdef.064\or% 064 + .notdef.065\or% 065 + .notdef.066\or% 066 + .notdef.067\or% 067 + .notdef.068\or% 068 + .notdef.069\or% 069 + .notdef.070\or% 070 + .notdef.071\or% 071 + .notdef.072\or% 072 + .notdef.073\or% 073 + .notdef.074\or% 074 + .notdef.075\or% 075 + .notdef.076\or% 076 + Omegainv\or% 077 + .notdef.078\or% 078 + bigcircle\or% 079 + .notdef.080\or% 080 + .notdef.081\or% 081 + .notdef.082\or% 082 + .notdef.083\or% 083 + .notdef.084\or% 084 + .notdef.085\or% 085 + .notdef.086\or% 086 + Omega\or% 087 + .notdef.088\or% 088 + .notdef.089\or% 089 + .notdef.090\or% 090 + openbracketleft\or% 091 + .notdef.092\or% 092 + openbracketright\or% 093 + arrowup\or% 094 + arrowdown\or% 095 + asciigrave\or% 096 + .notdef.097\or% 097 + born\or% 098 + divorced\or% 099 + died\or% 100 + .notdef.101\or% 101 + .notdef.102\or% 102 + .notdef.103\or% 103 + .notdef.104\or% 104 + .notdef.105\or% 105 + .notdef.106\or% 106 + .notdef.107\or% 107 + leaf\or% 108 + married\or% 109 + musicalnote\or% 110 + .notdef.111\or% 111 + .notdef.112\or% 112 + .notdef.113\or% 113 + .notdef.114\or% 114 + .notdef.115\or% 115 + .notdef.116\or% 116 + .notdef.117\or% 117 + .notdef.118\or% 118 + .notdef.119\or% 119 + .notdef.120\or% 120 + .notdef.121\or% 121 + .notdef.122\or% 122 + .notdef.123\or% 123 + .notdef.124\or% 124 + .notdef.125\or% 125 + tildelow\or% 126 + hyphendblchar\or% 127 + asciibreve\or% 128 + asciicaron\or% 129 + asciiacutedbl\or% 130 + asciigravedbl\or% 131 + dagger\or% 132 + daggerdbl\or% 133 + bardbl\or% 134 + perthousand\or% 135 + bullet\or% 136 + centigrade\or% 137 + dollaroldstyle\or% 138 + centoldstyle\or% 139 + florin\or% 140 + colonmonetary\or% 141 + won\or% 142 + naira\or% 143 + guarani\or% 144 + peso\or% 145 + lira\or% 146 + recipe\or% 147 + interrobang\or% 148 + interrobangdown\or% 149 + dong\or% 150 + trademark\or% 151 + pertenthousand\or% 152 + pilcrow\or% 153 + baht\or% 154 + numero\or% 155 + discount\or% 156 + estimated\or% 157 + openbullet\or% 158 + servicemark\or% 159 + quillbracketleft\or% 160 + quillbracketright\or% 161 + cent\or% 162 + sterling\or% 163 + currency\or% 164 + yen\or% 165 + brokenbar\or% 166 + section\or% 167 + asciidieresis\or% 168 + copyright\or% 169 + ordfeminine\or% 170 + copyleft\or% 171 + logicalnot\or% 172 + circledP\or% 173 + registered\or% 174 + asciimacron\or% 175 + degree\or% 176 + plusminus\or% 177 + twosuperior\or% 178 + threesuperior\or% 179 + asciiacute\or% 180 + mu\or% 181 + paragraph\or% 182 + periodcentered\or% 183 + referencemark\or% 184 + onesuperior\or% 185 + ordmasculine\or% 186 + radical\or% 187 + onequarter\or% 188 + onehalf\or% 189 + threequarters\or% 190 + euro\or% 191 + .notdef.192\or% 192 + .notdef.193\or% 193 + .notdef.194\or% 194 + .notdef.195\or% 195 + .notdef.196\or% 196 + .notdef.197\or% 197 + .notdef.198\or% 198 + .notdef.199\or% 199 + .notdef.200\or% 200 + .notdef.201\or% 201 + .notdef.202\or% 202 + .notdef.203\or% 203 + .notdef.204\or% 204 + .notdef.205\or% 205 + .notdef.206\or% 206 + .notdef.207\or% 207 + .notdef.208\or% 208 + .notdef.209\or% 209 + .notdef.210\or% 210 + .notdef.211\or% 211 + .notdef.212\or% 212 + .notdef.213\or% 213 + multiply\or% 214 + .notdef.215\or% 215 + .notdef.216\or% 216 + .notdef.217\or% 217 + .notdef.218\or% 218 + .notdef.219\or% 219 + .notdef.220\or% 220 + .notdef.221\or% 221 + .notdef.222\or% 222 + .notdef.223\or% 223 + .notdef.224\or% 224 + .notdef.225\or% 225 + .notdef.226\or% 226 + .notdef.227\or% 227 + .notdef.228\or% 228 + .notdef.229\or% 229 + .notdef.230\or% 230 + .notdef.231\or% 231 + .notdef.232\or% 232 + .notdef.233\or% 233 + .notdef.234\or% 234 + .notdef.235\or% 235 + .notdef.236\or% 236 + .notdef.237\or% 237 + .notdef.238\or% 238 + .notdef.239\or% 239 + .notdef.240\or% 240 + .notdef.241\or% 241 + .notdef.242\or% 242 + .notdef.243\or% 243 + .notdef.244\or% 244 + .notdef.245\or% 245 + divide\or% 246 + .notdef.247\or% 247 + .notdef.248\or% 248 + .notdef.249\or% 249 + .notdef.250\or% 250 + .notdef.251\or% 251 + .notdef.252\or% 252 + .notdef.253\or% 253 + .notdef.254\or% 254 + .notdef.255\fi% 255 +} +% +% \end{macrocode} +% +% \subsubsection{OT1 encoding} +% +% The |OT1| encoding. +% The data are taken from |ot1.etx|. +% +% For unknown slots, a strange Postscript name is returned, but no +% warning is generated. +% +% The OT1 encoding uses different font names depending on +% upright/italic and ligatures. +% This is handled using the \cs{OT1@}\meta{slot} commands that are set +% for an upright roman font by default. +% +% Set the default glyph names. +% \begin{macrocode} +%<*mtx&ot1> +\makeatletter +% \end{macrocode} +% Set options to switch to other font shapes. +% \begin{macrocode} +\define@key{krnenc}{ligaturing}[2]{% + \typeout{OT1 encoding: ligaturing = #1}% + \ifnum#1=2\relax + \expandafter\def\csname krntst@OT1@011\endcsname{ff}% + \expandafter\def\csname krntst@OT1@012\endcsname{fi}% + \expandafter\def\csname krntst@OT1@013\endcsname{fl}% + \expandafter\def\csname krntst@OT1@014\endcsname{ffi}% + \expandafter\def\csname krntst@OT1@015\endcsname{ffl}% + \expandafter\def\csname krntst@OT1@060\endcsname{exclamdown}% + \expandafter\def\csname krntst@OT1@062\endcsname{questiondown}% + \else + \expandafter\def\csname krntst@OT1@011\endcsname{arrowup}% + \expandafter\def\csname krntst@OT1@012\endcsname{arrowdown}% + \expandafter\def\csname krntst@OT1@013\endcsname{quotesingle}% + \expandafter\def\csname krntst@OT1@014\endcsname{exclamdown}% + \expandafter\def\csname krntst@OT1@015\endcsname{questiondown}% + \expandafter\def\csname krntst@OT1@060\endcsname{less}% + \expandafter\def\csname krntst@OT1@062\endcsname{greater}% + \fi + \ifnum#1=0\relax + \expandafter\def\csname krntst@OT1@032\endcsname{visiblespace}% + \expandafter\def\csname krntst@OT1@034\endcsname{quotedbl}% + \expandafter\def\csname krntst@OT1@092\endcsname{backslash}% + \expandafter\def\csname krntst@OT1@095\endcsname{underscore}% + \expandafter\def\csname krntst@OT1@123\endcsname{braceleft}% + \expandafter\def\csname krntst@OT1@124\endcsname{bar}% + \expandafter\def\csname krntst@OT1@125\endcsname{braceright}% + \else + \expandafter\def\csname krntst@OT1@032\endcsname{lslashslash}% + \expandafter\def\csname krntst@OT1@034\endcsname{quotedblright}% + \expandafter\def\csname krntst@OT1@092\endcsname{quotedblleft}% + \expandafter\def\csname krntst@OT1@095\endcsname{dotaccent}% + \expandafter\def\csname krntst@OT1@123\endcsname{rangedash}% + \expandafter\def\csname krntst@OT1@124\endcsname{punctdash}% + \expandafter\def\csname krntst@OT1@125\endcsname{hungarumlaut}% + \fi +} +\define@key{krnenc}{italicizing}[true]{% + \typeout{OT1 encoding: italicizing = #1}% + \csname if#1\endcsname + \expandafter\def\csname krntst@OT1@036\endcsname{sterling}% + \else + \expandafter\def\csname krntst@OT1@036\endcsname{dollar} + \fi +} +\typeout{^^JValid values for OT1 encoding:}% +\typeout{ligaturing: 0, 1, 2}% +\typeout{italicizing: false, true}% +\typeout{Defaults for OT1 encoding:}% +\setkeys{krnenc}{ligaturing=2,italicizing=false}% +\typeout{}% +\makeatother +% \end{macrocode} +% Now, set \cs{getpsname}. +% \begin{macrocode} +\newcommand\getpsname[1]{% + \ifcase#1% + Gamma\or % 000 + Delta\or % 001 + Theta\or % 002 + Lambda\or % 003 + Xi\or % 004 + Pi\or % 005 + Sigma\or % 006 + Upsilon\or % 007 + Phi\or % 008 + Psi\or % 009 + Omega\or % 010 + \csname krntst@OT1@011\endcsname\or % 011 + \csname krntst@OT1@012\endcsname\or % 012 + \csname krntst@OT1@013\endcsname\or % 013 + \csname krntst@OT1@014\endcsname\or % 014 + \csname krntst@OT1@015\endcsname\or % 015 + dotlessi\or % 016 + dotlessj\or % 017 + grave\or % 018 + acute\or % 019 + caron\or % 020 + breve\or % 021 + macron\or % 022 + ringfitted\or % 023 + cedilla\or % 024 + germandbls\or % 025 + ae\or % 026 + oe\or % 027 + oslash\or % 028 + AE\or % 029 + OE\or % 030 + Oslash\or % 031 + \csname krntst@OT1@032\endcsname\or % 032 + exclam\or % 033 + \csname krntst@OT1@034\endcsname\or % 034 + numbersign\or % 035 + \csname krntst@OT1@036\endcsname\or % 036 + percent\or % 037 + ampersand\or % 038 + quoteright\or % 039 + parenleft\or % 040 + parenright\or % 041 + asterisk\or % 042 + plus\or % 043 + comma\or % 044 + hyphen\or % 045 + period\or % 046 + slash\or % 047 + zero\or % 048 + one\or % 049 + two\or % 050 + three\or % 051 + four\or % 052 + five\or % 053 + six\or % 054 + seven\or % 055 + eight\or % 056 + nine\or % 057 + colon\or % 058 + semicolon\or % 059 + \csname krntst@OT1@060\endcsname\or % 060 + equal\or % 061 + \csname krntst@OT1@062\endcsname\or % 062 + question\or % 063 + at\or % 064 + A\or % 065 + B\or % 066 + C\or % 067 + D\or % 068 + E\or % 069 + F\or % 070 + G\or % 071 + H\or % 072 + I\or % 073 + J\or % 074 + K\or % 075 + L\or % 076 + M\or % 077 + N\or % 078 + O\or % 079 + P\or % 080 + Q\or % 081 + R\or % 082 + S\or % 083 + T\or % 084 + U\or % 085 + V\or % 086 + W\or % 087 + X\or % 088 + Y\or % 089 + Z\or % 090 + bracketleft\or % 091 + \csname krntst@OT1@092\endcsname\or % 092 + bracketright\or % 093 + circumflex\or % 094 + \csname krntst@OT1@095\endcsname\or % 095 + quoteleft\or % 096 + a\or % 097 + b\or % 098 + c\or % 099 + d\or % 100 + e\or % 101 + f\or % 102 + g\or % 103 + h\or % 104 + i\or % 105 + j\or % 106 + k\or % 107 + l\or % 108 + m\or % 109 + n\or % 110 + o\or % 111 + p\or % 112 + q\or % 113 + r\or % 114 + s\or % 115 + t\or % 116 + u\or % 117 + v\or % 118 + w\or % 119 + x\or % 120 + y\or % 121 + z\or % 122 + \csname krntst@OT1@123\endcsname\or % 123 + \csname krntst@OT1@124\endcsname\or % 124 + \csname krntst@OT1@125\endcsname\or % 125 + tilde\or % 126 + dieresis\or % 127 + .notdef.128\or % 128 + .notdef.129\or % 129 + .notdef.130\or % 130 + .notdef.131\or % 131 + .notdef.132\or % 132 + .notdef.133\or % 133 + .notdef.134\or % 134 + .notdef.135\or % 135 + .notdef.136\or % 136 + .notdef.137\or % 137 + Lslash\or % 138 + .notdef.139\or % 139 + .notdef.140\or % 140 + .notdef.141\or % 141 + .notdef.142\or % 142 + .notdef.143\or % 143 + .notdef.144\or % 144 + .notdef.145\or % 145 + .notdef.146\or % 146 + .notdef.147\or % 147 + .notdef.148\or % 148 + .notdef.149\or % 149 + .notdef.150\or % 150 + .notdef.151\or % 151 + .notdef.152\or % 152 + .notdef.153\or % 153 + .notdef.154\or % 154 + .notdef.155\or % 155 + .notdef.156\or % 156 + .notdef.157\or % 157 + .notdef.158\or % 158 + .notdef.159\or % 159 + .notdef.160\or % 160 + .notdef.161\or % 161 + .notdef.162\or % 162 + .notdef.163\or % 163 + .notdef.164\or % 164 + .notdef.165\or % 165 + .notdef.166\or % 166 + .notdef.167\or % 167 + .notdef.168\or % 168 + .notdef.169\or % 169 + lslash\or % 170 + .notdef.171\or % 171 + .notdef.172\or % 172 + .notdef.173\or % 173 + .notdef.174\or % 174 + .notdef.175\or % 175 + .notdef.176\or % 176 + .notdef.177\or % 177 + .notdef.178\or % 178 + .notdef.179\or % 179 + .notdef.180\or % 180 + .notdef.181\or % 181 + .notdef.182\or % 182 + .notdef.183\or % 183 + .notdef.184\or % 184 + .notdef.185\or % 185 + .notdef.186\or % 186 + .notdef.187\or % 187 + .notdef.188\or % 188 + .notdef.189\or % 189 + .notdef.190\or % 190 + .notdef.191\or % 191 + .notdef.192\or % 192 + .notdef.193\or % 193 + .notdef.194\or % 194 + .notdef.195\or % 195 + .notdef.196\or % 196 + .notdef.197\or % 197 + .notdef.198\or % 198 + .notdef.199\or % 199 + .notdef.200\or % 200 + .notdef.201\or % 201 + .notdef.202\or % 202 + .notdef.203\or % 203 + .notdef.204\or % 204 + .notdef.205\or % 205 + .notdef.206\or % 206 + .notdef.207\or % 207 + .notdef.208\or % 208 + .notdef.209\or % 209 + .notdef.210\or % 210 + .notdef.211\or % 211 + .notdef.212\or % 212 + .notdef.213\or % 213 + .notdef.214\or % 214 + .notdef.215\or % 215 + .notdef.216\or % 216 + .notdef.217\or % 217 + .notdef.218\or % 218 + .notdef.219\or % 219 + .notdef.220\or % 220 + .notdef.221\or % 221 + .notdef.222\or % 222 + .notdef.223\or % 223 + .notdef.224\or % 224 + .notdef.225\or % 225 + .notdef.226\or % 226 + .notdef.227\or % 227 + .notdef.228\or % 228 + .notdef.229\or % 229 + .notdef.230\or % 230 + .notdef.231\or % 231 + .notdef.232\or % 232 + .notdef.233\or % 233 + .notdef.234\or % 234 + .notdef.235\or % 235 + .notdef.236\or % 236 + .notdef.237\or % 237 + .notdef.238\or % 238 + .notdef.239\or % 239 + .notdef.240\or % 240 + .notdef.241\or % 241 + .notdef.242\or % 242 + .notdef.243\or % 243 + .notdef.244\or % 244 + .notdef.245\or % 245 + .notdef.246\or % 246 + .notdef.247\or % 247 + .notdef.248\or % 248 + .notdef.249\or % 249 + .notdef.250\or % 250 + .notdef.251\or % 251 + .notdef.252\or % 252 + .notdef.253\or % 253 + .notdef.254\or % 254 + .notdef.255\fi % 255 +} +% +% \end{macrocode} +% +% \subsubsection{T2A encoding} +% +% The |T2A| encoding. +% The data are taken from |t2a.etx|. +% +% For unknown slots, a strange Postscript name is returned, but no +% warning is generated. +% \begin{macrocode} +%<*mtx&t2a> +\newcommand\getpsname[1]{% + \ifcase#1% + grave\or% 000 + acute\or% 001 + circumflex\or% 002 + tilde\or% 003 + dieresis\or% 004 + hungarumlaut\or% 005 + ring\or% 006 + caron\or% 007 + breve\or% 008 + macron\or% 009 + dotaccent\or% 010 + cedilla\or% 011 + ogonek\or% 012 + CYRpalochka\or% 013 + angleleft\or% 014 + angleright\or% 015 + quotedblleft\or% 016 + quotedblright\or% 017 + cyrflex\or% 018 + dblgrave\or% 019 + cyrbreve\or% 020 + rangedash\or% 021 + cyrdash\or% 022 + compwordmark\or% 023 + perthousandzero\or% 024 + dotlessi\or% 025 + dotlessj\or% 026 + ff\or% 027 + fi\or% 028 + fl\or% 029 + ffi\or% 030 + ffl\or% 031 + visiblespace\or% 032 + exclam\or% 033 + quotedbl\or% 034 + numbersign\or% 035 + dollar\or% 036 + percent\or% 037 + ampersand\or% 038 + quoteright\or% 039 + parenleft\or% 040 + parenright\or% 041 + asterisk\or% 042 + plus\or% 043 + comma\or% 044 + hyphen\or% 045 + period\or% 046 + slash\or% 047 + zero\or% 048 + one\or% 049 + two\or% 050 + three\or% 051 + four\or% 052 + five\or% 053 + six\or% 054 + seven\or% 055 + eight\or% 056 + nine\or% 057 + colon\or% 058 + semicolon\or% 059 + less\or% 060 + equal\or% 061 + greater\or% 062 + question\or% 063 + at\or% 064 + A\or% 065 + B\or% 066 + C\or% 067 + D\or% 068 + E\or% 069 + F\or% 070 + G\or% 071 + H\or% 072 + I\or% 073 + J\or% 074 + K\or% 075 + L\or% 076 + M\or% 077 + N\or% 078 + O\or% 079 + P\or% 080 + Q\or% 081 + R\or% 082 + S\or% 083 + T\or% 084 + U\or% 085 + V\or% 086 + W\or% 087 + X\or% 088 + Y\or% 089 + Z\or% 090 + bracketleft\or% 091 + backslash\or% 092 + bracketright\or% 093 + asciicircum\or% 094 + underscore\or% 095 + quoteleft\or% 096 + a\or% 097 + b\or% 098 + c\or% 099 + d\or% 100 + e\or% 101 + f\or% 102 + g\or% 103 + h\or% 104 + i\or% 105 + j\or% 106 + k\or% 107 + l\or% 108 + m\or% 109 + n\or% 110 + o\or% 111 + p\or% 112 + q\or% 113 + r\or% 114 + s\or% 115 + t\or% 116 + u\or% 117 + v\or% 118 + w\or% 119 + x\or% 120 + y\or% 121 + z\or% 122 + braceleft\or% 123 + bar\or% 124 + braceright\or% 125 + asciitilde\or% 126 + hyphenchar\or% 127 + CYRGUP\or% 128 + CYRGHCRS\or% 129 + CYRDJE\or% 130 + CYRTSHE\or% 131 + CYRSHHA\or% 132 + CYRZHDSC\or% 133 + CYRZDSC\or% 134 + CYRLJE\or% 135 + CYRYI\or% 136 + CYRKDSC\or% 137 + CYRKBEAK\or% 138 + CYRKVCRS\or% 139 + CYRAE\or% 140 + CYRNDSC\or% 141 + CYRNG\or% 142 + CYRDZE\or% 143 + CYROTLD\or% 144 + CYRSDSC\or% 145 + CYRUSHRT\or% 146 + CYRY\or% 147 + CYRYHCRS\or% 148 + CYRHDSC\or% 149 + CYRDZHE\or% 150 + CYRCHVCRS\or% 151 + CYRCHRDSC\or% 152 + CYRIE\or% 153 + CYRSCHWA\or% 154 + CYRNJE\or% 155 + CYRYO\or% 156 + numero\or% 157 + currency\or% 158 + section\or% 159 + cyrgup\or% 160 + cyrghcrs\or% 161 + cyrdje\or% 162 + cyrtshe\or% 163 + cyrshha\or% 164 + cyrzhdsc\or% 165 + cyrzdsc\or% 166 + cyrlje\or% 167 + cyryi\or% 168 + cyrkdsc\or% 169 + cyrkbeak\or% 170 + cyrkvcrs\or% 171 + cyrae\or% 172 + cyrndsc\or% 173 + cyrng\or% 174 + cyrdze\or% 175 + cyrotld\or% 176 + cyrsdsc\or% 177 + cyrushrt\or% 178 + cyry\or% 179 + cyryhcrs\or% 180 + cyrhdsc\or% 181 + cyrdzhe\or% 182 + cyrchvcrs\or% 183 + cyrchrdsc\or% 184 + cyrie\or% 185 + cyrschwa\or% 186 + cyrnje\or% 187 + cyryo\or% 188 + quotedblbase\or% 189 + guillemotleft\or% 190 + guillemotright\or% 191 + CYRA\or% 192 + CYRB\or% 193 + CYRV\or% 194 + CYRG\or% 195 + CYRD\or% 196 + CYRE\or% 197 + CYRZH\or% 198 + CYRZ\or% 199 + CYRI\or% 200 + CYRISHRT\or% 201 + CYRK\or% 202 + CYRL\or% 203 + CYRM\or% 204 + CYRN\or% 205 + CYRO\or% 206 + CYRP\or% 207 + CYRR\or% 208 + CYRS\or% 209 + CYRT\or% 210 + CYRU\or% 211 + CYRF\or% 212 + CYRH\or% 213 + CYRC\or% 214 + CYRCH\or% 215 + CYRSH\or% 216 + CYRSHCH\or% 217 + CYRHRDSN\or% 218 + CYRERY\or% 219 + CYRSFTSN\or% 220 + CYREREV\or% 221 + CYRYU\or% 222 + CYRYA\or% 223 + cyra\or% 224 + cyrb\or% 225 + cyrv\or% 226 + cyrg\or% 227 + cyrd\or% 228 + cyre\or% 229 + cyrzh\or% 230 + cyrz\or% 231 + cyri\or% 232 + cyrishrt\or% 233 + cyrk\or% 234 + cyrl\or% 235 + cyrm\or% 236 + cyrn\or% 237 + cyro\or% 238 + cyrp\or% 239 + cyrr\or% 240 + cyrs\or% 241 + cyrt\or% 242 + cyru\or% 243 + cyrf\or% 244 + cyrh\or% 245 + cyrc\or% 246 + cyrch\or% 247 + cyrsh\or% 248 + cyrshch\or% 249 + cyrhrdsn\or% 250 + cyrery\or% 251 + cyrsftsn\or% 252 + cyrerev\or% 253 + cyryu\or% 254 + cyrya\fi% 255 +} +% +% \end{macrocode} +% +% \subsubsection{T2A encoding} +% +% The |T2B| encoding. +% The data are taken from |t2b.etx|. +% +% For unknown slots, a strange Postscript name is returned, but no +% warning is generated. +% \begin{macrocode} +%<*mtx&t2b> +\newcommand\getpsname[1]{% + \ifcase#1% + grave\or% 000 + acute\or% 001 + circumflex\or% 002 + tilde\or% 003 + dieresis\or% 004 + hungarumlaut\or% 005 + ring\or% 006 + caron\or% 007 + breve\or% 008 + macron\or% 009 + dotaccent\or% 010 + cedilla\or% 011 + ogonek\or% 012 + CYRpalochka\or% 013 + angleleft\or% 014 + angleright\or% 015 + quotedblleft\or% 016 + quotedblright\or% 017 + cyrflex\or% 018 + dblgrave\or% 019 + cyrbreve\or% 020 + rangedash\or% 021 + cyrdash\or% 022 + compwordmark\or% 023 + perthousandzero\or% 024 + dotlessi\or% 025 + dotlessj\or% 026 + ff\or% 027 + fi\or% 028 + fl\or% 029 + ffi\or% 030 + ffl\or% 031 + visiblespace\or% 032 + exclam\or% 033 + quotedbl\or% 034 + numbersign\or% 035 + dollar\or% 036 + percent\or% 037 + ampersand\or% 038 + quoteright\or% 039 + parenleft\or% 040 + parenright\or% 041 + asterisk\or% 042 + plus\or% 043 + comma\or% 044 + hyphen\or% 045 + period\or% 046 + slash\or% 047 + zero\or% 048 + one\or% 049 + two\or% 050 + three\or% 051 + four\or% 052 + five\or% 053 + six\or% 054 + seven\or% 055 + eight\or% 056 + nine\or% 057 + colon\or% 058 + semicolon\or% 059 + less\or% 060 + equal\or% 061 + greater\or% 062 + question\or% 063 + at\or% 064 + A\or% 065 + B\or% 066 + C\or% 067 + D\or% 068 + E\or% 069 + F\or% 070 + G\or% 071 + H\or% 072 + I\or% 073 + J\or% 074 + K\or% 075 + L\or% 076 + M\or% 077 + N\or% 078 + O\or% 079 + P\or% 080 + Q\or% 081 + R\or% 082 + S\or% 083 + T\or% 084 + U\or% 085 + V\or% 086 + W\or% 087 + X\or% 088 + Y\or% 089 + Z\or% 090 + bracketleft\or% 091 + backslash\or% 092 + bracketright\or% 093 + asciicircum\or% 094 + underscore\or% 095 + quoteleft\or% 096 + a\or% 097 + b\or% 098 + c\or% 099 + d\or% 100 + e\or% 101 + f\or% 102 + g\or% 103 + h\or% 104 + i\or% 105 + j\or% 106 + k\or% 107 + l\or% 108 + m\or% 109 + n\or% 110 + o\or% 111 + p\or% 112 + q\or% 113 + r\or% 114 + s\or% 115 + t\or% 116 + u\or% 117 + v\or% 118 + w\or% 119 + x\or% 120 + y\or% 121 + z\or% 122 + braceleft\or% 123 + bar\or% 124 + braceright\or% 125 + asciitilde\or% 126 + hyphenchar\or% 127 + CYRGDSCHCRS\or% 128 + CYRGHCRS\or% 129 + CYRGDSC\or% 130 + CYRGHK\or% 131 + CYRSHHA\or% 132 + CYRZHDSC\or% 133 + CYRDELTA\or% 134 + CYRABHDZE\or% 135 + CYRLJE\or% 136 + CYRKDSC\or% 137 + CYRLDSC\or% 138 + CYRKHK\or% 139 + CYRLHK\or% 140 + CYRNDSC\or% 141 + CYRNG\or% 142 + CYRNHK\or% 143 + CYROTLD\or% 144 + CYRSACRS\or% 145 + CYRUSHRT\or% 146 + CYRY\or% 147 + CYRHHCRS\or% 148 + CYRHDSC\or% 149 + CYRHHK\or% 150 + CYRCHLDSC\or% 151 + CYRCHRDSC\or% 152 + CYRNJE\or% 153 + CYRSCHWA\or% 154 + CYREPS\or% 155 + CYRYO\or% 156 + numero\or% 157 + currency\or% 158 + section\or% 159 + cyrgdschcrs\or% 160 + cyrghcrs\or% 161 + cyrgdsc\or% 162 + cyrghk\or% 163 + cyrshha\or% 164 + cyrzhdsc\or% 165 + cyrdelta\or% 166 + cyrabhdze\or% 167 + cyrlje\or% 168 + cyrkdsc\or% 169 + cyrldsc\or% 170 + cyrkhk\or% 171 + cyrlhk\or% 172 + cyrndsc\or% 173 + cyrng\or% 174 + cyrnhk\or% 175 + cyrotld\or% 176 + cyrsacrs\or% 177 + cyrushrt\or% 178 + cyry\or% 179 + cyrhhcrs\or% 180 + cyrhdsc\or% 181 + cyrhhk\or% 182 + cyrchldsc\or% 183 + cyrchrdsc\or% 184 + cyrnje\or% 185 + cyrschwa\or% 186 + cyreps\or% 187 + cyryo\or% 188 + quotedblbase\or% 189 + guillemotleft\or% 190 + guillemotright\or% 191 + CYRA\or% 192 + CYRB\or% 193 + CYRV\or% 194 + CYRG\or% 195 + CYRD\or% 196 + CYRE\or% 197 + CYRZH\or% 198 + CYRZ\or% 199 + CYRI\or% 200 + CYRISHRT\or% 201 + CYRK\or% 202 + CYRL\or% 203 + CYRM\or% 204 + CYRN\or% 205 + CYRO\or% 206 + CYRP\or% 207 + CYRR\or% 208 + CYRS\or% 209 + CYRT\or% 210 + CYRU\or% 211 + CYRF\or% 212 + CYRH\or% 213 + CYRC\or% 214 + CYRCH\or% 215 + CYRSH\or% 216 + CYRSHCH\or% 217 + CYRHRDSN\or% 218 + CYRERY\or% 219 + CYRSFTSN\or% 220 + CYREREV\or% 221 + CYRYU\or% 222 + CYRYA\or% 223 + cyra\or% 224 + cyrb\or% 225 + cyrv\or% 226 + cyrg\or% 227 + cyrd\or% 228 + cyre\or% 229 + cyrzh\or% 230 + cyrz\or% 231 + cyri\or% 232 + cyrishrt\or% 233 + cyrk\or% 234 + cyrl\or% 235 + cyrm\or% 236 + cyrn\or% 237 + cyro\or% 238 + cyrp\or% 239 + cyrr\or% 240 + cyrs\or% 241 + cyrt\or% 242 + cyru\or% 243 + cyrf\or% 244 + cyrh\or% 245 + cyrc\or% 246 + cyrch\or% 247 + cyrsh\or% 248 + cyrshch\or% 249 + cyrhrdsn\or% 250 + cyrery\or% 251 + cyrsftsn\or% 252 + cyrerev\or% 253 + cyryu\or% 254 + cyrya\fi% 255 +} +% +% \end{macrocode} +% +% \subsubsection{LY1 encoding} +% +% The |LY1| encoding. +% The data are taken from |texnansi.enc|. +% +% For unknown slots, a strange Postscript name is returned, but no +% warning is generated. +% \begin{macrocode} +%<*mtx&ly1> +\newcommand\getpsname[1]{% + \ifcase#1% + .notdef.000\or % 000 + Euro\or % 001 + .notdef.002\or % 002 + .notdef.003\or % 003 + fraction\or % 004 + dotaccent\or % 005 + hungarumlaut\or % 006 + ogonek\or % 007 + fl\or % 008 + .notdef.009\or % 009 + cwm\or % 010 + ff\or % 011 + fi\or % 012 + .notdef.013\or % 013 + ffi\or % 014 + ffl\or % 015 + dotlessi\or % 016 + dotlessj\or % 017 + grave\or % 018 + acute\or % 019 + caron\or % 020 + breve\or % 021 + macron\or % 022 + ring\or % 023 + cedilla\or % 024 + germandbls\or % 025 + ae\or % 026 + oe\or % 027 + oslash\or % 028 + AE\or % 029 + OE\or % 030 + Oslash\or % 031 + space\or % 032 + exclam\or % 033 + quotedbl\or % 034 + numbersign\or % 035 + dollar\or % 036 + percent\or % 037 + ampersand\or % 038 + quoteright\or % 039 + parenleft\or % 040 + parenright\or % 041 + asterisk\or % 042 + plus\or % 043 + comma\or % 044 + hyphen\or % 045 + period\or % 046 + slash\or % 047 + zero\or % 048 + one\or % 049 + two\or % 050 + three\or % 051 + four\or % 052 + five\or % 053 + six\or % 054 + seven\or % 055 + eight\or % 056 + nine\or % 057 + colon\or % 058 + semicolon\or % 059 + less\or % 060 + equal\or % 061 + greater\or % 062 + question\or % 063 + at\or % 064 + A\or % 065 + B\or % 066 + C\or % 067 + D\or % 068 + E\or % 069 + F\or % 070 + G\or % 071 + H\or % 072 + I\or % 073 + J\or % 074 + K\or % 075 + L\or % 076 + M\or % 077 + N\or % 078 + O\or % 079 + P\or % 080 + Q\or % 081 + R\or % 082 + S\or % 083 + T\or % 084 + U\or % 085 + V\or % 086 + W\or % 087 + X\or % 088 + Y\or % 089 + Z\or % 090 + bracketleft\or % 091 + backslash\or % 092 + bracketright\or % 093 + circumflex\or % 094 + underscore\or % 095 + quoteleft\or % 096 + a\or % 097 + b\or % 098 + c\or % 099 + d\or % 100 + e\or % 101 + f\or % 102 + g\or % 103 + h\or % 104 + i\or % 105 + j\or % 106 + k\or % 107 + l\or % 108 + m\or % 109 + n\or % 110 + o\or % 111 + p\or % 112 + q\or % 113 + r\or % 114 + s\or % 115 + t\or % 116 + u\or % 117 + v\or % 118 + w\or % 119 + x\or % 120 + y\or % 121 + z\or % 122 + braceleft\or % 123 + bar\or % 124 + braceright\or % 125 + tilde\or % 126 + dieresis\or % 127 + Lslash\or % 128 + quotesingle\or % 129 + quotesinglbase\or % 130 + florin\or % 131 + quotedblbase\or % 132 + ellipsis\or % 133 + dagger\or % 134 + daggerdbl\or % 135 + circumflex\or % 136 + perthousand\or % 137 + Scaron\or % 138 + guilsinglleft\or % 139 + OE\or % 140 + Zcaron\or % 141 + asciicircum\or % 142 + minus\or % 143 + lslash\or % 144 + quoteleft\or % 145 + quoteright\or % 146 + quotedblleft\or % 147 + quotedblright\or % 148 + bullet\or % 149 + endash\or % 150 + emdash\or % 151 + tilde\or % 152 + trademark\or % 153 + scaron\or % 154 + guilsinglright\or % 155 + oe\or % 156 + zcaron\or % 157 + asciitilde\or % 158 + Ydieresis\or % 159 + nbspace\or % 160 + exclamdown\or % 161 + cent\or % 162 + sterling\or % 163 + currency\or % 164 + yen\or % 165 + brokenbar\or % 166 + section\or % 167 + dieresis\or % 168 + copyright\or % 169 + ordfeminine\or % 170 + guillemotleft\or % 171 + logicalnot\or % 172 + sfthyphen\or % 173 + registered\or % 174 + macron\or % 175 + degree\or % 176 + plusminus\or % 177 + twosuperior\or % 178 + threesuperior\or % 179 + acute\or % 180 + mu\or % 181 + paragraph\or % 182 + periodcentered\or % 183 + cedilla\or % 184 + onesuperior\or % 185 + ordmasculine\or % 186 + guillemotright\or % 187 + onequarter\or % 188 + onehalf\or % 189 + threequarters\or % 190 + questiondown\or % 191 + Agrave\or % 192 + Aacute\or % 193 + Acircumflex\or % 194 + Atilde\or % 195 + Adieresis\or % 196 + Aring\or % 197 + AE\or % 198 + Ccedilla\or % 199 + Egrave\or % 200 + Eacute\or % 201 + Ecircumflex\or % 202 + Edieresis\or % 203 + Igrave\or % 204 + Iacute\or % 205 + Icircumflex\or % 206 + Idieresis\or % 207 + Eth\or % 208 + Ntilde\or % 209 + Ograve\or % 210 + Oacute\or % 211 + Ocircumflex\or % 212 + Otilde\or % 213 + Odieresis\or % 214 + multiply\or % 215 + Oslash\or % 216 + Ugrave\or % 217 + Uacute\or % 218 + Ucircumflex\or % 219 + Udieresis\or % 220 + Yacute\or % 221 + Thorn\or % 222 + germandbls\or % 223 + agrave\or % 224 + aacute\or % 225 + acircumflex\or % 226 + atilde\or % 227 + adieresis\or % 228 + aring\or % 229 + ae\or % 230 + ccedilla\or % 231 + egrave\or % 232 + eacute\or % 233 + ecircumflex\or % 234 + edieresis\or % 235 + igrave\or % 236 + iacute\or % 237 + icircumflex\or % 238 + idieresis\or % 239 + eth\or % 240 + ntilde\or % 241 + ograve\or % 242 + oacute\or % 243 + ocircumflex\or % 244 + otilde\or % 245 + odieresis\or % 246 + divide\or % 247 + oslash\or % 248 + ugrave\or % 249 + uacute\or % 250 + ucircumflex\or % 251 + udieresis\or % 252 + yacute\or % 253 + thorn\or % 254 + ydieresis\fi % 255 +} +% +% \end{macrocode} +% +% +% \subsection{Templates} +% +% Generate template files for T1 and TS1 encoding. +% They should be self-describing. +% +% \subsubsection{T1 encoding} +% +% \begin{macrocode} +%<*template&t1> +\listfiles +%% Replace the `XXX' in the next line by the 3- or 4-character long +%% abbreviation for your font. +\documentclass[family=XXX]{kerntest} + +%% Replace the settings by these you want to test. +\kernsetup{encoding=T1,series=m,shape=n,example=hello} +\kernsetup{size=14.40pt,baselineskip=16.5pt,papersize=a4paper} + +%% The next line can be used to add a name suffix to the output |mtx| file. +%% \kernsetup{extraname=normal} + +%% Set encoding parameters. +%% Set ligaturing: 1=all, 0=all, -1=some, -2=none +%% \encodingsetup{ligaturing=1} + +%% If you are using a font with different design sizes and if you want +%% to test one design size scaled to another one, you may input a +%% modified fd file for your font. To generate this new fd file, just +%% copy the original one, rename it, and modify the entries for the +%% font shapes to use the design size you want to test. +%% \input{t1XXX-1200.fd} + +%% The following lines show some possible glyph classes. You should +%% add all classes you need. +\newglyphclass{right}{A}{A,Aogonek} +\newglyphclass{right}{Abreve}{Abreve,Aacute,Acircumflex,% + Atilde,Adieresis} +\newglyphclass{right}{Aring}{Agrave,Aring} + +\newglyphclass{left}{A}{A,Aogonek} +\newglyphclass{left}{Abreve}{Abreve,Agrave,Acircumflex,% + Atilde,Adieresis} +\newglyphclass{left}{Aring}{Aacute,Aring} + +\newglyphclass{right}{C}{C,Cacute,Ccaron,Ccedilla} +\newglyphclass{left}{C}{C,Cacute,Ccaron,Ccedilla} + +\newglyphclass{right}{D}{D,Dcaron,Eth} + +\newglyphclass{right}{E}{E,Ecaron,Eogonek,Egrave,Eacute,Ecircumflex,% + Edieresis,AE,OE} + +\newglyphclass{right}{G}{G,Gbreve} +\newglyphclass{left}{G}{G,Gbreve} + +\newglyphclass{left}{H}{B,D,Dcaron,Eth,E,Ecaron,Eogonek,Egrave,% + Eacute,Ecircumflex,Edieresis,F,H,I,Idotaccent,Igrave,Iacute,% + Icircumflex,Idieresis,IJ,J,K,L,Lacute,Lcaron,N,Nacute,Ncaron,% + Ntilde,P,R,Racute,Rcaron,Ng,Thorn} + +\newglyphclass{right}{H}{H,I,Idotaccent,Igrave,Iacute,% + Icircumflex,Idieresis,IJ,J,N,Nacute,Ncaron,Ntilde} + +\newglyphclass{right}{O}{O,Ohungarumlaut,Ograve,Oacute,Ocircumflex,% + Otilde,Odieresis,Oslash} +\newglyphclass{left}{O}{O,Ohungarumlaut,Ograve,Oacute,Ocircumflex,% + Otilde,Odieresis,OE,Oslash} + +\newglyphclass{right}{R}{R,Racute,Rcaron} + +\newglyphclass{right}{S}{S,Sacute,Scaron,Scedilla,SS,dollar} +\newglyphclass{left}{S}{S,Sacute,Scaron,Scedilla,SS,dollar} + +\newglyphclass{right}{T}{T,Tcaron,Tcedilla} +\newglyphclass{left}{T}{T,Tcaron,Tcedilla} + +\newglyphclass{right}{U}{U,Uhungarumlaut,Uring,Ugrave,Uacute,% + Ucircumflex,Udieresis} +\newglyphclass{left}{U}{U,Uhungarumlaut,Uring,Ugrave,Uacute,% + Ucircumflex,Udieresis} + +\newglyphclass{right}{Y}{Y,Yacute,Ydieresis}% +\newglyphclass{left}{Y}{Y,Yacute,Ydieresis}% + +\newglyphclass{left}{Z}{Z,Zacute,Zcaron,Zdotaccent} +\newglyphclass{right}{Z}{Z,Zacute,Zcaron,Zdotaccent} + +\newglyphclass{left}{a}{a,aogonek,ae} +\newglyphclass{left}{abreve}{abreve,agrave,acircumflex,atilde,adieresis,aring} +\newglyphclass{right}{a}{a,aogonek} +\newglyphclass{right}{abreve}{abreve,aacute,acircumflex,atilde,adieresis,aring} + +\newglyphclass{left}{c}{c,ccedilla} +\newglyphclass{right}{c}{c,ccedilla} + +\newglyphclass{left}{d}{d,dbar,dcaron} + +\newglyphclass{left}{e}{e,eogonek} +\newglyphclass{left}{egrave}{ecaron,ecircumflex} +\newglyphclass{right}{e}{e,eogonek,ae,oe} +\newglyphclass{right}{egrave}{ecaron,ecircumflex} + +\newglyphclass{left}{f}{f,ff,fi,fl,ffi,ffl} +\newglyphclass{right}{f}{f,ff} + +\newglyphclass{right}{i}{i,fi,ffi,dotlessi} +\newglyphclass{left}{i}{i,ij,dotlessi} + +\newglyphclass{right}{l}{fl,ffl,l,lacute} +\newglyphclass{left}{l}{l,lacute,lcaron} + +\newglyphclass{right}{m}{m,n} +\newglyphclass{left}{m}{m,n} +\newglyphclass{right}{nacute}{nacute,ncaron} +\newglyphclass{left}{nacute}{nacute,ncaron} + +\newglyphclass{right}{ograve}{ograve,ocircumflex} +\newglyphclass{right}{ohungarumlaut}{ohungarumlaut,oacute,otilde,% + odieresis} +\newglyphclass{left}{oacute}{oacute,ocircumflex,oe} +\newglyphclass{left}{ohungarumlaut}{ohungarumlaut,ograve,otilde,% + odieresis} + +\newglyphclass{left}{t}{t,tcaron,tcedilla} + + +\begin{document} + +%% This table of characters is sorted by similar glyphs, not by the +%% encoding. +%% Replace `{LLL}' and `{RRR}' in columns 1 resp. 5 by these glyphs +%% that shall be tested. +%% Good pairs to use for LLL and RRR test are 016, 017 (English +%% quotation marks `` and ''); 018, 016 (German quotation marks ,, and +%% ``); 019, 020 (French Guillemets << and >>); 020, 019 (French +%% Guillemets in German notation >> and <<). +%% You may also take the Postscript names for all glyphs. +\begin{kerntable} + \testkern{LLL}{-}{000}{-}{RRR} \\ % grave + \testkern{LLL}{-}{001}{-}{RRR} \\ % acute + \testkern{LLL}{-}{002}{-}{RRR} \\ % circumflex + \testkern{LLL}{-}{003}{-}{RRR} \\ % tilde + \testkern{LLL}{-}{004}{-}{RRR} \\ % dieresis + \testkern{LLL}{-}{005}{-}{RRR} \\ % hungarumlaut + \testkern{LLL}{-}{006}{-}{RRR} \\ % ring + \testkern{LLL}{-}{007}{-}{RRR} \\ % caron + \testkern{LLL}{-}{008}{-}{RRR} \\ % breve + \testkern{LLL}{-}{009}{-}{RRR} \\ % macron + \testkern{LLL}{-}{010}{-}{RRR} \\ % dotaccent + \testkern{LLL}{-}{011}{-}{RRR} \\ % cedilla + \testkern{LLL}{-}{012}{-}{RRR} \\ % ogonek + \testkern{LLL}{-}{126}{-}{RRR} \\ % asciitilde + \testkern{LLL}{-}{094}{-}{RRR} \\ % asciicircum + \testkern{LLL}{-}{042}{-}{RRR} \\ % asterisk + \testkern{LLL}{-}{023}{-}{RRR} \\ % compwordmark + \testkern{LLL}{-}{032}{-}{RRR} \\ % visiblespace + \testkern{LLL}{-}{014}{-}{RRR} \\ % guilsinglleft + \testkern{LLL}{-}{015}{-}{RRR} \\ % guilsinglright + \testkern{LLL}{-}{019}{-}{RRR} \\ % guillemotleft + \testkern{LLL}{-}{020}{-}{RRR} \\ % guillemotright + \testkern{LLL}{-}{096}{-}{RRR} \\ % quoteleft + \testkern{LLL}{-}{039}{-}{RRR} \\ % quoteright + \testkern{LLL}{-}{013}{-}{RRR} \\ % quotesinglbase + \testkern{LLL}{-}{016}{-}{RRR} \\ % quotedblleft + \testkern{LLL}{-}{017}{-}{RRR} \\ % quotedblright + \testkern{LLL}{-}{018}{-}{RRR} \\ % quotedblbase + \testkern{LLL}{-}{034}{-}{RRR} \\ % quotedbl + \testkern{LLL}{-}{046}{-}{RRR} \\ % period + \testkern{LLL}{-}{044}{-}{RRR} \\ % comma + \testkern{LLL}{-}{058}{-}{RRR} \\ % colon + \testkern{LLL}{-}{059}{-}{RRR} \\ % semicolon + \testkern{LLL}{-}{033}{-}{RRR} \\ % exclam + \testkern{LLL}{-}{063}{-}{RRR} \\ % question + \testkern{LLL}{-}{189}{-}{RRR} \\ % exclamdown + \testkern{LLL}{-}{190}{-}{RRR} \\ % questiondown + \testkern{LLL}{-}{045}{-}{RRR} \\ % hyphen + \testkern{LLL}{-}{127}{-}{RRR} \\ % hyphenchar + \testkern{LLL}{-}{021}{-}{RRR} \\ % rangedash + \testkern{LLL}{-}{022}{-}{RRR} \\ % punctdash + \testkern{LLL}{-}{095}{-}{RRR} \\ % underscore + \testkern{LLL}{-}{043}{-}{RRR} \\ % plus + \testkern{LLL}{-}{061}{-}{RRR} \\ % equal + \testkern{LLL}{-}{060}{-}{RRR} \\ % less + \testkern{LLL}{-}{062}{-}{RRR} \\ % greater + \testkern{LLL}{-}{047}{-}{RRR} \\ % slash + \testkern{LLL}{-}{092}{-}{RRR} \\ % backslash + \testkern{LLL}{-}{040}{-}{RRR} \\ % parenleft + \testkern{LLL}{-}{041}{-}{RRR} \\ % parenright + \testkern{LLL}{-}{091}{-}{RRR} \\ % bracketleft + \testkern{LLL}{-}{093}{-}{RRR} \\ % bracketright + \testkern{LLL}{-}{123}{-}{RRR} \\ % braceleft + \testkern{LLL}{-}{125}{-}{RRR} \\ % braceright + \testkern{LLL}{-}{124}{-}{RRR} \\ % bar + \testkern{LLL}{-}{035}{-}{RRR} \\ % numbersign + \testkern{LLL}{-}{037}{-}{RRR} \\ % percent + \testkern{LLL}{-}{024}{-}{RRR} \\ % perthousandzero + \testkern{LLL}{-}{038}{-}{RRR} \\ % ampersand + \testkern{LLL}{-}{159}{-}{RRR} \\ % section + \testkern{LLL}{-}{064}{-}{RRR} \\ % at + \testkern{LLL}{-}{191}{-}{RRR} \\ % sterling + \testkern{LLL}{-}{048}{-}{RRR} \\ % zero + \testkern{LLL}{-}{049}{-}{RRR} \\ % one + \testkern{LLL}{-}{050}{-}{RRR} \\ % two + \testkern{LLL}{-}{051}{-}{RRR} \\ % three + \testkern{LLL}{-}{052}{-}{RRR} \\ % four + \testkern{LLL}{-}{053}{-}{RRR} \\ % five + \testkern{LLL}{-}{054}{-}{RRR} \\ % six + \testkern{LLL}{-}{055}{-}{RRR} \\ % seven + \testkern{LLL}{-}{056}{-}{RRR} \\ % eight + \testkern{LLL}{-}{057}{-}{RRR} \\ % nine + \testkern{LLL}{-}{065}{-}{RRR} \\ % A + \testkern{LLL}{-}{128}{-}{RRR} \\ % Abreve + \testkern{LLL}{-}{129}{-}{RRR} \\ % Aogonek + \testkern{LLL}{-}{192}{-}{RRR} \\ % Agrave + \testkern{LLL}{-}{193}{-}{RRR} \\ % Aacute + \testkern{LLL}{-}{194}{-}{RRR} \\ % Acircumflex + \testkern{LLL}{-}{195}{-}{RRR} \\ % Atilde + \testkern{LLL}{-}{196}{-}{RRR} \\ % Adieresis + \testkern{LLL}{-}{197}{-}{RRR} \\ % Aring + \testkern{LLL}{-}{198}{-}{RRR} \\ % AE + \testkern{LLL}{-}{066}{-}{RRR} \\ % B + \testkern{LLL}{-}{067}{-}{RRR} \\ % C + \testkern{LLL}{-}{130}{-}{RRR} \\ % Cacute + \testkern{LLL}{-}{131}{-}{RRR} \\ % Ccaron + \testkern{LLL}{-}{199}{-}{RRR} \\ % Ccedilla + \testkern{LLL}{-}{068}{-}{RRR} \\ % D + \testkern{LLL}{-}{132}{-}{RRR} \\ % Dcaron + \testkern{LLL}{-}{208}{-}{RRR} \\ % Eth + \testkern{LLL}{-}{069}{-}{RRR} \\ % E + \testkern{LLL}{-}{133}{-}{RRR} \\ % Ecaron + \testkern{LLL}{-}{134}{-}{RRR} \\ % Eogonek + \testkern{LLL}{-}{200}{-}{RRR} \\ % Egrave + \testkern{LLL}{-}{201}{-}{RRR} \\ % Eacute + \testkern{LLL}{-}{202}{-}{RRR} \\ % Ecircumflex + \testkern{LLL}{-}{203}{-}{RRR} \\ % Edieresis + \testkern{LLL}{-}{070}{-}{RRR} \\ % F + \testkern{LLL}{-}{071}{-}{RRR} \\ % G + \testkern{LLL}{-}{135}{-}{RRR} \\ % Gbreve + \testkern{LLL}{-}{072}{-}{RRR} \\ % H + \testkern{LLL}{-}{073}{-}{RRR} \\ % I + \testkern{LLL}{-}{157}{-}{RRR} \\ % Idotaccent + \testkern{LLL}{-}{204}{-}{RRR} \\ % Igrave + \testkern{LLL}{-}{205}{-}{RRR} \\ % Iacute + \testkern{LLL}{-}{206}{-}{RRR} \\ % Icircumflex + \testkern{LLL}{-}{207}{-}{RRR} \\ % Idieresis + \testkern{LLL}{-}{156}{-}{RRR} \\ % IJ + \testkern{LLL}{-}{074}{-}{RRR} \\ % J + \testkern{LLL}{-}{075}{-}{RRR} \\ % K + \testkern{LLL}{-}{076}{-}{RRR} \\ % L + \testkern{LLL}{-}{136}{-}{RRR} \\ % Lacute + \testkern{LLL}{-}{137}{-}{RRR} \\ % Lcaron + \testkern{LLL}{-}{138}{-}{RRR} \\ % Lslash + \testkern{LLL}{-}{077}{-}{RRR} \\ % M + \testkern{LLL}{-}{078}{-}{RRR} \\ % N + \testkern{LLL}{-}{139}{-}{RRR} \\ % Nacute + \testkern{LLL}{-}{140}{-}{RRR} \\ % Ncaron + \testkern{LLL}{-}{209}{-}{RRR} \\ % Ntilde + \testkern{LLL}{-}{079}{-}{RRR} \\ % O + \testkern{LLL}{-}{142}{-}{RRR} \\ % Ohungarumlaut + \testkern{LLL}{-}{210}{-}{RRR} \\ % Ograve + \testkern{LLL}{-}{211}{-}{RRR} \\ % Oacute + \testkern{LLL}{-}{212}{-}{RRR} \\ % Ocircumflex + \testkern{LLL}{-}{213}{-}{RRR} \\ % Otilde + \testkern{LLL}{-}{214}{-}{RRR} \\ % Odieresis + \testkern{LLL}{-}{215}{-}{RRR} \\ % OE + \testkern{LLL}{-}{216}{-}{RRR} \\ % Oslash + \testkern{LLL}{-}{080}{-}{RRR} \\ % P + \testkern{LLL}{-}{081}{-}{RRR} \\ % Q + \testkern{LLL}{-}{082}{-}{RRR} \\ % R + \testkern{LLL}{-}{143}{-}{RRR} \\ % Racute + \testkern{LLL}{-}{144}{-}{RRR} \\ % Rcaron + \testkern{LLL}{-}{083}{-}{RRR} \\ % S + \testkern{LLL}{-}{145}{-}{RRR} \\ % Sacute + \testkern{LLL}{-}{146}{-}{RRR} \\ % Scaron + \testkern{LLL}{-}{147}{-}{RRR} \\ % Scedilla + \testkern{LLL}{-}{223}{-}{RRR} \\ % SS + \testkern{LLL}{-}{036}{-}{RRR} \\ % dollar + \testkern{LLL}{-}{084}{-}{RRR} \\ % T + \testkern{LLL}{-}{148}{-}{RRR} \\ % Tcaron + \testkern{LLL}{-}{149}{-}{RRR} \\ % Tcedilla + \testkern{LLL}{-}{085}{-}{RRR} \\ % U + \testkern{LLL}{-}{150}{-}{RRR} \\ % Uhungarumlaut + \testkern{LLL}{-}{151}{-}{RRR} \\ % Uring + \testkern{LLL}{-}{217}{-}{RRR} \\ % Ugrave + \testkern{LLL}{-}{218}{-}{RRR} \\ % Uacute + \testkern{LLL}{-}{219}{-}{RRR} \\ % Ucircumflex + \testkern{LLL}{-}{220}{-}{RRR} \\ % Udieresis + \testkern{LLL}{-}{086}{-}{RRR} \\ % V + \testkern{LLL}{-}{087}{-}{RRR} \\ % W + \testkern{LLL}{-}{088}{-}{RRR} \\ % X + \testkern{LLL}{-}{089}{-}{RRR} \\ % Y + \testkern{LLL}{-}{152}{-}{RRR} \\ % Ydieresis + \testkern{LLL}{-}{221}{-}{RRR} \\ % Yacute + \testkern{LLL}{-}{090}{-}{RRR} \\ % Z + \testkern{LLL}{-}{153}{-}{RRR} \\ % Zacute + \testkern{LLL}{-}{154}{-}{RRR} \\ % Zcaron + \testkern{LLL}{-}{155}{-}{RRR} \\ % Zdotaccent + \testkern{LLL}{-}{141}{-}{RRR} \\ % Ng + \testkern{LLL}{-}{222}{-}{RRR} \\ % Thorn + \testkern{LLL}{-}{097}{-}{RRR} \\ % a + \testkern{LLL}{-}{160}{-}{RRR} \\ % abreve + \testkern{LLL}{-}{161}{-}{RRR} \\ % aogonek + \testkern{LLL}{-}{224}{-}{RRR} \\ % agrave + \testkern{LLL}{-}{225}{-}{RRR} \\ % aacute + \testkern{LLL}{-}{226}{-}{RRR} \\ % acircumflex + \testkern{LLL}{-}{227}{-}{RRR} \\ % atilde + \testkern{LLL}{-}{228}{-}{RRR} \\ % adieresis + \testkern{LLL}{-}{229}{-}{RRR} \\ % aring + \testkern{LLL}{-}{230}{-}{RRR} \\ % ae + \testkern{LLL}{-}{098}{-}{RRR} \\ % b + \testkern{LLL}{-}{099}{-}{RRR} \\ % c + \testkern{LLL}{-}{162}{-}{RRR} \\ % cacute + \testkern{LLL}{-}{163}{-}{RRR} \\ % ccaron + \testkern{LLL}{-}{231}{-}{RRR} \\ % ccedilla + \testkern{LLL}{-}{100}{-}{RRR} \\ % d + \testkern{LLL}{-}{158}{-}{RRR} \\ % dbar + \testkern{LLL}{-}{164}{-}{RRR} \\ % dcaron + \testkern{LLL}{-}{101}{-}{RRR} \\ % e + \testkern{LLL}{-}{165}{-}{RRR} \\ % ecaron + \testkern{LLL}{-}{166}{-}{RRR} \\ % eogonek + \testkern{LLL}{-}{232}{-}{RRR} \\ % egrave + \testkern{LLL}{-}{233}{-}{RRR} \\ % eacute + \testkern{LLL}{-}{234}{-}{RRR} \\ % ecircumflex + \testkern{LLL}{-}{235}{-}{RRR} \\ % edieresis + \testkern{LLL}{-}{102}{-}{RRR} \\ % f + \testkern{LLL}{-}{027}{-}{RRR} \\ % ff + \testkern{LLL}{-}{028}{-}{RRR} \\ % fi + \testkern{LLL}{-}{029}{-}{RRR} \\ % fl + \testkern{LLL}{-}{030}{-}{RRR} \\ % ffi + \testkern{LLL}{-}{031}{-}{RRR} \\ % ffl + \testkern{LLL}{-}{103}{-}{RRR} \\ % g + \testkern{LLL}{-}{167}{-}{RRR} \\ % gbreve + \testkern{LLL}{-}{104}{-}{RRR} \\ % h + \testkern{LLL}{-}{105}{-}{RRR} \\ % i + \testkern{LLL}{-}{025}{-}{RRR} \\ % dotlessi + \testkern{LLL}{-}{236}{-}{RRR} \\ % igrave + \testkern{LLL}{-}{237}{-}{RRR} \\ % iacute + \testkern{LLL}{-}{238}{-}{RRR} \\ % icircumflex + \testkern{LLL}{-}{239}{-}{RRR} \\ % idieresis + \testkern{LLL}{-}{188}{-}{RRR} \\ % ij + \testkern{LLL}{-}{106}{-}{RRR} \\ % j + \testkern{LLL}{-}{026}{-}{RRR} \\ % dotlessj + \testkern{LLL}{-}{107}{-}{RRR} \\ % k + \testkern{LLL}{-}{108}{-}{RRR} \\ % l + \testkern{LLL}{-}{168}{-}{RRR} \\ % lacute + \testkern{LLL}{-}{169}{-}{RRR} \\ % lcaron + \testkern{LLL}{-}{170}{-}{RRR} \\ % lslash + \testkern{LLL}{-}{109}{-}{RRR} \\ % m + \testkern{LLL}{-}{110}{-}{RRR} \\ % n + \testkern{LLL}{-}{171}{-}{RRR} \\ % nacute + \testkern{LLL}{-}{172}{-}{RRR} \\ % ncaron + \testkern{LLL}{-}{241}{-}{RRR} \\ % ntilde + \testkern{LLL}{-}{111}{-}{RRR} \\ % o + \testkern{LLL}{-}{174}{-}{RRR} \\ % ohungarumlaut + \testkern{LLL}{-}{242}{-}{RRR} \\ % ograve + \testkern{LLL}{-}{243}{-}{RRR} \\ % oacute + \testkern{LLL}{-}{244}{-}{RRR} \\ % ocircumflex + \testkern{LLL}{-}{245}{-}{RRR} \\ % otilde + \testkern{LLL}{-}{246}{-}{RRR} \\ % odieresis + \testkern{LLL}{-}{247}{-}{RRR} \\ % oe + \testkern{LLL}{-}{248}{-}{RRR} \\ % oslash + \testkern{LLL}{-}{112}{-}{RRR} \\ % p + \testkern{LLL}{-}{113}{-}{RRR} \\ % q + \testkern{LLL}{-}{114}{-}{RRR} \\ % r + \testkern{LLL}{-}{175}{-}{RRR} \\ % racute + \testkern{LLL}{-}{176}{-}{RRR} \\ % rcaron + \testkern{LLL}{-}{115}{-}{RRR} \\ % s + \testkern{LLL}{-}{177}{-}{RRR} \\ % sacute + \testkern{LLL}{-}{178}{-}{RRR} \\ % scaron + \testkern{LLL}{-}{179}{-}{RRR} \\ % scedilla + \testkern{LLL}{-}{116}{-}{RRR} \\ % t + \testkern{LLL}{-}{180}{-}{RRR} \\ % tcaron + \testkern{LLL}{-}{181}{-}{RRR} \\ % tcedilla + \testkern{LLL}{-}{117}{-}{RRR} \\ % u + \testkern{LLL}{-}{182}{-}{RRR} \\ % uhungarumlaut + \testkern{LLL}{-}{183}{-}{RRR} \\ % uring + \testkern{LLL}{-}{249}{-}{RRR} \\ % ugrave + \testkern{LLL}{-}{250}{-}{RRR} \\ % uacute + \testkern{LLL}{-}{251}{-}{RRR} \\ % ucircumflex + \testkern{LLL}{-}{252}{-}{RRR} \\ % udieresis + \testkern{LLL}{-}{118}{-}{RRR} \\ % v + \testkern{LLL}{-}{119}{-}{RRR} \\ % w + \testkern{LLL}{-}{120}{-}{RRR} \\ % x + \testkern{LLL}{-}{121}{-}{RRR} \\ % y + \testkern{LLL}{-}{184}{-}{RRR} \\ % ydieresis + \testkern{LLL}{-}{253}{-}{RRR} \\ % yacute + \testkern{LLL}{-}{122}{-}{RRR} \\ % z + \testkern{LLL}{-}{185}{-}{RRR} \\ % zacute + \testkern{LLL}{-}{186}{-}{RRR} \\ % zcaron + \testkern{LLL}{-}{187}{-}{RRR} \\ % zdotaccent + \testkern{LLL}{-}{240}{-}{RRR} \\ % eth + \testkern{LLL}{-}{173}{-}{RRR} \\ % ng + \testkern{LLL}{-}{254}{-}{RRR} \\ % thorn + \testkern{LLL}{-}{255}{-}{RRR} \\ % germandbls +\end{kerntable} + +\end{document} +% +% \end{macrocode} +% +% \subsubsection{TS1 encoding} +% +% \begin{macrocode} +%<*template&ts1> +\listfiles +%% Replace the `XXX' in the next line by the 3- or 4-character long +%% abbreviation for your font. +\documentclass[family=XXX]{kerntest} + +%% Replace the settings by these you want to test. +\kernsetup{encoding=TS1,series=m,shape=n,example=hello} +\kernsetup{size=14.40pt,baselineskip=16.5pt,papersize=a4paper} + +%% The next line can be used to add a name suffix to the output |mtx| file. +%% \kernsetup{extraname=normal} + +%% If you are using a font with different design sizes and if you want +%% to test one design size scaled to another one, you may input a +%% modified fd file for your font. To generate this new fd file, just +%% copy the original one, rename it, and modify the entries for the +%% font shapes to use the design size you want to test. +%% \input{t1XXX-1200.fd} + +\begin{document} + +%% This table of characters is sorted by similar glyphs, not by the +%% encoding. +%% Replace `{LLL}' and `{RRR}' in columns 1 resp. 5 by these glyphs +%% that shall be tested. +\begin{kerntable} + \testkern{LLL}{-}{000}{-}{RRR} \\ % capitalgrave + \testkern{LLL}{-}{001}{-}{RRR} \\ % capitalacute + \testkern{LLL}{-}{002}{-}{RRR} \\ % capitalcircumflex + \testkern{LLL}{-}{003}{-}{RRR} \\ % capitaltilde + \testkern{LLL}{-}{004}{-}{RRR} \\ % capitaldieresis + \testkern{LLL}{-}{005}{-}{RRR} \\ % capitalhungarumlaut + \testkern{LLL}{-}{006}{-}{RRR} \\ % capitalring + \testkern{LLL}{-}{007}{-}{RRR} \\ % capitalcaron + \testkern{LLL}{-}{008}{-}{RRR} \\ % capitalbreve + \testkern{LLL}{-}{009}{-}{RRR} \\ % capitalmacron + \testkern{LLL}{-}{010}{-}{RRR} \\ % capitaldotaccent + \testkern{LLL}{-}{011}{-}{RRR} \\ % cedilla + \testkern{LLL}{-}{012}{-}{RRR} \\ % ogonek + \testkern{LLL}{-}{013}{-}{RRR} \\ % quotesinglbase + \testkern{LLL}{-}{014}{-}{RRR} \\ + \testkern{LLL}{-}{015}{-}{RRR} \\ + \testkern{LLL}{-}{016}{-}{RRR} \\ + \testkern{LLL}{-}{017}{-}{RRR} \\ + \testkern{LLL}{-}{018}{-}{RRR} \\ % quotedblbase + \testkern{LLL}{-}{019}{-}{RRR} \\ + \testkern{LLL}{-}{020}{-}{RRR} \\ + \testkern{LLL}{-}{021}{-}{RRR} \\ % twelveudash + \testkern{LLL}{-}{022}{-}{RRR} \\ % threequartersemdash + \testkern{LLL}{-}{023}{-}{RRR} \\ % capitalcompwordmark + \testkern{LLL}{-}{024}{-}{RRR} \\ % arrowleft + \testkern{LLL}{-}{025}{-}{RRR} \\ % arrowright + \testkern{LLL}{-}{026}{-}{RRR} \\ % tieaccentlowercase + \testkern{LLL}{-}{027}{-}{RRR} \\ % tieaccentcapital + \testkern{LLL}{-}{028}{-}{RRR} \\ % newtieaccentlowercase + \testkern{LLL}{-}{029}{-}{RRR} \\ % newtieaccentcapital + \testkern{LLL}{-}{030}{-}{RRR} \\ % ascendercompwordmark + \testkern{LLL}{-}{031}{-}{RRR} \\ % blank + \testkern{LLL}{-}{032}{-}{RRR} \\ + \testkern{LLL}{-}{033}{-}{RRR} \\ + \testkern{LLL}{-}{034}{-}{RRR} \\ + \testkern{LLL}{-}{035}{-}{RRR} \\ + \testkern{LLL}{-}{036}{-}{RRR} \\ % dollar + \testkern{LLL}{-}{037}{-}{RRR} \\ + \testkern{LLL}{-}{038}{-}{RRR} \\ + \testkern{LLL}{-}{039}{-}{RRR} \\ % quotesingle + \testkern{LLL}{-}{040}{-}{RRR} \\ + \testkern{LLL}{-}{041}{-}{RRR} \\ + \testkern{LLL}{-}{042}{-}{RRR} \\ % asteriskcentered + \testkern{LLL}{-}{043}{-}{RRR} \\ + \testkern{LLL}{-}{044}{-}{RRR} \\ % comma + \testkern{LLL}{-}{045}{-}{RRR} \\ % hyphendbl + \testkern{LLL}{-}{046}{-}{RRR} \\ % period + \testkern{LLL}{-}{047}{-}{RRR} \\ % fraction + \testkern{LLL}{-}{048}{-}{RRR} \\ % zerooldstyle + \testkern{LLL}{-}{049}{-}{RRR} \\ % oneoldstyle + \testkern{LLL}{-}{050}{-}{RRR} \\ % twooldstyle + \testkern{LLL}{-}{051}{-}{RRR} \\ % threeoldstyle + \testkern{LLL}{-}{052}{-}{RRR} \\ % fouroldstyle + \testkern{LLL}{-}{053}{-}{RRR} \\ % fiveoldstyle + \testkern{LLL}{-}{054}{-}{RRR} \\ % sixoldstyle + \testkern{LLL}{-}{055}{-}{RRR} \\ % sevenoldstyle + \testkern{LLL}{-}{056}{-}{RRR} \\ % eightoldstyle + \testkern{LLL}{-}{057}{-}{RRR} \\ % nineoldstyle + \testkern{LLL}{-}{058}{-}{RRR} \\ + \testkern{LLL}{-}{059}{-}{RRR} \\ + \testkern{LLL}{-}{060}{-}{RRR} \\ % angbracketleft + \testkern{LLL}{-}{061}{-}{RRR} \\ % minus + \testkern{LLL}{-}{062}{-}{RRR} \\ % angbracketright + \testkern{LLL}{-}{063}{-}{RRR} \\ + \testkern{LLL}{-}{064}{-}{RRR} \\ + \testkern{LLL}{-}{065}{-}{RRR} \\ + \testkern{LLL}{-}{066}{-}{RRR} \\ + \testkern{LLL}{-}{067}{-}{RRR} \\ + \testkern{LLL}{-}{068}{-}{RRR} \\ + \testkern{LLL}{-}{069}{-}{RRR} \\ + \testkern{LLL}{-}{070}{-}{RRR} \\ + \testkern{LLL}{-}{071}{-}{RRR} \\ + \testkern{LLL}{-}{072}{-}{RRR} \\ + \testkern{LLL}{-}{073}{-}{RRR} \\ + \testkern{LLL}{-}{074}{-}{RRR} \\ + \testkern{LLL}{-}{075}{-}{RRR} \\ + \testkern{LLL}{-}{076}{-}{RRR} \\ + \testkern{LLL}{-}{077}{-}{RRR} \\ % Omegainv + \testkern{LLL}{-}{078}{-}{RRR} \\ + \testkern{LLL}{-}{079}{-}{RRR} \\ % bigcircle + \testkern{LLL}{-}{080}{-}{RRR} \\ + \testkern{LLL}{-}{081}{-}{RRR} \\ + \testkern{LLL}{-}{082}{-}{RRR} \\ + \testkern{LLL}{-}{083}{-}{RRR} \\ + \testkern{LLL}{-}{084}{-}{RRR} \\ + \testkern{LLL}{-}{085}{-}{RRR} \\ + \testkern{LLL}{-}{086}{-}{RRR} \\ + \testkern{LLL}{-}{087}{-}{RRR} \\ % Omega + \testkern{LLL}{-}{088}{-}{RRR} \\ + \testkern{LLL}{-}{089}{-}{RRR} \\ + \testkern{LLL}{-}{090}{-}{RRR} \\ + \testkern{LLL}{-}{091}{-}{RRR} \\ % openbracketleft + \testkern{LLL}{-}{092}{-}{RRR} \\ + \testkern{LLL}{-}{093}{-}{RRR} \\ % openbracketright + \testkern{LLL}{-}{094}{-}{RRR} \\ % arrowup + \testkern{LLL}{-}{095}{-}{RRR} \\ % arrowdown + \testkern{LLL}{-}{096}{-}{RRR} \\ % asciigrave + \testkern{LLL}{-}{097}{-}{RRR} \\ + \testkern{LLL}{-}{098}{-}{RRR} \\ % born + \testkern{LLL}{-}{099}{-}{RRR} \\ % divorced + \testkern{LLL}{-}{100}{-}{RRR} \\ % died + \testkern{LLL}{-}{101}{-}{RRR} \\ + \testkern{LLL}{-}{102}{-}{RRR} \\ + \testkern{LLL}{-}{103}{-}{RRR} \\ + \testkern{LLL}{-}{104}{-}{RRR} \\ + \testkern{LLL}{-}{105}{-}{RRR} \\ + \testkern{LLL}{-}{106}{-}{RRR} \\ + \testkern{LLL}{-}{107}{-}{RRR} \\ + \testkern{LLL}{-}{108}{-}{RRR} \\ % leaf + \testkern{LLL}{-}{109}{-}{RRR} \\ % married + \testkern{LLL}{-}{110}{-}{RRR} \\ % musicalnote + \testkern{LLL}{-}{111}{-}{RRR} \\ + \testkern{LLL}{-}{112}{-}{RRR} \\ + \testkern{LLL}{-}{113}{-}{RRR} \\ + \testkern{LLL}{-}{114}{-}{RRR} \\ + \testkern{LLL}{-}{115}{-}{RRR} \\ + \testkern{LLL}{-}{116}{-}{RRR} \\ + \testkern{LLL}{-}{117}{-}{RRR} \\ + \testkern{LLL}{-}{118}{-}{RRR} \\ + \testkern{LLL}{-}{119}{-}{RRR} \\ + \testkern{LLL}{-}{120}{-}{RRR} \\ + \testkern{LLL}{-}{121}{-}{RRR} \\ + \testkern{LLL}{-}{122}{-}{RRR} \\ + \testkern{LLL}{-}{123}{-}{RRR} \\ + \testkern{LLL}{-}{124}{-}{RRR} \\ + \testkern{LLL}{-}{125}{-}{RRR} \\ + \testkern{LLL}{-}{126}{-}{RRR} \\ % tildelow + \testkern{LLL}{-}{127}{-}{RRR} \\ % hyphendblchar + \testkern{LLL}{-}{128}{-}{RRR} \\ % asciibreve + \testkern{LLL}{-}{129}{-}{RRR} \\ % asciicaron + \testkern{LLL}{-}{130}{-}{RRR} \\ % asciiacutedbl + \testkern{LLL}{-}{131}{-}{RRR} \\ % asciigravedbl + \testkern{LLL}{-}{132}{-}{RRR} \\ % dagger + \testkern{LLL}{-}{133}{-}{RRR} \\ % daggerdbl + \testkern{LLL}{-}{134}{-}{RRR} \\ % bardbl + \testkern{LLL}{-}{135}{-}{RRR} \\ % perthousand + \testkern{LLL}{-}{136}{-}{RRR} \\ % bullet + \testkern{LLL}{-}{137}{-}{RRR} \\ % centigrade + \testkern{LLL}{-}{138}{-}{RRR} \\ % dollaroldstyle + \testkern{LLL}{-}{139}{-}{RRR} \\ % centoldstyle + \testkern{LLL}{-}{140}{-}{RRR} \\ % florin + \testkern{LLL}{-}{141}{-}{RRR} \\ % colonmonetary + \testkern{LLL}{-}{142}{-}{RRR} \\ % won + \testkern{LLL}{-}{143}{-}{RRR} \\ % naira + \testkern{LLL}{-}{144}{-}{RRR} \\ % guarani + \testkern{LLL}{-}{145}{-}{RRR} \\ % peso + \testkern{LLL}{-}{146}{-}{RRR} \\ % lira + \testkern{LLL}{-}{147}{-}{RRR} \\ % recipe + \testkern{LLL}{-}{148}{-}{RRR} \\ % interrobang + \testkern{LLL}{-}{149}{-}{RRR} \\ % interrobangdown + \testkern{LLL}{-}{150}{-}{RRR} \\ % dong + \testkern{LLL}{-}{151}{-}{RRR} \\ % trademark + \testkern{LLL}{-}{152}{-}{RRR} \\ % pertenthousand + \testkern{LLL}{-}{153}{-}{RRR} \\ % pilcrow + \testkern{LLL}{-}{154}{-}{RRR} \\ % baht + \testkern{LLL}{-}{155}{-}{RRR} \\ % numero + \testkern{LLL}{-}{156}{-}{RRR} \\ % discount + \testkern{LLL}{-}{157}{-}{RRR} \\ % estimated + \testkern{LLL}{-}{158}{-}{RRR} \\ % openbullet + \testkern{LLL}{-}{159}{-}{RRR} \\ % servicemark + \testkern{LLL}{-}{160}{-}{RRR} \\ % quillbracketleft + \testkern{LLL}{-}{161}{-}{RRR} \\ % quillbracketright + \testkern{LLL}{-}{162}{-}{RRR} \\ % cent + \testkern{LLL}{-}{163}{-}{RRR} \\ % sterling + \testkern{LLL}{-}{164}{-}{RRR} \\ % currency + \testkern{LLL}{-}{165}{-}{RRR} \\ % yen + \testkern{LLL}{-}{166}{-}{RRR} \\ % brokenbar + \testkern{LLL}{-}{167}{-}{RRR} \\ % section + \testkern{LLL}{-}{168}{-}{RRR} \\ % asciidieresis + \testkern{LLL}{-}{169}{-}{RRR} \\ % copyright + \testkern{LLL}{-}{170}{-}{RRR} \\ % ordfeminine + \testkern{LLL}{-}{171}{-}{RRR} \\ % copyleft + \testkern{LLL}{-}{172}{-}{RRR} \\ % logicalnot + \testkern{LLL}{-}{173}{-}{RRR} \\ % circledP + \testkern{LLL}{-}{174}{-}{RRR} \\ % registered + \testkern{LLL}{-}{175}{-}{RRR} \\ % asciimacron + \testkern{LLL}{-}{176}{-}{RRR} \\ % degree + \testkern{LLL}{-}{177}{-}{RRR} \\ % plusminus + \testkern{LLL}{-}{178}{-}{RRR} \\ % twosuperior + \testkern{LLL}{-}{179}{-}{RRR} \\ % threesuperior + \testkern{LLL}{-}{180}{-}{RRR} \\ % asciiacute + \testkern{LLL}{-}{181}{-}{RRR} \\ % mu + \testkern{LLL}{-}{182}{-}{RRR} \\ % paragraph + \testkern{LLL}{-}{183}{-}{RRR} \\ % periodcentered + \testkern{LLL}{-}{184}{-}{RRR} \\ % referencemark + \testkern{LLL}{-}{185}{-}{RRR} \\ % onesuperior + \testkern{LLL}{-}{186}{-}{RRR} \\ % ordmasculine + \testkern{LLL}{-}{187}{-}{RRR} \\ % radical + \testkern{LLL}{-}{188}{-}{RRR} \\ % onequarter + \testkern{LLL}{-}{189}{-}{RRR} \\ % onehalf + \testkern{LLL}{-}{190}{-}{RRR} \\ % threequarters + \testkern{LLL}{-}{191}{-}{RRR} \\ % euro + \testkern{LLL}{-}{192}{-}{RRR} \\ + \testkern{LLL}{-}{193}{-}{RRR} \\ + \testkern{LLL}{-}{194}{-}{RRR} \\ + \testkern{LLL}{-}{195}{-}{RRR} \\ + \testkern{LLL}{-}{196}{-}{RRR} \\ + \testkern{LLL}{-}{197}{-}{RRR} \\ + \testkern{LLL}{-}{198}{-}{RRR} \\ + \testkern{LLL}{-}{199}{-}{RRR} \\ + \testkern{LLL}{-}{200}{-}{RRR} \\ + \testkern{LLL}{-}{201}{-}{RRR} \\ + \testkern{LLL}{-}{202}{-}{RRR} \\ + \testkern{LLL}{-}{203}{-}{RRR} \\ + \testkern{LLL}{-}{204}{-}{RRR} \\ + \testkern{LLL}{-}{205}{-}{RRR} \\ + \testkern{LLL}{-}{206}{-}{RRR} \\ + \testkern{LLL}{-}{207}{-}{RRR} \\ + \testkern{LLL}{-}{208}{-}{RRR} \\ + \testkern{LLL}{-}{209}{-}{RRR} \\ + \testkern{LLL}{-}{210}{-}{RRR} \\ + \testkern{LLL}{-}{211}{-}{RRR} \\ + \testkern{LLL}{-}{212}{-}{RRR} \\ + \testkern{LLL}{-}{213}{-}{RRR} \\ + \testkern{LLL}{-}{214}{-}{RRR} \\ % multiply + \testkern{LLL}{-}{215}{-}{RRR} \\ + \testkern{LLL}{-}{216}{-}{RRR} \\ + \testkern{LLL}{-}{217}{-}{RRR} \\ + \testkern{LLL}{-}{218}{-}{RRR} \\ + \testkern{LLL}{-}{219}{-}{RRR} \\ + \testkern{LLL}{-}{220}{-}{RRR} \\ + \testkern{LLL}{-}{221}{-}{RRR} \\ + \testkern{LLL}{-}{222}{-}{RRR} \\ + \testkern{LLL}{-}{223}{-}{RRR} \\ + \testkern{LLL}{-}{224}{-}{RRR} \\ + \testkern{LLL}{-}{225}{-}{RRR} \\ + \testkern{LLL}{-}{226}{-}{RRR} \\ + \testkern{LLL}{-}{227}{-}{RRR} \\ + \testkern{LLL}{-}{228}{-}{RRR} \\ + \testkern{LLL}{-}{229}{-}{RRR} \\ + \testkern{LLL}{-}{230}{-}{RRR} \\ + \testkern{LLL}{-}{231}{-}{RRR} \\ + \testkern{LLL}{-}{232}{-}{RRR} \\ + \testkern{LLL}{-}{233}{-}{RRR} \\ + \testkern{LLL}{-}{234}{-}{RRR} \\ + \testkern{LLL}{-}{235}{-}{RRR} \\ + \testkern{LLL}{-}{236}{-}{RRR} \\ + \testkern{LLL}{-}{237}{-}{RRR} \\ + \testkern{LLL}{-}{238}{-}{RRR} \\ + \testkern{LLL}{-}{239}{-}{RRR} \\ + \testkern{LLL}{-}{240}{-}{RRR} \\ + \testkern{LLL}{-}{241}{-}{RRR} \\ + \testkern{LLL}{-}{242}{-}{RRR} \\ + \testkern{LLL}{-}{243}{-}{RRR} \\ + \testkern{LLL}{-}{244}{-}{RRR} \\ + \testkern{LLL}{-}{245}{-}{RRR} \\ + \testkern{LLL}{-}{246}{-}{RRR} \\ % divide + \testkern{LLL}{-}{247}{-}{RRR} \\ + \testkern{LLL}{-}{248}{-}{RRR} \\ + \testkern{LLL}{-}{249}{-}{RRR} \\ + \testkern{LLL}{-}{250}{-}{RRR} \\ + \testkern{LLL}{-}{251}{-}{RRR} \\ + \testkern{LLL}{-}{252}{-}{RRR} \\ + \testkern{LLL}{-}{253}{-}{RRR} \\ + \testkern{LLL}{-}{254}{-}{RRR} \\ + \testkern{LLL}{-}{255}{-}{RRR} \\ +\end{kerntable} + +\end{document} +% +% \end{macrocode} +% +% \subsubsection{OT1 encoding} +% +% \begin{macrocode} +%<*template&ot1> +\listfiles +%% Replace the `XXX' in the next line by the 3- or 4-character long +%% abbreviation for your font. +\documentclass[family=XXX]{kerntest} + +%% Replace the settings by these you want to test. +\kernsetup{encoding=OT1,series=m,shape=n,example=hello} +\kernsetup{size=14.40pt,baselineskip=16.5pt,papersize=a4paper} + +%% The next line can be used to add a name suffix to the output mtx file. +%% \kernsetup{extraname=normal} + +%% Set encoding parameters. +%% Set ligaturing: 2=all, 1=some, 0=none +%% \encodingsetup{ligaturing=2} +%% Normal: dollar, Italic: sterling +%% \encodingsetup{italicizing=false} + +%% If you are using a font with different design sizes and if you want +%% to test one design size scaled to another one, you may input a +%% modified fd file for your font. To generate this new fd file, just +%% copy the original one, rename it, and modify the entries for the +%% font shapes to use the design size you want to test. +%% \input{ot1XXX-1200.fd} + +%% The following lines show some possible glyph classes. You should +%% add all classes you need. +\newglyphclass{right}{E}{E,AE,OE} + +\newglyphclass{left}{H}{B,D,F,H,I,J,K,L,N,P,R} + +\newglyphclass{right}{H}{H,I,J,N} + +\newglyphclass{right}{S}{S,dollar} +\newglyphclass{left}{S}{S,dollar} + +\newglyphclass{left}{a}{a,ae} +\newglyphclass{right}{e}{e,ae,oe} + +\newglyphclass{left}{f}{f,ff,fi,fl,ffi,ffl} +\newglyphclass{right}{f}{f,ff} + +\newglyphclass{right}{i}{i,fi,ffi,dotlessi} +\newglyphclass{left}{i}{i,dotlessi} + +\newglyphclass{right}{l}{fl,ffl,l} + +\newglyphclass{right}{m}{m,n} +\newglyphclass{left}{m}{m,n} + +\newglyphclass{left}{o}{o,oe} + +\begin{document} + +%% This table of characters is sorted by similar glyphs, not by the +%% encoding. +%% Replace `{LLL}' and `{RRR}' in columns 1 resp. 5 by these glyphs +%% that shall be tested. +\begin{kerntable} + \testkern{LLL}{-}{018}{-}{RRR} \\ % grave + \testkern{LLL}{-}{019}{-}{RRR} \\ % acute + \testkern{LLL}{-}{094}{-}{RRR} \\ % circumflex + \testkern{LLL}{-}{126}{-}{RRR} \\ % tilde + \testkern{LLL}{-}{127}{-}{RRR} \\ % dieresis + \testkern{LLL}{-}{125}{-}{RRR} \\ % hungarumlaut/braceright + \testkern{LLL}{-}{023}{-}{RRR} \\ % ringfitted + \testkern{LLL}{-}{020}{-}{RRR} \\ % caron + \testkern{LLL}{-}{021}{-}{RRR} \\ % breve + \testkern{LLL}{-}{022}{-}{RRR} \\ % macron + \testkern{LLL}{-}{095}{-}{RRR} \\ % dotaccent/underscore + \testkern{LLL}{-}{024}{-}{RRR} \\ % cedilla + \testkern{LLL}{-}{042}{-}{RRR} \\ % asterisk + \testkern{LLL}{-}{032}{-}{RRR} \\ % lslashslash/visiblespace + \testkern{LLL}{-}{096}{-}{RRR} \\ % quoteleft + \testkern{LLL}{-}{039}{-}{RRR} \\ % quoteright + \testkern{LLL}{-}{092}{-}{RRR} \\ % quotedblleft + \testkern{LLL}{-}{034}{-}{RRR} \\ % quotedblright/quotedbl + \testkern{LLL}{-}{046}{-}{RRR} \\ % period + \testkern{LLL}{-}{044}{-}{RRR} \\ % comma + \testkern{LLL}{-}{058}{-}{RRR} \\ % colon + \testkern{LLL}{-}{059}{-}{RRR} \\ % semicolon + \testkern{LLL}{-}{033}{-}{RRR} \\ % exclam + \testkern{LLL}{-}{063}{-}{RRR} \\ % question + \testkern{LLL}{-}{060}{-}{RRR} \\ % exclamdown/less + \testkern{LLL}{-}{062}{-}{RRR} \\ % questiondown/greater + \testkern{LLL}{-}{045}{-}{RRR} \\ % hyphen + \testkern{LLL}{-}{123}{-}{RRR} \\ % rangedash/braceleft + \testkern{LLL}{-}{124}{-}{RRR} \\ % punctdash/bar + \testkern{LLL}{-}{043}{-}{RRR} \\ % plus + \testkern{LLL}{-}{061}{-}{RRR} \\ % equal + \testkern{LLL}{-}{047}{-}{RRR} \\ % slash + \testkern{LLL}{-}{040}{-}{RRR} \\ % parenleft + \testkern{LLL}{-}{041}{-}{RRR} \\ % parenright + \testkern{LLL}{-}{091}{-}{RRR} \\ % bracketleft + \testkern{LLL}{-}{093}{-}{RRR} \\ % bracketright + \testkern{LLL}{-}{035}{-}{RRR} \\ % numbersign + \testkern{LLL}{-}{037}{-}{RRR} \\ % percent + \testkern{LLL}{-}{038}{-}{RRR} \\ % ampersand + \testkern{LLL}{-}{064}{-}{RRR} \\ % at + \testkern{LLL}{-}{048}{-}{RRR} \\ % zero + \testkern{LLL}{-}{049}{-}{RRR} \\ % one + \testkern{LLL}{-}{050}{-}{RRR} \\ % two + \testkern{LLL}{-}{051}{-}{RRR} \\ % three + \testkern{LLL}{-}{052}{-}{RRR} \\ % four + \testkern{LLL}{-}{053}{-}{RRR} \\ % five + \testkern{LLL}{-}{054}{-}{RRR} \\ % six + \testkern{LLL}{-}{055}{-}{RRR} \\ % seven + \testkern{LLL}{-}{056}{-}{RRR} \\ % eight + \testkern{LLL}{-}{057}{-}{RRR} \\ % nine + \testkern{LLL}{-}{065}{-}{RRR} \\ % A + \testkern{LLL}{-}{029}{-}{RRR} \\ % AE + \testkern{LLL}{-}{066}{-}{RRR} \\ % B + \testkern{LLL}{-}{067}{-}{RRR} \\ % C + \testkern{LLL}{-}{068}{-}{RRR} \\ % D + \testkern{LLL}{-}{069}{-}{RRR} \\ % E + \testkern{LLL}{-}{070}{-}{RRR} \\ % F + \testkern{LLL}{-}{071}{-}{RRR} \\ % G + \testkern{LLL}{-}{072}{-}{RRR} \\ % H + \testkern{LLL}{-}{073}{-}{RRR} \\ % I + \testkern{LLL}{-}{074}{-}{RRR} \\ % J + \testkern{LLL}{-}{075}{-}{RRR} \\ % K + \testkern{LLL}{-}{076}{-}{RRR} \\ % L + \testkern{LLL}{-}{138}{-}{RRR} \\ % Lslash + \testkern{LLL}{-}{077}{-}{RRR} \\ % M + \testkern{LLL}{-}{078}{-}{RRR} \\ % N + \testkern{LLL}{-}{079}{-}{RRR} \\ % O + \testkern{LLL}{-}{030}{-}{RRR} \\ % OE + \testkern{LLL}{-}{031}{-}{RRR} \\ % Oslash + \testkern{LLL}{-}{080}{-}{RRR} \\ % P + \testkern{LLL}{-}{081}{-}{RRR} \\ % Q + \testkern{LLL}{-}{082}{-}{RRR} \\ % R + \testkern{LLL}{-}{083}{-}{RRR} \\ % S + \testkern{LLL}{-}{036}{-}{RRR} \\ % dollar/sterling + \testkern{LLL}{-}{084}{-}{RRR} \\ % T + \testkern{LLL}{-}{085}{-}{RRR} \\ % U + \testkern{LLL}{-}{086}{-}{RRR} \\ % V + \testkern{LLL}{-}{087}{-}{RRR} \\ % W + \testkern{LLL}{-}{088}{-}{RRR} \\ % X + \testkern{LLL}{-}{089}{-}{RRR} \\ % Y + \testkern{LLL}{-}{090}{-}{RRR} \\ % Z + \testkern{LLL}{-}{097}{-}{RRR} \\ % a + \testkern{LLL}{-}{026}{-}{RRR} \\ % ae + \testkern{LLL}{-}{098}{-}{RRR} \\ % b + \testkern{LLL}{-}{099}{-}{RRR} \\ % c + \testkern{LLL}{-}{100}{-}{RRR} \\ % d + \testkern{LLL}{-}{101}{-}{RRR} \\ % e + \testkern{LLL}{-}{102}{-}{RRR} \\ % f + \testkern{LLL}{-}{011}{-}{RRR} \\ % ff/arrowup + \testkern{LLL}{-}{012}{-}{RRR} \\ % fi/arrowdown + \testkern{LLL}{-}{013}{-}{RRR} \\ % fl/quotesingle + \testkern{LLL}{-}{014}{-}{RRR} \\ % ffi/exclamdown + \testkern{LLL}{-}{015}{-}{RRR} \\ % ffl/questiondown + \testkern{LLL}{-}{103}{-}{RRR} \\ % g + \testkern{LLL}{-}{104}{-}{RRR} \\ % h + \testkern{LLL}{-}{105}{-}{RRR} \\ % i + \testkern{LLL}{-}{016}{-}{RRR} \\ % dotlessi + \testkern{LLL}{-}{025}{-}{RRR} \\ % germandbls + \testkern{LLL}{-}{106}{-}{RRR} \\ % j + \testkern{LLL}{-}{017}{-}{RRR} \\ % dotlessj + \testkern{LLL}{-}{107}{-}{RRR} \\ % k + \testkern{LLL}{-}{108}{-}{RRR} \\ % l + \testkern{LLL}{-}{170}{-}{RRR} \\ % lslash + \testkern{LLL}{-}{109}{-}{RRR} \\ % m + \testkern{LLL}{-}{110}{-}{RRR} \\ % n + \testkern{LLL}{-}{111}{-}{RRR} \\ % o + \testkern{LLL}{-}{027}{-}{RRR} \\ % oe + \testkern{LLL}{-}{028}{-}{RRR} \\ % oslash + \testkern{LLL}{-}{112}{-}{RRR} \\ % p + \testkern{LLL}{-}{113}{-}{RRR} \\ % q + \testkern{LLL}{-}{114}{-}{RRR} \\ % r + \testkern{LLL}{-}{115}{-}{RRR} \\ % s + \testkern{LLL}{-}{116}{-}{RRR} \\ % t + \testkern{LLL}{-}{117}{-}{RRR} \\ % u + \testkern{LLL}{-}{118}{-}{RRR} \\ % v + \testkern{LLL}{-}{119}{-}{RRR} \\ % w + \testkern{LLL}{-}{120}{-}{RRR} \\ % x + \testkern{LLL}{-}{121}{-}{RRR} \\ % y + \testkern{LLL}{-}{122}{-}{RRR} \\ % z + \testkern{LLL}{-}{000}{-}{RRR} \\ % Gamma + \testkern{LLL}{-}{001}{-}{RRR} \\ % Delta + \testkern{LLL}{-}{002}{-}{RRR} \\ % Theta + \testkern{LLL}{-}{003}{-}{RRR} \\ % Lambda + \testkern{LLL}{-}{004}{-}{RRR} \\ % Xi + \testkern{LLL}{-}{005}{-}{RRR} \\ % Pi + \testkern{LLL}{-}{006}{-}{RRR} \\ % Sigma + \testkern{LLL}{-}{007}{-}{RRR} \\ % Upsilon + \testkern{LLL}{-}{008}{-}{RRR} \\ % Phi + \testkern{LLL}{-}{009}{-}{RRR} \\ % Psi + \testkern{LLL}{-}{010}{-}{RRR} \\ % Omega +\iffalse + \testkern{LLL}{-}{128}{-}{RRR} \\ % .notdef. + \testkern{LLL}{-}{129}{-}{RRR} \\ % .notdef. + \testkern{LLL}{-}{130}{-}{RRR} \\ % .notdef. + \testkern{LLL}{-}{131}{-}{RRR} \\ % .notdef. + \testkern{LLL}{-}{132}{-}{RRR} \\ % .notdef. + \testkern{LLL}{-}{133}{-}{RRR} \\ % .notdef. + \testkern{LLL}{-}{134}{-}{RRR} \\ % .notdef. + \testkern{LLL}{-}{135}{-}{RRR} \\ % .notdef. + \testkern{LLL}{-}{136}{-}{RRR} \\ % .notdef. + \testkern{LLL}{-}{137}{-}{RRR} \\ % .notdef. + \testkern{LLL}{-}{139}{-}{RRR} \\ % .notdef. + \testkern{LLL}{-}{140}{-}{RRR} \\ % .notdef. + \testkern{LLL}{-}{141}{-}{RRR} \\ % .notdef. + \testkern{LLL}{-}{142}{-}{RRR} \\ % .notdef. + \testkern{LLL}{-}{143}{-}{RRR} \\ % .notdef. + \testkern{LLL}{-}{144}{-}{RRR} \\ % .notdef. + \testkern{LLL}{-}{145}{-}{RRR} \\ % .notdef. + \testkern{LLL}{-}{146}{-}{RRR} \\ % .notdef. + \testkern{LLL}{-}{147}{-}{RRR} \\ % .notdef. + \testkern{LLL}{-}{148}{-}{RRR} \\ % .notdef. + \testkern{LLL}{-}{149}{-}{RRR} \\ % .notdef. + \testkern{LLL}{-}{150}{-}{RRR} \\ % .notdef. + \testkern{LLL}{-}{151}{-}{RRR} \\ % .notdef. + \testkern{LLL}{-}{152}{-}{RRR} \\ % .notdef. + \testkern{LLL}{-}{153}{-}{RRR} \\ % .notdef. + \testkern{LLL}{-}{154}{-}{RRR} \\ % .notdef. + \testkern{LLL}{-}{155}{-}{RRR} \\ % .notdef. + \testkern{LLL}{-}{156}{-}{RRR} \\ % .notdef. + \testkern{LLL}{-}{157}{-}{RRR} \\ % .notdef. + \testkern{LLL}{-}{158}{-}{RRR} \\ % .notdef. + \testkern{LLL}{-}{159}{-}{RRR} \\ % .notdef. + \testkern{LLL}{-}{160}{-}{RRR} \\ % .notdef. + \testkern{LLL}{-}{161}{-}{RRR} \\ % .notdef. + \testkern{LLL}{-}{162}{-}{RRR} \\ % .notdef. + \testkern{LLL}{-}{163}{-}{RRR} \\ % .notdef. + \testkern{LLL}{-}{164}{-}{RRR} \\ % .notdef. + \testkern{LLL}{-}{165}{-}{RRR} \\ % .notdef. + \testkern{LLL}{-}{166}{-}{RRR} \\ % .notdef. + \testkern{LLL}{-}{167}{-}{RRR} \\ % .notdef. + \testkern{LLL}{-}{168}{-}{RRR} \\ % .notdef. + \testkern{LLL}{-}{169}{-}{RRR} \\ % .notdef. + \testkern{LLL}{-}{171}{-}{RRR} \\ % .notdef. + \testkern{LLL}{-}{172}{-}{RRR} \\ % .notdef. + \testkern{LLL}{-}{173}{-}{RRR} \\ % .notdef. + \testkern{LLL}{-}{174}{-}{RRR} \\ % .notdef. + \testkern{LLL}{-}{175}{-}{RRR} \\ % .notdef. + \testkern{LLL}{-}{176}{-}{RRR} \\ % .notdef. + \testkern{LLL}{-}{177}{-}{RRR} \\ % .notdef. + \testkern{LLL}{-}{178}{-}{RRR} \\ % .notdef. + \testkern{LLL}{-}{179}{-}{RRR} \\ % .notdef. + \testkern{LLL}{-}{180}{-}{RRR} \\ % .notdef. + \testkern{LLL}{-}{181}{-}{RRR} \\ % .notdef. + \testkern{LLL}{-}{182}{-}{RRR} \\ % .notdef. + \testkern{LLL}{-}{183}{-}{RRR} \\ % .notdef. + \testkern{LLL}{-}{184}{-}{RRR} \\ % .notdef. + \testkern{LLL}{-}{185}{-}{RRR} \\ % .notdef. + \testkern{LLL}{-}{186}{-}{RRR} \\ % .notdef. + \testkern{LLL}{-}{187}{-}{RRR} \\ % .notdef. + \testkern{LLL}{-}{188}{-}{RRR} \\ % .notdef. + \testkern{LLL}{-}{189}{-}{RRR} \\ % .notdef. + \testkern{LLL}{-}{190}{-}{RRR} \\ % .notdef. + \testkern{LLL}{-}{191}{-}{RRR} \\ % .notdef. + \testkern{LLL}{-}{192}{-}{RRR} \\ % .notdef. + \testkern{LLL}{-}{193}{-}{RRR} \\ % .notdef. + \testkern{LLL}{-}{194}{-}{RRR} \\ % .notdef. + \testkern{LLL}{-}{195}{-}{RRR} \\ % .notdef. + \testkern{LLL}{-}{196}{-}{RRR} \\ % .notdef. + \testkern{LLL}{-}{197}{-}{RRR} \\ % .notdef. + \testkern{LLL}{-}{198}{-}{RRR} \\ % .notdef. + \testkern{LLL}{-}{199}{-}{RRR} \\ % .notdef. + \testkern{LLL}{-}{200}{-}{RRR} \\ % .notdef. + \testkern{LLL}{-}{201}{-}{RRR} \\ % .notdef. + \testkern{LLL}{-}{202}{-}{RRR} \\ % .notdef. + \testkern{LLL}{-}{203}{-}{RRR} \\ % .notdef. + \testkern{LLL}{-}{204}{-}{RRR} \\ % .notdef. + \testkern{LLL}{-}{205}{-}{RRR} \\ % .notdef. + \testkern{LLL}{-}{206}{-}{RRR} \\ % .notdef. + \testkern{LLL}{-}{207}{-}{RRR} \\ % .notdef. + \testkern{LLL}{-}{208}{-}{RRR} \\ % .notdef. + \testkern{LLL}{-}{209}{-}{RRR} \\ % .notdef. + \testkern{LLL}{-}{210}{-}{RRR} \\ % .notdef. + \testkern{LLL}{-}{211}{-}{RRR} \\ % .notdef. + \testkern{LLL}{-}{212}{-}{RRR} \\ % .notdef. + \testkern{LLL}{-}{213}{-}{RRR} \\ % .notdef. + \testkern{LLL}{-}{214}{-}{RRR} \\ % .notdef. + \testkern{LLL}{-}{215}{-}{RRR} \\ % .notdef. + \testkern{LLL}{-}{216}{-}{RRR} \\ % .notdef. + \testkern{LLL}{-}{217}{-}{RRR} \\ % .notdef. + \testkern{LLL}{-}{218}{-}{RRR} \\ % .notdef. + \testkern{LLL}{-}{219}{-}{RRR} \\ % .notdef. + \testkern{LLL}{-}{220}{-}{RRR} \\ % .notdef. + \testkern{LLL}{-}{221}{-}{RRR} \\ % .notdef. + \testkern{LLL}{-}{222}{-}{RRR} \\ % .notdef. + \testkern{LLL}{-}{223}{-}{RRR} \\ % .notdef. + \testkern{LLL}{-}{224}{-}{RRR} \\ % .notdef. + \testkern{LLL}{-}{225}{-}{RRR} \\ % .notdef. + \testkern{LLL}{-}{226}{-}{RRR} \\ % .notdef. + \testkern{LLL}{-}{227}{-}{RRR} \\ % .notdef. + \testkern{LLL}{-}{228}{-}{RRR} \\ % .notdef. + \testkern{LLL}{-}{229}{-}{RRR} \\ % .notdef. + \testkern{LLL}{-}{230}{-}{RRR} \\ % .notdef. + \testkern{LLL}{-}{231}{-}{RRR} \\ % .notdef. + \testkern{LLL}{-}{232}{-}{RRR} \\ % .notdef. + \testkern{LLL}{-}{233}{-}{RRR} \\ % .notdef. + \testkern{LLL}{-}{234}{-}{RRR} \\ % .notdef. + \testkern{LLL}{-}{235}{-}{RRR} \\ % .notdef. + \testkern{LLL}{-}{236}{-}{RRR} \\ % .notdef. + \testkern{LLL}{-}{237}{-}{RRR} \\ % .notdef. + \testkern{LLL}{-}{238}{-}{RRR} \\ % .notdef. + \testkern{LLL}{-}{239}{-}{RRR} \\ % .notdef. + \testkern{LLL}{-}{240}{-}{RRR} \\ % .notdef. + \testkern{LLL}{-}{241}{-}{RRR} \\ % .notdef. + \testkern{LLL}{-}{242}{-}{RRR} \\ % .notdef. + \testkern{LLL}{-}{243}{-}{RRR} \\ % .notdef. + \testkern{LLL}{-}{244}{-}{RRR} \\ % .notdef. + \testkern{LLL}{-}{245}{-}{RRR} \\ % .notdef. + \testkern{LLL}{-}{246}{-}{RRR} \\ % .notdef. + \testkern{LLL}{-}{247}{-}{RRR} \\ % .notdef. + \testkern{LLL}{-}{248}{-}{RRR} \\ % .notdef. + \testkern{LLL}{-}{249}{-}{RRR} \\ % .notdef. + \testkern{LLL}{-}{250}{-}{RRR} \\ % .notdef. + \testkern{LLL}{-}{251}{-}{RRR} \\ % .notdef. + \testkern{LLL}{-}{252}{-}{RRR} \\ % .notdef. + \testkern{LLL}{-}{253}{-}{RRR} \\ % .notdef. + \testkern{LLL}{-}{254}{-}{RRR} \\ % .notdef. + \testkern{LLL}{-}{255}{-}{RRR} \\ % .notdef. +\fi +\end{kerntable} + +\end{document} +% +% \end{macrocode} +% +% That's it. +% +% \Finale + diff --git a/Master/texmf-dist/source/latex/kerntest/kerntest.ins b/Master/texmf-dist/source/latex/kerntest/kerntest.ins new file mode 100644 index 00000000000..4c0e67de89e --- /dev/null +++ b/Master/texmf-dist/source/latex/kerntest/kerntest.ins @@ -0,0 +1,37 @@ +\input docstrip.tex +\preamble + + kerntest class + + Copyright 2004 Harald Harders + + This program can be redistributed and/or modified under the terms + of the LaTeX Project Public License Distributed from CTAN + archives in directory macros/latex/base/lppl.txt; either + version 1.3 of the License, or any later version. + + h.harders@tu-bs.de + +\endpreamble + +\askforoverwritefalse + +% Files +%%%%%%%%%%%%%%%%%%%%%% +\generate{% + \file{kerntest.cls}{\from{kerntest.dtx}{class}}% + \file{t1mtx.clo}{\from{kerntest.dtx}{mtx,t1}}% + \file{ts1mtx.clo}{\from{kerntest.dtx}{mtx,ts1}}% + \file{ot1mtx.clo}{\from{kerntest.dtx}{mtx,ot1}}% + \file{t2amtx.clo}{\from{kerntest.dtx}{mtx,t2a}}% + \file{t2bmtx.clo}{\from{kerntest.dtx}{mtx,t2b}}% + \file{ly1mtx.clo}{\from{kerntest.dtx}{mtx,ly1}}% + \file{krntst-v.tex}{\from{kerntest.dtx}{version}}% + \usepostamble\empty + \file{t1-XXX-m-n.tex}{\from{kerntest.dtx}{template,t1}}% + \file{ts1-XXX-m-n.tex}{\from{kerntest.dtx}{template,ts1}}% + \file{ot1-XXX-m-n.tex}{\from{kerntest.dtx}{template,ot1}}% +}% + +\Msg{* Ready} +\endbatchfile diff --git a/Master/texmf-dist/source/latex/kerntest/latex/kerntest/Makefile b/Master/texmf-dist/source/latex/kerntest/latex/kerntest/Makefile deleted file mode 100644 index e5c279f4d86..00000000000 --- a/Master/texmf-dist/source/latex/kerntest/latex/kerntest/Makefile +++ /dev/null @@ -1,227 +0,0 @@ -# --------------------------------------------------------------- - -SRCDIR=kerntest -INSTALLDIR=`kpsewhich --expand-path='$$TEXMFLOCAL'`/tex/latex/kerntest -DOCDIR=`kpsewhich --expand-path='$$TEXMFLOCAL'`/doc/latex/kerntest -SOURCEDIR=`kpsewhich --expand-path='$$TEXMFLOCAL'`/source/latex/kerntest -VERSION=`grep -e '\\[.*\\]' krntst-v.tex | sed 's/ \\[[0-9/]* *\\([v0-9]*\\)\\.\\([0-9]*\\).*\\]/\\1_\\2/'` - -TEX= \ - kerntest.cls \ - ly1mtx.clo \ - ot1mtx.clo \ - t1mtx.clo \ - t2amtx.clo \ - t2bmtx.clo \ - ts1mtx.clo \ - -DOC= \ - kerntest.pdf \ - t1-XXX-m-n.tex \ - ts1-XXX-m-n.tex \ - ot1-XXX-m-n.tex \ - schoolb.map \ - schoolb1.tex \ - schoolb2.tex \ - t1-9nc-m-n-1.tex \ - t1-9nc-m-n-2.tex \ - t1-cmr-m-n-1200.tex \ - t1-ptm-m-n.tex \ - t1-ptm-bx-n-example.tex \ - t1cmr-1200.fd \ - t1-ptm-m-n-shortexample.tex \ - testschoolb.tex \ - README \ - ChangeLog \ - ToDo \ - kerntest.xml \ - -SOURCE= \ - Makefile \ - kerntest.dtx \ - kerntest.ins \ - -# --------------------------------------------------------------- - -.SUFFIXES: .cls .ins .dtx .dvi .ps .pdf - -# --------------------------------------------------------------- -.ins.cls: - latex $< - -.dtx.pdf: - pdflatex $< - pdflatex $< - makeindex -s gind.ist $(*D)/$(*F) - makeindex -s gglo.ist -o $(*D)/$(*F).gls $(*D)/$(*F).glo - pdflatex $< - -.dvi.ps: - dvips -o $(*D)/$(*F).ps $(*D)/$(*F) - -# --------------------------------------------------------------- - -all: kerntest.cls - -dist: all t1-ptm-bx-n-example.pdf t1-ptm-m-n-shortexample.pdf \ - testschoolb-2.pdf kerntest.pdf - -# --------------------------------------------------------------- - -t1-ptm-bx-n-example.pdf: t1-ptm-bx-n-example.tex kerntest.cls - latex t1-ptm-bx-n-example - latex t1-ptm-bx-n-example - latex t1-ptm-bx-n-example - dvips -E -o t1-ptm-bx-n-example.ps t1-ptm-bx-n-example - epstopdf t1-ptm-bx-n-example.ps - -t1-ptm-m-n-shortexample.pdf: t1-ptm-m-n-shortexample.tex kerntest.cls - latex t1-ptm-m-n-shortexample - latex t1-ptm-m-n-shortexample - latex t1-ptm-m-n-shortexample - dvips -E -o t1-ptm-m-n-shortexample.ps t1-ptm-m-n-shortexample - epstopdf t1-ptm-m-n-shortexample.ps - -# --------------------------------------------------------------- - -clean: - @-rm -f kerntest.glo kerntest.gls kerntest.idx kerntest.ilg - @-rm -f kerntest.ind kerntest.aux kerntest.log kerntest.toc - @-rm -f *~ - @-rm -f t1-ptm-bx-n-example.aux t1-ptm-bx-n-example.dvi - @-rm -f t1-ptm-bx-n-example.log t1-ptm-bx-n-example.ps - @-rm -f t1-ptm-m-n-shortexample.aux t1-ptm-m-n-shortexample.dvi - @-rm -f t1-ptm-m-n-shortexample.log t1-ptm-m-n-shortexample.ps - @-rm -f t1-ptm-m-n-shortexample.mtx - @-rm -f testschoolb.dvi testschoolb-2.ps - @-rm -f testschoolb.aux testschoolb.log - @-rm -f c059013l.mtx c059013l.pl 9ncr8?.mtx 9ncr8?.pl 9ncr8?.vpl - @-rm -f t1-9nc-m-n-1.dvi t1-9nc-m-n-1.ps - @-rm -f t1-9nc-m-n-1.aux t1-9nc-m-n-1.log - @-rm -f t1-9nc-m-n-2.dvi t1-9nc-m-n-2.ps - @-rm -f t1-9nc-m-n-2.aux t1-9nc-m-n-2.log - @-rm -f t1-9nc-m-n-2.mtx - @-rm -f schoolb1.log schoolb2.log - @-rm -f t1-cmr-m-n-1200.aux t1-cmr-m-n-1200.log t1-cmr-m-n-1200.mtx - -distclean: clean - @-rm -f kerntest.cls *mtx.clo - @-rm -f krntst-v.tex - @-rm -f t1-ptm-bx-n-example.mtx t1-ptm-bx-n-example.pdf - @-rm -f t1-ptm-m-n-shortexample.pdf - @-rm -f t*19nc.fd 9ncr8?.tfm 9ncr8?.vf - @-rm -f t1-XXX-m-n.tex ts1-XXX-m-n.tex ot1-XXX-m-n.tex - @-rm -f t1-9nc-m-n-1.pdf t1-9nc-m-n-1.mtx - @-rm -f t1-9nc-m-n-2.pdf - @-rm -f t1-cmr-m-n-1200.dvi t1-cmr-m-n-1200.pdf - @-rm -f testschoolb-1.pdf testschoolb-2.pdf - -# --------------------------------------------------------------- - -tar: dist clean - echo Lege kerntest-$(VERSION).tar.gz an - -rm -f kerntest-$(VERSION).tar.gz - tar czCf .. kerntest-$(VERSION).tar.gz \ - $(SRCDIR)/README \ - $(SRCDIR)/ChangeLog \ - $(SRCDIR)/ToDo \ - $(SRCDIR)/Makefile \ - $(SRCDIR)/kerntest.dtx \ - $(SRCDIR)/kerntest.ins \ - $(SRCDIR)/kerntest.pdf \ - $(SRCDIR)/kerntest.xml \ - $(SRCDIR)/schoolb.map \ - $(SRCDIR)/schoolb1.tex \ - $(SRCDIR)/schoolb2.tex \ - $(SRCDIR)/t1-9nc-m-n-1.tex \ - $(SRCDIR)/t1-9nc-m-n-2.tex \ - $(SRCDIR)/t1-ptm-bx-n-example.tex \ - $(SRCDIR)/t1-ptm-m-n-shortexample.tex \ - $(SRCDIR)/t1-ptm-m-n.tex \ - $(SRCDIR)/t1-cmr-m-n-1200.tex \ - $(SRCDIR)/t1cmr-1200.fd \ - $(SRCDIR)/testschoolb.tex \ - -# --------------------------------------------------------------- - -texlive: all clean - @-rm -rf texmf - mkdir -p texmf/tex/latex/kerntest - mkdir -p texmf/doc/latex/kerntest - mkdir -p texmf/source/latex/kerntest - cp $(TEX) texmf/tex/latex/kerntest - cp $(DOC) texmf/doc/latex/kerntest - cp $(SOURCE) texmf/source/latex/kerntest - -# --------------------------------------------------------------- - -zip: texlive - -@rm -f kerntest-$(VERSION).zip - zip -r kerntest-$(VERSION).zip texmf - @-rm -r texmf/ - -# --------------------------------------------------------------- - -install: all - if [ ! -d $(INSTALLDIR) ]; then mkdir -p $(INSTALLDIR); fi - if [ ! -d $(DOCDIR) ]; then mkdir -p $(DOCDIR); fi - if [ ! -d $(SOURCEDIR) ]; then mkdir -p $(SOURCEDIR); fi - install -m644 $(TEX) $(INSTALLDIR) - install -m644 $(DOC) $(DOCDIR) - install -m644 $(SOURCE) $(SOURCEDIR) - texhash - -# --------------------------------------------------------------- - -testschoolb-2.pdf: c059013l.pfb c059013l.afm schoolb1.tex schoolb2.tex \ - t1-9nc-m-n-1.tex t1-9nc-m-n-2.tex Makefile testschoolb.tex \ - kerntest.cls - tex schoolb1 - pltotf 9ncr8r.pl - vptovf 9ncr8c.vpl - vptovf 9ncr8t.vpl - @-rm -f c059013l.mtx c059013l.pl 9ncr8?.mtx 9ncr8?.pl 9ncr8?.vpl -# - latex testschoolb - dvips -E -u +./schoolb.map -o testschoolb-1.ps testschoolb - epstopdf testschoolb-1.ps - @-rm -f testschoolb.dvi testschoolb-1.ps - @-rm -f testschoolb.aux testschoolb.log -# - latex t1-9nc-m-n-1 - latex t1-9nc-m-n-1 - latex t1-9nc-m-n-1 - dvips -E -u +./schoolb.map -o t1-9nc-m-n-1.ps t1-9nc-m-n-1 - epstopdf t1-9nc-m-n-1.ps - @-rm -f t1-9nc-m-n-1.dvi t1-9nc-m-n-1.ps - @-rm -f t1-9nc-m-n-1.aux t1-9nc-m-n-1.log -# - tex schoolb2 - pltotf 9ncr8r.pl - vptovf 9ncr8c.vpl - vptovf 9ncr8t.vpl - @-rm -f c059013l.mtx c059013l.pl 9ncr8?.mtx 9ncr8?.pl 9ncr8?.vpl -# - latex testschoolb - dvips -E -u +./schoolb.map -o testschoolb-2.ps testschoolb - epstopdf testschoolb-2.ps - @-rm -f testschoolb.dvi testschoolb-2.ps - @-rm -f testschoolb.aux testschoolb.log -# - latex t1-9nc-m-n-2 - latex t1-9nc-m-n-2 - latex t1-9nc-m-n-2 - dvips -E -u +./schoolb.map -o t1-9nc-m-n-2.ps t1-9nc-m-n-2 - epstopdf t1-9nc-m-n-2.ps - @-rm -f t1-9nc-m-n-2.dvi t1-9nc-m-n-2.ps - @-rm -f t1-9nc-m-n-2.aux t1-9nc-m-n-2.log - @-rm -f t1-9nc-m-n-2.mtx - -# --------------------------------------------------------------- - -kerntest.cls: kerntest.ins kerntest.dtx -kerntest.pdf: kerntest.ins kerntest.dtx t1-ptm-bx-n-example.pdf \ - t1-ptm-m-n-shortexample.pdf schoolb1.tex testschoolb-2.pdf - -# --------------------------------------------------------------- - diff --git a/Master/texmf-dist/source/latex/kerntest/latex/kerntest/kerntest.dtx b/Master/texmf-dist/source/latex/kerntest/latex/kerntest/kerntest.dtx deleted file mode 100644 index b233abca351..00000000000 --- a/Master/texmf-dist/source/latex/kerntest/latex/kerntest/kerntest.dtx +++ /dev/null @@ -1,5373 +0,0 @@ -% \iffalse meta comment -% File: kerntest.dtx Copyright (C) 2004 Harald Harders -% \fi -% -% \iffalse -% -%<*driver> -\listfiles -\documentclass[ngerman,english,a4paper]{ltxdoc} -\usepackage[T1]{fontenc} -\usepackage[latin1]{inputenc} -\IfFileExists{fix-cm.sty}{\usepackage{fix-cm}}{} -\usepackage{longtable} -\usepackage{graphicx} -\let\origverbatim\verbatim -\let\endorigverbatim\endverbatim -\usepackage{verbatim} -\usepackage{babel} -\usepackage{calc} -\usepackage{url} -\IfFileExists{booktabs.sty}{\usepackage{booktabs}}{% - \GenericWarning{kerntest.dtx}{Package file booktabs.sty not - found. Documentation formatting will be poor}% - \def\toprule\hline - \def\midrule\hline - \def\bottomrule\hline -} -\IfFileExists{krntst-v.tex}{% - \input{krntst-v.tex} - \GetFileInfo{krntst-v.tex} -}{% - \ClassError{kerntest}{File krntst-v.tex not found, please run `latex - kerntest.ins' first.}{No additional help}% - \def\fileversion{\textbf{??}}% - \def\filedate{\textbf{??}}% -} -\title{The \texttt{kerntest} package} -\author{Harald Harders\\\texttt{h.harders@tu-bs.de}} -\date{Version \fileversion\ (\filedate), printed \today} -\makeatletter -\newlength\tempdima -\newlength\tempdimb -\renewenvironment{table}[1][]{% - \@float{table}[#1]% - \centering% - \setlength{\tempdima}{\abovecaptionskip}% - \setlength{\abovecaptionskip}{\belowcaptionskip}% - \setlength{\belowcaptionskip}{\tempdima}% -}{% - \end@float -} -\def\meta@font@select{\normalfont\itshape} -%% -\def\DescribeOpt{\leavevmode\@bsphack\begingroup\MakePrivateLetters - \Describe@Opt} -\def\Describe@Opt#1{\endgroup - \marginpar{\raggedleft\PrintDescribeOpt{#1}}% - \SpecialOptIndex{#1}\@esphack\ignorespaces} -\def\SpecialOptIndex#1{\@bsphack - \index{#1\actualchar{\protect\ttfamily#1} - (class option)\encapchar usage}% - \index{class options:\levelchar{\protect\ttfamily#1}\encapchar - usage}\@esphack} -\@ifundefined{PrintDescribeOpt} - {\def\PrintDescribeOpt#1{\strut \MacroFont #1\ }}{} -\@ifundefined{PrintOptName} - {\def\PrintOptName#1{\strut \MacroFont #1\ }}{} -%% -\makeatother -%% -\newenvironment{fontbox}{% - \begin{quote} - \usefont{T1}{ptm}{m}{n}\fontsize{25}{12}\selectfont - \fboxsep-0.5\fboxrule -}{% - \end{quote} - \ignorespacesafterend -} -\newcommand\timesfont[1]{{\usefont{T1}{ptm}{m}{n}#1}} -%% -\newcommand\getkern[2]{% - \settowidth\tempdima{#1#2}% - \settowidth\tempdimb{#1\kern0pt#2}% - \setlength\tempdima{\tempdima-\tempdimb-\fboxrule}% -} -%% -\EnableCrossrefs -\CodelineIndex -\DoNotIndex{\def,\edef,\let,\newcommand,\newenvironment,\newcounter} -\DoNotIndex{\setcounter,\space,\if,\else,\fi,\empty,\@empty,\ifx,\fi} -\DoNotIndex{\ifnum,\fi,\expandafter,\csname,\endcsname,\the} -\DoNotIndex{\MessageBreak,\message,\newlength,\newif,\xdef,\newcount} -\DoNotIndex{\begingroup,\endgroup,\,,\@tempcnta,\@tempdima,\advance} -\DoNotIndex{\ensuremath,\filedate,\fileversion,\docdate} -\DoNotIndex{\mathit,\mathrm,\mathsf,\nprt@tmp,\nprt@tmpnum,\relax} -\DoNotIndex{\protect,\renewcommand,\setlength,\settowidth,\stepcounter} -\DoNotIndex{\string} -\CodelineNumbered -\RecordChanges -\CheckSum{6031} -\begin{document} - \DocInput{kerntest.dtx} -\end{document} -% -% \fi -% -% \changes{1.00}{2004/04/01}{Total new implementation}% -% \changes{1.10}{2004/04/06}{Add option `writeall'}% -% \changes{1.11}{2004/04/06}{Added more literature to bibliography}% -% \changes{1.20}{2004/04/11}{Allow to give glyphs by number (decimal, -% hex, octal) or by PostScript name}% -% \changes{1.20}{2004/04/11}{Write glyph name to table}% -% \changes{1.20}{2004/04/11}{Find and complain inconsistent kerning -% data}% -% \changes{1.20}{2004/04/11}{Introduce glyph classes to set the -% kerning for similar glyph shapes by once}% -% \changes{1.20}{2004/04/11}{Reduce left margin}% -% \changes{1.30}{2004/04/12}{Add encodings OT1, T2A, T2B, and LY1}% -% \changes{1.30}{2004/04/12}{Template for OT1 encoding}% -% \changes{1.30}{2004/04/12}{Parameter-dependent encodings (for -% example with or without ligatures)}% -% \changes{1.30}{2004/04/12}{New option |designsize| for giving the -% design size of the font explicitely}% -% \changes{1.31}{2004/04/13}{Use \cs{setleftkerning} and -% \cs{setrightkerning} instead of writing every kerning pair}% -% \changes{1.32}{2004/04/14}{Allow to set relative kerning widths in -% glyph classes}% -% -% \maketitle -% \begin{abstract} -% \noindent -% This class makes it easy to generate tables that show many different -% kerning pairs of an arbitrary font, usable by \LaTeX. -% It shows the kerning values that are used by the the font by default. -% -% In addition, this class enables the user to alternate the kernings -% and to observe the results. -% Kerning pairs can be defined for groups of similar glyphs at once. -% Automatically, an |mtx| file is generated that can be loaded by -% |fontinst| to introduce the user-made kernings into the virtual font -% for \LaTeX. -% \end{abstract} -% -% \tableofcontents -% -% \section*{Copyright} -% Copyright 2004 Harald Harders. -% -% This program can be redistributed and/or modified under the terms -% of the LaTeX Project Public License Distributed from CTAN -% archives in directory macros/latex/base/lppl.txt; either -% version 1.3 of the License, or any later version. -% -% \section{Introduction} -% -% Every glyph of a font is surrounded by a bouding box. -% Have a look at these glyphs: -% \begin{fontbox} -% ^^A \fbox{\raisebox{0pt}[\fontdimen12\font][\fontdimen11\font]{A}} -% \fbox{A} \fbox{m} \fbox{f} -% \itshape\fbox{A} \fbox{m} \fbox{f} -% \end{fontbox} -% As can be seen in this example, the glyphs may extend the bounding -% box. -% -% Normally, one character is placed after the other by simply putting -% the bounding boxes directly after each other: -% \begin{fontbox} -% \fbox{A}\kern-\fboxrule -% \fbox{H}\kern-\fboxrule\fbox{V}\kern-\fboxrule -% \fbox{A}\kern-\fboxrule\fbox{m}\kern-\fboxrule -% \fbox{f}\kern-\fboxrule\fbox{T} -% -% \itshape -% \fbox{A}\kern-\fboxrule -% \fbox{H}\kern-\fboxrule\fbox{V}\kern-\fboxrule -% \fbox{A}\kern-\fboxrule\fbox{m}\kern-\fboxrule -% \fbox{f}\kern-\fboxrule\fbox{T} -% \end{fontbox} -% In most cases, this works great, but sometimes the distance between -% two glyphs is ugly then. -% Here, for instance, have a look at -% ``\timesfont{V\kern0pt A}'', ``\timesfont{f\kern0pt T}'', -% ``\timesfont{\itshape V\kern0pt A}'', and -% ``\timesfont{\itshape f\kern0pt T}''. -% To improve these cases, the bounding boxes are moved together or -% away from another, as shown in the next example. -% This is called kerning. -% To be able to do the kerning, the font contains a table of pairs of -% glyphs and the distance to move the second one. -% \begin{fontbox} -% \fbox{A}\getkern{A}{H}\kern\tempdima -% \fbox{H}\getkern{H}{V}\kern\tempdima -% \fbox{V}\getkern{V}{A}\kern\tempdima -% \fbox{A}\getkern{A}{m}\kern\tempdima -% \fbox{m}\getkern{m}{f}\kern\tempdima -% \fbox{f}\getkern{f}{T}\kern\tempdima -% \fbox{T} -% -% \itshape -% \fbox{A}\getkern{A}{H}\kern\tempdima -% \fbox{H}\getkern{H}{V}\kern\tempdima -% \fbox{V}\getkern{V}{A}\kern\tempdima -% \fbox{A}\getkern{A}{m}\kern\tempdima -% \fbox{m}\getkern{m}{f}\kern\tempdima -% \fbox{f}\getkern{f}{T}\kern\tempdima -% \fbox{T} -% \end{fontbox} -% What you see here is the original kerning of the Times Roman -% installed in your \TeX\ system. -% The V--A pairs are improved; but the f still touches the T which is -% not wanted. -% The Times Roman font misses this kerning pair. -% Better were this: -% \begin{fontbox} -% \fbox{A}\getkern{A}{H}\kern\tempdima -% \fbox{H}\getkern{H}{V}\kern\tempdima -% \fbox{V}\getkern{V}{A}\kern\tempdima -% \fbox{A}\getkern{A}{m}\kern\tempdima -% \fbox{m}\getkern{m}{f}\kern\tempdima -% \fbox{f}\kern0.06em -% \fbox{T} -% -% \itshape -% \fbox{A}\getkern{A}{H}\kern\tempdima -% \fbox{H}\getkern{H}{V}\kern\tempdima -% \fbox{V}\getkern{V}{A}\kern\tempdima -% \fbox{A}\getkern{A}{m}\kern\tempdima -% \fbox{m}\getkern{m}{f}\kern\tempdima -% \fbox{f}\kern0.07em -% \fbox{T} -% \end{fontbox} -% -% Most fonts are missing many of these kerning pairs that are -% necessary for a good typography. -% Especially if you are writing in a language other than English, many -% kernig pairs are missing. -% Have a look at this example with quotation marks used in German, -% with the original kerning of the Times: -% \begin{fontbox} -% \fbox{,,}\getkern{,,}{T}\kern\tempdima -% \fbox{T}\getkern{T}{A}\kern\tempdima -% \fbox{A}\getkern{A}{``}\kern\tempdima -% \fbox{``} -% \fbox{>>}\getkern{>>}{V}\kern\tempdima -% \fbox{V}\getkern{V}{a}\kern\tempdima -% \fbox{a}\getkern{a}{V}\kern\tempdima -% \fbox{V}\getkern{V}{<<}\kern\tempdima -% \fbox{<<} -% \end{fontbox} -% As you can see, there is no kerning at all. -% -% And here comes, what this class is intended to do: -% It is difficult to calculate the necessary kerning automatically. -% Thus, it can be helpful to generate some kerning pairs and to try -% different amounts of kernings. -% Compare the different kernings in this example (this time without -% the bounding boxes): -% \begin{fontbox} -% A`` -% A\kern-0.04em`` -% A\kern-0.08em`` -% A\kern-0.12em`` -% A\kern-0.16em`` -% A\kern-0.20em`` -% A\kern-0.24em`` -% A\kern-0.28em`` -% A\kern-0.32em`` -% A\kern-0.36em`` -% \end{fontbox} -% The first one is without kerning. -% The kerning in the last one ($-0.35\,\mathrm{em}$) is surely too -% much since both glyphs touch each other. -% It really isn't easy to find the ``perfect'' kerning. -% One remark here: It is worse to have a too tight kerning than too -% less kerning. Thus please do as little kerning as you think can work -% well. -% -% With the |kerntest| class, it is easy to try out different values. -% How this can be done is described in the next section. -% -% -% \section{Usage of the class} -% -% \subsection{Introduction} -% -% In the simplest case, you can use the package like this: -% \verbatiminput{t1-ptm-m-n-shortexample.tex} -% You have to define the font family to be tested in the optional -% argument of the \cs{documentclass} command. -% The syntax is |family=|\meta{font family}, while \meta{font -% family} is the typical abbreviation according to Karl Berry's name -% scheme~\cite{berry1999a}, e.g., |cmr| for Computer Modern Roman, -% |ptm| for Times Roman, |phv| for Helvetica, |pmnj| for Adobe Minion -% with old-style numbers, |pmnx| for Adobe Minion with expert -% characters. -% -% The options |extraname=shortexample| and |footer=false| are not so -% important and described later. -% -% \DescribeEnv{kerntable}% -% The kerning table is generated by the |kerntable| environment which -% is represented by a |longtable| environment internally. -% \DescribeMacro{\testkern}% -% Each line of this environment has to contain one \cs{testkern} -% command with five arguments: -% \begin{enumerate} -% \item The first one contains the name or character number of the -% left character in the table (see Fig.~\ref{fig:shortexample}). -% Which glyph corresponds to a given value depends on the used -% encoding, default is the cork encoding |T1|. -% The glyph can be specified by giving a decimal number (|0| to -% |255|), a hexadecimal number (|"0| to |"FF|), an octal -% number (|'0| to |'377|), or by giving the PostScript glyph -% name, e.g., |grave|, |guillemotright|, |A|, |Aring|. -% It does not work to give \LaTeX\ sequences as |<<|, -% |\guillemotright|, etc. -% \item The second argument gives the kerning of the characters -% defined in the first and in the third argument. -% The used unit are Postscript Type\,1 font units which have the -% length of 0.001\,em. -% It is not allowed to specify another unit. -% -% If the second argument is ``|-|'' the original kerning of the -% font is shown (first line of the example). -% -% If a value is given (second line) the original kerning is -% overwritten by the given value. -% Negative values reduce the distance of the glyphs, positive values -% increase it. -% \item The third argument specifies the second glyph. -% \item The fourth argument is the kerning between the second and the -% third glyph and works exactly as the second argument. -% \item The fifth argument specifies the third glyph. -% \end{enumerate} -% After the \cs{testkern} command, an arbitrary (but short) comment -% may be added. -% Often, it is good to write the name of the glyph here. -% With |t1-XXX-m-n.tex| and |ts1-XXX-m-n.tex|, two templates are given -% that contains all glyph names for the |T1| and |TS1| encodings. -% -% Each line in the |kerntable| environment (even the last one) has to -% end with a |\\| or \cs{tabularnewline}. -% -% The output of this file is shown in Fig.~\ref{fig:shortexample}. -% \begin{figure} -% \centering -% \fboxsep=1mm -% \makebox[\textwidth][c]{% -% \fbox{\includegraphics[scale=0.8]{t1-ptm-m-n-shortexample}}} -% \caption{Example for a part of a kerning table (explanations in the -% text)} -% \label{fig:shortexample} -% \end{figure} -% In the first column, the number of the middle character (argument -% |#3| of the \cs{testkern} command is listed, followed by the -% PostScript glyph name. -% In the third column, the combination of characters is printed with -% original kerning for both pairs, while the forth column shows the -% newly suggested kerning. -% In the fifth column, both variants are printed over each other (the -% old one grey, the new one black). -% The next two columns show the values of the two kerning pairs in -% Postscript font units (normally, 0.001\,em). -% If the user has not given a new kerning the original value is -% printed in grey. -% If the user has defined a new kerning, this new value is printed in -% black. -% If, in this case, the old kerning is unequal zero, it is printed in -% parentheses before the new value (second line of the example). -% The rest of each line are examples and comments. -% -% -% \subsection{Most features by example} -% -% The next example shows some more switches that can be defined by the -% user:\label{page:example} -% \verbatiminput{t1-ptm-bx-n-example.tex} -% Have a look at the results in Fig~\ref{fig:example} before the -% switches are explained. -% \begin{figure} -% \centering -% \fboxsep=1mm -% \makebox[\textwidth][c]{% -% \fbox{\includegraphics[scale=0.8]{t1-ptm-bx-n-example}}} -% \caption{Example for a part of a kerning table (explanations in the -% text). -% The labels marked with a star are described in -% Section~\ref{sec:advanced}.}% -% \label{fig:example} -% \end{figure} -% -% \DescribeMacro{\kernsetup}% -% All class options except |family| can either be given as class -% option in the optional argument of the \cs{documentclass} command or -% as argument of the \cs{kernsetup} command. -% The |family| class option has to be given in the \cs{documentclass} -% command. -% Here comes a list of all class options: -% \begin{description} -% \item [|encoding=|\meta{font encoding}:] -% \DescribeOpt{encoding}% -% Font encoding (default: |T1|). -% Currently, |OT1|, |T1|, |TS1|, |T2A|, |T2B|, and -% |LY1|\footnote{While the other encodings are generated starting -% from |.etx| files, the LY1 encoding has been extracted from -% |texnansi.enc|. Some glyphs may have incorrect names.} are -% supported. -% \item [|family=|\meta{font family}:] -% \DescribeOpt{family}% -% Abbreviation of the font-family name according to Karl Berry's -% scheme~\cite{berry1999a}. -% This option is mandatory in the optional argument of the -% \cs{documentclass} command. -% \item [|series=|\meta{font series}:] -% \DescribeOpt{series}% -% Abbreviation for the series of the font (default: |m|), e.g., |m| -% for medium, |sb| for semibold, |b| for bold, |bx| for bold -% extended. -% \item [|shape=|\meta{font shape}:] -% \DescribeOpt{shape}% -% Abbreviation for the font shape (default: |n|), e.g., |n| for -% upright, |it| for italic, |sl| for slanted, |sc| for small caps, -% |scit| for italic small caps. -% \item [|size=|\meta{font size}:] -% \DescribeOpt{size}% -% Size of the tested font (default: |17.28pt|) in arbitrary units. -% This sets the \cs{baselineskip} to 1.2 times the given value. -% The |size| option does not change the size of the legend text -% which is fixed to 10\,pt. -% \item [|baselineskip=|\meta{baselineskip}:] -% \DescribeOpt{baselineskip}% -% Sets the \cs{baselineskip} explicitly. -% To take effect, it has to be given after the option |size| -% (default: |1.2*17.28pt|). -% \item [|designsize=|\meta{design size}:] -% \DescribeOpt{designsize}% -% For calculating the kerning data, a PostScript font unit is used -% which is 1/1000 of the font's design size. -% Unfortunately, it is not possible to get this size reliably in -% \LaTeX. -% For most fonts, 1\,em corresponds to the design size. -% But in some cases, it is not true: -% \begin{enumerate} -% \item Some fonts have a different em length, for example, the -% Computer Modern fonts. -% Then, the size given by the option |size| corresponds to the -% design size, but 1\,em does not. -% \item If the font is scaled by the |.fd| file, 1\,em is also -% scaled and may correspond to the design size while the size -% given with |size| does not. -% \end{enumerate} -% Since in most cases, 1\,em is the correct design size, this is the -% default. -% If it is not, you can give the correct design size by using the -% option |designsize|, for example, |designsize=0.9em|, -% |designsize=17pt|. -% \item [|example=|\meta{text}:] -% \DescribeOpt{example}% -% Alters the example text for columns 5 and 6 (default: |example|). -% \item [|papersize=|\meta{papersize}] -% \DescribeOpt{papersize}% -% Tells the |geometry| package which pagesize to use. -% Supported are all pagesizes handled by |geometry|, e.g., -% |a4paper|, |letter|, |legal| (no default). -% \item [|extraname=|\meta{fontname extension}:] -% \DescribeOpt{extraname}% -% Normally, the heading of each page of output as well as the -% filename of the |mtx| file are generated automatically by appending -% encoding, font family, font series, and font shape, e.g., -% |t1-cmr-m-n.mtx|. -% If you use this option, |-|\meta{fontname extension} is added both -% to the headings and to the filename. -% For example, |extraname=test1| leads to |t1-cmr-m-n-test1.mtx|. -% This is useful if you want to generate different |mtx| files that -% normally got the same name.\footnote{This is why the first example -% used this option.} -% \item [|color=|{\ensuremath\langle}|true|/|false|{\ensuremath\rangle}:] -% \DescribeOpt{color}% -% Switches on color output (default: |false|). -% New values are printed in red, while the old ones are printed -% black instead of black/grey. -% \item [|copyquotation=|{\ensuremath -%\langle}|true|/|false|{\ensuremath\rangle}:] -% \DescribeOpt{copyquotation}% -% If a kerning pair containing a double quotation mark, including -% guillemots, is set, write also the corresponding single one to the -% |mtx| file. -% \item [|writeall=|{\ensuremath -%\langle}|true|/|false|{\ensuremath\rangle}:] -% \DescribeOpt{writeall}% -% Write also the original kerning data to the |mtx| file. -% \item [|footer=|{\ensuremath -%\langle}|true|/|false|{\ensuremath\rangle}:] -% \DescribeOpt{footer}% -% Switch on or off the footline.\footnote{This option seems only to -% work in the \cs{documentclass} options. Don't ask me why.} -% \end{description} -% -% It has been mentioned some times that an |mtx| file is generated -% automatically. -% |mtx| files contain the font metrics during the fontinst process. -% Amongst other things, they contain the kerning data. -% For example, the |mtx| file generated by the last example looks like this: -% \verbatiminput{t1-ptm-bx-n-example.mtx} -% Only new or changed kerning values are inserted (e.g., -% |quotedblleft|--|A| is not included). -% -% \DescribeMacro{\mtxcomment} -% Using the \cs{mtxcomment}\marg{comment} command, you can write the -% given argument as comment into the |mtx| file. -% -% -% \subsection{Encoding-dependent parameters}% -% -% Some encodings may have slight differences depending on the used -% shape. -% For example, typewriter fonts may have ligatures but they are -% normally not used. -% Thus, the encodings do not have some glyphs when used with -% typewriter fonts (e.g., |ff|, |fi|, |ffi|, |fl|, |ffl| are -% missing). -% -% \DescribeMacro{\encodingsetup}% -% The class provides an interface to give the necessary parameters to -% these encodings. -% Use the command \cs{encodingsetup} that takes a comma-separated list -% of options as argument (as \cs{kernsetup}). -% -% Here are the encoding-specific options: -% \begin{description} -% \item [T1 encoding:]\strut -% \begin{description} -% \item [|ligaturing=|\meta{number}:] -% \DescribeOpt{ligaturing}% -% Level of how many ligatures are used (|-2|, |-1|, |0|, or |1|, -% default |1|). -% Here is the description from |t1.etx| (version 1.923, 2002/10/29): -% \begin{enumerate} -% \item[$1$] -% All the standard ligature glyphs (\texttt{fi}, \texttt{fl}, -% \texttt{ff}, \texttt{ffi}, \texttt{ffl}, \texttt{IJ}, and -% \texttt{ij}) are included and the normal ligaturing instructions -% (those for the \texttt{f}-ligatures) are included. -% \item[$0$] -% All the standard ligature glyphs are included, but none of their -% ligaturing instructions. -% \item[$-1$] -% The seven slots normally used for ligatures are left empty. -% \item[$-2$] -% The seven slots normally used for ligatures are left empty, as -% are the slots normally used for \texttt{c}, \texttt{f}, -% \texttt{s}, \texttt{i}, and \texttt{I}. -% \end{enumerate} -% \end{description} -% \item [OT1 encoding:]\strut -% \begin{description} -% \item [|ligaturing=|\meta{number}:] -% \DescribeOpt{ligaturing}% -% Level of how many ligatures are used (|0|, |1|, or |2|, -% default |2|). -% Please refer to |ot1.etx| for more details. -% \item [|italicizing=|{\ensuremath -%\langle}|true|/|false|{\ensuremath\rangle}:] -% \DescribeOpt{italicizing}% -% Use |dollar| when |false| and |sterling| when |true| (default: -% |false|). -% \end{description} -% \end{description} -% -% -% \subsection{Advanced features}% -% \label{sec:advanced}% -% -% In most fonts, different glyphs need the same kerning because their -% left or right edges are very similar, for example, the kerning on -% the left sides of -% \symbol{66}, \symbol{68}, \symbol{132}, \symbol{208}, \symbol{69}, -% \symbol{133}, \symbol{134}, \symbol{200}, \symbol{201}, \symbol{202}, -% \symbol{203}, \symbol{070}, \symbol{072}, \symbol{073}, -% \symbol{157}, \symbol{204}, \symbol{205}, \symbol{206}, -% \symbol{207}, \symbol{156}, \symbol{074}, \symbol{075}, -% \symbol{076}, \symbol{136}, \symbol{137}, \symbol{138}, -% \symbol{078}, \symbol{139}, \symbol{140}, \symbol{209}, -% \symbol{080}, \symbol{082}, \symbol{143}, \symbol{144}, -% \symbol{141}, and \symbol{222} -% should be equal. -% -% \DescribeMacro{\defglyphclass}% -% \DescribeMacro{\newglyphclass}% -% \DescribeMacro{\renewglyphclass}% -% \DescribeMacro{\provideglyphclass}% -% This can be reached by using so called ``glyph classes''. -% A new glyph class can be defined using one of the commands -% \cs{defglyphclass}, \cs{newglyphclass}, \cs{renewglyphclass}, and -% \cs{provideglyphclass}. -% The differences are similar to these of the commands -% \cs{newcommand}, \cs{renewcommand}, etc. -% They all have the syntax -% \cs{defglyphclass}\marg{side}\marg{name}\marg{glyphlist}. -% \meta{side} specifies the side of the glyphs on which the kerning -% shall be equal (|left| or |right|). -% The parameter \meta{name} specifies the name of the glyph list, the -% list above could be named ``|H|'' because they all have a similar -% shape as the H. -% The third argument, \meta{glyphlist}, contains a comma-separated -% list of all glyphs (PostScript names or numbers---as usual). -% For example, the above list is build by this command:\footnote{Due -% to a problem between the |ltxdoc| and |verbatim| packages, the -% \texttt{\%} signs appear at the beginning of each line. Just -% delete them in mind.} -%\begin{verbatim} -%\newglyphclass{left}{H}{B,D,Dcaron,Eth,E,Ecaron,Eogonek,Egrave,% -% Eacute,Ecircumflex,Edieresis,F,H,I,Idotaccent,Igrave,Iacute,% -% Icircumflex,Idieresis,IJ,J,K,L,Lacute,Lcaron,Lslash,N,Nacute,% -% Ncaron,Ntilde,P,R,Racute,Rcaron,Ng,Thorn}\end{verbatim} -% -% You can specify arbitrary glyph classes. -% If you, for example, use the |copyquotation| option glyph classes -% are made containing one double and one single quotation mark each. -% -% When you write a kerning table using the |kerntable| environment and -% it happens that you change the kerning for a glyph that is member of -% a glyph class, the kernings for all other glyphs of the same glyph -% class are automatically changed on the specific side. -% This can be seen in the example on Page~\pageref{page:example} and -% in Figure~\ref{fig:example}: -% -% |period| and |comma| build a glyph pair on both sides. -% In the first line of the table, left and right kerning between the -% period and the quotation marks are changed by the user. -% The kerning between the comma and quotation marks is then set -% automatically; the user does not have to specify them again (the -% kerning data contain a simple |-| in the second line). -% If you specify the same value explicitly, a warning is generated. -% If you specify conflicting values, the programme generates an error -% message (not shown). -% -% Automatically generated kerning pairs are marked by $\ast$ behind -% the value (as can be seen in the second and 12th line of the -% example). -% Repeated values are marked by $^\dagger$. -% -% There is one shortcoming: -% If you don't specify the kerning for a glyph class at the first -% occurance of this glyph, the correct kerning data are not shown for -% the occurances before the position you have specified the kerning. -% In the example, the kerning between the members of the glyph class -% ``A'' (A, \"A, and \AA) and the right German quotation mark -% (\textquotedblleft), is not specified for the first char of the -% glyph class, \"A, but for the second one, A. -% Thus, the kerning of $-150$ is shown for ``A'' and for ``\AA'', but -% not for ``\"A''. -% But nevertheless, the kerning data written to the |mtx| files are -% correct. -% -% All glyphs, given by \cs{defglyphclass} get the same kerning by -% default. -% You can specify different scale factors by appending -% |[|\meta{scale}|]| to each glyph name; while a factor of |1000| is -% the default and means ``the same kerningn width''. -% -% For example, -%\begin{verbatim} -%\defglyphclass{right}{A}{A,Aring[800],Adieresis[1200],Abreve}\end{verbatim} -% defines a glyph class containing ``A'', ``\AA'', ``\"A'', and ``\u A''. -% All kernings on the right side of ``\AA'' have a width of 80\,%\ of -% these ``A'' has. -% ``\"A'' is kerned 120\,\% of ``A''. -% ``\u A'' is again kerned as ``A''. -% -% You can also specify a different scaling for the first glyph in the -% glyph class. -% But then, all values are scaled in order to reach a factor of |1000| -% for the first entry. -% For example, -%\begin{verbatim} -%\defglyphclass{right}{A}{A[500],Aring[400],Adieresis[600],Abreve[500]}\end{verbatim} -% is identical to the example above. -% -% The effect of scaled kernings can be seen in the example on -% Page~\pageref{page:example} and in Figure~\ref{fig:example} where -% ``\u A'' has half the scaling of ``A'' and ``\AA''. -% -% If two glyphs with scalings different from |1000| meet each other -% both scaling factors are multiplicated. -% -% There are some interesting commands to handle these glyph classes. -% Please have a look in Section~\ref{sec:glyphclasses} for their -% description. -% -% -% \section{Configuration file} -% -% If you are too lazy to put the same options into every source file -% you may write all options except |family| into the configuration -% file |kerntest.cfg| and put it into the \LaTeX\ path. -% If it is present, it is loaded automatically. -% -% -% -% \section{Kerning pairs that are often missing} -% -% This section shows some kerning pairs that are often missing, even -% in expensive fonts. -% This problem arises since most fonts are merely designed for the -% English language. -% -% \subsection{Character combinations} -% -% Some glyphs need a kerning to many other glyphs, including ``A'', -% ``T'', ``V'', ``W'', and ``Y''. -% For the ordinary lowercase letters, these kernings are included in -% most fonts (if the lowercase letter is on the right of the capital). -% But often, glyphs of other Languages than English are forgotten, -% e.g., ``T\c c'', ``V\'e'', etc. -% But you may not simply copy all kernings of, for instance, ``Ta'' to -% ``T\"a'', ``T\'a'', ``T\aa'', ``T\c a'' etc. -% Often, these glyphs have parts that force the kerning to be reduced -% or even deleted. -% -% Most character pairs with the uppercase letters (``A'', ``T'', -% ``V'', ``W'', ``Y'') after a lowercase letters are not kerned in the -% fonts. -% In most cases, this should not be a problem because these -% combinations are never printed. (Nowadays, its getting more and more -% important to have these kernings since it is a fashion to use -% uppercase letters within words, e.g., ``ServicePoint''.\footnote{The -% German railway company really uses this term!}) -% But some combinations really should be kerned: ``eV'' -% (electronvolt), ``mV'' (millivolt). -% -% \subsection{Quotation marks} -% -% Most fonts don't provide kerning for quotation marks other than the -% English ones. -% In English, ``Hello'' is used (``66--99''). -% French uses << and >>: <>. -% In German, the three possibilities ,,Hallo`` (``99--66''), -% >>Hallo<<, and >>Hallo<< are used. -% In Italian, <> or ``Ciao,, are possible. -% Swedish uses >>Hi>> or ''Hi''~\cite{forssman2002a}. -% For all non-English possibilities, most fonts have no kerning -% information. -% Thus, you should generate five tables for every font, hopefully -% containing all possibilities (\char019H\char020, -% \char020H\char019, \char016H\char017, \char018H\char016, -% \char017H\char018): -% |\testkern{019}{-}{|\meta{glyph}|}{-}{020}|, -% |\testkern{020}{-}{|\meta{glyph}|}{-}{019}|, -% |\testkern{016}{-}{|\meta{glyph}|}{-}{017}|, -% |\testkern{018}{-}{|\meta{glyph}|}{-}{016}|, -% |\testkern{017}{-}{|\meta{glyph}|}{-}{018}|, -% where \meta{glyph} stands for all 256 glyphs contained in a T1 -% encoded font. -% -% All problems mentioned for the double quotation marks apply also for -% their single variants (\glq, \grq, ', \flq, and \frq). -% In most cases, they need the same kerning as their double -% counterparts. -% -% There are two templates enclosed to build these kerning tables: -% |t1-XXX-m-n.tex| and |ts1-XXX-m-n.tex|. -% Hopefully, the names tell you which one to use. -% They contain some comments that should help to use them. -% -% One (repeated) remark: -% Please don't overdo the kerning if you adjust it. -% In most cases, good is less than you think on first sight. -% You can also orientate on predefined kernings. -% For example, the kerning for A`` should be similar to A''. -% -% But you are still not save to get the correct kerning when your font -% knows them. -% This is due to the fact that there are multiple possibilities to -% access the quotation marks. -% For example, << can be produced by |<<|, \cs{guillemotleft}, and -% even by \cs{symbol\{19\}} (if you are using T1 encoding). -% If you use |inputenc.sty| you may use the characters directly, -% e.g.,~|«|. -% And after loading |babel.sty|, you can use \cs{flqq} and when writing -% German |"<|. -% -% These possibilities are not equivalent. -% -% \begin{sloppypar} -% The direct commands \cs{textquotedblleft}, \cs{textquotedblright}, -% \cs{quotedblbase}, \cs{guillemotleft}, \cs{guillemotright}, -% \cs{textquoteleft}, \cs{textquoteright}, \cs{quotesinglbase}, -% \cs{guilsinglleft}, and \cs{guilsinglright} work properly; they kern -% on their left and their right side. -% \end{sloppypar} -% The directly written quotation marks (|«|, |»|, etc.) also work -% correctly because the corresponding encoding file (e.g., -% |latin1.def|) translates them to the direct commands. -% -% The ligatures |``| and |''| seem also to work correctly. -% But the ligature |,,| kerns correctly on its right side, but on its -% left side, it kerns as a comma. -% This may also be correct but it needn't be always the case. -% |<<| and |>>| do not kern at all on their left side.\footnote{I -% believe they kern as |<| reps.\ |>|. But these characters don't -% have any kerning information in most cases.} -% -% Looking at the |babel| commands, only \cs{grqq} and \cs{grq} surely -% work correct. -% The others (\cs{glqq}, \cs{glq}, \cs{flqq}, \cs{flq}, \cs{frqq}, -% \cs{frq}) are defined differently and thus do not guarantee to kern -% correctly. -% On 2003/04/01, I have posted a bug report. -% Let's see what happens. -% -% The |babel| shortcuts |"`|, |"'|, |"<|, and |">| work as good as the -% corresponding commands. -% -% If you want a correct behaviour of all |babel| quotation marks, just -% copy the definition of \cs{grqq} (it contains of three command -% definitions!) from |babel.def| into your code and change it -% according to produce the other quotation marks. -% -% -% \section{An example of how to optimize a font} -% -% In this section, a very simple example is shown how to install a -% single font shape with fontinst~\cite{fontinst1998a} and how to -% change kernings for it. -% If you really want to understand what happens read the fontinst -% manual~\cite{fontinst1998a}, ``\TeX\ Unbound'' by Alan -% Hoenig~\cite{hoenig1998a}, or ``The Font Installation Guide'' by -% Philipp Lehman~\cite{lehman2003a}. -% -% Ghostscript contains the font ``Century Schoolbook~L Roman'' which -% is shipped as files |c059013l.afm| and |c059013l.pfb|. -% Please copy these files into a temporary directory. -% -% According to Karl Berry's scheme, the fontname is |uncr8a|. -% But this font is already prepared on most \TeX\ systems. -% Thus we take the fontname |9ncr8a| here. -% This will be the name for the result file. -% -% Then, run \TeX\ (not \LaTeX) on the script |schoolb1.tex| which does -% most work to install a new font: -% \verbatiminput{schoolb1.tex} -% This run creates some files with the extensions |.pl| and |.vpl|. -% They have to be converted to |tfm| and |vf| files as follows: -% \verbatiminput{convert.sh} -% Now, you can delete the temporary files with the extensions |.mtx|, -% |.pl|, and |.vpl|. -% -% The new font is ready for use with \LaTeX, now (only for T1 and TS1 -% encoding, OT1 encoding has been left out). -% Just run \LaTeX\ on the test file |testschoolb.tex|. -% But you are not yet able to use dvips or \textsc{pdf}\LaTeX\ -% because they need a |map| file. -% The corresponding one, |schoolb.map| looks like this: -% \verbatiminput{schoolb.map} -% With help of this map file, the |dvi| file can be converted to -% Postscript using dvips: -% |dvips -u +./schoolb.map -o testeschoolb-1.ps testschoolb| -% Unfortunately, you cannot use \textsc{pdf}\LaTeX\ without adding the -% contents of |schoolb.map| to the global |map| file. -% -% When viewing the result in |testschoolb-1.ps| -% (Fig.~\ref{fig:centuryschool1}), you see that this specific font -% already has most kernings that are missing in other fonts. -% \begin{figure} -% \centering -% \fboxsep=1mm -% \makebox[\textwidth][c]{% -% \fbox{\includegraphics[scale=1.0]{testschoolb-1}}} -% \caption{Font example for Century Schoolbook L with original kerning} -% \label{fig:centuryschool1} -% \end{figure} -% The only really forgotten kernings are A``, A`, \u A``, and -% \quotesinglbase V. -% -% Emagine that many kernings were unsatisfactory. -% Then, we generate a kerning table containing the glyph combinations -% we do not like: -% \verbatiminput{t1-9nc-m-n-1.tex} -% \begin{figure} -% \centering -% \fboxsep=1mm -% \makebox[\textwidth][c]{% -% \fbox{\includegraphics[scale=0.8]{t1-9nc-m-n-1}}} -% \caption{Kerning table for Century Schoolbook L} -% \label{fig:centuryschool1-table} -% \end{figure} -% This leads to the output shown in -% Fig.~\ref{fig:centuryschool1-table} and to the |mtx| file -% |t1-9nc-m-n-1.mtx|: -% \verbatiminput{t1-9nc-m-n-1.mtx} -% Using this file, you can repeat the |fontinst| run with a slightly -% changed script |schoolb2.tex|: -% \verbatiminput{schoolb2.tex} -% The only change amongst |schoolb1.tex| is the added entry -% |t1-9nc-m-n-1,| at the beginning of the second argument of the -% \cs{installfont\{9ncr8t\}} command. -% This includes the new kernings into the generated font. -% After repeating also the |pltotf| and |vptovf| calls, you can use -% the font with the new kernings. -% Running \LaTeX\ and dvips again on |testschoolb.tex| gives the -% output of Fig.~\ref{fig:centuryschool2}. -% \begin{figure} -% \centering -% \fboxsep=1mm -% \makebox[\textwidth][c]{% -% \fbox{\includegraphics[scale=1.0]{testschoolb-1}}}\\[\medskipamount] -% \makebox[\textwidth][c]{% -% \fbox{\includegraphics[scale=1.0]{testschoolb-2}}} -% \caption{Font example for Century Schoolbook L with original (top) -% and modified (bottom) kerning. -% The kerning is much too strong. -% Here, it only shows the effect of altering the kerning.} -% \label{fig:centuryschool2} -% \end{figure} -% Here, the kerning values are much too strong. -% The only aim of this was to show a clear difference between original -% and modified kerning. -% Have a look at the \u A kernings. -% They have been set to be half as large as the A kernings on both -% sides. -% -% The last thing to do is to install the font files into the -% corresponding paths of your \TeX\ distribution and to append the map -% information to the global map files (normally by using |updmap|). -% -% -% \begin{thebibliography}{9} -% -% \newcommand\ctanurl[1]{\url{ftp://ftp.dante.de/tex-archive/#1}}% -% -% \bibitem{berry1999a} -% Karl Berry. -% \newblock Fontname, May 2003. -% \newblock \ctanurl{info/fontname/}. -% -% \bibitem{forssman2002a} -% Friedrich Forssman, Ralf de Jong. -% \newblock Detailtypografie, Verlag Hermann Schmidt, Mainz, Germany, -% 2002. -% -% \bibitem{hoenig1998a} -% Alan Hoenig. -% \newblock \TeX\ Unbound---\LaTeX\ \&\ \TeX\ Strategies for Fonts, -% Graphics, \&\ More, Oxford University Press, 1998. -% -% \bibitem{fontinst1998a} -% Alan Jeffry, Rowland McDonnell. -% \newblock fontinst---Font installation software for \TeX, June 1998. -% \newblock \ctanurl{fonts/utilities/fontinst/}. -% -% \bibitem{lehman2003a} -% Philipp Lehman. -% \newblock The Font Installation Guide, August 2003. -% \newblock \ctanurl{info/Type1fonts/fontinstallationguide.pdf}. -% -%\end{thebibliography} -% -% \StopEventually{\PrintChanges \PrintIndex} -% -% \section{The implementation} -% -% Heading of all files. -% \begin{macrocode} -%\ProvidesClass{kerntest} -%\ProvidesFile{t1mtx.clo} -%\ProvidesFile{ts1mtx.clo} -%\ProvidesFile{ot1mtx.clo} -%\ProvidesFile{t2amtx.clo} -%\ProvidesFile{t2bmtx.clo} -%\ProvidesFile{ly1mtx.clo} -%\ProvidesFile{krntst-v.tex} -% [2004/04/14 v1.32 Generate kerning tables] -% \end{macrocode} -% -% \subsection{Class file} -% -% Use a standard class as base. -% \begin{macrocode} -%<*class> -\LoadClass[10pt]{article} -% \end{macrocode} -% Use most of the space on the paper. -% \begin{macrocode} -\RequirePackage[top=18mm,left=15mm,right=15mm,bottom=20mm]{geometry} -% \end{macrocode} -% \changes{1.32}{2004/04/14}{Do not scale Helvetica by default because -% this breaks testing Helvetica}% -% Font for the legends. -% \begin{macrocode} -\renewcommand*\familydefault{\sfdefault} -\RequirePackage{helvet} -% \end{macrocode} -% More required packages. -% \begin{macrocode} -\RequirePackage{calc} -\RequirePackage{longtable} -\RequirePackage{array} -\RequirePackage{color} -\RequirePackage{ifthen} -\RequirePackage{keyval} -% \end{macrocode} -% Layout settings. -% \begin{macrocode} -\pagestyle{myheadings} -\def\@oddfoot{Kerning data, marked with $\ast$, are automatically reused - from values given before. - Repeated values are marked by $\dagger$.\hfill} -\def\@evenfoot{\@oddfoot} -\setlength{\parindent}{0mm} -% \end{macrocode} -% Declare lengths for the font size and the baselineskip. -% \begin{macrocode} -\newlength\krntst@size -\newlength\krntst@baselineskip -% \end{macrocode} -% Set the default values for the class options. -% \begin{macrocode} -\def\krntst@encoding{T1} -\def\krntst@series{m} -\def\krntst@shape{n} -\setlength\krntst@size{17.28pt} -\setlength\krntst@baselineskip{1.2\krntst@size} -\def\krntst@example{example} -\def\krntst@extraname{} -\definecolor{oldcolor}{gray}{0.5} -\definecolor{newcolor}{gray}{0} -\newboolean{krntst@writeall} -% \end{macrocode} -% The design size is given as command rather than as length because it -% shall not be calculated to a real length (in pt), but it shall scale -% with the chosen font. -% \begin{macrocode} -\newcommand\krntst@designsize{1em} -% \end{macrocode} -% Process the class options using the |keyval| package. -% \begin{macrocode} -\def\ProcessOptionsWithKV#1{% - \let\@tempc\relax - \let\KVo@tempa\@empty - \edef\KVo@tempa{% - \noexpand\setkeys{#1}{% - \@ptionlist{\@currname.\@currext}% - }% - }% - \KVo@tempa - \let\CurrentOption\@empty -} -% \end{macrocode} -% Define the keys for the class options and the \cs{kernsetup} -% command. -% \begin{macrocode} -\define@key{krntst}{encoding}{\def\krntst@encoding{#1}} -\define@key{krntst}{family}{\def\krntst@family{#1}} -\define@key{krntst}{series}{\def\krntst@series{#1}} -\define@key{krntst}{shape}{\def\krntst@shape{#1}} -\define@key{krntst}{size}{% - \setlength\krntst@size{#1}% - \setlength\krntst@baselineskip{1.2\krntst@size}% -} -\define@key{krntst}{baselineskip}{\setlength\krntst@baselineskip{#1}} -\define@key{krntst}{designsize}{\def\krntst@designsize{#1}}% -\define@key{krntst}{example}{\def\krntst@example{#1}} -\define@key{krntst}{papersize}{\geometry{#1}} -\define@key{krntst}{extraname}{\def\krntst@extraname{-#1}} -\define@key{krntst}{color}[true]{% - \csname if#1\endcsname - \definecolor{oldcolor}{gray}{0}% - \definecolor{newcolor}{rgb}{1,0,0}% - \else - \definecolor{oldcolor}{gray}{0.5}% - \definecolor{newcolor}{gray}{0}% - \fi -} -% \end{macrocode} -% Do the copying of quotation marks by introducing glyph classes. -% \begin{macrocode} -\define@key{krntst}{copyquotation}[true]{% - \csname if#1\endcsname - \newglyphclass{left}{leftguillemots}{guillemotleft,guilsinglleft}% - \newglyphclass{right}{leftguillemots}{guillemotleft,guilsinglleft}% - \newglyphclass{left}{rightguillemots}{guillemotright,guilsinglright}% - \newglyphclass{right}{rightguillemots}{guillemotright,guilsinglright}% - \newglyphclass{left}{leftquotes}{quotedblleft,quoteleft}% - \newglyphclass{right}{leftquotes}{quotedblleft,quoteleft}% - \newglyphclass{left}{rightquotes}{quotedblright,quoteright}% - \newglyphclass{right}{rightquotes}{quotedblright,quoteright}% - \newglyphclass{left}{basequotes}{quotedblbase,quotesinglbase}% - \newglyphclass{right}{basequotes}{quotedblbase,quotesinglbase}% - \fi -} -\define@key{krntst}{writeall}[true]{% - \setboolean{krntst@writeall}{#1}% - \ClassWarningNoLine{kerntest}{You are writing the new and the - original kerning data\MessageBreak - to the mtx file (option `writeall'). Normally, it is\MessageBreak - not necessary to write original data}% -} -\define@key{krntst}{footer}[true]{% - \csname if#1\endcsname - \else - \def\@oddfoot{}% - \def\@evenfoot{\@oddfoot}% - \fi -} -% \end{macrocode} -% \begin{macro}{\kernsetup} -% Define the macro \cs{kernsetup} and make it available only in the -% preamble. -% \begin{macrocode} -\newcommand\kernsetup{\setkeys{krntst}} -\@onlypreamble\kernsetup -% \end{macrocode} -% \end{macro} -% \changes{1.10}{2004/04/06}{Load configuration file if available}% -% Read in the configuration file if available. -% Do it before processing the options to allow the options to -% overwrite the configuration file entries. -% \begin{macrocode} -\AtEndOfClass{% - \InputIfFileExists{kerntest.cfg}{% - \message{Configuration file `kerntest.cfg' loaded.}% - }{% - \message{No configuration file `kerntest.cfg' found.}% - } -% \end{macrocode} -% Now, process the class options. -% \begin{macrocode} - \ProcessOptionsWithKV{krntst} -% \end{macrocode} -% This has to do something with a problem in |keyval.sty|. -% I do not really know what it does exactly. -% \begin{macrocode} - \let\@unprocessedoptions\relax -} -% \end{macrocode} -% Generate an error message if the class option |family| has not been -% given in the \cs{documentclass} command. -% \begin{macrocode} -\ifx\krntst@family\relax - \ClassError{kerntest}{Class option family not or incorrect - given\@gobble}{% - You have to specify the font family by using the - class\MessageBreak - option family=}% - \stop -\fi -% \end{macrocode} -% Redefine the |family| option to be unusable in the \cs{kernsetup} -% command. -% \begin{macrocode} -\AtEndOfClass{% - \define@key{krntst}{family}{% - \ClassError{kerntest}{Option `family' used outside - \string\documentclass\space command}{% - The option `family=' has to be specified in the - optional argument\MessageBreak - of the \string\documentclass\space command.}% - } -} -% \end{macrocode} -% \begin{macro}{\mtxcomment} -% Define a command that writes a comment to the |mtx| file. -% \begin{macrocode} -\newcommand\mtxcomment[1]{% - \protected@write\mtxfile{}{\@percentchar\space #1}% -} -% \end{macrocode} -% \end{macro} -% Define a command that is used to access the font for the legends. -% \begin{macrocode} -\newcommand\krntst@helpfont{\normalfont\normalsize} -% \end{macrocode} -% An internal counter that stores the slot of a glyph. -% \begin{macrocode} -\newcounter{@glyphslot}% -% \end{macrocode} -% The following commands have to be done at \cs{begin\{document\}} to -% ensure that all \cs{kernsetup} calls have been made before. -% \begin{macrocode} -\AtBeginDocument{% -% \end{macrocode} -% Load all used encodings and |T1| for the legends. -% If |T1| is used, it is loaded twice; it does not seem to be bad. -% \begin{macrocode} - \RequirePackage[\krntst@encoding,T1]{fontenc} -% \end{macrocode} -% Load the file that provides the Postscript glyph names. -% The trick to make it lowercase ist stolen from the |fontenc| -% package. -% \begin{macrocode} - \edef\reserved@f{% - \lowercase{\def\noexpand\reserved@f{\krntst@encoding mtx.clo}}}% - \reserved@f - \InputIfFileExists\reserved@f{}{% - \ClassWarningNoLine{kerntest}{Postscript name file `\reserved@f' - not found.\MessageBreak - The kerning table will be okay, but the generated mtx file will - not be usable}% - \newcommand\getpsname[1]{unknown character `##1'}% - }% -% \end{macrocode} -% \changes{1.32}{2004/04/14}{Direct access on glyph names instead of -% parsing \cs{getpsname}}% -% Generate macros of the form \cs{slotnumber@glyph@\meta{glyphname}} -% that return the slot number for each glyph. -% This is faster than parsing \cs{getpsname} for the searched glyph -% (on the cost of memory). -% \begin{macrocode} - \setcounter{@glyphslot}{0}% - \whiledo{\the\c@@glyphslot<256}{% - \expandafter\edef - \csname slotnumber@glyph@\getpsname{\the\c@@glyphslot}\endcsname{% - \the\c@@glyphslot}% - \stepcounter{@glyphslot}% - }% -% \end{macrocode} -% Initialise some font-specific things. -% This is done in a group to save the normal legend font outside the -% kerning table. -% \begin{macrocode} - \begingroup -% \end{macrocode} -% Switch to the font that shall be tested to see if the desired font -% size is possible etc. -% \begin{macrocode} - \usefont{\krntst@encoding}{\krntst@family}{\krntst@series}{\krntst@shape}% - \fontsize{\krntst@size}{\krntst@baselineskip}\selectfont% -% \end{macrocode} -% Set the Postscript font unit to 0.001 of the design size which is -% 1\,em, normally. -% \begin{macrocode} - \psunit=\krntst@designsize\relax - \global\psunit=0.001\psunit -% \end{macrocode} -% Give some feedback. -% \begin{macrocode} - \typeout{Requested: \krntst@encoding-\krntst@family-% - \krntst@series-\krntst@shape, size \the\krntst@size}% - \typeout{Using:\space\space\space\space\space \f@encoding-\f@family-% - \f@series-\f@shape, size \f@size pt}% - \expandafter\ifdim\the\krntst@size=\f@size pt\relax - \else - \ClassWarningNoLine{kerntest}{Using different font size than - requested}% - \fi - \setlength{\@tempdima}{\krntst@designsize}% - \typeout{Postscript font unit for design size \the\@tempdima: - \the\psunit}% - \expandafter\ifdim\the\@tempdima=\f@size pt\relax - \else - \ClassWarningNoLine{kerntest}{The design size (\the\@tempdima, - 1em by default,\MessageBreak - or given value from option `designsize') of the - font\MessageBreak - is not equal to the LaTeX font size (\f@size pt).\MessageBreak - This can have two reasons:\MessageBreak - 1. The font does not define 1em to be the design - size\MessageBreak - \space\space\space (for example, Computer - Modern).\MessageBreak - 2. The font is implicitely scaled by the fd-file\MessageBreak - \space\space\space (for example, when using - helvet.sty).\MessageBreak - This can cause the PostScript font unit length to - be\MessageBreak - incorrect. - You may set the design size for calculation\MessageBreak - of the font unit explicitely by using the class\MessageBreak - option `designsize'}% - \fi -% \end{macrocode} -% Define the name for the headings and the |mtx| file (lowercase trick -% again taken from |fontenc.sty|). -% \begin{macrocode} - \edef\mtxfilename{% - \lowercase{\gdef\noexpand\mtxfilename{% - \f@encoding-\f@family-\f@series-\f@shape\krntst@extraname}}}% - \mtxfilename -% \end{macrocode} -% Set the page headings. -% \begin{macrocode} - \markboth{\upshape Font \mtxfilename}{\upshape Font \mtxfilename}% -% \end{macrocode} -% Don't change the page headings by \cs{section} etc. -% \begin{macrocode} -% \global\def\markboth#1#2{}% -% \global\def\markright#1{}% -% \end{macrocode} -% Open the |mtx| file. -% \begin{macrocode} - \typeout{^^JWriting mtx file `\mtxfilename.mtx'^^J}% - \immediate\openout\mtxfile\mtxfilename.mtx -% \end{macrocode} -% Write a nice header to the |mtx| file. -% \begin{macrocode} - \protected@write\mtxfile{}{\@percentchar\@percentchar}% - \protected@write\mtxfile{}{\@percentchar\@percentchar\space - This is file `\mtxfilename.mtx',}% - \protected@write\mtxfile{}{\@percentchar\@percentchar\space - generated on \number\year/\number\month/\number\day\space - by kerntest.cls, (c) 2004 Harald Harders.}% - \protected@write\mtxfile{}{\@percentchar\@percentchar}% - \protected@write\mtxfile{}{\@percentchar\@percentchar\space - The original source file was:}% - \protected@write\mtxfile{}{\@percentchar\@percentchar}% - \protected@write\mtxfile{}{\@percentchar\@percentchar\space - \jobname\space (.tex?) with these font options:}% - \protected@write\mtxfile{}{\@percentchar\@percentchar\space - Encoding: \f@encoding}% - \protected@write\mtxfile{}{\@percentchar\@percentchar\space - Family: \space\space\f@family}% - \protected@write\mtxfile{}{\@percentchar\@percentchar\space - Series: \space\space\f@series}% - \protected@write\mtxfile{}{\@percentchar\@percentchar\space - Shape: \space\space\space\f@shape}% - \protected@write\mtxfile{}{\@percentchar\@percentchar\space - User-defined name: \krntst@extraname}% - \protected@write\mtxfile{}{\@percentchar\@percentchar}% - \protected@write\mtxfile{}{\string\relax}% - \protected@write\mtxfile{}{\string\metrics}% - \protected@write\mtxfile{}{\string\needsfontinstversion{1.926}}% - \protected@write\mtxfile{}{\@percentchar\@percentchar}% - \protected@write\mtxfile{}{\@percentchar\@percentchar\space - Kerning data for single characters and}% - \protected@write\mtxfile{}{\@percentchar\@percentchar\space - the first members of the glyph classes.}% - \protected@write\mtxfile{}{\@percentchar\@percentchar}% - \protected@write\mtxfile{}{\@percentchar\@percentchar\space - After each \string\setkern\space entry, the glyph classes}% - \protected@write\mtxfile{}{\@percentchar\@percentchar\space - for both glyphs are given (./. means no class).}% - \protected@write\mtxfile{}{\@percentchar\@percentchar}% - \endgroup -} -% \end{macrocode} -% Declare the output handle for the |mtx| file. -% \begin{macrocode} -\newwrite\mtxfile -% \end{macrocode} -% Round a length to an integer value. -% I am sure this can be done easier, but it works. -% \begin{macrocode} -\def\krntst@round#1.#2#3#4\@empty{% - \setlength\@tempdimc{#1pt}% - \if#2.% - \else - \ifnum#2>4 - \ifnum#1#2<0 - \addtolength\@tempdimc{-1.1pt}% - \else - \addtolength\@tempdimc{1.1pt}% - \fi - \fi - \fi - \edef\rnd@tempa{\strip@pt\@tempdimc}% - \expandafter\krntst@@round\rnd@tempa.000\@empty -} -% \end{macrocode} -% Calculate the rounded length. -% \begin{macrocode} -\def\krntst@@round#1.#2#3\@empty{\def\kernlen{#1}} -% \end{macrocode} -% \begin{macro}{\round} -% The user routine for rounding lengths. -% The rounded length is \emph{not} returned but saved in the macro -% \cs{kernlen}. -% \begin{macrocode} -\newcommand*\round[1]{% - \setlength\@tempdimc{#1}% - \edef\rnd@tempa{\strip@pt\@tempdimc}% - \expandafter\krntst@round\rnd@tempa.000\@empty -} -% \end{macrocode} -% \end{macro} -% Define the Postscript font length. -% \begin{macrocode} -\newlength\psunit -% \end{macrocode} -% \begin{macro}{\getpsunit} -% Saves the rounded length of arbitrary unit in Postscript font units -% in the dimension \cs{@tempdima}. -% It has to be used with \cs{strip@pt} to get rid of the unit ``pt'' -% which is wrong of course. -% \begin{macrocode} -\newcommand\getpsunit[1]{% - \setlength\@tempdima{1pt*\ratio{#1}{\psunit}}% -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\getkern} -% Get the kerning between the arguments |#1| and |#2|. -% This is done by typesetting |#1#2| with the natural kerning and with -% supressed kerning (|#1\kern 0pt#2|). -% The difference of the box widths is the kerning. -% Return an integer value in Postscript font units. -% \begin{macrocode} -\newcommand\getkern[2]{% - \settowidth\@tempdima{#1#2}% - \settowidth\@tempdimb{#1\kern0pt#2}% -% \end{macrocode} -% The next line works better than deviding |\@tempdima-\@tempdimb| by -% |0.001em| because rounding errors are avoided. -% \begin{macrocode} - \setlength\@tempdima{1pt*\ratio{(\@tempdima-\@tempdimb)*1000}{1em}}% - \round{\@tempdima}% -} -% \end{macrocode} -% \end{macro} -% The internal routine for \cs{saveslotnumber}. -% Finds out if a slot number or the Postscript name is given and saves -% the slot number in the counter |@glyphslot|. -% \begin{macrocode} -\def\@saveslotnumber#1#2\@empty{% - \if#1"\relax - \setcounter{@glyphslot}{#1#2}% - \else - \if#1'\relax - \setcounter{@glyphslot}{#1#2}% - \else - \ifnum9<1#1\relax - \setcounter{@glyphslot}{#1#2}% - \else - \begingroup\expandafter\expandafter\expandafter\endgroup - \expandafter\ifx\csname slotnumber@glyph@#1#2\endcsname\relax - \setcounter{@glyphslot}{-1}% - \else - \setcounter{@glyphslot}{\csname slotnumber@glyph@#1#2\endcsname}% - \fi - \fi - \fi - \fi - \ifnum\the\c@@glyphslot>255\relax - \setcounter{@glyphslot}{-1}% - \fi -} -% \end{macrocode} -% \begin{macro}{\saveslotnumber} -% Saves the slot number of a glyph given as second argument (by -% PostScript name or its slot number in decimals, octal, or -% hexadecimals) in the counter specified in the first argument. -% \begin{macrocode} -\DeclareRobustCommand*\saveslotnumber[2]{% - \expandafter\@saveslotnumber#2\@empty - \setcounter{#1}{\the\c@@glyphslot}% -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\getslotnumber} -% Returns the slot number of a given glyph (by PostScript name or its -% slot number in decimals, octal, or hexadecimals) in a decimal number. -% \begin{macrocode} -\newcommand\getslotnumber[1]{% - \expandafter\@saveslotnumber#1\@empty - \ifnum\the\c@@glyphslot<0\relax - \textbf{???}% - \else - \ifnum\c@@glyphslot<100\relax0\fi - \ifnum\c@@glyphslot<10\relax0\fi - \the\c@@glyphslot - \fi -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\printglyph} -% Print the glyph with the given PostScript name or slot number (in -% decimals, octal, or hexadecimals; as usual in \LaTeX). -% Unfortunately, no kerning appears on the left side of the printed -% glyph. -% For example, |\printglyph{A}V| is kerned, but |A\printglyph{V}| -% isn't. -% You can solve this by saving the slot number first and by using it -% later, for example: -%\begin{verbatim} -%\newcounter{slotV}% -%\saveslotnumber{slotV}{V}% -%A\char\arabic{slotV} -%\end{verbatim} -% \begin{macrocode} -\newcommand*\printglyph[1]{% - \expandafter\@saveslotnumber#1\@empty - \char\the\c@@glyphslot -} -% \end{macrocode} -% \end{macro} -% A help macro for comparing arguments with ``|-|''. -% \begin{macrocode} -\edef\@minussign{-}% -% \end{macrocode} -% Counters storing the slot numbers for the three glyphs used within -% one line of the |kerntable| environment. -% \begin{macrocode} -\newcounter{@slota} -\newcounter{@slotb} -\newcounter{@slotc} -% \end{macrocode} -% \begin{macro}{\testkern} -% The main macro of the class. -% It takes 5 arguments:\\ -% \marg{glyph 1}\marg{kerning 1--2}\marg{glyph 2}\marg{kerning -% 2--3}\marg{glyph 3}.\\ -% The glyphs are given by their number, not the glyphs itself. -% \begin{macrocode} -\newcommand\testkern[5]{% -% \end{macrocode} -% Save the kerning arguments globally because otherwise they got lost -% from tabular cell to tabular cell. -% \begin{macrocode} - \xdef\@kernlena{#2}% - \xdef\@kernlenb{#4}% -% \end{macrocode} -% Get the slot numbers for the three characters and save them in the -% counters |@slota|, |@slotb|, and |@slotc|. -% \begin{macrocode} - \saveslotnumber{@slota}{#1}% - \ifnum\the\c@@slota<0% - \ClassError{kerntest}{Used unknown glyph `#1'}{% - You may have misspelled the glyph or you have taken an invalid - number.}% - \setcounter{@slota}{0}% - \fi - \saveslotnumber{@slotb}{#3}% - \ifnum\the\c@@slotb<0% - \ClassError{kerntest}{Used unknown glyph `#3'}{% - You may have misspelled the glyph or you have taken an invalid - number.}% - \setcounter{@slotb}{0}% - \fi - \saveslotnumber{@slotc}{#5}% - \ifnum\the\c@@slotc<0% - \ClassError{kerntest}{Used unknown glyph `#5'}{% - You may have misspelled the glyph or you have taken an invalid - number.}% - \setcounter{@slotc}{0}% - \fi -% \end{macrocode} -% Find out if there are old kerning data for one of the two glyph -% pairs. -% -% First pair. -% -% The better form of \cs{@ifundefined} that does not define its -% argument as side-effect. -% \begin{macrocode} - \begingroup\expandafter\expandafter\expandafter\endgroup - \expandafter\ifx\csname kt@kerning@\getpsname{\the\c@@slota}@% - \getpsname{\the\c@@slotb}\endcsname\relax -% \end{macrocode} -% No old kerning. -% Thus don't do any kerning later. -% \begin{macrocode} - \gdef\oldkerna{}% - \else -% \end{macrocode} -% Old kerning exists. -% Save the old kerning to apply it later. -% \begin{macrocode} - \gdef\oldkerna{% - \kern - \csname kt@kerning@\getpsname{\the\c@@slota}@% - \getpsname{\the\c@@slotb}\endcsname - \psunit - }% -% \end{macrocode} -% If no new kerning ist given just tell the user that he reuses a -% kerning. -% \begin{macrocode} - \ifx\@kernlena\@minussign - \typeout{Kerning pair for \getpsname{\the\c@@slota}-% - \getpsname{\the\c@@slotb} reused (value - \csname kt@kerning@\getpsname{\the\c@@slota}@% - \getpsname{\the\c@@slotb}\endcsname).}% - \else -% \end{macrocode} -% Old kerning exists and new kerning, too. -% Test if the old and new kernings are identical. -% \begin{macrocode} - \ifnum\@kernlena=\csname kt@kerning@\getpsname{\the\c@@slota}@% - \getpsname{\the\c@@slotb}\endcsname\relax -% \end{macrocode} -% Yes. -% Nevertheless, generate a warning. -% \begin{macrocode} - \ClassWarning{kerntest}{Kerning for - \getpsname{\the\c@@slota}-\getpsname{\the\c@@slotb}\MessageBreak - repeated (value #2)}% - \else -% \end{macrocode} -% No. -% Produce an erroe message. -% \begin{macrocode} - \ClassError{kerntest}{Conflicting kerning for - \getpsname{\the\c@@slota}-\getpsname{\the\c@@slotb}\MessageBreak - (new value #2 != old value - \csname kt@kerning@\getpsname{\the\c@@slota}@% - \getpsname{\the\c@@slotb}\endcsname)% - }{% - You have given the kerning for the specified glyph pair - twice with different\MessageBreak - values. This may also appear when using glyph classes. - You have to give the\MessageBreak - kerning only once per glyph class.\MessageBreak - You may leave out the second kerning pair, or you may - give\MessageBreak - the kerning `-'. Then, the old value is reused. - }% - \fi - \fi - \fi -% \end{macrocode} -% Second pair. -% \begin{macrocode} - \begingroup\expandafter\expandafter\expandafter\endgroup - \expandafter\ifx\csname kt@kerning@\getpsname{\the\c@@slotb}@% - \getpsname{\the\c@@slotc}\endcsname\relax - \gdef\oldkernb{}% - \else - \gdef\oldkernb{% - \kern - \csname kt@kerning@\getpsname{\the\c@@slotb}@% - \getpsname{\the\c@@slotc}\endcsname - \psunit - }% -% - \ifx\@kernlenb\@minussign - \typeout{Kerning pair for \getpsname{\the\c@@slotb}-% - \getpsname{\the\c@@slotc} reused (value - \csname kt@kerning@\getpsname{\the\c@@slotb}@% - \getpsname{\the\c@@slotc}\endcsname).}% - \else - \ifnum\@kernlenb=\csname kt@kerning@\getpsname{\the\c@@slotb}@% - \getpsname{\the\c@@slotc}\endcsname\relax - \ClassWarning{kerntest}{Kerning for - \getpsname{\the\c@@slotb}-\getpsname{\the\c@@slotc}\MessageBreak - repeated (value #4)}% - \else - \ClassError{kerntest}{Conflicting kerning for - \getpsname{\the\c@@slotb}-\getpsname{\the\c@@slotc}\MessageBreak - (new value #4 != old value - \csname kt@kerning@\getpsname{\the\c@@slotb}@% - \getpsname{\the\c@@slotc}\endcsname)% - }{% - You have given the kerning for the specified glyph pair - twice with different\MessageBreak - values. This may also appear when using glyph classes. - You have to give the\MessageBreak - kerning only once per glyph class.\MessageBreak - You may leave out the second kerning pair, or you may - give\MessageBreak - the kerning `-'. Then, the old value is reused. - }% - \fi - \fi - \fi -% \end{macrocode} -% First, type the slot number of glyph~2. -% \begin{macrocode} - \krntst@helpfont\getslotnumber{#3}% - & -% \end{macrocode} -% Type the postscript name of glyph~2. -% \begin{macrocode} - \krntst@helpfont\getpsname{\the\c@@slotb}% - & -% \end{macrocode} -% Print the three glyphs with original kerning. -% \begin{macrocode} - \char\the\c@@slota\char\c@@slotb\char\c@@slotc% - & -% \end{macrocode} -% Print glyph~1. -% \begin{macrocode} - \char\the\c@@slota% -% \end{macrocode} -% If a kerning is given, apply it; otherwise do nothing. -% \begin{macrocode} - \ifx\@kernlena\@minussign - \oldkerna - \else - \kern#2\psunit - \fi -% \end{macrocode} -% Print glyph~2. -% \begin{macrocode} - \char\the\c@@slotb% -% \end{macrocode} -% If a kerning is given, apply it; otherwise do nothing. -% \begin{macrocode} - \ifx\@kernlenb\@minussign - \oldkernb - \else - \kern#4\psunit - \fi -% \end{macrocode} -% Print glyph~3. -% \begin{macrocode} - \char\the\c@@slotc% - & -% \end{macrocode} -% Do the same as in columns 2 and 3, but twice at the same place. -% First, natural kerning. -% \begin{macrocode} - \color{oldcolor}% - \makebox[0pt][l]{\char\the\c@@slota\char\the\c@@slotb\char\the\c@@slotc}% -% \end{macrocode} -% Second, newly given kerning. -% Switch the color depending if a kerning has been given. -% \begin{macrocode} - \ifx\@kernlena\@minussign - \ifthenelse{\equal{\oldkerna}{}}{}{\color{newcolor}}% - \else - \color{newcolor}% - \fi - \ifx\@kernlenb\@minussign - \ifthenelse{\equal{\oldkernb}{}}{}{\color{newcolor}}% - \else - \color{newcolor}% - \fi - \char\the\c@@slota% - \ifx\@kernlena\@minussign - \oldkerna - \else - \kern#2\psunit - \fi - \char\the\c@@slotb% - \ifx\@kernlenb\@minussign - \oldkernb - \else - \kern#4\psunit - \fi - \char\the\c@@slotc% - & -% \end{macrocode} -% Get the value of the natural kerning. -% This has to be done with the tested font switched on to get the -% right values. -% This value is saved in \cs{kernlen} for later use. -% \begin{macrocode} - \getkern{\char\the\c@@slota}{\char\the\c@@slotb}% -% \end{macrocode} -% Switch to the legend font. -% \begin{macrocode} - \krntst@helpfont -% \end{macrocode} -% If no kerning is given (\marg{kerning 1--2}|=-|) print out the -% original kerning. -% The part \cs{ifdim}\ldots\cs{fi} adds a |-| if the kerning is -% negative. -% Together with the negative kerning, this gives a ``--'' instead of a -% ``-''. -% \begin{macrocode} - \ifx\@kernlena\@minussign - \ifthenelse{\equal{\oldkerna}{}}{% - \textcolor{oldcolor}{\small - \ifdim\kernlen pt<0pt-\fi - \ifdim\kernlen pt>0pt+\fi - \kernlen}% - }{% - \ifnum\kernlen=0\relax - \else - \textcolor{oldcolor}{\small(% - \ifdim\kernlen pt<0pt-\fi - \ifdim\kernlen pt>0pt+\fi - \kernlen)}% - \fi - ~\textcolor{newcolor}{\large - \ifnum - \csname kt@kerning@\getpsname{\the\c@@slota}@% - \getpsname{\the\c@@slotb}\endcsname<0-\fi - \csname kt@kerning@\getpsname{\the\c@@slota}@% - \getpsname{\the\c@@slotb}\endcsname - \makebox[0pt][l]{$^\ast$}% - }% - }% -% \end{macrocode} -% Write old kerning to |mtx| file. -% \begin{macrocode} - \ifthenelse{\boolean{krntst@writeall}\and\not\equal{\kernlen}{0}}{% - \writemtxkern[original kerning]{\the\c@@slota}{% - \ifdim\kernlen pt>0pt+\fi\kernlen}{\the\c@@slotb}% - }{}% -% \end{macrocode} -% If a kerning is given print the new kerning (same trick with -% negative numbers). -% \begin{macrocode} - \else -% \end{macrocode} -% If there were original kerning data, print the in parenthesis first. -% \begin{macrocode} - \ifdim\kernlen pt=0pt - \else - \textcolor{oldcolor}{\small(% - \ifdim\kernlen pt<0pt-\fi - \ifdim\kernlen pt>0pt+\fi - \kernlen)} - \fi - \textcolor{newcolor}{\large - \ifnum#2<0-\fi#2% - \ifthenelse{\equal{\oldkerna}{}}{% - }{\makebox[0mm][l]{$^\dagger$}}% - }% -% \end{macrocode} -% Write the new kerning information into the |mtx| file. -% \begin{macrocode} - \ifthenelse{\equal{\oldkerna}{}}{% - \writemtxkern{\the\c@@slota}{#2}{\the\c@@slotb}% - }{}% - \fi - & -% \end{macrocode} -% Do the same for the second kerning pair. -% \begin{macrocode} - \getkern{\char\the\c@@slotb}{\char\the\c@@slotc}% - \krntst@helpfont - \ifx\@kernlenb\@minussign - \ifthenelse{\equal{\oldkernb}{}}{% - \textcolor{oldcolor}{\small - \ifdim\kernlen pt<0pt-\fi - \ifdim\kernlen pt>0pt+\fi - \kernlen}% - }{% - \ifnum\kernlen=0\relax - \else - \textcolor{oldcolor}{\small(% - \ifdim\kernlen pt<0pt-\fi - \ifdim\kernlen pt>0pt+\fi - \kernlen)}% - \fi - ~\textcolor{newcolor}{\large - \ifnum - \csname kt@kerning@\getpsname{\the\c@@slotb}@% - \getpsname{\the\c@@slotc}\endcsname<0-\fi - \csname kt@kerning@\getpsname{\the\c@@slotb}@% - \getpsname{\the\c@@slotc}\endcsname - \makebox[0pt][l]{$^\ast$}% - }% - }% - \ifthenelse{\boolean{krntst@writeall}\and\not\equal{\kernlen}{0}}{% - \writemtxkern[original kerning]{\the\c@@slotb}{% - \ifdim\kernlen pt>0pt+\fi\kernlen}{\the\c@@slotc}% - }{}% - \else - \ifdim\kernlen pt=0pt - \else - \textcolor{oldcolor}{\small(% - \ifdim\kernlen pt<0pt-\fi - \ifdim\kernlen pt>0pt+\fi - \kernlen)} - \fi - \textcolor{newcolor}{\large - \ifnum#4<0-\fi#4% - \ifthenelse{\equal{\oldkernb}{}}{% - }{\makebox[0mm][l]{$^\dagger$}}% - }% - \ifthenelse{\equal{\oldkernb}{}}{% - \writemtxkern{\the\c@@slotb}{#4}{\the\c@@slotc}% - }{}% - \fi - & -% \end{macrocode} -% Print the example with natural kerning. -% \begin{macrocode} - \char\the\c@@slota\char\the\c@@slotb - \krntst@example - \char\the\c@@slotb\char\the\c@@slotc - & -% \end{macrocode} -% Print the example with new kerning. -% \begin{macrocode} - \char\the\c@@slota% - \ifx\@kernlena\@minussign - \else - \kern#2\psunit - \fi - \char\the\c@@slotb\krntst@example\char\the\c@@slotb - \ifx\@kernlenb\@minussign - \else - \kern#4\psunit - \fi - \char\the\c@@slotc% - & -% \end{macrocode} -% Switch to legend font for the comments that may appear. -% \begin{macrocode} - \krntst@helpfont\ignorespaces -} -% \end{macrocode} -% \end{macro} -% \begin{environment}{kerntable} -% The kerning table environment. -% \begin{macrocode} -\newenvironment{kerntable}{% -% \end{macrocode} -% Switch to the tested font. -% \begin{macrocode} - \usefont{\krntst@encoding}{\krntst@family}{\krntst@series}{\krntst@shape}% - \fontsize{\krntst@size}{\krntst@baselineskip}\selectfont% -% \end{macrocode} -% Start a |longtable| environment for the kerning samples. -% \begin{macrocode} - \begin{longtable}[l]{@{}lll@{~}l@{~}l@{~}rrlll@{}} -% \end{macrocode} -% Type the header of the table. -% \begin{macrocode} - \krntst@helpfont slot& - \krntst@helpfont name& - \krntst@helpfont orig& - \krntst@helpfont new& - \krntst@helpfont both& - \krntst@helpfont k.\,1& - \krntst@helpfont k.\,2& - \krntst@helpfont orig.& - \krntst@helpfont new& - \krntst@helpfont comment\\ - \endhead -% \end{macrocode} -% Repeat it as footer. -% \begin{macrocode} - \krntst@helpfont slot& - \krntst@helpfont name& - \krntst@helpfont orig& - \krntst@helpfont new& - \krntst@helpfont both& - \krntst@helpfont k.\,1& - \krntst@helpfont k.\,2& - \krntst@helpfont orig.& - \krntst@helpfont new& - \krntst@helpfont comment\\ - \endfoot - }{% -% \end{macrocode} -% And now the end of the table. -% \begin{macrocode} - \end{longtable}% - \ignorespacesafterend -} -% \end{macrocode} -% \end{environment} -% \begin{macro}{\writemtxkern} -% \changes{1.32}{2004/04/14}{Speed up \cs{writemtxkern}}% -% \changes{1.10}{2004/04/06}{Handle optional comment}% -% Write an entry into the |mtx| file. -% This command copies double quotes to single quotes if requested -% (only if no optional argument is given). -% \begin{macrocode} -\newif\if@tempswb -\newcommand\writemtxkern[4][\@empty]{% -% \end{macrocode} -% Store the glyph names of both glyphs in \cs{@firstglyphname} and -% \cs{@secondglyphname}. -% \begin{macrocode} - \expandafter\@saveslotnumber#2\@empty - \edef\@firstglyphname{\getpsname{\c@@glyphslot}}% - \expandafter\@saveslotnumber#4\@empty - \edef\@secondglyphname{\getpsname{\c@@glyphslot}}% -% \end{macrocode} -% Test if a comment has been given. -% \begin{macrocode} - \ifthenelse{\equal{#1}{\@empty}}{% -% \end{macrocode} -% Get the corresponding glyph class for the first character and save -% it in \cs{rightkern}. -% If none, \cs{rightkern} is set to \cs{@empty}. -% \begin{macrocode} - \edef\rightkern{\getclassofglyph{right}{\@firstglyphname}}% -% \end{macrocode} -% If the glyph is in no glyph class, make a temporary glyph class -% \cs{rightkern} which contains only this glyph. -% Define the comment \cs{textright} for the |mtx| file. -% \begin{macrocode} - \ifthenelse{\equal{\rightkern}{\@empty}}{% - \edef\textright{./.}% - \def\rightkern{@firstglyphname}% - }{% - \edef\textright{\expandafter\@getclassname\rightkern\@empty}% - }% -% \end{macrocode} -% Get the corresponding glyph class for the second character and save -% it in \cs{leftkern}. -% If none, \cs{leftkern} is set to \cs{@empty}. -% \begin{macrocode} - \edef\leftkern{\getclassofglyph{left}{\@secondglyphname}}% -% \end{macrocode} -% If the glyph is in no glyph class, make a temporary glyph class -% \cs{leftkern} which contains only this glyph. -% Define the comment \cs{leftright} for the |mtx| file. -% \begin{macrocode} - \ifthenelse{\equal{\leftkern}{\@empty}}{% - \edef\textleft{./.}% - \def\leftkern{@secondglyphname}% - }{% - \edef\textleft{\expandafter\@getclassname\leftkern\@empty}% - }% -% \end{macrocode} -% Set the kernig data for all kerning pairs that can be found in both -% glyph classes \cs{rightkern} and \cs{leftkern}. -% \begin{macrocode} - \@tempswbtrue - \@forallinclass{\rightkern}{first}{% - \@forallinclass{\leftkern}{second}{% -% \end{macrocode} -% Write the kerning data to the |mtx| file, but only for the first -% members of the glyph classes. -% The others are set in the |mtx| file by \cs{setrightkerning} and -% \cs{setleftkerning}. -% \begin{macrocode} - \if@tempswb - \protected@write\mtxfile{}{% - \string\setkern - {\first}{\second}{#3}% - \@percentchar\space\space\textright\space-- \textleft - }% protected@write - \@tempswbfalse - \fi -% \end{macrocode} -% Define a command \cs{kt@kerning@\meta{first glyph}@\meta{second -% glyph}} that contains the kerning for later testing on conflicting -% values. -% Scale the kerning data according to the given values in -% \cs{defglyphclass}. -% \begin{macrocode} - \setcounter{@tmpscale}{#3*\first@scaling*\second@scaling/1000000}% - \typeout{\first-\second: \the@tmpscale}% - \expandafter\xdef\csname kt@kerning@\first @\second\endcsname{% - \the@tmpscale}% -% \expandafter\xdef\csname kt@kerning@\first @\second\endcsname{#3}% - }% forallinclass second - }% forallinclass first - }{% -% \end{macrocode} -% If an optional argument has been given, just write this kerning pair -% without any tests. -% \begin{macrocode} - \protected@write\mtxfile{}{% - \string\setkern - {\@firstglyphname}{\@secondglyphname}{#3}% - \@percentchar\space\space #1% - }% -% \end{macrocode} -% Nevertheless, generate the command for testing on conflicting values. -% \begin{macrocode} - \expandafter\xdef - \csname kt@kerning@\@firstglyphname@\@secondglyphname\endcsname{#3}% - }% -}% -% \end{macrocode} -% \end{macro} -% -% \subsubsection{Glyph classes}% -% \label{sec:glyphclasses}% -% -% \begin{macro}{\defglyphclass} -% The macro -% \cs{defglyphclass}\marg{side}\marg{name}\marg{glyphlist} -% defines a class of glyphs that have the same kerning on the same -% \meta{side} which has to be ``|left|'' or ``|right|''. -% \meta{name} is the name of the glyph class while \meta{glyphlist} is -% a comma-separated list of all glyphs that have the same kerning on -% their \meta{side} side. -% \begin{macrocode} -\newcounter{@tmpscale} -\newcounter{@firstscale} -\newcommand\defglyphclass[3]{% -% \end{macrocode} -% Do it at \cs{begin\{document\}} because otherwise it is not clear -% which encoding is used and thus the glyphs are not yet known. -% \begin{macrocode} - \AtBeginDocument{% -% \end{macrocode} -% Test if a list of glyph classes exists for the chosen \meta{side}. -% \begin{macrocode} - \@ifundefined{glyphclasslist@#1}{% -% \end{macrocode} -% No glyph class of the current \meta{side} has been defined, yet. -% Install a new one. -% \begin{macrocode} - \expandafter\def\csname glyphclasslist@#1\endcsname{% - glyphclass@#1@#2}% - }{% -% \end{macrocode} -% The needed glyph-class list exists. -% Test if there is an old glyph class with the same name (\meta{side} -% and \meta{name}). -% \begin{macrocode} - \begingroup - \@tempswatrue - \forallclasses{#1}{@tmpcls}{% - \ifthenelse{\equal{\@tmpcls}{glyphclass@#1@#2}}{% - \@tempswafalse - }{}% - }% -% \end{macrocode} -% If this is not the case, append the new glyph class to the glyph -% class list. -% \begin{macrocode} - \if@tempswa - \expandafter\xdef\csname glyphclasslist@#1\endcsname{% - \csname glyphclasslist@#1\endcsname,glyphclass@#1@#2}% - \fi - \endgroup - }% -% \end{macrocode} -% Define the macro \cs{glyphclass@\meta{side}@\meta{name}} that stores -% the \meta{glyphlist} for this glyph class. -% At this stage it is defined empty in order to avoid that error -% messages are generated for ``already used glyphs''. -% \begin{macrocode} - \expandafter\def\csname glyphclass@#1@#2\endcsname{}% -% \end{macrocode} -% Store the new \meta{glyphlist} in a temporary variable -% \cs{tmpglyphclass}. -% To do this, all glyphs of the list are converted to Postscript glyph -% names and tested if they are valid. -% Also, it is tested if a glyph is contained double. -% \changes{1.32}{2004/04/14}{Speed up \cs{defglyphclass}}% -% \begin{macrocode} - \edef\@tempa{#3}% - \@tempswbtrue - \@forallinclass{@tempa}{@tmpglyph}{% - \saveslotnumber{@glyphslot}{\@tmpglyph}% - \ifnum\the\c@@glyphslot<0% - \ClassError{kerntest}{Used unknown glyph `\@tmpglyph'}{% - You may have misspelled the glyph or you have taken an invalid - number. - This incorrect glyph is ignored.}% - \edef\thisglyphname{???}% - \else - \edef\thisglyphname{\getpsname{\the\c@@glyphslot}}% - \if@tempswb - \global\@tempswbfalse - \setcounter{@firstscale}{\@tmpglyph@scaling}% - \fi - \setcounter{@tmpscale}{1000*\@tmpglyph@scaling/\the@firstscale}% -% \end{macrocode} -% Now, it has to be tested if none of the glyphs of the new glyph list -% are in this or another list already. -% If so, generate an error message. -% Save the error state in \cs{@tempswa} to be able to add the glyph -% only if it is in no other glyph class. -% \begin{macrocode} - \@tempswatrue - \forallclasses{#1}{@tmpcls}{% - \@ifglyphinclass{\@tmpcls}{\@tmpglyph}{% - \@tempswafalse - \ClassError{kerntest}{Glyph `\@tmpglyph' - (`\thisglyphname',\MessageBreak - glyph class #1/#2) already\MessageBreak - in glyph - class (\expandafter\@getclassname\@tmpcls\@empty)% - }{% - Each glyph may only be once in one glyph class for - each side. - }% - }{}% - }% -% \end{macrocode} -% Append this glyph to the current glyph list. -% \begin{macrocode} - \if@tempswa - \ifthenelse{\equal{\csname glyphclass@#1@#2\endcsname}{}}{% - \expandafter\edef\csname glyphclass@#1@#2\endcsname{% - \thisglyphname[\the@tmpscale]}% - \edef\firstglyphinclass{\thisglyphname}% - }{% - \expandafter\edef\csname glyphclass@#1@#2\endcsname{% - \csname glyphclass@#1@#2\endcsname,% - \thisglyphname[\the@tmpscale]}% - }% -% \end{macrocode} -% Generate a macro \cs{glyphclass@glyph@}\meta{glyphname} which saves -% the corresponding glyph class for each glyph for faster access. -% \begin{macrocode} - \expandafter\edef - \csname glyphclass@glyph@#1@\thisglyphname\endcsname{% - glyphclass@#1@#2}% - \fi - \fi - }% -% \end{macrocode} -% Some feedback. -% \begin{macrocode} - \typeout{Glyph class `#1/#2' (\csname glyphclass@#1@#2\endcsname) - defined.}% - }% -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\newglyphclass} -% The macro -% \cs{newglyphclass} works as \cs{defglyphclass} but defines a new -% glyph class. -% It produces an error if the class already exists. -% \begin{macrocode} -\newcommand\newglyphclass[3]{% -% \end{macrocode} -% Test if this glyph class already exists and generate an error -% message if so. -% If not, call \cs{defglyphclass} to save the new glyph class. -% \begin{macrocode} - \AtBeginDocument{% - \@tempswatrue - \forallclasses{#1}{@tmpcls}{% - \ifthenelse{\equal{\@tmpcls}{glyphclass@#1@#2}}{% - \ClassError{kerntest}{Class `#1/#2' already exists}{% - The command is ignored.}% - \@tempswafalse - }{}% - }% - \if@tempswa - \defglyphclass{#1}{#2}{#3}% - \fi - }% -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\renewglyphclass} -% The macro -% \cs{renewglyphclass} works as \cs{newglyphclass} but redefines an -% existing one. -% \begin{macrocode} -\newcommand\renewglyphclass[3]{% -% \end{macrocode} -% Test if this glyph class does not exist and generate an error -% message if so. -% If it exists, call \cs{defglyphclass} to redefine the glyph class. -% \begin{macrocode} - \AtBeginDocument{% - \@tempswafalse - \forallclasses{#1}{@tmpcls}{% - \ifthenelse{\equal{\@tmpcls}{glyphclass@#1@#2}}{% - \@tempswatrue - }{}% - }% - \if@tempswa - \defglyphclass{#1}{#2}{#3}% - \else - \ClassError{kerntest}{Class `#1/#2' does not exists}{% - The command is ignored.}% - \fi - }% -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\provideglyphclass} -% The macro -% \cs{provideglyphclass} works as \cs{newglyphclass} but does only do -% its job if the glyph class does not exist right now. -% \begin{macrocode} -\newcommand\provideglyphclass[3]{% -% \end{macrocode} -% Test if this glyph class already exists. -% If not, call \cs{defglyphclass} to save the new glyph class. -% \begin{macrocode} - \AtBeginDocument{% - \@tempswatrue - \forallclasses{#1}{@tmpcls}{% - \ifthenelse{\equal{\@tmpcls}{glyphclass@#1@#2}}{% - \@tempswafalse - }{}% - }% - \if@tempswa - \defglyphclass{#1}{#2}{#3}% - \fi - }% -} -% \end{macrocode} -% \end{macro} -% Type out the human readable name \meta{side}/\meta{name} for a glyph -% class, giving the name of the corresponding macro. -% No test on a correct name is made. -% \begin{macrocode} -\def\@getclassname#1@#2@#3\@empty{#2/#3} -% \end{macrocode} -% \begin{macro}{\getclassofglyph} -% Syntax: \cs{getclassofglyph}\marg{side}\marg{glyph name}. -% -% Return the name of the glyph class, that contains the argument. -% If it is not contained in any class, \cs{@empty} is returned. -% The glyph name has to be given as argument. -% \begin{macrocode} -\newcommand*\getclassofglyph[2]{% - \expandafter\ifx\csname glyphclass@glyph@#1@#2\endcsname\relax - \@empty - \else - \csname glyphclass@glyph@#1@#2\endcsname - \fi -} -% \end{macrocode} -% \end{macro} -% An internal boolean for searching glyph classes. -% \begin{macrocode} -\newif\if@glyphfound -% \end{macrocode} -% \begin{macro}{\ifglyphinclass} -% \changes{1.32}{2004/04/14}{Speed up \cs{ifglyphinclass}}% -% Syntax: -% \cs{ifglyphinclass\marg{side}\marg{name}\marg{glyph}\marg{yes}\marg{no}}. -% Tests if the glyph \meta{glyph} is contained in the glyph class -% \meta{side}/\meta{name}. -% Depending on that, \meta{yes} or \meta{no} are executed. -% The work is done by \cs{@ifglyphinclass} described later. -% \begin{macrocode} -\newcommand\ifglyphinclass[5]{% - \@ifundefined{glyphclass@#1@#2}{% - \ClassError{kerntest}{Glyph class #1/#2 not available}{}% - }{% - \edef\@tempa{#3}% - \saveslotnumber{@tempcnta}{\@tempa}% - \ifnum\the\c@@tempcnta<0% - \ClassError{kerntest}{Used unknown glyph `#2'}{% - You may have misspelled the glyph or you have taken an invalid - number.}% - \else - \ifthenelse{\equal{glyphclass@#1@#2}{% - \getclassofglyph{#1}{\getpsname{\the\c@@tempcnta}}}}{% - #4% - }{% - #5% - }% - \fi -% \@ifglyphinclass{glyphclass@#1@#2}{#3}{#4}{#5}% - }% -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\@ifglyphinclass} -% \changes{1.32}{2004/04/14}{Speed up \cs{@ifglyphinclass}}% -% Syntax: -% \cs{@ifglyphinclass\marg{macro}\marg{glyph}\marg{yes}\marg{no}}. -% Tests if the glyph \meta{glyph} is contained in the glyph class -% with the macro name \cs{\meta{macro}}. -% Depending on that, \meta{yes} or \meta{no} are executed. -% \begin{macrocode} -\newcounter{@tempcnta} -\newcommand\@ifglyphinclass[4]{% - \@ifundefined{#1}{% - \ClassError{kerntest}{Glyph class #1 not available}{}% - }{% -% \end{macrocode} -% Extract the name of the side from the class macro name. -% \begin{macrocode} - \def\krntst@side##1@##2@##3\@empty{\edef\krntst@side{##2}}% - \expandafter\krntst@side#1\@empty -% \end{macrocode} -% Extract the name of the side from the class macro name. -% \begin{macrocode} - \edef\@tempa{#2}% -% \end{macrocode} -% Find out if the glyph is valid. -% \begin{macrocode} - \saveslotnumber{@tempcnta}{\@tempa}% - \ifnum\the\c@@tempcnta<0\relax - \ClassError{kerntest}{Used unknown glyph `#2'}{% - You may have misspelled the glyph or you have taken an invalid - number.}% - \else -% \end{macrocode} -% Test if the corrosponding class to the glyph is the requested one. -% \begin{macrocode} - \ifthenelse{\equal{#1}{% - \getclassofglyph{\krntst@side}{\getpsname{\the\c@@tempcnta}}}}{% - #3% - }{% - #4% - }% - \fi - }% -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\forallinclasses} -% Syntax: -% \cs{forallinclass\marg{side}\marg{name}\marg{glyph}\marg{action}} -% -% The commands in \meta{action} are executed once for every glyph of -% the glyph class \meta{side}/\meta{name}. -% In each run, the specific glyph is stored in the macro -% \cs{\meta{glyph}} which has to be given without leading backslash. -% This routine can be nested if \meta{glyph} is different for both -% layers, e.g., -%\begin{verbatim} -%\forallinclass{left}{H}{outer}{% -% \forallinclass{left}{H}{inner}{% -% glyph pair: ``\outer''--``\inner''\\ -% }% -%} -%\end{verbatim} -% \begin{macrocode} -\newcommand\forallinclass[4]{% - \@forallinclass{glyphclass@#1@#2}{#3}{#4}% -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\@forallinclasses} -% Syntax: -% \cs{@forallinclass\marg{macro}\marg{glyph}\marg{action}} -% -% The internal command for \cs{forallinclasses}. -% Takes the macro name for the glyph class instead of the side and the -% name. -% \begin{macrocode} -\newcommand\@forallinclass[3]{% -% \end{macrocode} -% Redefine \cs{stoploop} to use the current glyph variable as default. -% \begin{macrocode} - \renewcommand\stoploop[1][#2]{% - \expandafter\edef\csname ##1\endcsname{}% - }% -% \end{macrocode} -% Get the first glyph of the glyph list. -% It is stored in \cs{\meta{glyph}}. -% \begin{macrocode} - \begingroup\expandafter\expandafter\expandafter\endgroup - \expandafter\ifx\csname #1\endcsname\relax - \edef\kt@tempa{}% - \else - \edef\kt@tempa{\csname #1\endcsname}% - \fi - \expandafter\@nextglyphinclass\kt@tempa,\@empty{#2}% -% \end{macrocode} -% If this glyph is not empty, the end of the glyph class has not been -% reached. -% Then, enter the loop. -% \begin{macrocode} - \whiledo{\not\equal{\csname #2\endcsname}{}}{% -% \end{macrocode} -% Execute the loop commands. -% \begin{macrocode} - #3% -% \end{macrocode} -% Get the next glyph of the glyph list. -% It is stored in \cs{\meta{glyph}}. -% The if clause is necessary to handle \cs{stoploop}. -% \begin{macrocode} - \ifthenelse{\equal{\csname #2\endcsname}{}}{% - }{% - \edef\kt@tempa{\csname #2@rest\endcsname}% - \expandafter\@nextglyphinclass\kt@tempa,\@empty{#2}% - }% - }% -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\@nextglyphinclass} -% Everything before the first comma in the list is the next glyph in -% the glyph class. -% Store it in the macro given at the end of the argument list -% (\cs{\meta{\#3}}. -% Store the rest of the glyph class in \cs{\meta{\#3}@rest} for later -% work on it. -% \begin{macrocode} -\def\@@parseglyphname#1[#2]#3\@empty#4{% - \expandafter\edef\csname#4\endcsname{#1}% - \expandafter\xdef\csname#4@scaling\endcsname{#2}% -% \typeout{--> `#1' mit [\csname #4@scaling\endcsname], ignoriert: `#3', Name: `#4'}% -} -\def\@nextglyphinclass#1,#2\@empty#3{% - \expandafter\edef\csname#3@rest\endcsname{#2}% - \expandafter\@@parseglyphname#1[1000]\@empty{#3}% -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\forallclasses} -% Syntax: -% \cs{forallclasses\marg{side}\marg{glyph class}\marg{action}} -% -% The commands in \meta{action} are executed once for every glyph -% class of the glyph-class list \meta{side}. -% In each run, the specific glyph class is stored in the macro -% \cs{\meta{glyph class}} which has to be given without leading -% backslash. -% This routine can be nested if \meta{glyph class} is different for both -% layers. -% (Same as \cs{forallinclass}). -% \begin{macrocode} -\newcommand\forallclasses[3]{% - \renewcommand\stoploop[1][#2]{% - \expandafter\edef\csname ##1\endcsname{}% - }% - \begingroup\expandafter\expandafter\expandafter\endgroup - \expandafter\ifx\csname glyphclasslist@#1\endcsname\relax - \edef\kt@tempa{}% - \else - \edef\kt@tempa{\csname glyphclasslist@#1\endcsname}% - \fi - \expandafter\@nextclass\kt@tempa,\@empty{#2}% - \whiledo{\not\equal{\csname #2\endcsname}{}}{% - #3% - \ifthenelse{\equal{\csname #2\endcsname}{}}{% - }{% - \edef\kt@tempa{\csname #2@rest\endcsname}% - \expandafter\@nextclass\kt@tempa,\@empty{#2}% - }% - }% -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\stoploop} -% Stops the execution of \cs{forallclasses} or \cs{forallinclass}. -% The optional argument gives the stop variable. -% By this, also the outer loop can be stopped from the inner one. -% \begin{macrocode} -\newcommand\stoploop[1][]{% - \expandafter\edef\csname #1\endcsname{}% -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\@nextglyphinclass} -% Everything before the first comma in the list is the next glyph -% class in the glyph-class list. -% Store it in the macro given at the end of the argument list -% (\cs{\meta{\#3}}. -% Store the rest of the glyph-class list in \cs{\meta{\#3}@rest} for -% later work on it. -% \begin{macrocode} -\def\@nextclass#1,#2\@empty#3{% - \expandafter\edef\csname #3@rest\endcsname{#2}% - \expandafter\edef\csname #3\endcsname{#1}% -} -% \end{macrocode} -% \end{macro} -% -% \subsubsection{Extra commands for special encodings} -% -% Setup command for the different encodings. -% \begin{macrocode} -\newcommand\encodingsetup[1]{% - \AtBeginDocument{% - \typeout{Setup for font encoding. - This differs from encoding to encoding.}% - \setkeys{krnenc}{#1}% - }% -} -\@onlypreamble\encodingsetup -% \end{macrocode} -% -% \subsection{Footer of \texttt{mtx} file} -% -% -% Write a footer to the |mtx| file. -% This is done as last action of the class in order to ensure that all -% other things have been done before. -% \begin{macrocode} -\AtEndDocument{% -% \end{macrocode} -% First, write the kerning data for the glyph classes. -% \begin{macrocode} - \typeout{Writing kerning factors for glyph classes to mtx file}% - \protected@write\mtxfile{}{\@percentchar\@percentchar}% - \protected@write\mtxfile{}{\@percentchar\@percentchar\space - Kerning factors for the different glyph classes.}% - \protected@write\mtxfile{}{\@percentchar\@percentchar}% -% \end{macrocode} -% Define a command that does the output for the different sides. -% \begin{macrocode} - \def\@writeclass#1{% - \forallclasses{#1}{@tmpcls}{% - \typeout{\space\space for class - \expandafter\@getclassname\@tmpcls\@empty}% -% \end{macrocode} -% The first glyph is the referent glyph of the class. -% If the inner loop is executed the first time, set -% \cs{firstglyphinclass} to this value. -% \begin{macrocode} - \@tempswatrue - \@forallinclass{\@tmpcls}{@tmpglyph}{% - \if@tempswa - \edef\firstglyphinclass{\@tmpglyph}% - \@tempswafalse - \else -% \end{macrocode} -% For the other members of this class, write the -% \cs{set\meta{side}kerning} commands to the |mtx| file. -% \begin{macrocode} - \protected@write\mtxfile{}{% - \string\set#1kerning% - {\@tmpglyph}{\firstglyphinclass}{\@tmpglyph@scaling}% - \@percentchar\space\space - \expandafter\@getclassname\@tmpcls\@empty - }% - \fi - }% - }% - }% -% \end{macrocode} -% The sides |left| and |right| are defined. -% \begin{macrocode} - \@writeclass{left}% - \protected@write\mtxfile{}{\@percentchar\@percentchar}% - \@writeclass{right}% -% \end{macrocode} -% Write a real footer. -% \begin{macrocode} - \protected@write\mtxfile{}{\@percentchar\@percentchar}% - \protected@write\mtxfile{}{\string\endmetrics}% - \protected@write\mtxfile{}{\@percentchar\@percentchar}% - \protected@write\mtxfile{}{\@percentchar\@percentchar\space - End of file `\mtxfilename.mtx'.}% - \closeout\mtxfile - \typeout{^^JWritten mtx file `\mtxfilename.mtx'^^J}% -} -% -% \end{macrocode} -% -% -% \subsection{Class option files} -% -% To be able to write correct |mtx| files, the class has to know which -% glyph number has which Postscript name. -% This is done by the \cs{getpsname} macro which depends on the used -% encoding. -% This is done by loading different class option files. -% -% \subsubsection{T1 encoding} -% -% The |T1| encoding. -% The data are taken from |t1.etx|. -% \begin{macrocode} -%<*mtx&t1> -\makeatletter -% \end{macrocode} -% Set options to switch to other font shapes. -% \begin{macrocode} -\define@key{krnenc}{ligaturing}[1]{% - \typeout{T1 encoding: ligaturing = #1}% - \ifnum#1<0\relax - \expandafter\def\csname krntst@T1@027\endcsname{.notdef.027}% - \expandafter\def\csname krntst@T1@028\endcsname{.notdef.028}% - \expandafter\def\csname krntst@T1@029\endcsname{.notdef.029}% - \expandafter\def\csname krntst@T1@030\endcsname{.notdef.030}% - \expandafter\def\csname krntst@T1@031\endcsname{.notdef.031}% - \expandafter\def\csname krntst@T1@156\endcsname{.notdef.156}% - \expandafter\def\csname krntst@T1@188\endcsname{.notdef.188}% - \else - \expandafter\def\csname krntst@T1@027\endcsname{ff}% - \expandafter\def\csname krntst@T1@028\endcsname{fi}% - \expandafter\def\csname krntst@T1@029\endcsname{fl}% - \expandafter\def\csname krntst@T1@030\endcsname{ffi}% - \expandafter\def\csname krntst@T1@031\endcsname{ffl}% - \expandafter\def\csname krntst@T1@156\endcsname{IJ}% - \expandafter\def\csname krntst@T1@188\endcsname{ij}% - \fi - \ifnum#1<-1\relax - \expandafter\def\csname krntst@T1@073\endcsname{.notdef.073}% - \expandafter\def\csname krntst@T1@099\endcsname{.notdef.099}% - \expandafter\def\csname krntst@T1@102\endcsname{.notdef.102}% - \expandafter\def\csname krntst@T1@105\endcsname{.notdef.105}% - \expandafter\def\csname krntst@T1@115\endcsname{.notdef.115}% - \else - \expandafter\def\csname krntst@T1@073\endcsname{I}% - \expandafter\def\csname krntst@T1@099\endcsname{c}% - \expandafter\def\csname krntst@T1@102\endcsname{f}% - \expandafter\def\csname krntst@T1@105\endcsname{i}% - \expandafter\def\csname krntst@T1@115\endcsname{s}% - \fi -} -\typeout{^^JValid values for T1 encoding:}% -\typeout{ligaturing: -2, -1, 0, 1}% -\typeout{Defaults for T1 encoding:}% -\setkeys{krnenc}{ligaturing=1}% -\typeout{}% -\makeatother -% \end{macrocode} -% Now, set \cs{getpsname}. -% \begin{macrocode} -\newcommand\getpsname[1]{% - \ifcase#1% - grave\or% 000 - acute\or% 001 - circumflex\or% 002 - tilde\or% 003 - dieresis\or% 004 - hungarumlaut\or% 005 - ring\or% 006 - caron\or% 007 - breve\or% 008 - macron\or% 009 - dotaccent\or% 010 - cedilla\or% 011 - ogonek\or% 012 - quotesinglbase\or% 013 - guilsinglleft\or% 014 - guilsinglright\or% 015 - quotedblleft\or% 016 - quotedblright\or% 017 - quotedblbase\or% 018 - guillemotleft\or% 019 - guillemotright\or% 020 - rangedash\or% 021 - punctdash\or% 022 - compwordmark\or% 023 - perthousandzero\or% 024 - dotlessi\or% 025 - dotlessj\or% 026 - \csname krntst@T1@027\endcsname\or % 027 - \csname krntst@T1@028\endcsname\or % 028 - \csname krntst@T1@029\endcsname\or % 029 - \csname krntst@T1@030\endcsname\or % 030 - \csname krntst@T1@031\endcsname\or % 031 - visiblespace\or% 032 - exclam\or% 033 - quotedbl\or% 034 - numbersign\or% 035 - dollar\or% 036 - percent\or% 037 - ampersand\or% 038 - quoteright\or% 039 - parenleft\or% 040 - parenright\or% 041 - asterisk\or% 042 - plus\or% 043 - comma\or% 044 - hyphen\or% 045 - period\or% 046 - slash\or% 047 - zero\or% 048 - one\or% 049 - two\or% 050 - three\or% 051 - four\or% 052 - five\or% 053 - six\or% 054 - seven\or% 055 - eight\or% 056 - nine\or% 057 - colon\or% 058 - semicolon\or% 059 - less\or% 060 - equal\or% 061 - greater\or% 062 - question\or% 063 - at\or% 064 - A\or% 065 - B\or% 066 - C\or% 067 - D\or% 068 - E\or% 069 - F\or% 070 - G\or% 071 - H\or% 072 - \csname krntst@T1@073\endcsname\or % 073 - J\or% 074 - K\or% 075 - L\or% 076 - M\or% 077 - N\or% 078 - O\or% 079 - P\or% 080 - Q\or% 081 - R\or% 082 - S\or% 083 - T\or% 084 - U\or% 085 - V\or% 086 - W\or% 087 - X\or% 088 - Y\or% 089 - Z\or% 090 - bracketleft\or% 091 - backslash\or% 092 - bracketright\or% 093 - asciicircum\or% 094 - underscore\or% 095 - quoteleft\or% 096 - a\or% 097 - b\or% 098 - \csname krntst@T1@099\endcsname\or % 099 - d\or% 100 - e\or% 101 - \csname krntst@T1@102\endcsname\or % 102 - g\or% 103 - h\or% 104 - \csname krntst@T1@105\endcsname\or % 105 - j\or% 106 - k\or% 107 - l\or% 108 - m\or% 109 - n\or% 110 - o\or% 111 - p\or% 112 - q\or% 113 - r\or% 114 - \csname krntst@T1@115\endcsname\or % 115 - t\or% 116 - u\or% 117 - v\or% 118 - w\or% 119 - x\or% 120 - y\or% 121 - z\or% 122 - braceleft\or% 123 - bar\or% 124 - braceright\or% 125 - asciitilde\or% 126 - hyphenchar\or% 127 - Abreve\or% 128 - Aogonek\or% 129 - Cacute\or% 130 - Ccaron\or% 131 - Dcaron\or% 132 - Ecaron\or% 133 - Eogonek\or% 134 - Gbreve\or% 135 - Lacute\or% 136 - Lcaron\or% 137 - Lslash\or% 138 - Nacute\or% 139 - Ncaron\or% 140 - Ng\or% 141 - Ohungarumlaut\or% 142 - Racute\or% 143 - Rcaron\or% 144 - Sacute\or% 145 - Scaron\or% 146 - Scedilla\or% 147 - Tcaron\or% 148 - Tcedilla\or% 149 - Uhungarumlaut\or% 150 - Uring\or% 151 - Ydieresis\or% 152 - Zacute\or% 153 - Zcaron\or% 154 - Zdotaccent\or% 155 - \csname krntst@T1@156\endcsname\or % 156 - Idotaccent\or% 157 - dbar\or% 158 - section\or% 159 - abreve\or% 160 - aogonek\or% 161 - cacute\or% 162 - ccaron\or% 163 - dcaron\or% 164 - ecaron\or% 165 - eogonek\or% 166 - gbreve\or% 167 - lacute\or% 168 - lcaron\or% 169 - lslash\or% 170 - nacute\or% 171 - ncaron\or% 172 - ng\or% 173 - ohungarumlaut\or% 174 - racute\or% 175 - rcaron\or% 176 - sacute\or% 177 - scaron\or% 178 - scedilla\or% 179 - tcaron\or% 180 - tcedilla\or% 181 - uhungarumlaut\or% 182 - uring\or% 183 - ydieresis\or% 184 - zacute\or% 185 - zcaron\or% 186 - zdotaccent\or% 187 - \csname krntst@T1@188\endcsname\or % 188 - exclamdown\or% 189 - questiondown\or% 190 - sterling\or% 191 - Agrave\or% 192 - Aacute\or% 193 - Acircumflex\or% 194 - Atilde\or% 195 - Adieresis\or% 196 - Aring\or% 197 - AE\or% 198 - Ccedilla\or% 199 - Egrave\or% 200 - Eacute\or% 201 - Ecircumflex\or% 202 - Edieresis\or% 203 - Igrave\or% 204 - Iacute\or% 205 - Icircumflex\or% 206 - Idieresis\or% 207 - Eth\or% 208 - Ntilde\or% 209 - Ograve\or% 210 - Oacute\or% 211 - Ocircumflex\or% 212 - Otilde\or% 213 - Odieresis\or% 214 - OE\or% 215 - Oslash\or% 216 - Ugrave\or% 217 - Uacute\or% 218 - Ucircumflex\or% 219 - Udieresis\or% 220 - Yacute\or% 221 - Thorn\or% 222 - SS\or% 223 - agrave\or% 224 - aacute\or% 225 - acircumflex\or% 226 - atilde\or% 227 - adieresis\or% 228 - aring\or% 229 - ae\or% 230 - ccedilla\or% 231 - egrave\or% 232 - eacute\or% 233 - ecircumflex\or% 234 - edieresis\or% 235 - igrave\or% 236 - iacute\or% 237 - icircumflex\or% 238 - idieresis\or% 239 - eth\or% 240 - ntilde\or% 241 - ograve\or% 242 - oacute\or% 243 - ocircumflex\or% 244 - otilde\or% 245 - odieresis\or% 246 - oe\or% 247 - oslash\or% 248 - ugrave\or% 249 - uacute\or% 250 - ucircumflex\or% 251 - udieresis\or% 252 - yacute\or% 253 - thorn\or% 254 - germandbls\fi% 255 -} -% -% \end{macrocode} -% -% \subsubsection{TS1 encoding} -% -% The |TS1| encoding. -% The data are taken from |ts1.etx|. -% -% For unknown slots, a strange Postscript name is returned, but no -% warning is generated. -% \begin{macrocode} -%<*mtx&ts1> -\newcommand\getpsname[1]{% - \ifcase#1% - capitalgrave\or% 000 - capitalacute\or% 001 - capitalcircumflex\or% 002 - capitaltilde\or% 003 - capitaldieresis\or% 004 - capitalhungarumlaut\or% 005 - capitalring\or% 006 - capitalcaron\or% 007 - capitalbreve\or% 008 - capitalmacron\or% 009 - capitaldotaccent\or% 010 - cedilla\or% 011 - ogonek\or% 012 - quotesinglbase\or% 013 - .notdef.014\or% 014 - .notdef.015\or% 015 - .notdef.016\or% 016 - .notdef.017\or% 017 - quotedblbase\or% 018 - .notdef.019\or% 019 - .notdef.020\or% 020 - twelveudash\or% 021 - threequartersemdash\or% 022 - capitalcompwordmark\or% 023 - arrowleft\or% 024 - arrowright\or% 025 - tieaccentlowercase\or% 026 - tieaccentcapital\or% 027 - newtieaccentlowercase\or% 028 - newtieaccentcapital\or% 029 - ascendercompwordmark\or% 030 - blank\or% 031 - .notdef.032\or% 032 - .notdef.033\or% 033 - .notdef.034\or% 034 - .notdef.035\or% 035 - dollar\or% 036 - .notdef.037\or% 037 - .notdef.038\or% 038 - quotesingle\or% 039 - .notdef.040\or% 040 - .notdef.041\or% 041 - asteriskcentered\or% 042 - .notdef.043\or% 043 - comma\or% 044 - hyphendbl\or% 045 - period\or% 046 - fraction\or% 047 - zerooldstyle\or% 048 - oneoldstyle\or% 049 - twooldstyle\or% 050 - threeoldstyle\or% 051 - fouroldstyle\or% 052 - fiveoldstyle\or% 053 - sixoldstyle\or% 054 - sevenoldstyle\or% 055 - eightoldstyle\or% 056 - nineoldstyle\or% 057 - .notdef.058\or% 058 - .notdef.059\or% 059 - angbracketleft\or% 060 - minus\or% 061 - angbracketright\or% 062 - .notdef.063\or% 063 - .notdef.064\or% 064 - .notdef.065\or% 065 - .notdef.066\or% 066 - .notdef.067\or% 067 - .notdef.068\or% 068 - .notdef.069\or% 069 - .notdef.070\or% 070 - .notdef.071\or% 071 - .notdef.072\or% 072 - .notdef.073\or% 073 - .notdef.074\or% 074 - .notdef.075\or% 075 - .notdef.076\or% 076 - Omegainv\or% 077 - .notdef.078\or% 078 - bigcircle\or% 079 - .notdef.080\or% 080 - .notdef.081\or% 081 - .notdef.082\or% 082 - .notdef.083\or% 083 - .notdef.084\or% 084 - .notdef.085\or% 085 - .notdef.086\or% 086 - Omega\or% 087 - .notdef.088\or% 088 - .notdef.089\or% 089 - .notdef.090\or% 090 - openbracketleft\or% 091 - .notdef.092\or% 092 - openbracketright\or% 093 - arrowup\or% 094 - arrowdown\or% 095 - asciigrave\or% 096 - .notdef.097\or% 097 - born\or% 098 - divorced\or% 099 - died\or% 100 - .notdef.101\or% 101 - .notdef.102\or% 102 - .notdef.103\or% 103 - .notdef.104\or% 104 - .notdef.105\or% 105 - .notdef.106\or% 106 - .notdef.107\or% 107 - leaf\or% 108 - married\or% 109 - musicalnote\or% 110 - .notdef.111\or% 111 - .notdef.112\or% 112 - .notdef.113\or% 113 - .notdef.114\or% 114 - .notdef.115\or% 115 - .notdef.116\or% 116 - .notdef.117\or% 117 - .notdef.118\or% 118 - .notdef.119\or% 119 - .notdef.120\or% 120 - .notdef.121\or% 121 - .notdef.122\or% 122 - .notdef.123\or% 123 - .notdef.124\or% 124 - .notdef.125\or% 125 - tildelow\or% 126 - hyphendblchar\or% 127 - asciibreve\or% 128 - asciicaron\or% 129 - asciiacutedbl\or% 130 - asciigravedbl\or% 131 - dagger\or% 132 - daggerdbl\or% 133 - bardbl\or% 134 - perthousand\or% 135 - bullet\or% 136 - centigrade\or% 137 - dollaroldstyle\or% 138 - centoldstyle\or% 139 - florin\or% 140 - colonmonetary\or% 141 - won\or% 142 - naira\or% 143 - guarani\or% 144 - peso\or% 145 - lira\or% 146 - recipe\or% 147 - interrobang\or% 148 - interrobangdown\or% 149 - dong\or% 150 - trademark\or% 151 - pertenthousand\or% 152 - pilcrow\or% 153 - baht\or% 154 - numero\or% 155 - discount\or% 156 - estimated\or% 157 - openbullet\or% 158 - servicemark\or% 159 - quillbracketleft\or% 160 - quillbracketright\or% 161 - cent\or% 162 - sterling\or% 163 - currency\or% 164 - yen\or% 165 - brokenbar\or% 166 - section\or% 167 - asciidieresis\or% 168 - copyright\or% 169 - ordfeminine\or% 170 - copyleft\or% 171 - logicalnot\or% 172 - circledP\or% 173 - registered\or% 174 - asciimacron\or% 175 - degree\or% 176 - plusminus\or% 177 - twosuperior\or% 178 - threesuperior\or% 179 - asciiacute\or% 180 - mu\or% 181 - paragraph\or% 182 - periodcentered\or% 183 - referencemark\or% 184 - onesuperior\or% 185 - ordmasculine\or% 186 - radical\or% 187 - onequarter\or% 188 - onehalf\or% 189 - threequarters\or% 190 - euro\or% 191 - .notdef.192\or% 192 - .notdef.193\or% 193 - .notdef.194\or% 194 - .notdef.195\or% 195 - .notdef.196\or% 196 - .notdef.197\or% 197 - .notdef.198\or% 198 - .notdef.199\or% 199 - .notdef.200\or% 200 - .notdef.201\or% 201 - .notdef.202\or% 202 - .notdef.203\or% 203 - .notdef.204\or% 204 - .notdef.205\or% 205 - .notdef.206\or% 206 - .notdef.207\or% 207 - .notdef.208\or% 208 - .notdef.209\or% 209 - .notdef.210\or% 210 - .notdef.211\or% 211 - .notdef.212\or% 212 - .notdef.213\or% 213 - multiply\or% 214 - .notdef.215\or% 215 - .notdef.216\or% 216 - .notdef.217\or% 217 - .notdef.218\or% 218 - .notdef.219\or% 219 - .notdef.220\or% 220 - .notdef.221\or% 221 - .notdef.222\or% 222 - .notdef.223\or% 223 - .notdef.224\or% 224 - .notdef.225\or% 225 - .notdef.226\or% 226 - .notdef.227\or% 227 - .notdef.228\or% 228 - .notdef.229\or% 229 - .notdef.230\or% 230 - .notdef.231\or% 231 - .notdef.232\or% 232 - .notdef.233\or% 233 - .notdef.234\or% 234 - .notdef.235\or% 235 - .notdef.236\or% 236 - .notdef.237\or% 237 - .notdef.238\or% 238 - .notdef.239\or% 239 - .notdef.240\or% 240 - .notdef.241\or% 241 - .notdef.242\or% 242 - .notdef.243\or% 243 - .notdef.244\or% 244 - .notdef.245\or% 245 - divide\or% 246 - .notdef.247\or% 247 - .notdef.248\or% 248 - .notdef.249\or% 249 - .notdef.250\or% 250 - .notdef.251\or% 251 - .notdef.252\or% 252 - .notdef.253\or% 253 - .notdef.254\or% 254 - .notdef.255\fi% 255 -} -% -% \end{macrocode} -% -% \subsubsection{OT1 encoding} -% -% The |OT1| encoding. -% The data are taken from |ot1.etx|. -% -% For unknown slots, a strange Postscript name is returned, but no -% warning is generated. -% -% The OT1 encoding uses different font names depending on -% upright/italic and ligatures. -% This is handled using the \cs{OT1@}\meta{slot} commands that are set -% for an upright roman font by default. -% -% Set the default glyph names. -% \begin{macrocode} -%<*mtx&ot1> -\makeatletter -% \end{macrocode} -% Set options to switch to other font shapes. -% \begin{macrocode} -\define@key{krnenc}{ligaturing}[2]{% - \typeout{OT1 encoding: ligaturing = #1}% - \ifnum#1=2\relax - \expandafter\def\csname krntst@OT1@011\endcsname{ff}% - \expandafter\def\csname krntst@OT1@012\endcsname{fi}% - \expandafter\def\csname krntst@OT1@013\endcsname{fl}% - \expandafter\def\csname krntst@OT1@014\endcsname{ffi}% - \expandafter\def\csname krntst@OT1@015\endcsname{ffl}% - \expandafter\def\csname krntst@OT1@060\endcsname{exclamdown}% - \expandafter\def\csname krntst@OT1@062\endcsname{questiondown}% - \else - \expandafter\def\csname krntst@OT1@011\endcsname{arrowup}% - \expandafter\def\csname krntst@OT1@012\endcsname{arrowdown}% - \expandafter\def\csname krntst@OT1@013\endcsname{quotesingle}% - \expandafter\def\csname krntst@OT1@014\endcsname{exclamdown}% - \expandafter\def\csname krntst@OT1@015\endcsname{questiondown}% - \expandafter\def\csname krntst@OT1@060\endcsname{less}% - \expandafter\def\csname krntst@OT1@062\endcsname{greater}% - \fi - \ifnum#1=0\relax - \expandafter\def\csname krntst@OT1@032\endcsname{visiblespace}% - \expandafter\def\csname krntst@OT1@034\endcsname{quotedbl}% - \expandafter\def\csname krntst@OT1@092\endcsname{backslash}% - \expandafter\def\csname krntst@OT1@095\endcsname{underscore}% - \expandafter\def\csname krntst@OT1@123\endcsname{braceleft}% - \expandafter\def\csname krntst@OT1@124\endcsname{bar}% - \expandafter\def\csname krntst@OT1@125\endcsname{braceright}% - \else - \expandafter\def\csname krntst@OT1@032\endcsname{lslashslash}% - \expandafter\def\csname krntst@OT1@034\endcsname{quotedblright}% - \expandafter\def\csname krntst@OT1@092\endcsname{quotedblleft}% - \expandafter\def\csname krntst@OT1@095\endcsname{dotaccent}% - \expandafter\def\csname krntst@OT1@123\endcsname{rangedash}% - \expandafter\def\csname krntst@OT1@124\endcsname{punctdash}% - \expandafter\def\csname krntst@OT1@125\endcsname{hungarumlaut}% - \fi -} -\define@key{krnenc}{italicizing}[true]{% - \typeout{OT1 encoding: italicizing = #1}% - \csname if#1\endcsname - \expandafter\def\csname krntst@OT1@036\endcsname{sterling}% - \else - \expandafter\def\csname krntst@OT1@036\endcsname{dollar} - \fi -} -\typeout{^^JValid values for OT1 encoding:}% -\typeout{ligaturing: 0, 1, 2}% -\typeout{italicizing: false, true}% -\typeout{Defaults for OT1 encoding:}% -\setkeys{krnenc}{ligaturing=2,italicizing=false}% -\typeout{}% -\makeatother -% \end{macrocode} -% Now, set \cs{getpsname}. -% \begin{macrocode} -\newcommand\getpsname[1]{% - \ifcase#1% - Gamma\or % 000 - Delta\or % 001 - Theta\or % 002 - Lambda\or % 003 - Xi\or % 004 - Pi\or % 005 - Sigma\or % 006 - Upsilon\or % 007 - Phi\or % 008 - Psi\or % 009 - Omega\or % 010 - \csname krntst@OT1@011\endcsname\or % 011 - \csname krntst@OT1@012\endcsname\or % 012 - \csname krntst@OT1@013\endcsname\or % 013 - \csname krntst@OT1@014\endcsname\or % 014 - \csname krntst@OT1@015\endcsname\or % 015 - dotlessi\or % 016 - dotlessj\or % 017 - grave\or % 018 - acute\or % 019 - caron\or % 020 - breve\or % 021 - macron\or % 022 - ringfitted\or % 023 - cedilla\or % 024 - germandbls\or % 025 - ae\or % 026 - oe\or % 027 - oslash\or % 028 - AE\or % 029 - OE\or % 030 - Oslash\or % 031 - \csname krntst@OT1@032\endcsname\or % 032 - exclam\or % 033 - \csname krntst@OT1@034\endcsname\or % 034 - numbersign\or % 035 - \csname krntst@OT1@036\endcsname\or % 036 - percent\or % 037 - ampersand\or % 038 - quoteright\or % 039 - parenleft\or % 040 - parenright\or % 041 - asterisk\or % 042 - plus\or % 043 - comma\or % 044 - hyphen\or % 045 - period\or % 046 - slash\or % 047 - zero\or % 048 - one\or % 049 - two\or % 050 - three\or % 051 - four\or % 052 - five\or % 053 - six\or % 054 - seven\or % 055 - eight\or % 056 - nine\or % 057 - colon\or % 058 - semicolon\or % 059 - \csname krntst@OT1@060\endcsname\or % 060 - equal\or % 061 - \csname krntst@OT1@062\endcsname\or % 062 - question\or % 063 - at\or % 064 - A\or % 065 - B\or % 066 - C\or % 067 - D\or % 068 - E\or % 069 - F\or % 070 - G\or % 071 - H\or % 072 - I\or % 073 - J\or % 074 - K\or % 075 - L\or % 076 - M\or % 077 - N\or % 078 - O\or % 079 - P\or % 080 - Q\or % 081 - R\or % 082 - S\or % 083 - T\or % 084 - U\or % 085 - V\or % 086 - W\or % 087 - X\or % 088 - Y\or % 089 - Z\or % 090 - bracketleft\or % 091 - \csname krntst@OT1@092\endcsname\or % 092 - bracketright\or % 093 - circumflex\or % 094 - \csname krntst@OT1@095\endcsname\or % 095 - quoteleft\or % 096 - a\or % 097 - b\or % 098 - c\or % 099 - d\or % 100 - e\or % 101 - f\or % 102 - g\or % 103 - h\or % 104 - i\or % 105 - j\or % 106 - k\or % 107 - l\or % 108 - m\or % 109 - n\or % 110 - o\or % 111 - p\or % 112 - q\or % 113 - r\or % 114 - s\or % 115 - t\or % 116 - u\or % 117 - v\or % 118 - w\or % 119 - x\or % 120 - y\or % 121 - z\or % 122 - \csname krntst@OT1@123\endcsname\or % 123 - \csname krntst@OT1@124\endcsname\or % 124 - \csname krntst@OT1@125\endcsname\or % 125 - tilde\or % 126 - dieresis\or % 127 - .notdef.128\or % 128 - .notdef.129\or % 129 - .notdef.130\or % 130 - .notdef.131\or % 131 - .notdef.132\or % 132 - .notdef.133\or % 133 - .notdef.134\or % 134 - .notdef.135\or % 135 - .notdef.136\or % 136 - .notdef.137\or % 137 - Lslash\or % 138 - .notdef.139\or % 139 - .notdef.140\or % 140 - .notdef.141\or % 141 - .notdef.142\or % 142 - .notdef.143\or % 143 - .notdef.144\or % 144 - .notdef.145\or % 145 - .notdef.146\or % 146 - .notdef.147\or % 147 - .notdef.148\or % 148 - .notdef.149\or % 149 - .notdef.150\or % 150 - .notdef.151\or % 151 - .notdef.152\or % 152 - .notdef.153\or % 153 - .notdef.154\or % 154 - .notdef.155\or % 155 - .notdef.156\or % 156 - .notdef.157\or % 157 - .notdef.158\or % 158 - .notdef.159\or % 159 - .notdef.160\or % 160 - .notdef.161\or % 161 - .notdef.162\or % 162 - .notdef.163\or % 163 - .notdef.164\or % 164 - .notdef.165\or % 165 - .notdef.166\or % 166 - .notdef.167\or % 167 - .notdef.168\or % 168 - .notdef.169\or % 169 - lslash\or % 170 - .notdef.171\or % 171 - .notdef.172\or % 172 - .notdef.173\or % 173 - .notdef.174\or % 174 - .notdef.175\or % 175 - .notdef.176\or % 176 - .notdef.177\or % 177 - .notdef.178\or % 178 - .notdef.179\or % 179 - .notdef.180\or % 180 - .notdef.181\or % 181 - .notdef.182\or % 182 - .notdef.183\or % 183 - .notdef.184\or % 184 - .notdef.185\or % 185 - .notdef.186\or % 186 - .notdef.187\or % 187 - .notdef.188\or % 188 - .notdef.189\or % 189 - .notdef.190\or % 190 - .notdef.191\or % 191 - .notdef.192\or % 192 - .notdef.193\or % 193 - .notdef.194\or % 194 - .notdef.195\or % 195 - .notdef.196\or % 196 - .notdef.197\or % 197 - .notdef.198\or % 198 - .notdef.199\or % 199 - .notdef.200\or % 200 - .notdef.201\or % 201 - .notdef.202\or % 202 - .notdef.203\or % 203 - .notdef.204\or % 204 - .notdef.205\or % 205 - .notdef.206\or % 206 - .notdef.207\or % 207 - .notdef.208\or % 208 - .notdef.209\or % 209 - .notdef.210\or % 210 - .notdef.211\or % 211 - .notdef.212\or % 212 - .notdef.213\or % 213 - .notdef.214\or % 214 - .notdef.215\or % 215 - .notdef.216\or % 216 - .notdef.217\or % 217 - .notdef.218\or % 218 - .notdef.219\or % 219 - .notdef.220\or % 220 - .notdef.221\or % 221 - .notdef.222\or % 222 - .notdef.223\or % 223 - .notdef.224\or % 224 - .notdef.225\or % 225 - .notdef.226\or % 226 - .notdef.227\or % 227 - .notdef.228\or % 228 - .notdef.229\or % 229 - .notdef.230\or % 230 - .notdef.231\or % 231 - .notdef.232\or % 232 - .notdef.233\or % 233 - .notdef.234\or % 234 - .notdef.235\or % 235 - .notdef.236\or % 236 - .notdef.237\or % 237 - .notdef.238\or % 238 - .notdef.239\or % 239 - .notdef.240\or % 240 - .notdef.241\or % 241 - .notdef.242\or % 242 - .notdef.243\or % 243 - .notdef.244\or % 244 - .notdef.245\or % 245 - .notdef.246\or % 246 - .notdef.247\or % 247 - .notdef.248\or % 248 - .notdef.249\or % 249 - .notdef.250\or % 250 - .notdef.251\or % 251 - .notdef.252\or % 252 - .notdef.253\or % 253 - .notdef.254\or % 254 - .notdef.255\fi % 255 -} -% -% \end{macrocode} -% -% \subsubsection{T2A encoding} -% -% The |T2A| encoding. -% The data are taken from |t2a.etx|. -% -% For unknown slots, a strange Postscript name is returned, but no -% warning is generated. -% \begin{macrocode} -%<*mtx&t2a> -\newcommand\getpsname[1]{% - \ifcase#1% - grave\or% 000 - acute\or% 001 - circumflex\or% 002 - tilde\or% 003 - dieresis\or% 004 - hungarumlaut\or% 005 - ring\or% 006 - caron\or% 007 - breve\or% 008 - macron\or% 009 - dotaccent\or% 010 - cedilla\or% 011 - ogonek\or% 012 - CYRpalochka\or% 013 - angleleft\or% 014 - angleright\or% 015 - quotedblleft\or% 016 - quotedblright\or% 017 - cyrflex\or% 018 - dblgrave\or% 019 - cyrbreve\or% 020 - rangedash\or% 021 - cyrdash\or% 022 - compwordmark\or% 023 - perthousandzero\or% 024 - dotlessi\or% 025 - dotlessj\or% 026 - ff\or% 027 - fi\or% 028 - fl\or% 029 - ffi\or% 030 - ffl\or% 031 - visiblespace\or% 032 - exclam\or% 033 - quotedbl\or% 034 - numbersign\or% 035 - dollar\or% 036 - percent\or% 037 - ampersand\or% 038 - quoteright\or% 039 - parenleft\or% 040 - parenright\or% 041 - asterisk\or% 042 - plus\or% 043 - comma\or% 044 - hyphen\or% 045 - period\or% 046 - slash\or% 047 - zero\or% 048 - one\or% 049 - two\or% 050 - three\or% 051 - four\or% 052 - five\or% 053 - six\or% 054 - seven\or% 055 - eight\or% 056 - nine\or% 057 - colon\or% 058 - semicolon\or% 059 - less\or% 060 - equal\or% 061 - greater\or% 062 - question\or% 063 - at\or% 064 - A\or% 065 - B\or% 066 - C\or% 067 - D\or% 068 - E\or% 069 - F\or% 070 - G\or% 071 - H\or% 072 - I\or% 073 - J\or% 074 - K\or% 075 - L\or% 076 - M\or% 077 - N\or% 078 - O\or% 079 - P\or% 080 - Q\or% 081 - R\or% 082 - S\or% 083 - T\or% 084 - U\or% 085 - V\or% 086 - W\or% 087 - X\or% 088 - Y\or% 089 - Z\or% 090 - bracketleft\or% 091 - backslash\or% 092 - bracketright\or% 093 - asciicircum\or% 094 - underscore\or% 095 - quoteleft\or% 096 - a\or% 097 - b\or% 098 - c\or% 099 - d\or% 100 - e\or% 101 - f\or% 102 - g\or% 103 - h\or% 104 - i\or% 105 - j\or% 106 - k\or% 107 - l\or% 108 - m\or% 109 - n\or% 110 - o\or% 111 - p\or% 112 - q\or% 113 - r\or% 114 - s\or% 115 - t\or% 116 - u\or% 117 - v\or% 118 - w\or% 119 - x\or% 120 - y\or% 121 - z\or% 122 - braceleft\or% 123 - bar\or% 124 - braceright\or% 125 - asciitilde\or% 126 - hyphenchar\or% 127 - CYRGUP\or% 128 - CYRGHCRS\or% 129 - CYRDJE\or% 130 - CYRTSHE\or% 131 - CYRSHHA\or% 132 - CYRZHDSC\or% 133 - CYRZDSC\or% 134 - CYRLJE\or% 135 - CYRYI\or% 136 - CYRKDSC\or% 137 - CYRKBEAK\or% 138 - CYRKVCRS\or% 139 - CYRAE\or% 140 - CYRNDSC\or% 141 - CYRNG\or% 142 - CYRDZE\or% 143 - CYROTLD\or% 144 - CYRSDSC\or% 145 - CYRUSHRT\or% 146 - CYRY\or% 147 - CYRYHCRS\or% 148 - CYRHDSC\or% 149 - CYRDZHE\or% 150 - CYRCHVCRS\or% 151 - CYRCHRDSC\or% 152 - CYRIE\or% 153 - CYRSCHWA\or% 154 - CYRNJE\or% 155 - CYRYO\or% 156 - numero\or% 157 - currency\or% 158 - section\or% 159 - cyrgup\or% 160 - cyrghcrs\or% 161 - cyrdje\or% 162 - cyrtshe\or% 163 - cyrshha\or% 164 - cyrzhdsc\or% 165 - cyrzdsc\or% 166 - cyrlje\or% 167 - cyryi\or% 168 - cyrkdsc\or% 169 - cyrkbeak\or% 170 - cyrkvcrs\or% 171 - cyrae\or% 172 - cyrndsc\or% 173 - cyrng\or% 174 - cyrdze\or% 175 - cyrotld\or% 176 - cyrsdsc\or% 177 - cyrushrt\or% 178 - cyry\or% 179 - cyryhcrs\or% 180 - cyrhdsc\or% 181 - cyrdzhe\or% 182 - cyrchvcrs\or% 183 - cyrchrdsc\or% 184 - cyrie\or% 185 - cyrschwa\or% 186 - cyrnje\or% 187 - cyryo\or% 188 - quotedblbase\or% 189 - guillemotleft\or% 190 - guillemotright\or% 191 - CYRA\or% 192 - CYRB\or% 193 - CYRV\or% 194 - CYRG\or% 195 - CYRD\or% 196 - CYRE\or% 197 - CYRZH\or% 198 - CYRZ\or% 199 - CYRI\or% 200 - CYRISHRT\or% 201 - CYRK\or% 202 - CYRL\or% 203 - CYRM\or% 204 - CYRN\or% 205 - CYRO\or% 206 - CYRP\or% 207 - CYRR\or% 208 - CYRS\or% 209 - CYRT\or% 210 - CYRU\or% 211 - CYRF\or% 212 - CYRH\or% 213 - CYRC\or% 214 - CYRCH\or% 215 - CYRSH\or% 216 - CYRSHCH\or% 217 - CYRHRDSN\or% 218 - CYRERY\or% 219 - CYRSFTSN\or% 220 - CYREREV\or% 221 - CYRYU\or% 222 - CYRYA\or% 223 - cyra\or% 224 - cyrb\or% 225 - cyrv\or% 226 - cyrg\or% 227 - cyrd\or% 228 - cyre\or% 229 - cyrzh\or% 230 - cyrz\or% 231 - cyri\or% 232 - cyrishrt\or% 233 - cyrk\or% 234 - cyrl\or% 235 - cyrm\or% 236 - cyrn\or% 237 - cyro\or% 238 - cyrp\or% 239 - cyrr\or% 240 - cyrs\or% 241 - cyrt\or% 242 - cyru\or% 243 - cyrf\or% 244 - cyrh\or% 245 - cyrc\or% 246 - cyrch\or% 247 - cyrsh\or% 248 - cyrshch\or% 249 - cyrhrdsn\or% 250 - cyrery\or% 251 - cyrsftsn\or% 252 - cyrerev\or% 253 - cyryu\or% 254 - cyrya\fi% 255 -} -% -% \end{macrocode} -% -% \subsubsection{T2A encoding} -% -% The |T2B| encoding. -% The data are taken from |t2b.etx|. -% -% For unknown slots, a strange Postscript name is returned, but no -% warning is generated. -% \begin{macrocode} -%<*mtx&t2b> -\newcommand\getpsname[1]{% - \ifcase#1% - grave\or% 000 - acute\or% 001 - circumflex\or% 002 - tilde\or% 003 - dieresis\or% 004 - hungarumlaut\or% 005 - ring\or% 006 - caron\or% 007 - breve\or% 008 - macron\or% 009 - dotaccent\or% 010 - cedilla\or% 011 - ogonek\or% 012 - CYRpalochka\or% 013 - angleleft\or% 014 - angleright\or% 015 - quotedblleft\or% 016 - quotedblright\or% 017 - cyrflex\or% 018 - dblgrave\or% 019 - cyrbreve\or% 020 - rangedash\or% 021 - cyrdash\or% 022 - compwordmark\or% 023 - perthousandzero\or% 024 - dotlessi\or% 025 - dotlessj\or% 026 - ff\or% 027 - fi\or% 028 - fl\or% 029 - ffi\or% 030 - ffl\or% 031 - visiblespace\or% 032 - exclam\or% 033 - quotedbl\or% 034 - numbersign\or% 035 - dollar\or% 036 - percent\or% 037 - ampersand\or% 038 - quoteright\or% 039 - parenleft\or% 040 - parenright\or% 041 - asterisk\or% 042 - plus\or% 043 - comma\or% 044 - hyphen\or% 045 - period\or% 046 - slash\or% 047 - zero\or% 048 - one\or% 049 - two\or% 050 - three\or% 051 - four\or% 052 - five\or% 053 - six\or% 054 - seven\or% 055 - eight\or% 056 - nine\or% 057 - colon\or% 058 - semicolon\or% 059 - less\or% 060 - equal\or% 061 - greater\or% 062 - question\or% 063 - at\or% 064 - A\or% 065 - B\or% 066 - C\or% 067 - D\or% 068 - E\or% 069 - F\or% 070 - G\or% 071 - H\or% 072 - I\or% 073 - J\or% 074 - K\or% 075 - L\or% 076 - M\or% 077 - N\or% 078 - O\or% 079 - P\or% 080 - Q\or% 081 - R\or% 082 - S\or% 083 - T\or% 084 - U\or% 085 - V\or% 086 - W\or% 087 - X\or% 088 - Y\or% 089 - Z\or% 090 - bracketleft\or% 091 - backslash\or% 092 - bracketright\or% 093 - asciicircum\or% 094 - underscore\or% 095 - quoteleft\or% 096 - a\or% 097 - b\or% 098 - c\or% 099 - d\or% 100 - e\or% 101 - f\or% 102 - g\or% 103 - h\or% 104 - i\or% 105 - j\or% 106 - k\or% 107 - l\or% 108 - m\or% 109 - n\or% 110 - o\or% 111 - p\or% 112 - q\or% 113 - r\or% 114 - s\or% 115 - t\or% 116 - u\or% 117 - v\or% 118 - w\or% 119 - x\or% 120 - y\or% 121 - z\or% 122 - braceleft\or% 123 - bar\or% 124 - braceright\or% 125 - asciitilde\or% 126 - hyphenchar\or% 127 - CYRGDSCHCRS\or% 128 - CYRGHCRS\or% 129 - CYRGDSC\or% 130 - CYRGHK\or% 131 - CYRSHHA\or% 132 - CYRZHDSC\or% 133 - CYRDELTA\or% 134 - CYRABHDZE\or% 135 - CYRLJE\or% 136 - CYRKDSC\or% 137 - CYRLDSC\or% 138 - CYRKHK\or% 139 - CYRLHK\or% 140 - CYRNDSC\or% 141 - CYRNG\or% 142 - CYRNHK\or% 143 - CYROTLD\or% 144 - CYRSACRS\or% 145 - CYRUSHRT\or% 146 - CYRY\or% 147 - CYRHHCRS\or% 148 - CYRHDSC\or% 149 - CYRHHK\or% 150 - CYRCHLDSC\or% 151 - CYRCHRDSC\or% 152 - CYRNJE\or% 153 - CYRSCHWA\or% 154 - CYREPS\or% 155 - CYRYO\or% 156 - numero\or% 157 - currency\or% 158 - section\or% 159 - cyrgdschcrs\or% 160 - cyrghcrs\or% 161 - cyrgdsc\or% 162 - cyrghk\or% 163 - cyrshha\or% 164 - cyrzhdsc\or% 165 - cyrdelta\or% 166 - cyrabhdze\or% 167 - cyrlje\or% 168 - cyrkdsc\or% 169 - cyrldsc\or% 170 - cyrkhk\or% 171 - cyrlhk\or% 172 - cyrndsc\or% 173 - cyrng\or% 174 - cyrnhk\or% 175 - cyrotld\or% 176 - cyrsacrs\or% 177 - cyrushrt\or% 178 - cyry\or% 179 - cyrhhcrs\or% 180 - cyrhdsc\or% 181 - cyrhhk\or% 182 - cyrchldsc\or% 183 - cyrchrdsc\or% 184 - cyrnje\or% 185 - cyrschwa\or% 186 - cyreps\or% 187 - cyryo\or% 188 - quotedblbase\or% 189 - guillemotleft\or% 190 - guillemotright\or% 191 - CYRA\or% 192 - CYRB\or% 193 - CYRV\or% 194 - CYRG\or% 195 - CYRD\or% 196 - CYRE\or% 197 - CYRZH\or% 198 - CYRZ\or% 199 - CYRI\or% 200 - CYRISHRT\or% 201 - CYRK\or% 202 - CYRL\or% 203 - CYRM\or% 204 - CYRN\or% 205 - CYRO\or% 206 - CYRP\or% 207 - CYRR\or% 208 - CYRS\or% 209 - CYRT\or% 210 - CYRU\or% 211 - CYRF\or% 212 - CYRH\or% 213 - CYRC\or% 214 - CYRCH\or% 215 - CYRSH\or% 216 - CYRSHCH\or% 217 - CYRHRDSN\or% 218 - CYRERY\or% 219 - CYRSFTSN\or% 220 - CYREREV\or% 221 - CYRYU\or% 222 - CYRYA\or% 223 - cyra\or% 224 - cyrb\or% 225 - cyrv\or% 226 - cyrg\or% 227 - cyrd\or% 228 - cyre\or% 229 - cyrzh\or% 230 - cyrz\or% 231 - cyri\or% 232 - cyrishrt\or% 233 - cyrk\or% 234 - cyrl\or% 235 - cyrm\or% 236 - cyrn\or% 237 - cyro\or% 238 - cyrp\or% 239 - cyrr\or% 240 - cyrs\or% 241 - cyrt\or% 242 - cyru\or% 243 - cyrf\or% 244 - cyrh\or% 245 - cyrc\or% 246 - cyrch\or% 247 - cyrsh\or% 248 - cyrshch\or% 249 - cyrhrdsn\or% 250 - cyrery\or% 251 - cyrsftsn\or% 252 - cyrerev\or% 253 - cyryu\or% 254 - cyrya\fi% 255 -} -% -% \end{macrocode} -% -% \subsubsection{LY1 encoding} -% -% The |LY1| encoding. -% The data are taken from |texnansi.enc|. -% -% For unknown slots, a strange Postscript name is returned, but no -% warning is generated. -% \begin{macrocode} -%<*mtx&ly1> -\newcommand\getpsname[1]{% - \ifcase#1% - .notdef.000\or % 000 - Euro\or % 001 - .notdef.002\or % 002 - .notdef.003\or % 003 - fraction\or % 004 - dotaccent\or % 005 - hungarumlaut\or % 006 - ogonek\or % 007 - fl\or % 008 - .notdef.009\or % 009 - cwm\or % 010 - ff\or % 011 - fi\or % 012 - .notdef.013\or % 013 - ffi\or % 014 - ffl\or % 015 - dotlessi\or % 016 - dotlessj\or % 017 - grave\or % 018 - acute\or % 019 - caron\or % 020 - breve\or % 021 - macron\or % 022 - ring\or % 023 - cedilla\or % 024 - germandbls\or % 025 - ae\or % 026 - oe\or % 027 - oslash\or % 028 - AE\or % 029 - OE\or % 030 - Oslash\or % 031 - space\or % 032 - exclam\or % 033 - quotedbl\or % 034 - numbersign\or % 035 - dollar\or % 036 - percent\or % 037 - ampersand\or % 038 - quoteright\or % 039 - parenleft\or % 040 - parenright\or % 041 - asterisk\or % 042 - plus\or % 043 - comma\or % 044 - hyphen\or % 045 - period\or % 046 - slash\or % 047 - zero\or % 048 - one\or % 049 - two\or % 050 - three\or % 051 - four\or % 052 - five\or % 053 - six\or % 054 - seven\or % 055 - eight\or % 056 - nine\or % 057 - colon\or % 058 - semicolon\or % 059 - less\or % 060 - equal\or % 061 - greater\or % 062 - question\or % 063 - at\or % 064 - A\or % 065 - B\or % 066 - C\or % 067 - D\or % 068 - E\or % 069 - F\or % 070 - G\or % 071 - H\or % 072 - I\or % 073 - J\or % 074 - K\or % 075 - L\or % 076 - M\or % 077 - N\or % 078 - O\or % 079 - P\or % 080 - Q\or % 081 - R\or % 082 - S\or % 083 - T\or % 084 - U\or % 085 - V\or % 086 - W\or % 087 - X\or % 088 - Y\or % 089 - Z\or % 090 - bracketleft\or % 091 - backslash\or % 092 - bracketright\or % 093 - circumflex\or % 094 - underscore\or % 095 - quoteleft\or % 096 - a\or % 097 - b\or % 098 - c\or % 099 - d\or % 100 - e\or % 101 - f\or % 102 - g\or % 103 - h\or % 104 - i\or % 105 - j\or % 106 - k\or % 107 - l\or % 108 - m\or % 109 - n\or % 110 - o\or % 111 - p\or % 112 - q\or % 113 - r\or % 114 - s\or % 115 - t\or % 116 - u\or % 117 - v\or % 118 - w\or % 119 - x\or % 120 - y\or % 121 - z\or % 122 - braceleft\or % 123 - bar\or % 124 - braceright\or % 125 - tilde\or % 126 - dieresis\or % 127 - Lslash\or % 128 - quotesingle\or % 129 - quotesinglbase\or % 130 - florin\or % 131 - quotedblbase\or % 132 - ellipsis\or % 133 - dagger\or % 134 - daggerdbl\or % 135 - circumflex\or % 136 - perthousand\or % 137 - Scaron\or % 138 - guilsinglleft\or % 139 - OE\or % 140 - Zcaron\or % 141 - asciicircum\or % 142 - minus\or % 143 - lslash\or % 144 - quoteleft\or % 145 - quoteright\or % 146 - quotedblleft\or % 147 - quotedblright\or % 148 - bullet\or % 149 - endash\or % 150 - emdash\or % 151 - tilde\or % 152 - trademark\or % 153 - scaron\or % 154 - guilsinglright\or % 155 - oe\or % 156 - zcaron\or % 157 - asciitilde\or % 158 - Ydieresis\or % 159 - nbspace\or % 160 - exclamdown\or % 161 - cent\or % 162 - sterling\or % 163 - currency\or % 164 - yen\or % 165 - brokenbar\or % 166 - section\or % 167 - dieresis\or % 168 - copyright\or % 169 - ordfeminine\or % 170 - guillemotleft\or % 171 - logicalnot\or % 172 - sfthyphen\or % 173 - registered\or % 174 - macron\or % 175 - degree\or % 176 - plusminus\or % 177 - twosuperior\or % 178 - threesuperior\or % 179 - acute\or % 180 - mu\or % 181 - paragraph\or % 182 - periodcentered\or % 183 - cedilla\or % 184 - onesuperior\or % 185 - ordmasculine\or % 186 - guillemotright\or % 187 - onequarter\or % 188 - onehalf\or % 189 - threequarters\or % 190 - questiondown\or % 191 - Agrave\or % 192 - Aacute\or % 193 - Acircumflex\or % 194 - Atilde\or % 195 - Adieresis\or % 196 - Aring\or % 197 - AE\or % 198 - Ccedilla\or % 199 - Egrave\or % 200 - Eacute\or % 201 - Ecircumflex\or % 202 - Edieresis\or % 203 - Igrave\or % 204 - Iacute\or % 205 - Icircumflex\or % 206 - Idieresis\or % 207 - Eth\or % 208 - Ntilde\or % 209 - Ograve\or % 210 - Oacute\or % 211 - Ocircumflex\or % 212 - Otilde\or % 213 - Odieresis\or % 214 - multiply\or % 215 - Oslash\or % 216 - Ugrave\or % 217 - Uacute\or % 218 - Ucircumflex\or % 219 - Udieresis\or % 220 - Yacute\or % 221 - Thorn\or % 222 - germandbls\or % 223 - agrave\or % 224 - aacute\or % 225 - acircumflex\or % 226 - atilde\or % 227 - adieresis\or % 228 - aring\or % 229 - ae\or % 230 - ccedilla\or % 231 - egrave\or % 232 - eacute\or % 233 - ecircumflex\or % 234 - edieresis\or % 235 - igrave\or % 236 - iacute\or % 237 - icircumflex\or % 238 - idieresis\or % 239 - eth\or % 240 - ntilde\or % 241 - ograve\or % 242 - oacute\or % 243 - ocircumflex\or % 244 - otilde\or % 245 - odieresis\or % 246 - divide\or % 247 - oslash\or % 248 - ugrave\or % 249 - uacute\or % 250 - ucircumflex\or % 251 - udieresis\or % 252 - yacute\or % 253 - thorn\or % 254 - ydieresis\fi % 255 -} -% -% \end{macrocode} -% -% -% \subsection{Templates} -% -% Generate template files for T1 and TS1 encoding. -% They should be self-describing. -% -% \subsubsection{T1 encoding} -% -% \begin{macrocode} -%<*template&t1> -\listfiles -%% Replace the `XXX' in the next line by the 3- or 4-character long -%% abbreviation for your font. -\documentclass[family=XXX]{kerntest} - -%% Replace the settings by these you want to test. -\kernsetup{encoding=T1,series=m,shape=n,example=hello} -\kernsetup{size=14.40pt,baselineskip=16.5pt,papersize=a4paper} - -%% The next line can be used to add a name suffix to the output |mtx| file. -%% \kernsetup{extraname=normal} - -%% Set encoding parameters. -%% Set ligaturing: 1=all, 0=all, -1=some, -2=none -%% \encodingsetup{ligaturing=1} - -%% If you are using a font with different design sizes and if you want -%% to test one design size scaled to another one, you may input a -%% modified fd file for your font. To generate this new fd file, just -%% copy the original one, rename it, and modify the entries for the -%% font shapes to use the design size you want to test. -%% \input{t1XXX-1200.fd} - -%% The following lines show some possible glyph classes. You should -%% add all classes you need. -\newglyphclass{right}{A}{A,Aogonek} -\newglyphclass{right}{Abreve}{Abreve,Aacute,Acircumflex,% - Atilde,Adieresis} -\newglyphclass{right}{Aring}{Agrave,Aring} - -\newglyphclass{left}{A}{A,Aogonek} -\newglyphclass{left}{Abreve}{Abreve,Agrave,Acircumflex,% - Atilde,Adieresis} -\newglyphclass{left}{Aring}{Aacute,Aring} - -\newglyphclass{right}{C}{C,Cacute,Ccaron,Ccedilla} -\newglyphclass{left}{C}{C,Cacute,Ccaron,Ccedilla} - -\newglyphclass{right}{D}{D,Dcaron,Eth} - -\newglyphclass{right}{E}{E,Ecaron,Eogonek,Egrave,Eacute,Ecircumflex,% - Edieresis,AE,OE} - -\newglyphclass{right}{G}{G,Gbreve} -\newglyphclass{left}{G}{G,Gbreve} - -\newglyphclass{left}{H}{B,D,Dcaron,Eth,E,Ecaron,Eogonek,Egrave,% - Eacute,Ecircumflex,Edieresis,F,H,I,Idotaccent,Igrave,Iacute,% - Icircumflex,Idieresis,IJ,J,K,L,Lacute,Lcaron,N,Nacute,Ncaron,% - Ntilde,P,R,Racute,Rcaron,Ng,Thorn} - -\newglyphclass{right}{H}{H,I,Idotaccent,Igrave,Iacute,% - Icircumflex,Idieresis,IJ,J,N,Nacute,Ncaron,Ntilde} - -\newglyphclass{right}{O}{O,Ohungarumlaut,Ograve,Oacute,Ocircumflex,% - Otilde,Odieresis,Oslash} -\newglyphclass{left}{O}{O,Ohungarumlaut,Ograve,Oacute,Ocircumflex,% - Otilde,Odieresis,OE,Oslash} - -\newglyphclass{right}{R}{R,Racute,Rcaron} - -\newglyphclass{right}{S}{S,Sacute,Scaron,Scedilla,SS,dollar} -\newglyphclass{left}{S}{S,Sacute,Scaron,Scedilla,SS,dollar} - -\newglyphclass{right}{T}{T,Tcaron,Tcedilla} -\newglyphclass{left}{T}{T,Tcaron,Tcedilla} - -\newglyphclass{right}{U}{U,Uhungarumlaut,Uring,Ugrave,Uacute,% - Ucircumflex,Udieresis} -\newglyphclass{left}{U}{U,Uhungarumlaut,Uring,Ugrave,Uacute,% - Ucircumflex,Udieresis} - -\newglyphclass{right}{Y}{Y,Yacute,Ydieresis}% -\newglyphclass{left}{Y}{Y,Yacute,Ydieresis}% - -\newglyphclass{left}{Z}{Z,Zacute,Zcaron,Zdotaccent} -\newglyphclass{right}{Z}{Z,Zacute,Zcaron,Zdotaccent} - -\newglyphclass{left}{a}{a,aogonek,ae} -\newglyphclass{left}{abreve}{abreve,agrave,acircumflex,atilde,adieresis,aring} -\newglyphclass{right}{a}{a,aogonek} -\newglyphclass{right}{abreve}{abreve,aacute,acircumflex,atilde,adieresis,aring} - -\newglyphclass{left}{c}{c,ccedilla} -\newglyphclass{right}{c}{c,ccedilla} - -\newglyphclass{left}{d}{d,dbar,dcaron} - -\newglyphclass{left}{e}{e,eogonek} -\newglyphclass{left}{egrave}{ecaron,ecircumflex} -\newglyphclass{right}{e}{e,eogonek,ae,oe} -\newglyphclass{right}{egrave}{ecaron,ecircumflex} - -\newglyphclass{left}{f}{f,ff,fi,fl,ffi,ffl} -\newglyphclass{right}{f}{f,ff} - -\newglyphclass{right}{i}{i,fi,ffi,dotlessi} -\newglyphclass{left}{i}{i,ij,dotlessi} - -\newglyphclass{right}{l}{fl,ffl,l,lacute} -\newglyphclass{left}{l}{l,lacute,lcaron} - -\newglyphclass{right}{m}{m,n} -\newglyphclass{left}{m}{m,n} -\newglyphclass{right}{nacute}{nacute,ncaron} -\newglyphclass{left}{nacute}{nacute,ncaron} - -\newglyphclass{right}{ograve}{ograve,ocircumflex} -\newglyphclass{right}{ohungarumlaut}{ohungarumlaut,oacute,otilde,% - odieresis} -\newglyphclass{left}{oacute}{oacute,ocircumflex,oe} -\newglyphclass{left}{ohungarumlaut}{ohungarumlaut,ograve,otilde,% - odieresis} - -\newglyphclass{left}{t}{t,tcaron,tcedilla} - - -\begin{document} - -%% This table of characters is sorted by similar glyphs, not by the -%% encoding. -%% Replace `{LLL}' and `{RRR}' in columns 1 resp. 5 by these glyphs -%% that shall be tested. -%% Good pairs to use for LLL and RRR test are 016, 017 (English -%% quotation marks `` and ''); 018, 016 (German quotation marks ,, and -%% ``); 019, 020 (French Guillemets << and >>); 020, 019 (French -%% Guillemets in German notation >> and <<). -%% You may also take the Postscript names for all glyphs. -\begin{kerntable} - \testkern{LLL}{-}{000}{-}{RRR} \\ % grave - \testkern{LLL}{-}{001}{-}{RRR} \\ % acute - \testkern{LLL}{-}{002}{-}{RRR} \\ % circumflex - \testkern{LLL}{-}{003}{-}{RRR} \\ % tilde - \testkern{LLL}{-}{004}{-}{RRR} \\ % dieresis - \testkern{LLL}{-}{005}{-}{RRR} \\ % hungarumlaut - \testkern{LLL}{-}{006}{-}{RRR} \\ % ring - \testkern{LLL}{-}{007}{-}{RRR} \\ % caron - \testkern{LLL}{-}{008}{-}{RRR} \\ % breve - \testkern{LLL}{-}{009}{-}{RRR} \\ % macron - \testkern{LLL}{-}{010}{-}{RRR} \\ % dotaccent - \testkern{LLL}{-}{011}{-}{RRR} \\ % cedilla - \testkern{LLL}{-}{012}{-}{RRR} \\ % ogonek - \testkern{LLL}{-}{126}{-}{RRR} \\ % asciitilde - \testkern{LLL}{-}{094}{-}{RRR} \\ % asciicircum - \testkern{LLL}{-}{042}{-}{RRR} \\ % asterisk - \testkern{LLL}{-}{023}{-}{RRR} \\ % compwordmark - \testkern{LLL}{-}{032}{-}{RRR} \\ % visiblespace - \testkern{LLL}{-}{014}{-}{RRR} \\ % guilsinglleft - \testkern{LLL}{-}{015}{-}{RRR} \\ % guilsinglright - \testkern{LLL}{-}{019}{-}{RRR} \\ % guillemotleft - \testkern{LLL}{-}{020}{-}{RRR} \\ % guillemotright - \testkern{LLL}{-}{096}{-}{RRR} \\ % quoteleft - \testkern{LLL}{-}{039}{-}{RRR} \\ % quoteright - \testkern{LLL}{-}{013}{-}{RRR} \\ % quotesinglbase - \testkern{LLL}{-}{016}{-}{RRR} \\ % quotedblleft - \testkern{LLL}{-}{017}{-}{RRR} \\ % quotedblright - \testkern{LLL}{-}{018}{-}{RRR} \\ % quotedblbase - \testkern{LLL}{-}{034}{-}{RRR} \\ % quotedbl - \testkern{LLL}{-}{046}{-}{RRR} \\ % period - \testkern{LLL}{-}{044}{-}{RRR} \\ % comma - \testkern{LLL}{-}{058}{-}{RRR} \\ % colon - \testkern{LLL}{-}{059}{-}{RRR} \\ % semicolon - \testkern{LLL}{-}{033}{-}{RRR} \\ % exclam - \testkern{LLL}{-}{063}{-}{RRR} \\ % question - \testkern{LLL}{-}{189}{-}{RRR} \\ % exclamdown - \testkern{LLL}{-}{190}{-}{RRR} \\ % questiondown - \testkern{LLL}{-}{045}{-}{RRR} \\ % hyphen - \testkern{LLL}{-}{127}{-}{RRR} \\ % hyphenchar - \testkern{LLL}{-}{021}{-}{RRR} \\ % rangedash - \testkern{LLL}{-}{022}{-}{RRR} \\ % punctdash - \testkern{LLL}{-}{095}{-}{RRR} \\ % underscore - \testkern{LLL}{-}{043}{-}{RRR} \\ % plus - \testkern{LLL}{-}{061}{-}{RRR} \\ % equal - \testkern{LLL}{-}{060}{-}{RRR} \\ % less - \testkern{LLL}{-}{062}{-}{RRR} \\ % greater - \testkern{LLL}{-}{047}{-}{RRR} \\ % slash - \testkern{LLL}{-}{092}{-}{RRR} \\ % backslash - \testkern{LLL}{-}{040}{-}{RRR} \\ % parenleft - \testkern{LLL}{-}{041}{-}{RRR} \\ % parenright - \testkern{LLL}{-}{091}{-}{RRR} \\ % bracketleft - \testkern{LLL}{-}{093}{-}{RRR} \\ % bracketright - \testkern{LLL}{-}{123}{-}{RRR} \\ % braceleft - \testkern{LLL}{-}{125}{-}{RRR} \\ % braceright - \testkern{LLL}{-}{124}{-}{RRR} \\ % bar - \testkern{LLL}{-}{035}{-}{RRR} \\ % numbersign - \testkern{LLL}{-}{037}{-}{RRR} \\ % percent - \testkern{LLL}{-}{024}{-}{RRR} \\ % perthousandzero - \testkern{LLL}{-}{038}{-}{RRR} \\ % ampersand - \testkern{LLL}{-}{159}{-}{RRR} \\ % section - \testkern{LLL}{-}{064}{-}{RRR} \\ % at - \testkern{LLL}{-}{191}{-}{RRR} \\ % sterling - \testkern{LLL}{-}{048}{-}{RRR} \\ % zero - \testkern{LLL}{-}{049}{-}{RRR} \\ % one - \testkern{LLL}{-}{050}{-}{RRR} \\ % two - \testkern{LLL}{-}{051}{-}{RRR} \\ % three - \testkern{LLL}{-}{052}{-}{RRR} \\ % four - \testkern{LLL}{-}{053}{-}{RRR} \\ % five - \testkern{LLL}{-}{054}{-}{RRR} \\ % six - \testkern{LLL}{-}{055}{-}{RRR} \\ % seven - \testkern{LLL}{-}{056}{-}{RRR} \\ % eight - \testkern{LLL}{-}{057}{-}{RRR} \\ % nine - \testkern{LLL}{-}{065}{-}{RRR} \\ % A - \testkern{LLL}{-}{128}{-}{RRR} \\ % Abreve - \testkern{LLL}{-}{129}{-}{RRR} \\ % Aogonek - \testkern{LLL}{-}{192}{-}{RRR} \\ % Agrave - \testkern{LLL}{-}{193}{-}{RRR} \\ % Aacute - \testkern{LLL}{-}{194}{-}{RRR} \\ % Acircumflex - \testkern{LLL}{-}{195}{-}{RRR} \\ % Atilde - \testkern{LLL}{-}{196}{-}{RRR} \\ % Adieresis - \testkern{LLL}{-}{197}{-}{RRR} \\ % Aring - \testkern{LLL}{-}{198}{-}{RRR} \\ % AE - \testkern{LLL}{-}{066}{-}{RRR} \\ % B - \testkern{LLL}{-}{067}{-}{RRR} \\ % C - \testkern{LLL}{-}{130}{-}{RRR} \\ % Cacute - \testkern{LLL}{-}{131}{-}{RRR} \\ % Ccaron - \testkern{LLL}{-}{199}{-}{RRR} \\ % Ccedilla - \testkern{LLL}{-}{068}{-}{RRR} \\ % D - \testkern{LLL}{-}{132}{-}{RRR} \\ % Dcaron - \testkern{LLL}{-}{208}{-}{RRR} \\ % Eth - \testkern{LLL}{-}{069}{-}{RRR} \\ % E - \testkern{LLL}{-}{133}{-}{RRR} \\ % Ecaron - \testkern{LLL}{-}{134}{-}{RRR} \\ % Eogonek - \testkern{LLL}{-}{200}{-}{RRR} \\ % Egrave - \testkern{LLL}{-}{201}{-}{RRR} \\ % Eacute - \testkern{LLL}{-}{202}{-}{RRR} \\ % Ecircumflex - \testkern{LLL}{-}{203}{-}{RRR} \\ % Edieresis - \testkern{LLL}{-}{070}{-}{RRR} \\ % F - \testkern{LLL}{-}{071}{-}{RRR} \\ % G - \testkern{LLL}{-}{135}{-}{RRR} \\ % Gbreve - \testkern{LLL}{-}{072}{-}{RRR} \\ % H - \testkern{LLL}{-}{073}{-}{RRR} \\ % I - \testkern{LLL}{-}{157}{-}{RRR} \\ % Idotaccent - \testkern{LLL}{-}{204}{-}{RRR} \\ % Igrave - \testkern{LLL}{-}{205}{-}{RRR} \\ % Iacute - \testkern{LLL}{-}{206}{-}{RRR} \\ % Icircumflex - \testkern{LLL}{-}{207}{-}{RRR} \\ % Idieresis - \testkern{LLL}{-}{156}{-}{RRR} \\ % IJ - \testkern{LLL}{-}{074}{-}{RRR} \\ % J - \testkern{LLL}{-}{075}{-}{RRR} \\ % K - \testkern{LLL}{-}{076}{-}{RRR} \\ % L - \testkern{LLL}{-}{136}{-}{RRR} \\ % Lacute - \testkern{LLL}{-}{137}{-}{RRR} \\ % Lcaron - \testkern{LLL}{-}{138}{-}{RRR} \\ % Lslash - \testkern{LLL}{-}{077}{-}{RRR} \\ % M - \testkern{LLL}{-}{078}{-}{RRR} \\ % N - \testkern{LLL}{-}{139}{-}{RRR} \\ % Nacute - \testkern{LLL}{-}{140}{-}{RRR} \\ % Ncaron - \testkern{LLL}{-}{209}{-}{RRR} \\ % Ntilde - \testkern{LLL}{-}{079}{-}{RRR} \\ % O - \testkern{LLL}{-}{142}{-}{RRR} \\ % Ohungarumlaut - \testkern{LLL}{-}{210}{-}{RRR} \\ % Ograve - \testkern{LLL}{-}{211}{-}{RRR} \\ % Oacute - \testkern{LLL}{-}{212}{-}{RRR} \\ % Ocircumflex - \testkern{LLL}{-}{213}{-}{RRR} \\ % Otilde - \testkern{LLL}{-}{214}{-}{RRR} \\ % Odieresis - \testkern{LLL}{-}{215}{-}{RRR} \\ % OE - \testkern{LLL}{-}{216}{-}{RRR} \\ % Oslash - \testkern{LLL}{-}{080}{-}{RRR} \\ % P - \testkern{LLL}{-}{081}{-}{RRR} \\ % Q - \testkern{LLL}{-}{082}{-}{RRR} \\ % R - \testkern{LLL}{-}{143}{-}{RRR} \\ % Racute - \testkern{LLL}{-}{144}{-}{RRR} \\ % Rcaron - \testkern{LLL}{-}{083}{-}{RRR} \\ % S - \testkern{LLL}{-}{145}{-}{RRR} \\ % Sacute - \testkern{LLL}{-}{146}{-}{RRR} \\ % Scaron - \testkern{LLL}{-}{147}{-}{RRR} \\ % Scedilla - \testkern{LLL}{-}{223}{-}{RRR} \\ % SS - \testkern{LLL}{-}{036}{-}{RRR} \\ % dollar - \testkern{LLL}{-}{084}{-}{RRR} \\ % T - \testkern{LLL}{-}{148}{-}{RRR} \\ % Tcaron - \testkern{LLL}{-}{149}{-}{RRR} \\ % Tcedilla - \testkern{LLL}{-}{085}{-}{RRR} \\ % U - \testkern{LLL}{-}{150}{-}{RRR} \\ % Uhungarumlaut - \testkern{LLL}{-}{151}{-}{RRR} \\ % Uring - \testkern{LLL}{-}{217}{-}{RRR} \\ % Ugrave - \testkern{LLL}{-}{218}{-}{RRR} \\ % Uacute - \testkern{LLL}{-}{219}{-}{RRR} \\ % Ucircumflex - \testkern{LLL}{-}{220}{-}{RRR} \\ % Udieresis - \testkern{LLL}{-}{086}{-}{RRR} \\ % V - \testkern{LLL}{-}{087}{-}{RRR} \\ % W - \testkern{LLL}{-}{088}{-}{RRR} \\ % X - \testkern{LLL}{-}{089}{-}{RRR} \\ % Y - \testkern{LLL}{-}{152}{-}{RRR} \\ % Ydieresis - \testkern{LLL}{-}{221}{-}{RRR} \\ % Yacute - \testkern{LLL}{-}{090}{-}{RRR} \\ % Z - \testkern{LLL}{-}{153}{-}{RRR} \\ % Zacute - \testkern{LLL}{-}{154}{-}{RRR} \\ % Zcaron - \testkern{LLL}{-}{155}{-}{RRR} \\ % Zdotaccent - \testkern{LLL}{-}{141}{-}{RRR} \\ % Ng - \testkern{LLL}{-}{222}{-}{RRR} \\ % Thorn - \testkern{LLL}{-}{097}{-}{RRR} \\ % a - \testkern{LLL}{-}{160}{-}{RRR} \\ % abreve - \testkern{LLL}{-}{161}{-}{RRR} \\ % aogonek - \testkern{LLL}{-}{224}{-}{RRR} \\ % agrave - \testkern{LLL}{-}{225}{-}{RRR} \\ % aacute - \testkern{LLL}{-}{226}{-}{RRR} \\ % acircumflex - \testkern{LLL}{-}{227}{-}{RRR} \\ % atilde - \testkern{LLL}{-}{228}{-}{RRR} \\ % adieresis - \testkern{LLL}{-}{229}{-}{RRR} \\ % aring - \testkern{LLL}{-}{230}{-}{RRR} \\ % ae - \testkern{LLL}{-}{098}{-}{RRR} \\ % b - \testkern{LLL}{-}{099}{-}{RRR} \\ % c - \testkern{LLL}{-}{162}{-}{RRR} \\ % cacute - \testkern{LLL}{-}{163}{-}{RRR} \\ % ccaron - \testkern{LLL}{-}{231}{-}{RRR} \\ % ccedilla - \testkern{LLL}{-}{100}{-}{RRR} \\ % d - \testkern{LLL}{-}{158}{-}{RRR} \\ % dbar - \testkern{LLL}{-}{164}{-}{RRR} \\ % dcaron - \testkern{LLL}{-}{101}{-}{RRR} \\ % e - \testkern{LLL}{-}{165}{-}{RRR} \\ % ecaron - \testkern{LLL}{-}{166}{-}{RRR} \\ % eogonek - \testkern{LLL}{-}{232}{-}{RRR} \\ % egrave - \testkern{LLL}{-}{233}{-}{RRR} \\ % eacute - \testkern{LLL}{-}{234}{-}{RRR} \\ % ecircumflex - \testkern{LLL}{-}{235}{-}{RRR} \\ % edieresis - \testkern{LLL}{-}{102}{-}{RRR} \\ % f - \testkern{LLL}{-}{027}{-}{RRR} \\ % ff - \testkern{LLL}{-}{028}{-}{RRR} \\ % fi - \testkern{LLL}{-}{029}{-}{RRR} \\ % fl - \testkern{LLL}{-}{030}{-}{RRR} \\ % ffi - \testkern{LLL}{-}{031}{-}{RRR} \\ % ffl - \testkern{LLL}{-}{103}{-}{RRR} \\ % g - \testkern{LLL}{-}{167}{-}{RRR} \\ % gbreve - \testkern{LLL}{-}{104}{-}{RRR} \\ % h - \testkern{LLL}{-}{105}{-}{RRR} \\ % i - \testkern{LLL}{-}{025}{-}{RRR} \\ % dotlessi - \testkern{LLL}{-}{236}{-}{RRR} \\ % igrave - \testkern{LLL}{-}{237}{-}{RRR} \\ % iacute - \testkern{LLL}{-}{238}{-}{RRR} \\ % icircumflex - \testkern{LLL}{-}{239}{-}{RRR} \\ % idieresis - \testkern{LLL}{-}{188}{-}{RRR} \\ % ij - \testkern{LLL}{-}{106}{-}{RRR} \\ % j - \testkern{LLL}{-}{026}{-}{RRR} \\ % dotlessj - \testkern{LLL}{-}{107}{-}{RRR} \\ % k - \testkern{LLL}{-}{108}{-}{RRR} \\ % l - \testkern{LLL}{-}{168}{-}{RRR} \\ % lacute - \testkern{LLL}{-}{169}{-}{RRR} \\ % lcaron - \testkern{LLL}{-}{170}{-}{RRR} \\ % lslash - \testkern{LLL}{-}{109}{-}{RRR} \\ % m - \testkern{LLL}{-}{110}{-}{RRR} \\ % n - \testkern{LLL}{-}{171}{-}{RRR} \\ % nacute - \testkern{LLL}{-}{172}{-}{RRR} \\ % ncaron - \testkern{LLL}{-}{241}{-}{RRR} \\ % ntilde - \testkern{LLL}{-}{111}{-}{RRR} \\ % o - \testkern{LLL}{-}{174}{-}{RRR} \\ % ohungarumlaut - \testkern{LLL}{-}{242}{-}{RRR} \\ % ograve - \testkern{LLL}{-}{243}{-}{RRR} \\ % oacute - \testkern{LLL}{-}{244}{-}{RRR} \\ % ocircumflex - \testkern{LLL}{-}{245}{-}{RRR} \\ % otilde - \testkern{LLL}{-}{246}{-}{RRR} \\ % odieresis - \testkern{LLL}{-}{247}{-}{RRR} \\ % oe - \testkern{LLL}{-}{248}{-}{RRR} \\ % oslash - \testkern{LLL}{-}{112}{-}{RRR} \\ % p - \testkern{LLL}{-}{113}{-}{RRR} \\ % q - \testkern{LLL}{-}{114}{-}{RRR} \\ % r - \testkern{LLL}{-}{175}{-}{RRR} \\ % racute - \testkern{LLL}{-}{176}{-}{RRR} \\ % rcaron - \testkern{LLL}{-}{115}{-}{RRR} \\ % s - \testkern{LLL}{-}{177}{-}{RRR} \\ % sacute - \testkern{LLL}{-}{178}{-}{RRR} \\ % scaron - \testkern{LLL}{-}{179}{-}{RRR} \\ % scedilla - \testkern{LLL}{-}{116}{-}{RRR} \\ % t - \testkern{LLL}{-}{180}{-}{RRR} \\ % tcaron - \testkern{LLL}{-}{181}{-}{RRR} \\ % tcedilla - \testkern{LLL}{-}{117}{-}{RRR} \\ % u - \testkern{LLL}{-}{182}{-}{RRR} \\ % uhungarumlaut - \testkern{LLL}{-}{183}{-}{RRR} \\ % uring - \testkern{LLL}{-}{249}{-}{RRR} \\ % ugrave - \testkern{LLL}{-}{250}{-}{RRR} \\ % uacute - \testkern{LLL}{-}{251}{-}{RRR} \\ % ucircumflex - \testkern{LLL}{-}{252}{-}{RRR} \\ % udieresis - \testkern{LLL}{-}{118}{-}{RRR} \\ % v - \testkern{LLL}{-}{119}{-}{RRR} \\ % w - \testkern{LLL}{-}{120}{-}{RRR} \\ % x - \testkern{LLL}{-}{121}{-}{RRR} \\ % y - \testkern{LLL}{-}{184}{-}{RRR} \\ % ydieresis - \testkern{LLL}{-}{253}{-}{RRR} \\ % yacute - \testkern{LLL}{-}{122}{-}{RRR} \\ % z - \testkern{LLL}{-}{185}{-}{RRR} \\ % zacute - \testkern{LLL}{-}{186}{-}{RRR} \\ % zcaron - \testkern{LLL}{-}{187}{-}{RRR} \\ % zdotaccent - \testkern{LLL}{-}{240}{-}{RRR} \\ % eth - \testkern{LLL}{-}{173}{-}{RRR} \\ % ng - \testkern{LLL}{-}{254}{-}{RRR} \\ % thorn - \testkern{LLL}{-}{255}{-}{RRR} \\ % germandbls -\end{kerntable} - -\end{document} -% -% \end{macrocode} -% -% \subsubsection{TS1 encoding} -% -% \begin{macrocode} -%<*template&ts1> -\listfiles -%% Replace the `XXX' in the next line by the 3- or 4-character long -%% abbreviation for your font. -\documentclass[family=XXX]{kerntest} - -%% Replace the settings by these you want to test. -\kernsetup{encoding=TS1,series=m,shape=n,example=hello} -\kernsetup{size=14.40pt,baselineskip=16.5pt,papersize=a4paper} - -%% The next line can be used to add a name suffix to the output |mtx| file. -%% \kernsetup{extraname=normal} - -%% If you are using a font with different design sizes and if you want -%% to test one design size scaled to another one, you may input a -%% modified fd file for your font. To generate this new fd file, just -%% copy the original one, rename it, and modify the entries for the -%% font shapes to use the design size you want to test. -%% \input{t1XXX-1200.fd} - -\begin{document} - -%% This table of characters is sorted by similar glyphs, not by the -%% encoding. -%% Replace `{LLL}' and `{RRR}' in columns 1 resp. 5 by these glyphs -%% that shall be tested. -\begin{kerntable} - \testkern{LLL}{-}{000}{-}{RRR} \\ % capitalgrave - \testkern{LLL}{-}{001}{-}{RRR} \\ % capitalacute - \testkern{LLL}{-}{002}{-}{RRR} \\ % capitalcircumflex - \testkern{LLL}{-}{003}{-}{RRR} \\ % capitaltilde - \testkern{LLL}{-}{004}{-}{RRR} \\ % capitaldieresis - \testkern{LLL}{-}{005}{-}{RRR} \\ % capitalhungarumlaut - \testkern{LLL}{-}{006}{-}{RRR} \\ % capitalring - \testkern{LLL}{-}{007}{-}{RRR} \\ % capitalcaron - \testkern{LLL}{-}{008}{-}{RRR} \\ % capitalbreve - \testkern{LLL}{-}{009}{-}{RRR} \\ % capitalmacron - \testkern{LLL}{-}{010}{-}{RRR} \\ % capitaldotaccent - \testkern{LLL}{-}{011}{-}{RRR} \\ % cedilla - \testkern{LLL}{-}{012}{-}{RRR} \\ % ogonek - \testkern{LLL}{-}{013}{-}{RRR} \\ % quotesinglbase - \testkern{LLL}{-}{014}{-}{RRR} \\ - \testkern{LLL}{-}{015}{-}{RRR} \\ - \testkern{LLL}{-}{016}{-}{RRR} \\ - \testkern{LLL}{-}{017}{-}{RRR} \\ - \testkern{LLL}{-}{018}{-}{RRR} \\ % quotedblbase - \testkern{LLL}{-}{019}{-}{RRR} \\ - \testkern{LLL}{-}{020}{-}{RRR} \\ - \testkern{LLL}{-}{021}{-}{RRR} \\ % twelveudash - \testkern{LLL}{-}{022}{-}{RRR} \\ % threequartersemdash - \testkern{LLL}{-}{023}{-}{RRR} \\ % capitalcompwordmark - \testkern{LLL}{-}{024}{-}{RRR} \\ % arrowleft - \testkern{LLL}{-}{025}{-}{RRR} \\ % arrowright - \testkern{LLL}{-}{026}{-}{RRR} \\ % tieaccentlowercase - \testkern{LLL}{-}{027}{-}{RRR} \\ % tieaccentcapital - \testkern{LLL}{-}{028}{-}{RRR} \\ % newtieaccentlowercase - \testkern{LLL}{-}{029}{-}{RRR} \\ % newtieaccentcapital - \testkern{LLL}{-}{030}{-}{RRR} \\ % ascendercompwordmark - \testkern{LLL}{-}{031}{-}{RRR} \\ % blank - \testkern{LLL}{-}{032}{-}{RRR} \\ - \testkern{LLL}{-}{033}{-}{RRR} \\ - \testkern{LLL}{-}{034}{-}{RRR} \\ - \testkern{LLL}{-}{035}{-}{RRR} \\ - \testkern{LLL}{-}{036}{-}{RRR} \\ % dollar - \testkern{LLL}{-}{037}{-}{RRR} \\ - \testkern{LLL}{-}{038}{-}{RRR} \\ - \testkern{LLL}{-}{039}{-}{RRR} \\ % quotesingle - \testkern{LLL}{-}{040}{-}{RRR} \\ - \testkern{LLL}{-}{041}{-}{RRR} \\ - \testkern{LLL}{-}{042}{-}{RRR} \\ % asteriskcentered - \testkern{LLL}{-}{043}{-}{RRR} \\ - \testkern{LLL}{-}{044}{-}{RRR} \\ % comma - \testkern{LLL}{-}{045}{-}{RRR} \\ % hyphendbl - \testkern{LLL}{-}{046}{-}{RRR} \\ % period - \testkern{LLL}{-}{047}{-}{RRR} \\ % fraction - \testkern{LLL}{-}{048}{-}{RRR} \\ % zerooldstyle - \testkern{LLL}{-}{049}{-}{RRR} \\ % oneoldstyle - \testkern{LLL}{-}{050}{-}{RRR} \\ % twooldstyle - \testkern{LLL}{-}{051}{-}{RRR} \\ % threeoldstyle - \testkern{LLL}{-}{052}{-}{RRR} \\ % fouroldstyle - \testkern{LLL}{-}{053}{-}{RRR} \\ % fiveoldstyle - \testkern{LLL}{-}{054}{-}{RRR} \\ % sixoldstyle - \testkern{LLL}{-}{055}{-}{RRR} \\ % sevenoldstyle - \testkern{LLL}{-}{056}{-}{RRR} \\ % eightoldstyle - \testkern{LLL}{-}{057}{-}{RRR} \\ % nineoldstyle - \testkern{LLL}{-}{058}{-}{RRR} \\ - \testkern{LLL}{-}{059}{-}{RRR} \\ - \testkern{LLL}{-}{060}{-}{RRR} \\ % angbracketleft - \testkern{LLL}{-}{061}{-}{RRR} \\ % minus - \testkern{LLL}{-}{062}{-}{RRR} \\ % angbracketright - \testkern{LLL}{-}{063}{-}{RRR} \\ - \testkern{LLL}{-}{064}{-}{RRR} \\ - \testkern{LLL}{-}{065}{-}{RRR} \\ - \testkern{LLL}{-}{066}{-}{RRR} \\ - \testkern{LLL}{-}{067}{-}{RRR} \\ - \testkern{LLL}{-}{068}{-}{RRR} \\ - \testkern{LLL}{-}{069}{-}{RRR} \\ - \testkern{LLL}{-}{070}{-}{RRR} \\ - \testkern{LLL}{-}{071}{-}{RRR} \\ - \testkern{LLL}{-}{072}{-}{RRR} \\ - \testkern{LLL}{-}{073}{-}{RRR} \\ - \testkern{LLL}{-}{074}{-}{RRR} \\ - \testkern{LLL}{-}{075}{-}{RRR} \\ - \testkern{LLL}{-}{076}{-}{RRR} \\ - \testkern{LLL}{-}{077}{-}{RRR} \\ % Omegainv - \testkern{LLL}{-}{078}{-}{RRR} \\ - \testkern{LLL}{-}{079}{-}{RRR} \\ % bigcircle - \testkern{LLL}{-}{080}{-}{RRR} \\ - \testkern{LLL}{-}{081}{-}{RRR} \\ - \testkern{LLL}{-}{082}{-}{RRR} \\ - \testkern{LLL}{-}{083}{-}{RRR} \\ - \testkern{LLL}{-}{084}{-}{RRR} \\ - \testkern{LLL}{-}{085}{-}{RRR} \\ - \testkern{LLL}{-}{086}{-}{RRR} \\ - \testkern{LLL}{-}{087}{-}{RRR} \\ % Omega - \testkern{LLL}{-}{088}{-}{RRR} \\ - \testkern{LLL}{-}{089}{-}{RRR} \\ - \testkern{LLL}{-}{090}{-}{RRR} \\ - \testkern{LLL}{-}{091}{-}{RRR} \\ % openbracketleft - \testkern{LLL}{-}{092}{-}{RRR} \\ - \testkern{LLL}{-}{093}{-}{RRR} \\ % openbracketright - \testkern{LLL}{-}{094}{-}{RRR} \\ % arrowup - \testkern{LLL}{-}{095}{-}{RRR} \\ % arrowdown - \testkern{LLL}{-}{096}{-}{RRR} \\ % asciigrave - \testkern{LLL}{-}{097}{-}{RRR} \\ - \testkern{LLL}{-}{098}{-}{RRR} \\ % born - \testkern{LLL}{-}{099}{-}{RRR} \\ % divorced - \testkern{LLL}{-}{100}{-}{RRR} \\ % died - \testkern{LLL}{-}{101}{-}{RRR} \\ - \testkern{LLL}{-}{102}{-}{RRR} \\ - \testkern{LLL}{-}{103}{-}{RRR} \\ - \testkern{LLL}{-}{104}{-}{RRR} \\ - \testkern{LLL}{-}{105}{-}{RRR} \\ - \testkern{LLL}{-}{106}{-}{RRR} \\ - \testkern{LLL}{-}{107}{-}{RRR} \\ - \testkern{LLL}{-}{108}{-}{RRR} \\ % leaf - \testkern{LLL}{-}{109}{-}{RRR} \\ % married - \testkern{LLL}{-}{110}{-}{RRR} \\ % musicalnote - \testkern{LLL}{-}{111}{-}{RRR} \\ - \testkern{LLL}{-}{112}{-}{RRR} \\ - \testkern{LLL}{-}{113}{-}{RRR} \\ - \testkern{LLL}{-}{114}{-}{RRR} \\ - \testkern{LLL}{-}{115}{-}{RRR} \\ - \testkern{LLL}{-}{116}{-}{RRR} \\ - \testkern{LLL}{-}{117}{-}{RRR} \\ - \testkern{LLL}{-}{118}{-}{RRR} \\ - \testkern{LLL}{-}{119}{-}{RRR} \\ - \testkern{LLL}{-}{120}{-}{RRR} \\ - \testkern{LLL}{-}{121}{-}{RRR} \\ - \testkern{LLL}{-}{122}{-}{RRR} \\ - \testkern{LLL}{-}{123}{-}{RRR} \\ - \testkern{LLL}{-}{124}{-}{RRR} \\ - \testkern{LLL}{-}{125}{-}{RRR} \\ - \testkern{LLL}{-}{126}{-}{RRR} \\ % tildelow - \testkern{LLL}{-}{127}{-}{RRR} \\ % hyphendblchar - \testkern{LLL}{-}{128}{-}{RRR} \\ % asciibreve - \testkern{LLL}{-}{129}{-}{RRR} \\ % asciicaron - \testkern{LLL}{-}{130}{-}{RRR} \\ % asciiacutedbl - \testkern{LLL}{-}{131}{-}{RRR} \\ % asciigravedbl - \testkern{LLL}{-}{132}{-}{RRR} \\ % dagger - \testkern{LLL}{-}{133}{-}{RRR} \\ % daggerdbl - \testkern{LLL}{-}{134}{-}{RRR} \\ % bardbl - \testkern{LLL}{-}{135}{-}{RRR} \\ % perthousand - \testkern{LLL}{-}{136}{-}{RRR} \\ % bullet - \testkern{LLL}{-}{137}{-}{RRR} \\ % centigrade - \testkern{LLL}{-}{138}{-}{RRR} \\ % dollaroldstyle - \testkern{LLL}{-}{139}{-}{RRR} \\ % centoldstyle - \testkern{LLL}{-}{140}{-}{RRR} \\ % florin - \testkern{LLL}{-}{141}{-}{RRR} \\ % colonmonetary - \testkern{LLL}{-}{142}{-}{RRR} \\ % won - \testkern{LLL}{-}{143}{-}{RRR} \\ % naira - \testkern{LLL}{-}{144}{-}{RRR} \\ % guarani - \testkern{LLL}{-}{145}{-}{RRR} \\ % peso - \testkern{LLL}{-}{146}{-}{RRR} \\ % lira - \testkern{LLL}{-}{147}{-}{RRR} \\ % recipe - \testkern{LLL}{-}{148}{-}{RRR} \\ % interrobang - \testkern{LLL}{-}{149}{-}{RRR} \\ % interrobangdown - \testkern{LLL}{-}{150}{-}{RRR} \\ % dong - \testkern{LLL}{-}{151}{-}{RRR} \\ % trademark - \testkern{LLL}{-}{152}{-}{RRR} \\ % pertenthousand - \testkern{LLL}{-}{153}{-}{RRR} \\ % pilcrow - \testkern{LLL}{-}{154}{-}{RRR} \\ % baht - \testkern{LLL}{-}{155}{-}{RRR} \\ % numero - \testkern{LLL}{-}{156}{-}{RRR} \\ % discount - \testkern{LLL}{-}{157}{-}{RRR} \\ % estimated - \testkern{LLL}{-}{158}{-}{RRR} \\ % openbullet - \testkern{LLL}{-}{159}{-}{RRR} \\ % servicemark - \testkern{LLL}{-}{160}{-}{RRR} \\ % quillbracketleft - \testkern{LLL}{-}{161}{-}{RRR} \\ % quillbracketright - \testkern{LLL}{-}{162}{-}{RRR} \\ % cent - \testkern{LLL}{-}{163}{-}{RRR} \\ % sterling - \testkern{LLL}{-}{164}{-}{RRR} \\ % currency - \testkern{LLL}{-}{165}{-}{RRR} \\ % yen - \testkern{LLL}{-}{166}{-}{RRR} \\ % brokenbar - \testkern{LLL}{-}{167}{-}{RRR} \\ % section - \testkern{LLL}{-}{168}{-}{RRR} \\ % asciidieresis - \testkern{LLL}{-}{169}{-}{RRR} \\ % copyright - \testkern{LLL}{-}{170}{-}{RRR} \\ % ordfeminine - \testkern{LLL}{-}{171}{-}{RRR} \\ % copyleft - \testkern{LLL}{-}{172}{-}{RRR} \\ % logicalnot - \testkern{LLL}{-}{173}{-}{RRR} \\ % circledP - \testkern{LLL}{-}{174}{-}{RRR} \\ % registered - \testkern{LLL}{-}{175}{-}{RRR} \\ % asciimacron - \testkern{LLL}{-}{176}{-}{RRR} \\ % degree - \testkern{LLL}{-}{177}{-}{RRR} \\ % plusminus - \testkern{LLL}{-}{178}{-}{RRR} \\ % twosuperior - \testkern{LLL}{-}{179}{-}{RRR} \\ % threesuperior - \testkern{LLL}{-}{180}{-}{RRR} \\ % asciiacute - \testkern{LLL}{-}{181}{-}{RRR} \\ % mu - \testkern{LLL}{-}{182}{-}{RRR} \\ % paragraph - \testkern{LLL}{-}{183}{-}{RRR} \\ % periodcentered - \testkern{LLL}{-}{184}{-}{RRR} \\ % referencemark - \testkern{LLL}{-}{185}{-}{RRR} \\ % onesuperior - \testkern{LLL}{-}{186}{-}{RRR} \\ % ordmasculine - \testkern{LLL}{-}{187}{-}{RRR} \\ % radical - \testkern{LLL}{-}{188}{-}{RRR} \\ % onequarter - \testkern{LLL}{-}{189}{-}{RRR} \\ % onehalf - \testkern{LLL}{-}{190}{-}{RRR} \\ % threequarters - \testkern{LLL}{-}{191}{-}{RRR} \\ % euro - \testkern{LLL}{-}{192}{-}{RRR} \\ - \testkern{LLL}{-}{193}{-}{RRR} \\ - \testkern{LLL}{-}{194}{-}{RRR} \\ - \testkern{LLL}{-}{195}{-}{RRR} \\ - \testkern{LLL}{-}{196}{-}{RRR} \\ - \testkern{LLL}{-}{197}{-}{RRR} \\ - \testkern{LLL}{-}{198}{-}{RRR} \\ - \testkern{LLL}{-}{199}{-}{RRR} \\ - \testkern{LLL}{-}{200}{-}{RRR} \\ - \testkern{LLL}{-}{201}{-}{RRR} \\ - \testkern{LLL}{-}{202}{-}{RRR} \\ - \testkern{LLL}{-}{203}{-}{RRR} \\ - \testkern{LLL}{-}{204}{-}{RRR} \\ - \testkern{LLL}{-}{205}{-}{RRR} \\ - \testkern{LLL}{-}{206}{-}{RRR} \\ - \testkern{LLL}{-}{207}{-}{RRR} \\ - \testkern{LLL}{-}{208}{-}{RRR} \\ - \testkern{LLL}{-}{209}{-}{RRR} \\ - \testkern{LLL}{-}{210}{-}{RRR} \\ - \testkern{LLL}{-}{211}{-}{RRR} \\ - \testkern{LLL}{-}{212}{-}{RRR} \\ - \testkern{LLL}{-}{213}{-}{RRR} \\ - \testkern{LLL}{-}{214}{-}{RRR} \\ % multiply - \testkern{LLL}{-}{215}{-}{RRR} \\ - \testkern{LLL}{-}{216}{-}{RRR} \\ - \testkern{LLL}{-}{217}{-}{RRR} \\ - \testkern{LLL}{-}{218}{-}{RRR} \\ - \testkern{LLL}{-}{219}{-}{RRR} \\ - \testkern{LLL}{-}{220}{-}{RRR} \\ - \testkern{LLL}{-}{221}{-}{RRR} \\ - \testkern{LLL}{-}{222}{-}{RRR} \\ - \testkern{LLL}{-}{223}{-}{RRR} \\ - \testkern{LLL}{-}{224}{-}{RRR} \\ - \testkern{LLL}{-}{225}{-}{RRR} \\ - \testkern{LLL}{-}{226}{-}{RRR} \\ - \testkern{LLL}{-}{227}{-}{RRR} \\ - \testkern{LLL}{-}{228}{-}{RRR} \\ - \testkern{LLL}{-}{229}{-}{RRR} \\ - \testkern{LLL}{-}{230}{-}{RRR} \\ - \testkern{LLL}{-}{231}{-}{RRR} \\ - \testkern{LLL}{-}{232}{-}{RRR} \\ - \testkern{LLL}{-}{233}{-}{RRR} \\ - \testkern{LLL}{-}{234}{-}{RRR} \\ - \testkern{LLL}{-}{235}{-}{RRR} \\ - \testkern{LLL}{-}{236}{-}{RRR} \\ - \testkern{LLL}{-}{237}{-}{RRR} \\ - \testkern{LLL}{-}{238}{-}{RRR} \\ - \testkern{LLL}{-}{239}{-}{RRR} \\ - \testkern{LLL}{-}{240}{-}{RRR} \\ - \testkern{LLL}{-}{241}{-}{RRR} \\ - \testkern{LLL}{-}{242}{-}{RRR} \\ - \testkern{LLL}{-}{243}{-}{RRR} \\ - \testkern{LLL}{-}{244}{-}{RRR} \\ - \testkern{LLL}{-}{245}{-}{RRR} \\ - \testkern{LLL}{-}{246}{-}{RRR} \\ % divide - \testkern{LLL}{-}{247}{-}{RRR} \\ - \testkern{LLL}{-}{248}{-}{RRR} \\ - \testkern{LLL}{-}{249}{-}{RRR} \\ - \testkern{LLL}{-}{250}{-}{RRR} \\ - \testkern{LLL}{-}{251}{-}{RRR} \\ - \testkern{LLL}{-}{252}{-}{RRR} \\ - \testkern{LLL}{-}{253}{-}{RRR} \\ - \testkern{LLL}{-}{254}{-}{RRR} \\ - \testkern{LLL}{-}{255}{-}{RRR} \\ -\end{kerntable} - -\end{document} -% -% \end{macrocode} -% -% \subsubsection{OT1 encoding} -% -% \begin{macrocode} -%<*template&ot1> -\listfiles -%% Replace the `XXX' in the next line by the 3- or 4-character long -%% abbreviation for your font. -\documentclass[family=XXX]{kerntest} - -%% Replace the settings by these you want to test. -\kernsetup{encoding=OT1,series=m,shape=n,example=hello} -\kernsetup{size=14.40pt,baselineskip=16.5pt,papersize=a4paper} - -%% The next line can be used to add a name suffix to the output mtx file. -%% \kernsetup{extraname=normal} - -%% Set encoding parameters. -%% Set ligaturing: 2=all, 1=some, 0=none -%% \encodingsetup{ligaturing=2} -%% Normal: dollar, Italic: sterling -%% \encodingsetup{italicizing=false} - -%% If you are using a font with different design sizes and if you want -%% to test one design size scaled to another one, you may input a -%% modified fd file for your font. To generate this new fd file, just -%% copy the original one, rename it, and modify the entries for the -%% font shapes to use the design size you want to test. -%% \input{ot1XXX-1200.fd} - -%% The following lines show some possible glyph classes. You should -%% add all classes you need. -\newglyphclass{right}{E}{E,AE,OE} - -\newglyphclass{left}{H}{B,D,F,H,I,J,K,L,N,P,R} - -\newglyphclass{right}{H}{H,I,J,N} - -\newglyphclass{right}{S}{S,dollar} -\newglyphclass{left}{S}{S,dollar} - -\newglyphclass{left}{a}{a,ae} -\newglyphclass{right}{e}{e,ae,oe} - -\newglyphclass{left}{f}{f,ff,fi,fl,ffi,ffl} -\newglyphclass{right}{f}{f,ff} - -\newglyphclass{right}{i}{i,fi,ffi,dotlessi} -\newglyphclass{left}{i}{i,dotlessi} - -\newglyphclass{right}{l}{fl,ffl,l} - -\newglyphclass{right}{m}{m,n} -\newglyphclass{left}{m}{m,n} - -\newglyphclass{left}{o}{o,oe} - -\begin{document} - -%% This table of characters is sorted by similar glyphs, not by the -%% encoding. -%% Replace `{LLL}' and `{RRR}' in columns 1 resp. 5 by these glyphs -%% that shall be tested. -\begin{kerntable} - \testkern{LLL}{-}{018}{-}{RRR} \\ % grave - \testkern{LLL}{-}{019}{-}{RRR} \\ % acute - \testkern{LLL}{-}{094}{-}{RRR} \\ % circumflex - \testkern{LLL}{-}{126}{-}{RRR} \\ % tilde - \testkern{LLL}{-}{127}{-}{RRR} \\ % dieresis - \testkern{LLL}{-}{125}{-}{RRR} \\ % hungarumlaut/braceright - \testkern{LLL}{-}{023}{-}{RRR} \\ % ringfitted - \testkern{LLL}{-}{020}{-}{RRR} \\ % caron - \testkern{LLL}{-}{021}{-}{RRR} \\ % breve - \testkern{LLL}{-}{022}{-}{RRR} \\ % macron - \testkern{LLL}{-}{095}{-}{RRR} \\ % dotaccent/underscore - \testkern{LLL}{-}{024}{-}{RRR} \\ % cedilla - \testkern{LLL}{-}{042}{-}{RRR} \\ % asterisk - \testkern{LLL}{-}{032}{-}{RRR} \\ % lslashslash/visiblespace - \testkern{LLL}{-}{096}{-}{RRR} \\ % quoteleft - \testkern{LLL}{-}{039}{-}{RRR} \\ % quoteright - \testkern{LLL}{-}{092}{-}{RRR} \\ % quotedblleft - \testkern{LLL}{-}{034}{-}{RRR} \\ % quotedblright/quotedbl - \testkern{LLL}{-}{046}{-}{RRR} \\ % period - \testkern{LLL}{-}{044}{-}{RRR} \\ % comma - \testkern{LLL}{-}{058}{-}{RRR} \\ % colon - \testkern{LLL}{-}{059}{-}{RRR} \\ % semicolon - \testkern{LLL}{-}{033}{-}{RRR} \\ % exclam - \testkern{LLL}{-}{063}{-}{RRR} \\ % question - \testkern{LLL}{-}{060}{-}{RRR} \\ % exclamdown/less - \testkern{LLL}{-}{062}{-}{RRR} \\ % questiondown/greater - \testkern{LLL}{-}{045}{-}{RRR} \\ % hyphen - \testkern{LLL}{-}{123}{-}{RRR} \\ % rangedash/braceleft - \testkern{LLL}{-}{124}{-}{RRR} \\ % punctdash/bar - \testkern{LLL}{-}{043}{-}{RRR} \\ % plus - \testkern{LLL}{-}{061}{-}{RRR} \\ % equal - \testkern{LLL}{-}{047}{-}{RRR} \\ % slash - \testkern{LLL}{-}{040}{-}{RRR} \\ % parenleft - \testkern{LLL}{-}{041}{-}{RRR} \\ % parenright - \testkern{LLL}{-}{091}{-}{RRR} \\ % bracketleft - \testkern{LLL}{-}{093}{-}{RRR} \\ % bracketright - \testkern{LLL}{-}{035}{-}{RRR} \\ % numbersign - \testkern{LLL}{-}{037}{-}{RRR} \\ % percent - \testkern{LLL}{-}{038}{-}{RRR} \\ % ampersand - \testkern{LLL}{-}{064}{-}{RRR} \\ % at - \testkern{LLL}{-}{048}{-}{RRR} \\ % zero - \testkern{LLL}{-}{049}{-}{RRR} \\ % one - \testkern{LLL}{-}{050}{-}{RRR} \\ % two - \testkern{LLL}{-}{051}{-}{RRR} \\ % three - \testkern{LLL}{-}{052}{-}{RRR} \\ % four - \testkern{LLL}{-}{053}{-}{RRR} \\ % five - \testkern{LLL}{-}{054}{-}{RRR} \\ % six - \testkern{LLL}{-}{055}{-}{RRR} \\ % seven - \testkern{LLL}{-}{056}{-}{RRR} \\ % eight - \testkern{LLL}{-}{057}{-}{RRR} \\ % nine - \testkern{LLL}{-}{065}{-}{RRR} \\ % A - \testkern{LLL}{-}{029}{-}{RRR} \\ % AE - \testkern{LLL}{-}{066}{-}{RRR} \\ % B - \testkern{LLL}{-}{067}{-}{RRR} \\ % C - \testkern{LLL}{-}{068}{-}{RRR} \\ % D - \testkern{LLL}{-}{069}{-}{RRR} \\ % E - \testkern{LLL}{-}{070}{-}{RRR} \\ % F - \testkern{LLL}{-}{071}{-}{RRR} \\ % G - \testkern{LLL}{-}{072}{-}{RRR} \\ % H - \testkern{LLL}{-}{073}{-}{RRR} \\ % I - \testkern{LLL}{-}{074}{-}{RRR} \\ % J - \testkern{LLL}{-}{075}{-}{RRR} \\ % K - \testkern{LLL}{-}{076}{-}{RRR} \\ % L - \testkern{LLL}{-}{138}{-}{RRR} \\ % Lslash - \testkern{LLL}{-}{077}{-}{RRR} \\ % M - \testkern{LLL}{-}{078}{-}{RRR} \\ % N - \testkern{LLL}{-}{079}{-}{RRR} \\ % O - \testkern{LLL}{-}{030}{-}{RRR} \\ % OE - \testkern{LLL}{-}{031}{-}{RRR} \\ % Oslash - \testkern{LLL}{-}{080}{-}{RRR} \\ % P - \testkern{LLL}{-}{081}{-}{RRR} \\ % Q - \testkern{LLL}{-}{082}{-}{RRR} \\ % R - \testkern{LLL}{-}{083}{-}{RRR} \\ % S - \testkern{LLL}{-}{036}{-}{RRR} \\ % dollar/sterling - \testkern{LLL}{-}{084}{-}{RRR} \\ % T - \testkern{LLL}{-}{085}{-}{RRR} \\ % U - \testkern{LLL}{-}{086}{-}{RRR} \\ % V - \testkern{LLL}{-}{087}{-}{RRR} \\ % W - \testkern{LLL}{-}{088}{-}{RRR} \\ % X - \testkern{LLL}{-}{089}{-}{RRR} \\ % Y - \testkern{LLL}{-}{090}{-}{RRR} \\ % Z - \testkern{LLL}{-}{097}{-}{RRR} \\ % a - \testkern{LLL}{-}{026}{-}{RRR} \\ % ae - \testkern{LLL}{-}{098}{-}{RRR} \\ % b - \testkern{LLL}{-}{099}{-}{RRR} \\ % c - \testkern{LLL}{-}{100}{-}{RRR} \\ % d - \testkern{LLL}{-}{101}{-}{RRR} \\ % e - \testkern{LLL}{-}{102}{-}{RRR} \\ % f - \testkern{LLL}{-}{011}{-}{RRR} \\ % ff/arrowup - \testkern{LLL}{-}{012}{-}{RRR} \\ % fi/arrowdown - \testkern{LLL}{-}{013}{-}{RRR} \\ % fl/quotesingle - \testkern{LLL}{-}{014}{-}{RRR} \\ % ffi/exclamdown - \testkern{LLL}{-}{015}{-}{RRR} \\ % ffl/questiondown - \testkern{LLL}{-}{103}{-}{RRR} \\ % g - \testkern{LLL}{-}{104}{-}{RRR} \\ % h - \testkern{LLL}{-}{105}{-}{RRR} \\ % i - \testkern{LLL}{-}{016}{-}{RRR} \\ % dotlessi - \testkern{LLL}{-}{025}{-}{RRR} \\ % germandbls - \testkern{LLL}{-}{106}{-}{RRR} \\ % j - \testkern{LLL}{-}{017}{-}{RRR} \\ % dotlessj - \testkern{LLL}{-}{107}{-}{RRR} \\ % k - \testkern{LLL}{-}{108}{-}{RRR} \\ % l - \testkern{LLL}{-}{170}{-}{RRR} \\ % lslash - \testkern{LLL}{-}{109}{-}{RRR} \\ % m - \testkern{LLL}{-}{110}{-}{RRR} \\ % n - \testkern{LLL}{-}{111}{-}{RRR} \\ % o - \testkern{LLL}{-}{027}{-}{RRR} \\ % oe - \testkern{LLL}{-}{028}{-}{RRR} \\ % oslash - \testkern{LLL}{-}{112}{-}{RRR} \\ % p - \testkern{LLL}{-}{113}{-}{RRR} \\ % q - \testkern{LLL}{-}{114}{-}{RRR} \\ % r - \testkern{LLL}{-}{115}{-}{RRR} \\ % s - \testkern{LLL}{-}{116}{-}{RRR} \\ % t - \testkern{LLL}{-}{117}{-}{RRR} \\ % u - \testkern{LLL}{-}{118}{-}{RRR} \\ % v - \testkern{LLL}{-}{119}{-}{RRR} \\ % w - \testkern{LLL}{-}{120}{-}{RRR} \\ % x - \testkern{LLL}{-}{121}{-}{RRR} \\ % y - \testkern{LLL}{-}{122}{-}{RRR} \\ % z - \testkern{LLL}{-}{000}{-}{RRR} \\ % Gamma - \testkern{LLL}{-}{001}{-}{RRR} \\ % Delta - \testkern{LLL}{-}{002}{-}{RRR} \\ % Theta - \testkern{LLL}{-}{003}{-}{RRR} \\ % Lambda - \testkern{LLL}{-}{004}{-}{RRR} \\ % Xi - \testkern{LLL}{-}{005}{-}{RRR} \\ % Pi - \testkern{LLL}{-}{006}{-}{RRR} \\ % Sigma - \testkern{LLL}{-}{007}{-}{RRR} \\ % Upsilon - \testkern{LLL}{-}{008}{-}{RRR} \\ % Phi - \testkern{LLL}{-}{009}{-}{RRR} \\ % Psi - \testkern{LLL}{-}{010}{-}{RRR} \\ % Omega -\iffalse - \testkern{LLL}{-}{128}{-}{RRR} \\ % .notdef. - \testkern{LLL}{-}{129}{-}{RRR} \\ % .notdef. - \testkern{LLL}{-}{130}{-}{RRR} \\ % .notdef. - \testkern{LLL}{-}{131}{-}{RRR} \\ % .notdef. - \testkern{LLL}{-}{132}{-}{RRR} \\ % .notdef. - \testkern{LLL}{-}{133}{-}{RRR} \\ % .notdef. - \testkern{LLL}{-}{134}{-}{RRR} \\ % .notdef. - \testkern{LLL}{-}{135}{-}{RRR} \\ % .notdef. - \testkern{LLL}{-}{136}{-}{RRR} \\ % .notdef. - \testkern{LLL}{-}{137}{-}{RRR} \\ % .notdef. - \testkern{LLL}{-}{139}{-}{RRR} \\ % .notdef. - \testkern{LLL}{-}{140}{-}{RRR} \\ % .notdef. - \testkern{LLL}{-}{141}{-}{RRR} \\ % .notdef. - \testkern{LLL}{-}{142}{-}{RRR} \\ % .notdef. - \testkern{LLL}{-}{143}{-}{RRR} \\ % .notdef. - \testkern{LLL}{-}{144}{-}{RRR} \\ % .notdef. - \testkern{LLL}{-}{145}{-}{RRR} \\ % .notdef. - \testkern{LLL}{-}{146}{-}{RRR} \\ % .notdef. - \testkern{LLL}{-}{147}{-}{RRR} \\ % .notdef. - \testkern{LLL}{-}{148}{-}{RRR} \\ % .notdef. - \testkern{LLL}{-}{149}{-}{RRR} \\ % .notdef. - \testkern{LLL}{-}{150}{-}{RRR} \\ % .notdef. - \testkern{LLL}{-}{151}{-}{RRR} \\ % .notdef. - \testkern{LLL}{-}{152}{-}{RRR} \\ % .notdef. - \testkern{LLL}{-}{153}{-}{RRR} \\ % .notdef. - \testkern{LLL}{-}{154}{-}{RRR} \\ % .notdef. - \testkern{LLL}{-}{155}{-}{RRR} \\ % .notdef. - \testkern{LLL}{-}{156}{-}{RRR} \\ % .notdef. - \testkern{LLL}{-}{157}{-}{RRR} \\ % .notdef. - \testkern{LLL}{-}{158}{-}{RRR} \\ % .notdef. - \testkern{LLL}{-}{159}{-}{RRR} \\ % .notdef. - \testkern{LLL}{-}{160}{-}{RRR} \\ % .notdef. - \testkern{LLL}{-}{161}{-}{RRR} \\ % .notdef. - \testkern{LLL}{-}{162}{-}{RRR} \\ % .notdef. - \testkern{LLL}{-}{163}{-}{RRR} \\ % .notdef. - \testkern{LLL}{-}{164}{-}{RRR} \\ % .notdef. - \testkern{LLL}{-}{165}{-}{RRR} \\ % .notdef. - \testkern{LLL}{-}{166}{-}{RRR} \\ % .notdef. - \testkern{LLL}{-}{167}{-}{RRR} \\ % .notdef. - \testkern{LLL}{-}{168}{-}{RRR} \\ % .notdef. - \testkern{LLL}{-}{169}{-}{RRR} \\ % .notdef. - \testkern{LLL}{-}{171}{-}{RRR} \\ % .notdef. - \testkern{LLL}{-}{172}{-}{RRR} \\ % .notdef. - \testkern{LLL}{-}{173}{-}{RRR} \\ % .notdef. - \testkern{LLL}{-}{174}{-}{RRR} \\ % .notdef. - \testkern{LLL}{-}{175}{-}{RRR} \\ % .notdef. - \testkern{LLL}{-}{176}{-}{RRR} \\ % .notdef. - \testkern{LLL}{-}{177}{-}{RRR} \\ % .notdef. - \testkern{LLL}{-}{178}{-}{RRR} \\ % .notdef. - \testkern{LLL}{-}{179}{-}{RRR} \\ % .notdef. - \testkern{LLL}{-}{180}{-}{RRR} \\ % .notdef. - \testkern{LLL}{-}{181}{-}{RRR} \\ % .notdef. - \testkern{LLL}{-}{182}{-}{RRR} \\ % .notdef. - \testkern{LLL}{-}{183}{-}{RRR} \\ % .notdef. - \testkern{LLL}{-}{184}{-}{RRR} \\ % .notdef. - \testkern{LLL}{-}{185}{-}{RRR} \\ % .notdef. - \testkern{LLL}{-}{186}{-}{RRR} \\ % .notdef. - \testkern{LLL}{-}{187}{-}{RRR} \\ % .notdef. - \testkern{LLL}{-}{188}{-}{RRR} \\ % .notdef. - \testkern{LLL}{-}{189}{-}{RRR} \\ % .notdef. - \testkern{LLL}{-}{190}{-}{RRR} \\ % .notdef. - \testkern{LLL}{-}{191}{-}{RRR} \\ % .notdef. - \testkern{LLL}{-}{192}{-}{RRR} \\ % .notdef. - \testkern{LLL}{-}{193}{-}{RRR} \\ % .notdef. - \testkern{LLL}{-}{194}{-}{RRR} \\ % .notdef. - \testkern{LLL}{-}{195}{-}{RRR} \\ % .notdef. - \testkern{LLL}{-}{196}{-}{RRR} \\ % .notdef. - \testkern{LLL}{-}{197}{-}{RRR} \\ % .notdef. - \testkern{LLL}{-}{198}{-}{RRR} \\ % .notdef. - \testkern{LLL}{-}{199}{-}{RRR} \\ % .notdef. - \testkern{LLL}{-}{200}{-}{RRR} \\ % .notdef. - \testkern{LLL}{-}{201}{-}{RRR} \\ % .notdef. - \testkern{LLL}{-}{202}{-}{RRR} \\ % .notdef. - \testkern{LLL}{-}{203}{-}{RRR} \\ % .notdef. - \testkern{LLL}{-}{204}{-}{RRR} \\ % .notdef. - \testkern{LLL}{-}{205}{-}{RRR} \\ % .notdef. - \testkern{LLL}{-}{206}{-}{RRR} \\ % .notdef. - \testkern{LLL}{-}{207}{-}{RRR} \\ % .notdef. - \testkern{LLL}{-}{208}{-}{RRR} \\ % .notdef. - \testkern{LLL}{-}{209}{-}{RRR} \\ % .notdef. - \testkern{LLL}{-}{210}{-}{RRR} \\ % .notdef. - \testkern{LLL}{-}{211}{-}{RRR} \\ % .notdef. - \testkern{LLL}{-}{212}{-}{RRR} \\ % .notdef. - \testkern{LLL}{-}{213}{-}{RRR} \\ % .notdef. - \testkern{LLL}{-}{214}{-}{RRR} \\ % .notdef. - \testkern{LLL}{-}{215}{-}{RRR} \\ % .notdef. - \testkern{LLL}{-}{216}{-}{RRR} \\ % .notdef. - \testkern{LLL}{-}{217}{-}{RRR} \\ % .notdef. - \testkern{LLL}{-}{218}{-}{RRR} \\ % .notdef. - \testkern{LLL}{-}{219}{-}{RRR} \\ % .notdef. - \testkern{LLL}{-}{220}{-}{RRR} \\ % .notdef. - \testkern{LLL}{-}{221}{-}{RRR} \\ % .notdef. - \testkern{LLL}{-}{222}{-}{RRR} \\ % .notdef. - \testkern{LLL}{-}{223}{-}{RRR} \\ % .notdef. - \testkern{LLL}{-}{224}{-}{RRR} \\ % .notdef. - \testkern{LLL}{-}{225}{-}{RRR} \\ % .notdef. - \testkern{LLL}{-}{226}{-}{RRR} \\ % .notdef. - \testkern{LLL}{-}{227}{-}{RRR} \\ % .notdef. - \testkern{LLL}{-}{228}{-}{RRR} \\ % .notdef. - \testkern{LLL}{-}{229}{-}{RRR} \\ % .notdef. - \testkern{LLL}{-}{230}{-}{RRR} \\ % .notdef. - \testkern{LLL}{-}{231}{-}{RRR} \\ % .notdef. - \testkern{LLL}{-}{232}{-}{RRR} \\ % .notdef. - \testkern{LLL}{-}{233}{-}{RRR} \\ % .notdef. - \testkern{LLL}{-}{234}{-}{RRR} \\ % .notdef. - \testkern{LLL}{-}{235}{-}{RRR} \\ % .notdef. - \testkern{LLL}{-}{236}{-}{RRR} \\ % .notdef. - \testkern{LLL}{-}{237}{-}{RRR} \\ % .notdef. - \testkern{LLL}{-}{238}{-}{RRR} \\ % .notdef. - \testkern{LLL}{-}{239}{-}{RRR} \\ % .notdef. - \testkern{LLL}{-}{240}{-}{RRR} \\ % .notdef. - \testkern{LLL}{-}{241}{-}{RRR} \\ % .notdef. - \testkern{LLL}{-}{242}{-}{RRR} \\ % .notdef. - \testkern{LLL}{-}{243}{-}{RRR} \\ % .notdef. - \testkern{LLL}{-}{244}{-}{RRR} \\ % .notdef. - \testkern{LLL}{-}{245}{-}{RRR} \\ % .notdef. - \testkern{LLL}{-}{246}{-}{RRR} \\ % .notdef. - \testkern{LLL}{-}{247}{-}{RRR} \\ % .notdef. - \testkern{LLL}{-}{248}{-}{RRR} \\ % .notdef. - \testkern{LLL}{-}{249}{-}{RRR} \\ % .notdef. - \testkern{LLL}{-}{250}{-}{RRR} \\ % .notdef. - \testkern{LLL}{-}{251}{-}{RRR} \\ % .notdef. - \testkern{LLL}{-}{252}{-}{RRR} \\ % .notdef. - \testkern{LLL}{-}{253}{-}{RRR} \\ % .notdef. - \testkern{LLL}{-}{254}{-}{RRR} \\ % .notdef. - \testkern{LLL}{-}{255}{-}{RRR} \\ % .notdef. -\fi -\end{kerntable} - -\end{document} -% -% \end{macrocode} -% -% That's it. -% -% \Finale - diff --git a/Master/texmf-dist/source/latex/kerntest/latex/kerntest/kerntest.ins b/Master/texmf-dist/source/latex/kerntest/latex/kerntest/kerntest.ins deleted file mode 100644 index 4c0e67de89e..00000000000 --- a/Master/texmf-dist/source/latex/kerntest/latex/kerntest/kerntest.ins +++ /dev/null @@ -1,37 +0,0 @@ -\input docstrip.tex -\preamble - - kerntest class - - Copyright 2004 Harald Harders - - This program can be redistributed and/or modified under the terms - of the LaTeX Project Public License Distributed from CTAN - archives in directory macros/latex/base/lppl.txt; either - version 1.3 of the License, or any later version. - - h.harders@tu-bs.de - -\endpreamble - -\askforoverwritefalse - -% Files -%%%%%%%%%%%%%%%%%%%%%% -\generate{% - \file{kerntest.cls}{\from{kerntest.dtx}{class}}% - \file{t1mtx.clo}{\from{kerntest.dtx}{mtx,t1}}% - \file{ts1mtx.clo}{\from{kerntest.dtx}{mtx,ts1}}% - \file{ot1mtx.clo}{\from{kerntest.dtx}{mtx,ot1}}% - \file{t2amtx.clo}{\from{kerntest.dtx}{mtx,t2a}}% - \file{t2bmtx.clo}{\from{kerntest.dtx}{mtx,t2b}}% - \file{ly1mtx.clo}{\from{kerntest.dtx}{mtx,ly1}}% - \file{krntst-v.tex}{\from{kerntest.dtx}{version}}% - \usepostamble\empty - \file{t1-XXX-m-n.tex}{\from{kerntest.dtx}{template,t1}}% - \file{ts1-XXX-m-n.tex}{\from{kerntest.dtx}{template,ts1}}% - \file{ot1-XXX-m-n.tex}{\from{kerntest.dtx}{template,ot1}}% -}% - -\Msg{* Ready} -\endbatchfile diff --git a/Master/texmf-dist/tex/latex/kerntest/t1cmr-1200.fd b/Master/texmf-dist/tex/latex/kerntest/t1cmr-1200.fd new file mode 100644 index 00000000000..1f14490c80a --- /dev/null +++ b/Master/texmf-dist/tex/latex/kerntest/t1cmr-1200.fd @@ -0,0 +1,22 @@ + %% +%% This is file `t1cmr-1200.fd'. +%% +\ProvidesFile{t1cmr-1200.fd} + [2004/04/01 v1.0 Non-Standard LaTeX font definitions] +\providecommand{\krntstexmplfamily}[5]{% + \DeclareFontShape{#1}{#2}{#3}{#4}% + {<-> #51200}{}} +\DeclareFontFamily{T1}{cmr}{} +\krntstexmplfamily{T1}{cmr}{m}{n}{ecrm} +\krntstexmplfamily{T1}{cmr}{m}{sl}{ecsl} +\krntstexmplfamily{T1}{cmr}{m}{it}{ecti} +\krntstexmplfamily{T1}{cmr}{m}{sc}{eccc} +\krntstexmplfamily{T1}{cmr}{bx}{n}{ecbx} +\krntstexmplfamily{T1}{cmr}{b}{n}{ecrb} +\krntstexmplfamily{T1}{cmr}{bx}{it}{ecbi} +\krntstexmplfamily{T1}{cmr}{bx}{sl}{ecbl} +\krntstexmplfamily{T1}{cmr}{bx}{sc}{ecxc} +\krntstexmplfamily{T1}{cmr}{m}{ui}{ecui} +\endinput +%% +%% End of file `t1cmr-1200.fd'. -- cgit v1.2.3