% \iffalse % $Id: futurans.dtx,v 1.20 2008-03-21 16:09:46 boris Exp $ % % Copyright (c) 2008, Boris Veytsman % % 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. % % \fi % \CheckSum{499} % % %% \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 \~} % %\iffalse % Taken from xkeyval.dtx %\fi %\makeatletter %\def\DescribeOption#1{\leavevmode\@bsphack % \marginpar{\raggedleft\PrintDescribeOption{#1}}% % \SpecialOptionIndex{#1}\@esphack\ignorespaces} %\def\PrintDescribeOption#1{\strut\emph{option}\\\MacroFont #1\ } %\def\SpecialOptionIndex#1{\@bsphack % \index{#1\actualchar{\protect\ttfamily#1} % (option)\encapchar usage}% % \index{options:\levelchar#1\actualchar{\protect\ttfamily#1}\encapchar % usage}\@esphack} %\def\DescribeOptions#1{\leavevmode\@bsphack % \marginpar{\raggedleft\strut\emph{options}% % \@for\@tempa:=#1\do{% % \\\strut\MacroFont\@tempa\SpecialOptionIndex\@tempa % }}\@esphack\ignorespaces} %\makeatother % % % \MakeShortVerb{|} % \GetFileInfo{futurans.dtx} % \title{\LaTeX{} Support For Futura Fonts From Adobe As Used By No % Starch Press} % \author{Boris Veytsman\thanks{% % \href{mailto:borisv@lk.net}{\texttt{borisv@lk.net}}, % \href{mailto:boris@varphi.com}{\texttt{boris@varphi.com}}}} % \date{\filedate, \fileversion} % \maketitle % \begin{abstract} % This package provides \LaTeX{} support for the Futura fonts from % Adobe (the version currently used by No Starch Press). It has % everything you need to typeset in these fonts - except the font % itself, of course. % \end{abstract} % \tableofcontents % % \changes{v1.0}{2008/02/18}{First fully functional version} % \changes{v1.0a}{2008/02/21}{Documentation update} % \changes{v1.0b}{2008/02/25}{Installation update} % \changes{v1.1}{2008/02/26}{Added light condensed letterspaced, bold % compressed and heavy compressed fonts} % \changes{v1.3}{2008/03/20}{Documentation update} % \changes{v1.3}{2008/03/20}{Added medium letterspaced and heavy % letterspaced fonts} % \clearpage % % %\section{Introduction} %\label{sec:intro} % % This package provides support files for the Futura Font family from % Adobe. According to the Fontname scheme~\cite{fontname} it % corresponds to the family |pfu|. There is a package on CTAN % supporting these fonts~\cite{w-a-schmidt}. Unfortunately the AFM % files provided by it seems to be slightly different from the ones % used by \emph{No Starch Press,} \url{http://www.nostarch.com}. The % analysis of the copyright statements shows that Walter Schmidt's % fonts are newer than ours (the latter are dated 1987). To prevent % clash with his |pfu| package, I chose the name |pfv| for this % release. % % This package is released under BSD license to make updating the % fonts metrics easier. % % The support is limited to T1 and TS1 encoding. No VTeX support % files are included. % % %\section{Installation} %\label{sec:install} % % % % First, you need to purchase the fonts themselves: the |pfb| files % are \emph{not} included in the package. If you got the fonts from % \emph{No Starch press,} do not rename the |pfb| files. However, if % there are uppercase letters in your file names, downcase them. If % you obtained the files from another source, rename the fonts % according to Table~\ref{tab:PFB}. If your \TeX{} system is % TDS-compliant, install the files into % \path{$TEXMF/fonts/type1/public/futurans}. Then download % \url{http://ctan.tug.org/install/fonts/psfonts/adobe/futurans.tds.zip} % and unzip this file in \path{$TEXMF}. Add |+pfv.map| to the % configuration files of dvips, pdftex and your dvi previewer. % % % Run updmap and texhash programs to update the configuration files % and file names database. % % % % \begin{table}[tp] % \centering % \caption{PFB Files} % \label{tab:PFB} % % \begin{tabular}{lll} % \toprule % File & Font & NFSS Code\\ % \midrule % |futucl13.pfb| & Futura Condensed Light & |lc|\\ % |futurc83.pfb| & Futura Condensed Medium & |mc|\\ % |futucb18.pfb| & Futura Condensed Bold & |bc|\\ % |futceb44.pfb| & Futura Condensed Extra Bold & |ebc|\\ % |futurl82.pfb| & Futura Light & |l|\\ % |futura.pfb| & Futura Medium & |m|\\ % |futurb37.pfb| & Futura Book & |k|\\ % |futurb41.pfb| & Futura Bold & |b|\\ % |futurh79.pfb| & Futura Heavy & |h|\\ % \bottomrule % \end{tabular} % % \end{table} % % %\section{Using \LaTeX{} Style } %\label{sec:futurans.sty} % % The package supplies a number of fonts. The series are listed in % Table~\ref{tab:PFB}. Each fonts has normal, slanted (oblique) and % small caps version. There are additional series necessary to typeset % books in \emph{No Starch Press} style. They were generated using % Fontinst~\cite{Jeffrey04:Fontinst}. These series are available for % Roman fonts only and are listed in Table~\ref{tab:addseries}. To % select any font, issue the corresponding NFSS command, for example % |\fontfamily{pfv}\fontseries{ebc}\selectfont|. To use make the font % the default sans serif font you may add |\usepackage{futurans}| to % your preamble. % % \begin{table}[tp] % \centering % % \caption{Additional Font Series Available} % \label{tab:addseries} % \begin{tabular}{ll} % \toprule % NFSS Code & Font\\ % \midrule % |lq| & Futura Light Letterspaced (10\% spread)\\ % |mq| & Futura Medium Letterspaced (10\% spread)\\ % |bq| & Futura Bold Letterspaced (10\% spread)\\ % |hq| & Futura Heavy Letterspaced (10\% spread)\\ % |bp| & Futura Bold Extra Compressed (110\% stretched Condensed)\\ % |hp| & Futura Heavy Compressed (90\% shrunk Heavy)\\ % \bottomrule % \end{tabular} % % \end{table} % % % \DescribeOption{scaled} % If you mix Futura with other fonts, you may want to scale it to get % better blending of Sans Serif with Roman. The package option |scaled| % can be used for this, for example % |\usepackage[scaled=0.95]{futurans}|. % % % % % \StopEventually{ % \clearpage % \paragraph{Acknowledgement} % This package was written for No Starch Press, % \url{http://www.nostarch.com}. % % \bibliography{futurans} % \bibliographystyle{unsrt}} % % \clearpage %\section{Implementation} %\label{sec:impl} % %\subsection{Identification} %\label{sec:ident} % % We start with the declaration who we are. Most |.dtx| files put % driver code in a separate driver file |.drv|. We roll this code into the % main file, and use the pseudo-guard |<gobble>| for it. % \begin{macrocode} %<style>\NeedsTeXFormat{LaTeX2e} %<*gobble> \ProvidesFile{futurans.dtx} %</gobble> %<style>\ProvidesClass{futurans} %<pfv-drv>\ProvidesFile{pfv-drv.tex} %<pfv-map>\ProvidesFile{pfv-map.tex} %<*!t1q&!ts1q> [2008/03/20 v1.3 Using Futura Fonts in LaTeX] %</!t1q&!ts1q> % \end{macrocode} % And the driver code: % \begin{macrocode} %<*gobble> \documentclass{ltxdoc} \usepackage{booktabs} \usepackage{url} \usepackage[breaklinks,colorlinks,linkcolor=black,citecolor=black, pagecolor=black,urlcolor=black,hyperindex=false]{hyperref} \PageIndex \CodelineIndex \RecordChanges \EnableCrossrefs \begin{document} \DocInput{futurans.dtx} \end{document} %</gobble> % \end{macrocode} % % %\subsection{Fontinst Driver} %\label{sec:drv} % % This follows~\cite{fontinstallationguide}. % % First, the preamble % \begin{macrocode} %<*pfv-drv> \input fontinst.sty \setint{smallcapsscale}{750} \setint{slant}{167} \substitutesilent{bx}{b} % \end{macrocode} % % % \begin{macro}{bpscale} % \begin{macro}{hpscale} % \changes{v1.2}{2008/02/29}{Changed scaling} % We scale condensed bold condensed and heavy % fonts to get compressed fonts: % \begin{macrocode} \setint{bpscale}{1100} \setint{hpscale}{900} % \end{macrocode} % \end{macro} % \end{macro} % % % \begin{macro}{qspread} % \changes{v1.2}{2008/02/29}{Changed letterspacing} % We spread light to get light letterspaced: % \begin{macrocode} \setint{qspread}{50} % \end{macrocode} % \end{macro} % % Starting recording transforms: % \begin{macrocode} \recordtransforms{pfv-rec.tex} % \end{macrocode} % % Standard fonts: % \begin{macrocode} \transformfont{pfvl8rc}{\reencodefont{8r}{\fromafm{futucl13}}} \transformfont{pfvm8rc}{\reencodefont{8r}{\fromafm{futurc83}}} \transformfont{pfvb8rc}{\reencodefont{8r}{\fromafm{futucb18}}} \transformfont{pfvx8rc}{\reencodefont{8r}{\fromafm{futceb44}}} \transformfont{pfvl8r}{\reencodefont{8r}{\fromafm{futurl82}}} \transformfont{pfvm8r}{\reencodefont{8r}{\fromafm{futura}}} \transformfont{pfvk8r}{\reencodefont{8r}{\fromafm{futurb37}}} \transformfont{pfvb8r}{\reencodefont{8r}{\fromafm{futurb41}}} \transformfont{pfvh8r}{\reencodefont{8r}{\fromafm{futurh79}}} % \end{macrocode} % % % Oblique fonts (we do not have original Adobe Oblique fonts, so we % fake them): % \begin{macrocode} \transformfont{pfvlo8rc}{\slantfont{\int{slant}}% \reencodefont{8r}{\fromafm{futucl13}}} \transformfont{pfvmo8rc}{\slantfont{\int{slant}}% \reencodefont{8r}{\fromafm{futurc83}}} \transformfont{pfvbo8rc}{\slantfont{\int{slant}}% \reencodefont{8r}{\fromafm{futucb18}}} \transformfont{pfvxo8rc}{\slantfont{\int{slant}}% \reencodefont{8r}{\fromafm{futceb44}}} \transformfont{pfvlo8r}{\slantfont{\int{slant}}% \reencodefont{8r}{\fromafm{futurl82}}} \transformfont{pfvmo8r}{\slantfont{\int{slant}}% \reencodefont{8r}{\fromafm{futura}}} \transformfont{pfvko8r}{\slantfont{\int{slant}}% \reencodefont{8r}{\fromafm{futurb37}}} \transformfont{pfvbo8r}{\slantfont{\int{slant}}% \reencodefont{8r}{\fromafm{futurb41}}} \transformfont{pfvho8r}{\slantfont{\int{slant}}% \reencodefont{8r}{\fromafm{futurh79}}} % \end{macrocode} % % % Compressed fonts: % \begin{macrocode} \transformfont{pfvb8rp}{\xscalefont{\int{bpscale}}% \reencodefont{8r}{\fromafm{futucb18}}} \transformfont{pfvh8rp}{\xscalefont{\int{hpscale}}% \reencodefont{8r}{\fromafm{futurh79}}} % \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. OK, we will patch fontinst: % \begin{macrocode} \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 Fns@scale\string\endcsname\string\relax} \out_line{\space\string\let\string\Fns@@scale\string\@empty} \out_line{\string\else} \out_line{\space\string\edef\string\Fns@@scale\left_brace_char s*[\string\csname\space Fns@scale\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. Note the scaling code (taken % from PSNFSS packages). Also, we generate a lot of fake small caps % fonts. % \begin{macrocode} \installfonts \installfamily{T1}{pfv}{} \installfont{pfvl8tc}{pfvl8rc,newlatin}{t1}{T1}{pfv}{lc}{n}{ <->\string\Fns@@scale} \installfont{pfvm8tc}{pfvm8rc,newlatin}{t1}{T1}{pfv}{mc}{n}{ <->\string\Fns@@scale} \installfont{pfvb8tc}{pfvb8rc,newlatin}{t1}{T1}{pfv}{bc}{n}{ <->\string\Fns@@scale} \installfont{pfvx8tc}{pfvx8rc,newlatin}{t1}{T1}{pfv}{ebc}{n}{ <->\string\Fns@@scale} \installfont{pfvl8t}{pfvl8r,newlatin}{t1}{T1}{pfv}{l}{n}{ <->\string\Fns@@scale} \installfont{pfvm8t}{pfvm8r,newlatin}{t1}{T1}{pfv}{m}{n}{ <->\string\Fns@@scale} \installfont{pfvk8t}{pfvk8r,newlatin}{t1}{T1}{pfv}{k}{n}{ <->\string\Fns@@scale} \installfont{pfvb8t}{pfvb8r,newlatin}{t1}{T1}{pfv}{b}{n}{ <->\string\Fns@@scale} \installfont{pfvh8t}{pfvh8r,newlatin}{t1}{T1}{pfv}{h}{n}{ <->\string\Fns@@scale} \installfont{pfvb8tp}{pfvb8rp,newlatin}{t1}{T1}{pfv}{bp}{n}{ <->\string\Fns@@scale} \installfont{pfvh8tp}{pfvh8rp,newlatin}{t1}{T1}{pfv}{hp}{n}{ <->\string\Fns@@scale} \installfont{pfvlo8tc}{pfvlo8rc,newlatin}{t1}{T1}{pfv}{lc}{sl}{ <->\string\Fns@@scale} \installfont{pfvmo8tc}{pfvmo8rc,newlatin}{t1}{T1}{pfv}{mc}{sl}{ <->\string\Fns@@scale} \installfont{pfvbo8tc}{pfvbo8rc,newlatin}{t1}{T1}{pfv}{bc}{sl}{ <->\string\Fns@@scale} \installfont{pfvxo8tc}{pfvxo8rc,newlatin}{t1}{T1}{pfv}{ebc}{sl}{ <->\string\Fns@@scale} \installfont{pfvlo8t}{pfvlo8r,newlatin}{t1}{T1}{pfv}{l}{sl}{ <->\string\Fns@@scale} \installfont{pfvmo8t}{pfvmo8r,newlatin}{t1}{T1}{pfv}{m}{sl}{ <->\string\Fns@@scale} \installfont{pfvko8t}{pfvko8r,newlatin}{t1}{T1}{pfv}{k}{sl}{ <->\string\Fns@@scale} \installfont{pfvbo8t}{pfvbo8r,newlatin}{t1}{T1}{pfv}{b}{sl}{ <->\string\Fns@@scale} \installfont{pfvho8t}{pfvho8r,newlatin}{t1}{T1}{pfv}{h}{sl}{ <->\string\Fns@@scale} \installfont{pfvlc8tc}{pfvl8rc,newlatin}{t1c}{T1}{pfv}{lc}{sc}{ <->\string\Fns@@scale} \installfont{pfvmc8tc}{pfvm8rc,newlatin}{t1c}{T1}{pfv}{mc}{sc}{ <->\string\Fns@@scale} \installfont{pfvbc8tc}{pfvb8rc,newlatin}{t1c}{T1}{pfv}{bc}{sc}{ <->\string\Fns@@scale} \installfont{pfvxc8tc}{pfvx8rc,newlatin}{t1c}{T1}{pfv}{ebc}{sc}{ <->\string\Fns@@scale} \installfont{pfvlc8t}{pfvl8r,newlatin}{t1c}{T1}{pfv}{l}{sc}{ <->\string\Fns@@scale} \installfont{pfvmc8t}{pfvm8r,newlatin}{t1c}{T1}{pfv}{m}{sc}{ <->\string\Fns@@scale} \installfont{pfvkc8t}{pfvk8r,newlatin}{t1c}{T1}{pfv}{k}{sc}{ <->\string\Fns@@scale} \installfont{pfvbc8t}{pfvb8r,newlatin}{t1c}{T1}{pfv}{b}{sc}{ <->\string\Fns@@scale} \installfont{pfvhc8t}{pfvh8r,newlatin}{t1c}{T1}{pfv}{h}{sc}{ <->\string\Fns@@scale} \installfont{pfvl8tlq}{pfvl8r,newlatin}{t1q}{T1}{pfv}{lq}{n}{ <->\string\Fns@@scale} \installfont{pfvl8tmq}{pfvm8r,newlatin}{t1q}{T1}{pfv}{mq}{n}{ <->\string\Fns@@scale} \installfont{pfvl8tbq}{pfvb8r,newlatin}{t1q}{T1}{pfv}{bq}{n}{ <->\string\Fns@@scale} \installfont{pfvl8thq}{pfvh8r,newlatin}{t1q}{T1}{pfv}{hq}{n}{ <->\string\Fns@@scale} \endinstallfonts % \end{macrocode} % % And then TS1 % \begin{macrocode} \installfonts \installfamily{TS1}{pfv}{} \installfont{pfvl8cc}{pfvl8rc,textcomp}{ts1}{TS1}{pfv}{lc}{n}{ <->\string\Fns@@scale} \installfont{pfvm8cc}{pfvm8rc,textcomp}{ts1}{TS1}{pfv}{mc}{n}{ <->\string\Fns@@scale} \installfont{pfvb8cc}{pfvb8rc,textcomp}{ts1}{TS1}{pfv}{bc}{n}{ <->\string\Fns@@scale} \installfont{pfvx8cc}{pfvx8rc,textcomp}{ts1}{TS1}{pfv}{ebc}{n}{ <->\string\Fns@@scale} \installfont{pfvl8c}{pfvl8r,textcomp}{ts1}{TS1}{pfv}{l}{n}{ <->\string\Fns@@scale} \installfont{pfvm8c}{pfvm8r,textcomp}{ts1}{TS1}{pfv}{m}{n}{ <->\string\Fns@@scale} \installfont{pfvk8c}{pfvk8r,textcomp}{ts1}{TS1}{pfv}{k}{n}{ <->\string\Fns@@scale} \installfont{pfvb8c}{pfvb8r,textcomp}{ts1}{TS1}{pfv}{b}{n}{ <->\string\Fns@@scale} \installfont{pfvh8c}{pfvh8r,textcomp}{ts1}{TS1}{pfv}{h}{n}{ <->\string\Fns@@scale} \installfont{pfvb8cp}{pfvb8rp,textcomp}{ts1}{TS1}{pfv}{bp}{n}{ <->\string\Fns@@scale} \installfont{pfvh8cp}{pfvh8rp,textcomp}{ts1}{TS1}{pfv}{hp}{n}{ <->\string\Fns@@scale} \installfont{pfvlo8cc}{pfvlo8rc,textcomp}{ts1}{TS1}{pfv}{lc}{sl}{ <->\string\Fns@@scale} \installfont{pfvmo8cc}{pfvmo8rc,textcomp}{ts1}{TS1}{pfv}{mc}{sl}{ <->\string\Fns@@scale} \installfont{pfvbo8cc}{pfvbo8rc,textcomp}{ts1}{TS1}{pfv}{bc}{sl}{ <->\string\Fns@@scale} \installfont{pfvxo8cc}{pfvxo8rc,textcomp}{ts1}{TS1}{pfv}{ebc}{sl}{ <->\string\Fns@@scale} \installfont{pfvlo8c}{pfvlo8r,textcomp}{ts1}{TS1}{pfv}{l}{sl}{ <->\string\Fns@@scale} \installfont{pfvmo8c}{pfvmo8r,textcomp}{ts1}{TS1}{pfv}{m}{sl}{ <->\string\Fns@@scale} \installfont{pfvko8c}{pfvko8r,textcomp}{ts1}{TS1}{pfv}{k}{sl}{ <->\string\Fns@@scale} \installfont{pfvbo8c}{pfvbo8r,textcomp}{ts1}{TS1}{pfv}{b}{sl}{ <->\string\Fns@@scale} \installfont{pfvho8c}{pfvho8r,textcomp}{ts1}{TS1}{pfv}{h}{sl}{ <->\string\Fns@@scale} \installfontas{pfvl8cc}{TS1}{pfv}{lc}{sc}{ <->\string\Fns@@scale} \installfontas{pfvm8cc}{TS1}{pfv}{mc}{sc}{ <->\string\Fns@@scale} \installfontas{pfvb8cc}{TS1}{pfv}{bc}{sc}{ <->\string\Fns@@scale} \installfontas{pfvx8cc}{TS1}{pfv}{ebc}{sc}{ <->\string\Fns@@scale} \installfontas{pfvl8c}{TS1}{pfv}{l}{sc}{ <->\string\Fns@@scale} \installfontas{pfvm8c}{TS1}{pfv}{m}{sc}{ <->\string\Fns@@scale} \installfontas{pfvk8c}{TS1}{pfv}{k}{sc}{ <->\string\Fns@@scale} \installfontas{pfvb8c}{TS1}{pfv}{b}{sc}{ <->\string\Fns@@scale} \installfontas{pfvh8c}{TS1}{pfv}{h}{sc}{ <->\string\Fns@@scale} \installfont{pfvl8clq}{pfvl8r,textcomp}{ts1q}{TS1}{pfv}{lq}{n}{ <->\string\Fns@@scale} \installfont{pfvl8cmq}{pfvm8r,textcomp}{ts1q}{TS1}{pfv}{mq}{n}{ <->\string\Fns@@scale} \installfont{pfvl8cbq}{pfvb8r,textcomp}{ts1q}{TS1}{pfv}{bq}{n}{ <->\string\Fns@@scale} \installfont{pfvl8chq}{pfvh8r,textcomp}{ts1q}{TS1}{pfv}{hq}{n}{ <->\string\Fns@@scale} \endinstallfonts % \end{macrocode} % % And the end: % \begin{macrocode} \endrecordtransforms \bye %</pfv-drv> % \end{macrocode} % % %\subsection{Letterspacing Driver} %\label{sec:letterspace} % % This follows~\cite{Hoenig98:TeXUnbound}. We need both |T1| and % |TS1| files: % \begin{macrocode} %<*t1q|ts1q> \relax \encoding \resetint{letterspacing}{\int{qspread}} \setcommand\gobblethree#1#2#3{}% \let\ligature=\gobblethree %<t1q>\inputetx{t1} %<ts1q>\inputetx{ts1} \endencoding %</t1q|ts1q> % \end{macrocode} % % %\subsection{Fontmap Generation} %\label{sec:fontmap} % % This is a standard procedure~\cite{fontinstallationguide} % \begin{macrocode} %<*pfv-map> \input finstmsc.sty \resetstr{PSfontsuffix}{.pfb} \adddriver{dvips}{pfv.map} \input pfv-rec.tex \donedrivers \bye %</pfv-map> % \end{macrocode} % % % %\subsection{Style File} %\label{sec:style} % % % The scaling code is from the |helvet| package: % \begin{macrocode} %<*style> \RequirePackage[T1]{fontenc} \RequirePackage{textcomp} \RequirePackage{keyval} \define@key{Futurans}{scaled}[1]{% \def\Fns@scale{#1}} \def\ProcessOptionsWithKV#1{% \let\@tempc\relax \let\Fns@tempa\@empty \ifx\@classoptionslist\relax\else \@for\CurrentOption:=\@classoptionslist\do{% \@ifundefined{KV@#1@\CurrentOption}% {}% {% \edef\Fns@tempa{\Fns@tempa,\CurrentOption,}% \@expandtwoargs\@removeelement\CurrentOption \@unusedoptionlist\@unusedoptionlist }% }% \fi \edef\Fns@tempa{% \noexpand\setkeys{#1}{% \Fns@tempa\@ptionlist{\@currname.\@currext}% }% }% \Fns@tempa \let\CurrentOption\@empty } \ProcessOptionsWithKV{Futurans} \AtEndOfPackage{% \let\@unprocessedoptions\relax } \renewcommand{\sfdefault}{pfv} %</style> % \end{macrocode} % % %\Finale %\clearpage % %\PrintChanges %\clearpage %\PrintIndex % \endinput