%<*gobble>
%\iffalse
% $Id: adobecaslon.dtx,v 1.7 2014-12-18 01:44:06 boris Exp $
%
% Copyright (c) 2012, Boris Veytsman
% Copyright (c) 2013-2014, Reuben Thomas
% Copyright (c) 1996, Ulrik Vieth
%
% All rights reserved.
%
% Redistribution and use in source and binary forms, with or without
% modification, are permitted provided that the following conditions
% are met: 
%
%    * Redistributions of source code must retain the above copyright
%    notice, this list of conditions and the following disclaimer. 
%    * Redistributions in binary form must reproduce the above
%    copyright notice, this list of conditions and the following
%    disclaimer in the documentation and/or other materials provided
%    with the distribution. 
%    * Neither the name of the original author nor the names of the
%    contributors may be used to endorse or promote products derived
%    from this software without specific prior written permission. 
%
% THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
% CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
% INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
% MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
% DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
% BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
% EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
% TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
% DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
% ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
% OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
% OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
% POSSIBILITY OF SUCH DAMAGE.
%
% \CheckSum{908}
%
%\fi
%%\iffalse
%% \CharacterTable
%%  {Upper-case    \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
%%   Lower-case    \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
%%   Digits        \0\1\2\3\4\5\6\7\8\9
%%   Exclamation   \!     Double quote  \"     Hash (number) \#
%%   Dollar        \$     Percent       \%     Ampersand     \&
%%   Acute accent  \'     Left paren    \(     Right paren   \)
%%   Asterisk      \*     Plus          \+     Comma         \,
%%   Minus         \-     Point         \.     Solidus       \/
%%   Colon         \:     Semicolon     \;     Less than     \<
%%   Equals        \=     Greater than  \>     Question mark \?
%%   Commercial at \@     Left bracket  \[     Backslash     \\
%%   Right bracket \]     Circumflex    \^     Underscore    \_
%%   Grave accent  \`     Left brace    \{     Vertical bar  \|
%%   Right brace   \}     Tilde         \~} 
%%\fi
%</gobble>
% \MakeShortVerb{|}
% \GetFileInfo{adobecaslon.sty}
% \title{\LaTeX{} Support For Adobe Caslon Fonts}
% \author{Boris Veytsman\thanks{%
% \href{mailto:borisv@lk.net}{\texttt{borisv@lk.net}},
% \href{mailto:boris@varphi.com}{\texttt{boris@varphi.com}}}
% \and
% Reuben Thomas\thanks{%
% \href{mailto:rrt@sc3d.org}{\texttt{rrt@sc3d.org}}}
% \and
% Ulrik Vieth}
% \date{\filedate, \fileversion}
% \maketitle
% \begin{abstract}
%   This package provides \LaTeX{} support for the Adobe Caslon
%   Fonts. Note that it does not provide the fonts themselves.
% \end{abstract}
% \tableofcontents
%
% \clearpage
%
%
%\section{Introduction}
%\label{sec:intro}
%
% This package provides support files for the Adobe Caslon font family
% in pdf\LaTeX. (The \LuaTeX and \XeTeX engines support system fonts
% directly, but there are still good reasons to use pdf\TeX.)
%
% The expert font support is based on the \textsf{acaslon} package by
% Ulrik Vieth.
%
% The initial work on this package was done by Boris Veytsman;  Reuben
% Thomas added support for expert fonts using Ulrik Vieth's code.
%
%\section{Installation}
%\label{sec:install}
%
% The following instructions assume a TeX Directory Structure
% compliant TeX system. If you don't know what that is, you probably
% have one! Otherwise, you'll need to work out where to put the files
% yourself.
%
% First, you need to purchase the fonts themselves: the |pfb| files
% are \emph{not} included in the package.  If you got the fonts from
% Adobe, do not rename the |pfb| files.  However, if
% there are uppercase letters in your files' names, downcase them.  If
% you obtained the files from another source, rename the fonts
% according to Table~\ref{tab:PFB} and, if you have the expert fonts,
% Table~\ref{tab:expertPFB}.  Install the files into
% \path{$TEXMF/fonts/type1/adobe/adobecaslon}.
%
% Then, download
% \url{http://ctan.tug.org/install/fonts/psfonts/adobe/adobecaslon.tds.zip}
% and unzip this file in \path{$TEXMF}.
%
% Finally, add the line |Map pac.map| to your |updmap.cfg| file, and
% run |updmap| and |texhash| to update the configuration files and
% file names database.
%
%
% \begin{table}[tp]
%   \centering
%   \caption{PFB Files}
%   \label{tab:PFB}
%
%   \begin{tabular}{ll}
%     \toprule
%    File  &  Font \\
%    \midrule
% |awrg____.pfb| & Adobe Caslon Regular\\
% |awi_____.pfb| & Adobe Caslon Italic \\
% |awsb____.pfb| & Adobe Caslon Semibold \\
% |awsbi___.pfb| & Adobe Caslon Semibold Italic \\
% |awb_____.pfb| & Adobe Caslon Bold\\
% |awbi____.pfb| & Adobe Caslon Bold Italic\\
%    \bottomrule
%   \end{tabular}
%
% \end{table}
%
% \begin{table}[tp]
%   \centering
%   \caption{Expert PFB Files}
%   \label{tab:expertPFB}
%
%   \begin{tabular}{ll}
%     \toprule
%    File  &  Font \\
%    \midrule
% |awab____.pfb| & Adobe Caslon Bold Alternate\\
% |awabi___.pfb| & Adobe Caslon Bold Italic Alternate\\
% |awai____.pfb| & Adobe Caslon Italic Alternate\\
% |awarg___.pfb| & Adobe Caslon Regular Alternate\\
% |awasb___.pfb| & Adobe Caslon Semibold Alternate\\
% |awasi___.pfb| & Adobe Caslon Semibold Italic Alternate\\
% |awb_____.pfb| & Adobe Caslon Bold\\
% |awbi____.pfb| & Adobe Caslon Bold Italic\\
% |awi_____.pfb| & Adobe Caslon Italic\\
% |awor____.pfb| & Adobe Caslon Ornaments\\
% |awrg____.pfb| & Adobe Caslon Regular\\
% |awsb____.pfb| & Adobe Caslon Semibold\\
% |awsbi___.pfb| & Adobe Caslon Semibold Italic\\
% |awsbs___.pfb| & Adobe Caslon SemiboldSC\\
% |awsc____.pfb| & Adobe Caslon Regular Small Caps \& Oldstyle Figures\\
% |awssb___.pfb| & Adobe Caslon Swash Semibold Italic\\
% |awswb___.pfb| & Adobe Caslon Swash Bold Italic\\
% |awswi___.pfb| & Adobe Caslon Swash Italic\\
% |axb_____.pfb| & Adobe Caslon Bold Expert\\
% |axbi____.pfb| & Adobe Caslon Bold Italic Expert\\
% |axi_____.pfb| & Adobe Caslon Italic Expert\\
% |axrg____.pfb| & Adobe Caslon Regular Expert\\
% |axsb____.pfb| & Adobe Caslon Semibold Expert\\
% |axsbi___.pfb| & Adobe Caslon Semibold Italic Expert\\
% |awbio___.pfb| & Adobe Caslon Bold Italic OsF\\
% |awbos___.pfb| & Adobe Caslon Bold OsF\\
% |awio____.pfb| & Adobe Caslon Italic OsF\\
% |awsis___.pfb| & Adobe Caslon Semibold Italic OsF\\
%    \bottomrule
%   \end{tabular}
%
% \end{table}
%
% The package |adobecaslon.sty| provides a number of commands for using
% the font family (see Section~\ref{sec:adobecaslon.sty}).
%
%\subsection{Fonts for extra ligatures}
%\label{sec:extraligs}
%
% There is a range of ligatures for the `long s' letter in the Alternate fonts,
% but there are others it is nice to have (although the fonts do quite well
% without them). They are quite easy to make in a font editor such as FontForge
% (\url{http://fontforge.github.io}): for example, `|longs| |longs| |i|' can be
% made by grafting the left-hand letter of the `|longs| |longs|' ligature on to
% the `|longs| |i|' ligature.
%
% Unfortunately, distributing these ligatures would probably be illegal in many
% countries, so if you want them you will have to make them for yourself.
%
% Table~\ref{tab:extraenc} lists the extra ligatures supported, along with the
% code point at which each glyph should appear and the corresponding glyph name
% in the standard encoding. (It would be nice to support a wider range of extra
% ligatures if there were a way of detecting which the user had supplied.)
% Table~\ref{tab:extraPFB} lists the required font files, one for each Alternate
% font. The extra ligatures are used when the |extraligs| package option is
% given.
%
%\begin{table}[tp]
%   \centering
%   \caption{Supported extra ligatures}
%   \label{tab:extraenc}
%
%   \begin{tabular}{lll}
%     \toprule
%    Ligature sequence  &  Code point  &  Standard glyph at code point \\
%    \midrule
% |longs| |longs| |i| & 0x49 & i\\
% |longs| |longs| |l| & 0x4c & l\\
%    \bottomrule
%   \end{tabular}
%
% \end{table}
%
%\begin{table}[tp]
%   \centering
%   \caption{Extra ligature PFB Files}
%   \label{tab:extraPFB}
%
%   \begin{tabular}{ll}
%     \toprule
%    File  &  Font \\
%    \midrule
% |awabe___.pfb| & Adobe Caslon Bold Alternate Extra\\
% |awabie__.pfb| & Adobe Caslon Bold Italic Alternate Extra\\
% |awaie___.pfb| & Adobe Caslon Italic Alternate Extra\\
% |awarge__.pfb| & Adobe Caslon Regular Alternate Extra\\
% |awasbe__.pfb| & Adobe Caslon Semibold Alternate Extra\\
% |awasie__.pfb| & Adobe Caslon Semibold Italic Alternate Extra\\
%    \bottomrule
%   \end{tabular}
%
% \end{table}
% 
%
%\section{Using \LaTeX{} Style }
%\label{sec:adobecaslon.sty}
%
% To use the package, add to the preamble of your document the usual
% incantation \cmd{\usepackage}\oarg{options}|{adobecaslon}|.
%
% Several options are defined; see Table~\ref{tab:options}.
% \begin{table}[tp]
%   \centering
%   \caption{Package options}
%   \label{tab:options}
%
%   \begin{tabular}{ll}
%     \toprule
% Option        & Meaning \\
%    \midrule
% |expert|      & Use expert fonts \\
% |osf|         & Use old-style (ranging) figures (requires expert fonts) \\
% |swashit|     & Use swash italics (requires expert fonts) \\
% |alternate|   & Use alternate old-style ligatures (requires expert fonts) \\
% |longs|       & Use long `s' (requires expert fonts) \\
% |c18th|       & Use long `s' with 18th century rules (require expert fonts) \\
% |extraligs|   & Use extra ligatures with |longs| or |c18th| (see Section~\ref{sec:extraligs}) \\
% |swashlongs|  & Use long `s' with swashes (requires expert fonts) \\
% |normdefault| & Don't make Caslon the default roman typeface \\
% |rmdefault|   & Make Caslon the default roman typeface (default) \\
% |scaled=N|    & Scale the font by the given factor (default: $1.00$) \\
% |bold|        & Use bold faces for |\bfseries| \\
% |semibold|    & Use semibold faces for |\bfseries| (default) \\
%    \bottomrule
%   \end{tabular}
%
% \end{table}
%
% Note that the |scaled| package option does not currently apply to
% the italic swash and ornament fonts.
%
% The package provides Adobe fonts in two shapes: upright and italic,
% and in three weights: medium (|m|), semibold (|sb|) and bold (|b|).
% The can be selected in the usual way, for example
% \begin{verbatim}
% \fontfamily{pac}\fontshape{it}\fontseries{sb}\selectfont
% \end{verbatim}
%
% \DescribeMacro{\adobecaslonfamily}
% \DescribeMacro{\textadobecaslon}
% Alternatively you can use a declaration |\adobecaslonfamily| and a
% command |\textadobecaslon| to set the family.  
%
% \DescribeMacro{\sbseries}
% \DescribeMacro{\textsb}
% You can use the standard \LaTeX{} commands to select the shape and
% weight of the font.  The package also provides a new declaration
% |\sbseries| and a command 
% |\textsb| modeled after the familiar commands |\bfseries| and
% |\textbf|, which select semi-bold weights.  
%
% \DescribeMacro{\adobecaslonexpert}
% Select expert fonts.
%
% \DescribeMacro{\adobecaslonosf}
% Select expert fonts with old-style (ranging) figures.
%
% \DescribeMacro{\adobecaslonalternate}
% Select old-style alternate ligatures.
%
% \DescribeMacro{\adobecaslonlongs}
% Select long `s'.
%
% \DescribeMacro{\adobecasloneighteenth}
% Select long `s' with 18th century rules (see Section~\ref{sec:longs}).
%
% \DescribeMacro{\adobecaslonswashit}
% Select swash italics.
%
% \DescribeMacro{\adobecaslonswashcaps}
% Select swash caps.
%
% \DescribeMacro{\adobecaslonornaments}
% Select ornaments.
%
% Note that currently hyphenation of long `s' does not work properly:
% \TeX\ seems to register a word boundary before the hyphen, so the
% `s' is shortened incorrectly. As a workaround, use |\noboundary|
% directly before such a hyphenation.
%
%\subsection{Rules for `long s'}
%\label{sec:longs}
%
% The following rules are implemented automatically for the use of `long s' when
% the |longs| package option or |\adobecaslonlongs| command is used. Some come
% directly from the font; others are taken from
% \url{http://babelstone.blogspot.co.uk/2006/06/rules-for-long-s.html}. See also
% \url{http://english.stackexchange.com/questions/96408/during-what-period-of-history-did-english-use-ss-the-sharp-s-ligature}.
%
% \begin{itemize}
% \item `Long s' becomes short at the end of a word.
% \item `Long s' becomes short before apostrophe.
% \item `Long s' becomes short before and after `f'.
% \item `Long s' before manual hyphen (i.e., glyph |hyphen|; line-break hyphen
%   is |hyphenchar|) becomes short.
% \end{itemize}
%
% The following rules must be applied manually:
%
% \begin{itemize}
% \item `Long s' is retained at the end of abbreviations before the full stop:
%   add |\noboundary| before stop.
% \item `Long s' before line-break hyphen (glyph |hyphenchar|): this is
%   incorrectly shortened, so add |\noboundary\-| at the hyphenation point.
% \item To shorten a `long s' that is not automatically shortened, insert some
%   sort of break after it.
% \end{itemize}
%
% The following additional rules are implemented when the |c18th| package option
% or |\adobecasloneighteenth| command is used:
%
% \begin{itemize}
% \item The `eszet'-style ligature becomes a `long s'--`short s' ligature.
% \item `Long s' is shortened before b and k.
% \end{itemize}
%
%\subsection{Bugs and future work}
%
% It might seem odd that for version~2 of this package, prepared in 2014, we are
% still using fontinst and PostScript Type~1 fonts. The reason is that as of
% \TeX\ Live~2012, \LuaTeX\ seems to kern Adobe Caslon Pro poorly, and the
% |hlig| historical ligature rules don't seem to work as expected.
%
% The files currently supplied in binary form from Ulrik Vieth's original
% package for the swash and ornament fonts should be generated.
%
%
% \StopEventually{
%   \clearpage
%
%   \bibliography{adobecaslon}
%   \bibliographystyle{unsrt}}
%
% \clearpage
%\section{Implementation}
%\label{sec:impl}
%
%\subsection{Identification}
%\label{sec:ident}
%
% We start by declaring who we are.
%    \begin{macrocode}
%<style>\NeedsTeXFormat{LaTeX2e}
%<driver>\ProvidesFile{adobecaslon.dtx}
%<style>\ProvidesPackage{adobecaslon}
%<style>   [2014/04/01 v2.0 Using Adobe Caslon Font in LaTeX]
%    \end{macrocode}
% And the driver code:
%    \begin{macrocode}
%<*driver>
\documentclass{ltxdoc}
\usepackage{booktabs}
\usepackage{url}
\usepackage[tableposition=top]{caption}
\usepackage{hypdoc}
\usepackage[normdefault]{adobecaslon}
\usepackage{metalogo}
\PageIndex
\CodelineIndex
\RecordChanges
\EnableCrossrefs
\begin{document}
  \DocInput{adobecaslon.dtx}
\end{document}
%</driver>
%    \end{macrocode}
%
%\subsection{Fontinst Driver}
%\label{sec:pac-drv}
%
% This follows~\cite{fontinstallationguide}.
% 
% First, the preamble
%    \begin{macrocode}
%<*pac-drv,pac-expert-drv,pac-extraligs-drv>
\input fontinst.sty
\substitutesilent{bx}{b}
%    \end{macrocode}
%  
%
% Starting recording transforms:
%    \begin{macrocode}
\recordtransforms{pac-rec.tex}
%</pac-drv,pac-expert-drv,pac-extraligs-drv>
%    \end{macrocode}
% The base fonts:
%    \begin{macrocode}
%<*pac-drv,pac-expert-drv,pac-extraligs-drv>
\transformfont{pacr8r}{\reencodefont{8r}{\fromafm{awrg____}}}
\transformfont{pacri8r}{\reencodefont{8r}{\fromafm{awi_____}}}
\transformfont{pacs8r}{\reencodefont{8r}{\fromafm{awsb____}}}
\transformfont{pacsi8r}{\reencodefont{8r}{\fromafm{awsbi___}}}
\transformfont{pacb8r}{\reencodefont{8r}{\fromafm{awb_____}}}
\transformfont{pacbi8r}{\reencodefont{8r}{\fromafm{awbi____}}}
%    \end{macrocode}
%
% Make oblique fonts for faking italic small caps:
%    \begin{macrocode}
\transformfont{pacro8r}{\slantfont{167}{\frommtx{pacr8r}}}
\transformfont{pacso8r}{\slantfont{167}{\frommtx{pacs8r}}}
%</pac-drv,pac-expert-drv,pac-extraligs-drv>
%
% The use of expert fonts is optional, so we have a separate driver for them:
%    \begin{macrocode}
%<*pac-expert-drv,pac-extraligs-drv>
\transformfont{pacb7a}{\fromafm{awab____}}
\transformfont{pacbi7a}{\fromafm{awabi___}}
\transformfont{pacri7a}{\fromafm{awai____}}
\transformfont{pacr7a}{\fromafm{awarg___}}
\transformfont{pacs7a}{\fromafm{awasb___}}
\transformfont{pacsi7a}{\fromafm{awasi___}}
\transformfont{pacrp}{\fromafm{awor____}}
\transformfont{pacsc8x}{\fromafm{awsbs___}}
\transformfont{pacrc8x}{\fromafm{awsc____}}
\transformfont{pacsiw}{\fromafm{awssb___}}
\transformfont{pacbiw}{\fromafm{awswb___}}
\transformfont{pacriw}{\fromafm{awswi___}}
\transformfont{pacb8x}{\fromafm{axb_____}}
\transformfont{pacbi8x}{\fromafm{axbi____}}
\transformfont{pacri8x}{\fromafm{axi_____}}
\transformfont{pacr8x}{\fromafm{axrg____}}
\transformfont{pacs8x}{\fromafm{axsb____}}
\transformfont{pacsi8x}{\fromafm{axsbi___}}
%    \end{macrocode}
%
% Make expert oblique fonts for faking italic small caps:
%
%    \begin{macrocode}
\transformfont{pacro8x}{\slantfont{167}{\frommtx{pacr8x}}}
\transformfont{pacrco8x}{\slantfont{167}{\frommtx{pacrc8x}}}
\transformfont{pacso8x}{\slantfont{167}{\frommtx{pacs8x}}}
\transformfont{pacsco8x}{\slantfont{167}{\frommtx{pacsc8x}}}
%</pac-expert-drv,pac-extraligs-drv>
%    \end{macrocode}
%
% The ``extraligs'' fonts must be supplied by the user, so they have a separate driver:
%    \begin{macrocode}
%<*pac-extraligs-drv>
\transformfont{pacb7ae}{\fromafm{awabe___}}
\transformfont{pacbi7ae}{\fromafm{awabie__}}
\transformfont{pacri7ae}{\fromafm{awaie___}}
\transformfont{pacr7ae}{\fromafm{awarge__}}
\transformfont{pacs7ae}{\fromafm{awasbe__}}
\transformfont{pacsi7ae}{\fromafm{awasie__}}
%</pac-extraligs-drv>
%    \end{macrocode}
%
% There is no hook in |fontinst.sty| for writing our own preamble to
% |.fd| file.  However, we need to add scaling commands to the
% preamble, so we patch \textsf{fontinst}:
%    \begin{macrocode}
%<*pac-drv,pac-expert-drv,pac-extraligs-drv>
\fontinstcc
\def\fd_family#1#2#3{
   \a_toks{#3}
   \edef\lowercase_file{\lowercase{
     \edef\noexpand\lowercase_file{#1#2.fd}}}
   \lowercase_file
   \open_out{\lowercase_file}
   \out_line{\percent_char~Filename:~\lowercase_file}
   \out_line{\percent_char~Created~by:~tex~\jobname}
   \out_line{\percent_char~Created~using~fontinst~v\fontinstversion}
   \out_line{}
   \out_line{\percent_char~THIS~FILE~SHOULD~BE~PUT~IN~A~TEX~INPUTS~
      DIRECTORY}
   \out_line{}
   \out_line{\string\ProvidesFile{\lowercase_file}}
   \out_lline{[
      \the\year/
      \ifnum10>\month0\fi\the\month/
      \ifnum10>\day0\fi\the\day\space
      Fontinst~v\fontinstversion\space
      font~definitions~for~#1/#2.
   ]}
   \out_line{}
%    \end{macrocode}
% Here is our patch:
%    \begin{macrocode}
   \out_line{\string\expandafter\string\ifx\string\csname\space
     adobecaslon@scaled\string\endcsname\string\relax}
   \out_line{\space\string\let\string\adobecaslon@scaled\string\@empty}
   \out_line{\string\else}
   \out_line{\space\string\edef\string\adobecaslon@scaled\left_brace_char 
       s*[\string\csname\space adobecaslon@scaled\string\endcsname]
       \right_brace_char\percent_char}
   \out_line{\string\fi\percent_char}
   \out_line{}
%    \end{macrocode}
% End of the patch.
%    \begin{macrocode}
   \out_line{\string\DeclareFontFamily{#1}{#2}{\the\a_toks}}
   {
      \csname #1-#2\endcsname
      \out_line{}
      \let\do_shape=\substitute_shape
      \csname #1-#2\endcsname
      \let\do_shape=\remove_shape
      \csname #1-#2\endcsname
   }
   \x_cs\g_let{#1-#2}\x_relax
   \out_line{}
   \out_line{\string\endinput}
   \close_out{Font~definitions}
}
\normalcc
%    \end{macrocode}
%
% Now we install the fonts.  First T1:
%    \begin{macrocode}
\installfonts
\installfont{pacr8t}{pacr8r,newlatin}{t1}{T1}{pac}{m}{n}{ <->\string\adobecaslon@scaled}
\installfont{pacro8t}{pacro8r,newlatin}{t1}{T1}{pac}{m}{sl}{ <->\string\adobecaslon@scaled}
\installfont{pacrc8t}{pacr8r,newlatin}{t1c}{T1}{pac}{m}{sc}{ <->\string\adobecaslon@scaled}
\installfont{pacrco8t}{pacro8r,newlatin}{t1c}{T1}{pac}{m}{scit}{ <->\string\adobecaslon@scaled}
\installfont{pacri8t}{pacri8r,newlatin}{t1}{T1}{pac}{m}{it}{ <->\string\adobecaslon@scaled}
\installfont{pacs8t}{pacs8r,newlatin}{t1}{T1}{pac}{sb}{n}{ <->\string\adobecaslon@scaled}
\installfont{pacso8t}{pacso8r,newlatin}{t1}{T1}{pac}{sb}{sl}{ <->\string\adobecaslon@scaled}
\installfont{pacsc8t}{pacs8r,newlatin}{t1c}{T1}{pac}{sb}{sc}{ <->\string\adobecaslon@scaled}
\installfont{pacsco8t}{pacso8r,newlatin}{t1c}{T1}{pac}{sb}{scit}{ <->\string\adobecaslon@scaled}
\installfont{pacsi8t}{pacsi8r,newlatin}{t1}{T1}{pac}{sb}{it}{ <->\string\adobecaslon@scaled}
\installfont{pacb8t}{pacb8r,newlatin}{t1}{T1}{pac}{b}{n}{ <->\string\adobecaslon@scaled}
\installfont{pacbi8t}{pacbi8r,newlatin}{t1}{T1}{pac}{b}{it}{ <->\string\adobecaslon@scaled}
%    \end{macrocode}
%
% Then TS1:
%    \begin{macrocode}
\installfont{pacr8c}{pacr8r,textcomp}{ts1}{TS1}{pac}{m}{n}{ <->\string\adobecaslon@scaled}
\installfont{pacri8c}{pacri8r,textcomp}{ts1}{TS1}{pac}{m}{it}{ <->\string\adobecaslon@scaled}
\installfont{pacs8c}{pacs8r,textcomp}{ts1}{TS1}{pac}{sb}{n}{ <->\string\adobecaslon@scaled}
\installfont{pacsi8c}{pacsi8r,textcomp}{ts1}{TS1}{pac}{sb}{it}{ <->\string\adobecaslon@scaled}
\installfont{pacb8c}{pacb8r,textcomp}{ts1}{TS1}{pac}{b}{n}{ <->\string\adobecaslon@scaled}
\installfont{pacbi8c}{pacbi8r,textcomp}{ts1}{TS1}{pac}{b}{it}{ <->\string\adobecaslon@scaled}
%    \end{macrocode}
% 
% And OT1:
%    \begin{macrocode}
\installfont{pacr7t}{pacr8r,newlatin}{ot1}{OT1}{pac}{m}{n}{ <->\string\adobecaslon@scaled}
\installfont{pacro7t}{pacro8r,newlatin}{ot1}{OT1}{pac}{m}{sl}{ <->\string\adobecaslon@scaled}
\installfont{pacrc7t}{pacr8r,newlatin}{ot1c}{OT1}{pac}{m}{sc}{ <->\string\adobecaslon@scaled}
\installfont{pacrco7t}{pacro8r,newlatin}{ot1c}{OT1}{pac}{m}{scit}{ <->\string\adobecaslon@scaled}
\installfont{pacri7t}{pacri8r,newlatin}{ot1}{OT1}{pac}{m}{it}{ <->\string\adobecaslon@scaled}
\installfont{pacs7t}{pacs8r,newlatin}{ot1}{OT1}{pac}{sb}{n}{ <->\string\adobecaslon@scaled}
\installfont{pacso7t}{pacso8r,newlatin}{ot1}{OT1}{pac}{sb}{sl}{ <->\string\adobecaslon@scaled}
\installfont{pacsc7t}{pacs8r,newlatin}{ot1c}{OT1}{pac}{sb}{sc}{ <->\string\adobecaslon@scaled}
\installfont{pacsco7t}{pacso8r,newlatin}{ot1c}{OT1}{pac}{sb}{scit}{ <->\string\adobecaslon@scaled}
\installfont{pacsi7t}{pacsi8r,newlatin}{ot1}{OT1}{pac}{sb}{it}{ <->\string\adobecaslon@scaled}
\installfont{pacb7t}{pacb8r,newlatin}{ot1}{OT1}{pac}{b}{n}{ <->\string\adobecaslon@scaled}
\installfont{pacbi7t}{pacbi8r,newlatin}{ot1}{OT1}{pac}{b}{it}{ <->\string\adobecaslon@scaled}
\endinstallfonts
%    \end{macrocode}
%
% Now the expert and extra ligature fonts, which we make available only in T1
% encoding.
%<*pac-expert-drv,pac-extraligs-drv>
%    \begin{macrocode}
\installfonts
%</pac-expert-drv,pac-extraligs-drv>
%    \end{macrocode}
%
% First, the \texttt{expert} option:
%    \begin{macrocode}
%<*pac-expert-drv>
\installfont{pacr9e}{pacr8r,pacr8x,newlatin}{t1}{T1}{pacx}{m}{n}{ <->\string\adobecaslon@scaled}
\installfont{pacro9e}{pacro8r,pacro8x,newlatin}{t1}{T1}{pacx}{m}{sl}{ <->\string\adobecaslon@scaled}
\installfont{pacrc9e}{pacrc8x,pacr8x,newlatin}{t1}{T1}{pacx}{m}{sc}{ <->\string\adobecaslon@scaled}
\installfont{pacrco9e}{pacrco8x,pacro8x,newlatin}{t1}{T1}{pacx}{m}{scit}{ <->\string\adobecaslon@scaled}
\installfont{pacri9e}{pacri8r,pacri8x,newlatin}{t1}{T1}{pacx}{m}{it}{ <->\string\adobecaslon@scaled}
\installfont{pacs9e}{pacs8r,pacs8x,newlatin}{t1}{T1}{pacx}{sb}{n}{ <->\string\adobecaslon@scaled}
\installfont{pacso9e}{pacso8r,pacso8x,newlatin}{t1}{T1}{pacx}{sb}{sl}{ <->\string\adobecaslon@scaled}
\installfont{pacsc9e}{pacsc8x,pacs8x,newlatin}{t1}{T1}{pacx}{sb}{sc}{ <->\string\adobecaslon@scaled}
\installfont{pacsco9e}{pacsco8x,pacso8x,newlatin}{t1}{T1}{pacx}{sb}{scit}{ <->\string\adobecaslon@scaled}
\installfont{pacsi9e}{pacsi8r,pacsi8x,newlatin}{t1}{T1}{pacx}{sb}{it}{ <->\string\adobecaslon@scaled}
\installfont{pacb9e}{pacb8r,pacb8x,newlatin}{t1}{T1}{pacx}{b}{n}{ <->\string\adobecaslon@scaled}
\installfont{pacbi9e}{pacbi8r,pacbi8x,newlatin}{t1}{T1}{pacx}{b}{it}{ <->\string\adobecaslon@scaled}

\installfont{pacr9c}{pacr8r,pacr8x,textcomp}{ts1}{TS1}{pacx}{m}{n}{}
\installfont{pacro9c}{pacro8r,pacro8x,textcomp}{ts1}{TS1}{pacx}{m}{sl}{}
\installfont{pacri9c}{pacri8r,pacri8x,textcomp}{ts1i}{TS1}{pacx}{m}{it}{}
\installfont{pacs9c}{pacs8r,pacs8x,textcomp}{ts1}{TS1}{pacx}{sb}{n}{}
\installfont{pacso9c}{pacso8r,pacso8x,textcomp}{ts1}{TS1}{pacx}{sb}{sl}{}
\installfont{pacsi9c}{pacsi8r,pacsi8x,textcomp}{ts1i}{TS1}{pacx}{sb}{it}{}
\installfont{pacb9c}{pacb8r,pacb8x,textcomp}{ts1}{TS1}{pacx}{b}{n}{}
\installfont{pacbi9c}{pacbi8r,pacbi8x,textcomp}{ts1i}{TS1}{pacx}{b}{it}{}
%     \end{macrocode}
%
% The \texttt{osf} option:
%    \begin{macrocode}
\installfont{pacr9d}{pacr8r,pacr8x,newlatin}{t1j}{T1}{pacj}{m}{n}{ <->\string\adobecaslon@scaled}
\installfont{pacro9d}{pacro8r,pacro8x,newlatin}{t1j}{T1}{pacj}{m}{sl}{ <->\string\adobecaslon@scaled}
\installfont{pacrc9d}{pacrc8x,pacr8x,newlatin}{t1j}{T1}{pacj}{m}{sc}{ <->\string\adobecaslon@scaled}
\installfont{pacrco9d}{pacrco8x,pacro8x,newlatin}{t1j}{T1}{pacj}{m}{scit}{ <->\string\adobecaslon@scaled}
\installfont{pacri9d}{pacri8r,pacri8x,newlatin}{t1j}{T1}{pacj}{m}{it}{ <->\string\adobecaslon@scaled}
\installfont{pacs9d}{pacs8r,pacs8x,newlatin}{t1j}{T1}{pacj}{sb}{n}{ <->\string\adobecaslon@scaled}
\installfont{pacso9d}{pacso8r,pacso8x,newlatin}{t1j}{T1}{pacj}{sb}{sl}{ <->\string\adobecaslon@scaled}
\installfont{pacsc9d}{pacsc8x,pacs8x,newlatin}{t1j}{T1}{pacj}{sb}{sc}{ <->\string\adobecaslon@scaled}
\installfont{pacsco9d}{pacsco8x,pacso8x,newlatin}{t1j}{T1}{pacj}{sb}{scit}{ <->\string\adobecaslon@scaled}
\installfont{pacsi9d}{pacsi8r,pacsi8x,newlatin}{t1j}{T1}{pacj}{sb}{it}{ <->\string\adobecaslon@scaled}
\installfont{pacb9d}{pacb8r,pacb8x,newlatin}{t1j}{T1}{pacj}{b}{n}{ <->\string\adobecaslon@scaled}
\installfont{pacbi9d}{pacbi8r,pacbi8x,newlatin}{t1j}{T1}{pacj}{b}{it}{ <->\string\adobecaslon@scaled}
%    \end{macrocode}
%
% The \texttt{alternate} option:
%    \begin{macrocode}
\installfont{pacra9d}{pacr8r,pacr7a,pacr8x,newlatina}{t1aj}{T1}{paca}{m}{n}{ <->\string\adobecaslon@scaled}
\installfont{pacroa9d}{pacro8r,pacro8x,newlatina}{t1aj}{T1}{paca}{m}{sl}{ <->\string\adobecaslon@scaled}
\installfont{pacrca9d}{pacrc8x,pacr8x,newlatinasc}{t1aj}{T1}{paca}{m}{sc}{ <->\string\adobecaslon@scaled}
\installfont{pacrcoa9d}{pacrco8x,pacro8x,newlatinasc}{t1aj}{T1}{paca}{m}{scit}{ <->\string\adobecaslon@scaled}
\installfont{pacria9d}{pacri8r,pacri7a,pacri8x,newlatina}{t1aj}{T1}{paca}{m}{it}{ <->\string\adobecaslon@scaled}
\installfont{pacsa9d}{pacs8r,pacs7a,pacs8x,newlatina}{t1aj}{T1}{paca}{sb}{n}{ <->\string\adobecaslon@scaled}
\installfont{pacsoa9d}{pacso8r,pacso8x,newlatina}{t1aj}{T1}{paca}{sb}{sl}{ <->\string\adobecaslon@scaled}
\installfont{pacsca9d}{pacsc8x,pacs8x,newlatinasc}{t1aj}{T1}{paca}{sb}{sc}{ <->\string\adobecaslon@scaled}
\installfont{pacscoa9d}{pacsco8x,pacso8x,newlatinasc}{t1aj}{T1}{paca}{sb}{scit}{ <->\string\adobecaslon@scaled}
\installfont{pacsia9d}{pacsi8r,pacsi7a,pacsi8x,newlatina}{t1aj}{T1}{paca}{sb}{it}{ <->\string\adobecaslon@scaled}
\installfont{pacba9d}{pacb8r,pacb7a,pacb8x,newlatina}{t1aj}{T1}{paca}{b}{n}{ <->\string\adobecaslon@scaled}
\installfont{pacbia9d}{pacbi8r,pacbi7a,pacbi8x,newlatina}{t1aj}{T1}{paca}{b}{it}{ <->\string\adobecaslon@scaled}
%    \end{macrocode}
%
% The \texttt{longs} option:
%    \begin{macrocode}
\installfont{pacraa9d}{pacr8r,pacr7a,pacr8x,newlatinaa}{t1aaj}{T1}{pacaa}{m}{n}{ <->\string\adobecaslon@scaled}
\installfont{pacroaa9d}{pacro8r,pacro8x,newlatinaa}{t1aaj}{T1}{pacaa}{m}{sl}{ <->\string\adobecaslon@scaled}
\installfont{pacrcaa9d}{pacrc8x,pacr8x,newlatinaasc}{t1aaj}{T1}{pacaa}{m}{sc}{ <->\string\adobecaslon@scaled}
\installfont{pacrcoaa9d}{pacrco8x,pacro8x,newlatinaasc}{t1aaj}{T1}{pacaa}{m}{scit}{ <->\string\adobecaslon@scaled}
\installfont{pacriaa9d}{pacri8r,pacri7a,pacri8x,newlatinaa}{t1aaj}{T1}{pacaa}{m}{it}{ <->\string\adobecaslon@scaled}
\installfont{pacsaa9d}{pacs8r,pacs7a,pacs8x,newlatinaa}{t1aaj}{T1}{pacaa}{sb}{n}{ <->\string\adobecaslon@scaled}
\installfont{pacsoaa9d}{pacso8r,pacso8x,newlatinaa}{t1aaj}{T1}{pacaa}{sb}{sl}{ <->\string\adobecaslon@scaled}
\installfont{pacscaa9d}{pacsc8x,pacs8x,newlatinaasc}{t1aaj}{T1}{pacaa}{sb}{sc}{ <->\string\adobecaslon@scaled}
\installfont{pacscoaa9d}{pacsco8x,pacso8x,newlatinaasc}{t1aaj}{T1}{pacaa}{sb}{scit}{ <->\string\adobecaslon@scaled}
\installfont{pacsiaa9d}{pacsi8r,pacsi7a,pacsi8x,newlatinaa}{t1aaj}{T1}{pacaa}{sb}{it}{ <->\string\adobecaslon@scaled}
\installfont{pacbaa9d}{pacb8r,pacb7a,pacb8x,newlatinaa}{t1aaj}{T1}{pacaa}{b}{n}{ <->\string\adobecaslon@scaled}
\installfont{pacbiaa9d}{pacbi8r,pacbi7a,pacbi8x,newlatinaa}{t1aaj}{T1}{pacaa}{b}{it}{ <->\string\adobecaslon@scaled}
%    \end{macrocode}
%
% The \texttt{c18th} option:
%    \begin{macrocode}
\installfont{pacraa89d}{pacr8r,pacr7a,pacr8x,newlatinaa8}{t1aa8j}{T1}{pacaa8}{m}{n}{ <->\string\adobecaslon@scaled}
\installfont{pacroaa89d}{pacro8r,pacro8x,newlatinaa8}{t1aa8j}{T1}{pacaa8}{m}{sl}{ <->\string\adobecaslon@scaled}
\installfont{pacrcaa89d}{pacrc8x,pacr8x,newlatinaa8sc}{t1aa8j}{T1}{pacaa8}{m}{sc}{ <->\string\adobecaslon@scaled}
\installfont{pacrcoaa89d}{pacrco8x,pacro8x,newlatinaa8sc}{t1aa8j}{T1}{pacaa8}{m}{scit}{ <->\string\adobecaslon@scaled}
\installfont{pacriaa89d}{pacri8r,pacri7a,pacri8x,newlatinaa8}{t1aa8j}{T1}{pacaa8}{m}{it}{ <->\string\adobecaslon@scaled}
\installfont{pacsaa89d}{pacs8r,pacs7a,pacs8x,newlatinaa8}{t1aa8j}{T1}{pacaa8}{sb}{n}{ <->\string\adobecaslon@scaled}
\installfont{pacsoaa89d}{pacso8r,pacso8x,newlatinaa8}{t1aa8j}{T1}{pacaa8}{sb}{sl}{ <->\string\adobecaslon@scaled}
\installfont{pacscaa89d}{pacsc8x,pacs8x,newlatinaa8sc}{t1aa8j}{T1}{pacaa8}{sb}{sc}{ <->\string\adobecaslon@scaled}
\installfont{pacscoaa89d}{pacsco8x,pacso8x,newlatinaa8sc}{t1aa8j}{T1}{pacaa8}{sb}{scit}{ <->\string\adobecaslon@scaled}
\installfont{pacsiaa89d}{pacsi8r,pacsi7a,pacsi8x,newlatinaa8}{t1aa8j}{T1}{pacaa8}{sb}{it}{ <->\string\adobecaslon@scaled}
\installfont{pacbaa89d}{pacb8r,pacb7a,pacb8x,newlatinaa8}{t1aa8j}{T1}{pacaa8}{b}{n}{ <->\string\adobecaslon@scaled}
\installfont{pacbiaa89d}{pacbi8r,pacbi7a,pacbi8x,newlatinaa8}{t1aa8j}{T1}{pacaa8}{b}{it}{ <->\string\adobecaslon@scaled}
%</pac-expert-drv>
%    \end{macrocode}
%
% Now the extra ligature fonts. First, the \texttt{longs} with
% \texttt{extraligs} option (see Section~\ref{sec:extraligs}):
%    \begin{macrocode}
%<*pac-extraligs-drv>
\installfont{pacraae9d}{pacr8r,pacr7a,pacr7ae,pacr8x,newlatinaae}{t1aaje}{T1}{pacaae}{m}{n}{ <->\string\adobecaslon@scaled}
\installfont{pacroaae9d}{pacro8r,pacro8x,newlatinaae}{t1aaje}{T1}{pacaae}{m}{sl}{ <->\string\adobecaslon@scaled}
\installfont{pacrcaae9d}{pacrc8x,pacr8x,newlatinaaesc}{t1aaje}{T1}{pacaae}{m}{sc}{ <->\string\adobecaslon@scaled}
\installfont{pacrcoaae9d}{pacrco8x,pacro8x,newlatinaaesc}{t1aaje}{T1}{pacaae}{m}{scit}{ <->\string\adobecaslon@scaled}
\installfont{pacriaae9d}{pacri8r,pacri7a,pacri7ae,pacri8x,newlatinaae}{t1aaje}{T1}{pacaae}{m}{it}{ <->\string\adobecaslon@scaled}
\installfont{pacsaae9d}{pacs8r,pacs7a,pacs7ae,pacs8x,newlatinaae}{t1aaje}{T1}{pacaae}{sb}{n}{ <->\string\adobecaslon@scaled}
\installfont{pacsoaae9d}{pacso8r,pacso8x,newlatinaae}{t1aaje}{T1}{pacaae}{sb}{sl}{ <->\string\adobecaslon@scaled}
\installfont{pacscaae9d}{pacsc8x,pacs8x,newlatinaaesc}{t1aaje}{T1}{pacaae}{sb}{sc}{ <->\string\adobecaslon@scaled}
\installfont{pacscoaae9d}{pacsco8x,pacso8x,newlatinaaesc}{t1aaje}{T1}{pacaae}{sb}{scit}{ <->\string\adobecaslon@scaled}
\installfont{pacsiaae9d}{pacsi8r,pacsi7a,pacsi7ae,pacsi8x,newlatinaae}{t1aaje}{T1}{pacaae}{sb}{it}{ <->\string\adobecaslon@scaled}
\installfont{pacbaae9d}{pacb8r,pacb7a,pacb7ae,pacb8x,newlatinaae}{t1aaje}{T1}{pacaae}{b}{n}{ <->\string\adobecaslon@scaled}
\installfont{pacbiaae9d}{pacbi8r,pacbi7a,pacbi7ae,pacbi8x,newlatinaae}{t1aaje}{T1}{pacaae}{b}{it}{ <->\string\adobecaslon@scaled}
%    \end{macrocode}
%
% Then the \texttt{c18th} with \texttt{extraligs} option:
%    \begin{macrocode}
\installfont{pacraa8e9d}{pacr8r,pacr7a,pacr7ae,pacr8x,newlatinaa8e}{t1aa8je}{T1}{pacaa8e}{m}{n}{ <->\string\adobecaslon@scaled}
\installfont{pacroaa8e9d}{pacro8r,pacro8x,newlatinaa8e}{t1aa8je}{T1}{pacaa8e}{m}{sl}{ <->\string\adobecaslon@scaled}
\installfont{pacrcaa8e9d}{pacrc8x,pacr8x,newlatinaa8esc}{t1aa8je}{T1}{pacaa8e}{m}{sc}{ <->\string\adobecaslon@scaled}
\installfont{pacrcoaa8e9d}{pacrco8x,pacro8x,newlatinaa8esc}{t1aa8je}{T1}{pacaa8e}{m}{scit}{ <->\string\adobecaslon@scaled}
\installfont{pacriaa8e9d}{pacri8r,pacri7a,pacri7ae,pacri8x,newlatinaa8e}{t1aa8je}{T1}{pacaa8e}{m}{it}{ <->\string\adobecaslon@scaled}
\installfont{pacsaa8e9d}{pacs8r,pacs7a,pacs7ae,pacs8x,newlatinaa8e}{t1aa8je}{T1}{pacaa8e}{sb}{n}{ <->\string\adobecaslon@scaled}
\installfont{pacsoaa8e9d}{pacso8r,pacso8x,newlatinaa8e}{t1aa8je}{T1}{pacaa8e}{sb}{sl}{ <->\string\adobecaslon@scaled}
\installfont{pacscaa8e9d}{pacsc8x,pacs8x,newlatinaa8esc}{t1aa8je}{T1}{pacaa8e}{sb}{sc}{ <->\string\adobecaslon@scaled}
\installfont{pacscoaa8e9d}{pacsco8x,pacso8x,newlatinaa8esc}{t1aa8je}{T1}{pacaa8e}{sb}{scit}{ <->\string\adobecaslon@scaled}
\installfont{pacsiaa8e9d}{pacsi8r,pacsi7a,pacsi7ae,pacsi8x,newlatinaa8e}{t1aa8je}{T1}{pacaa8e}{sb}{it}{ <->\string\adobecaslon@scaled}
\installfont{pacbaa8e9d}{pacb8r,pacb7a,pacb7ae,pacb8x,newlatinaa8e}{t1aa8je}{T1}{pacaa8e}{b}{n}{ <->\string\adobecaslon@scaled}
\installfont{pacbiaa8e9d}{pacbi8r,pacbi7a,pacbi7ae,pacbi8x,newlatinaa8e}{t1aa8je}{T1}{pacaa8e}{b}{it}{ <->\string\adobecaslon@scaled}
%</pac-extraligs-drv>
%    \end{macrocode}
%
% End the fonts installation:
%<*pac-expert-drv,pac-extraligs-drv>
%    \begin{macrocode}
\endinstallfonts
%    \end{macrocode}
%</pac-expert-drv,pac-extraligs-drv>
% End the driver:
%    \begin{macrocode}
\endrecordtransforms
\bye
%</pac-drv,pac-expert-drv,pac-extraligs-drv>
%    \end{macrocode}
%
%\subsection{Fontmap Generation}
%\label{sec:fontmap}
%
% This is a standard procedure~\cite{fontinstallationguide}
%    \begin{macrocode}
%<*pac-map>
\input finstmsc.sty
\resetstr{PSfontsuffix}{.pfb}
\adddriver{dvips}{pac.map}
\input pac-rec.tex
\donedrivers
\bye
%</pac-map>
%    \end{macrocode}
%
%\subsection{Metrics}
%
% Old-style ligatures on modern letters.
%
%    \begin{macrocode}
%<*newlatina>
\relax
\metrics

\inputmtx{newlatin}
\inputmtx{oldstyle-kerning}

\unfakable{st}
\unfakable{ct}

\endmetrics
%</newlatina>
%    \end{macrocode}
%
% Old-style ligatures with small caps.
%
%    \begin{macrocode}
%<*newlatinasc>
\relax
\metrics

\inputmtx{newlatin}
\inputmtx{oldstyle-kerning}

\setglyph{st}
  \glyph{s}{1000}
  \glyph{t}{1000}
\endsetglyph
\setglyph{ct}
  \glyph{c}{1000}
  \glyph{t}{1000}
\endsetglyph

\endmetrics
%</newlatinasc>
%    \end{macrocode}
%
% The `long s' variant.
%
%    \begin{macrocode}
%<*newlatinaa>
\relax
\metrics

\inputmtx{newlatina}
\inputmtx{longs-kerning}

\unfakable{longs}
\unfakable{longsh}
\unfakable{longsi}
\unfakable{longsl}
\unfakable{longst}
\unfakable{longdbls}

\endmetrics
%</newlatinaa>
%    \end{macrocode}
%
% The `long s' variant for small caps.
%
%    \begin{macrocode}
%<*newlatinaasc>
\relax
\metrics

\inputmtx{newlatinasc}
\inputmtx{longs-kerning}

\setglyph{longs}
  \glyph{s}{1000}
\endsetglyph
\setglyph{longsh}
  \glyph{s}{1000}
  \glyph{h}{1000}
\endsetglyph
\setglyph{longsi}
  \glyph{s}{1000}
  \glyph{i}{1000}
\endsetglyph
\setglyph{longsl}
  \glyph{s}{1000}
  \glyph{l}{1000}
\endsetglyph
\setglyph{longst}
  \glyph{s}{1000}
  \glyph{t}{1000}
\endsetglyph
\setglyph{longdbls}
  \glyph{s}{1000}
  \glyph{s}{1000}
\endsetglyph

\endmetrics
%</newlatinaasc>
%    \end{macrocode}
%
% The `long s' variant with extra ligatures.
%
%    \begin{macrocode}
%<*newlatinaae>
\relax
\metrics

\inputmtx{newlatinaa}
\inputmtx{longdbls-kerning}

\unfakable{longdblsi}
\unfakable{longdblsl}

\endmetrics
%</newlatinaae>
%    \end{macrocode}
%
% The `long s' variant with extra ligatures for small caps.
%
%    \begin{macrocode}
%<*newlatinaaesc>
\relax
\metrics

\inputmtx{newlatinaasc}
\inputmtx{longdbls-kerning}

\setglyph{longdblsi}
  \glyph{s}{1000}
  \glyph{s}{1000}
  \glyph{i}{1000}
\endsetglyph
\setglyph{longdblsl}
  \glyph{s}{1000}
  \glyph{s}{1000}
  \glyph{l}{1000}
\endsetglyph

\endmetrics
%</newlatinaaesc>
%    \end{macrocode}
%
% The 18th century variant.
%
%    \begin{macrocode}
%<*newlatinaa8>
\relax
\metrics

\inputmtx{newlatinaa}
\inputmtx{longss-kerning}
\inputmtx{longss-glyph}

\endmetrics
%</newlatinaa8>
%    \end{macrocode}
%
% The 18th century variant for small caps.
%
%    \begin{macrocode}
%<*newlatinaa8sc>
\relax
\metrics

\inputmtx{newlatinaasc}
\inputmtx{longss-kerning}
\inputmtx{longss-glyph-sc}

\endmetrics
%</newlatinaa8sc>
%    \end{macrocode}
%
% The 18th century variant with extra ligatures.
%
%    \begin{macrocode}
%<*newlatinaa8e>
\relax
\metrics

\inputmtx{newlatinaae}
\inputmtx{longss-kerning}
\inputmtx{longss-glyph}

\endmetrics
%</newlatinaa8e>
%    \end{macrocode}
%
% The 18th century variant with extra ligatures for small caps.
%
%    \begin{macrocode}
%<*newlatinaa8esc>
\relax
\metrics

\inputmtx{newlatinaaesc}
\inputmtx{longss-kerning}
\inputmtx{longss-glyph-sc}

\endmetrics
%</newlatinaa8esc>
%    \end{macrocode}
%
% A fragment for kerning old-style ligatures.
%
%    \begin{macrocode}
%<*oldstyle-kerning>
\setleftkerning{st}{s}{1000}
\setleftkerning{ct}{c}{1000}
\setrightkerning{st}{t}{1000}
\setrightkerning{ct}{t}{1000}
%</oldstyle-kerning>
%    \end{macrocode}
%
% A fragment for kerning `long s' ligatures.
%
%    \begin{macrocode}
%<*longs-kerning>
\setleftkerning{longsh}{longs}{1000}
\setrightkerning{longsh}{h}{1000}
\setleftkerning{longsi}{longs}{1000}
\setrightkerning{longsi}{i}{1000}
\setleftkerning{longsl}{longs}{1000}
\setrightkerning{longsl}{l}{1000}
\setleftkerning{longst}{longs}{1000}
\setrightkerning{longst}{t}{1000}
\setleftrightkerning{longdbls}{longs}{1000}
%</longs-kerning>
%    \end{macrocode}
%
% A fragment for kerning `double long s' ligatures.
%
%    \begin{macrocode}
%<*longdbls-kerning>
\setleftkerning{longdblsi}{longs}{1000}
\setrightkerning{longdblsi}{i}{1000}
\setleftkerning{longdblsl}{longs}{1000}
\setrightkerning{longdblsl}{l}{1000}
%</longdbls-kerning>
%    \end{macrocode}
%
% A fragment for kerning long `s' followed by `s'.
%
%    \begin{macrocode}
%<*longss-kerning>
\setleftkerning{longss}{longs}{1000}
\setrightkerning{longss}{s}{1000}
%</longss-kerning>
%    \end{macrocode}
%
% A fragment for a long `s' followed by `s' glyph.
%
%    \begin{macrocode}
%<*longss-glyph>
\setglyph{longss}
  \glyph{longs}{1000}
  \glyph{s}{1000}
\endsetglyph
%</longss-glyph>
%    \end{macrocode}
%
% A fragment for a long `s' followed by `s' glyph for small caps.
%
%    \begin{macrocode}
%<*longss-glyph-sc>
\setglyph{longss}
  \glyph{s}{1000}
  \glyph{s}{1000}
\endsetglyph
%</longss-glyph-sc>
%    \end{macrocode}
%
%\subsection{Encodings}
%
% The variant for old-style figures:
%
%    \begin{macrocode}
%<*t1aj>
\relax
\encoding

%% Define the parameters to produce a font with old-style figures
\setcommand\digit#1{#1oldstyle}

\inputetx{t1a}

\endencoding
%</t1aj>
%    \end{macrocode}
%
% The `long s' variant with old-style figures.
%
%    \begin{macrocode}
%<*t1aaj>
\relax
\encoding

%% Define the parameters to produce a font with old-style figures
\setcommand\digit#1{#1oldstyle}

\inputetx{t1aa}

\endencoding
%</t1aaj>
%    \end{macrocode}
%
% The eighteenth-century variant with old-style figures.
%
%    \begin{macrocode}
%<*t1aa8j>
\relax
\encoding

%% Define the parameters to produce a font with old-style figures
\setcommand\digit#1{#1oldstyle}

\inputetx{t1aa8}

\endencoding
%</t1aa8j>
%    \end{macrocode}
%
% The `long s' variant with old-style figures and extra ligatures.
%
%    \begin{macrocode}
%<*t1aaje>
\relax
\encoding

%% Define the parameters to produce a font with old-style figures
\setcommand\digit#1{#1oldstyle}

\inputetx{t1aae}

\endencoding
%</t1aaje>
%    \end{macrocode}
%
% The eighteenth-century variant with old-style figures and extra ligatures.
%
%    \begin{macrocode}
%<*t1aa8je>
\relax
\encoding

%% Define the parameters to produce a font with old-style figures
\setcommand\digit#1{#1oldstyle}

\inputetx{t1aa8e}

\endencoding
%</t1aa8je>
%    \end{macrocode}
%
%\subsection{Font definitions}
%
% We define the ornament and swash font encodings directly, in files
% from Ulrik Vieth's \textsf{pacaslon} package.
%
%\subsection{Style File}
%\label{sec:style}
%
%
% Declare the package options:
%    \begin{macrocode}
%<*style>
\RequirePackage{kvoptions}
\RequirePackage{ifthen}
\def\adobecaslonf@ntsuffix{}
\DeclareVoidOption{expert}{\def\adobecaslonf@ntsuffix{x}}
\DeclareVoidOption{osf}{\def\adobecaslonf@ntsuffix{j}}
\DeclareVoidOption{swashit}{\def\adobecaslonf@ntsuffix{w}}
\DeclareVoidOption{alternate}{\def\adobecaslonf@ntsuffix{a}}
\newif\ifadobecaslon@longs\adobecaslon@longsfalse
\DeclareVoidOption{longs}{\def\adobecaslonf@ntsuffix{aa}\adobecaslon@longstrue}
\newif\ifadobecaslon@eighteenth\adobecaslon@eighteenthfalse
\DeclareVoidOption{c18th}{\def\adobecaslonf@ntsuffix{aa8}\adobecaslon@eighteenthtrue}
\DeclareVoidOption{swashlongs}{\def\adobecaslonf@ntsuffix{aaw}}
\DeclareBoolOption[false]{extraligs}
\DeclareBoolOption[true]{rmdefault}
\DeclareComplementaryOption{normdefault}{rmdefault}
\DeclareStringOption[1.00]{scaled}
\DeclareBoolOption{bold}
\DeclareComplementaryOption{semibold}{bold}
\ProcessKeyvalOptions*
\def\adobecaslonf@ntextraligs{}
\ifadobecaslon@extraligs
  \def\adobecaslonf@ntextraligs{e}
  \ifthenelse{\(\boolean{adobecaslon@longs}\OR\boolean{adobecaslon@eighteenth}\)}{%
    \edef\adobecaslonf@ntsuffix{\adobecaslonf@ntsuffix e}}{}
\fi
\ifadobecaslon@rmdefault
  \renewcommand{\rmdefault}{pac\adobecaslonf@ntsuffix}
  \ifadobecaslon@bold\else
    \def\bfdefault{sb}
  \fi
\fi
%    \end{macrocode}
% 
%
% Some new commands:
%    \begin{macrocode}
\DeclareRobustCommand\adobecaslonfamily{\fontfamily{pac}\selectfont}
\DeclareTextFontCommand{\textadobecaslon}{\adobecaslonfamily}
\DeclareRobustCommand\sbseries{\fontseries{sb}\selectfont}
\DeclareTextFontCommand{\textsb}{\sbseries}
\DeclareRobustCommand\adobecaslonexpert{\fontfamily{pacx}\selectfont}
\DeclareRobustCommand\adobecaslonosf{\fontfamily{pacj}\selectfont}
\DeclareRobustCommand\adobecaslonalternate{\fontfamily{paca}\selectfont}
\DeclareRobustCommand\adobecaslonlongs{\fontfamily{pacaa\adobecaslonf@ntextraligs}\selectfont}
\DeclareRobustCommand\adobecasloneighteenth{\fontfamily{pacaa8\adobecaslonf@ntextraligs}\selectfont}
\DeclareRobustCommand\adobecaslonswashit{\usefont{T1}{pacw}{\f@series}{it}}
\DeclareRobustCommand\adobecaslonswashcaps{\usefont{U}{pac}{\f@series}{iw}}
\DeclareRobustCommand\adobecaslonornaments{\usefont{U}{pac}{m}{n}}
%</style>
%    \end{macrocode}
% 
%\subsection{Example output}
%
% A file with slight variants for core and expert fonts:
%
%    \begin{macrocode}
%<*pac-sample,pac-sample-expert,pac-sample-extraligs>
\documentclass{article}

\usepackage[T1]{fontenc}
\usepackage{ifpdf}
\ifpdf
   \pdfmapfile{+pac.map}
   \usepackage{microtype}
\fi
%<pac-sample>\usepackage[bold]{adobecaslon}
%<pac-sample-expert>\usepackage[expert,bold]{adobecaslon}
%<pac-sample-extraligs>\usepackage[extraligs,expert,bold]{adobecaslon}
\usepackage{textcomp}
\usepackage{lipsum}
\usepackage{slantsc}

%<pac-sample>\newcommand{\sampletext}{0123456789. fi, ffi, \textsc{small caps}.}
%<pac-sample-expert,pac-sample-extraligs>\newcommand{\sampletext}{0123456789 {\adobecaslonosf 0123456789}. fi, ffi, \textsc{small caps}, {\adobecaslonalternate ct st}.}

\begin{document}

Adobe Caslon Regular: \sampletext

{\itshape Adobe Caslon Italic: \sampletext}

{\sbseries Adobe Caslon Semibold: \sampletext

\itshape Adobe Caslon Semibold Italic: \sampletext}


{\bfseries Adobe Caslon Bold: \sampletext

\itshape Adobe Caslon Bold Italic: \sampletext}


Package \textsf{textcomp} allows us to typeset currencies: \texteuro25.00,
\pounds4.5, \textdollar6, \textyen4.

%</pac-sample,pac-sample-expert,pac-sample-extraligs>
%<*pac-sample-expert,pac-sample-extraligs>
{\adobecaslonlongs Some words with long `s': dress splice slice strife finesse sift shine session tussle stints.

A long line with splits-seen and a word to be hyphenated and should long: shes\-ellsseashells.

A long line with splits-seen and a word to be hyphenated and should long: shes\noboundary\-ellsseashells.}

{\adobecaslonswashit Some swash italics.}

Swash caps: {\adobecaslonswashcaps SQT}.

Ornaments: {\adobecaslonornaments 123ABCabc}.

18th-century mode: {\adobecasloneighteenth dress, kasbah, shake, sforza, fsork, ska}.

%</pac-sample-expert,pac-sample-extraligs>
%<*pac-sample,pac-sample-expert,pac-sample-extraligs>
\lipsum[1]

\end{document}
%</pac-sample,pac-sample-expert,pac-sample-extraligs>
%    \end{macrocode}
%
%
%
%\Finale
%\clearpage
%
%\PrintChanges
%\clearpage
%\PrintIndex
%
\endinput
