% \iffalse % $Id: gillcm.dtx,v 1.6 2010-07-30 20:40:55 boris Exp $ % % Copyright (c) 2010, 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{138} % % %% \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{gillcm.dtx} % \title{Unslanted Italic Computer Modern Fonts Based on Eric Gill's Ideas} % \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 is a demonstration of the use of virtual fonts for unusual % effects. We employ virtual fonts to implement an old idea of Eric % Gill. This package was written for the author's talk % at TUG'2010. % \end{abstract} % \tableofcontents % \listoffigures % \listoftables % \clearpage % % \changes{v1.0}{2010/05/08}{First fully functional version} % \changes{v1.1}{2010/07/28}{Documentation update} % %\section{Introduction} %\label{sec:intro} % % This package is mostly a demonstration of the use of % \textsf{Fontinst}~\cite{Jeffrey04:Fontinst} for mixing and changing % fonts. I wrote it as an appendix for my talk at TUG'2010. Of % course, as it happens with many teachers, I myself learned a lot % while making this demo. % % The demo assumes some knowledge of \TeX{} and the way of writing % |dtx| files~\cite{Clsguide}. % % Eric Gill said that unslanted italics should use Roman uppercase % letters~\cite{Gill:Typography}: % \begin{quote} % Properly speaking, there is no such thing as an alphabet of italic % capitals, and where upright or nearly upright italics are used % ordinary upright Roman capitals go perfectly well with them. % \end{quote} % % Let us create a font with italic lowercase and upright uppercase. % Actually we create \emph{two} fonts: one based on ``normal'', i.e. % slanted italics, and one based on unslanted ones (we call them % |gishape| and |gushape|). In both cases we start with Computer % Modern Italics, and perform all changes using virtual fonts % mechanism. % % Alan Hoenig in his book~\cite{Hoenig98:TeXUnbound} gives another % example of a font based on Gill's idea. % % % A couple words about the installation of the system. You need the file % \url{http://ctan.tug.org/install/fonts/psfonts/public/gillcm.tds.zip}/ % Unzip this file in \path{$TEXMF}. Add |+cmg.map| to the % configuration files of dvips, pdftex and your dvi previewer. How % exactly you do this depends on the \TeX{} distribution you use. For \TeX Live you create a file % \path{$TEXMF/updmap.d/50gcm.cfg} with just the line % \begin{verbatim} % Map gcm.map % \end{verbatim} % and then run |texhash| and |updmap|. If you use Debian or Ubuntu, % the system-wide |updmap.d| directory is located in |/etc|, and you % need to create the file |gcm.list| in % \path{/var/lib/tex-common/fontmap-cfg/} with the line % \begin{verbatim} % 50gcm % \end{verbatim} % % % If you use Mik\TeX2.6, run % \begin{verbatim} % initexmf --edit-config-file updmap % \end{verbatim} % Add to the config file % \begin{verbatim} % Map gcm.map % \end{verbatim} % save, exit and run |updmap|. % % If you use Mik\TeX2.5 or earlier, edit % \path{localtexmf\web2c\updmap.cfg}, adding the line % \begin{verbatim} % Map gcm.map % \end{verbatim} % and run |updmap|. % % After this run updmap and texhash programs to update the % configuration files and file names database. % % Refer to your distribution documentation for the further details. % % % % %\DescribeMacro{\gishape} %\DescribeMacro{\gushape} % To use the fonts in \LaTeX{} just add % |\usepackage{gillcm}| to the preamble of your document. The style % adds two new commands |\gishape| and |\gushape| that typeset % ``Gillized'' italics and ``Gillized'' upright italics. % % % % % \StopEventually{ % % \section{Acknowledgements} % % Most of the things I know about virtual fonts I learned from the % excellent book~\cite{Hoenig98:TeXUnbound} and the % manual~\cite{fontinstallationguide}. I am grateful to \TeX{} Users % Group and Karl Berry for encouraging my interest in virtual fonts % and to my consulting customers for their support of my font % projects. % % \bibliography{gillcm} % \bibliographystyle{unsrt}} % %\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. This means % that the text between |<*gobble>| and |</gobble>| will \emph{not} % end in any derived file, but it will be used to typeset this manual. % % We also use the following guards: |<style>| for \LaTeX{} style, % |<drv>| for \textsf{Fontinst} driver |drv.tex|, |<map>| for % \textsf{Fontinst} map generator |map.tex| and |<mtx>| for the font % metrics file |delupper.mtx|. More about these files below. Note % that |mtx| files do not allow \LaTeX{} command |\ProvidesFile|, so % we do not put it there. % \begin{macrocode} %<style>\NeedsTeXFormat{LaTeX2e} %<*gobble> \ProvidesFile{gillcm.dtx} %</gobble> %<style>\ProvidesClass{gillcm} %<drv>\ProvidesFile{drv.tex} %<map>\ProvidesFile{map.tex} %<*!mtx> [2010/07/28 v1.1 Computer Modern Italics with Gill extensions] %</!mtx> % \end{macrocode} % And the driver code: % \begin{macrocode} %<*gobble> \documentclass{ltxdoc} \usepackage{booktabs,amsmath} \usepackage{url} \usepackage[breaklinks,colorlinks,linkcolor=black,citecolor=black, pagecolor=black,urlcolor=black,hyperindex=false]{hyperref} \PageIndex \CodelineIndex \RecordChanges \EnableCrossrefs \begin{document} \DocInput{gillcm.dtx} \end{document} %</gobble> % \end{macrocode} % % \subsection{Preparation of Computer Modern Fonts} % % We deal with Type~1 fonts, so we need Computer Modern Roman and % Italic in the PFB formats. They are provided, for example, by % \textsf{cm-super} package. We need the files listed in % Table~\ref{tab:cm}. We copy them into the working directory. Since % \textsf{Fontinst} prefers ASCII files, we extract metric information % from them using |pf2afm| utility. % % The famous |make| program allows us to write down these operations % succinctly as shown on Figure~\ref{fig:afm}. Here the first % paragraph lists our PFB files, the second one says that each PFB % file corresponds to one AFM file, the third paragraph tells |make| % to copy the PFB file from wherever they are (since |kpsewhich|) to % the current directory, and the last paragraph instructs |make| to % apply |pf2afm| to each PFB file. Of course if you do not want to % use |make|, you can perform all these operations manually. % % \begin{figure} % \centering % \begin{verbatim} % PFB =\ % cmti10.pfb\ % cmr10.pfb \ % cmbxti10.pfb \ % cmbx10.pfb % % AFM = ${PFB:%.pfb=%.afm} % % %.pfb: % cp `kpsewhich $@` . % % %.afm: %.pfb % pf2afm $< % \end{verbatim} % \caption{Creating AFM Files Using \texttt{Makefile}} % \label{fig:afm} % \end{figure} % % % \begin{table} % \centering % \caption{Computer Modern Font Files} % \label{tab:cm} % \begin{tabular}{ll} % \toprule % File & Font\\ % \midrule % |cmti10.pfb| & Computer Modern Italic\\ % |cmr10.pfb| & Computer Modern Roman \\ % |cmbxti10.pfb| & Computer Modern Bold Italic\\ % |cmbx10.pfb| & Computer Modern Bold\\ % \bottomrule % \end{tabular} % \end{table} % %\subsection{Fontinst Driver} %\label{sec:drv} % % In this section we construct the file |drv.tex| which does most of % the work. % % % First, we read the \textsf{Fontinst} program |fontinst.sty|: % \begin{macrocode} %<*drv> \input fontinst.sty % \end{macrocode} % % % We want to ``unslant'' the fonts. This can be imagined as negative % slanting. The characteristic angle of Computer Modern Italics is % $167/1000$ (technically, this is the tangent of the angle, so the % angle itself is $\tan^{-1}(0.167) = 9^{\circ}28'51''$), so we use % $-167/1000$ as our characteristic angle: % \begin{macrocode} \setint{slant}{-167} % \end{macrocode} % % Now it is time to uncover a white lie in Table~\ref{tab:cm}: the % ``bold'' fonts listed there are actually bold extended fonts: they % are slightly widened in the horizontal direction. By tradition we % call them nevertheless bold. The next line facilitates this white % lie: it instructs \textsf{Fontinst} to silently substitute bold % extended fonts whenever a user request bold fonts. % \begin{macrocode} \substitutesilent{bx}{b} % \end{macrocode} % % % % \textsf{Fontinst} is designed to create virtual font files for \TeX. % However, it also can be used to automatically create ``font maps'': % special files read by |dvips| or |pdftex| to map PFB files into the % virtual fonts. To do this we need to \emph{record transformations} % of Type~1 fonts for the map creation program. Fortunately, % \textsf{Fontinst} can do this for us too. The following command % starts this recording: % \begin{macrocode} \recordtransforms{rec.tex} % \end{macrocode} % The command |\endrecordtransforms| below dumps these recordings % into the file |rec.tex|. The resulting file is shown on % Figure~\ref{fig:rec}. % % \begin{figure} % \centering % \begin{verbatim} % \storemapdata{cmr10}{\fromafm{cmr10}{CMR10}}{} % \storemapdata{cmgm8r}{\frommtx{cmr10}}{\reencodefont{8r}} % \storemapdata{cmti10}{\fromafm{cmti10}{CMTI10}}{} % \storemapdata{cmgmi8r}{\frommtx{cmti10}}{\reencodefont{8r}} % \storemapdata{cmti10}{\fromafm{cmti10}{CMTI10}}{} % \storemapdata{cmgmiu8r}{\frommtx{cmti10}}{\reencodefont{8r}\transformfont{1000}{-167}} % \storemapdata{cmbx10}{\fromafm{cmbx10}{CMBX10}}{} % \storemapdata{cmgb8r}{\frommtx{cmbx10}}{\reencodefont{8r}} % \storemapdata{cmbxti10}{\fromafm{cmbxti10}{CMBXTI10}}{} % \storemapdata{cmgbi8r}{\frommtx{cmbxti10}}{\reencodefont{8r}} % \storemapdata{cmbxti10}{\fromafm{cmbxti10}{CMBXTI10}}{} % \storemapdata{cmgbiu8r}{\frommtx{cmbxti10}}{\reencodefont{8r}\transformfont{1000}{-167}} % \makemapentry{cmgmi8r} % \makemapentry{cmgm8r} % \makemapentry{cmgbi8r} % \makemapentry{cmgb8r} % \makemapentry{cmgmiu8r} % \makemapentry{cmgm8r} % \makemapentry{cmgbiu8r} % \makemapentry{cmgb8r} % \makemapentry{cmgmi8r} % \makemapentry{cmgm8r} % \makemapentry{cmgbi8r} % \makemapentry{cmgb8r} % \makemapentry{cmgmiu8r} % \makemapentry{cmgm8r} % \makemapentry{cmgbiu8r} % \makemapentry{cmgb8r} % \makemapentry{cmgmi8r} % \makemapentry{cmgm8r} % \makemapentry{cmgbi8r} % \makemapentry{cmgb8r} % \makemapentry{cmgmiu8r} % \makemapentry{cmgm8r} % \makemapentry{cmgbiu8r} % \makemapentry{cmgb8r} % \end{verbatim} % \caption{File \texttt{rec.tex} (created automatically)} % \label{fig:rec} % \end{figure} % % % Now we can create the fonts to play with. We will follow Karl % Berry's scheme~\cite{fontname} for naming them. The font family % will be called |cmg| (Computer Modern Gillized). The next letters % are |m| for medium, |mi| for medium italic, |miu| for medium % italic unslanted, and |b|, |bi|, |biu| for the corresponding bold % variants. The last symbols correspond to font encoding. % % We start with the fonts in the |8r| (\TeX{} Base 1) encoding. % % First, let us create a medium Roman font. We take Computer Modern % Roman file |cmr10.afm| and reencode it. The main command is % |\trnasformfont|. Its first argument (|cmgm8r|) is the resulting % font (remember, the family is |cmg|, the weight is |m| and the % encoding is |8r|). Its second argument is the source. This argument % says that we take |cmr10.afm| (|\fromafm| command) and reencode it % to the required encoding (|\reencodefont|): % \begin{macrocode} \transformfont{cmgm8r}{\reencodefont{8r}{\fromafm{cmr10}}} % \end{macrocode} % % In the same way we create medium italic font |cmgmi8r| from the file % |cmti10.afm|: % \begin{macrocode} \transformfont{cmgmi8r}{\reencodefont{8r}{\fromafm{cmti10}}} % \end{macrocode} % % The italic unslanted font |cmgmiu8r| is different: not only we % reencode the source, we also unslant it, or, rather, slant it using % the negative angle |\int{slant}| defined above. This is done by the % command |\slantfont|: % \begin{macrocode} \transformfont{cmgmiu8r}{\slantfont{\int{slant}}% \reencodefont{8r}{\fromafm{cmti10}}} % \end{macrocode} % % In the similar manner we create three bold fonts: Roman, italic and % italic unslanted: % \begin{macrocode} \transformfont{cmgb8r}{\reencodefont{8r}{\fromafm{cmbx10}}} \transformfont{cmgbi8r}{\reencodefont{8r}{\fromafm{cmbxti10}}} \transformfont{cmgbiu8r}{\slantfont{\int{slant}}% \reencodefont{8r}{\fromafm{cmbxti10}}} % \end{macrocode} % % % Fonts in \TeX{} Base 1 encoding are useful for manipulation, but % they are not directly usable in \TeX{} or \LaTeX{} documents. In % this package we create fonts in the traditional \TeX{} encoding % (|OT1|) and Cork encoding (|T1|). \textsf{Fontinst} can create for % us both virtual font files and \LaTeX{} font description files % (|.fd|). This is (rather unfortunately) called font installation. % All font installation commands must be bracketed between % |\installfonts| and |\endinstallfonts| directives. so we start with % the first one: % \begin{macrocode} \installfonts % \end{macrocode} % % Then we declare the family and encoding we are going to install. % Let us start with |OT1|. Do not worry about the third (empty) % argument of the |\installfamily| command. % \begin{macrocode} \installfamily{OT1}{cmg}{} % \end{macrocode} % % Now the real work begins. Let us construct ``Gillized'' Computer % Modern Italic font. According to our scheme it will be called % |cmgmi7t|. This name is the first argument of |\installfont| % command. % % The second argument is the set of MTX files; one can view it as % instructions to \textsf{Fontinst} describing \emph{how} to construct % the file. We start from the file |cmgmi8r|, created on the previous % step. It is just Computer Modern Italic. The next instruction is % |delupper|. It refers to the file |delupper.mtx|, which we create % below (Section~\ref{sec:delupper}). For now it is enough to say % that this file deletes from the font all uppercase letters. If we % would stop here, the resulting font would have empty spaces instead % of letters A, B, \dots{} However, we do not stop and add another % instruction, |cmgm8r|. Let us recall that |cmgm8r| is Computer % Modern Roman. Therefore \textsf{Fontinst} will take the characters % from this font and add it to the font created so far. Which % characters will be added? The lowercase characters a, b, \dots{} % are already filled up (\textsf{Fontinst} does not fill the slots % already taken), so only empty spaces will be taken from the Roman % font---i.e. the spaces that our |delupper.mtx| emptied. We get a % combined font! The last instruction, |latin| tells % \textsf{Fontinst} how to construct the characters that are absent % from the fonts (like the euro sign). It is always prudent to % include it as the last resort. % % The next argument of the |\installfont| command is the encoding of % the result (actually, it can include a list of the so called ETX % files). % % The last four arguments are used to construct \LaTeX{} font % definition files. They say that \LaTeX{} should consider the % resulting file to have encoding |OT1|, belong to the family |cmg|, % have medium weight (|m|) and ``Gill Italic'' shape (|gi|). Again, % do not mind the last (empty) argument. % % So the command looks like the following: % \begin{macrocode} \installfont{cmgmi7t}{cmgmi8r,delupper,cmgm8r,latin}{ot1}{OT1}{cmg}{m}{gi}{} % \end{macrocode} % % We repeat this with bold weight: % \begin{macrocode} \installfont{cmgbi7t}{cmgbi8r,delupper,cmgb8r,latin}{ot1}{OT1}{cmg}{bx}{gi}{} % \end{macrocode} % % Unslanted italics are made in the same way, using |cmgmiu8r| and % |cmgbiu8r| as the source: % \begin{macrocode} \installfont{cmgmiu7t}{cmgmiu8r,delupper,cmgm8r,latin}{ot1}{OT1}{cmg}{m}{gu}{} \installfont{cmgbiu7t}{cmgbiu8r,delupper,cmgb8r,latin}{ot1}{OT1}{cmg}{bx}{gu}{} % \end{macrocode} % % We repeat this with |T1| encoding. Note that for |T1| the % ``instructions of the last resort'' are in the file |newlatin.mtx|: % \begin{macrocode} \installfamily{T1}{cmg}{} \installfont{cmgmi8t}{cmgmi8r,delupper,cmgm8r,newlatin}{t1}{T1}{cmg}{m}{gi}{} \installfont{cmgbi8t}{cmgbi8r,delupper,cmgb8r,newlatin}{t1}{T1}{cmg}{bx}{gi}{} \installfont{cmgmiu8t}{cmgmiu8r,delupper,cmgm8r,newlatin}{t1}{T1}{cmg}{m}{gu}{} \installfont{cmgbiu8t}{cmgbiu8r,delupper,cmgb8r,newlatin}{t1}{T1}{cmg}{bx}{gu}{} % \end{macrocode} % % Fonts in |T1| encoding should be accompanied by fonts in the ``text % companion'' encoding |TS1|. They include special symbols and % accents: % \begin{macrocode} \installfamily{TS1}{cmg}{} \installfont{cmgmi8c}{cmgmi8r,delupper,cmgm8r,textcomp}{ts1}{TS1}{cmg}{m}{gi}{} \installfont{cmgbi8c}{cmgbi8r,delupper,cmgb8r,textcomp}{ts1}{TS1}{cmg}{bx}{gi}{} \installfont{cmgmiu8c}{cmgmiu8r,delupper,cmgm8r,textcomp}{ts1}{TS1}{cmg}{m}{gu}{} \installfont{cmgbiu8c}{cmgbiu8r,delupper,cmgb8r,textcomp}{ts1}{TS1}{cmg}{bx}{gu}{} % \end{macrocode} % % This finishes our file. Let us just close the open groups: % \begin{macrocode} \endinstallfonts \endrecordtransforms \bye %</drv> % \end{macrocode} % % %\subsection{Fontmap Generation} %\label{sec:fontmap} % % The file |map.tex| is used to create font map file. In this section % we create it. % % First, we read the corresponding \textsf{Fontinst} file: % \begin{macrocode} %<*map> \input finstmsc.sty % \end{macrocode} % % Next, we tell \textsf{Fontinst} that our Postscript files have the % extension |.pfb| and that the resulting map should be called |cmg.map|: % \begin{macrocode} \resetstr{PSfontsuffix}{.pfb} \adddriver{dvips}{cmg.map} % \end{macrocode} % % Then we read the file |rec.tex| which is generated by the run of % |drv.tex| (Figure~\ref{fig:rec}): % \begin{macrocode} \input rec.tex % \end{macrocode} % % And that is all: % \begin{macrocode} \donedrivers \bye %</map> % \end{macrocode} % % %\subsection{Deleting Uppercase Glyphs} %\label{sec:delupper} % % % Our |\installfont| instructions include deleting all uppercase % letters from the italic fonts. This is done by the file % |delupper.mtx|, which we describe here. % % % Everything between |\relax| and |\metrix| is just a comment: % \begin{macrocode} %<*mtx> \relax Unset all uppercase letters and punctuation \metrics % \end{macrocode} % % The file itself uses the command |\unsetglyph|. We unset the % uppercase letters, parenthesizes, etc. % \begin{macrocode} \unsetglyph{A} \unsetglyph{B} \unsetglyph{C} \unsetglyph{D} \unsetglyph{E} \unsetglyph{F} \unsetglyph{G} \unsetglyph{H} \unsetglyph{I} \unsetglyph{J} \unsetglyph{K} \unsetglyph{L} \unsetglyph{M} \unsetglyph{N} \unsetglyph{O} \unsetglyph{P} \unsetglyph{Q} \unsetglyph{R} \unsetglyph{S} \unsetglyph{T} \unsetglyph{U} \unsetglyph{V} \unsetglyph{W} \unsetglyph{X} \unsetglyph{Y} \unsetglyph{Z} \unsetglyph{AE} \unsetglyph{OE} \unsetglyph{Oslash} \unsetglyph{exclam} \unsetglyph{parenleft} \unsetglyph{parenright} \unsetglyph{comma} \unsetglyph{period} \unsetglyph{slash} \unsetglyph{zero} \unsetglyph{one} \unsetglyph{two} \unsetglyph{three} \unsetglyph{four} \unsetglyph{five} \unsetglyph{six} \unsetglyph{seven} \unsetglyph{eight} \unsetglyph{nine} \unsetglyph{colon} \unsetglyph{semicolon} \unsetglyph{exclamdown} \unsetglyph{questiondown} \unsetglyph{question} \unsetglyph{bracketleft} \unsetglyph{bracketright} \endmetrics %</mtx> % \end{macrocode} % % %\subsection{Creation of Fonts} %\label{sec:creation} % % Now we are ready to create fonts. We need to run % \begin{verbatim} % latex drv.tex % latex map.tex % \end{verbatim} % This will create a lot of |.pl| and |.vpl| files. They should be % converted into binary format using utilities |pltotf| and |vptovf|. % On Figure~\ref{fig:tfm} we show how to do all these tasks using % |make|. Of course, we can run all these commands manually. % % \begin{figure} % \centering % \begin{verbatim} % %.map: drv.tex map.tex $(AFM) % pdflatex drv.tex % pdflatex map.tex % for x in *.pl; do pltotf $$x; done % for x in *.vpl; do vptovf $$x; done % \end{verbatim} % \caption{Creating TFM and VF Files using \texttt{Makefile}} % \label{fig:tfm} % \end{figure} % %\subsection{Style File} %\label{sec:style} % % To use the fonts in \LaTeX{} let us define commands |\gishape| and % |\gushape| that select Gill Italic and Gill Unslanted Italic % correspondingly. Note that they should work only in text mode; % math mode should use ``normal'' italics. Here we are: % \begin{macrocode} %<*style> \DeclareRobustCommand\gishape {\not@math@alphabet\itshape\mathit \fontshape{gi}\fontfamily{cmg}\selectfont} \DeclareRobustCommand\gushape {\not@math@alphabet\itshape\mathit \fontshape{gu}\fontfamily{cmg}\selectfont} %</style> % \end{macrocode} % % %\subsection{Creation of Installation Archive} %\label{sec:tds} % % The last step is to put all the files in the structure suitable for % the modern \TeX{} installations (the so called TDS structure). We % will create the archive |gillcm.tds.zip| with the relevant files. % The archive is packed into the |gillcm.tgz| file ready to be shipped % to CTAN. Of course, we do not want to ship Computer Modern fonts, % so we delete them from the directory first. % % The corresponding fragment of |Makefile| is shown on % Figure~\ref{fig:archive}. % % \begin{figure} % \centering % \begin{verbatim} % archive: all clean % $(RM) cmr*.tfm cmt*.tfm cmb*.tfm % $(RM) cmr*.afm cmt*.afm cmb*.afm % $(RM) cmr*.vf cmt*.vf cmb*.vf % mkdir -p fonts/tfm/$(FOUNDRY)/$(PACKAGE) % cp *.tfm fonts/tfm/$(FOUNDRY)/$(PACKAGE) % mkdir -p fonts/vf/$(FOUNDRY)/$(PACKAGE) % cp *.vf fonts/vf/$(FOUNDRY)/$(PACKAGE) % mkdir -p fonts/map/dvips/$(PACKAGE) % cp *.map fonts/map/dvips/$(PACKAGE) % mkdir -p tex/latex/$(PACKAGE) % cp *.fd *.sty tex/latex/$(PACKAGE) % mkdir -p doc/latex/$(PACKAGE) % cp README *.pdf *.tex *.bib *.dtx *.ins doc/latex/$(PACKAGE) % zip -r $(PACKAGE).tds.zip fonts tex doc % tar -czvf $(PACKAGE).tgz \ % README $(PACKAGE).tds.zip *.tex *.pdf *.bib *.dtx *.ins % \end{verbatim} % \caption{Creation of Installation File for CTAN} % \label{fig:archive} % \end{figure} % % % This finishes our task! % %\Finale %\clearpage % %\PrintChanges %\clearpage %\PrintIndex % \endinput