summaryrefslogtreecommitdiff
path: root/fonts/greek/grtimes/grtimes.dtx
blob: 43b11d4c9f2cf535c3afc18e8a3d783a463ce029 (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
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
%% \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
%
% (c) copyright  1999-2002 Apostolos Syropoulos
% This program can be redistributed and/or modified under the terms
% of the LaTeX Project Public License Distributed from CTAN
% archives in directory macros/latex/base/lppl.txt; either
% version 1 of the License, or any later version.
%
% However, the above copyright notice does not apply in the case of
% ``Crete University Press'' as this publisher is not allowed to
% use or alter this file in any way.
%
% Please report errors or suggestions for improvement to
%    
%    Apostolos Syropoulos
%    366, 28th October Str.
%    GR-671 00 Xanthi, GREECE
%    apostolo@ocean1.ee.duth.gr or apostolo@obelix.ee.duth.gr
%
%\fi
% \CheckSum{61}
% \iffalse This is a Metacomment
%
%<grtimes >\ProvidesFile{grtimes.sty}
%<LGRptm,  >\ProvidesFile{lgrcmr.fd}
%<LGRpcr,  >\ProvidesFile{lgrpcr.fd}
%<LGRphv,  >\ProvidesFile{lgrphv.fd}
%
%<grtimes, >  [1999/03/02 v1.0 Package `greek.sty']
%<LGRptm, >  [1999/03/02 v1.0 Greek Times New Roman]
%<LGRpcr, >  [1999/03/02 v1.0 Greek Courier]
%<LGRphv, >  [1999/03/02 v1.0 Greek Arial]
%
%    \begin{macrocode}
%<*driver>
\documentclass{ltxdoc}
\usepackage{mflogo}
\GetFileInfo{grtimes.drv}
\begin{document}
   \DocInput{grtimes.dtx}
\end{document}
%</driver>
%    \end{macrocode}
% \fi
%
%\title{The `grtimes' package}
%\author{Apostolos Syropoulos\\366, 28th October Str.\\
%GR-671 00 Xanthi, HELLAS\\ 
%Email:\texttt{apostolo@obelix.ee.duth.gr}\\ or \\
%\hphantom{Email:}\texttt{apostolo@ocean1.ee.duth.gr}}
% \date{1999/03/20}
%\maketitle
% 
%\MakeShortVerb{\|}
%\StopEventually{}
%\section{Introduction}
% This \LaTeX\ package is part of a complete package that makes it possible
% to typeset Greek text using the Greek option of the \textsf{babel} and
% the fonts that are used mostly in Greece for ordinary everyday documents,
% i.e., Times New Roman Greek, Courier Greek and Arial Greek. Since, the
% present package is supposed to be a companion of the package |times|,
% it designed to work harmoniously with it. For this reason, the fond 
% definitions, i.e., all the |.fd| files, have been defined in way that
% matches the definition of the corresponding files of the |times| package.
% It is important to note that the fonts have been converted to \MF\ files
% from TrueType sources, which in turn can be downloaded from the URL:
% \begin{center}
% |http://www.microsoft.com/typography/fontpack/default.htm|
% \end{center} 
% However, redistribution of derivative fonts is not allowed and hence we 
% don't provide the \MF\ files and the |.tfm| files. In order to create
% the \MF\ files one can use the program |ttf2mf| by Oleg Motygin, which
% can be downloaded from any CTAN node. The names of all necessary fonts
% are listed in the file |font-names|, which is part of this package.
% 
% The complete package provides the following \LaTeX\ files:
%\begin{center}
% \begin{tabular}{ll}
%   driver  & produce a documentation driver file \\
%   grtimes & the package itself \\
%   LGRptm  & The Greek Times New Roman font shapes\\
%   LGRpcr  & The Greek Courier font shape\\
%   LGRphv  & The Greek Arial font shape\\
%   LGRligs & \MF\ ligature table for generated fonts
% \end{tabular}
% \end{center}
% 
% \section{The package `grtimes'}
% The package `grtimes' changes the roman, san-serif and typewriter
% families so that the new fonts can be used. Moreover, since we want
% to be able to use this package in conjuction with the Greek option
% of the babel package, we must redefine certain macros.
% 
%    \begin{macrocode}
%<*grtimes>
\ProvidesFile{grtimes.sty}[1999/03/02 v1.0 grtimes package]
\renewcommand{\sfdefault}{phv}
\renewcommand{\rmdefault}{ptm}
\renewcommand{\ttdefault}{pcr}
%    \end{macrocode}
%
% Unfortunately, the fonts we are using do not contain the necesary glyphs
% in order to typeset Greek numerals, so we must redefine all commands
% that either use them or produce them. First we redine the command
% |\stigma| so that it is possible to typeset the Greek numeral for 6.
% We simply employ the modern way of writing this numeral with the letters
% sigma and tau. Moreover, we employ a special character that resembles 
% somehow the |\anwtonos| charecter in order to typeset Greek numerals
% less than 99, just because the fonts do not contain plyphs for the
% |\qoppa|, |\sampi| and |\katwtonos| symbols. 
%    \begin{macrocode}
\def\stigma{st}
\DeclareTextCommand{\anwtonos}{LGR}{\char'047\relax}
\let\katwtonos\relax
\let\qoppa\relax
\let\sampi\relax
%</grtimes>
%    \end{macrocode}
%
% \section{The Roman Font}
% You have opted not to create all possible font sizes, but rather to create
% the basic ones, since the program |ttf2mf| produces rather large files
% ($>100\,\mathrm{K}$). The names of the external \MF\ files have the
% general form: |grtmX| for the normal face, |grtmoX| for the oblique face,
% |grtmbX| for the bold face, and |grtmboX| for the oblique bold face, where 
% |X| stands for the face size. We first define the new font family and then
% provide the definition for the normal and the oblique (slanted) face.
%    \begin{macrocode}
%<*LGRptm>
\DeclareFontFamily{LGR}{ptm}{}
\DeclareFontShape{LGR}{ptm}{m}{n}
    { <5> grtm5
      <6><7> grtm8
      <8> <9> <10> gen * grtm
      <10.95><12><14.4> grtm10
      <17.28><20.74><24.88> grtm17}{}
\DeclareFontShape{LGR}{ptm}{m}{sl}
    { <5> grtmo5
      <6><7> grtmo8
      <8> <9> <10> gen * grtmo
      <10.95><12><14.4> grtmo10
      <17.28><20.74><24.88> grtmo17}{}
%    \end{macrocode}
% The font does not include an italic shape as well a caps and small caps
% shape, so we have to provide some silent substitutions.
%    \begin{macrocode}
\DeclareFontShape{LGR}{ptm}{m}{it}{ <-> ssub * ptm/m/sl}{}
\DeclareFontShape{LGR}{ptm}{m}{sc}{ <-> ssub * ptm/m/n}{}
%    \end{macrocode}
% Now come the definitions for the bold weight versions of the font.
%    \begin{macrocode}
\DeclareFontShape{LGR}{ptm}{b}{n}
    { <5> grtmb5
      <6><7> grtmb8
      <8> <9> <10> gen * grtmb
      <10.95><12><14.4> grtmb10
      <17.28><20.74><24.88> grtmb17}{}
\DeclareFontShape{LGR}{ptm}{b}{sl}
    { <5> grtmbo5
      <6><7> grtmbo8
      <8> <9> <10> gen * grtmbo
      <10.95><12><14.4> grtmbo10
      <17.28><20.74><24.88> grtmbo17}{}
%    \end{macrocode}
% As previously no italic and caps and small caps shapes exists and so
% we have to provide again some silent substitutions.
%    \begin{macrocode}
\DeclareFontShape{LGR}{ptm}{b}{it}{ <-> ssub * ptm/b/sl}{}
\DeclareFontShape{LGR}{ptm}{b}{sc}{ <-> ssub * ptm/m/sc}{}
\DeclareFontShape{LGR}{ptm}{bx}{n}{ <-> ssub * ptm/b/n}{}
\DeclareFontShape{LGR}{ptm}{bx}{it}{ <-> ssub * ptm/b/sl}{}
\DeclareFontShape{LGR}{ptm}{bx}{sl}{ <-> ssub * ptm/b/sl}{}
\DeclareFontShape{LGR}{ptm}{bx}{sc}{ <-> ssub * ptm/m/sc}{}
%</LGRptm>
%    \end{macrocode} 
% \section{The Typewriter font}
% The typewriter font has excactly the same problems as the roman font.
% The names of the external \MF\ files have the
% general form: |grcrX| for the normal face, |grcroX| for the oblique face,
% |grcrbX| for the bold face, and |grcrboX| for the oblique bold face, 
% where |X| stands for the face size. We first define the normal and slanted 
% faces.
%    \begin{macrocode}
%<*LGRpcr>
\DeclareFontFamily{LGR}{pcr}{}
\DeclareFontShape{LGR}{pcr}{m}{n}
    { <5> grcr5
      <6><7> grcr8
      <8> <9> <10> gen * grcr
      <10.95><12><14.4> grcr10
      <17.28><20.74><24.88> grcr17}{}
\DeclareFontShape{LGR}{pcr}{m}{sl}
    { <5> grcro5
      <6><7> grcro8
      <8> <9> <10> gen * grcro
      <10.95><12><14.4> grcro10
      <17.28><20.74><24.88> grcro17}{}
%    \end{macrocode}
% Next we define some silent substitutions for the non existent italic
% caps and small caps shapes.
%    \begin{macrocode}
\DeclareFontShape{LGR}{pcr}{m}{it}{ <-> ssub * pcr/m/sl}{}
\DeclareFontShape{LGR}{pcr}{m}{sc}{ <-> ssub * pcr/m/n}{}
%    \end{macrocode}
% Now, we define the normal bold and the slanted bold faces.
%    \begin{macrocode}
\DeclareFontShape{LGR}{pcr}{b}{n}
    { <5> grcrb5
      <6><7> grcrb8
      <8> <9> <10> gen * grcrb
      <10.95><12><14.4> grcrb10
      <17.28><20.74><24.88> grcrb17}{}
\DeclareFontShape{LGR}{pcr}{b}{sl}
    { <5> grcrbo5
      <6><7> grcrbo8
      <8> <9> <10> gen * grcrbo
      <10.95><12><14.4> grcrbo10
      <17.28><20.74><24.88> grcrbo17}{}
%    \end{macrocode}
% And finally we define some more silent substitutions
%    \begin{macrocode}
\DeclareFontShape{LGR}{pcr}{b}{it}{ <-> ssub * pcr/b/sl}{}
\DeclareFontShape{LGR}{pcr}{b}{sc}{ <-> ssub * pcr/m/sc}{}
\DeclareFontShape{LGR}{pcr}{bx}{n}{ <-> ssub * pcr/b/n}{}
\DeclareFontShape{LGR}{pcr}{bx}{it}{ <-> ssub * pcr/b/sl}{}
\DeclareFontShape{LGR}{pcr}{bx}{sl}{ <-> ssub * pcr/b/sl}{}
\DeclareFontShape{LGR}{pcr}{bx}{sc}{ <-> ssub * pcr/m/sc}{}
%</LGRpcr>
%    \end{macrocode}
% \section{The San-serif font}
% The san-serif font has excactly the same problems as the roman and the
% typewrite font. So, we will provide any further documentation on the
% code. The names of the external \MF\ files have the
% general form: |grarX| for the normal face, |graroX| for the oblique face,
% |grarbX| for the bold face, and |grarboX| for the oblique bold face, where 
% |X| stands for the face size.
%    \begin{macrocode}
%<*LGRphv>
\DeclareFontFamily{LGR}{phv}{}
\DeclareFontShape{LGR}{phv}{m}{n}
    { <5> grar5
      <6><7> grar8
      <8> <9> <10> gen * grar
      <10.95><12><14.4> grar10
      <17.28><20.74><24.88> grar17}{}
\DeclareFontShape{LGR}{phv}{m}{sl}
    { <5> graro5
      <6><7> graro8
      <8> <9> <10> gen * graro
      <10.95><12><14.4> graro10
      <17.28><20.74><24.88> graro17}{}
\DeclareFontShape{LGR}{phv}{m}{it}{ <-> ssub * phv/m/sl}{}
\DeclareFontShape{LGR}{phv}{m}{sc}{ <-> ssub * phv/m/n}{}
\DeclareFontShape{LGR}{phv}{b}{n}
    { <5> grarb5
      <6><7> grarb8
      <8> <9> <10> gen * grarb
      <10.95><12><14.4> grarb10
      <17.28><20.74><24.88> grarb17}{}
\DeclareFontShape{LGR}{phv}{b}{sl}
    { <5> grarbo5
      <6><7> grarbo8
      <8> <9> <10> gen * grarbo
      <10.95><12><14.4> grarbo10
      <17.28><20.74><24.88> grarbo17}{}
\DeclareFontShape{LGR}{phv}{b}{it}{ <-> ssub * phv/b/sl}{}
\DeclareFontShape{LGR}{phv}{b}{sc}{ <-> ssub * phv/m/sc}{}
\DeclareFontShape{LGR}{phv}{bx}{n}{ <-> ssub * phv/b/n}{}
\DeclareFontShape{LGR}{phv}{bx}{it}{ <-> ssub * phv/b/sl}{}
\DeclareFontShape{LGR}{phv}{bx}{sl}{ <-> ssub * phv/b/sl}{}
\DeclareFontShape{LGR}{phv}{bx}{sc}{ <-> ssub * phv/m/sc}{}
%</LGRphv>
%    \end{macrocode}
% \section{\MF\ Ligature Table}
%
% The ligature table is essential in order to emulate the behavior
% of the LGR encoding. We start by defining that the space character
% is actually a boundary character. This is necessary for the sigma
% logarures.
%    \begin{macrocode}
%<*LGRligs>
boundarychar:=oct"040";
%    \end{macrocode}
% Now we define a few simple ligatures
% like the en-dash, the em-dash, open Greek quotes and close Greek quotes.
%    \begin{macrocode}
diaer=oct"042";                
ligtable "-": "-" =: oct"000";       % en-dash
ligtable oct"000": "-" =: oct"177";  % em-dash
ligtable "(":  "(" =: oct"173";      % open quotes
ligtable ")":  ")" =: oct"175";      % close quotes
%    \end{macrocode}
% In (monotonic) Greek either the letter upsilon or the letter iota
% can take a diaeresis and possible an acute. If we prepend to either
% letter the symbol |"| (double quote), it considered to be a diaeresis; 
% moreover if it is followed by the symbol |'| (single quote), then we
% have both a diaeresis and an acute. 
%    \begin{macrocode}
ligtable diaer:                       % diaeresis
        "'" =: oct"043", 
        "i" =: oct"360", "u" =: oct"364",
        "I" =: oct"333", "U" =: oct"337";

ligtable oct"043":                      % diaeresis and acute
        "i" =: oct"362", "u" =: oct"366";
%    \end{macrocode}
% Next, we define all the possible ligatures that produce an accented
% vowel, i.e, acute plus vowel. However, we generate the \MF\ file from the 
% TrueType sources we employ an encoding which maps the Greek letters to the
% possitions assumed by the LGR encoding. But, since all characters
% are accented, while the LGR encoding assumes that capital letters get
% their accents and breatings with ligatures, we had to put the capital
% accented letters in free slots. Since the fonts are monotonic, we opted
% to put each capital letter in the slot occupied by the lowercase letter
% accented with greve.
%    \begin{macrocode}
ligtable "'":                           % acute
        diaer =: oct"043", "'" =: oct"035", 
        "a" =: oct"210", "h" =: oct"240", "w" =: oct"270",
        "e" =: oct"350", "o" =: oct"354", "i" =: oct"320", 
        "u" =: oct"324",
        "A" =: oct"200", "H" =: oct"230", "W" =: oct"260", 
        "I" =: oct"310",  "E" =: oct"340", "U" =: oct"314", 
        "O" =: oct"344";
%    \end{macrocode}
% Finally, we must treat the proper way the final sigma, i.e., left sigma is 
% replaced with final sigma, while right character is preserved. The code
% is copied essentialy verbatim from the |cbligs.mf| by Claudio Beccari.
%    \begin{macrocode}
ligtable "s":"." =:| "c", "," =:| "c", ";" =:| "c",
             ":" =:| "c", "?" =:| "c", "!" =:| "c", 
             ")" =:| "c", "/" =:| "c", "]" =:| "c", 
	   oct"052" =:| "c", oct"035" =:| "c", oct"040" =:| "c";
endinput;
%</LGRligs>
%    \end{macrocode} 
% \section*{Acknowledgement}
% I must thank Antonis Tsolomitis for his help during the preparation of
% this package.
% \Finale