% \iffalse % $Id: divine.dtx,v 1.2 2013-03-08 18:13:46 boris Exp $ % % Copyright (c) 2013, 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{0} % % %% \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 \~} % % % \MakeShortVerb{|} % \GetFileInfo{divine.dtx} % \title{\LaTeX{} Support For T-26 Divine Font} % \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 T-26 Divine Font. It has % everything you need to typeset in this font - except the fonts % themselves. % \end{abstract} % \tableofcontents % % \clearpage % % %\section{Introduction} %\label{sec:intro} % % While such engines as \texttt{xetex} and \texttt{luatex} can use % native system fonts, the installation base of \texttt{pdftex} is % large enough to justify its continuing support with new fonts. % % % This package provides support files for the Divine Font Family from % T-26. According to the Fontname scheme~\cite{fontname}, this % corresponds to the family |lsb|. We provide the necessary font % files---everything but the fonts. % % Divine is a calligraphic font designed by Frank Heine and Marilyn % Devedjiev in 1995 (\url{http://www.t26.com/fonts/207-Divine}) and % distributed by T-26 foundry. % % %\section{Installation} %\label{sec:install} % % % % First, you need to purchase the font itself: the |pfb| files are % \emph{not} included in the package. You need just one file % |divine.pfb| If your \TeX{} system is TDS-compliant, install the % file into \path{$TEXMF/fonts/type1/t26/divine}. Download % \url{http://ctan.tug.org/install/fonts/psfonts/divine.tds.zip} and % unzip this file in \path{$TEXMF}. Add |+fdv.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. % % % % % The style |divine.sty| provides a number of commands for using the % font family (see Section~\ref{sec:divine.sty}) % % %\section{Using \LaTeX{} Style } %\label{sec:divine.sty} % % To use the package, add to the preamble of your document the usual % incantation \cmd{\usepackage}\oarg{options}|{divine}|. % % % The options |scaled=...| scales divine fonts to % the given scale. % % The font can be selected in the usual way: % \begin{verbatim} % \fontfamily{fdv}\selectfont % \end{verbatim} % % \DescribeMacro{\divinefamily} % \DescribeMacro{\textdivine} % Alternatively you can use a declaration |\divinefamily| and a % command |\textdivine| to set the family. % % \StopEventually{ % \clearpage % % \bibliography{divine} % \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{divine.dtx} %</gobble> %<style>\ProvidesClass{divine} %<fdv-drv>\ProvidesFile{fdv-drv.tex} %<fdv-map>\ProvidesFile{fdv-map.tex} [2013/03/07 v1.0 Using T26 Divine Font in LaTeX] % \end{macrocode} % And the driver code: % \begin{macrocode} %<*gobble> \documentclass{ltxdoc} \usepackage{booktabs} \usepackage{url} \usepackage[tableposition=top]{caption} \usepackage{hypdoc} \PageIndex \CodelineIndex \RecordChanges \EnableCrossrefs \begin{document} \DocInput{divine.dtx} \end{document} %</gobble> % \end{macrocode} % % % %\subsection{Fontinst Driver} %\label{sec:fdv-drv} % % This follows~\cite{fontinstallationguide}. % % First, the preamble % \begin{macrocode} %<*fdv-drv> \input fontinst.sty \substitutesilent{bx}{b} % \end{macrocode} % % % Starting recording transforms: % \begin{macrocode} \recordtransforms{fdv-rec.tex} % \end{macrocode} % A bunch of fonts: % \begin{macrocode} \transformfont{fdvr8r}{\reencodefont{8r}{\fromafm{divine}}} % \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 FDV@scale\string\endcsname\string\relax} \out_line{\space\string\let\string\FDV@@scale\string\@empty} \out_line{\string\else} \out_line{\space\string\edef\string\FDV@@scale\left_brace_char s*[\string\csname\space FDV@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 % \begin{macrocode} \installfonts \installfamily{T1}{fdv}{} \installfont{fdvr8t}{fdvr8r,newlatin}{t1}{T1}{fdv}{m}{n}{ <->\string\FDV@@scale} \endinstallfonts % \end{macrocode} % % % Then TS1 % \begin{macrocode} \installfonts \installfamily{TS1}{fdv}{} \installfont{fdvr8c}{fdvr8r,textcomp}{ts1}{TS1}{fdv}{m}{n}{ <->\string\FDV@@scale} \endinstallfonts % \end{macrocode} % % % And OT1 % \begin{macrocode} \installfonts \installfamily{OT1}{fdv}{} \installfont{fdvr7t}{fdvr8r,newlatin}{ot1}{OT1}{fdv}{m}{n}{ <->\string\FDV@@scale} \endinstallfonts % \end{macrocode} % % % And the end: % \begin{macrocode} \endrecordtransforms \bye %</fdv-drv> % \end{macrocode} % %\subsection{Fontmap Generation} %\label{sec:fontmap} % % This is a standard procedure~\cite{fontinstallationguide} % \begin{macrocode} %<*fdv-map> \input finstmsc.sty \resetstr{PSfontsuffix}{.pfb} \adddriver{dvips}{fdv.map} \input fdv-rec.tex \donedrivers \bye %</fdv-map> % \end{macrocode} % % % %\subsection{Style File} %\label{sec:style} % % % The scaling code is from the |helvet| package: % \begin{macrocode} %<*style> \newif\ifFDV@default \FDV@defaultfalse \RequirePackage{keyval} \define@key{FDV}{scaled}[1.00]{% \def\FDV@scale{#1}} \def\ProcessOptionsWithKV#1{% \let\@tempc\relax \let\FDV@tempa\@empty \ifx\@classoptionslist\relax\else \@for\CurrentOption:=\@classoptionslist\do{% \@ifundefined{KV@#1@\CurrentOption}% {}% {% \edef\FDV@tempa{\FDV@tempa,\CurrentOption,}% \@expandtwoargs\@removeelement\CurrentOption \@unusedoptionlist\@unusedoptionlist }% }% \fi \edef\FDV@tempa{% \noexpand\setkeys{#1}{% \FDV@tempa\@ptionlist{\@currname.\@currext}% }% }% \FDV@tempa \let\CurrentOption\@empty } \ProcessOptionsWithKV{FDV} \AtEndOfPackage{% \let\@unprocessedoptions\relax } % \end{macrocode} % % % Some new commands: % \begin{macrocode} \DeclareRobustCommand\divinefamily{\fontfamily{fdv}\selectfont} \DeclareTextFontCommand{\textdivine}{\divinefamily} %</style> % \end{macrocode} % % %\Finale %\clearpage % %\PrintChanges %\clearpage %\PrintIndex % \endinput