summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/relenc/t1rzcm.fdd
blob: 2be089ec31435da4353f91f92f17490c4676266c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
%% \CheckSum{26}
% \iffalse (Comment)
%   This file contains a breif description of the T1R/zcm font family, 
%   the code for its font definition file, and the code the ecsubzcm 
%   package.
% \fi
% 
% \iffalse (Skip the driver code when DocInputting.)
%  (The driver code is still enclosed in a macrocode environment, just 
%  in case.)
%    \begin{macrocode}
%<*driver>
\documentclass{ltxdoc}
\newcommand\package[1]{\textsf{#1}}
\title{The \texttt{zcm} example font family}
\author{Lars Hellstr\"om%
  \thanks{E-mail: \texttt{Lars.Hellstrom@math.umu.se}}%
}
\begin{document}
\maketitle
\DocInput{t1rzcm.fdd}\Finale
\begin{thebibliography}{9}
\bibitem{ltoutenc}
  Johannes Braams, David Carlisle, Alan Jeffrey, Frank Mittelbach, 
  Chris Rowley, Rainer Sch\"opf: \texttt{ltoutenc.dtx} (part of the 
  \LaTeXe\ base distribution).
\end{thebibliography}
\end{document}
%</driver>
%    \end{macrocode}
% \fi
% 
% \section{The \texttt{zcm} font family and \texttt{reldemo.tex}}
% \label{zcm-family}
% %
% The \texttt{zcm} family of fonts consists of only two fonts and it is 
% meant to accompany the \package{relenc} package documentation. These 
% fonts are really just combinations of glyphs taken from other fonts, 
% primarily the Computer Modern fonts (hence the \texttt{cm}), but 
% there are also some glyphs which are taken from some \LaTeX\ symbol 
% fonts (\texttt{lasy10} and \texttt{lcircle10}).
% 
% The primary reason these fonts exist is that I felt I needed an example 
% of what can be done with the \package{relenc} package. As one really 
% cannot expect that people will have any font that is not either a 
% Computer Modern or a \LaTeX\ font, such an example has to be made 
% using these fonts. I am well aware that some of the glyphs look 
% terrible, but the \texttt{zcm} family is not intended to be used 
% for any serious typesetting.
% 
% The font family consists of two fonts: \texttt{zcmr8d} and 
% \texttt{zcmra}. The first of these is declared as 
% \texttt{T1R}\slash\texttt{zcm}\slash\texttt{m}\slash\texttt{n} and its 
% coding scheme is identical to that of the \texttt{T1} encoding. The 
% second is declared as \texttt{T1R}\slash\texttt{zcm}\slash
% \texttt{m}\slash\texttt{a} and its coding scheme deviates from that of 
% the \texttt{T1} encoding in four slots, which have been reassigned to 
% contain ligatures instead of accented letters.
% 
% A demonstration of these fonts is generated by typesetting 
% \texttt{reldemo.tex}; this document contains a font table listing the 
% contents of each slot, a demonstration of all the symbol commands, a 
% demonstration of the effects of applying the accenting commands to the 
% non-accented letters, and a comprehensive list of character pairs, for 
% both fonts. The reason I have put it in a separate file is (i) that 
% the \package{relenc} package will have to be installed before these 
% fonts can be viewed (the files needed are \texttt{relenc.sty}, 
% \texttt{t1renc.def}, and \texttt{t1rzcm.fd}) and (ii) that there 
% might be some problems connected to viewing these fonts.
% 
% To begin with, both fonts are virtual fonts and some DVI drivers cannot 
% handle these. If you only have such drivers, you should get one that 
% can (not just for the sake of the \package{relenc} package---virtual 
% fonts are in general neat to be able to use).
% 
% One of the fonts used to make these virtaul fonts---the 
% \texttt{lcircle10} font---occurs under two other names as well: 
% \texttt{circle10} and \texttt{lcirc10}. Unfortunately, one cannot 
% expect that there is more than one of these in any given \TeX\ ^^A
% installation. Thus you will get some problems if your installation 
% uses another name for this font. Some DVI drivers will translate the 
% name used in the virtual font to that of the font names which actually 
% occurs in the system, and in this case there is no problem, but if not 
% then you will have to intervene yourself.
% 
% The easiest way to do this is simply to rename a few virtual font 
% files, since there are such files accompanying the \package{relenc} 
% package for using the \texttt{lcircle10} font under any one of these 
% names. What you have to see too is that the ones which use the font 
% under the name on your system are the ones which are named 
% \texttt{zcmr8d.vf} and \texttt{zcmra.vf} respectively. The following 
% table shows what the file names are and which font it uses
% $$
%   \mbox{^^A
%     \begin{tabular}{cc}
%       Virtual font file&  \texttt{lcircle10} name used^^A
%         \\[-0.9\ht\strutbox]
%       \hrulefill&\hrulefill\\
%       \texttt{zcmr8d.vf}&   \texttt{lcricle10}\\
%       \texttt{zcmra.vf}&    \texttt{lcricle10}\\
%       \texttt{zcmr8d.vf2}&  \texttt{cricle10}\\
%       \texttt{zcmra.vf2}&   \texttt{cricle10}\\
%       \texttt{zcmr8d.vf3}&  \texttt{lcric10}\\
%       \texttt{zcmra.vf3}&   \texttt{lcric10}
%     \end{tabular}^^A
%   }
% $$
% Note that all the above files are virtual font files. The reason 
% only two have been given the correct suffix \texttt{.vf} is that there 
% really are no more than two fonts, so they should not take up any more 
% font name space than that either.
% 
% Finally, there is one other use for the \texttt{T1R}\slash
% \texttt{zcm}\slash\texttt{m}\slash\texttt{n} font---it is the final 
% substitution font in the \texttt{T1R} encoding. \LaTeX\ requires that 
% there is such a font, so it might as well be this one. This means that 
% you should see to that the files which are this font (\texttt{zcmr8d.tfm} 
% and \texttt{zcmr8d.vf}) are put in such locations that \TeX\ and its 
% helper programs (DVI drivers etc.) will find them if they are needed. 
% You should not need to move them before you typeset \texttt{reldemo.tex} 
% for the first time, however, as these fonts are initially in the same 
% directory as this and \TeX\ looks for files there first.
% 
% If you do have the \texttt{ec} family of fonts however, you may (quite 
% understandably) want to use one of them as final substitution font for 
% the \texttt{T1R} encoding instead. There is a package called 
% \package{ecsubzcm} that is installed with \package{relenc}. This 
% package declares the \texttt{zcm} family in encoding \texttt{T1R} and 
% \texttt{ecrm1000} under the encoding\slash family\slash series\slash 
% shape combination \texttt{T1R}\slash\texttt{zcm}\slash\texttt{m}\slash
% \texttt{n}. After loading this package, \LaTeX\ will not bother to 
% input the font definition file \texttt{t1rzcm.fd}, so the ``real'' 
% \texttt{zcm} fonts will not get involved.
% 
% \section{Implementation}
% \subsection{Font definition file}
%
% \StopEventually{}
%
% As is the custom, the file starts by announcing itself. 
%    \begin{macrocode}
%<*fd>
\ProvidesFile{t1rzcm.fd}[1999/01/19 Font definitions for T1R/zcm.]
%    \end{macrocode}
% 
% Then the family is declared. So far, there is nothing out of the 
% ordinary.
%    \begin{macrocode}
\DeclareFontFamily{T1R}{zcm}{}
%    \end{macrocode}
% 
% Next the shapes are declared. There is nothing strange about this 
% either.
%    \begin{macrocode}
\DeclareFontShape{T1R}{zcm}{m}{n}{
   <-> zcmr8d
}{}
%    \end{macrocode}
%    \begin{macrocode}
\DeclareFontShape{T1R}{zcm}{m}{a}{
   <-> zcmra
}{}
%    \end{macrocode}
% 
% That would be all in a normal font definition file. This file does 
% however go on with defining some variants of commands and 
% compositions, to compensate for the differences between the coding 
% scheme of the \texttt{zcmra} font and the default coding scheme.
% 
% Slot number 128 is used for a ligature instead of the default `\u{A}', 
% so this has to be compensated for. In this case it is done by making 
% another default definition of the |\u| command and defining all the 
% other compositions of that command again.
%    \begin{macrocode}
\DefineTextAccentVariant{\u}{T1R}{zcm}{}{a}{8}
\DefineTextVariantComposition{\u}{T1R}{zcm}{}{a}{G}{135}
\DefineTextVariantComposition{\u}{T1R}{zcm}{}{a}{a}{160}
\DefineTextVariantComposition{\u}{T1R}{zcm}{}{a}{g}{167}
%    \end{macrocode}
% It should be noted at this point that this font definition file is 
% not set up in the most efficient way. Normally, one would want to 
% minimize the number of variants that needs to be defined---something 
% which the above most certainly does not do---and one often achieves 
% this by trying to affect as few accenting commands as possible. The 
% four extra ligatures of the \texttt{zcmra} font could have been put in 
% slots 128, 135, 160, and 167---that would have made it possible to 
% get by with the single variant definition
%\begin{verbatim}
%   \DefineTextAccentVariant{\u}{T1R}{zcm}{}{a}{8}
%\end{verbatim}
% although a font designer who frequently use the |\u| command will 
% probably prefer to use slots for compositions of some other 
% command---but \texttt{zcmra} has been set up more to show what is 
% possible than what is optimal.
% 
% The same problem occurs with slot 131, which does not contain the 
% `\v{C}' glyph that the encoding-level composition of |\v| with |C| 
% assumes it does. Another solution to the problem is to give an 
% explicit definition of the composition at a lower level, as in
%    \begin{macrocode}
\DefineTextVariantCompositionCommand{\v}{T1R}{zcm}{}{a}{C}{%
   \add@accent{7}{C}%
}
%    \end{macrocode}
% |\add@accent| is standard \LaTeX\ and its definition can be found 
% in~\cite{ltoutenc}. This solution gets by using only two variants (the 
% \texttt{T1R}\slash\texttt{zcm}\slash\texttt{?}\slash\texttt{a} variant 
% of |\v|, and the compositon of that variant with |C|). Had instead 
% the first solution been used here, it would have required the code
%\begin{verbatim}
%\DefineTextAccentVariant{\v}{T1R}{zcm}{}{a}{7}
%\DefineTextVariantComposition{\v}{T1R}{zcm}{}{a}{D}{132}
%\DefineTextVariantComposition{\v}{T1R}{zcm}{}{a}{E}{133}
%\DefineTextVariantComposition{\v}{T1R}{zcm}{}{a}{L}{137}
%\DefineTextVariantComposition{\v}{T1R}{zcm}{}{a}{N}{140}
%\DefineTextVariantComposition{\v}{T1R}{zcm}{}{a}{R}{144}
%\DefineTextVariantComposition{\v}{T1R}{zcm}{}{a}{S}{146}
%\DefineTextVariantComposition{\v}{T1R}{zcm}{}{a}{T}{148}
%\DefineTextVariantComposition{\v}{T1R}{zcm}{}{a}{Z}{154}
%\DefineTextVariantComposition{\v}{T1R}{zcm}{}{a}{c}{163}
%\DefineTextVariantComposition{\v}{T1R}{zcm}{}{a}{d}{164}
%\DefineTextVariantComposition{\v}{T1R}{zcm}{}{a}{e}{165}
%\DefineTextVariantComposition{\v}{T1R}{zcm}{}{a}{l}{169}
%\DefineTextVariantComposition{\v}{T1R}{zcm}{}{a}{n}{172}
%\DefineTextVariantComposition{\v}{T1R}{zcm}{}{a}{r}{176}
%\DefineTextVariantComposition{\v}{T1R}{zcm}{}{a}{s}{178}
%\DefineTextVariantComposition{\v}{T1R}{zcm}{}{a}{t}{180}
%\DefineTextVariantComposition{\v}{T1R}{zcm}{}{a}{z}{186}
%\end{verbatim}
% which defines another 18 control sequences. The |\v| command sure has 
% many compositions, hasn't it?
% 
% Things are a bit different when the slot is used for a variant of a 
% composition, instead of a composition of a variant. In the former case, 
% there is a special command that can be used to extract the default 
% definition of the accenting command.
%    \begin{macrocode}
\DefineTextUncomposedVariant{\'}{T1R}{zcm}{}{a}{C}
%    \end{macrocode}
% 
% Finally, another example like |\v|.
%    \begin{macrocode}
\DefineTextVariantCompositionCommand{\k}{T1R}{zcm}{}{a}{a}%
   {a\llap{\char12\kern-0.07em}}
%</fd>
%    \end{macrocode}
% This definition demonstrates that there is absolutely no need to base 
% the definition of a composition on the default definition; using that 
% in this case would (i) be much longer, (ii) be unstable, as the default 
% definition of |\k| positions the accent incorrectly if not both the 
% height of the accent and the depth of the letter is zero or less, 
% and (iii) probably not kern particularly good (at least this definition 
% kerns like `a' to the left, the default does not kern at all).
% 
% 
% \subsection{The \package{ecsubzcm} package}
% 
%    \begin{macrocode}
%<*package>
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{ecsubzcm}[1999/01/19]
%    \end{macrocode}
%    \begin{macrocode}
\DeclareFontFamily{T1R}{zcm}{}
%    \end{macrocode}
%    \begin{macrocode}
\DeclareFontShape{T1R}{zcm}{m}{n}{
   <-> ecrm1000
}{}
%</package>
%    \end{macrocode}
\endinput