diff options
author | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
---|---|---|
committer | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
commit | e0c6872cf40896c7be36b11dcc744620f10adf1d (patch) | |
tree | 60335e10d2f4354b0674ec22d7b53f0f8abee672 /fonts/malvern |
Initial commit
Diffstat (limited to 'fonts/malvern')
500 files changed, 22857 insertions, 0 deletions
diff --git a/fonts/malvern/00readme.txt b/fonts/malvern/00readme.txt new file mode 100644 index 0000000000..05d77276a9 --- /dev/null +++ b/fonts/malvern/00readme.txt @@ -0,0 +1,23 @@ +Malvern is copyright (c) 1991-1994 by P. Damian Cugley, and is +distributed freely WITHOUT ANY WARRANTY. See the file copying.txt for +more information. In accordance with British copyright law, P. Damian +Cugley has asserted the moral right to be identified as the author of +this software. + +This file updated 1994/10/11. + + MALVERN RELEASE 1.2 + +Malvern is a METAFONT font program used to make fonts for TeX. The +Malvern family is a broad family of sanserif fonts which now includes +Greek letters, diagritical marks and composites as well as the latin +alphabet and a buncha symbols. + +Files with names starting with "0" should be read first. The file +dvi/install.dvi contains installation hints. + +If you find Malvern to be useful or amusing, please send me a postcard! +-- +Damian Cugley +Oxford University Computing Laboratory, Parks Road, Oxford OX1 3QD, UK +<damian.cugley@comlab.ox.ac.uk> diff --git a/fonts/malvern/0copying.txt b/fonts/malvern/0copying.txt new file mode 100644 index 0000000000..0e8bbb658c --- /dev/null +++ b/fonts/malvern/0copying.txt @@ -0,0 +1,31 @@ + = COPYING = + +Malvern 1.2 is copyright (c) 1991-4 P. Damian Cugley. + +0. In accordance with British copyright law, P. Damian Cugley has +asserted the moral right to be identified as the author of this +software. + +1. You can use, copy and distribute this software verbatim without fee +provided that this copyright notice and permissions are preserved, and +provided neither my name nor the the name of Oxford University are used +in any related promotion or publicity without prior, written permission. + +2. You can modify this software provided (a) you make no deletions; (b) +you mark all changes clearly (including altering the maversion string); +and (c) you don't distribute it. + +3. This software is provided for free, on an "as-is" basis, without +express or implied warranty. + +The intention of (2) is to prevent a proliferation of incompatable +versions. Commenting out code does not count as a deletion. If you +have bug fixes or reports or any comments, please send mail to +<malvern@comlab.ox.ac.uk>. This is a mailing list which you can join by +sending a request to <malvern-request@comlab.ox.ac.uk>. + +Damian Cugley +Oxford University Computing Laboratory, Parks Road, Oxford OX1 3QD, UK +<damian.cugley@comlab.ox.ac.uk> + +COPYING 1.2.0 1994/10/11 diff --git a/fonts/malvern/0ebcdic.txt b/fonts/malvern/0ebcdic.txt new file mode 100644 index 0000000000..6dfad437b8 --- /dev/null +++ b/fonts/malvern/0ebcdic.txt @@ -0,0 +1,12 @@ +If you have received this package via electronic mail routed through +brain-damaged EBCDIC gateways, some characters may be altered. + +------------------------------------------------------------------------ + % percent 37 + \ backslash 92 + ^ circumflex 94 + ` backquote 96 + { } curly braces 123, 125 + | vertical bar 124 + ~ tilde 126 +------------------------------------------------------------------------ diff --git a/fonts/malvern/0news.txt b/fonts/malvern/0news.txt new file mode 100644 index 0000000000..23ff7bce82 --- /dev/null +++ b/fonts/malvern/0news.txt @@ -0,0 +1,174 @@ +0news.txt -- changes to Malvern between releases -- -*-text-*- + +------------------------------------------------------------------------ +RELEASE 1.2 -- CHANGES SINCE MALVERN 1.1 + +All file names are now compatible with MS-DOS/ISO 9960 + + All files have names fitting in the 8+3 straightjacket required + by stupid MS-DOS and ISO 9960 filesystems. I was about 12 or 13 + when I worked out for myself that trying to identify data with + eight-capital-letter names was a dumb idea; too bad ISO didn't + consult me. + + One side effect is that the capital-letter file names + traditional on UNIX systems for important installation files + (README, INSTALL, COPYING, NEWS) have been changed to + 00readme.txt, 0install.txt, 0copying.txt, 0news.txt for the sake + of MS-DOS and VMS sufferers. + +Abandoned standard font names + + As of October 1994, the font names standard does not allow more + than two variant letters without breaking the eight-character + limit for MS-DOS and ISO 9960 file names. Variants includes + encodings and things like whether the font is slanted. As an + extreme example, Malvern 58 with the caps-&-small-caps, + old-style-numerals variation on the OT1 encoding is + fmvr9ci7tc12! My best temporary solution to this situation is + to abandon "fmv" names altogether and extend the "ma" names to + include the encoding schemes needed by plain TeX, plain LaTeX + and LaTeX 2e. Therefore, *all* Malvern fonts now have names + starting with "ma". + +Standardized encoding scheme numbers + + Now I have been forced toi come up with a set of 2-letter + encoding codes for every encoding under the sun, I use + encoding=19 for TeX Text instead of 0. + +pdc 1994.10.11 +------------------------------------------------------------------------ +RELEASE 1.1 -- CHANGES SINCE MALVERN 1.0.02 + + +Better documentation + + A lot of the excess verbiage is irrelevant and has been enclosed + in \iflong...\fi. At the same time the sections on installation + and such have been rewritten or expanded. There is a separate + installation guide (install.dvi) which uses no nonstandard + fonts. + +Support for LaTeX 2.09 and LaTeX 2e + + I have included style options that should work with LaTeX 2.09 + (either with or without NFSS), as well as LaTeX-2e FD files. + The 2e file includes support for small capitals (but not italic + small capitals, because NFSS 2 has no way to refer to them). + All of these are generated by the same script that generates the + fonts, so they should match the supplied fonts. + +Macro file changed from "malvern.tex" to "maamac.tex" + + The name "maamac" is more "standard" in that it ends with "mac" + (as many plain TeX macro files do) and starts with "maa" (as + most Malvern-A-related files do). It leaves open the + possibility of a "magmac.tex" file for Malvern G, and so on. + +Macro files used in documentation renamed + + The macro files I used to format plain-TeX documents have been + renamed so that they all start with "pdc" and are valid ISO-9960 + names. + +Files for fontinst + + There are ETX and MTX files included for making T1-encoded fonts + from. + +Driver files, TFM and VF files included + + A set of driver (.mf) files and TFM and VF files have been + included, generated using "mff" and Alan Jeffrey's fontinst + package. These come in three main groups: + + (1) OT1 (the encoding shown in App.F of the TeXbook) and T1 + (Cork) fonts, all with names starting in "fmv" (such as + fmvmq12, fmvm9r12); + (2) Malvern-encoded fonts, used to make the T1 fonts and + those of the OT1 fonts that include small caps, with + names starting with "ma" (such as ma55a12); and + (3) some other Malvern-encoded fonts included as examples + (such as ma55g11). + + All of the fonts in group (1) are composite fonts (VFs), except + for the OT1 fonts without small caps. It follows that systems + without the ability to use VFs will not be able to use T1 fonts. + +Cyrillic letters + + The Cyrillic alphabet is still very incomplete, and some of the + glyph designs need revision. + +Composites-only font in limbo + + The previous release had a half-baked composite-letters-only + encoding, Malvern C. This letter has now been used for Cyrillic + instead, and eventually Malvern E will be some sort of + composite-letter font. Since the Fontinst package makes + pre-built composites largely redundant, I don't expect this font + to be used for anything much unless I come up with new ideas on + designing composite letters. + +Encodings schemes + + Only uses Malvern encodings + + The Malvern programs no longer make any attempt to support any + font encodings other than Malvern A, B, ... and the CMR encoding + described in the TeXbook (now called OT1). This is because (a) + trying to support Cork & other encoding vectors was getting to + be a great pain even without including support for + caps-and-small-caps variants and (b) all this can be better done + using Alan Jeffrey's fontinst package. + + Changes to some Malvern encodings + + Malvern B no longer includes Greek or Cyrillic letters -- these + have their own encodings, Malvern G and C. Malvern B contains a + selection of symbols etc. and includes the glyphs needed to make + Cork, Adobe and ISO-8859-1 fonts. + +Replaced and mended glyph programs + + Letters A and E with Ogonek redesigned + + The new designs for "A" and "a" have the ogonek mark drawn as a + continuation of the last stroke of the letter. I don't know if + this is more "authentic" or not... + + Figures don't turn absurd then compressed or expanded. + + Curves have more intermediate points, and the ones with circular + rings (8, 6, 9) behave more intelligently when there isn't + enough space to use circular circles. + + Curves generally made more robust + + Many curves used to turn angular when compressed; most such + curves now use a macro that draws them as a quarter-superelipse. + +pdc 1994.07.29 + + +------------------------------------------------------------------------ +RELEASE 1.0, PATCH 02 -- CHANGES SINCE MALVERN 1.0.01 + +Added a new encoding G (Greek) + + Designed lower case Greek letters and composite letters, and + made a new Malvern encoding G. This uses similar ligature + conventions to GreekTeX to generate fully marked up Greek text + using ligatures like a| for alpha with iota subscript and <'h + for eta-lenis-acute. + + +------------------------------------------------------------------------ +RELEASE 1.0, PATCH 01 -- CHANGES SINCE MALVERN 1.0 + + +Fixed the letter L + + The width was wrong. + diff --git a/fonts/malvern/contents.txt b/fonts/malvern/contents.txt new file mode 100644 index 0000000000..ba16120cac --- /dev/null +++ b/fonts/malvern/contents.txt @@ -0,0 +1,549 @@ +List of files in Malvern 1.2 + +Generated by mkdist 2.0 <pdc 1994.10.11> on 1994.10.12 + +total 29 +-r--r--r-- 1 pdc mc86 894 Oct 11 18:10 00readme.txt +-r--r--r-- 1 pdc mc86 1256 Oct 11 18:11 0copying.txt +-rw-r--r-- 1 pdc mc86 426 Nov 11 1993 0ebcdic.txt +-rw-r--r-- 1 pdc mc86 6398 Oct 11 15:39 0news.txt +-rw-r--r-- 1 pdc mc86 86 Oct 12 16:43 contents.txt +drwxr-xr-x 3 pdc mc86 512 Nov 24 1993 contrib +drwxr-xr-x 2 pdc mc86 1024 Oct 12 16:43 doc +drwxr-xr-x 2 pdc mc86 2560 Oct 12 16:41 drivers +drwxr-xr-x 2 pdc mc86 512 Oct 12 16:43 dvi +drwxr-xr-x 2 pdc mc86 512 Oct 12 12:14 fontinst +drwxr-xr-x 2 pdc mc86 512 Aug 8 17:39 latex209 +drwxr-xr-x 2 pdc mc86 1024 Oct 12 16:40 source +drwxr-xr-x 2 pdc mc86 512 Oct 12 16:41 tex +drwxr-xr-x 2 pdc mc86 4608 Oct 12 16:41 tfm +drwxr-xr-x 2 pdc mc86 2048 Oct 12 16:42 vf + +contrib: +total 2 +-rw-r--r-- 1 pdc mc86 618 Nov 16 1993 README +drwxr-xr-x 2 pdc mc86 512 Aug 14 1992 spqr + +contrib/spqr: +total 21 +-rw-r--r-- 1 pdc mc86 842 Aug 14 1992 README +-rw-r--r-- 1 pdc mc86 9397 Aug 13 1992 maketexpk.cmd +-rw-r--r-- 1 pdc mc86 216 Aug 13 1992 maltex.mf +-rw-r--r-- 1 pdc mc86 2600 Aug 13 1992 malvern.sty +-rw-r--r-- 1 pdc mc86 5224 Aug 14 1992 test.tex + +doc: +total 255 +-r--r--r-- 1 pdc mc86 6930 Sep 2 11:32 cmdoc.tex +-rw-r--r-- 1 pdc mc86 20079 Oct 11 16:58 install.tex +-r--r--r-- 1 pdc mc86 7021 Sep 2 11:32 ma55doc.tex +-rw-r--r-- 1 pdc mc86 7541 Oct 11 17:56 mabib.tex +-rw-r--r-- 1 pdc mc86 1899 Apr 4 1993 magrmac.tex +-rw-r--r-- 1 pdc mc86 204 Oct 12 16:42 magrman.fnt +-rw-r--r-- 1 pdc mc86 164 Oct 12 16:42 magrman.idx +-rw-r--r-- 1 pdc mc86 21045 Jul 19 18:45 magrman.tex +-rw-r--r-- 1 pdc mc86 358 Oct 12 16:42 magrman.toc +-rw-r--r-- 1 pdc mc86 642 Nov 17 1993 makeind.rc +-rw-r--r-- 1 pdc mc86 2839 Oct 12 16:43 maman.aux +-rw-r--r-- 1 pdc mc86 318 Oct 12 16:43 maman.fnt +-rw-r--r-- 1 pdc mc86 3692 Oct 12 16:43 maman.idx +-rw-r--r-- 1 pdc mc86 403 Oct 12 16:42 maman.ilg +-rw-r--r-- 1 pdc mc86 3815 Oct 12 16:42 maman.ind +-rw-r--r-- 1 pdc mc86 120301 Oct 11 17:58 maman.tex +-rw-r--r-- 1 pdc mc86 4140 Oct 12 16:43 maman.toc +-rw-r--r-- 1 pdc mc86 975 Jun 23 14:42 pdcdcap.tex +-r--r--r-- 1 pdc mc86 8315 Sep 2 11:32 pdcfmt.tex +-r--r--r-- 1 pdc mc86 5572 Sep 2 11:32 pdcfsel.tex +-rw-r--r-- 1 pdc mc86 727 Jul 3 17:24 pdchyex.tex +-rw-r--r-- 1 pdc mc86 2560 Nov 17 1993 pdcidx.tex +-r--r--r-- 1 pdc mc86 799 Sep 2 11:32 pdcimth.tex +-rw-r--r-- 1 pdc mc86 416 Feb 25 1992 pdcmigr.tex +-r--r--r-- 1 pdc mc86 11236 Sep 2 11:32 pdcoput.tex +-r--r--r-- 1 pdc mc86 6956 Sep 2 11:32 pdcpars.tex + +drivers: +total 110 +-rw-r--r-- 1 pdc mc86 234 Oct 12 13:46 ma53a12.mf +-rw-r--r-- 1 pdc mc86 234 Oct 12 13:46 ma55a10.mf +-rw-r--r-- 1 pdc mc86 234 Oct 12 13:46 ma55a12.mf +-rw-r--r-- 1 pdc mc86 234 Oct 12 13:47 ma55a14.mf +-rw-r--r-- 1 pdc mc86 234 Oct 12 13:47 ma55a18.mf +-rw-r--r-- 1 pdc mc86 234 Oct 12 13:47 ma55a24.mf +-rw-r--r-- 1 pdc mc86 234 Oct 12 13:46 ma55a48.mf +-rw-r--r-- 1 pdc mc86 231 Oct 12 13:46 ma55a7.mf +-rw-r--r-- 1 pdc mc86 231 Oct 12 13:46 ma55a9.mf +-rw-r--r-- 1 pdc mc86 251 Oct 12 13:50 ma55az10.mf +-rw-r--r-- 1 pdc mc86 251 Oct 12 13:50 ma55az12.mf +-rw-r--r-- 1 pdc mc86 251 Oct 12 13:50 ma55az14.mf +-rw-r--r-- 1 pdc mc86 251 Oct 12 13:50 ma55az18.mf +-rw-r--r-- 1 pdc mc86 251 Oct 12 13:50 ma55az24.mf +-rw-r--r-- 1 pdc mc86 248 Oct 12 13:50 ma55az7.mf +-rw-r--r-- 1 pdc mc86 234 Oct 12 13:46 ma55b10.mf +-rw-r--r-- 1 pdc mc86 234 Oct 12 13:47 ma55b12.mf +-rw-r--r-- 1 pdc mc86 234 Oct 12 13:47 ma55b14.mf +-rw-r--r-- 1 pdc mc86 234 Oct 12 13:47 ma55b18.mf +-rw-r--r-- 1 pdc mc86 234 Oct 12 13:47 ma55b24.mf +-rw-r--r-- 1 pdc mc86 231 Oct 12 13:46 ma55b7.mf +-rw-r--r-- 1 pdc mc86 234 Oct 12 13:46 ma55c12.mf +-rw-r--r-- 1 pdc mc86 234 Oct 12 13:46 ma55g10.mf +-rw-r--r-- 1 pdc mc86 234 Oct 12 13:46 ma55g11.mf +-rw-r--r-- 1 pdc mc86 234 Oct 12 13:46 ma55g12.mf +-rw-r--r-- 1 pdc mc86 234 Oct 12 13:46 ma55g24.mf +-rw-r--r-- 1 pdc mc86 231 Oct 12 13:46 ma55g9.mf +-rw-r--r-- 1 pdc mc86 227 Oct 12 13:49 ma55s10.mf +-rw-r--r-- 1 pdc mc86 227 Oct 12 13:49 ma55s12.mf +-rw-r--r-- 1 pdc mc86 227 Oct 12 13:49 ma55s14.mf +-rw-r--r-- 1 pdc mc86 227 Oct 12 13:49 ma55s18.mf +-rw-r--r-- 1 pdc mc86 227 Oct 12 13:49 ma55s24.mf +-rw-r--r-- 1 pdc mc86 224 Oct 12 13:49 ma55s7.mf +-rw-r--r-- 1 pdc mc86 274 Oct 12 13:47 ma56a10.mf +-rw-r--r-- 1 pdc mc86 274 Oct 12 13:47 ma56a12.mf +-rw-r--r-- 1 pdc mc86 274 Oct 12 13:47 ma56a14.mf +-rw-r--r-- 1 pdc mc86 274 Oct 12 13:47 ma56a18.mf +-rw-r--r-- 1 pdc mc86 274 Oct 12 13:47 ma56a24.mf +-rw-r--r-- 1 pdc mc86 271 Oct 12 13:47 ma56a7.mf +-rw-r--r-- 1 pdc mc86 271 Oct 12 13:46 ma56a9.mf +-rw-r--r-- 1 pdc mc86 291 Oct 12 13:50 ma56az10.mf +-rw-r--r-- 1 pdc mc86 291 Oct 12 13:50 ma56az12.mf +-rw-r--r-- 1 pdc mc86 291 Oct 12 13:50 ma56az14.mf +-rw-r--r-- 1 pdc mc86 291 Oct 12 13:50 ma56az18.mf +-rw-r--r-- 1 pdc mc86 291 Oct 12 13:50 ma56az24.mf +-rw-r--r-- 1 pdc mc86 288 Oct 12 13:50 ma56az7.mf +-rw-r--r-- 1 pdc mc86 274 Oct 12 13:47 ma56b10.mf +-rw-r--r-- 1 pdc mc86 274 Oct 12 13:47 ma56b12.mf +-rw-r--r-- 1 pdc mc86 274 Oct 12 13:47 ma56b14.mf +-rw-r--r-- 1 pdc mc86 274 Oct 12 13:47 ma56b18.mf +-rw-r--r-- 1 pdc mc86 274 Oct 12 13:47 ma56b24.mf +-rw-r--r-- 1 pdc mc86 271 Oct 12 13:47 ma56b7.mf +-rw-r--r-- 1 pdc mc86 274 Oct 12 13:46 ma56g11.mf +-rw-r--r-- 1 pdc mc86 267 Oct 12 13:49 ma56s10.mf +-rw-r--r-- 1 pdc mc86 267 Oct 12 13:49 ma56s12.mf +-rw-r--r-- 1 pdc mc86 267 Oct 12 13:49 ma56s14.mf +-rw-r--r-- 1 pdc mc86 267 Oct 12 13:49 ma56s18.mf +-rw-r--r-- 1 pdc mc86 267 Oct 12 13:49 ma56s24.mf +-rw-r--r-- 1 pdc mc86 264 Oct 12 13:49 ma56s7.mf +-rw-r--r-- 1 pdc mc86 234 Oct 12 13:46 ma57a12.mf +-rw-r--r-- 1 pdc mc86 236 Oct 12 13:47 ma75a10.mf +-rw-r--r-- 1 pdc mc86 236 Oct 12 13:48 ma75a12.mf +-rw-r--r-- 1 pdc mc86 236 Oct 12 13:48 ma75a14.mf +-rw-r--r-- 1 pdc mc86 236 Oct 12 13:48 ma75a18.mf +-rw-r--r-- 1 pdc mc86 236 Oct 12 13:48 ma75a24.mf +-rw-r--r-- 1 pdc mc86 233 Oct 12 13:47 ma75a7.mf +-rw-r--r-- 1 pdc mc86 236 Oct 12 13:46 ma75a72.mf +-rw-r--r-- 1 pdc mc86 233 Oct 12 13:46 ma75a9.mf +-rw-r--r-- 1 pdc mc86 253 Oct 12 13:50 ma75az10.mf +-rw-r--r-- 1 pdc mc86 253 Oct 12 13:51 ma75az12.mf +-rw-r--r-- 1 pdc mc86 253 Oct 12 13:51 ma75az14.mf +-rw-r--r-- 1 pdc mc86 253 Oct 12 13:51 ma75az18.mf +-rw-r--r-- 1 pdc mc86 253 Oct 12 13:51 ma75az24.mf +-rw-r--r-- 1 pdc mc86 250 Oct 12 13:50 ma75az7.mf +-rw-r--r-- 1 pdc mc86 236 Oct 12 13:48 ma75b10.mf +-rw-r--r-- 1 pdc mc86 236 Oct 12 13:48 ma75b12.mf +-rw-r--r-- 1 pdc mc86 236 Oct 12 13:48 ma75b14.mf +-rw-r--r-- 1 pdc mc86 236 Oct 12 13:48 ma75b18.mf +-rw-r--r-- 1 pdc mc86 236 Oct 12 13:48 ma75b24.mf +-rw-r--r-- 1 pdc mc86 233 Oct 12 13:47 ma75b7.mf +-rw-r--r-- 1 pdc mc86 229 Oct 12 13:49 ma75s10.mf +-rw-r--r-- 1 pdc mc86 229 Oct 12 13:49 ma75s12.mf +-rw-r--r-- 1 pdc mc86 229 Oct 12 13:49 ma75s14.mf +-rw-r--r-- 1 pdc mc86 229 Oct 12 13:49 ma75s18.mf +-rw-r--r-- 1 pdc mc86 229 Oct 12 13:49 ma75s24.mf +-rw-r--r-- 1 pdc mc86 226 Oct 12 13:49 ma75s7.mf +-rw-r--r-- 1 pdc mc86 276 Oct 12 13:48 ma76a10.mf +-rw-r--r-- 1 pdc mc86 276 Oct 12 13:48 ma76a12.mf +-rw-r--r-- 1 pdc mc86 276 Oct 12 13:48 ma76a14.mf +-rw-r--r-- 1 pdc mc86 276 Oct 12 13:48 ma76a18.mf +-rw-r--r-- 1 pdc mc86 276 Oct 12 13:48 ma76a24.mf +-rw-r--r-- 1 pdc mc86 273 Oct 12 13:48 ma76a7.mf +-rw-r--r-- 1 pdc mc86 293 Oct 12 13:51 ma76az10.mf +-rw-r--r-- 1 pdc mc86 293 Oct 12 13:51 ma76az12.mf +-rw-r--r-- 1 pdc mc86 293 Oct 12 13:51 ma76az14.mf +-rw-r--r-- 1 pdc mc86 293 Oct 12 13:51 ma76az18.mf +-rw-r--r-- 1 pdc mc86 293 Oct 12 13:51 ma76az24.mf +-rw-r--r-- 1 pdc mc86 290 Oct 12 13:51 ma76az7.mf +-rw-r--r-- 1 pdc mc86 276 Oct 12 13:48 ma76b10.mf +-rw-r--r-- 1 pdc mc86 276 Oct 12 13:48 ma76b12.mf +-rw-r--r-- 1 pdc mc86 276 Oct 12 13:48 ma76b14.mf +-rw-r--r-- 1 pdc mc86 276 Oct 12 13:48 ma76b18.mf +-rw-r--r-- 1 pdc mc86 276 Oct 12 13:49 ma76b24.mf +-rw-r--r-- 1 pdc mc86 273 Oct 12 13:48 ma76b7.mf +-rw-r--r-- 1 pdc mc86 269 Oct 12 13:50 ma76s10.mf +-rw-r--r-- 1 pdc mc86 269 Oct 12 13:50 ma76s12.mf +-rw-r--r-- 1 pdc mc86 269 Oct 12 13:50 ma76s14.mf +-rw-r--r-- 1 pdc mc86 269 Oct 12 13:50 ma76s18.mf +-rw-r--r-- 1 pdc mc86 269 Oct 12 13:50 ma76s24.mf +-rw-r--r-- 1 pdc mc86 266 Oct 12 13:50 ma76s7.mf + +dvi: +total 163 +-rw-r--r-- 1 pdc mc86 19864 Oct 12 16:42 install.dvi +-rw-r--r-- 1 pdc mc86 15224 Oct 12 16:42 magrman.dvi +-rw-r--r-- 1 pdc mc86 119336 Oct 12 16:43 maman.dvi + +fontinst: +total 76 +-rw-r--r-- 1 pdc mc86 1651 Oct 11 16:57 README +-rw-r--r-- 1 pdc mc86 1242 Jul 20 15:02 example.tex +-rw-r--r-- 1 pdc mc86 9394 Oct 12 12:25 fontma.tex +-rw-r--r-- 1 pdc mc86 4204 Jun 22 14:53 pdcadma.mtx +-r--r--r-- 1 pdc mc86 4586 Oct 12 12:14 pdcetxf.tex +-r--r--r-- 1 pdc mc86 3466 Oct 12 12:14 pdcetxm.tex +-r--r--r-- 1 pdc mc86 23181 Oct 12 12:14 pdcmaa.etx +-r--r--r-- 1 pdc mc86 1341 Oct 12 12:14 pdcmaa3.etx +-r--r--r-- 1 pdc mc86 14393 Oct 12 12:14 pdcmab.etx +-r--r--r-- 1 pdc mc86 8166 Oct 12 12:14 pdcmat1.mtx + +latex209: +total 36 +-rw-r--r-- 1 pdc mc86 3056 Oct 12 13:45 fmv9nfss.sty +-rw-r--r-- 1 pdc mc86 14548 Oct 12 13:45 fmv9pltx.sty +-rw-r--r-- 1 pdc mc86 2965 Oct 12 13:45 fmvnfss.sty +-rw-r--r-- 1 pdc mc86 14509 Oct 12 13:45 fmvpltx.sty + +source: +total 263 +-r--r--r-- 1 pdc mc86 1409 Oct 11 18:10 ascii.mf +-r--r--r-- 1 pdc mc86 1280 Oct 11 18:11 fmv.mf +-r--r--r-- 1 pdc mc86 2965 Oct 11 18:10 fmv.mff +-r--r--r-- 1 pdc mc86 10506 Oct 11 18:11 ma.mf +-r--r--r-- 1 pdc mc86 9106 Oct 11 18:11 maaenc.mf +-r--r--r-- 1 pdc mc86 3937 Oct 11 18:11 mabenc.mf +-r--r--r-- 1 pdc mc86 9352 Oct 11 18:10 macaps.mf +-r--r--r-- 1 pdc mc86 7453 Oct 11 18:11 macenc.mf +-r--r--r-- 1 pdc mc86 7817 Oct 11 18:11 macy.mf +-r--r--r-- 1 pdc mc86 2473 Oct 11 18:11 maeenc.mf +-r--r--r-- 1 pdc mc86 1968 Oct 11 18:10 maencode.mf +-r--r--r-- 1 pdc mc86 6991 Oct 11 18:10 mafigs.mf +-r--r--r-- 1 pdc mc86 10527 Oct 11 18:11 magenc.mf +-r--r--r-- 1 pdc mc86 7526 Oct 11 18:10 maglcaps.mf +-r--r--r-- 1 pdc mc86 6164 Oct 11 18:10 magrcaps.mf +-r--r--r-- 1 pdc mc86 24413 Oct 11 18:10 magrlc.mf +-r--r--r-- 1 pdc mc86 35678 Oct 11 18:10 makit.mf +-r--r--r-- 1 pdc mc86 19402 Oct 11 18:11 malc.mf +-r--r--r-- 1 pdc mc86 3411 Oct 11 18:11 malcco.mf +-r--r--r-- 1 pdc mc86 10426 Oct 11 18:11 malcnc.mf +-r--r--r-- 1 pdc mc86 7020 Oct 11 18:10 mamarks.mf +-r--r--r-- 1 pdc mc86 6505 Oct 11 18:11 maparams.mf +-r--r--r-- 1 pdc mc86 10214 Oct 11 18:10 mapunct.mf +-rw-r--r-- 1 pdc mc86 1195 Apr 5 1993 mascript.mf +-r--r--r-- 1 pdc mc86 2530 Oct 11 18:11 masenc.mf +-r--r--r-- 1 pdc mc86 24134 Oct 11 18:11 masyms.mf +-r--r--r-- 1 pdc mc86 3116 Oct 11 18:11 mff.rc +-rw-r--r-- 1 pdc mc86 17981 Nov 2 1993 testfont.tex + +tex: +total 21 +-rw-r--r-- 1 pdc mc86 1584 Oct 12 13:41 OT1fmv.fd +-rw-r--r-- 1 pdc mc86 1630 Oct 12 13:41 OT1fmv9.fd +-rw-r--r-- 1 pdc mc86 1512 Oct 12 13:41 T1fmv.fd +-rw-r--r-- 1 pdc mc86 1534 Oct 12 13:41 T1fmv9.fd +-r--r--r-- 1 pdc mc86 8146 Sep 2 11:32 maamac.tex +-r--r--r-- 1 pdc mc86 4947 Sep 2 11:32 pdcutil.tex + +tfm: +total 903 +-rw-r--r-- 1 pdc mc86 2436 Oct 12 10:56 ma53a12.tfm +-rw-r--r-- 1 pdc mc86 2412 Oct 11 18:50 ma55a10.tfm +-rw-r--r-- 1 pdc mc86 2428 Oct 11 18:51 ma55a12.tfm +-rw-r--r-- 1 pdc mc86 2420 Oct 11 18:52 ma55a14.tfm +-rw-r--r-- 1 pdc mc86 2428 Oct 11 18:53 ma55a18.tfm +-rw-r--r-- 1 pdc mc86 2424 Oct 11 18:53 ma55a24.tfm +-rw-r--r-- 1 pdc mc86 2432 Oct 12 10:58 ma55a48.tfm +-rw-r--r-- 1 pdc mc86 2424 Oct 11 18:48 ma55a7.tfm +-rw-r--r-- 1 pdc mc86 2420 Oct 12 10:52 ma55a9.tfm +-rw-r--r-- 1 pdc mc86 2516 Oct 12 13:45 ma55aa10.tfm +-rw-r--r-- 1 pdc mc86 2520 Oct 12 13:45 ma55aa12.tfm +-rw-r--r-- 1 pdc mc86 2516 Oct 12 13:45 ma55aa14.tfm +-rw-r--r-- 1 pdc mc86 2524 Oct 12 13:45 ma55aa18.tfm +-rw-r--r-- 1 pdc mc86 2520 Oct 12 13:45 ma55aa24.tfm +-rw-r--r-- 1 pdc mc86 2504 Oct 12 13:45 ma55aa7.tfm +-rw-r--r-- 1 pdc mc86 2536 Oct 12 13:45 ma55ab10.tfm +-rw-r--r-- 1 pdc mc86 2540 Oct 12 13:45 ma55ab12.tfm +-rw-r--r-- 1 pdc mc86 2536 Oct 12 13:45 ma55ab14.tfm +-rw-r--r-- 1 pdc mc86 2544 Oct 12 13:45 ma55ab18.tfm +-rw-r--r-- 1 pdc mc86 2540 Oct 12 13:45 ma55ab24.tfm +-rw-r--r-- 1 pdc mc86 1848 Oct 12 13:45 ma55ab7.tfm +-rw-r--r-- 1 pdc mc86 6104 Oct 12 13:41 ma55ar10.tfm +-rw-r--r-- 1 pdc mc86 6108 Oct 12 13:41 ma55ar12.tfm +-rw-r--r-- 1 pdc mc86 6104 Oct 12 13:41 ma55ar14.tfm +-rw-r--r-- 1 pdc mc86 6112 Oct 12 13:41 ma55ar18.tfm +-rw-r--r-- 1 pdc mc86 6108 Oct 12 13:41 ma55ar24.tfm +-rw-r--r-- 1 pdc mc86 6088 Oct 12 13:41 ma55ar7.tfm +-rw-r--r-- 1 pdc mc86 6136 Oct 12 13:41 ma55as10.tfm +-rw-r--r-- 1 pdc mc86 6140 Oct 12 13:41 ma55as12.tfm +-rw-r--r-- 1 pdc mc86 6136 Oct 12 13:41 ma55as14.tfm +-rw-r--r-- 1 pdc mc86 6144 Oct 12 13:41 ma55as18.tfm +-rw-r--r-- 1 pdc mc86 6140 Oct 12 13:41 ma55as24.tfm +-rw-r--r-- 1 pdc mc86 6124 Oct 12 13:41 ma55as7.tfm +-rw-r--r-- 1 pdc mc86 11088 Oct 12 13:42 ma55at10.tfm +-rw-r--r-- 1 pdc mc86 11092 Oct 12 13:42 ma55at12.tfm +-rw-r--r-- 1 pdc mc86 11088 Oct 12 13:42 ma55at14.tfm +-rw-r--r-- 1 pdc mc86 11096 Oct 12 13:42 ma55at18.tfm +-rw-r--r-- 1 pdc mc86 11092 Oct 12 13:42 ma55at24.tfm +-rw-r--r-- 1 pdc mc86 11056 Oct 12 13:42 ma55at7.tfm +-rw-r--r-- 1 pdc mc86 11104 Oct 12 13:42 ma55au10.tfm +-rw-r--r-- 1 pdc mc86 11108 Oct 12 13:42 ma55au12.tfm +-rw-r--r-- 1 pdc mc86 11104 Oct 12 13:42 ma55au14.tfm +-rw-r--r-- 1 pdc mc86 11112 Oct 12 13:42 ma55au18.tfm +-rw-r--r-- 1 pdc mc86 11108 Oct 12 13:42 ma55au24.tfm +-rw-r--r-- 1 pdc mc86 11076 Oct 12 13:42 ma55au7.tfm +-rw-r--r-- 1 pdc mc86 1644 Oct 11 19:11 ma55az10.tfm +-rw-r--r-- 1 pdc mc86 1652 Oct 11 19:11 ma55az12.tfm +-rw-r--r-- 1 pdc mc86 1644 Oct 11 19:11 ma55az14.tfm +-rw-r--r-- 1 pdc mc86 1656 Oct 11 19:12 ma55az18.tfm +-rw-r--r-- 1 pdc mc86 1648 Oct 11 19:12 ma55az24.tfm +-rw-r--r-- 1 pdc mc86 1648 Oct 11 19:10 ma55az7.tfm +-rw-r--r-- 1 pdc mc86 1140 Oct 11 18:51 ma55b10.tfm +-rw-r--r-- 1 pdc mc86 1140 Oct 11 18:51 ma55b12.tfm +-rw-r--r-- 1 pdc mc86 1144 Oct 11 18:52 ma55b14.tfm +-rw-r--r-- 1 pdc mc86 1144 Oct 11 18:53 ma55b18.tfm +-rw-r--r-- 1 pdc mc86 1144 Oct 11 18:54 ma55b24.tfm +-rw-r--r-- 1 pdc mc86 1144 Oct 11 18:50 ma55b7.tfm +-rw-r--r-- 1 pdc mc86 996 Oct 12 10:55 ma55c12.tfm +-rw-r--r-- 1 pdc mc86 2508 Oct 12 10:54 ma55g10.tfm +-rw-r--r-- 1 pdc mc86 2516 Oct 12 10:54 ma55g11.tfm +-rw-r--r-- 1 pdc mc86 2508 Oct 12 10:56 ma55g12.tfm +-rw-r--r-- 1 pdc mc86 2520 Oct 12 10:55 ma55g24.tfm +-rw-r--r-- 1 pdc mc86 2516 Oct 12 10:54 ma55g9.tfm +-rw-r--r-- 1 pdc mc86 1628 Oct 11 19:07 ma55s10.tfm +-rw-r--r-- 1 pdc mc86 1632 Oct 11 19:07 ma55s12.tfm +-rw-r--r-- 1 pdc mc86 1628 Oct 11 19:08 ma55s14.tfm +-rw-r--r-- 1 pdc mc86 1636 Oct 11 19:08 ma55s18.tfm +-rw-r--r-- 1 pdc mc86 1632 Oct 11 19:08 ma55s24.tfm +-rw-r--r-- 1 pdc mc86 1628 Oct 11 19:07 ma55s7.tfm +-rw-r--r-- 1 pdc mc86 2684 Oct 11 18:55 ma56a10.tfm +-rw-r--r-- 1 pdc mc86 2676 Oct 11 18:55 ma56a12.tfm +-rw-r--r-- 1 pdc mc86 2684 Oct 11 18:56 ma56a14.tfm +-rw-r--r-- 1 pdc mc86 2688 Oct 11 18:57 ma56a18.tfm +-rw-r--r-- 1 pdc mc86 2680 Oct 11 18:58 ma56a24.tfm +-rw-r--r-- 1 pdc mc86 2680 Oct 11 18:54 ma56a7.tfm +-rw-r--r-- 1 pdc mc86 2680 Oct 12 10:53 ma56a9.tfm +-rw-r--r-- 1 pdc mc86 6380 Oct 12 13:42 ma56ar10.tfm +-rw-r--r-- 1 pdc mc86 6380 Oct 12 13:42 ma56ar12.tfm +-rw-r--r-- 1 pdc mc86 6380 Oct 12 13:42 ma56ar14.tfm +-rw-r--r-- 1 pdc mc86 6388 Oct 12 13:42 ma56ar18.tfm +-rw-r--r-- 1 pdc mc86 6380 Oct 12 13:42 ma56ar24.tfm +-rw-r--r-- 1 pdc mc86 6376 Oct 12 13:42 ma56ar7.tfm +-rw-r--r-- 1 pdc mc86 6404 Oct 12 13:43 ma56as10.tfm +-rw-r--r-- 1 pdc mc86 6404 Oct 12 13:43 ma56as12.tfm +-rw-r--r-- 1 pdc mc86 6404 Oct 12 13:43 ma56as14.tfm +-rw-r--r-- 1 pdc mc86 6412 Oct 12 13:43 ma56as18.tfm +-rw-r--r-- 1 pdc mc86 6404 Oct 12 13:43 ma56as24.tfm +-rw-r--r-- 1 pdc mc86 6404 Oct 12 13:43 ma56as7.tfm +-rw-r--r-- 1 pdc mc86 1808 Oct 12 11:02 ma56az10.tfm +-rw-r--r-- 1 pdc mc86 1804 Oct 12 11:02 ma56az12.tfm +-rw-r--r-- 1 pdc mc86 1812 Oct 12 11:03 ma56az14.tfm +-rw-r--r-- 1 pdc mc86 1816 Oct 12 11:03 ma56az18.tfm +-rw-r--r-- 1 pdc mc86 1808 Oct 12 11:03 ma56az24.tfm +-rw-r--r-- 1 pdc mc86 1804 Oct 12 11:02 ma56az7.tfm +-rw-r--r-- 1 pdc mc86 1180 Oct 11 18:55 ma56b10.tfm +-rw-r--r-- 1 pdc mc86 1184 Oct 11 18:56 ma56b12.tfm +-rw-r--r-- 1 pdc mc86 1180 Oct 11 18:56 ma56b14.tfm +-rw-r--r-- 1 pdc mc86 1180 Oct 11 18:57 ma56b18.tfm +-rw-r--r-- 1 pdc mc86 1184 Oct 11 18:58 ma56b24.tfm +-rw-r--r-- 1 pdc mc86 1180 Oct 11 18:54 ma56b7.tfm +-rw-r--r-- 1 pdc mc86 2608 Oct 12 10:55 ma56g11.tfm +-rw-r--r-- 1 pdc mc86 1788 Oct 12 10:58 ma56s10.tfm +-rw-r--r-- 1 pdc mc86 1788 Oct 12 10:59 ma56s12.tfm +-rw-r--r-- 1 pdc mc86 1792 Oct 12 10:59 ma56s14.tfm +-rw-r--r-- 1 pdc mc86 1796 Oct 12 10:59 ma56s18.tfm +-rw-r--r-- 1 pdc mc86 1792 Oct 12 11:00 ma56s24.tfm +-rw-r--r-- 1 pdc mc86 1784 Oct 12 10:58 ma56s7.tfm +-rw-r--r-- 1 pdc mc86 2424 Oct 12 10:56 ma57a12.tfm +-rw-r--r-- 1 pdc mc86 2420 Oct 11 18:59 ma75a10.tfm +-rw-r--r-- 1 pdc mc86 2428 Oct 11 19:00 ma75a12.tfm +-rw-r--r-- 1 pdc mc86 2412 Oct 11 19:00 ma75a14.tfm +-rw-r--r-- 1 pdc mc86 2424 Oct 11 19:01 ma75a18.tfm +-rw-r--r-- 1 pdc mc86 2424 Oct 11 19:02 ma75a24.tfm +-rw-r--r-- 1 pdc mc86 2424 Oct 11 18:58 ma75a7.tfm +-rw-r--r-- 1 pdc mc86 2432 Oct 12 10:57 ma75a72.tfm +-rw-r--r-- 1 pdc mc86 2420 Oct 12 10:53 ma75a9.tfm +-rw-r--r-- 1 pdc mc86 2512 Oct 12 13:45 ma75aa10.tfm +-rw-r--r-- 1 pdc mc86 2516 Oct 12 13:45 ma75aa12.tfm +-rw-r--r-- 1 pdc mc86 2512 Oct 12 13:45 ma75aa14.tfm +-rw-r--r-- 1 pdc mc86 2520 Oct 12 13:45 ma75aa18.tfm +-rw-r--r-- 1 pdc mc86 2516 Oct 12 13:45 ma75aa24.tfm +-rw-r--r-- 1 pdc mc86 2508 Oct 12 13:45 ma75aa7.tfm +-rw-r--r-- 1 pdc mc86 2532 Oct 12 13:45 ma75ab10.tfm +-rw-r--r-- 1 pdc mc86 2536 Oct 12 13:45 ma75ab12.tfm +-rw-r--r-- 1 pdc mc86 2532 Oct 12 13:45 ma75ab14.tfm +-rw-r--r-- 1 pdc mc86 2540 Oct 12 13:45 ma75ab18.tfm +-rw-r--r-- 1 pdc mc86 2536 Oct 12 13:45 ma75ab24.tfm +-rw-r--r-- 1 pdc mc86 2528 Oct 12 13:45 ma75ab7.tfm +-rw-r--r-- 1 pdc mc86 6100 Oct 12 13:43 ma75ar10.tfm +-rw-r--r-- 1 pdc mc86 6112 Oct 12 13:43 ma75ar12.tfm +-rw-r--r-- 1 pdc mc86 6100 Oct 12 13:43 ma75ar14.tfm +-rw-r--r-- 1 pdc mc86 6104 Oct 12 13:43 ma75ar18.tfm +-rw-r--r-- 1 pdc mc86 6104 Oct 12 13:43 ma75ar24.tfm +-rw-r--r-- 1 pdc mc86 6100 Oct 12 13:43 ma75ar7.tfm +-rw-r--r-- 1 pdc mc86 6128 Oct 12 13:43 ma75as10.tfm +-rw-r--r-- 1 pdc mc86 6140 Oct 12 13:43 ma75as12.tfm +-rw-r--r-- 1 pdc mc86 6128 Oct 12 13:43 ma75as14.tfm +-rw-r--r-- 1 pdc mc86 6132 Oct 12 13:43 ma75as18.tfm +-rw-r--r-- 1 pdc mc86 6132 Oct 12 13:43 ma75as24.tfm +-rw-r--r-- 1 pdc mc86 6132 Oct 12 13:43 ma75as7.tfm +-rw-r--r-- 1 pdc mc86 11088 Oct 12 13:43 ma75at10.tfm +-rw-r--r-- 1 pdc mc86 11092 Oct 12 13:43 ma75at12.tfm +-rw-r--r-- 1 pdc mc86 11088 Oct 12 13:44 ma75at14.tfm +-rw-r--r-- 1 pdc mc86 11096 Oct 12 13:44 ma75at18.tfm +-rw-r--r-- 1 pdc mc86 11092 Oct 12 13:44 ma75at24.tfm +-rw-r--r-- 1 pdc mc86 11080 Oct 12 13:43 ma75at7.tfm +-rw-r--r-- 1 pdc mc86 11104 Oct 12 13:44 ma75au10.tfm +-rw-r--r-- 1 pdc mc86 11108 Oct 12 13:44 ma75au12.tfm +-rw-r--r-- 1 pdc mc86 11104 Oct 12 13:44 ma75au14.tfm +-rw-r--r-- 1 pdc mc86 11112 Oct 12 13:44 ma75au18.tfm +-rw-r--r-- 1 pdc mc86 11108 Oct 12 13:44 ma75au24.tfm +-rw-r--r-- 1 pdc mc86 11096 Oct 12 13:44 ma75au7.tfm +-rw-r--r-- 1 pdc mc86 1644 Oct 11 19:13 ma75az10.tfm +-rw-r--r-- 1 pdc mc86 1652 Oct 11 19:13 ma75az12.tfm +-rw-r--r-- 1 pdc mc86 1644 Oct 11 19:13 ma75az14.tfm +-rw-r--r-- 1 pdc mc86 1656 Oct 11 19:14 ma75az18.tfm +-rw-r--r-- 1 pdc mc86 1648 Oct 11 19:14 ma75az24.tfm +-rw-r--r-- 1 pdc mc86 1652 Oct 11 19:12 ma75az7.tfm +-rw-r--r-- 1 pdc mc86 1140 Oct 11 18:59 ma75b10.tfm +-rw-r--r-- 1 pdc mc86 1140 Oct 11 19:00 ma75b12.tfm +-rw-r--r-- 1 pdc mc86 1144 Oct 11 19:01 ma75b14.tfm +-rw-r--r-- 1 pdc mc86 1148 Oct 11 19:01 ma75b18.tfm +-rw-r--r-- 1 pdc mc86 1148 Oct 11 19:02 ma75b24.tfm +-rw-r--r-- 1 pdc mc86 1144 Oct 11 18:58 ma75b7.tfm +-rw-r--r-- 1 pdc mc86 1628 Oct 11 19:09 ma75s10.tfm +-rw-r--r-- 1 pdc mc86 1632 Oct 11 19:09 ma75s12.tfm +-rw-r--r-- 1 pdc mc86 1628 Oct 11 19:09 ma75s14.tfm +-rw-r--r-- 1 pdc mc86 1636 Oct 11 19:10 ma75s18.tfm +-rw-r--r-- 1 pdc mc86 1632 Oct 11 19:10 ma75s24.tfm +-rw-r--r-- 1 pdc mc86 1632 Oct 11 19:08 ma75s7.tfm +-rw-r--r-- 1 pdc mc86 2680 Oct 11 19:03 ma76a10.tfm +-rw-r--r-- 1 pdc mc86 2672 Oct 11 19:04 ma76a12.tfm +-rw-r--r-- 1 pdc mc86 2676 Oct 11 19:04 ma76a14.tfm +-rw-r--r-- 1 pdc mc86 2684 Oct 11 19:05 ma76a18.tfm +-rw-r--r-- 1 pdc mc86 2680 Oct 11 19:06 ma76a24.tfm +-rw-r--r-- 1 pdc mc86 2680 Oct 11 19:02 ma76a7.tfm +-rw-r--r-- 1 pdc mc86 6376 Oct 12 13:44 ma76ar10.tfm +-rw-r--r-- 1 pdc mc86 6388 Oct 12 13:44 ma76ar12.tfm +-rw-r--r-- 1 pdc mc86 6388 Oct 12 13:44 ma76ar14.tfm +-rw-r--r-- 1 pdc mc86 6388 Oct 12 13:44 ma76ar18.tfm +-rw-r--r-- 1 pdc mc86 6388 Oct 12 13:44 ma76ar24.tfm +-rw-r--r-- 1 pdc mc86 6388 Oct 12 13:44 ma76ar7.tfm +-rw-r--r-- 1 pdc mc86 6404 Oct 12 13:44 ma76as10.tfm +-rw-r--r-- 1 pdc mc86 6416 Oct 12 13:44 ma76as12.tfm +-rw-r--r-- 1 pdc mc86 6416 Oct 12 13:45 ma76as14.tfm +-rw-r--r-- 1 pdc mc86 6416 Oct 12 13:45 ma76as18.tfm +-rw-r--r-- 1 pdc mc86 6416 Oct 12 13:45 ma76as24.tfm +-rw-r--r-- 1 pdc mc86 6420 Oct 12 13:44 ma76as7.tfm +-rw-r--r-- 1 pdc mc86 1812 Oct 12 11:04 ma76az10.tfm +-rw-r--r-- 1 pdc mc86 1804 Oct 12 11:04 ma76az12.tfm +-rw-r--r-- 1 pdc mc86 1812 Oct 12 11:05 ma76az14.tfm +-rw-r--r-- 1 pdc mc86 1816 Oct 12 11:05 ma76az18.tfm +-rw-r--r-- 1 pdc mc86 1808 Oct 12 11:05 ma76az24.tfm +-rw-r--r-- 1 pdc mc86 1804 Oct 12 11:04 ma76az7.tfm +-rw-r--r-- 1 pdc mc86 1176 Oct 11 19:03 ma76b10.tfm +-rw-r--r-- 1 pdc mc86 1180 Oct 11 19:04 ma76b12.tfm +-rw-r--r-- 1 pdc mc86 1176 Oct 11 19:05 ma76b14.tfm +-rw-r--r-- 1 pdc mc86 1180 Oct 11 19:05 ma76b18.tfm +-rw-r--r-- 1 pdc mc86 1184 Oct 11 19:06 ma76b24.tfm +-rw-r--r-- 1 pdc mc86 1176 Oct 11 19:03 ma76b7.tfm +-rw-r--r-- 1 pdc mc86 1792 Oct 12 11:00 ma76s10.tfm +-rw-r--r-- 1 pdc mc86 1788 Oct 12 11:00 ma76s12.tfm +-rw-r--r-- 1 pdc mc86 1792 Oct 12 11:01 ma76s14.tfm +-rw-r--r-- 1 pdc mc86 1796 Oct 12 11:01 ma76s18.tfm +-rw-r--r-- 1 pdc mc86 1792 Oct 12 11:01 ma76s24.tfm +-rw-r--r-- 1 pdc mc86 1784 Oct 12 11:00 ma76s7.tfm + +vf: +total 312 +-rw-r--r-- 1 pdc mc86 1528 Oct 12 13:45 ma55aa10.vf +-rw-r--r-- 1 pdc mc86 1528 Oct 12 13:45 ma55aa12.vf +-rw-r--r-- 1 pdc mc86 1528 Oct 12 13:45 ma55aa14.vf +-rw-r--r-- 1 pdc mc86 1528 Oct 12 13:45 ma55aa18.vf +-rw-r--r-- 1 pdc mc86 1528 Oct 12 13:45 ma55aa24.vf +-rw-r--r-- 1 pdc mc86 1524 Oct 12 13:45 ma55aa7.vf +-rw-r--r-- 1 pdc mc86 1528 Oct 12 13:45 ma55ab10.vf +-rw-r--r-- 1 pdc mc86 1528 Oct 12 13:45 ma55ab12.vf +-rw-r--r-- 1 pdc mc86 1528 Oct 12 13:45 ma55ab14.vf +-rw-r--r-- 1 pdc mc86 1528 Oct 12 13:45 ma55ab18.vf +-rw-r--r-- 1 pdc mc86 1528 Oct 12 13:45 ma55ab24.vf +-rw-r--r-- 1 pdc mc86 1956 Oct 12 13:45 ma55ab7.vf +-rw-r--r-- 1 pdc mc86 2628 Oct 12 13:41 ma55ar10.vf +-rw-r--r-- 1 pdc mc86 2628 Oct 12 13:41 ma55ar12.vf +-rw-r--r-- 1 pdc mc86 2628 Oct 12 13:41 ma55ar14.vf +-rw-r--r-- 1 pdc mc86 2628 Oct 12 13:41 ma55ar18.vf +-rw-r--r-- 1 pdc mc86 2628 Oct 12 13:41 ma55ar24.vf +-rw-r--r-- 1 pdc mc86 2636 Oct 12 13:41 ma55ar7.vf +-rw-r--r-- 1 pdc mc86 2620 Oct 12 13:41 ma55as10.vf +-rw-r--r-- 1 pdc mc86 2620 Oct 12 13:41 ma55as12.vf +-rw-r--r-- 1 pdc mc86 2620 Oct 12 13:41 ma55as14.vf +-rw-r--r-- 1 pdc mc86 2620 Oct 12 13:41 ma55as18.vf +-rw-r--r-- 1 pdc mc86 2620 Oct 12 13:41 ma55as24.vf +-rw-r--r-- 1 pdc mc86 2628 Oct 12 13:41 ma55as7.vf +-rw-r--r-- 1 pdc mc86 4492 Oct 12 13:42 ma55at10.vf +-rw-r--r-- 1 pdc mc86 4492 Oct 12 13:42 ma55at12.vf +-rw-r--r-- 1 pdc mc86 4492 Oct 12 13:42 ma55at14.vf +-rw-r--r-- 1 pdc mc86 4492 Oct 12 13:42 ma55at18.vf +-rw-r--r-- 1 pdc mc86 4492 Oct 12 13:42 ma55at24.vf +-rw-r--r-- 1 pdc mc86 4488 Oct 12 13:42 ma55at7.vf +-rw-r--r-- 1 pdc mc86 4480 Oct 12 13:42 ma55au10.vf +-rw-r--r-- 1 pdc mc86 4480 Oct 12 13:42 ma55au12.vf +-rw-r--r-- 1 pdc mc86 4480 Oct 12 13:42 ma55au14.vf +-rw-r--r-- 1 pdc mc86 4480 Oct 12 13:42 ma55au18.vf +-rw-r--r-- 1 pdc mc86 4480 Oct 12 13:42 ma55au24.vf +-rw-r--r-- 1 pdc mc86 4476 Oct 12 13:42 ma55au7.vf +-rw-r--r-- 1 pdc mc86 2620 Oct 12 13:42 ma56ar10.vf +-rw-r--r-- 1 pdc mc86 2620 Oct 12 13:42 ma56ar12.vf +-rw-r--r-- 1 pdc mc86 2620 Oct 12 13:42 ma56ar14.vf +-rw-r--r-- 1 pdc mc86 2620 Oct 12 13:42 ma56ar18.vf +-rw-r--r-- 1 pdc mc86 2620 Oct 12 13:42 ma56ar24.vf +-rw-r--r-- 1 pdc mc86 2628 Oct 12 13:42 ma56ar7.vf +-rw-r--r-- 1 pdc mc86 2612 Oct 12 13:43 ma56as10.vf +-rw-r--r-- 1 pdc mc86 2612 Oct 12 13:43 ma56as12.vf +-rw-r--r-- 1 pdc mc86 2612 Oct 12 13:43 ma56as14.vf +-rw-r--r-- 1 pdc mc86 2612 Oct 12 13:43 ma56as18.vf +-rw-r--r-- 1 pdc mc86 2612 Oct 12 13:43 ma56as24.vf +-rw-r--r-- 1 pdc mc86 2620 Oct 12 13:43 ma56as7.vf +-rw-r--r-- 1 pdc mc86 1528 Oct 12 13:45 ma75aa10.vf +-rw-r--r-- 1 pdc mc86 1528 Oct 12 13:45 ma75aa12.vf +-rw-r--r-- 1 pdc mc86 1528 Oct 12 13:45 ma75aa14.vf +-rw-r--r-- 1 pdc mc86 1528 Oct 12 13:45 ma75aa18.vf +-rw-r--r-- 1 pdc mc86 1528 Oct 12 13:45 ma75aa24.vf +-rw-r--r-- 1 pdc mc86 1524 Oct 12 13:45 ma75aa7.vf +-rw-r--r-- 1 pdc mc86 1528 Oct 12 13:45 ma75ab10.vf +-rw-r--r-- 1 pdc mc86 1528 Oct 12 13:45 ma75ab12.vf +-rw-r--r-- 1 pdc mc86 1528 Oct 12 13:45 ma75ab14.vf +-rw-r--r-- 1 pdc mc86 1528 Oct 12 13:45 ma75ab18.vf +-rw-r--r-- 1 pdc mc86 1528 Oct 12 13:45 ma75ab24.vf +-rw-r--r-- 1 pdc mc86 1524 Oct 12 13:45 ma75ab7.vf +-rw-r--r-- 1 pdc mc86 2636 Oct 12 13:43 ma75ar10.vf +-rw-r--r-- 1 pdc mc86 2636 Oct 12 13:43 ma75ar12.vf +-rw-r--r-- 1 pdc mc86 2636 Oct 12 13:43 ma75ar14.vf +-rw-r--r-- 1 pdc mc86 2636 Oct 12 13:43 ma75ar18.vf +-rw-r--r-- 1 pdc mc86 2636 Oct 12 13:43 ma75ar24.vf +-rw-r--r-- 1 pdc mc86 2644 Oct 12 13:43 ma75ar7.vf +-rw-r--r-- 1 pdc mc86 2624 Oct 12 13:43 ma75as10.vf +-rw-r--r-- 1 pdc mc86 2624 Oct 12 13:43 ma75as12.vf +-rw-r--r-- 1 pdc mc86 2624 Oct 12 13:43 ma75as14.vf +-rw-r--r-- 1 pdc mc86 2624 Oct 12 13:43 ma75as18.vf +-rw-r--r-- 1 pdc mc86 2624 Oct 12 13:43 ma75as24.vf +-rw-r--r-- 1 pdc mc86 2632 Oct 12 13:43 ma75as7.vf +-rw-r--r-- 1 pdc mc86 4496 Oct 12 13:43 ma75at10.vf +-rw-r--r-- 1 pdc mc86 4496 Oct 12 13:43 ma75at12.vf +-rw-r--r-- 1 pdc mc86 4496 Oct 12 13:44 ma75at14.vf +-rw-r--r-- 1 pdc mc86 4496 Oct 12 13:44 ma75at18.vf +-rw-r--r-- 1 pdc mc86 4496 Oct 12 13:44 ma75at24.vf +-rw-r--r-- 1 pdc mc86 4488 Oct 12 13:43 ma75at7.vf +-rw-r--r-- 1 pdc mc86 4488 Oct 12 13:44 ma75au10.vf +-rw-r--r-- 1 pdc mc86 4488 Oct 12 13:44 ma75au12.vf +-rw-r--r-- 1 pdc mc86 4488 Oct 12 13:44 ma75au14.vf +-rw-r--r-- 1 pdc mc86 4488 Oct 12 13:44 ma75au18.vf +-rw-r--r-- 1 pdc mc86 4488 Oct 12 13:44 ma75au24.vf +-rw-r--r-- 1 pdc mc86 4480 Oct 12 13:44 ma75au7.vf +-rw-r--r-- 1 pdc mc86 2620 Oct 12 13:44 ma76ar10.vf +-rw-r--r-- 1 pdc mc86 2624 Oct 12 13:44 ma76ar12.vf +-rw-r--r-- 1 pdc mc86 2624 Oct 12 13:44 ma76ar14.vf +-rw-r--r-- 1 pdc mc86 2624 Oct 12 13:44 ma76ar18.vf +-rw-r--r-- 1 pdc mc86 2624 Oct 12 13:44 ma76ar24.vf +-rw-r--r-- 1 pdc mc86 2636 Oct 12 13:44 ma76ar7.vf +-rw-r--r-- 1 pdc mc86 2612 Oct 12 13:44 ma76as10.vf +-rw-r--r-- 1 pdc mc86 2612 Oct 12 13:44 ma76as12.vf +-rw-r--r-- 1 pdc mc86 2612 Oct 12 13:45 ma76as14.vf +-rw-r--r-- 1 pdc mc86 2612 Oct 12 13:45 ma76as18.vf +-rw-r--r-- 1 pdc mc86 2612 Oct 12 13:45 ma76as24.vf +-rw-r--r-- 1 pdc mc86 2628 Oct 12 13:44 ma76as7.vf diff --git a/fonts/malvern/contrib/README b/fonts/malvern/contrib/README new file mode 100644 index 0000000000..03e4ebaded --- /dev/null +++ b/fonts/malvern/contrib/README @@ -0,0 +1,13 @@ +This is a directory of files contributed to the Malvern project by other +people. If at all possible, you should make bug reports etc. to the +original authors. + +Unless otherwise indicated in the files themselves, they are probably +intended to be considered public-domain. + +======================================================================== +Dir Contributor Contribution Date +------------------------------------------------------------------------ +/spqr Sebastian Rahtz Style file 1992/08/13 + <spqr@minster.york.ac.uk> for LaTeX+NFSS +======================================================================== diff --git a/fonts/malvern/contrib/spqr/README b/fonts/malvern/contrib/spqr/README new file mode 100644 index 0000000000..77ac60516a --- /dev/null +++ b/fonts/malvern/contrib/spqr/README @@ -0,0 +1,19 @@ +To: Damian.Cugley@uk.ac.oxford.prg, lac@uk.ac.soton.ecs +Subject: malvern meets the NFSS +Date: 13 Aug 1992 15:37:07 GMT +From: spqr@uk.ac.york.minster + +I append a uuencoded tar Z archive with my preliminary attempts at +using Malvern in my daily LaTeX, with the NFSS and old TeX layout. +There is a malvern.sty which describes the fonts, a set of .tfm files +in TeX layout, and my copy of MakeTeXPK which builds Malvern fonts on +demand. Its written in Rexx, as I did all this at home under OS/2, but +it may amuse you. + +If its not obvious, I havent digested the lessons of Malvern or got +into the TeX side of it. I haven't even read half Damian's +documentation. I just wanted to get pages off the printer to see +whether I want to use the font for a job. I'm quite convinced, I +admit. There is a certain je ne sais wotsit there. + +Sebastian diff --git a/fonts/malvern/contrib/spqr/maketexpk.cmd b/fonts/malvern/contrib/spqr/maketexpk.cmd new file mode 100644 index 0000000000..f3e2b67ad2 --- /dev/null +++ b/fonts/malvern/contrib/spqr/maketexpk.cmd @@ -0,0 +1,341 @@ +/* + +Translated from Piet Tutelaar's Unix shell script +into Rexx by Sebastian Rahtz, 15.8.92 (spqr@minster.york.ac.uk) + + This script file makes a new TeX PK font, because one wasn't + found. Parameters are: + + name dpi bdpi magnification [[mode] subdir] + + `name' is the name of the font, such as `cmr10'. `dpi' is + the resolution the font is needed at. `bdpi' is the base + resolution, useful for figuring out the mode to make the font + in. `magnification' is a string to pass to MF as the + magnification. `mode', if supplied, is the mode to use. + + Note that this file must execute MetaFont (and then gftopk) or + ps2pk, and place the result in the correct location for the + PostScript driver to find it subsequently. If this doesn't work, + it will be evident because the program will be invoked over and over again. + + If no METAFONT source is available for `name' and the fontname + starts with a `r' or is available in $TEXCONFIG/adobe then the + program tries to find a type1 font. If such a font is located + ps2pk will be used to render the font. + + Of course, it needs to be set up for your site with regard to paths etc +*/ + +PARSE Arg all_args +argc=words(all_args) +if ( argc < 4 | argc > 6 ) then +do + say "Usage: maketexpk fontname dpi bdpi magnification [[mode] subdir]" + exit 1 +end + +call RxFuncAdd 'SysLoadFuncs', 'RexxUtil', 'SysLoadFuncs' +call SysLoadFuncs +os2env='OS2ENVIRONMENT' + +/* destination of pk files */ +DESTDIR='d:\texfonts\pixel.lj' + +/* Where we look for METAFONT sources */ +MFINPUT=value('MFINPUT',,os2env) +if MFINPUT='' then +do + MFINPUT='d:\emtex\moremf;d:\emtex\mfinput;d:\emtex\spqr\fonts' + MFINPUT=value('MFINPUT',MFINPUT,os2env) + MFINPUT=value('MFINPUT',,os2env) +end + + +/* Where we look for Type1 fonts and AFM files */ +T1INPUTS=value('T1INPUTS',,os2env) +if T1INPUTS='' then +do + T1INPUTS='d:\emtex\ps' + T1INPUTS=value('T1INPUTS',T1INPUTS,os2env) + T1INPUTS=value('T1INPUTS',,os2env) +end + +/* Where we look for dvips stuff */ +TEXCONFIG='d:\emtex\ps' +listoftype1files=TEXCONFIG'\fontname' + +/* What encoding scheme do we use for Type1 text fonts? */ + +/* DEF_TEXT_ENCODING="-eEC.enc" (Extended Computer Modern!) */ +DEF_TEXT_ENCODING='' + +/* + TEMPDIR needs to be unique for each process because of the possibility + of simultaneous processes running this script. +*/ +TEMPDIR=SysTempFileName("d:/tmp/mtpk.???") + +NAME=word(all_args,1) +DPI=word(all_args,2) +BDPI=word(all_args,3) +MAG=word(all_args,4) +if argc > 4 then + MODE=word(all_args,5) +else + if BDPI = 300 then + MODE='hplaser' + else if BDPI = 1270 then + MODE='linohi' + else if BDPI = 2540 then + MODE='linosuper' + else + do + say 'I do not know the mode for ' BDPI + say 'update this MakeTeXPK script' + exit 1 + end + +if argc > 5 then + SUBDIR=word(all_args,6) +else + SUBDIR=BDPI'dpi' + + +PKNAME=NAME'.pk' +DESTDIR=DESTDIR'\'DPI'DPI' +/* +say 'making for ' MODE ' in ' DESTDIR SUBDIR +say 'temporary output file is 'TEMPDIR'\'PKNAME +*/ +call sysfiletree DESTDIR ,'test', 'OD' +if test.0=0 then + call SysMkDir DESTDIR +/* +else + say 'directory' DESTDIR 'exists' +*/ +destpk=DESTDIR'\'PKNAME +fname = stream(destpk , 'C', 'QUERY EXISTS') +if \ (fname ='') then + do + say DESTDIR'\'PKNAME 'already exists!' + exit 0 + end + +/* OK, try to make the font by some means */ + +/* first try Adobe Type1 fonts */ + +/* Strip off the possible starting `r' */ +if substr(NAME,1,1)='r' then + VNAME=substr(NAME,2) +else + VNAME=NAME +call sysfilesearch VNAME' ',listoftype1files, 'FILE.','C' +if rc=3 then +do + say 'You should install file ' listoftype1files + exit 0 +end +FULLNAME='!' +if FILE.0>0 then + do i=1 to file.0 + if word(file.i,1)=VNAME then + do + FULLNAME=word(file.i,2) + leave + end + end +if FULLNAME='!' then /* failed to locate a name in the list + + Do we have a METAFONT source for this typeface? +*/ + do + if substr(NAME,1,3)='fmv' then + mfname=malvern(NAME) /* Malvern font */ + else + mfname=syssearchpath('MFINPUT',NAME'.mf') + say 'Result of MF search: 'mfname + if mfname='' then + do + say 'Sorry, no PostScript font or Metafont font found' + exit 1 + end + job='@mfp \mode:='MODE'; mag:='MAG'; scrollmode; input 'name +/* +really no need to use a temporary directory, I think, in this environment + + curdir=directory() + call SysMkDir TEMPDIR + newdir= directory(TEMPDIR) +*/ + job + if substr(NAME,1,3)='fmv' then /* Malvern font */ + 'del 'NAME||'.mf' + GFNAME=NAME'.'DPI + if (stream( GFNAME, 'C', 'QUERY EXISTS') = '') then + do + echo 'Metafont failed for some reason on 'GFNAME + exit 1 + end +'@gftopk' GFNAME PKNAME + '@copy' PKNAME destpk + x=sysfiledelete(GFNAME) + x=sysfiledelete(PKNAME) + x=sysfiledelete(NAME'.log') + x=sysfiledelete(NAME'.tfm') + exit 0 + end +else +/* we have a Type1 font (at any rate, its in the list!) */ + afmname=syssearchpath('T1INPUTS',VNAME'.afm') + if afmname='' then + do + say 'Failed to find afm file for' VNAME ' in 'T1INPUTS + exit 1 + end +/* If we don't use default AFM encoding then we have to check + if we can apply this encoding (text fonts only) +*/ +ENCODING=DEF_TEXT_ENCODING + + if \ (DEF_TEXT_ENCODING = '') then + do + /* What is encoding scheme that the AFM file uses? */ + call sysfilesearch 'EncodingScheme',afmname, 'FILE.','C' + if file.0=0 then + do + say afmname': Invalid AFM file!' + exit 0 + end + EXT_ENC=word(file.1,2) + select + when substr(ext_end,1,6)='AdobeS' then ENCODING=DEF_TEXT_ENCODING + when substr(ext_end,1,3)='ISO' then ENCODING=DEF_TEXT_ENCODING + otherwise + ENCODING='' + end + end + pfbname=syssearchpath('T1INPUTS',VNAME'.pfa') + if pfbname='' then + do + pfbname=syssearchpath('T1INPUTS',VNAME'.pfb') + if pfbname='' then + do + say 'Source for font' vname 'not found on path 'T1INPUTS + exit 1 + end + end + job='@ps2pk -X'DPI ENCODING filespec('name',pfbname) destpk + job +exit 0 + +malvern: procedure +arg fontname +/* Malvern generation +# +# The font name is of the form +# +# fmvWVV## Karl Berry's standard font names +# +# where W denotes a weight (one of t, i, l, k, r, d, b, x, c) +# VV denotes a "variation" (one of <empty>, rn, re, i, in, ie) +# ## is the design size, in points +# +# or +# maXXx## my nonstandard font names +# +# where XX is 2 digits giving a style in the tradition of Univers +# x is a suffix describing the character set of the font +# ## is the design size, in points (with p as decimal point) +# +# Examples: +# +# fmvr10 ma55a10 Malvern 55 10-pt +# fmvd10 ma65a10 Malvern 65 demibold 10-pt +# fmvbix18 ma74a18 Malvern 74 bold extended italic 18-pt +# fmvric7 ma58a7 Malvern 58 condensed italic 7-pt +# +# The fmv- fonts all use the Cork encoding. +# +*/ +weights.='' +weights.1= 'weight = 1/4;' /* ultra-light */ +weights.2= 'weight = 1/2;' /* extra-light */ +weights.3= 'weight = 3/4;' /* light */ +weights.4= 'weight = 7/8;' /* book */ +weights.5= 'weight = 1;' /* medium */ +weights.6= 'weight = 1.5;' /* demi */ +weights.7= 'weight = 2;' /* bold */ +weights.8= 'weight = 3;' /* extra */ +weights.9= 'weight = 4;' /* ultra */ + +weights.t= 'weight = 1/4;' /* thin [ultra-light] */ +weights.i= 'weight = 1/2;' /* extra-lIght */ +weights.l= 'weight = 3/4;' /* Light */ +weights.k= 'weight = 7/8;' /* booK */ +weights.r= 'weight = 1;' /* Regular */ +weights.d= 'weight = 1.5;' /* Demi */ +weights.b= 'weight = 2;' /* Bold */ +weights.x= 'weight = 3;' /* eXtra */ +weights.u= 'weight = 4;' /* Ultra */ + +styles.='' + +styles.9='hratio = 0.3;' +styles.0='hratio = 0.3; slant := 1/8; italicness = 1;' +styles.7='hratio = 0.6;' +styles.8='hratio = 0.6; slant := 1/8; italicness = 1;' +styles.5='hratio = 1;' +styles.6='hratio = 1; slant := 1/8; italicness = 1;' +styles.3='hratio = 1.15;' +styles.4='hratio = 1.15; slant := 1/8; italicness = 1;' +styles.1='hratio = 1.30;' +styles.2='hratio = 1.30; slant := 1/8; italicness = 1;' + +styles.i='italicness = 1; slant := 1/8;' /* italic */ +styles.u='italicness = 1;' /* vertical italic */ +styles.o='slant := 1/8;' /* oblique */ + +/* Berry's system has expansion after variant rather than before: */ +styles.o='hratio = 0.3;' /* narrow (extra condensed) */ +styles.c='hratio = 0.6;' /* compressed */ +styles.x='hratio = 1.15;' /* expanded */ +styles.w='hratio = 1.30;' /* wide (extra expanded) */ + +/* not used here +-J 's=encoding=0' # Standard TeX text (like cmr) +-J 'x=encoding=-200' # Cork (TUGboat 11#4) +-J 'mi=encoding=-1' # maths (like cmmi) +-J 'sy=encoding=-2' # symbol (like cmsy) +-J 'ps=encoding=-1000' # the AdobeStandardEncoding encoding +-J 'so=encoding=-1010' # the ISOLatin1Encoding encoding + +# Malvern encodings: +-J 'a=encoding=1' # Malvern A (simple letters) +-J 'b=encoding=2' # Malvern B (strange symbols) +-J 'c=encoding=3' # Malvern C (composites) +*/ +rf=reverse(fontname) +parse var rf n1 +1 n2 +1 . +if datatype(n2,'N')=1 then + size=n2||n1 +else + size=n1 +parse var fontname basename (size) . +parse var basename base +3 weight +1 style +1 expansion +if style\=' ' then + y=value(style) +else + y='' +if expansion\=' ' then + z=value(expansion) +else + z='' +x=value(weight) +fontfile=value(fontname)||'.mf' +call lineout fontfile,'font_size 'size'pt#; 'weights.x styles.y styles.z 'input maltex;bye.' +call lineout fontfile +say 'generated Malvern file ' fontfile +return fontfile diff --git a/fonts/malvern/contrib/spqr/maltex.mf b/fonts/malvern/contrib/spqr/maltex.mf new file mode 100644 index 0000000000..906a704664 --- /dev/null +++ b/fonts/malvern/contrib/spqr/maltex.mf @@ -0,0 +1,7 @@ +% %M% 1.%I% %E% -- generate the TUGboat Standard Malvern font +% This uses the Cork "TeX Extended Text -- Latin" encoding +% and Karl Berry's naming system -- with fmv as the family name. + +encoding = 0; +input ma +bye diff --git a/fonts/malvern/contrib/spqr/malvern.sty b/fonts/malvern/contrib/spqr/malvern.sty new file mode 100644 index 0000000000..2586443606 --- /dev/null +++ b/fonts/malvern/contrib/spqr/malvern.sty @@ -0,0 +1,129 @@ +%% +%% This is file `malvern.sty' +%% +%% Error Reports in case of UNCHANGED versions to +%% +%%Sebastian Rahtz +%%12 Cygnet Street, York Y02 1AG +%% +%%spqr@uk.ac.york.minster +%% +%% + +\def\fileversion{v1} +\def\filedate{92/08/13} +\@ifundefined{selectfont} + {\@latexerr{`times' style option can only be used + with the new font selection scheme}\@eha + \endinput}{} +% +\immediate\write\sixt@@n{File: `malvern.sty' + \fileversion\space <\filedate> (SPQR)} +\immediate\write\sixt@@n + {********************************************************************} +\immediate\write\sixt@@n + {*by Sebastian Rahtz, to load Damian Cugley's Malvern fonts *} +\immediate\write\sixt@@n + {********************************************************************} +\def\load@malvern{% +\new@fontshape{malvern}{m}{n}{% + <5>fmvr5% + <6>fmvr6% + <7>fmvr7% + <8>fmvr8% + <9>fmvr9% + <10>fmvr10% + <11>fmvr11% + <12>fmvr12% + <14>fmvr14% + <17>fmvr17% + <20>fmvr20% + <25>fmvr25% +}{} +\extra@def{malvern}{}{} +\new@fontshape{malvern}{m}{it}{% + <5>fmvri5% + <6>fmvri6% + <7>fmvri7% + <8>fmvri8% + <9>fmvri9% + <10>fmvri10% + <11>fmvri11% + <12>fmvri12% + <14>fmvri14% + <17>fmvri17% + <20>fmvri20% + <25>fmvri25% + }{} + +%%%%%%%%% bold extended series + +\new@fontshape{malvern}{bx}{n}{% + <5>fmvbx5% + <6>fmvbx6% + <7>fmvbx7% + <8>fmvbx8% + <9>fmvbx9% + <10>fmvbx10% + <11>fmvbx11% + <12>fmvbx12% + <14>fmvbx14% + <17>fmvbx17% + <20>fmvbx20% + <25>fmvbx25% + }{} + +\new@fontshape{malvern}{bx}{it}{% + <5>fmvbix5% + <6>fmvbix6% + <7>fmvbix7% + <8>fmvbix8% + <9>fmvbix9% + <10>fmvbix10% + <11>fmvbix11% + <12>fmvbix12% + <14>fmvbix14% + <17>fmvbix17% + <20>fmvbix20% + <25>fmvbix25% + }{} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\subst@fontshape{malvern}{m}{sl}{malvern}{m}{it} +\subst@fontshape{malvern}{m}{sc}{malvern}{m}{n} +} +\romanfont{malvern} +\sansfont{cmr} +\endinput +%%%%%%%%% bold series + +\new@fontshape{malvern}{b}{n}{% + <5>fmvb5% + <6>fmvb6% + <7>fmvb7% + <8>fmvb8% + <9>fmvb9% + <10>fmvb10% + <11>fmvb11% + <12>fmvb12% + <14>fmvb14% + <17>fmvb17% + <20>fmvb20% + <25>fmvb25% + }{} + +\new@fontshape{malvern}{b}{it}{% + <5>fmvbi5% + <6>fmvbi6% + <7>fmvbi7% + <8>fmvbi8% + <9>fmvbi9% + <10>fmvbi10% + <11>fmvbi11% + <12>fmvbi12% + <14>fmvbi14% + <17>fmvbi17% + <20>fmvbi20% + <25>fmvbi25% + }{} + diff --git a/fonts/malvern/contrib/spqr/test.tex b/fonts/malvern/contrib/spqr/test.tex new file mode 100644 index 0000000000..e4a7263d14 --- /dev/null +++ b/fonts/malvern/contrib/spqr/test.tex @@ -0,0 +1,121 @@ +\documentstyle[malvern]{article} +\begin{document} + +This is \verb|>| > {\em > } {\bf > } {\tt\em >} + +This is \verb|<| < {\em < } {\bf < } {\tt\em <} + +This is \verb|---| --- + +This is \verb|--| -- + +\parskip=4pt + +\parindent 0pt +\begin{quote}\begin{tabular}{|ll|ll|ll|}\hline +\verb|\rm| & \rm Roman & \verb|\it| & \it Italic + & \verb|\sc| & \sc Small Caps \\ +\verb|\em| & \em Emphatic & \verb|\sl| & \sl Slanted + & \verb|\tt| & \tt Typewriter \\ +\verb|\bf| & \bf Boldface & \verb|\sf| & \sf Sans Serif & & +\\ \hline +\end{tabular}\end{quote} + +\begin{quote}\begin{tabular}{|*{5}{ll|}}\hline +\`{o} & \verb|\`{o}| & \~{o} & \verb|\~{o}| & \v{o} & \verb|\v{o}| & +\c{o} & \verb|\c{o}| & \'{o} & \verb|\'{o}| \\ +\a={o} & \verb|\={o}| & \H{o} & \verb|\H{o}| & \d{o} & \verb|\d{o}| & +\^{o} & \verb|\^{o}| & \.{o} & \verb|\.{o}| \\ +\t{oo} & \verb|\t{oo}| & \b{o} & \verb|\b{o}| & \"{o} & \verb|\"{o}| & +\u{o} & \verb|\u{o}| && \\ \hline +\end{tabular}\end{quote} + +\begin{quote}\begin{tabular}{|*{4}{ll|}}\hline +\dag & \verb|\dag| & \S & \verb|\S| & +\copyright & \verb|\copyright| &\i & \verb|\i|\\ +\ddag & \verb|\ddag| & \P & \verb|\P| & +\pounds & \verb|\pounds| & {\j} & \verb|\j|\\ +\oe & \verb|\oe| & \OE & \verb|\OE| & +\ae & \verb|\AE| && \\ +\AE & \verb|\AE| & \aa & \verb|\aa| & +\AA & \verb|\AA| && \\ +\o & \verb|\o| & \O & \verb|\O| & +\l & \verb|\l| && \\ +\L & \verb|\E| & \ss & \verb|\ss| & +?` & \verb|?`| && \\ +!` & \verb|!`| & \ldots & \verb|\ldots| & +\LaTeX & \verb|\LaTeX| && \\ +\hline +\end{tabular}\end{quote} +{This costs `\pounds' 45 to do; {\sf this costs \pounds 45 to do;} +\sc this costs ``\pounds'' 45 to do; \em this costs \pounds 45 to do +\bf this costs \pounds 45 to do. And so } +!`THE DAZED BROWN FOX QUICKLY GAVE 12345--67890 JUMPS! --- +?`But aren't Kafka's Schlo{\ss} and {\AE}sop's {\OE}uvres +often na{\"\i}ve vis-\`{a}-vis the d{\ae}monic ph{\oe}nix's official r\^{o}le +in fluffy souffl\'{e}s? Only if +$\sum_{i=1}^{n} x_{i} = \int_{0}^{1} f $ or (expressed more clearly) + +$$\sum_{i=1}^{n} x_{i} = \int_{0}^{1} f $$ + +{\LARGE +\begin{quote}\begin{tabular}{|*{5}{ll|}}\hline +\`{o} & \verb|\`{o}| & \~{o} & \verb|\~{o}| & \v{o} & \verb|\v{o}| & +\c{o} & \verb|\c{o}| & \'{o} & \verb|\'{o}| \\ +\a={o} & \verb|\={o}| & \H{o} & \verb|\H{o}| & \d{o} & \verb|\d{o}| & +\^{o} & \verb|\^{o}| & \.{o} & \verb|\.{o}| \\ +\t{oo} & \verb|\t{oo}| & \b{o} & \verb|\b{o}| & \"{o} & \verb|\"{o}| & +\u{o} & \verb|\u{o}| && \\ \hline +\end{tabular}\end{quote} +} +\section{The site} +\section{Pre-Iron Age} + +There is no positive stratigraphic or structural evidence for +occupation of the hilltop in the Neolithic or Bronze Age. Nor is there +any pottery earlier than the Iron Age; but this may be due to +conditions of unfavourable survival in the ground. This leaves only +the flints and chert as evidence of earlier prehistoric occupation. +There are over a thousand fragments or tools from the excavated area. +If this density is characteristic of the whole hilltop area, then the +total assemblage might be in the region of 20,000 items. + + +The flint includes both patinated and unpatinated material. Most of +this is likely to have come from the chalk, many kilometres away, as +natural or partly-prepared nodules; the possibility also exists that +some finished implements were imported. +There is evidence of at +least some knapping on the site. + + +The chert, originally from the equally distant Upper +Greensand or from Portland, were possibly regarded as exotic and desirable. +In general, the patinated material is of the Earlier Neolithic period, +and includes leaf-shaped arrowheads. The unpatinated flint is, however, +mostly of the Later Neolithic / Early Bronze Age, including barbed and +tanged arrowheads and a variety of tools. Everton discusses the +techniques of manufacture and use in her detailed report. +One nearly complete and two fragmentary flint polished axes are of a +similar raw material, with grey chert inclusions; Everton suggests +these may have come from the same factory. + +Little can be said about the nature of occupation, whether seasonal or +temporary; or whether there was permanent settlement at times, with +areas of specialised activity. The arrowheads may be evidence of local +hunting. + +The concentration of flints towards the summit of the hill +where there was shallow stratification, may indicate the former +existence of Neolithic or Bronze Age structures or monuments. + +It is possible that some flints were reused in later periods, as what +Everton calls `tools-of-the-moment'. However, there is no reason to +believe that flint formed any component of the Iron Age use of the +hill, and nothing to connect it positively with the late- or +post-Roman occupation; the only exception may be the strike-a-lights, +and the possibility that prehistoric flint objects might have acquired +a talismanic or simply curiosity value in later times. + + +\end{document} diff --git a/fonts/malvern/doc/cmdoc.tex b/fonts/malvern/doc/cmdoc.tex new file mode 100644 index 0000000000..b9e1fdc6cf --- /dev/null +++ b/fonts/malvern/doc/cmdoc.tex @@ -0,0 +1,311 @@ +% cmdoc.tex 1.1.9 1994/07/20 -- sets up for general docs +% Copyright 1991-4 P. Damian Cugley. + +%%% @TeX-macro-file { +%%% filename = "cmdoc.tex", +%%% version = "1.1.9", +%%% date = "1994/07/20", +%%% package = "Malvern 1.1", +%%% author = "P. Damian Cugley", +%%% email = "damian.cugley@comlab.ox.ac.uk", +%%% address = "Oxford University Computing Laboratory, +%%% Parks Road, Oxford OX1 3QD, UK", +%%% codetable = "USASCII", +%%% keywords = "TeX, plain TeX, style file", +%%% supported = "Maybe", +%%% abstract = "Top-level macro file for documents in +%%% Computer Modern fonts.", +%%% dependencies = "other program files", +%%% } + +%{{{ cmdoc.tex +\begingroup\catcode`\%=12 \toks0={\endgroup + \def\docversion{1.1.9 <pdc 1994/07/20>} +}\the\toks0 +\message{\docversion} + +\input pdcimth +\input pdcmigr +\input pdcpars +\input pdcfmt +\input pdchyex +\input pdcoput +\input pdcfsel + +% Comment out following 1 line for TeX 2.x: +\errorcontextlines=100 + +% Ensure top/bot margins large enough to fit headlines on +% even if printed on American paper: +\topmarge=297mm \advance\topmarge-11in \advance\topmarge7mm +\botmarge=\topmarge +\advance\topmarge\ht\strutbox \advance\topmarge\headlineskip +\ifdim \topmarge<20mm \topmarge=20mm \fi +\ifdim \botmarge<27mm \botmarge=27mm \fi + +\setpaper{210mm}{297mm} + +\hyphenpenalty=200 +\exhyphenpenalty=100 + +%{{{ layout + +\setnkgrid{4}{3} +\leftmargin=\gridwd \advance\leftmargin\colsep +\everypage={\ifdim\leftmargin>0pt \setbox\leftbox=\hbox to \gridwd{}\fi} +\colrule=0pt + +\everyfootnote={\notefonts} +\everylinenum={\smallfonts} +\everytag={\bf} + +%}}} +%{{{ fonts + +\autoloadfonts + +\def\HEADINGtemplate +{% + \f{rm}{cmss}\f{mi}{eurb}\f{sy}{eusb}% + \f{it}{cmssi}\f{tt}{cmtt}\f{mf}{logo}\f{mfi}{logosl}% +} + +\font\headingrm=cmss17 \font\headingit=cmssi17 +\fontset{subheading}\HEADINGtemplate{10 scaled 1200}{14pt} + {subheading}{subheading} +\fontset{heading}\HEADINGtemplate{10 scaled 1728}{20pt} + {subheading}{subheading} + +\def\BODYtemplate +{% + \m{rm}{cmr}\m{it}{cmti}% + \m{bf}{cmbx}\@\f{bi}{cmbxti10}% + \m{mi}{cmmi}\m{sy}{cmsy}% + \@\f{mf}{logo10}\@\f{mfi}{logosl10}% + \f{tt}{cmtt}\@\f{tb}{cmsltt10}% +} + +\font\bodysy=cmsy10 at 12pt + +\fontset{tiny}\BODYtemplate{7}{9pt}{tiny}{tiny} +\fontset{small}\BODYtemplate{9}{11pt}{tiny}{tiny} +\fontset{note}\BODYtemplate{10}{12pt}{tiny}{tiny} +\fontset{body}\BODYtemplate{12}{14pt}{small}{tiny} + +\def\everyloadfont#1#2{\fontdimen3#1=0pt \fontdimen4#1=0pt} +\rightskip=0pt plus 2em +\bodyfonts +\tolerance=1000 + +\let\sc=\relax +\let\csc=\relax +\let\mc=\relax +\let\n=\relax + +%}}} +%{{{ malvern maths + +\mathcode`,="602C + +%}}} +%{{{ TOC + +\newwrite\TOCfile +\openout\TOCfile=\jobname.toc + +% #1 is \TOCentryfoo control sequence +% #2 is stuff to be evaluated NOW -- e.g., section number +% #3 is stuff to be evaluated WHEN PRINTED -- e.g., section title +% folio is written after this in file +\def\TOCwrite#1#2#3% +{% + \def\tmp{#3}% + \edef\tmp{\string#1{#2}{\expandafter\TOCtrim\meaning\tmp}} + \write\TOCfile\expandafter{\tmp{\folio}} +} +\def\TOCtrim#1:->{} % strip off "macro:->" + +\def\TOCentrypart#1#2#3% +{ + \smallskip + \dimen0=\hsize \advance\dimen0\leftmargin + \moveleft\leftmargin\hbox to\dimen0{\strut\bf #1. #2\hfil} + \smallskip +} + +\def\TOCentrysection#1#2#3% +{ + \smallskip\noindent\llap{#1\quad}% + {\bf \ignorespaces #2\quad\rm \n{#3}}\par +} + +\def\TOCentrysubsec#1#2#3% +{ + \noindent{#1\enspace}{\ignorespaces #2\quad\rm \n{#3}}\par +} + +\def\TOCentrysubsubsec#1#2#3% +{ + \indent\indent\llap{#1\enspace}{\ignorespaces #2\quad\rm \n{#3}}\par +} + +%}}} +%{{{ sectioning + +% sections run continuously +% divisions start new page but do not reset section counters + +\newcount\partno +\def\thepartno +{% + \ifcase\partno O\or I\or II\or III\or IV\or V\else + \expandafter\uppercase\expandafter{\romannumeral\partno}% + \fi +} +\def\part#1% +{% + \global\advance\partno1 + \newpageheading{2\baselineskip}{\headingfonts}{}{\thepartno.\quad#1} + \TOCwrite\TOCentrypart{\thepartno}{#1} +} + +\newcount\secno \newcount\subsecno \newcount\subsubsecno + +\def\thesecno +{% + \n{% + \number\secno + \ifnum\subsecno>0 + .\number\subsecno + \ifnum\subsubsecno>0 + .\number\subsubsecno + \fi + \fi + }% +} + +\def\sectionheading#1 \par{\dosectionheading{#1}} +\def\dosectionheading#1% +{ + \par + \removelastskip + \vskip 0pt plus 0.3\vsize + \penalty-200 + \vskip 1\bigskipamount plus -0.3\vsize + \begingroup \advance\leftskip-\leftmargin + \parskip=0pt \parindent=0pt + \hyphenpenalty=10000 \exhyphenpenalty=500 + \interlinepenalty=100 + \headingfonts + \hbox{\hskip-\leftmargin + \vrule height 2pt depth 0pt width \leftmargin + \vrule height 2pt depth 0pt width \hsize} + \nobreak\medskip + \enspace#1\par + \nobreak\smallskip + \endgroup +} + +\def\section#1 \par +{ + \counta=\secno \advance\counta1 + \mark{\thesecno \noexpand\else \n{\number\counta}}% OLD \else NEW + \global\secno=\counta \global\subsecno=0 \global\subsubsecno=0 + \dosectionheading{\thesecno\quad #1} + \mark{\thesecno \noexpand\else \thesecno}% NEW \else NEW + \TOCwrite\TOCentrysection{\thesecno}{#1} +} + +\def\subsec#1 \par +{% + \counta=\subsecno \advance\counta1 + \mark{\thesecno \noexpand\else \n{\number\secno.\number\counta}} + \global\subsecno=\counta \global\subsubsecno=0 + \doheading\medskipamount{\subheadingfonts}{}{\thesecno\quad#1} + \mark{\thesecno \noexpand\else \thesecno} + \TOCwrite\TOCentrysubsec{\thesecno}{#1} +} + +\def\subsubsec#1 \par +{% + \global\advance\subsubsecno+1 + \doheading\smallskipamount{}{}{\ifdim\leftmargin=0pt\thesecno\quad\fi#1} + \TOCwrite\TOCentrysubsubsec{\thesecno}{#1} +} + +\newif\ifnoheader +\newif\iftwosided + +\footline={% + \ifnoheader + \global\noheaderfalse + \hfil\bodyfonts\n\folio\hfil + \else + \hfil + \fi +} + +\headline={% + \ifnoheader + \hfil + \else + \bodyfonts \hskip-\leftmargin + \iftwosided + \ifodd\pageno + \iftrue\botmark\fi + \hfil + {\bf\n\folio}% + \else + {\bf\n\folio}\quad + \hfil + \expandafter\iffalse\topmark\fi + \fi + \else + \expandafter\iffalse\topmark\fi + \hfil + {\bf\n\folio}% + \fi + \fi +} + +%}}} +%{{{ abbrevs + +\def\pt{\,{\rm pt}} +\def\mm{\,{\rm mm}} + +\def\MF{{\ifdim\fontdimen1\font>0pt \mfi \else \mf \fi META}\-% + {\ifdim\fontdimen1\font>0pt \mfi \else \mf \fi FONT}} +\def\MSDOS{\leavevmode\hbox{MS-DOS}} +\def\PS{PostScript} + +{\plain| +\gdef\dfn#1{\index{#1|idxunderline}{\bi #1}} +} + +\def\<#1>{\leavevmode\hbox{\langle{\it#1\/}\rangle}} + +\active\* \def*#1*{{\it#1\/}} +\append\verbatimplains\* + +% _xxx_ is xxx as typed by user to a program. +\active\_ +\def_% _xxx_ is bold verbatim text +{% + \ifmmode + \sb + \else + \begingroup % matched by closing _ + \tb\setupverbatim + \plain\|\active\_% + \let_\endgroup + \fi +} + +%}}} +%}}} cmdoc.tex + +%Local variables: +%fold-folded-p: t +%tex-macros-p: t +%End: diff --git a/fonts/malvern/doc/install.tex b/fonts/malvern/doc/install.tex new file mode 100644 index 0000000000..4d18a81fdc --- /dev/null +++ b/fonts/malvern/doc/install.tex @@ -0,0 +1,541 @@ +% install.tex -- how to install Malvern fonts +% Copyright 1994 P. Damian Cugley + +%%% @TeX-document { +%%% filename = "install.tex", +%%% version = "X", +%%% date = "pdc 1994.09.26", +%%% package = "Malvern 1.2", +%%% author = "P. Damian Cugley", +%%% email = "damian.cugley@comlab.ox.ac.uk", +%%% address = "Oxford University Computing Laboratory, +%%% Parks Road, Oxford OX1 3QD, UK", +%%% codetable = "USASCII", +%%% keywords = "Malvern, METAFONT, font, typefont, TeX", +%%% supported = "Maybe", +%%% abstract = "Installation summary for the Malvern +%%% font family.", +%%% dependencies = "none", +%%% } + +% See the Malvern Handbook (maman.tex) for more info about Malvern. +% This software is available freely but without warranty. +% See the file COPYING for details. + +% This document is written in plain TeX and has NO dependencies +% other than the fonts (of course) which are all standard CM fonts. +% The hope is that this way anyone will be able to TeX this file +% without it all going horribly wrong... + +% To change the paper size, change the assignments to \hsize +% and \vsize below (after the definition of \margin). + +\newdimen\margin \margin=25mm % size of margins + +% Change the following two lines to select a different paper size: +\hsize=210mm \advance\hsize-2\margin +\vsize=297mm \advance\vsize-2\margin + +% change the following 1 line if you do have the LOGO10 font: +\newif\iflogo \logofalse + +\def\package{Malvern~1.2} +\def\ttpackage{Malvern-1.2} + +% Adjust \vsize to be a multiple of baselineskip + topskip: + +\baselineskip=14pt +\newcount\counta +\counta=\vsize \advance\counta-\topskip +\divide\counta\baselineskip +\vsize=\counta\baselineskip \advance\vsize\topskip + +\hoffset=\margin \advance\hoffset-1in +\voffset=\margin \advance\voffset-1in + +% +% FONTS +% + +\def\fnt#1#2{\font#1=#2 \fontdimen3#1=0pt \fontdimen4#1=0pt } + +\fnt\twelverm{cmr12} \def\rm{\twelverm\fam0 } +\fnt\twelvei{cmmi12} +\fnt\twelvesy{cmsy10 at 12pt} +\fnt\twelvebf{cmb10 at 12pt} \def\bf{\twelvebf\fam\bffam} +\fnt\twelveit{cmti12} \def\it{\twelveit\fam\itfam} +\fnt\twelvett{cmtt12} \def\tt{\twelvett\fam\ttfam} +\iflogo + \fnt\twelvemf{logo10 scaled 1200} \def\mf{\twelvemf} +\fi +\fnt\twelvermc{cmcsc10 scaled 1200} \def\sc#1{{\twelvermc \lowercase{#1}}} + +% Add just enough maths stuff: +\textfont0=\twelverm \scriptfont0=\tenrm \scriptscriptfont0=\sevenrm +\textfont1=\twelvei \scriptfont1=\teni \scriptscriptfont1=\seveni +\textfont2=\twelvesy \scriptfont2=\tensy \scriptscriptfont2=\sevensy +\textfont\itfam=\twelveit \scriptfont\itfam=\tenit +\textfont\ttfam=\twelvett \scriptfont\ttfam=\tentt + +\fnt\titlerm{cmss17} +\fnt\headingrm{cmss12 scaled 1200} +\fnt\headingit{cmssi12 scaled 1200} +\fnt\subheadingrm{cmss12} +\fnt\subheadingit{cmssi12} + +\rm +\rightskip=0pt plus 2em +\tolerance=1000 +\emergencystretch=3em + +% +% MACROS +% + +\def\.{\mathhexbox201} + +\def\<#1>{$\langle\hbox{\it #1\/}\rangle$} + +\def\allcapabbrev#1{{\the\scriptfont\fam #1}} + +\iflogo + \def\MF{{\mf META}\-{\mf FONT}} +\else + \def\MF{\allcapabbrev{META}\-\allcapabbrev{FONT}} +\fi +\def\fontinst{{\tt font}\-{\tt inst}} + +% No blank lines after section and subsection commands! +\newcount\seccount \seccount=0 +\def\section#1% +{ + \medbreak + \advance\seccount1 \subseccount=0 + \begingroup \headingrm \let\it=\headingit + \rightskip=0pt plus 2em + \parskip=0pt \parindent=0pt + \the\seccount\enspace #1 + \nobreak\smallskip + \endgroup + \noindent\ignorespaces +} + +\newcount\subseccount +\def\subsection#1% +{ + \smallbreak + \advance\subseccount1 + \begingroup \subheadingrm \let\it=\subheadingit + \rightskip=0pt plus 2em + \parskip=0pt \parindent=0pt + \the\seccount\sfcdot\the\subseccount\enspace #1\quad + \endgroup + \ignorespaces +} + +\def\sfcdot{\leavevmode\raise0.5ex\hbox{.}} + +\def\begintable +{% + $$\vbox\bgroup\halign\bgroup + ##\hfil&&\quad##\hfil\cr + \noalign{\hrule height 1pt \kern2\jot}% +} +\def\endtable +{% + \crcr + \noalign{\kern1.5\jot \hrule height 1pt}% + \egroup\egroup$$ + \ignorespaces +} + + +\def\flushtop#1% +{{% + \setbox0=\hbox{#1}\setbox1=\hbox{X}% + \dimen0=\ht1 \advance\dimen0-\ht0 + \raise\dimen0\box0 +}} + +\def\pt{\,{\rm pt}} \mathcode`.="0201 +\def\La{L\kern-0.15em\flushtop{a}} +\def\LaTeX{\La\kern-0.05em \TeX} + +% +% DOCUMENT PROPER STARTS HERE +% + +\leftline{\titlerm Installing Malvern fonts} +\bigskip + +% Print my address: + +\rightline{\vbox{\halign{\strut#\hfil\cr + P. Damian Cugley\cr +\noalign{\smallskip}% + Oxford University Computing Laboratory\cr + Parks Road\cr + Oxford \sc{OX$\mit1\ 3$QD}\cr + UK\cr +\noalign{\smallskip}% + \tt Damian.Cugley@comlab.ox.ac.uk\cr +}}} +\bigskip + + (Where this document and the corresponding chapter in the {\it + Handbook} differ, this version is probably the more up-to-date.) + +\section{About Malvern} + Malvern is a font family designed and implemented in \MF. It is + a sanserif font intended mainly for non-technical documents. It + does not blend particularly well with the Computer Modern fonts. + +\subsection{Generic driver file} + Malvern is unusual amongst \MF\ families in that it is supplied + with one {\it generic driver file} which could in theory be used + instead of having one driver file for each size and style the + family comes in.\footnote*{The package includes a selection of + driver files nevertheless.} The generic driver file ({\tt + ma.mf}) inspects the values of variables like {\it designsize} + and {\it weight} and gives the ad-hoc parameters appropriate + values, before reading the program files. On some UNIX systems + a small program called {\tt mff} can be used to generate fonts + using this system. Otherwise other measures will have to be + taken, described below. + +\subsection{Malvern encodings} + Malvern uses a nonstandard encoding -- in fact a family of + encodings, for example, Malvern~A (latin alphabets) and + Malvern~G (Greek). To create fonts for use with \LaTeX~2e and + the NFSS~2 font selection macros, use Alan Jeffrey's {\tt + fontinst} package. This generates the {\tt fd} files and + virtual fonts so that Malvern fonts may be used in the same way + as other \LaTeX~2e families. (The glyphs needed to make fonts + with the Cork (T1) encoding are in Malvern~A and Malvern~B.) + This has already been done to make a selection of styles + available with both \TeX\ Text and T1 encodings. + +\subsection{Malvern font names} + The Malvern fonts generated with \MF\ will have \TeX\ names of + the following form: +$$ + \hbox{\tt ma \it style enc size} +$$ + where the {\it style} is a two-digit style code (described + below), {\it enc} is one- or two-letter code identifying a + Malvern encoding (such as `{\tt a}' or `{\tt az}'), and {\it + size} is the size in points (e.g., `{\tt 12}' for $12\pt$, `{\tt + 17p28}' for $17.28\pt$). Thus {\tt ma55a12} (12-pt Malvern 55, + encoding~A), {\tt ma56g12} (12-pt Malvern~56, Greek encoding). + + The two-letter style codes are based on Adrien Frutiger's + system, devised for the Univers family. The first digit + specifies the weight, from 1 (ultra-light) to 9 (ultra-bold), + with 5 meaning medium and 7 bold. The second digit gives the + width: 5 or 6 is normal width, 7 or 8 is compressed, 3 or 4 is + expanded. An odd number means an upright font, an even number + italic. Thus Malvern~55 is roman, Malvern~56 is italic, + Malvern~75 boldface, Malvern~68 is demibold compressed italic. + +\edef\refstylecodes{\S\thinspace\the\seccount\.\the\subseccount} + + The \MF\ programs are also able to generate fonts named in Karl + Berry's system,\footnote\dag{Karl Berry, {\it File Names for \TeX\ + Fonts}, version 1\.6 ({\tt + file:\allowbreak//ftp.cs.umb.edu\slash pub\slash tex\slash fontname}).} + starting with `{\tt fmv}'. The correspondance between Malvern's + style digits and weight, variant and expansion letters is given + in the tables below. The encoding used for these fonts is \TeX\ + text, so for example {\tt fmvr12} and {\tt ma55s12} are names + for the same font. This is so that these fonts may be used in + plain-\TeX\ and \LaTeX-2\.09 documents without too much + confusion. NFSS~2 systems (indeed, any that use non-\TeX-text + encodings) will use virtual fonts. + + As of October 1994, however, the font names standard does not + allow for combinations of more than two variants (where + `variants' includes encodings and slant) without breaking the + eight-character limit required by stupid filesystems like MS-DOS + and ISO~9960. As an extreme example, Malvern~58 with the + caps-and-small-caps, old-style-numerals variation of the \TeX\ + Text encoding is {\tt fmvr9ci7tc12} (12 chars). The only + temporary solution I can offer is to extend the naming scheme + used for the `{\tt ma}-' fonts to include encoding codes for the + virtual fonts needed for plain \LaTeX, NFSS and NFSS~2 (e.g., + {\tt ma58ab12}). Therefore, the ability to create {\tt fmv}- + fonts is not being used at present. + +\section{Unpacking Malvern} + The Malvern distribution includes \MF\ source files, some \TeX\ + files such as this documentation, and a few other miscellaneous + files. + + All files have names that should work with MS-DOS and ISO-9960 + filesystems. + +\subsection{Source files ({\tt/source})} + On most \TeX\ systems, \MF\ fonts end up with their source files + stored in one directory. I~suggest that Malvern instead be + given its own file area. This avoids problems with different + font families having files with the same name, and makes it easy + to replace all the Malvern files in one go if you upgrade to a + newer version of Malvern. + + With a new-style directory tree,\footnote*{At the time of + writing, the \TeX\ Directory Standard (TeDiouS) is still in + discussion.\break This is my best guess based on a \TeX\ system I + recently installed.} the {\tt\ttpackage} directory may be + placed in the `{\tt texmf/fonts/public}' directory, and the {\tt + source} directory and {\tt driver} directories merged and + renamed so that \MF\ can find them. + + The files {\tt mff.rc} and {\tt fmv.mff} are input files for + {\tt mff} and may be ignored if you are not using {\tt mff} to + generate fonts. If the Malvern files are being mixed in with a + bunch of others, rename {\tt mff.rc} to {\tt ma.mff}. + +\subsection{Driver files ({\tt/drivers})} + Fonts can be generated by including assignments on the \MF\ + command line, but driver files are more convenient (unless you + have {\tt mff}). These are also used when assignments to the + generic driver file's parameters on the \MF\ command line is + impossible, such as when using the standard {\tt MakeTeXPK} + script. A driver file is included for each {\tt tfm} supplied. + +\subsection{\TeX\ input files ({\tt/tex})} + These files belong in a system-wide \TeX\ inputs area. The + files ending -{\tt.fd} are font family description files, used + by NFSS~2. + + On new-style directory trees, the best approach is probably to + link or rename the {\tt texmf/fonts/public/\ttpackage/tex} + directory to {\tt texmf/tex/\ttpackage}. + +\subsection{Documentation files ({\tt/doc}, {\tt/dvi})} + Files ending in `{\tt.tex}' are plain \TeX\ documents, and will + not work with \LaTeX. Compiled ({\tt dvi}) files are supplied + to save the installer having to run \TeX. Read this document, + {\tt install.tex}, first. The Greek text encoding is described + in {\tt magrman.tex}. + + + Please do not install any of the macro files used to typeset the + documentation in the system-wide \TeX\ inputs area. They are + not supported, not necessarily generally useful, and very + nonstandard. Earlier releases of Malvern gave the macro files + generic enough names that they might clash with other macro + files. They have been renamed to start with `{\tt pdc}' in the + hope that this will avoid clashes if they are accidentally + installed. + +\subsection{Virtual font files ({\tt/vf})} + These virtual fonts are generated using Alan Jeffrey's + \fontinst\ package, and are Malvern fonts with the Cork encoding + (and some of the trickier \TeX\ Text variations). With NFSS~2 + they are used by specifying encoding `{\tt T1}' and family `{\tt + fmv}'.s + + The virtual fonts may have the following encoding codes: +\begintable + \it Encoding&\it Code&\it Description\cr +\noalign{\kern\jot\hrule\kern1.5\jot} + OT1c& \tt aa& + \TeX\ text with caps\&small caps\cr + OT1c9& \tt ab& + ditto, with old-style numerals\cr + T1& \tt ar& + Cork\cr + T19& \tt as& + Cork, with old style numerals\cr + T1c& \tt at& + Cork, with caps\&small caps\cr + T1c9& \tt au& + Cork, with c\&sc and o.s. numerals\cr +\endtable + For example, {\tt ma55ar12} has encoding T1. Note that + replacing lower-case letters with small-capitals counts as a + different encoding scheme rather than a `font shape'. + +\subsection{Font metric files ({\tt/tfm})} + A selection of precompiled font metric files, including those + for virtual fonts in {\tt /vf} and the actual fonts needed to + use them, as well as fonts needed to print the documentation in + {\tt/dvi}. + +\section{Using mff to generate Malvern fonts} + First, install {\tt mff} and arrange that \MF\ fill be able to + find the {\tt mf} files. Then to create a Malvern font, for + example 12-pt Malvern~55 ({\tt ma55a12}), give the command: +$$ + \hbox{\tt mff ma55a12} +$$ + To generate Malvern~55 and 56 at magsteps 0, half and 1, for 300-dpi + and 1000-dpi printers, you would type: +$$ + \hbox{\tt mff --magstep=0,h,1 + --dpi=300,1000 ma55a10 ma56a10} +$$ + If all goes well, the {\tt tfm} and {\tt pk} files generated + will be installed in the correct directories automatically. + +\section{Generating Malvern fonts without mff} + This section presumes you know how to install a normal \MF\ + font. + + Create a driver file for each style of Malvern you want to be + able to use. It should have the following form: +\begintable +\tt \% \<name of file> -- generate \<size>-pt Malvern \<style> \cr +\noalign{\smallskip} +\tt font\char95 size \<size> pt\#; \cr +\tt encoding = \<number>; \cr +\tt weight = \<number>; hratio = \<number>; \cr +\tt slant = \<number>; italicness = \<number>; \cr +\tt input ma \cr +\tt bye \cr +\endtable + where \<size> is the design size desired in points, and the + values for the various variables are given below. The \<style> + is the two-digit style code described in \refstylecodes. +% You +% might want to append an verbose description of the style: +%$$\hbox{\tt \% ma76a12.mf -- generate 12-pt Malvern 76 bold italic}$$ + To + generate '{\tt fmv}-' fonts, the second-last line is changed to + `{\tt input fmv}'. + + These driver files should be named after the font they + correspond to -- for example, `{\tt ma76a12.mf}' to generate + Malvern~76. Then they are used as usual with \MF: +$$ + \hbox{\tt mf \char92 mode=luxo; mag={\it m}; input ma55a12} +$$ + where {\it m} is the magnification wanted, or `{\tt 1.0}' for no + magnification. + +\subsection{Values for {\it encoding}} + The variable {\it encoding} specifies the encoding to use -- in + other words, the subset of Malvern's glyphs to be generated. + It should be given one of the following values: +\begintable + \it Encoding&\it Code&\it Description\cr +\noalign{\kern\jot\hrule\kern1.5\jot} + ${\it encoding} = 1$& \tt a& + Malvern A (latin alphabets {\it a--z}, numerals, etc.)\cr + ${\it encoding} = 2$& \tt b& + Malvern B (superscripts, symbols etc.)\cr + ${\it encoding} = 3$& \tt c& + Malvern C (Cyrillic)\cr + ${\it encoding} = 5$& \tt e& + Malvern E (composite letters {\it \`a--\v z})\cr + ${\it encoding} = 7$& \tt g& + Malvern G (Greek letters $\alpha$--$\omega$, + $\it\acute\alpha$--$\it\tilde\omega$)\cr + ${\it encoding} = 19$& \tt s& \TeX\ text (the same as CM Roman)\cr + ${\it encoding} = 26$& \tt az& \TeX\ text, old-style numerals\cr +\endtable + The code is the used in the font name -- for example, {\tt + ma55s10} for Malvern with the \TeX\ text encoding (${\it + encoding} = 19$), and so on. + + The Malvern programs used to attempt to generate other encoding + schemes; with {\tt fontinst} this all becomes redundant and + those codes are obsolete. + +\subsection{Values for {\it weight}} + The variable {\it weight} specifies the weight (boldness) of the + font. It has the following values: +\begintable + \it Weight&\it Style&\it NFSS~2& \it Berry&\it Description\cr + &\it digit&\it code&\it code\cr +\noalign{\kern\jot\hrule\kern1.5\jot} + ${\it weight} = 1/4$& \tt 1& \tt ul& \tt t& ultra-light\cr + ${\it weight} = 1/2$& \tt 2& \tt el& \tt i& extra-light\cr + ${\it weight} = 3/4$& \tt 3& \tt\ l& \tt l& light\cr + ${\it weight} = 7/8$& \tt 4& \tt sl& \tt b& semi-light\cr + ${\it weight} = 1$& \tt 5& \tt\ m& \tt m& medium\cr + ${\it weight} = 1\.3$& \tt 6& \tt sb& \tt d& semi-bold\cr + ${\it weight} = 1\.6$& \tt 7& \tt\ b& \tt b& bold \cr + ${\it weight} = 2$& \tt 8& \tt eb& \tt x& extra-bold\cr + ${\it weight} = 3$& \tt 9& \tt ub& \tt u& ultra-bold\cr +\endtable + The `style digit' is the first digit in the two-digit style + codes described in \refstylecodes. The `NFSS~2\ code' is the + first half of a corresponding NFSS~2\ `font series' code. The + `Berry code' is the code for this weight in Karl Berry's font + naming scheme. + + Note that some of the character programs produce ugly results + for large values of {\it weight}. + +\subsection{Values for {\it hratio}} + The variable {\it hratio} specifies the ratio between horizontal + and vertical measurements: in other words, whether the font is + compressed or expanded. It may have the following values: +\begintable + \it Hratio&\it Style&\it NFSS~2& \it Berry&\it Description\cr + &\it digit&\it code&\it code\cr +\noalign{\kern\jot\hrule\kern1.5\jot} + ${\it hratio} = 0\.50$& {\tt 9} or {\tt 0}& + \tt ec&\tt o& extra compressed\cr + ${\it hratio} = 0\.80$& {\tt 7} or {\tt 8}& + \tt\ c&\tt c& compressed\cr + ${\it hratio} = 1\.00$& {\tt 5} or {\tt 6}& + \tt\ m&\tt r& normal width\cr + ${\it hratio} = 1\.15$& {\tt 3} or {\tt 4}& + \tt\ x&\tt x& expanded\cr + ${\it hratio} = 1\.30$& {\tt 1} or {\tt 2}& + \tt ex&\tt w& extra expanded\cr +\endtable + The 'style digit' is the second half of the two-digit style + codes described in \refstylecodes. The `NFSS~2\ code' is the + second half of an NFSS~2\ `font series' code (for example, + bold expanded is ${\tt b} + {\tt x} = {\tt bx}$, compressed is + ${\tt m} + {\tt c} = {\tt c}$). The `Berry code' is for Karl + Berry's scheme. + + Beware that the character programs do not all produce good + results when {\it hratio} is not 1. + +\subsection{Values for {\it slant} and {\it italicness}} + These two variables between them specify whether a font is to be + produced with italic letterforms or not: +\begintable + \it Slant&\it Italic? &\it Style&\it NFSS~2&\it Berry&\it Description\cr + &&\it digit&\it code&\it code\cr +\noalign{\kern\jot\hrule\kern1.5\jot} + ${\it slant} = 0$& ${\it italicness} = 0$& odd& + \tt n& \tt r& upright\cr + ${\it slant} = 1/8$& ${\it italicness} = 1$& even& + {\tt ti} or {\tt i}& \tt i& italic\cr + ${\it slant} = 0$& ${\it italicness} = 1$& --& + \tt ui& \tt u& `upright italic'\cr + ${\it slant} = 1/8$& ${\it italicness} = 0$& --& + {\tt sl} & \tt o& oblique\cr +\endtable + The `NFSS~2\ code' is the `font shape' code. For italic this + might be `{\tt ti}' or `{\tt i}' depending on whom you ask. The + `Berry codes' are variant letters for Karl Berry's font naming + scheme. + + The variable {\it slant} is common to many \MF\ programs, and + causes the glyphs to be obliqued. The {\it italicness} variable + signals that italic letterforms should be used for some letters. + It is possible to generate an obliqued font or an `upright + italic' with appropriate settings, but these cannot have `{\tt + ma}-' names because I~have not defined style codes for them. + +\section{Note on the {\it Handbook}} + The {\it Malvern Handbook}, {\tt doc/maman.tex} produces + cross-references automatically via an {\tt aux} file, and will + need to be run through \TeX\ twice to get the cross-references + right. The front matter (preface and table of contents) are + printed {\it last}, and should be transferred to the front of + the handbook before binding. + +\rightline{pdc 1994.10.07} +\bye + +%Local Variables: +%fill-prefix: " " +%End: diff --git a/fonts/malvern/doc/ma55doc.tex b/fonts/malvern/doc/ma55doc.tex new file mode 100644 index 0000000000..c67d85aa26 --- /dev/null +++ b/fonts/malvern/doc/ma55doc.tex @@ -0,0 +1,310 @@ +%{{{ ma55doc.tex 1.1.10 1994/06/23 -- style file for documents in Malvern 55 +% Copyright (c) 1991-1994 Damian Cugley. +\begingroup\catcode`\%=12 \toks0={\endgroup + \gdef\docversion{1.1.10} \gdef\lastedit{pdc 1994/06/23} +}\the\toks0 +\message{\docversion\space \lastedit} + +\input pdchyex +\input pdcimth +\input pdcmigr +\input pdcpars +\input pdcfmt +\input pdcoput +\input pdcfsel +\input maamac + +%{{{ Ensure top/bot margins large enough to fit headlines on +% even if printed on American paper: +\topmarge=297mm \advance\topmarge-11in \advance\topmarge7mm +\botmarge=\topmarge +\advance\topmarge\ht\strutbox \advance\topmarge\headlineskip +\ifdim \topmarge<20mm \topmarge=20mm \fi +\ifdim \botmarge<27mm \botmarge=27mm \fi + +\setpaper{210mm}{297mm} + +\hyphenpenalty=200 +\exhyphenpenalty=100 +%}}} +%{{{ layout + +\setnkgrid{4}{3} +\leftmargin=\gridwd +\everypage={\setbox\leftbox=\hbox to \leftmargin{}} +\colrule=0pt + +\everyfootnote={\notefonts} +\def\footnotetextmark#1{$^{#1}$} +\def\footnotenotemark#1{{\bf\n{#1}}} +\everylinenum={\smallfonts} +\everytag={\bf} + +%}}} +%{{{ fonts + +\autoloadfonts + +\def\HEADINGtemplate +{% + \f{rm}{ma75a}\f{mi}{eurb}\f{sy}{eusb}% + \f{it}{ma76a}\f{tt}{cmtt}\f{mf}{mf75s}\f{mfi}{mf76s}% +} +\ldfont\headingmi{eurb10 scaled \magstep4} +\ldfont\headingsy{eusb10 scaled \magstep4} +\ldfont\headingtt{cmtt10 scaled \magstep4} +\ldfont\subheadingmi{eurb10 scaled \magstep2} +\ldfont\subheadingsy{eusb10 scaled \magstep2} +\ldfont\subheadingtt{cmtt10 scaled \magstep2} + +\fontset{subheading}\HEADINGtemplate{12}{14pt}{subheading}{subheading} +\fontset{heading}\HEADINGtemplate{18}{20pt}{subheading}{subheading} + +\def\BODYtemplate +{% + \m{rm}{ma55a}\m{it}{ma56a}% + \m{bf}{ma75a}\f{bi}{ma76a}% + \m{mi}{cmmi}\m{sy}{cmsy}% + \@\f{mf}{logo10}\@\f{mfi}{logosl10}% + \f{tt}{cmtt}\f{tb}{cmttsl}% +} + +\ldfont\bodytt{cmtt10 scaled \magstep2} +\ldfont\notett{cmtt10 scaled \magstep1} +\ldfont\smalltt{cmtt10 scaled \magstephalf} +\ldfont\bodytb{cmttsl10 scaled \magstep2} +\ldfont\smalltb{cmttsl10 scaled \magstep1} +\ldfont\notetb{cmttsl10 scaled \magstephalf} +\font\bodymi=cmmi10 scaled \magstep2 +\font\bodysy=cmsy10 scaled \magstep2 +\font\notemi=cmmi10 scaled \magstep1 +\font\notesy=cmsy10 scaled \magstep1 +\font\smallmi=cmmi10 scaled \magstephalf +\font\smallsy=cmsy10 scaled \magstephalf + +\fontset{tiny}\BODYtemplate{7}{9pt}{tiny}{tiny} +\fontset{small}\BODYtemplate{9}{11pt}{tiny}{tiny} +\fontset{note}\BODYtemplate{10}{12pt}{tiny}{tiny} +\fontset{body}\BODYtemplate{12}{14pt}{small}{tiny} + +\def\everyloadfont#1#2{\fontdimen3#1=0pt \fontdimen4#1=0pt} +\rightskip=0pt plus 20mm +\bodyfonts +\tolerance=1000 + +%}}} +%{{{ malvern maths + +\mathcode`,="602C + +%}}} +%{{{ TOC + +\newwrite\TOCfile +\openout\TOCfile=\jobname.toc + +% #1 is \TOCentryfoo control sequence +% #2 is stuff to be evaluated NOW -- e.g., section number +% #3 is stuff to be evaluated WHEN PRINTED -- e.g., section title +% folio is written after this in file +\def\TOCwrite#1#2#3% +{% + \def\tmp{#3}% + \edef\tmp{\string#1{#2}{\expandafter\TOCtrim\meaning\tmp}} + \write\TOCfile\expandafter{\tmp{\folio}} +} +\def\TOCtrim#1:->{} % strip off "macro:->" + +\def\TOCentrypart#1#2#3% +{ + \smallskip + \dimen0=\hsize \advance\dimen0\leftmargin + \moveleft\leftmargin\hbox to\dimen0{\strut\bf #1. #2\hfil} + \smallskip +} + +\def\TOCentrysection#1#2#3% +{ + \smallskip\noindent\llap{#1\quad}% + {\bf \ignorespaces #2\quad\rm \n{#3}}\par +} + +\def\TOCentrysubsec#1#2#3% +{ + \noindent{#1\enspace}{\ignorespaces #2\quad\rm \n{#3}}\par +} + +\def\TOCentrysubsubsec#1#2#3% +{ + \indent\indent\llap{#1\enspace}{\ignorespaces #2\quad\rm \n{#3}}\par +} + +%}}} +%{{{ sectioning + +% sections run continuously +% divisions start new page but do not reset section counters + +\newcount\partno +\def\thepartno +{% + \ifcase\partno O\or I\or II\or III\or IV\or V\else + \expandafter\uppercase\expandafter{\romannumeral\partno}% + \fi +} +\def\part#1% +{% + \advance\partno1 + \newpageheading{2\baselineskip}{\headingfonts}{}{\thepartno.\quad#1} + \TOCwrite\TOCentrypart{\thepartno}{#1} +} + +\newcount\secno \newcount\subsecno \newcount\subsubsecno + +\def\thesecno +{% + \n{% + \number\secno + \ifnum\subsecno>0 + .\number\subsecno + \ifnum\subsubsecno>0 + .\number\subsubsecno + \fi + \fi + }% +} + +\def\sectionheading#1{\dosectionheading{#1}} +\def\dosectionheading#1% +{ + \par + \removelastskip + \vskip 0pt plus 0.3\vsize + \penalty-200 + \vskip 1\bigskipamount plus -0.3\vsize + \begingroup \advance\leftskip-\leftmargin + \parskip=0pt \parindent=0pt + \hyphenpenalty=10000 \exhyphenpenalty=500 + \interlinepenalty=100 + \headingfonts + \hbox{\hskip-\leftmargin + \vrule height 2pt depth 0pt width \leftmargin + \vrule height 2pt depth 0pt width \hsize} + \nobreak\medskip + \Box\enspace#1\par + \nobreak\smallskip + \endgroup +} + +\def\section#1% +{ + \counta=\secno \advance\counta1 + \mark{\thesecno \noexpand\else \n{\number\counta}}% OLD \else NEW + \secno=\counta \subsecno=0 \subsubsecno=0 + \dosectionheading{\thesecno\quad #1} + \mark{\thesecno \noexpand\else \thesecno}% NEW \else NEW + \TOCwrite\TOCentrysection{\thesecno}{#1} +} + +\def\subsec#1% +{% + \counta=\subsecno \advance\counta1 + \mark{\thesecno \noexpand\else \n{\number\secno.\number\counta}} + \subsecno=\counta \subsubsecno=0 + \doheading\medskipamount{\subheadingfonts}{}{\thesecno\quad#1} + \mark{\thesecno \noexpand\else \thesecno} + \TOCwrite\TOCentrysubsec{\thesecno}{#1} +} + +\def\subsubsec#1% +{% + \advance\subsubsecno+1 + \doheading\smallskipamount{}{}{\ifdim\leftmargin=0pt\thesecno\quad\fi#1} + \TOCwrite\TOCentrysubsubsec{\thesecno}{#1} +} + +\newif\ifnoheader +\newif\iftwosided + +\footline={% + \ifnoheader + \global\noheaderfalse + \hfil\bodyfonts\n\folio\hfil + \else + \hfil + \fi +} + +\headline={% + \ifnoheader + \hfil + \else + \bodyfonts \hskip-\leftmargin + \iftwosided + \ifodd\pageno + \iftrue\botmark\fi + \hfil + {\bf\n\folio}% + \else + {\bf\n\folio}\quad + \hfil + \expandafter\iffalse\topmark\fi + \fi + \else + \expandafter\iffalse\topmark\fi + \hfil + {\bf\n\folio}% + \fi + \fi +} + +%}}} +%{{{ abbrevs + +\def\pt{\,{\rm pt}} +\def\mm{\,{\rm mm}} + +\def\MF{{\ifdim\fontdimen1\font>0pt \mfi \else \mf \fi METAFONT}} +\def\TeX{T\kern-0.1em \lower0.5ex\hbox{E}\kern-0.01em X} +\def\La{L\kern-0.1667em \flushtop{\char"E1 }} +\def\LaTeX{\La\kern-0.05em \TeX} +\def\MagTeX{M{\char"E1 \char"E7 }\kern-0.1em \TeX} +\csc{ + \gdef\PS{PostScript} +} + +\def\MSDOS{\hbox{MS-DOS}} + +\def\MFjob{{\mf MF}\kern-0.125em job} % Eberhard Mattes' emTeX MFjob + +{\plain| +\gdef\dfn#1{\index{#1|idxunderline}{\bi #1}} +} + +\def\<#1>{\leavevmode\hbox{\langle{\it#1\/}\rangle}} + +\active\* \def*#1*{{\it#1\/}} +\append\verbatimplains\* + +% _xxx_ is xxx as typed by user to a program. +\active\_ +\def_% _xxx_ is bold verbatim text +{% + \ifmmode + \sb + \else + \begingroup % matched by closing _ + \tb\setupverbatim + \plain\|\active\_% + \let_\endgroup + \fi +} + +%}}} +%}}} ma55doc.tex + + +%Local variables: +%fold-folded-p: t +%tex-macros-p: t +%End: diff --git a/fonts/malvern/doc/mabib.tex b/fonts/malvern/doc/mabib.tex new file mode 100644 index 0000000000..b0753169be --- /dev/null +++ b/fonts/malvern/doc/mabib.tex @@ -0,0 +1,239 @@ +% mabib.tex -- Bibliography for Malvern Handbook +% Copyright 1994 P. Damian Cugley + +%%% @TeX-document { +%%% filename = "mabib.tex", +%%% version = "X", +%%% date = "pdc 1994.10.11", +%%% package = "Malvern 1.2", +%%% author = "P. Damian Cugley", +%%% email = "damian.cugley@comlab.ox.ac.uk", +%%% address = "Oxford University Computing Laboratory, +%%% Parks Road, Oxford OX1 3QD, UK", +%%% codetable = "USASCII", +%%% keywords = "Malvern, METAFONT, font, typefont, TeX", +%%% supported = "Maybe", +%%% abstract = "Character programs for the Malvern +%%% font family.", +%%% dependencies = "ma55doc.tex, pdc*.tex, maamac.tex, texnical.tex, +%%% mabib.tex, and many Malvern fonts", +%%% } + +% This software is available freely but without warranty. +% See the file 0copying.txt for details. + +%{{{ bibliography + +\section{References} + +\iflong\else + This section includes references not cited in the "Abridged + Malvern Handbook". +\fi + + The publication \TUGboat, referred to below, is the journal of + the \TeX\ Users Group (TUG), PO~Box~\n{9506}, Providence, + RI~$02940$--$9506$, United States of America. Their electronic + mail address is |TUG@Math.AMS.com|. + + URLs (universal resource locators) describe documents available + over Internet. A URL of the form +\begin display + |file://|\<host>|/|\<directory>|/|\<name>\cr +\end display + represents a file called \<name> in directory \<directory> on an + FTP server called \<host>. CTAN is the Comprehensive \TeX\ + Archive, for example +\begin display + |file://ftp.tex.ac.uk/tex-archive|\cr + |gopher://gopher.tex.ac.uk/11/archive/|\cr\quad|Archive%20directory|\cr + |http://www.tex.ac.uk/tex-archive/|\cr +\end display + and similarly +\begin display + |file://ftp.dante.de/tex-archive|\cr + |file://ftp.shsu.edu/tex-archive|\cr +\end display + and many mirrors. + +\def\Ibid{Ibid.\spacefactor1000 } + +\xreflabel{bib}{\S{\thesecno}} +\begingroup +\def\bibitem#1#2% +{% + \smallbreak + \def\tmp{#1} + \edef\tmp{\string\expcs\string\def{xref-#2}% + {\expandafter\TOCtrim\meaning\tmp}} + \write\auxfile\expandafter{\tmp} + \setbox0=\hbox{\subheadingfonts {#1\/}} + \ifdim\wd0>\leftmargin + \noindent\hskip-\leftmargin \box0 \quad + \else + \noindent\llap{\hbox to \leftmargin{\hfil \unhbox0 \quad}}% + \fi + \ignorespaces +} + +\counta=0 +\def\nbibitem% +{% + \advance\counta 1 + \expandafter\nnbibitem\expandafter{\the\counta} +} +\def\nnbibitem#1{\bibitem{\n{#1}}} + +\def\TB#1#2#3#4#5% +{% + \TUGboat~\n{#1.#3} (\n{#2}), pp.\thinspace\n{#4}--\n{#5}% +} + +\nbibitem{PS} + Adobe Systems Incorporated, {\it PostScript\registered\ Language + Reference Manual}, $2$nd Edition (Addison--Wesley, $1990$). The + definitive description of the Level-$2$ PostScript + page-decsription language. + +\nbibitem{Berry} + Karl Berry, `Filenames for Fonts', \TB{11}{1990}{4}{517}{520}. + This describes a system of conventions for assigning \TeX\ + external names to fonts. + +\nbibitem{Berry2} + Karl Berry, {\it Filenames for Fonts}, version $1.6$ + \url{file}{ftp.cs.umb.edu}{pub/tex}{fontnames-1.6.tar.gz}. As + above, with revisions, a longer list of family names, and some + ideas for long fontnames. + +\nbibitem{Bien} + Janusz S. Bie\'n, `On Standards for Computer-Modern Font + Extensions', \TB{11}{1990}{2}{175}{183}. Ennumerates the + special letters used in several languages. + +\nbibitem{KD} + K.~J. Dryllerakis (|kd@doc.ic.ac.uk|), {\it Typesetting Greek + Texts with Greek\TeX}, Greek\TeX~\n{3.1} (also known as KD Greek) + (CTAN |fonts/greek/kd|). + + +\nbibitem{Cork} + Michael~J. Ferguson, `Report on Multilingual Activities', + \TB{11}{1990}{4}{514}{516}. This describes the font encoding + that resulted from discussions at the \TeX\ User Group + conference in Cork in September $1990$. + +\nbibitem{GPL} + Free Software Foundation, {\it GNU General Public License}, + Version~$1$ (Free Software Foundation, Inc., $675$ Mass Ave, + Cambridge, MA~$02139$, USA) (Feb.\thinspace $1989$). The license + agreement descibes the rights and responsibilities of users of + GNU software. (Supplied as a file |COPYING| in all GNU + distributions.) + +\nbibitem{Hara} + Yannis Haralambous, `\TeX\ and Latin-Alphabet Languages', + \TB{10}{1989}{3}{342}{345}. An attempt to devise a system of + ligatures to cover all European Latin-alphabet languages. + Incorrectly states that no English words use composite letters. + +\nbibitem{Hart's} + Horace Hart, {\it Hart's Rules for Compositors and Readers at + the University Press, Oxford}, $39$th Edition (corrected) + (Oxford University Press, $1990$). A small book describing the + house style of the Oxford University Press. + +\nbibitem{Hart's13} \Ibid, p.\,$13$. +\nbibitem{Hart's30} \Ibid, p.\,$30$ +\nbibitem{Hart's62} \Ibid, p.\,$62$ +\nbibitem{Hart's102} \Ibid, p.\,$102$. +\nbibitem{Hart's120} \Ibid, pp.\,$120$--$121$. +\nbibitem{Hart's135} \Ibid, p.\,$135$. + +\nbibitem{fontinst} + Alan Jeffrey ({\tt alanje@cogs.susc.ac.uk}), {\it The |fontinst| + package} (CTAN |fonts/utilities/fontinst|, June \n{1994}). See + \xref{s-fontinst}. + +\nbibitem{MFbook} + Donald E. Knuth, {\it The \MF book} (Addison--Wesley, + $1986$). Also published as Volume~C of the Computers and + Typesetting Series. The definitive user manual for \MF. + +\nbibitem{MFApp.F} + \Ibid, Appendix F. + +\nbibitem{TeXbook} + Donald E. Knuth, {\it The \TeX book} ($n$th printing, + Addison--Wesley, $1990$). Also published as Volume~A of the + Computers and Typesetting Series. The definitive user guide to + \TeX. + +\nbibitem{TeXchar} + {\TeX book}, Chapters $25$ and~$26$. \<character> is defined at the + start of Ch.\thinspace $26$ (Summary of Math Mode), but the concept is + used in Ch.\thinspace $25$ (Summary of Horizontal Mode). + +\nbibitem{TeX9} + {\it \TeX book}, Chapter \n9. +\nbibitem{TeXB4} + {\it \TeX book}, Appendix B, \S$4$ + +\nbibitem{TeXD1} + {\it \TeX book}, Appendix D, \S$1$. + +\nbibitem{TeXE} + {\it \TeX book}, Appendix E. + +\nbibitem{TeXF1} + {\it \TeX book}, Appendix F, Figure~\n1. + +\nbibitem{LaTeX} + Leslie Lamport, {\it \LaTeX: A Document Preparation System} + (Addison--Wesley, $1986$). An introduction and user guide for + \LaTeX. + +\nbibitem{lfonts} + Leslie Lamport et al., |lfonts.tex| (part of the standard + \LaTeX\ distribution). The only documentation for the standard + \LaTeX\ font-loading macros. + +\nbibitem{NFSS} + Frank Mittelbach and Rainer Sch\"opf, `The New Font Family + Selection: User Interface to Standard \LaTeX', + \TB{11}{1990}{2}{298}{}. This describes a version of the + so-called New Font Selection Scheme (\mc{NFSS}), used in some + \LaTeX\ installations. + +\nbibitem{ODWE} + {\it The Oxford Dictionary for Writers and Editors} (Oxford + University Press, $1990$). The companion dictionary to + \rcite{Hart's} above. + +\nbibitem{ODWEacc} + \Ibid, under "accents and special sorts". + +\nbibitem{ODWEcap} + \Ibid, under "capitalization/Postcodes". (Also the first line + of the title verso of the same book.) + +\nbibitem{Pei} + Mario A. Pei, {\it The World's Chief Languages}, $3$rd Edition + (Allen \& Unwin, $1949$). The only reference in my local + library to many of the languages that latin fonts are expected + to support. + +\nbibitem{nfss-malvern} + Sebastian Rahtz, {\tt malvern.sty} (in directory {\tt + /contrib/spqr} of the \package\ distribution). Specifies + Malvern fonts for \LaTeX \n{2.09} with NFSS. +\par +\endgroup +%}}} bibliography + +%Local variables: +%fold-folded-p: t +%tex-mother-file: "maman" +%fold-folded-p: t +%fill-prefix: "\t" +%End: diff --git a/fonts/malvern/doc/magrmac.tex b/fonts/malvern/doc/magrmac.tex new file mode 100644 index 0000000000..59fdc97b81 --- /dev/null +++ b/fonts/malvern/doc/magrmac.tex @@ -0,0 +1,85 @@ +% %M% 1.%I% %E% -- hacks for typesetting Greek + +% These macros are intended to be useful with the Malvern G fonts, +% and should also work pretty much with the Levy or KD Greek fonts. In +% the long term, I expect to merge what little extra support is needed +% for Malvern into the GreekTeX distribution in some sense. + +% These macros are not in final form and are not intended to be +% supported. Use them at your own risk. Enjoy! + +% Damian Cugley +% Oxford University Computing Laboratory, UK +% <Damian.Cugley@comlab.ox.ac.uk> + +%{{{ macros for greek + +\newtoks\everygreek + +%{{{ lunate sigma, curly phi + +{\catcode`\s=13 \catcode`\S=13 +\gdef\\% +{% + \catcode`\s=13 \chardef s=`c% + \catcode`\S=13 \chardef S=`C% +}} +\let\grlunatesigma=\\ + +{\uccode`\~=`\f \uppercase{ +\gdef\\% +{% + \catcode`\f=13 \chardef~=92 +}}} +\let\grvarphi=\\ + +%}}} lunate sigma +%{{{ accent + +{\catcode`\<=13 \catcode`\>=13 \catcode`\'=13 \catcode`\`=13 +\gdef\monotoniko +{% + \catcode\lq\'=13 \catcode\lq\`=13 \catcode\lq\~=13 + \catcode\lq\<=13 \catcode\lq\>=13 \catcode\lq\|=13 + \chardef'=3 \chardef`=3 \chardef~=3 + \chardef<=64 \chardef>=64 \chardef|=64 +} +\gdef\plutoniko +{% + \catcode\lq\'=12 \catcode\lq\`=12 \catcode\lq\~=12 + \catcode\lq\<=12 \catcode\lq\>=12 \catcode\lq\|=12 +} +} + +%}}} accent +%{{{ define delims + +% Define #1 to be a "greek shift" in the way $ is a maths shift. +% Like $, #1 stands for either \begingreek or \endgreek as required. +% #1 must be a single token that is definable with \def -- either +% a control sequence or an (already) active character. + +\def\grdelimiter#1% +{ + \def#1{\begingreek \let#1=\endgreek} +} + +%}}} define delims + +\def\begingreek +{% + \begingroup + \catcode`\~=12 \catcode`\|=12 \catcode`\"=12 + \the\everygreek +} +\def\endgreek +{% + \endgroup +} + +%}}} macros for greek + +% Local variables: +% fold-folded-p: t +% tex-macros-p: t +% End: diff --git a/fonts/malvern/doc/magrman.fnt b/fonts/malvern/doc/magrman.fnt new file mode 100644 index 0000000000..80834050d8 --- /dev/null +++ b/fonts/malvern/doc/magrman.fnt @@ -0,0 +1,25 @@ +cmr12 +cmr9 +cmti12 +cmti9 +cmbx12 +cmbx9 +cmmi12 +cmmi9 +cmsy9 +cmtt12 +logo10 at 12pt +cmss10 scaled 1200 +cmbxti10 at 12pt +cmr10 +cmr7 +cmti10 +cmti7 +cmbx10 +cmbx7 +cmmi10 +cmmi7 +cmsy10 +cmsy7 +cmbxti10 at 10pt +cmtt10 diff --git a/fonts/malvern/doc/magrman.idx b/fonts/malvern/doc/magrman.idx new file mode 100644 index 0000000000..69e1c7422c --- /dev/null +++ b/fonts/malvern/doc/magrman.idx @@ -0,0 +1,6 @@ +\idx{Greek mode|idxunderline}{1} +\idx{lunate sigma|idxunderline}{1} +\idx{compound word mark|idxunderline}{2} +\idx{`}{2} +\idx{null glyph|idxunderline}{2} +\idx{`}{4} diff --git a/fonts/malvern/doc/magrman.tex b/fonts/malvern/doc/magrman.tex new file mode 100644 index 0000000000..2eba5b34f0 --- /dev/null +++ b/fonts/malvern/doc/magrman.tex @@ -0,0 +1,602 @@ +% magman.tex -- info about Malvern Greek. +%{{{ Malvern Greek manual +%{{{ preamble + +\input cmdoc +\input magrmac +\input pdcidx + +\font\notegr=ma55g9 +\font\bodygr=ma55g11 +\macappend\BODYtemplate{\f{gr}{ma55g}} +\bodyfonts + +\everygreek{\gr \baselineskip=14pt} + +\grdelimiter* + +\headline={\hfil\global\headline={\bodyfonts \hfil Typesetting Greek using + Malvern fonts\quad{\bf\folio}}} + +\def\thesecno +{% + \number\subsecno +} + +%{{{ font tables + +%% Code to typeset a font table -- lifted from my testfont.tex + +\newcount\tableN +\newcount\hexcount +\def\hexdigit#1{\ifcase#1\relax 0\or 1\or 2\or 3\or 4\or 5\or 6\or 7\or + 8\or 9\or A\or B\or C\or D\or E\or F\fi} + +\def\ntablecr +{% + \cr + \noalign{\nointerlineskip} + \multispan2\hfill &\multispan{33}\hrulefill +} +\def\ntable +{ + \medskip + \begingroup \openup1\jot + \def\\{\char\tableN \global\advance\tableN 1} + \def\0##1{&\omit&\sevenrm##1} + \halign to \hsize + {% + \chartstrut\hss##\tabskip=0pt plus 10pt & + &\hss##\hss&##\vrule\cr + \lower 6.5pt\null + &\00\01\02\03\04\05\06\07\08\09\0A\0B\0C\0D\0E\0F + \ntablecr + \global\tableN=0 + \ntablelines + \crcr + } + \medbreak + \endgroup +} + +\def\ntablelines +{% + \ifnum\tableN<256 + \let\next\ntablecontinuation + \else + \let\next\relax + \fi + \next +} + +\newcount\ntabtmp + +\def\ntablecontinuation +{% + % Find out if none of this row are defined by making a horizontal + % list of all of them preceeded by a penalty of 1; if any of them + % are defined then \lastpenalty will be something other than 1: + \setbox0=\hbox{\penalty1 + \def~{\char\tableN \advance\tableN 1}% + ~~~~~~~~~~~~~~~~\global\ntabtmp=\lastpenalty}% + % Now set the row in the table iff ntabtmp # 1: + \ifnum\ntabtmp=1 + \global\advance\tableN 16 \let\next=\ntablelines + \else + \let\next=\ntablecontinuationcontinuation + \fi + \next +} + +\def\ntablecontinuationcontinuation +{% + \cr + \noalign{\nointerlineskip \penalty5000 } + & \hexcount=\tableN \divide\hexcount16 \sevenrm\hexdigit\hexcount + &&\\&&\\&&\\&&\\&&\\&&\\&&\\&&\\&&\\&&\\&&\\&&\\&&\\&&\\&&\\&&\\& + \ntablecr + \ntablelines +} + +\def\chartstrut{\lower 0.25\baselineskip \vbox to \baselineskip{}} + +%}}} font tables +%{{{ two-column quotations + +\def\twocolgr +{ + \smallskip + \setbox0=\vbox\bgroup + \hsize=\bodywd \advance\hsize-\colsep \divide\hsize by 2 + \begingreek \strut \ignorespaces +} +\def\endtwocolgr +{% + \par\endgreek \egroup + \moveleft\leftmargin\vbox{ + \hrule\smallskip + \rigidbalance{0}{2}{\ht\strutbox}{\bodywd}{\hfil} + \smallskip\hrule + } + +\smallbreak +} +%}}} two-column quotations +%}}} preamble +%{{{ bibliography + +\def\TB{{\it TUGboat}} + +\counta=0 +\newtoks\bibliography +\newcount\bibcount + +\def\FAQnote +{% + \par {\bf Note on FAQs}\quad An FAQ is an electronic document, posted + regularly to a USENET newsgroup, usually in the form of a list of + answers to frequently asked questions. Many FAQs are available on + the archive site |pit-manager.mit.edu| (alias |rtfm.mit.edu|) + [18.172.1.27] in the directory |pub/usenet/news.answers|. The + reference gives the name of the compiler, the title, the + last-modified date (in lieu of an edition or version number) and + name under which the FAQ is archived appears in parentheses. + \par +} + +\def\bibdef#1#2% +{ + \expcs\edef{cite#1}% + {% + \noexpand\docite\noexpcs{cite#1}\noexpcs{refer#1}% + } + \toks0={#2} + \expcs\edef{refer#1}{\noexpand\bibitem{\expcs\noexpand{cite#1}} + \the\toks0} +} +\def\docite#1#2% +{% + \global\advance\bibcount1 + \global\bibliography=\expandafter + {\the\bibliography #2}% + \global\edef#1% + {[\the\bibcount]}#1% +} + +\bibdef{Allen} +{ + W. Sidney Allen, {\it Vox Graeca: A Guide to Pronunciation of Classical + Greek}, 3rd Ed.\ (Cambridge University Press, 1987), + pp.\thinspace177--179. +} + +\bibdef{KD} +{ + K.~J. Dryllerakis (|kd@doc.ic.ac.uk|), {\it Typesetting Greek Texts with + Greek\TeX}, Greek\TeX~3.1 (also known as KDGreek) (CTAN + |fonts/greek/kd|). +} + +\bibdef{FAQ} +{ + Nikolaos Fotis (ed.), {\it soc.culture.greek} FAQ -- + Linguistics ({\tt greek-\penalty\exhyphenpenalty faq\slash + linguistics}, 1993/03/06). +} + +\bibdef{Yannis} +{ + Yannis Haralambous and Klaus Thull, Typesetting Modern Greek with 128 + Character Codes, \TB\/ 10 (1989), pp.\thinspace354--359 (CTAN + |fonts/greek/yannis|). +} + +\bibdef{Harts} +{ + Horace Hart, {\it Hart's Rules for Compositors and Readers at the + University Press, Oxford}, 39th Edition, revised (Oxford + University Press, 1989), pp.\thinspace111--116. +} + +\bibdef{Levy} +{ + Silvio Levy, Using Greek Fonts with \TeX, \TB\/ 9 (1988), + pp.\thinspace20--24 (CTAN |fonts/greek/levy|). +} + +\bibdef{COD} +{ + {\it The Concise Oxford Dictionary of Current English}, 8th Ed. + (Oxford University Press, 1990), p.\thinspace1453. +} + +\def\bibitem#1% +{% + \smallskip + \indent \llap{#1\hskip1pc}\ignorespaces +} + + +%}}} bibliography + +\leftline{\headingfonts Typesetting Greek using Malvern fonts} +\bigskip +\leftline{P. Damian Cugley} +\leftline{Oxford University Computing Laboratory} +\leftline{(|Damian.Cugley@comlab.ox.ac.uk|)} +\leftline{April 1993} +\bigskip + +\noindent + Malvern is a sanserif font family, implemented in \MF. This + document describes an early version of Malvern encoding~G (the Greek + alphabet). The Greek letters used to appear in Malvern~B, but I + decided to give them an encoding (code page?)\ of their own so that + there would be space for composite letters. + +\subsec{Using Malvern G} + + Because most Latin-alphabet languages require additional composite + letter glyphs to be properly typeset by \TeX, most Malvern fonts + will be used as the raw material for composite fonts. In contrast, + the Malvern Greek font can be used directly to typeset Greek, both + with the old accent-and-breathing systems and the newer (post-1974) + one-accent system. It follows the conventions of Silvio Levy's + original |gr| family \citeLevy\ and K.~J. Dryllerakis's Greek\TeX\ + (|kd| fonts) \citeKD. It is almost compatible with the reduced + Greek fonts (|rgr| and |mrgr| families) described by Yannis + Haralambous and Karl Thull \citeYannis. + +%{{{ typesetting + +\subsec{Macro file} + + The file |grhacks.tex| has some macros for setting texts in plain + \TeX. A future production release may instead work as an option or + extension of Greek\TeX, with the objective of making it possible to + switch an existing document to Malvern without much editing. + + Greek text is set within a \dfn{Greek mode}, delimited by macros + |\begingreek| and |\endgreek|. Each time Greek mode is entered, the + contents of the token register |\everygreek| is scanned first. + Since |grhacks| does {\it not} load a particular font by default, a + manuscript using |grhacks| will want to include an assignment like +\begin display + |\everygreek={\gr}|\cr + |\catcode`\*=\active \grdelimiter*| +\end display + where |\gr| has been bound to some Greek font or another such as + |ma55g12|. The macro |\grdelimiter| takes one parameter, an active + character (or control sequence) and makes that character into a + self-matching delimiter for Greek mode (like |$|--|$| works for + mathematics mode). Thus, `|*This is Greek*|' produces `*This is + Greek*'. + + +\subsec{The alphabet} + + The letters are transliterated as + follows: +\begin table \hfil#\hfil&&\enspace\hfil#\hfil\cr + \gr a&\gr b&\gr g&\gr d&\gr e&\gr z&\gr h&\gr j&\gr i&\gr k&\gr + l&\gr m&\gr n&\gr x&\gr o&\gr p&\gr r&\gr ss&\gr c&\gr t&\gr + u&\gr f&\gr q&\gr y&\gr w\cr + \tt a&\tt b&\tt g&\tt d&\tt e&\tt z&\tt h&\tt j&\tt i&\tt k&\tt + l&\tt m&\tt n&\tt x&\tt o&\tt p&\tt r&\tt s&\tt c&\tt t&\tt u&\tt + f&\tt q&\tt y&\tt w\cr +\noalign{\smallskip}% + \gr A&\gr B&\gr G&\gr D&\gr E&\gr Z&\gr H&\gr J&\gr I&\gr K&\gr + L&\gr M&\gr N&\gr X&\gr O&\gr P&\gr R&\gr S&\gr C&\gr T&\gr + U&\gr F&\gr Q&\gr Y&\gr W\cr + \tt A&\tt B&\tt G&\tt D&\tt E&\tt Z&\tt H&\tt J&\tt I&\tt K&\tt + L&\tt M&\tt N&\tt X&\tt O&\tt P&\tt R&\tt S&\tt C&\tt T&\tt U&\tt + F&\tt Q&\tt Y&\tt W\cr +\end table + The letter *C c* is \dfn{lunate sigma} (see below). + + A lower case sigma `*s@*' at the end of a word (or followed by + punctuation) is automatically changed to the final form `*s*' + through \TeX's ligature mechanism.\note{Occasionally \TeX's notion + of word boundaries causes the wrong glyph to appear. There are two + special invisible glyphs that can be used to control this in obscure + circumstances. The so-called \dfn{compound word mark} (or cwm) acts + as a word-boundary in the middle of a word. It has code~32, so + `|as^^`a|' produces `*as^^`a*', for example. The \dfn{null glyph} + is invisible, but, because it is not a boundary character, it can be + used to prevent a ligature with a following word boundary. It has + code 64, so `|as@|' produces `*as@*'.} + +\subsec{Composite letters} + + The marks that go above the letters are obtained with the + following characters, which go before the letter: +\begin table \gr#\hfil&\quad#\hfil&\quad #\hfil& \quad *#*\hfil\cr +\noalign{\hrule height 1pt \vskip1\jot}% + \omit Mark\hfil&\omit\quad Char\hfil& + Name&\omit\quad Name in \citeYannis\hfil\cr +\noalign{\vskip\jot \hrule \vskip\jot} + <@& |<|& asper (rough, = h)& dase'ia\cr + >@& |>|& lenis (smooth)& yil'h\cr + "@& |"| (double quote)& + diaeresis& dialutik'a\cr + '@& |'| (quote)& + acute accent& >oxe'ia\cr + `@& |`|& grave accent& bare'ia\cr + \char126 @& |~|& circumflex& perispwm'enh\cr +\noalign{\vskip1\jot \hrule height 1pt\smallskip}% +\end table + A breathing or diaeresis can be combined with an accent, thus + `|<~a|' for *<~a*, `|>'e|' for *>'e*. + + The vowels *a*, *h* and *w* may have an iota beneath them, called + `subscript': *a|*, *h|*, *w|*. These are produced with a vertical + bar `||||' after the letter in Greek mode: `|a|||' makes *a|*, + `|<a|||' makes `*<a|*', and so on. + + As an example: `*>en >arq~h| >~hn <o l'ogos*' is generated with `|>en + >arq~h|| >~hn <o l'ogos|'. + +% In old-style Greek, all vowels beginning a word require a breathing +% -- but *u* may only have an asper (rough). In diphthongs (*ai*, +% *ei*, *oi*, *ui*, *au*, *eu*, *hu*, *ou*, *wu*), breathings and +% accents stand over the second letter: *a<i*, *o>u*. Double *rr* +% used to be written *>r<r*. + +%\subsec{Apostrophe (sign of elision)} + +% The lenis is also used like an apostrophe, to mark the elision of +% vowels at the end of a word when the next word starts with a vowel. +% The Malvern-G fonts, like the Levy-derived fonts, also has a +% separate apostrophe glyph, which can be set with `|''|' (two quote +% characters) or `|'|' (one quote) at the end of a word. Thus you +% have a choice of `|d>|' or `|d'|' (*d>* or *d'*). + + +\subsec{Punctuation} + + Here's a table of correspondences for punctuation: +\begin table \hfil#\hfil&&\enspace\hfil#\hfil\cr + *.*&*,*&*;*&*:*&*!*&*?*&*''*&*((*&*))*\cr + |.|&|,|&|;|&|:|&|!|&|?|&|''|&|((|&|))|\cr +\end table + The apostrophe is also generated by a single single-quote at the end + of a word: `*d'*' can be generated by `|d'|'. There are also + digits, parentheses, brackets, hyphen, dashes, slash, per cent sign, + asterisk, plus and equals signs. + +\subsec{One-accent Greek} + + The easiest way to write modern Greek is simply to use |'| for the + accent and otherwise to use |\begingreek|--|\endgreek| as before: + `*en arq'h hn o l'ogos*' is generated with `|en arq'h hn o l'ogos|'. + + Malvern also has glyphs for a symmetrical accent (*\char3*) and + composite letters (such as *\char3 a*, *"\char3u*). The macro + |\monotoniko|\note{This macro is so named for compatibility with the + |rgr|/|mrgr| macros \citeYannis. It might usefully go in + |\everygreek|.} in Greek mode makes |'| an active character, + expanding to the symmetrical accent. Then `|En'w|' produces + `*En\char3w*'. In fact, the other accent characters |`| and |~| are + also made to substitute `*\char3*', and |<|, |>| and |||| expand to + the null glyph, so that a text with all the breathings and accents + and be hacked into almost-correct one-accent Greek.\note{Again, for + compatibility with the |rgr|/|mrgr| macros. Because monosyllables + should not have accents at all in one-accent Greek, a complete + conversion from old-style to new-style requires changes to the + manuscript anyway, so the usefulness of this feature is debatable!} + For example, `|>En~w|||' becomes `*\monotoniko >En~w|*'. + +\subsec{Variant glyphs} + + Sigma has a variant called lunate sigma, written *Cc*. These + letters can be obtained directly (produced by the character `|c|' in + the manuscript). So that a given text can be switched between the + two styles, there is also a macro |\grlunatesigma|, which redefines + `|s|' is as active character equivalent to `|c|'. Obviously this is + only useful when Greek mode is only used for plain texts, since it + prevents `|s|' from being used in control sequence names. + + Similarly, there are two ways to write lower case phi: *f* and + *\char92 * (`|f|' and glyph~92). There is no difference in meaning + between *f* and *\char92 *; the choice of one or the other is only + made on aesthetic grounds. The macro |\grvarphi| redefines `|f|' as + an active character equivalent to `*\char92 *', in effect replacing + *f* with *\char92 *. + + Normally these macros, if used, will go in |\everygreek|. + +%}}} typesetting +\iffalse +%{{{ background +\subsec{Background} + + This section is optional reading. + +\subsubsec{Development of the Levy-derived font families} + + Silvio Levy's |gr| fonts \citeLevy\ used the \TeX~2 ligature system + to make *s* become *s@* when followed by a letter, and had glyphs + for almost all the composite letters. + + Yannis Haralambous and Klaus Thull created a set of reduced + (128-glyph) fonts, for \TeX\ systems still unable to manage + 256-glyph fonts \citeYannis. These fonts (the |rgr| and |mrgr| + families) still used Levy's character programs. Because they could + not include glyphs for all the composite letters, many composite + letters had to be obtained with macros rather than ligatures. The + |mrgr| family is for new-style (one-accent) Greek. + + Finally K.~J. Dryllerakis's Greek\TeX\ package (also called KDGreek) + \citeKD\ uses the Levy character programs again, but takes advantage + of the new ligature features of \TeX~3 to make *s@* become *s* + (without needing compound glyphs for every combination of *s@* with + a letter). The fonts are given names starting with |kd|. + Greek\TeX\ also includes format files for plain \TeX\ and \LaTeX, + transliteration programs and other useful things. + +\subsubsec{Designing Greek letters for Malvern} + + My Malvern-G encoding is intended to be `ligature-compatible' with + Levy's and Dryllerakis's, meaning that `|<'a|||' will produce + `*<'a|*' in each of them, even though this is glyph~141 in + |grreg10|, 201 in |kdgr10| and some random number in |ma55g10|. The + punctuation characters have the same encoding. + + Designing a sanserif Greek lower case alphabet (*alfabet*?) is tricky + because the lower case letters have a very cursive style, as if + hand-drawn with a brush by a scribe in a hurry -- which is pretty + much the opposite of most sanserif styles. I~made sketches (on + paper) of Greek letters forced into the same sorts of shapes as + other Malvern letters, and the results were uniformly horrid. The + original idea of Malvern was to make a humanist/geometric hybrid, so + I tried approaching it from the from the humanist end this time. + +%}}} background +\fi +%{{{ references + +\subsec{References} + + Since I don't speak a word of Greek -- the only word I know is + *barbaroi* and I don't know how to spell it -- I have relied on + reading between the lines of the documentation for other systems for + typesetting Greek, including Hart's Rules \citeHarts. + + CTAN is the Comprehensive \TeX\ Archive Network, a collection of FTP + sites (such as |ftp.tex.ac.uk|, under directory |tex-archive|). + +\begingroup \parskip=0pt \parindent=0pt + \the\bibliography +\endgroup + +%}}} postamble +\vfill\eject +%{{{ samples + +\subsec{Examples of text in Malvern 55 and 56} + +\iffalse + This quotation is used by Haralambous and Thull \citeYannis\ as an + example of the old-style accent-and-breathing system: +%{{{ Popess Johanna + +\begin twocolgr + >En~w| <esp'eran tin`a >exantl'hsas t`a murol'ogi'a tou + >ekoim~ato <o Froum'entios >ep`i t~hs >'ammou t~hs paral'ias, + katab`as >ex o>uran~wn <o >ap'ostolos >eke~inos t~wn Sax'onwn + >'hnoixe di`a maqa'iras t`a st'hjh to~u koimwm'enou, + e>is'hgage to`us <iero`us dakt'ulous tou e>is t`hn >op`hn kai + >exag`wn t`hn kard`ian >eb'ujisen a>ut'hn e>is l'akkon pl'hrh + <'udatos, <'oper <hg'iasen prohgoum'enws. <H fl'egousa + >eke'inh kard'ia >'efrizen e>is t`o <'udwr <ws smap`is >ent`os + to~u thgan'iou, >afo~u d`e >ekr'uwsen, >'ejese p'alin a>ut`hn + <o <'agios e<is t`on t'opon ths ka`i kle'isas t`hn plhg`hn + >ep'estreyen e>is t`on >idik'on tou. + + >'Etuq'e pote, >anagn~wst'a mou, n`a >apokoimhj~h|s m`e + >anup'oforon b~hqa, koim'wmenos n`a <idr'wsh|s ka`i >exupn'hsas + n`a e<urej~h|s >iatreum'enos? >Agn~wn <'oti e>~isai + kal`a >ano'igeis mhqanik~ws t`o st'oma, <'ina plhr'wsh|s e>is + t`on >epikat'araton b~hqa t`on sun'hjh f'oron. >All`a + p'oshn a>isj'anesai qar'an, m`h e<ur'iskwn e>is t`on l'arugga + t`o >oqlhp`on jhr'ion! O<'utw <'ama >'hnoixe ka`i <o + Froum'entios to`us >ofjalmo'us, <htoim'asjn n`a prosf'erh| + e>is t`hn >aq'ariston >Iw'annan t`hn sun'hjh dakr'uwn + spond'hn, >all`a par`a p~asan prosdok'ian o<i >ofjalmo'i + tou e<ur'ejhsan xhro`i ka'i n`a progeumat'ish| m~allon >`h + n`a kla'ush| >h|sj'aneto >'orexin met`a polu'hmeron nhste'ian + <o kal`os Benedekt~inos. +\end twocolgr +\rightline{\csc{Emmanouil Ro\"{\i}dis}, `The Popess Johanna (1896)'} +\vskip 0pt plus \baselineskip + +%}}} Popess Johanna +\fi + + The following paragraph is set in 11-point Malvern~55 (11-point + Malvern has comprable x-height to 12-point Computer Modern). This + quotation is used as one of the examples in Levy's article + \citeLevy: +\begin twocolgr + >All' >ako'usontai, >enper e>~u dok~h|s l'egein. t'ode d'e sou + >ene'ohsa <'ama l'egontos, ka`i pr`os >emaut`on skop~w; e>i <'oti + m'alist'a me E>uj'ufrwn did'axeien, <ws o<i jeo`i <'apantes t`on + toio~uton j'anaton <hgo~untai >'adikon e>~inai, t'i m~allon >eg`w + mem'ajhka par' E>uj'ufronos, t'i pot' >est`in t`o <'osi'on te ka`i + t`o >an'osion? jeomis`es m`en g`ar to~uto t`o >'epgon, <ws + >'eoiken, e>'in >'an; >all`a g`ar o>u to'utw| >ef'anh >'arti + <wrism'ena t`o <'osion ka`i m'h; t`o g`ar jeomis`es >`on ka`i + jeofil`es >ef'anh. <wste to'utou m`en >af'ihm'i se, >~w E>uj'ufron; + e>i bo'ulei, p'antes a>ut`o <hge'isjwn jeo`i >'adikon ka`i p'antes + miso'untwn. >all' >~ara to~uto n~un >epanorj'wmeja >en t~w| l'ogw|, + <ws <`o m`en p'antes o<i jeo`i mis~wsin, >an'osi'on >estin, <`o d' + >`an fil~wsin, <`osion; <`o d' >`an o<i m`en fil~wsin, o<i d`e + mis~wsin, o>ud'etera >`h amf'otera? >~ar' o<'utw bo'ulei <hm~in + <wr'isjai n~un per`i to~u <os'iou ka`i to~u >anos'iou? +\end twocolgr + \rightline{Plato, `Euthyphro'} +\vskip 1\medskipamount plus \baselineskip + + + This quotation (similarly stolen) is in Malvern~56 and has + |\grvarphi| and |\grlunatesigma| in effect: + +\begin twocolgr \font\f=ma56g11 \f \grvarphi \grlunatesigma + T`h stigm`h to'uth ni'wjw p'oso bar'u ''nai t`o must'hrio t~hs + xomol'oghshs. <Ws t'wra, kane`is d`en x'erei p~ws p'erasa t`a du`o + qr'onia mou st`o <'Agion >'Oros. O<i f'iloi mou jarro~un p`ws p~hga + n`a d~w buzantin`a kon'ismata >`h >ap`o mustikop'ajeia n`a z'hsw + mi`a perasm'enh >epoq'h. Ka`i t'wra, n'a, ntr'epomai n`a mil'hsw. + + P~ws n`a t`o p~w? Jumo~umai <'ena >anoixi'atiko deilin'o, po`u + kat'ebaina t`on Ta"'ugeto, mi`a xafnik`h j'uella m`e k'uklwse kont`a + sto'us Pentaulo'us. T'oso fober`os >anemos'ifounas, po`u >'epesa + katag~hs gi`a n`a m`hn gkremist~w. O<i >astrap`es m' >'exwsan + <olo~uje ki >'ekleisa t`a m'atia m`hn tuflwj~w, ka`i kat'aqama, + p'istoma, per'imena. <'Olo t`o pan'uyhlo boun`o >'etreme, ka`i du`o + >'elata d'ipla mou tsak'isthkan >ap' t`h m'esh ka`i br'onthxan + q'amou. >'Eniwja t`o jei'afi to~u kerauno~u st`on >a'era, ka`i + xafnik`a x'espase <h mp'ora, >'epesen <o >'anemos, ka`i qontr'es, + jerm'es st'ales broq`h qt'uphsan t`a dentr`a ka`i t`o q~wma. T`o + jum'ari, <h jro'umpa, t`o fask'omhlo, t`o flisko'uni, qtuphm'ena + >ap' t`o ner'o, t'inaxan t`is murwdi'es tous ki <'olh <h g~hs + m'urise. +\end twocolgr +\rightline{\csc{Kazantzakis}, `Symposium'} +\vskip 0pt plus \baselineskip + +%}}} samples +\iffalse +%{{{ table + +*\ntable* +\smallskip \noindent + This is a working encoding, and will likely be different in future + versions. +%}}} table +\fi +%{{{ 24-pt sample + +\font\biggr=ma55g24 +\bigbreak +\moveleft\leftmargin \vbox{ \hsize=\bodywd +\hrule height 1pt \bigskip +\begingreek \biggr\baselineskip=30pt +\centerline{((ABGDEZHJIKLMNXOPRSCTUFQYW))} +\centerline{](abgdezhjiklmnxoprss^^`ctuf\char92 qyw)[} +\centerline{=0123456789---\%\char42 +/--''!,:;?.-} +\centerline{\char3 '@ `@ ~@ <@ <'@ <`@ <~@ >@ >'@ >`@ >~@ "@ "'@ "`@ "~@ + "\char3 @} +\endgreek +\medskip\hrule height 1pt +} +%}}} 24-pt sample + +\bye +%}}} Malvern Greek manual + +% Local variables: +% fill-prefix: "\t" +% fill-column: 76 +% fold-folded-p: t +% End: diff --git a/fonts/malvern/doc/magrman.toc b/fonts/malvern/doc/magrman.toc new file mode 100644 index 0000000000..2de8ced2e6 --- /dev/null +++ b/fonts/malvern/doc/magrman.toc @@ -0,0 +1,9 @@ +\TOCentrysubsec{1}{Using Malvern G}{1} +\TOCentrysubsec{2}{Macro file}{1} +\TOCentrysubsec{3}{The alphabet}{1} +\TOCentrysubsec{4}{Composite letters}{2} +\TOCentrysubsec{5}{Punctuation}{2} +\TOCentrysubsec{6}{One-accent Greek}{2} +\TOCentrysubsec{7}{Variant glyphs}{3} +\TOCentrysubsec{8}{References}{3} +\TOCentrysubsec{9}{Examples of text in Malvern 55 and 56}{4} diff --git a/fonts/malvern/doc/makeind.rc b/fonts/malvern/doc/makeind.rc new file mode 100644 index 0000000000..0f0004ff4d --- /dev/null +++ b/fonts/malvern/doc/makeind.rc @@ -0,0 +1,36 @@ +% style file for makeindex + +% INPUT + +keyword "\\idx" +level '/' +range_open '+' range_close '-' + +% OUTPUT + +preamble "" + +postamble "}\n" + +setpage_prefix "\n\\pageno=" setpage_suffix " " + +group_skip "}\n\n\\medskip\n" +lethead_prefix "\\leftline{\\bodybi " +lethead_suffix "}\n\\smallskip{" +lethead_flag -1 + +item_0 "}\n\n\t" +item_1 "}\n\n\t\\indent\\hskip1em\n" +item_2 "}\n\n\t\\indent\\hskip2em\n" +item_01 "}\n\n\t\\indent\\hskip1em\n" +item_x1 "\n\n\t\\indent\\hskip1em\n" +item_12 "}\n\n\t\\indent\\hskip2em\n" +item_x2 "\n\n\t\\indent\\hskip2em\n" + +delim_0 "\\ \\n{" +delim_1 "\\ \\n{" +delim_2 "\\ \\n{" +delim_n "}, \\n{" +delim_r "}--\\n{" + + diff --git a/fonts/malvern/doc/maman.aux b/fonts/malvern/doc/maman.aux new file mode 100644 index 0000000000..1011b0b479 --- /dev/null +++ b/fonts/malvern/doc/maman.aux @@ -0,0 +1,54 @@ +\expcs\def {xref-s-stylecodes}{\S $ \textfont 0=\font 2.2 $\ on page\penalty \@M \ $ \textfont 0=\font 4 $} +\expcs\def {xref-s-font-names}{\S $ \textfont 0=\font 2.3 $\ on page\penalty \@M \ $ \textfont 0=\font 4 $} +\expcs\def {xref-tab-encoding-codes}{\S $ \textfont 0=\font 2.3 $\ on page\penalty \@M \ $ \textfont 0=\font 5 $} +\expcs\def {xref-s-kb-names}{\S $ \textfont 0=\font 2.4 $\ on page\penalty \@M \ $ \textfont 0=\font 6 $} +\notedatum{1}{6} +\notedatum{2}{8} +\notedatum{3}{9} +\expcs\def {xref-s-LaTeX-fnames}{\S $ \textfont 0=\font 4.3 $\ on page\penalty \@M \ $ \textfont 0=\font 9 $} +\expcs\def {xref-s-maamac}{\S $ \textfont 0=\font 5 $\ on page\penalty \@M \ $ \textfont 0=\font 9 $} +\expcs\def {xref-s-ranging}{\S \kern .16667em $ \textfont 0=\font 5.4 $\ on page\penalty \@M \ $ \textfont 0=\font 11 $} +\notedatum{4}{12} +\expcs\def {xref-tab-charcodes}{\S $ \textfont 0=\font 6.1 $\ on page\penalty \@M \ $ \textfont 0=\font 12 $} +\expcs\def {xref-tab-charcodes-a}{\S $ \textfont 0=\font 6.2 $\ on page\penalty \@M \ $ \textfont 0=\font 12 $} +\expcs\def {xref-tab-charcodes}{Table\penalty \@M \ $ \textfont 0=\font 1 $\ on page\penalty \@M \ $ \textfont 0=\font 13 $} +\expcs\def {xref-tab-charcodes-b}{\S $ \textfont 0=\font 6.3 $\ on page\penalty \@M \ $ \textfont 0=\font 14 $} +\expcs\def {xref-tab-charcodes-c}{\S $ \textfont 0=\font 6.4 $\ on page\penalty \@M \ $ \textfont 0=\font 15 $} +\expcs\def {xref-tab-charcodes-g}{\S $ \textfont 0=\font 6.5 $\ on page\penalty \@M \ $ \textfont 0=\font 15 $} +\notedatum{5}{18} +\notedatum{6}{19} +\expcs\def {xref-s-fontinst}{\S $ \textfont 0=\font 10 $\ on page\penalty \@M \ $ \textfont 0=\font 23 $} +\expcs\def {xref-bib}{\S {$ \textfont 0=\font 12 $}\ on page\penalty \@M \ $ \textfont 0=\font 25 $} +\expcs\def{xref-PS}{\n {1}} +\expcs\def{xref-Berry}{\n {2}} +\expcs\def{xref-Berry2}{\n {3}} +\expcs\def{xref-Bien}{\n {4}} +\expcs\def{xref-KD}{\n {5}} +\expcs\def{xref-Cork}{\n {6}} +\expcs\def{xref-GPL}{\n {7}} +\expcs\def{xref-Hara}{\n {8}} +\expcs\def{xref-Hart's}{\n {9}} +\expcs\def{xref-Hart's13}{\n {10}} +\expcs\def{xref-Hart's30}{\n {11}} +\expcs\def{xref-Hart's62}{\n {12}} +\expcs\def{xref-Hart's102}{\n {13}} +\expcs\def{xref-Hart's120}{\n {14}} +\expcs\def{xref-Hart's135}{\n {15}} +\expcs\def{xref-fontinst}{\n {16}} +\expcs\def{xref-MFbook}{\n {17}} +\expcs\def{xref-MFApp.F}{\n {18}} +\expcs\def{xref-TeXbook}{\n {19}} +\expcs\def{xref-TeXchar}{\n {20}} +\expcs\def{xref-TeX9}{\n {21}} +\expcs\def{xref-TeXB4}{\n {22}} +\expcs\def{xref-TeXD1}{\n {23}} +\expcs\def{xref-TeXE}{\n {24}} +\expcs\def{xref-TeXF1}{\n {25}} +\expcs\def{xref-LaTeX}{\n {26}} +\expcs\def{xref-lfonts}{\n {27}} +\expcs\def{xref-NFSS}{\n {28}} +\expcs\def{xref-ODWE}{\n {29}} +\expcs\def{xref-ODWEacc}{\n {30}} +\expcs\def{xref-ODWEcap}{\n {31}} +\expcs\def{xref-Pei}{\n {32}} +\expcs\def{xref-nfss-malvern}{\n {33}} diff --git a/fonts/malvern/doc/maman.fnt b/fonts/malvern/doc/maman.fnt new file mode 100644 index 0000000000..0adfc6cb8a --- /dev/null +++ b/fonts/malvern/doc/maman.fnt @@ -0,0 +1,32 @@ +ma55a12 +ma55a9 +ma56a12 +ma56a9 +ma75a12 +ma75a9 +ma55a48 +ma75a18 +cmtt10 scaled 1440\relax +logo10 at 12pt +ma75a12 +ma55b12 +ma76a12 +ma57a12 +ma53a12 +ma55a10 +ma55a7 +ma56a10 +ma56a7 +ma75a10 +ma75a7 +cmmi7 +cmsy7 +ma55b10 +ma55g10 +ma55g12 +cmtt10 scaled 2074\relax +ma55c12 +ma55c12 +logosl10 at 12pt +cmtt10 scaled 1200\relax +ma75a72 diff --git a/fonts/malvern/doc/maman.idx b/fonts/malvern/doc/maman.idx new file mode 100644 index 0000000000..700b989d70 --- /dev/null +++ b/fonts/malvern/doc/maman.idx @@ -0,0 +1,121 @@ +\idx{Backus--Naur formalism}{2} +\idx{extended Backus--Naur Formalism}{2} +\idx{composite letter|idxunderline}{2} +\idx{base glyph|idxunderline}{2} +\idx{mark|idxunderline}{2} +\idx{quotation marks}{3} +\idx{apostrophe}{3} +\idx{inverted comma}{3} +\idx{comma}{3} +\idx{left quote}{3} +\idx{quote|idxunderline}{3} +\idx{backquote|idxunderline}{3} +\idx{guillemets}{3} +\idx{Univers}{4} +\idx{Frutiger, Adrien}{4} +\idx{Malvern}{4} +\idx{MS-DOS}{5} +\idx{font name@\<font name>}{5} +\idx{size@\<size>}{5} +\idx{MS-DOS}{5} +\idx{fontinst@{\tt fontinst}}{6} +\idx{note}{6} +\idx{LaTeX2e@\LaTeXe |+}{6} +\idx{NFSS\vn 2|+}{6} +\idx{NFSS}{6} +\idx{LaTeX3@\LaTeX \vn 3}{6} +\idx{T1fmv.fd@{\tt T1fmv.fd}}{7} +\idx{MakeTeXPK@{\tt MakeTeXPK}}{7} +\idx{Jeffrey, Alan}{7} +\idx{fontinst@{\tt fontinst}}{7} +\idx{LaTeX2e@\LaTeXe |-}{7} +\idx{NFSS\vn 2|-}{7} +\idx{LaTeX2.09@\LaTeX ~\n {2.09}|+}{7} +\idx{newfont@{\tt \char `\\newfont}}{7} +\idx{footnotesize@{\tt \char `\\footnotesize}}{7} +\idx{large@{\tt \char `\\large}}{7} +\idx{NFSS}{7} +\idx{Rahtz, Sebastian P.~Q.}{8} +\idx{malvern.sty@{\tt malvern.sty}}{8} +\idx{fmvnfss.sty@{\tt fmvnfss.sty}}{8} +\idx{fmv9nfss.sty@{\tt fmv9nfss.sty}}{8} +\idx{sc@{\tt \char `\\sc}}{8} +\idx{size-changing commands}{8} +\idx{getfont@{\tt \char 92\char 64 getfont}}{8} +\idx{normalsize@{\tt \char 92\char 64 normalsize}}{8} +\idx{getfont@{\tt \char 92\char 64 getfont}}{8} +\idx{fmvpltx.sty@{\tt fmvpltx.sty}}{9} +\idx{fmv9pltx.sty@{\tt fmv9pltx.sty}}{9} +\idx{sc@{\tt \char `\\sc}}{9} +\idx{Malvern~\n {1.0}}{9} +\idx{note}{9} +\idx{LaTeX2.09@\LaTeX ~\n {2.09}|-}{9} +\idx{maamac.tex@{\tt maamac.tex}|+}{9} +\idx{maamac.tex@{\tt maamac.tex}}{9} +\idx{note}{9} +\idx{malvern.tex@{\tt malvern.tex}}{9} +\idx{pounds@{\tt \char `\\pounds}}{10} +\idx{cents@{\tt \char `\\cents}}{10} +\idx{currency@{\tt \char `\\currency}}{10} +\idx{permille@{\tt \char `\\permille}}{10} +\idx{yen@{\tt \char `\\yen}}{10} +\idx{florin@{\tt \char `\\florin}}{10} +\idx{times@{\tt \char `\\times}}{10} +\idx{minus@{\tt \char `\\minus}}{10} +\idx{langle@{\tt \char `\\langle}}{10} +\idx{rangle@{\tt \char `\\rangle}}{10} +\idx{cdot@{\tt \char `\\cdot}}{10} +\idx{bullet@{\tt \char `\\bullet}}{10} +\idx{Box@{\tt \char `\\Box}}{10} +\idx{degrees@{\tt \char `\\degrees}}{10} +\idx{Mc@{\tt \char `\\Mc}}{10} +\idx{No@{\tt \char `\\No}}{10} +\idx{orda@{\tt \char `\\orda}}{10} +\idx{ordo@{\tt \char `\\ordo}}{10} +\idx{careof@{\tt \char `\\careof}}{10} +\idx{copyright@{\tt \char `\\copyright}}{10} +\idx{registered@{\tt \char `\\registered}}{10} +\idx{trademark@{\tt \char `\\trademark}}{10} +\idx{old style numerals}{11} +\idx{ranging numerals}{11} +\idx{csc@{\tt \char `\\csc}}{11} +\idx{sc@{\tt \char `\\sc}}{11} +\idx{mc@{\tt \char `\\mc}}{11} +\idx{caps@{\tt \char `\\caps}}{11} +\idx{lc@{\tt \char `\\lc}}{11} +\idx{sc@{\tt \char `\\sc}}{11} +\idx{smc@{\tt \char `\\smc}}{11} +\idx{cmcsc10@{\tt cmcsc10}}{11} +\idx{O@{\tt \char `\\O}}{11} +\idx{ae@{\tt \char `\\ae}}{11} +\idx{maamac.tex@{\tt maamac.tex}|-}{12} +\idx{encoding|idxunderline}{12} +\idx{character code|idxunderline}{12} +\idx{Cyrillic}{15} +\idx{wncy@{\tt wncy}}{15} +\idx{Greek}{15} +\idx{patch level|idxunderline}{18} +\idx{Wall, Larry}{18} +\idx{patch@{\tt patch}}{18} +\idx{mff@{\tt mff}}{18} +\idx{Jeffrey, Alan}{18} +\idx{fontinst@{\tt fontinst}}{18} +\idx{Berry, Karl}{19} +\idx{note}{19} +\idx{Greek}{20} +\idx{note}{20} +\idx{Jeffrey, Alan}{20} +\idx{fontinst@{\tt fontinst}}{20} +\idx{note}{21} +\idx{fontinst@{\tt fontinst}}{21} +\idx{Free Software Foundation}{23} +\idx{distribution}{23} +\idx{copying}{23} +\idx{mailing list}{23} +\idx{bugs}{23} +\idx{Jeffrey, Alan}{23} +\idx{foninst@{\tt foninst}}{23} +\idx{virtual fonts}{23} +\idx{Cork encoding}{23} +\idx{New Font Selection Scheme|see{NFSS}}{i} +\idx{Knuth, Donald E.}{ii} diff --git a/fonts/malvern/doc/maman.ilg b/fonts/malvern/doc/maman.ilg new file mode 100644 index 0000000000..d5d67d7e1b --- /dev/null +++ b/fonts/malvern/doc/maman.ilg @@ -0,0 +1,7 @@ +This is makeindex, portable version 2.4 [20-Mar-88]. +Scanning style file makeind.rc........................done (24 attributes redefined, 0 ignored). +Scanning input file maman.idx....done (121 entries accepted, 0 rejected). +Sorting entries....done (900 comparisons). +Generating output file maman.ind....done (284 lines written, 0 warnings). +Output written in maman.ind. +Transcript written in maman.ilg. diff --git a/fonts/malvern/doc/maman.ind b/fonts/malvern/doc/maman.ind new file mode 100644 index 0000000000..69be61876c --- /dev/null +++ b/fonts/malvern/doc/maman.ind @@ -0,0 +1,284 @@ +\leftline{\bodybi a} +\smallskip{} + + {\tt \char `\\ae}\ \n{11} + + apostrophe\ \n{3} + +\medskip +\leftline{\bodybi b} +\smallskip{} + + backquote\ \n{\idxunderline{3}} + + Backus--Naur formalism\ \n{2} + + base glyph\ \n{\idxunderline{2}} + + Berry, Karl\ \n{19} + + {\tt \char `\\Box}\ \n{10} + + bugs\ \n{23} + + {\tt \char `\\bullet}\ \n{10} + +\medskip +\leftline{\bodybi c} +\smallskip{} + + {\tt \char `\\caps}\ \n{11} + + {\tt \char `\\careof}\ \n{10} + + {\tt \char `\\cdot}\ \n{10} + + {\tt \char `\\cents}\ \n{10} + + character code\ \n{\idxunderline{12}} + + {\tt cmcsc10}\ \n{11} + + comma\ \n{3} + + composite letter\ \n{\idxunderline{2}} + + copying\ \n{23} + + {\tt \char `\\copyright}\ \n{10} + + Cork encoding\ \n{23} + + {\tt \char `\\csc}\ \n{11} + + {\tt \char `\\currency}\ \n{10} + + Cyrillic\ \n{15} + +\medskip +\leftline{\bodybi d} +\smallskip{} + + {\tt \char `\\degrees}\ \n{10} + + distribution\ \n{23} + +\medskip +\leftline{\bodybi e} +\smallskip{} + + encoding\ \n{\idxunderline{12}} + + extended Backus--Naur Formalism\ \n{2} + +\medskip +\leftline{\bodybi f} +\smallskip{} + + {\tt \char `\\florin}\ \n{10} + + {\tt fmv9nfss.sty}\ \n{8} + + {\tt fmv9pltx.sty}\ \n{9} + + {\tt fmvnfss.sty}\ \n{8} + + {\tt fmvpltx.sty}\ \n{9} + + {\tt foninst}\ \n{23} + + {\tt fontinst}\ \n{6}, \n{7}, \n{18}, \n{20}, \n{21} + + \<font name>\ \n{5} + + {\tt \char `\\footnotesize}\ \n{7} + + Free Software Foundation\ \n{23} + + Frutiger, Adrien\ \n{4} + +\medskip +\leftline{\bodybi g} +\smallskip{} + + {\tt \char 92\char 64 getfont}\ \n{8} + + Greek\ \n{15}, \n{20} + + guillemets\ \n{3} + +\medskip +\leftline{\bodybi i} +\smallskip{} + + inverted comma\ \n{3} + +\medskip +\leftline{\bodybi j} +\smallskip{} + + Jeffrey, Alan\ \n{7}, \n{18}, \n{20}, \n{23} + +\medskip +\leftline{\bodybi k} +\smallskip{} + + Knuth, Donald E.\ \n{ii} + +\medskip +\leftline{\bodybi l} +\smallskip{} + + {\tt \char `\\langle}\ \n{10} + + {\tt \char `\\large}\ \n{7} + + \LaTeX ~\n {2.09}\ \n{7}--\n{9} + + \LaTeXe \ \n{6}--\n{7} + + \LaTeX \vn 3\ \n{6} + + {\tt \char `\\lc}\ \n{11} + + left quote\ \n{3} + +\medskip +\leftline{\bodybi m} +\smallskip{} + + {\tt maamac.tex}\ \n{9}--\n{12} + + mailing list\ \n{23} + + {\tt MakeTeXPK}\ \n{7} + + Malvern\ \n{4} + + {\tt malvern.sty}\ \n{8} + + {\tt malvern.tex}\ \n{9} + + Malvern~\n {1.0}\ \n{9} + + mark\ \n{\idxunderline{2}} + + {\tt \char `\\Mc}\ \n{10} + + {\tt \char `\\mc}\ \n{11} + + {\tt mff}\ \n{18} + + {\tt \char `\\minus}\ \n{10} + + MS-DOS\ \n{5} + +\medskip +\leftline{\bodybi n} +\smallskip{} + + {\tt \char `\\newfont}\ \n{7} + + New Font Selection Scheme\ \n{\see{NFSS}{i}} + + NFSS\ \n{6}, \n{7} + + NFSS\vn 2\ \n{6}--\n{7} + + {\tt \char `\\No}\ \n{10} + + {\tt \char 92\char 64 normalsize}\ \n{8} + + note\ \n{6}, \n{9}, \n{19}, \n{20}, \n{21} + +\medskip +\leftline{\bodybi o} +\smallskip{} + + {\tt \char `\\O}\ \n{11} + + old style numerals\ \n{11} + + {\tt \char `\\orda}\ \n{10} + + {\tt \char `\\ordo}\ \n{10} + +\medskip +\leftline{\bodybi p} +\smallskip{} + + {\tt patch}\ \n{18} + + patch level\ \n{\idxunderline{18}} + + {\tt \char `\\permille}\ \n{10} + + {\tt \char `\\pounds}\ \n{10} + +\medskip +\leftline{\bodybi q} +\smallskip{} + + quotation marks\ \n{3} + + quote\ \n{\idxunderline{3}} + +\medskip +\leftline{\bodybi r} +\smallskip{} + + Rahtz, Sebastian P.~Q.\ \n{8} + + ranging numerals\ \n{11} + + {\tt \char `\\rangle}\ \n{10} + + {\tt \char `\\registered}\ \n{10} + +\medskip +\leftline{\bodybi s} +\smallskip{} + + {\tt \char `\\sc}\ \n{8}, \n{9}, \n{11} + + \<size>\ \n{5} + + size-changing commands\ \n{8} + + {\tt \char `\\smc}\ \n{11} + +\medskip +\leftline{\bodybi t} +\smallskip{} + + {\tt T1fmv.fd}\ \n{7} + + {\tt \char `\\times}\ \n{10} + + {\tt \char `\\trademark}\ \n{10} + +\medskip +\leftline{\bodybi u} +\smallskip{} + + Univers\ \n{4} + +\medskip +\leftline{\bodybi v} +\smallskip{} + + virtual fonts\ \n{23} + +\medskip +\leftline{\bodybi w} +\smallskip{} + + Wall, Larry\ \n{18} + + {\tt wncy}\ \n{15} + +\medskip +\leftline{\bodybi y} +\smallskip{} + + {\tt \char `\\yen}\ \n{10} diff --git a/fonts/malvern/doc/maman.tex b/fonts/malvern/doc/maman.tex new file mode 100644 index 0000000000..7a9c7c653d --- /dev/null +++ b/fonts/malvern/doc/maman.tex @@ -0,0 +1,3246 @@ +% maman.tex -- Top level of Malvern documentation +% Copyright 1994 P. Damian Cugley + +%%% @TeX-document { +%%% filename = "maman.tex", +%%% version = "X", +%%% date = "pdc 1994.07.20", +%%% package = "Malvern 1.2", +%%% author = "P. Damian Cugley", +%%% email = "damian.cugley@comlab.ox.ac.uk", +%%% address = "Oxford University Computing Laboratory, +%%% Parks Road, Oxford OX1 3QD, UK", +%%% codetable = "USASCII", +%%% keywords = "Malvern, METAFONT, font, typefont, TeX", +%%% supported = "Maybe", +%%% abstract = "Character programs for the Malvern +%%% font family.", +%%% dependencies = "ma55doc.tex, pdc*.tex, maamac.tex, texnical.tex, +%%% mabib.tex, and many Malvern fonts", +%%% } + +% This software is available freely but without warranty. +% See the file 0copying.txt for details. + +%{{{ maman.tex +%{{{ Preamble + +%**start of header + +\input ma55doc +\input pdcidx +\input pdcdcap + +%{{{ fonts + +\twosidedfalse % change to TRUE for book-style printing, FALSE for 1-sided +\newif\ifPS \PSfalse % change to TRUE iff have PostScript fonts +\newif\iflong \longfalse % chnage to TRUE if you want as longer manual + +\newfam\cpfam \newfam\xpfam \newfam\rmbfam \newfam\rmcfam \newfam\grfam +\newfam\rmxfam \newfam\rmsfam \newfam\cyfam +\def\extrafontsmap{\f{rmb}{ma55b}\f{rmc}{ma55c}% + \@\f{rmx}{fmvmq10}\@\f{rms}{fmvm10}% + \f{cp}{ma57a}\f{xp}{ma53a}\f{gr}{ma55g}\f{cy}{ma55c}} +\xfontset{tiny}\extrafontsmap{7} +\xfontset{small}\extrafontsmap{9} +\xfontset{note}\extrafontsmap{10} +\xfontset{body}\extrafontsmap{12} +\def\\{\macappend\BODYtemplate} \expandafter\\\expandafter{\extrafontsmap} +\bodyfonts +%}}} fonts +%{{{ customize footnotes & environments + +\def\footnotetextmark#1{{\rmb#1}} +\def\footnotenotemark#1{{\rmb#1}} +\def\TOCentrysubsubsec#1#2#3{} + +\def\n#1{$ \textfont0=\font #1 $} +\mathcode`\.="70AE % make "." in maths mode centred dot + +% In the index, references are enclosed in $...$, so +% we have to change the "encapsulation" macros: +\def\idxunderline#1{\underline{#1}} +\def\see#1#2{$ {\rmb \char1 } #1 $} + +%%%% \everylines={\smallfonts} + +\everybnf={\def\>{{\rmb\char1 }}\def\\{{\rmb\char124 }}} + +\def\notepar +{ + \smallskip + \index{note} + \begingroup \it + \setbox\parbox=\hbox{\it note} +} +\def\endnotepar +{ + \smallbreak + \endgroup +} + +\def\example +{ + \penalty\predisplaypenalty + \smallskip \parskip=0pt + \obeylines % every line is indented; blank lines ignored + \the\everylines + \let\end=\linesend +} +\def\endexample +{ + \smallbreak \global\noindenttrue +} +%}}} environment tweaking +%{{{ full-page Part headings + +% if in long mode, part headings omitted. +\def\BIGmap{\f{rm}{ma55a}\@\f{mf}{logo10}} +\fontset{big}\BIGmap{48}{56pt}{big}{big} +\ldfont\hugerm{ma75a72} + +\def\part#1% +{% +\iflong + \advance\partno1 + \mark{{\thesecno}{\thesecno}} + \vfill\eject + \iflong \line{} \vfill \fi + \begingroup + \parskip=0pt \parindent=0pt \hyphenpenalty=10000 + \bigfonts + \rightskip=0pt plus 2em + \iflong + {\hugerm \thepartno}\bigskip + \else + \noindent\llap{\thepartno\enspace}% + \fi + #1 \par + \TOCwrite\TOCentrypart{\thepartno}{#1} + \counta=\secno \advance\counta1 + \mark{{\n{\the\counta}}{\n{\the\counta}}} + \iflong \headline={\hfil} \footline={\hfil} \eject \fi + \endgroup +\fi +} +%}}} full-page part headings +%{{{ symbol tables + +\def\symtabrule#1% +{% + \nointerlineskip + \moveleft\leftmargin \hbox + {% + \vrule height #1 width \dimen0 depth 0pt + }% + \nointerlineskip +} + +\def\symtab +{% + \noindent$$ % matching $$ is in endsymtab + \def\dag{{\rm\char170 }} + \let\\=\symtabentry \counta=0 + \openup1\jot + \dimen0\hsize \advance\dimen0\leftmargin + \halign to \hsize\bgroup\hskip-\leftmargin + \hfil##\unskip\hfil \tabskip=0pt plus 1em minus 0.5em + &\quad\tt##\unskip\hfil + &&\qquad\hfil##\unskip\hfil&\quad\tt##\unskip\hfil\cr + \noalign{\symtabrule{1pt}\medskip}% +} +\def\endsymtab +{% + \crcr + \noalign{\nobreak\medskip \symtabrule{0.5pt}}% + \egroup$$ %% matches $$ in above +} + +\def\symtabentry#1|#2|% +{% + #1& + \def\tmp{#2}\expandafter\stripMacro\meaning\tmp + \global\advance\counta1 + \ifnum\counta=3 + \global\counta=0 + \def\next{\cr}% + \else + \def\next{&}% + \fi + \next +} + +\def\stripMacro#1:->{} + +%}}} symbol tables +%{{{ font tables + +%% Code to typeset a font table -- lifted from my testfont.tex + +\newcount\tableN +\newcount\hexcount +\def\hexdigit#1{\ifcase#1\relax 0\or 1\or 2\or 3\or 4\or 5\or 6\or 7\or + 8\or 9\or A\or B\or C\or D\or E\or F\fi} + +\def\ntablecr +{% + \cr + \noalign{\nointerlineskip} + \multispan2\hfill &\multispan{33}\hrulefill +} +\def\ntable +{ + \medskip + \begingroup \openup1\jot + \def\\{\char\tableN \global\advance\tableN 1} + \def\0##1{&\omit&\sevenrm##1} + \halign to \hsize + {% + \chartstrut\hss##\tabskip=0pt plus 10pt & + &\hss##\hss&##\vrule\cr + \lower 6.5pt\null + &\00\01\02\03\04\05\06\07\08\09\0A\0B\0C\0D\0E\0F + \ntablecr + \global\tableN=0 + \ntablelines + \crcr + } + \medbreak + \endgroup +} + +\def\ntablelines +{% + \ifnum\tableN<256 + \let\next\ntablecontinuation + \else + \let\next\relax + \fi + \next +} + +\newcount\ntabtmp + +\def\ntablecontinuation +{% + % Find out if none of this row are defined by making a horizontal + % list of all of them preceeded by a penalty of 1; if any of them + % are defined then \lastpenalty will be something other than 1: + \setbox0=\hbox{\penalty1 + \def~{\char\tableN \advance\tableN 1}% + ~~~~~~~~~~~~~~~~\global\ntabtmp=\lastpenalty}% + % Now set the row in the table iff ntabtmp # 1: + \ifnum\ntabtmp=1 + \global\advance\tableN 16 \let\next=\ntablelines + \else + \let\next=\ntablecontinuationcontinuation + \fi + \next +} + +\def\ntablecontinuationcontinuation +{% + \cr + \noalign{\nointerlineskip \penalty5000 } + & \hexcount=\tableN \divide\hexcount16 \sevenrm\hexdigit\hexcount + &&\\&&\\&&\\&&\\&&\\&&\\&&\\&&\\&&\\&&\\&&\\&&\\&&\\&&\\&&\\&&\\& + \ntablecr + \ntablelines +} + +\def\chartstrut{\lower 0.25\baselineskip \vbox to \baselineskip{}} + +%}}} font tables +%{{{ aux file +%% +%% Hacks using the ".aux" file to store information between runs +%% +%% This allows cross-references and per-page footnotes. +%% Normally I don't bother if a document is short enough not to need +%% cross-references or an index. +%% +%% Often TeX must be run twice to get the Xrefs sorted out :-( +%% + +%{{{ xrefs + +% Cross-refernces require two passes; one to write the xref +% to the .aux file with \xreflabel, and one to use the resulting \def. +% A footnote to the effect that a ref has been omitted is generated. +% Perhaps this is not a great idea. + +\def\xref#1% +{% + \expcs\ifx{xref-#1}\relax + \message{Warning: xref (#1) not known; you will need to TeX + this file again}% + <<{#1}>>% + \footnote{{\rm\dag}}{Cross-references in this document are + produced automatically. The values of Xrefs are written + into a file called \jobname.aux, which is read at the start of + the next run of \TeX\ on this file. Unknown Xrefs are replaced with the tag + name used within the document, enclosed in guillemets.}% + \gdef\xref##1{\expcs\ifx{xref-##1}\relax <<{##1}>>% + \else\csname xref-##1\endcsname\fi}% + \else + \csname xref-#1\endcsname + \fi +} + +% #1 -- string of characters -- internal label for this xref +% #2 -- TeX text -- what is produced by \xref{#1} on subsequent runs. +\def\xreflabel#1#2% +{% + \edef\tmp{\string\expcs\def{xref-#1}{#2\ on page~\n{\noexpand\folio}}}% + \write\auxfile\expandafter{\tmp}% +} + +\def\rcite#1{{\xref{#1}}} % direct reference +\def\cite#1{[{\xref{#1}\/}]} % parenthetically +\def\ncite#1#2{[{\xref{#1}\/}, #2]} % with a note + +\def\lcite#1% #1 is \\-list macro of cites! +{% + \def\tmplist{#1}% + \lop\tmp\tmplist + [{\xref\tmp\def\\##1{, \xref{##1}}\tmplist}]% +} + +%}}} +%{{{ footnotes -- numbered within pages! + +% Data accumulated during the previous TeX run is used to +% number footnotes consecutively within pages. (Obviously +% this fails when footnotes changed -- but the same applies to +% xrefs anyway.) + +% This is done by keeping two numbers per footnote -- the reference +% number (increases throughout the document, and is used internally) +% and the mark number (used in the completed document). + +% Before the first footnote on a given page, the mark number is reset to 0. +% This can't be done by simply assigning it during the output routine +% because TeX might have set the footnote on the next page just before +% shipping out the current one. Therefore I keep a list -- call it xs +% -- of footnotes that were the 1st note on a page during the previous +% run. Thus xs will be an increasing list starting with 1 (because the +% 1st footnote in a file is automatically the first on a page!) + +% Then the algorithm for each note is to increment the reference +% number, and check it against head(xs); if it is equal then set the +% mark number to 1 and xs := tail(xs). Otherwise, it is less than head(xs) +% hence on the same page as previously, so increment the mark number. + +% For efficiency (ha!) xs is represented by \notelisthead (a countdef +% name, set to head(xs)), and \notelist (a list macro, set to tail(xs)). + +\def\notelist{} % set by reading .aux file +\newcount\notelisthead + +\newcount\notemarkcount +\newcount\noterefcount + +\def\note % start a footnote +{% + \global\advance\noterefcount1 + \ifnum\noterefcount=\notelisthead + \ifx\notelist\empty + \global\notelisthead=10000 + \else + \glop\tmp\notelist + \global\notelisthead=\tmp + \fi + \notemarkcount=0 + \fi + \global\advance\notemarkcount1 + \edef\tmp{\string\notedatum{\the\noterefcount}{\noexpand\folio}}% + \write\auxfile\expandafter{\tmp}% + \footnote{\number\notemarkcount}% +} + + +% The data in the .aux file is (reference number, folio) pairs +% This is converted into a list of reference numbers for which +% the folio is different from the preceeding one, stored in macro +% \notedatumlastpage. + +\def\notedatumlastpage{--!--} + +\def\notedatum#1#2% +{ + \def\tmp{#2} + \ifx\notedatumlastpage\tmp \else + \gappend\notelist{#1} + \gdef\notedatumlastpage{#2} + \fi +} + +%}}} footnotes + +\catcode`@=11 +\inputifexists{\jobname.aux} +\catcode`@=12 +\newwrite\auxfile \openout\auxfile=\jobname.aux + +\ifx\notelist\empty + \notelisthead=10000 % No footnote data +\else + \lop\tmp\notelist \notelisthead=\tmp % set up notelisthead +\fi +%}}} aux file +%{{{ abbrevs + +\def\url#1#2#3#4{(\urlnoparens{#1}{#2}{#3}{#4})} +\def\urlnoparens#1#2#3#4% +{% + URL {\tt#1:\allowbreak + //#2/\allowbreak + #3/\allowbreak + #4}% +} + +\newif\ifkbnames + +% Captions for \topins items +\newcount\tablecount +\def\caption#1{\global\advance\tablecount1 + \medskip\noindent {\bf Table~\n{\the\tablecount}}\quad #1\par} + +\def\cmrname#1{{\tt\lowercase{#1}}} + +\def\ISO#1{ISO~\n{#1}} + +% Use \vn{N} for version number after `\LaTeX' or `NFSS': \LaTeX\vn2e +% This is because they prefer no space between name and version ID +% whereas I think there ought to be one. +\def\vn{~\n} +\def\LaTeXe{\LaTeX\vn2e\note{Note that `\LaTeX\thinspace\n2\lower0.5ex\hbox{\gr + e}' and `\LaTeX\vn2e' are the same thing. The lowered `{\gr e}' + is merely an excessively fancy way of saying + `e'.}\global\def\LaTeXe{\LaTeX\vn2e}} + +\def\texchar#1{\hbox{`{\tt#1}'}} +\def\oct#1{\hbox{\showmark\'$\it#1$}} +\def\hex#1{\hbox{\showmark\H\tt#1}} + +\def\TUGboat{{\it TUGboat}} + +\def\frac#1/#2% +{% + {\rmb\lowercase{#1}/\uppercase{#2}}% +} + +\def\showmark#1% #1 is an \accent command +{\hbox to 0.5em{% + \def\typeImark##1{\char##1\relax}% + \def\typeIImark##1{\char##1\relax}% + \hss #1{}\hss +}} + + +\def\marginchar#1% +{% + \vadjust + { + \moveleft\leftmargin \vbox to 0pt + { + \vss + \hbox to \leftmargin{\bigrm \hss#1\hss\hskip1pc}% + } + }% +} + +%% Put this LAST!! +\active\" \append\verbatimplains\" +\def"#1"{\hbox{\it#1\/}} + + +%}}} abbrevs + +\def\package{Malvern~\n{1.2}} +\def\ttpackage{Malvern-1.2} + +%**end of header + +%}}} preamble +%{{{ Introduction +%{{{ demo + +\vfill\eject +\begingroup \def\line#1{\hbox to \hsize{\kern-\leftmargin #1}} +\bigrm \baselineskip=52pt plus 1pt +\line{A\A\AE BCD\DH E\E FG\hfil.,:;`',,``''} +\line{HIJKL\L MN\NG O\O\OE\hfil?`!`!?} +\line{PQRST\TH UV\hfil a\a\ae bcd\dh\vd} +\line{WXYZ\hfil e\e f\/ff\/fi\/fl\/ffi\/fflgh\h i\i} +\line{-\/-->>\hfil j\j kl\l\vl mn\ng o\o\oe pqrs\ss} +\line{\copyright\registered\hfil <<--- t\vt\th uvwxy\&z} +\line{\rbrace\rbrack\char41 \rangle\hfil + >\degrees\char42 \trademark\Box \careof \char152\char153 + \char155 < + \hfil \langle\char40 \lbrack\lbrace} +\line{\spaceskip=0pt plus 1fil + \dag\ \ddag\ \P{}\ \S{}\ @\ \#\ \$\ \%\ \&\ \cents\ \pounds\ + \currency\ \permille\ \yen\ \florin} +\line{123456\hfil\cdot/+=\times\char175\bullet\hfil\uppercase{1234}} +\line{7890 \hfil\uppercase{567890}} + +\vskip-\prevdepth +\nointerlineskip +\vbox to 0pt +{ + \vss + \centerline{\headingrm 48-pt Malvern 55} +} + +\headline={\hfil} + +\eject +\endgroup + +%}}} demo.tex + +\part{Introduction} + +\iflong +%{{{ about TeX and LaTeX + +\section{About \TeX\ and \LaTeX} + +\subsec{How to pronounce `\TeX'} + + The "X" in "\TeX" is intended to stand for a Greek letter chi + ({\gr Qq}), which is like the "ch" in Scottish "loch" or German + "ach", and is usually pronounced `k' by people whose languages + do not include that sound. Therefore `\TeX' should be + pronounced either `te"ch"' or simply `teck'. It is *not* + pronounced `tecks'. + + Moreover, the lowering of the "E" in "\TeX" is intended to + remind us that it stands for epsilon ({\gr Ee}). When it is not + possible to print the "E" lowered, \TeX\ should be referred to + as `TeX' (but not `Tex' or `TEX'). + + ^^{Lamport, Leslie} Lamport suggests that "\LaTeX" might be + pronounced `lay-\TeX', `lah-\TeX', or even `lay-teks'! On + systems without the capability to exactly reproduce his logo you + might try `L\kern-0.2em\raise 0.5ex\hbox{a}\TeX', `La\TeX', or + `LaTeX'. + +\subsec{\TeX} + + \TeX\ is a powerful and flexible typestting program. It was + devised by ^^{Knuth, Donald E.} Donald~E.\ Knuth with the + intention of producing with a computer typeset text (including + mathematics and complex tables) as good as that of a + professionally-produced book. \TeX\ goes to extraordinary + lengths to produce optimal line-breaks and correctly aligned and + spaced mathematics, in a way in which no DTP program currently + does. Because \TeX\ is a free program---that is, anyone can get + a copy of the |WEB| code and create a version that runs on their + computer---and uses plain text files, it is very widely used for + producing documents and exchanging them between different + computer systems, especially those containing a lot of + mathematical notation. + + Knuth describes \TeX\ in {\it The \TeX book}~\cite{TeXbook}. + While this manual lacks the three-level section numbering that + computer users are accustomed to, it does describe everything + there is to know about \TeX, from writing simple manuscripts to + designing macros and producing new formats. + + \TeX\ was designed to be used on a variety of different systems, + at a time when the pictorial user-interfaces popular today were + still rare. Therefore \TeX\ is entirely text-based: the user + feeds \TeX\ a manuscript with typesetting commands embedded in + it, produced with a normal text editor. \TeX\ operates in a + manner similar to a compiler, converting the textual + representation of the document into a compact format called DVI + (from `device-independent'), analogous to machine code. The + file of DVI information is printed using a separate + printer-driver program. + +\subsec{\LaTeX} + + \LaTeX\ is a front-end to \TeX, written in \TeX's own macro + language. It is often used in an attempt to evade the full + complexity of operating with \TeX. Strictly speaking, \LaTeX\ + is a \TeX\ \dfn{format}, that is, a package of \TeX\ macros + compiled into a compact form. + + As the first macro package to offer facilities for automated + sectioning, bibliography, and table-of-contents generation, + \LaTeX\ has become a very popular way of producing technical + documents. + + The standard introduction to \LaTeX\ is {\it\LaTeX: A Document + Preparation System}~\cite{LaTeX} by the designer of \LaTeX, + ^^{Lamport, Leslie} Leslie Lamport. This book includes a + summary of the \LaTeX\ macros, but stops short of describing how + to go about augmenting \LaTeX's facilities with new styles and + style options. + + At the time of writing, two new versions of \LaTeX\ are under + development. \LaTeX\vn3 will be a complete rewrite; in the + meantime, \LaTeXe\ will be released as a new standard \LaTeX. + +\subsec{Fonts for \TeX} + + The fonts used with \TeX\ documents are described in two parts. + The first part, the font metrics (called the TFM file), is used + by \TeX\ itself when generating the DVI file. The second + describes how the characters are drawn by the printer; it is in + a format that depends on the particular font, driver and + printer. Common formats for the second part of a font + description are GF (`generic fonts' produced by \MF), PK + (produced from GF files and used by many printer drivers), VF + (composite fonts, that is, fonts formed by combining several + other fonts), and \PS\ types~$1$ or $3$ (used on \PS\ printers). + + + Normally, computer fonts are created from designs drawn on paper + at a large size (a cap-height of $100\,\rm mm$, say) and then + the outlines of the letters are scanned in by locating points + along the curves with a probe (or by scanning the shapes and + having a program calculate the outlines from the resulting + bitmaps). Normally by the time the font is being scanned, all + the design decisions have been taken and the role of the + computer operators is merely to produce a faithful rendering in + the correct format. + + \MF\ is a program which converts outlines to bitmaps and creates + GF files (which contain a bitmap for each glyph). The outlines + are described using \MF's own programming language, with a + \dfn{character program} for each letter. Traditionally \MF\ + font design delays some aesthetic decisions until well into the + programming stage---in Knuth's example ("\MF\/book", Ch.~$5$), + sixteen trial letters "I" are generated with different stem + widths so that they can be compared against a sample letter "O". + + \MF\ programs can be arbitrarily complex (although the peverse + nature of the \MF\ language ensures that any attempt to be too + clever is severely punished). A given program can be used to + generate different fonts---light and boldface, for example. + Because \MF\ programs know what device the font is being + generated for, they can include code intended to make the font + digitize well (that is, ensure that the bitmaps resemble the + original intention of the designer even on low-resolution + devices). The practical upshot of this is that the facilities + of the latest fancy formats for other systems (`multiple + masters', `intelligent scaling', `hints') were available in \MF\ + systems years ago, but the programming skill required to use + them prevented them from being widely used. + +%}}} about TeX and LaTeX +\fi +%{{{ Nomenclature + +\section{Conventions used in this handbook} + + A distinctive font will be used for examples of literal text + such as commands to the computer and the contents and names of + text files: +\begin example + |ABCDEFGHIJKLMNOPQRSTUVWXYZ| + |abcdefghijklmnopqrstuvwxyz| + |0123456789"#$%&@*+-=,.;:?!| + |()<>[]{}`'\||/_^~| +\end example + Italic letters are used for the names of some \MF\ variables, + for metasyntactic variables, for words mentioned in sentences + (such as the word "word" here), and for the titles of books and + so on. + + Boldface is sometimes used for \MF\ `sparks'. A bold italic + face is used for the first occurence of technical terms. + +\subsec{Citations and references} + + Numbers appearing in square brackets (for example, [$1$]) refer + the reader to other sources for more information; they are + listed in \xref{bib}. + +\subsec{Syntax descriptions} + + Occasional syntax descriptions will be given in the usual + ^^{Backus--Naur formalism}^{extended Backus--Naur Formalism} + (extended BNF, or EBNF): in other words, an extension of the + notation described at the start of Chapter~$24$ of the {\it\TeX + book} \cite{TeXbook}, `Summary of Vertical Mode'. Syntactic + entities are written with angle brackets, thusly: \langle{\it + dimen\/}\rangle. The arrow `{\rmb\char1}' is read as `is + defined as', and the vertical bar `{\rmb\char124}' as `or'. + Literal text is enclosed in quotation marks. + + Square brackets on the RHS of the arrow enclose optional text. +\iflong + As an example, take this definition from Chapter~$24$: +\begin bnf + \<unit of measure> \> \<optional spaces> \<internal unit> + \\~\<optional {\tt true}> \<physical unit>. + + \<optional {\tt true}> \> |true| \\ \<empty>. + + \<optional spaces> \> \<empty> \hfil\break + \\ \<space token> \<optional spaces>. +\end bnf + Using brackets the first two rules can be replaced by just one: +\begin bnf + \<unit of measure> \> \<optional spaces> \<internal unit> + \hfil\break + \\~[ |true| ] \<physical unit>. +\end bnf +\fi + Braces enclose text that may repeated, or rather text which may + appear any number of times including zero. +\iflong + For example, + \<optional spaces> can be defined as: +\begin bnf + \<optional spaces> \> \{ \<space token> \}. +\end bnf + Or we could rewrite the whole of the above definition of \<unit + of measure> as follows: +\begin bnf + \<unit of measure> \> \{ \<space token> \} \<internal unit> + \hfil\break + \\~[ |true| ] \<physical unit>. +\end bnf +\fi + There is no conflict with the use of brace tokens in the + {\it\TeX book}\/: all such tokens will be written in quotation + marks in syntax rules (`|{|' and `|}|' rather then \lbrace\ and + \rbrace), and besides, I~will not be referring to brace tokens. + +\iflong +\subsec{Typefaces, founts and fonts} + + In traditional English usage, a \dfn{typeface} (or \dfn{face}) + is the design of a set of letters, figures and symbols at any + size: an abstract concept. A \dfn{fount} is an implementation + of a typeface at a particular size; normally this refers to a + phyiscal object, such as a set of punches or a phototypesetter + film strip. By analogy with "program", I will use "font" for an + analagous computer resource, whether it describes a typeface at + any size (as a \PS\ scalable font does) or at a particular + design size (as \TeX\ fonts do). + +\subsec{Italic, slanted, oblique, latin, roman and upright} + + The term \dfn{italic} used to refer to a cursive variation of a + typeface. In phototypesetting days, sanserif faces with no + italic could have an obliqued form produced using prisms. + Generally \dfn{slanted} was used to mean either italic (if + available) or obliqued. Nowadays almost all faces are supplied + with a slanted form; for sanserif fonts these are inconsistently + referred to as "italic" or "oblique". So far as I~know, + Computer Modern is the only type family to include three + different slanted alphabets---italic, obliqued and so-called + `math italic'. + + The word "roman" is used to mean ordinary upright letters, as + distinct from italic or bold and the like. I~shall generally + distinguish between this use of "roman" and the use of "latin" + to refer to the alphabets derived from the alphabet devised for + writing the Latin language in classical times, as compared with + the Greek and Cyrillic alphabets, for example. + +\iffalse +\subsec{Families and super-families} + + A family is a collection of typefaces, intended to be compatible + with each other. For example, the ITC Avant-Garde Gothic family + has members such as ITC Avant-Garde Gothic Demi and ITC + Avant-Garde Gothic Light Oblique, and Univers has family members + (also called variants) like Univers~$55$ and Univers~$48$. + + Most families consist of a few different weights of italic and + upright faces. There are a few `super-families', such as ITC + Stone, Lucida and Computer Modern, which contain many different + variants such as sanserif, typewriter, informal. ITC Stone + Sans, ITC Stone Serif and ITC Stone Informal may be viewed as + three separate families that were designed together + (collectively a `super-family'); or, ITC Stone can be viewed as + is a family with Sans Semibold Italic, Informal Italic and so on + as faces within it. + + I~personally prefer the `splitter' approach; it keeps the number + of names of font variants a document manager needs to know about + relatively small, and does not greatly increase the number of + family names, because there are very few super-families compared + with the enormous number of normal-sized families. It also + makes the design of menu-based font-selectors more + straightforward. (The names Adobe uses for its fonts indicate + that they are `splitters' too.) Unfortunately, \LaTeX\ was + designed on the implicit assumption that `sans serif', `slanted' + and `caps and small caps' are variants present in *any* family. + + Super-families are an intuitively pleasant concept for + classifying fonts, but they are not relevant to any + document-processing program I~can think of off the top of my + head. That is, given document~$A$ with ITC Stone Serif and Sans + and document~$B$ with Palatino and Univers, there's nothing + useful that a computer can do with the information that $A$ + takes all its faces from one super-family and $B$ does not. + +\fi % end of iffalse +\fi % end if iflong + +\subsec{Composite letters} + + I will use the phrase \dfn{composite letter} to refer to letters + which, regardless of their meaning in their respective + languages, are *written* (not necessarily typeset) as one of the + letters {\it A}--{\it Z} (called a \dfn{base glyph}) with that + addition of some sort \dfn{mark}. Thus composite letters + include German umlauts ({\it\"a}, {\it\"o}, {\it\"u}), accented + letters in languages like Spanish ({\it\'a}, {\it\'e}, etc.), + and special letters like {\it\aa}, {\it\"a} and {\it\"o} in + Scandinavian languages. + + As well as marks that go above letters, there are some that go + below ({\it\c c}, {\it\a}) and through letters ({\it\l}, + {\it\o}). Normally it will be useful to distinguish between + composite letters with the mark above them and the latter two + categories. For example, "\A" is the same height as the letter + "A", but if the letter "\AA" is to have the same height as "A" + then the base glyph must be shrunk slightly. + +\subsec{Hyphens and dashes} + + To prevent confusion, I~shall use the word "dash" to refer only + to the en- and em-dash symbols (`--' and `---'), and I~will use + the word "hyphen" for hyphens (`-'). +\iflong + Hyphens (produced with + one ASCII minus sign) are used in English for joining words + ("ear-ring", "get-at-able"), to disambiguate a few odd compounds + ("re-cover", "co-operate"), and when dividing words at the ends + of lines. Short (en) dashes (|--|) are used in joining pairs + where there is movement or tension between them ("London--Oxford + route", "\n{1980}--\n{85}"). Long (em) dashes (|---|) are used + in a similar way to parentheses or a colon. +\fi + +\subsec{Sundry quotation marks} + + In English printing, the ^{quotation marks} are an ^{apostrophe} + (') and an ^{inverted comma}---with hot metal typesetting this + was a literally a ^{comma} that had been put in place + upside-down. In German, a rather more sensible arrangement is + used where two commas start quotations, and two inverted commas + close them: ,,so``. To prevent confusion, I~shall consistently + refer to the character `\,`\,' as an inverted comma rather than + `^{left quote}', because it is not always a *left* quotation mark: +\begin display + , & comma & ,, & double comma\cr + ` & inverted comma & `` & double inverted comma\cr + ' & apostrophe & '' & double apostrophe\cr +\end display + There is some potential for confusion with regards to the ASCII + characters `|`|'and `|'|', used by \TeX\ to stand for an + inverted comma and apostrophe respectively. ASCII was designed + with typewriter-like devices in mind, and |'| was intended as a + combined neutral single quotation mark, acute accent and + apostrophe, which is not quite the same as \TeX's use for it. + Traditional UNIX names for these two characters are \dfn{quote} + and \dfn{backquote}. + + When I~am referring to French ^{guillemets}, I~shall use `left + guillemet' to refer to the one that points to the left (<<). In + French and many other languages, this is used as an opening + quotation mark <<\,thus\,>>; in German it is sometimes used as a + closing quotation mark >>so<<. + +\subsec{How to refer to Malvern fonts} + + The name `Malvern' is spelled as a normal proper noun (no fancy + typography is necessary). In English it is pronounced with the + accent on the first syllable, with the "a" pronounced as in + either "pal" or "pall" (natives of the town it is named after + say `*mawl*-v{\rmb\char116 }n', I~tend to pronounce it + `*mal*-v{\rmb\char116 }n'). In other languages it may as well + be pronounced and declined according to the orthography of the + language. + + When describing a particular version of Malvern, convention + favours an unbreakable space between name and number: + Malvern~$1.1$ is `|Malvern~1.1|' (like Henry~VIII, Occam~$2$, + Fortran~$9$X). The same applies to naming members of the + Malvern font family (Malvern~$55$, Malvern~$76$) and Malvern + font encoding family (Malvern~A, Malvern~B). In the latter case + the letters need not be italicized. + +%}}} Nomenclature +%{{{ Numeric style suffixes + +\section{Malvern's font names} + +%{{{ Univers + +\subsec{Numeric style codes} + + The first font family designed as a unit was ^{Univers}. The + designer, Adrien Frutiger\index{Frutiger, Adrien}, introduced + two-figure codes to describe the different variations, instead + of a names like `bold italic' and `light condensed'. For + example, the `roman' face is called Univers~$55$, italic + Univers~$56$, boldface Univers~$75$ and lightweight condensed + italic Univers~$38$. Frutiger has used his system in all his + subsequent font families. ^{Malvern} and other new fonts I~make + use a similar system. + +%}}} univers +%{{{ Malvern suffixes + +\subsec{The style codes used with Malvern} + +\xreflabel{s-stylecodes}{\S\thesecno} + Just as with Frutiger's system, the first digit gives the weight + of the font and the second digit gives the width (in the sense + of `{\cp compressed}' vs.\ `{\xp expanded}'), as in the + following table: +\begin table \strut$#$\hfil\quad&#\hfil\qquad&$#$\hfil\quad&#\hfil\cr + & \it first digit & & \it second digit\cr + \noalign{\smallskip}% + 1 & ultra-light (hairline) & 1, 2 & extra expanded \cr + 2 & extra-light (thin) \cr + 3 & light & 3, 4 & expanded/extended \cr + 4 & book (semi-light) \cr + 5 & medium & 5, 6 & normal width \cr + 6 & demi (semi-bold) \cr + 7 & bold & 7, 8 & condensed/compressed \cr + 8 & extra-bold \cr + 9 & ultra-bold & 9, 0 & extra compressed \cr +%%%% 0 & black \cr +\end table + The second digit is even for a slanted face, odd for an + upright face---so that the italic version of Malvern~$55$ is + $56$, and of $19$ is~$10$. + + This in theory gives $90$ styles. The middle odd-numbered + weights ($3$, $5$, and $7$) are expected to be the more commonly + used ones. Similarly, the three middle widths are expected to + be used more often than $1$ and~$9$. The practical upshot of + this is (a)~they are more likely to be available as \mc{PK} + files and (b)~they are more likely to have had their \MF\ + programs tested and debugged. + + This system of names only allows one slanted form and cannot + distinguish `compressed' from `condensed'. Normally this + fine---before Knuth's Computer Modern came along, it was only + heretics with \PS\ or phototypesetters without italics available + who would resort to obliqued fonts. The \MF\ programs that + describe Malvern have the capacity to produce `vertical italic' + and obliqued forms, but these are not part of the standard + Malvern pantheon. They are *not* intended to be used in normal + bookwork. +%}}} Malvern suffixes +%{{{ TeX fonts names + +\subsec{\TeX\ font names} + +\xreflabel{s-font-names}{\S\thesecno} + The question now is how to represent these fonts using + reasonably portable \TeX\ font names. Recall that only + lowercase letters and digits can be used, and that names must be + limited to a length that even stupid filesystems like ^{MS-DOS} + can handle. + + I~have my own system of external font names of the following + form: +\begin bnf + ^\<font name> \> \<family> \<style> \<encoding> \<size>. + + \<family> \> \{ \<letter> \\ \<digit> \} \<letter>. + + \<style> \> \<digit> \<digit>. + + \<encoding> \> \<letter> [ \<letter> ]. +\end bnf + Where a \<size> is the design size in points, possibly including + `|p|' as a decimal point, or `|m|' to indicate millimetres: +\begin bnf + ^\<size> \> \<points> \\ \<millimetres>. + + \<points> \> \<digits> [ |p| \<digits> ]. + + \<millimetres> \> \<digits> |m| [ \<digits> ]. + + \<digits> \> \<digit> \{ \<digit> \}. +\end bnf + In the case of Malvern, the \<family> is |ma|. The \<encoding> + describes the subset of all the Malvern characters that this + font contains---for example |s| is the \TeX\ Text character set. + + Thus $10$-pt Malvern~$55$ with \TeX\ Text encoding is + given the name |ma55s10|, which fits nicely into the eight + characters allowed by ^{MS-DOS} filenames. More eccentric + sizes, like $7\cdot2\pt$ have names like |ma55s7p2| (eight + characters) or |ma55s12p5| (nine characters). + + Here's a partial list of encoding codes: +\begin display + \tt a& Malvern A (latin), see \xref{tab-charcodes-a}\cr + \tt b& Malvern B (supplement), see \xref{tab-charcodes-b}\cr + \tt c& Malvern C (Cyrillic), see \xref{tab-charcodes-c}\cr + \tt g& Malvern G (Greek), see \xref{tab-charcodes-g}\cr + \tt s& \TeX\ Text \cite{TeXF1}\cr + \tt az& \TeX\ Text with old-style numerals\cr + \tt aa& \TeX\ Text with small capitals replacing lower case letters\cr + \tt ab& \TeX\ Text with old-style numerals and small capitals\cr + \tt ar& \TeX\ Extended Text---Latin (Cork) \cite{Cork}\cr + \tt as& Cork with old-style numerals\cr + \tt at& Cork with small capitals\cr + \tt au& Cork with old-style numerals and small capitals\cr +\end display + \xreflabel{tab-encoding-codes}{\S\thesecno} + +%}}} TeX fonts names +%{{{ Berry's scheme + +\subsec{Naming Malvern fonts in Karl Berry's system} + + Karl Berry has described a system for naming fonts newly + introduced to the `\TeX\ world' \lcite{\\{Berry}\\{Berry2}}. A + subset of the Karl Berry's syntax for font names is as follows: +\begin bnf + \<font name> \> |fmv| \<style> \<size>. + + \<style> \> \<weight> \<variant> \{ \<variant> \} [ |r| \\ \<width> ] + \hfil\break \\ \<weight> |r| \<width> + \hfil\break \\ \<weight>. + + \<weight> \> |t| \\ |i| \\ |l| \\ |k| \\ |m| \\ |d| \\ |b| \\ + |x| \\ |u| \\ |c|. + + \<variant> \> |i| \\ |9| \\ |o| \\ |u| \\ |q| \\ |c|. + + \<width> \> |x| \\ |c|. + + \<size> \> \<digit> [ \<digit> ]. +\end bnf + This definition is incomplete, because the rules governing the + order of variant letters and when variant and width letters may + be omitted are complicated\iffalse: +\begin bullets +\\ + If \<variant> letters are present, arrange them in alphabetical + order. +\\ + If there is a \<variant>, and there is no \<width>, and the + last \<variant> is a digit or a valid \<width>, then the + trailing |r| must be present. Otherwise it must be omitted. +\end bullets +\else.\fi + + The \<weight> letters listed above correspond to the first + digit's values of $1$, \dots, $9$, $0$. A \<variant> of |i|, + |o| or |u| indicates a slanted, obliqued or `upright italic' + style instead of upright; |9| is old-style digits; |c| is caps + \& small caps; |q| is the Cork encoding (instead of the \TeX\ + Text encoding). Fonts with |c| or |q| variants have to be + created as virtual fonts, using Alan Jeffrey's ^|fontinst| + package (\xref{s-fontinst}). Fonts using \TeX\ Text encoding + may be generated directly with \MF. + + This gives names like `|fmvm12|' for $12$-point Malvern~$55$, + `|fmvdic18|' for Malvern~$68$. Malvern~\n{55} with old-style + numerals would be |fmvm9r10|. On the other hand, Malvern~\n{68} + with old-style numerals would be `|fmvd9ic10|'---nine + characters---and we haven't even specified a base encoding yet. + +\ifkbnames\else +\begin notepar + As of October~\n{1994}, the font names standard does not allow + for combinations for more than two variants (where `variants' + includes encodings and font shape) without breaking the + \n8-character limit imposed by stupid filesystems like MS-DOS + and ISO~\n{9960}. The only temporary solution I~can offer is to + extend the nonstandard `\/{\tt ma}\/-' naming scheme to include + encoding codes for the fonts used by plain \LaTeX, NFSS and + NFSS\vn2. Therefore `\/{\tt fmv}\/-' names are not used at + present. +\end notepar +\fi + +\xreflabel{s-kb-names}{\S\thesecno} + +%}}} Berry's scheme +%}}} +%}}} Introduction +%{{{ Using Malvern + +\part{Using Malvern in \TeX\ documents} +%{{{ LaTeX 2e +\section{Using Malvern with \LaTeXe\ or NFSS\vn2} + +\index{LaTeX2e@\LaTeXe|+} +\index{NFSS\vn2|+} + +\subsec{Background to \LaTeXe} + + The release of the so-called New Font Selection Scheme (^{NFSS}) + has left the \LaTeX\ world in a slightly confused state, with + neither plain \LaTeX\ nor \LaTeX\ augmented with NFSS considered + `standard' anymore. This is partly because \LaTeX+NFSS is not + quite compatible with plain \LaTeX, so older documents might + have to be edited to suit the new system. + + \LaTeX\ version \n3 is intended to put an end to this confusion, + but it will be some time before ^^{LaTeX3@\LaTeX\vn3} \LaTeX\vn3 + is generally available. In the meantime a new, `standard' + version has been released, called \LaTeXe. \LaTeXe\ is + backwards-compatible with \LaTeX-\n{2.09} documents, using a new + syntax to access the newer features. + +\subsec{NFSS\vn2} + + \LaTeXe\ includes a new FSS called NFSS\vn2 which uses font + family definition ({\tt fd}) files to tell it how to obtain + fonts in a given font family and encoding family. For example, + a file describing Cork-encoded Malvern is called `^|T1fmv.fd|': + "T\n1" is the NFSS\vn2 code for the Cork encoding, and "fmv" is + Karl Berry's code for Malvern. Once such an {\tt fd} file is + installed, to use Malvern fonts in a document you would use + something like the following: +\begin display + |\fontencoding{T1}|\cr + |\fontfamily{fmv}|\cr + |\selectfont|\cr +\end display + This might go in a document preamble, but normally such changes + to the overall look of a document belong in a package. + +\subsec{Malvern in NFSS\vn2} + + The Malvern includes a sample set of {\tt tfm}, driver, {\tt vf} + and {\tt fd} files so that Malvern should be usable with + \LaTeXe\ or NFSS\vn2 without very much effort, both with the + \TeX\ Text and Cork encodings (OT$1$ and T$1$). This assumes + that +\begin bullets + \\ {\tt dvi} previewers and printer drivers that understand virtual + fonts are available; + \\ printer fonts (such as {\tt pk} files) will be generated + automatically when needed (for example, by invoking a + ^|MakeTeXPK| script on UNIX-\TeX\ systems). +\end bullets + These files were generated with ^^{Jeffrey, Alan} Alan Jeffrey's + ^|fontinst| package (see \xref{s-fontinst}). They do not + include support for italic caps-and-small-caps because there is + at present no font-shape name for this combination. + +\index{LaTeX2e@\LaTeXe|-} +\index{NFSS\vn2|-} + +%}}} LaTeX 2e +%{{{ LaTeX/NFSS + +\section{Using Malvern with \LaTeX~\n{2.09}} + +\index{LaTeX2.09@\LaTeX~\n{2.09}|+} + + In \LaTeX, It is possible to use a font or two in an + ad-hoc fashion using the ^|\newfont| command: +\begin display + |\newfont{twlgr}{ma55g12}|\cr + |\newcommand{\textgreek}[1]{{\twlgr#1}}|\cr +\end display + Then `|\textgreek{alfa}|' generates `{\gr alfa}'. The problem + here is that fonts loaded this way do not change size + automatically when commands like ^|\footnotesize| or ^|\large| + are used; as a result they will not work properly in footnotes + or section headings. They also will not work in maths mode. + +\subsec{Using NFSS} + + The so-called New Font Selection Scheme (^{NFSS}) is an + extension of \LaTeX~\n{2.09} to make it easier to switch between + fonts \cite{NFSS}. The \LaTeX\ system I have access to does not + use NFSS, so I~can not test NFSS code and I~do not know how much + documentation on adding new fonts is supplied with the package. + I have included \index{Rahtz, Sebastian P.~Q.} Sebastian Rahtz's + ^|malvern.sty| \cite{nfss-malvern}, and also style files named + ^|fmvnfss.sty| and ^|fmv9nfss.sty|\note{"Fmv" is Karl Berry's + code for Malvern, and "nfss" distinguishes it from the plain + \LaTeX\ version and any \LaTeXe\ version. The digit `$9$' is + the Berry code for old style figures.} which are modelled on + |malvern.sty|, but which use the fonts included in the Malvern + distribution. They do not have support for the ^|\sc| + declaration. + +\subsec{Making fonts change size without NFSS} + + To make fonts that change size properly requires a style file + that reprograms plain \LaTeX's size-changing commands (I~shall + refer to \LaTeX\ version~\n{2.09} without NFSS as `plain + \LaTeX~\n{2.09}', and to \LaTeX~\n{2.09} with NFSS as + \LaTeX~\n{2.09} + NFSS'). To do this requires some knowledge of + the way plain \LaTeX's size-changing and font-changing commands + work \cite{lfonts}. + + The ^{size-changing commands} like |\normalsize| and + |\footnotesize| work by calling internal commands |\|"size"|pt| + and |\@|"size"|pt|, where "size" is the type size in points, + expressed as roman numerals. For example, in a $10$-pt + document, |\normalsize| invokes |\xpt| and |\@xpt| in order. + The |\@|"size"|pt| macros are initially defined to expand to + nothing. The |\|"size"|pt| macros link font nicknames |\rm|, + |\it| etc.\ with real fonts like |\tenrm| or invocations of + |\@getfont|\index{getfont@{\tt\char92\char64 getfont}}. The + macro |\@getfont| allows some fonts to be loaded on demand + rather than preloaded when \LaTeX\ starts up (saving some memory + when they are not used). When expanded, |\@getfont| appends + assignments to |\@|"size"|pt| that override the definition in + |\|"size"|pt|. The practical upshot of this is that |\@getfont| + is only invoked the first time the font is referred to; + subsequent uses of that font use the assignment added to + |\@|"size"|pt|. + + There are two ways to add new fonts to add new fonts to \LaTeX's + lists. The quick kludge is to let |\@getfont| do the work. For + example, the following code might go in a {\tt sty} file: +\ifkbnames +\begin lines + |\@getfont{\prm}{0}{\@xpt}{fmvr10}| + |\@getfont{\prm}{0}{\@xipt}{fmvr11}| + |\@getfont{\prm}{0}{\@xiipt}{fmvr12}| +\smallskip + |\@normalsize| +\end lines +\else +\begin lines + |\@getfont{\prm}{0}{\@xpt}{ma55s10}| + |\@getfont{\prm}{0}{\@xipt}{ma55s11}| + |\@getfont{\prm}{0}{\@xiipt}{ma55s12}| +\smallskip + |\@normalsize| +\end lines +\fi + This loads the fonts and adds assignments to the |\@|-commands + so that they are used in $10$, $11$ and $12$-pt text. It also + has unwanted side-effects like changing the size and current + font, which are cancelled out by the + ^^{normalsize@{\tt\char92\char64 normalsize}} |\@normalsize| at + the end. + + A solution that is more efficient if more than a handful of + fonts are being changed is to make a copy of |lfonts.tex| and + edit it to load Malvern fonts instead of Computer Modern fonts. + This approach allows the new fonts to be demand-loaded using + ^^{getfont@{\tt\char92\char64 getfont}} |\@getfont| and so on. + This is used two sample style files included in the + distribution, ^|fmvpltx.sty| and ^|fmv9pltx.sty|.\note{"Fmv" is + the code for Malvern in Karl Berry's system, and "pltx" short + for `plain \LaTeX'.} They do not include support for the + caps-and-small-caps declaration ^|\sc|. + +\subsec{Which fonts to use with \LaTeX\ \n{2.09}} + + In the ^{Malvern~\n{1.0}} documentation I~suggested that Malvern + fonts with the standardized font names + \lcite{\\{Berry}\\{Berry2}} and Cork encoding \cite{Cork} be + used with \LaTeX, on the grounds that the Cork encoding is due + to become the standard for \LaTeX. Since then the situation has + changed a little. The introduction of NFSS\vn2 means that + future versions of \LaTeX\ will not be tied down to just one + encoding scheme after all. Also, new versions of the + font-naming scheme include encoding codes amongst the variant + letters, implying that the default is the standard \TeX\ Text + encoding. + + It follows that the standard names (starting `{\tt fmv}-') + should be used with the standard `\TeX\ Text' encoding when + using Malvern fonts with \LaTeX~\n{2.09}, whether with NFSS or + not. This way the macros that work with the old encoding (such + as |\ae|, |\'|, and the like) will not need to be changed. + NFSS~\n2 will take care of redefining these macros when + appropriate. + +\ifkbnames\else +\begin notepar + As of October~\n{1994}, the font names standard does not allow + for combinations for more than two variants (where `variants' + includes encodings and font shape) without breaking the + \n8-character limit imposed by stupid filesystems like MS-DOS + and ISO~\n{9960}. The only temporary solution I~can offer is to + extend the nonstandard `\/{\tt ma}\/-' naming scheme to include + encoding codes for the fonts used by plain \LaTeX, NFSS and + NFSS\vn2. Therefore `\/{\tt fmv}\/-' names are not used at + present. +\end notepar +\fi + +\xreflabel{s-LaTeX-fnames}{\S\thesecno} + +\ifkbnames + Malvern \n{75} is intended as the boldface counterpart to + Malvern~\n{55}, so the font used for \n{10}-pt |\bf| should be + |fmvb10| rather than |fmvbrx10|. +\fi + +\index{LaTeX2.09@\LaTeX~\n{2.09}|-} +%}}} LaTeX/NFSS +%{{{ plain TeX -- maamac.tex +\section{Using Malvern with plain \TeX: {\tt maamac.tex}} + +\xreflabel{s-maamac}{\S\thesecno} + This ^^{maamac.tex@{\tt maamac.tex}|+} section describes a file + ^|maamac.tex| of definitions to customize \TeX\ to work with the + Malvern~A conventions. It covers roughly the same territory as + Chapter~\n9 of the "\TeX book" \cite{TeXbook}, and assumes you + have already have macros in place to load Malvern fonts with the + Malvern~A encoding \lcite{\\{TeXB4}\\{TeXE}}. At a minimum: +\begin example + |\input maamac| + |\font rm=ma55a10 \rm| +\end example + +\begin notepar + The file |maamac.tex| (`*Ma*lvern *A* *mac*ros') was formerly + called simply ^|malvern.tex|. The new name is intended to be + less ambiguous, while still acceptable to file systems with + short file names. +\end notepar + +\subsec{Ligatures} + + The letter ligatures "ff", "fi", "fl", "ffi", "ffl" and + punctuation ligatures `--', `---', `!`', `?`', + `\thinspace``\thinspace' and `\thinspace''\thinspace' work as in + Computer Modern. In addition, |fj| produces "fj" and |<<| and + |>>| produce the guillemets `<<' and `>>'. Note that you must + use `|''|' to stand for a double-apostrophe---with Computer + Modern, some people use `|"|', which will not work. + +\subsec{Special letters} + In addition to the special letters "\oe", "\ae", "\aa", "\o", + "\l", "\ss", "\i" and "\j" there are: +\begin display + |\A|&\A&|\a|&\a& Polish "a" with ogonek\cr + |\E|&\E&|\e|&\e& Polish "e" with ogonek\cr + |\TH|&\TH&|\th|&\th& Icelandic thorn\cr + |\DH|&\DH&|\dh|&\dh& Icelandic eth\cr + |\NG|&\NG&|\ng|&\ng& Lappish eng\cr + |\vd|&\vd&|\vt|&\vt& alternatives to "\v d", "\v t"\cr + |\vl|&\vl&|\h|&\h& alternatives to "\v l", "\^h"\cr +\end display + The commands producing composite letters (|\'e| for "\'e", + etc.)\ work as before, except that they use different marks on + capital letters: "\'E" instead of "\accent8 E"\iflong\space (see + \xref{s-composites} for more information)\fi. + +\subsec{Sundry symbols} + + The commands |\$|, |\#|, |\%| and |\&| produce `\$', `\#', `\%' + and `\&' as in plain \TeX\ (|\$| does not produce a pounds sign + `\pounds' in italics). + In addition, the commands |\P|, |\S|, |\dag| and |\ddag| produce + signs "\P", "\S", "\dag", "\ddag" that come from the current + font rather than the mathematical symbol font. + + There are the following additional symbols: +\begin display + ^|\pounds|& \pounds& + Pounds-sterling sign\cr + ^|\cents|& \cents& + Cents sign (alternative to "c")\cr + ^|\currency|& \currency& + Currency sign\iflong , see \cite{s-currency}\fi\cr + ^|\permille|& \permille& + Per-mille (per-thousand) sign\cr + ^|\yen|& \yen& + Japanese Yen sign\cr + ^|\florin|& \florin& + Florin sign (alternative to italic "f\/")\cr +\noalign{\smallbreak}% + ^|\times|& \times& + multiplication sign\cr + ^|\minus|& \minus& + minus sign\cr + ^|\langle|, ^|\rangle|& \langle, \rangle& + angle brackets\cr + |\{|, |\}|& \{, \}& + braces\cr + ^|\cdot|& \cdot& + raised dot (British decimal point)\cr + ^|\bullet|& \bullet& + a bullet\cr + ^|\Box|& \Box& + a ballot box\cr + ^|\degrees|& \degrees& + degrees sign\cr +\noalign{\smallbreak}% + ^|\Mc|& \Mc& + `Mac', as in \Mc{Donald}\cr + ^|\No|& \No& + `Number' or `numero'\cr + ^|\orda|& \orda& + feminine ordinal numbers\cr + ^|\ordo|& \ordo& + masculine ordinal numbers\cr + ^|\careof|& \careof& + indicates indirect address\cr + ^|\copyright|& \copyright& + international sign of copyright\cr + ^|\registered|& \registered& + registered trade mark sign\cr + ^|\trademark|& \trademark& + trade mark sign\cr +\end display + The inclusion of `\times', `\minus', `\degrees', `\cdot' makes + it possible to say `\minus17\cdot6\thinspace\degrees C' or + `50\thinspace mm \times\ 100\thinspace mm' without using maths + mode (and therefore in the current font). The symbols that are + named the same as mathematics symbols in plain \TeX\ use + |\ifmmode| so that they can use the plain \TeX\ definition in + formulas and the Malvern character in horizontal mode. + +\subsec{Old-style and ranging numerals} + + By default, ^{old style numerals} are used: 0123456789. These + are for use in non-technical text, where old style numerals are + usual when using serif fonts. To get ^{ranging numerals} + $0123456789$ use one of: +\begin display + |$0123456789$|\cr + |$\textfont0=\font 0123456789$|\cr + |\uppercase{0123456789}|\cr + |\caps{0123456789}|\cr +\end display + The switch to ranging numerals in mathematics mode reflects the + assumption that mathematics mode is mainly used in documents + with technical content (besides, old style numerals look wrong + in anything but the simplest formulas). Normally a given + document should not use both styles---which implies that if you + are using formulas then all numerals in the manuscript must be + encosed in mathematics delimiters. + +\xreflabel{s-ranging}{\S\thinspace\thesecno} + +\subsec{Small captials} + + The following macros do not work in \TeX's mouth, meaning that + they will not have the intended result when expanded in an + |\edef|, for example\iflong + \space (see \xref{s-alphabets} for more + information)\fi. +\begin display + |\sc{ABC\DH}|&\sc{ABC\DH}& + Even small capitals\cr + |\mc{ABC\DH}|&\mc{ABC\DH}& + Medium capitals\cr + |\csc{ABC\DH abc\dh}|&\csc{ABC\DH abc\dh}& + Caps and small caps\cr + |\caps{ABC\DH abc\dh}|&\caps{ABC\DH abc\dh}& + All-capitals\cr + |\lc{ABC\DH abc\dh}|&\lc{ABC\DH abc\dh}& + Lower case\cr +\end display + ^^|\csc| ^^|\sc| ^^|\mc| ^^|\caps| ^^|\lc| For example, I set my + postcode with `|\sc{OX1~3QD}|' to get `\sc{OX1~3QD}', and I can + write `\csc{PostScript}' with `|\csc{PostScript}|'. Because the + small capital alphabets are included in all styles, we can write + `|\csc{\it Fred}|' to get `\csc{\it Fred}', and even produce the + \LaTeX\ logo in italics: {\it\LaTeX}. Note that these macros + work differently from the ^|\sc| or ^|\smc| declarations in + \LaTeX\ and other formats, which switch to ^|cmcsc10|, a + separate caps-and-small-caps font. + + The last two transliterate into capitals and lower case---the + differences between these macros and the |\uppercase| and + |\lowercase| primitives are: +\begin bullets + \\ |\caps| and |\lc| (and all the others) make assignments, and so + can not be expanded in \TeX's mouth; and + \\ |\uppercase| and |\lowercase| do not affect letters like {\it\O} + and {\it\ae} when they are produced with control sequences (like + ^|\O| and ^|\ae|). +\end bullets + The practical upshot is that the primitives are useful when + implementing strange macros involving creating control sequence + names on the fly etc.\ and for introducing strange characters + into definitions, whereas to produce an all-capitals headline + (or whatever), the macros are better. + + ^^{maamac.tex@{\tt maamac.tex}|-} + +%}}} plain TeX -- maamac.tex +\iflong +\input texnical +\fi +% \input ldfontsdoc + +%}}} Unsing Malvern +\iflong +%{{{ Implementing Malvern + +\part{Implementing Malvern} + +\iffalse % This section largely superceeded by the installation summary +%{{{ organization of the files +\section{Organization of the files} + + The implementation of Malvern is split into several files. The + file |ma.mf| is the `root' file, also called the generic driver + file. This reads in |makit.mf| (a collection of macros which + describe various pieces of letters), |maparams.mf| (which sets + most of the {\it ad hoc} parameters, and |maencode.mf| (which + describes the character encoding to be used), before reading in + the program files (which contain `character programs' which + actually produce the glyphs) and producing the ligature table. + +\subsec{The generic driver file} + + The difference between my generic driver file and a driver file + like |cmbx12.mf| is that it must have certain variables given + values before it is read. At the very least the internal + \MF\ variable $designsize$ (set with the {\bf font\_size} + macro) should have a value. Other variables can be given values + to signal to the driver to produce a font other than roman (with + the \TeX\ text encoding): +\begin table $#$\hfil + & \quad\vtop{\hsize=0.75\hsize \noindent#\strut\smallskip}\hfil\cr +weight & Controls the average thickness of the strokes that make up the + letterforms. A value of $1$ means the normal weight, $1\cdot5$ + is bolder, $0\cdot75$ is lighter.\cr +hratio & Horizontal ratio: controls the average width of the characters. + The shapes of the characters will be squeezed or expanded (as if + by a |xscaled| transform) but the thickness of strokes will + remain the same. This is used to obtain compressed or expanded + fonts.\cr +slant & The transform `slanted $slant$' is catenated to + $currenttransform$, so that all the glyphs are obliqued. + Normally only non-zero if $italicness$ is defined and + nonzero.\cr +italicness & A number from $0$ to $1$, where $1$ represents an italic + font (some letters are drawn in a more flamboyant manner) and + $0$ a roman font.\cr +encoding & An integer, used to select one of a set of character + encodings for the font (see \xref{s-encoding}).\cr +\end table + If these are left unknown, then $weight$ and $hratio$ default to + $1\cdot0$ (medium, normal width), $slant$ and $italicness$ + default to $0$ (upright) and $encoding$ defaults to $0$ (the + standard \TeX\ encoding). + +\subsec{Creating a font} + + The procedure for creating Malvern fonts is not much different + from normal \MF\ fonts. Normally the \MF\ program + is run with a `first line' (after the `|**|' prompt) along the + lines of +\begin example + |\mode=...; font_size 10pt#; weight=1.4; input ma; bye| +\end example + This produces files called something like `|ma.tfm|' and + `|ma.200gf|'. These generic file names must be changed to + `|ma65s10.tfm|' and `|ma65s10.200gf|', say, and the |gf| file + might need to be converted into a different format used by the + printer driver (for example, |GFtoPK| might be used to create a + file `|ma65s10.200pk|'). + +\subsubsec{Automating this process with {\tt mff}} + + This is altogether too much bother, especially if, like me, you + must produce fonts on demand rather than installing a large + number of them once and for all. I~use a small UNIX program + |mff| which does all the above automatically: it deduces the + values for the parameters $weight$ etc.~from the font name. The + command +\begin example + |mff ma65s10| +\end example + will do all the above automagically. (The tables used to parse + the font name are described in a file |mff.rc| shipped with the + \MF\ files, and also allow the use of names in Karl + Berry's font-naming scheme, such as `|fmvd10|'.) + + The |mff| is intended to be useful for maintaining any family of + \MF\ fonts, not just Malvern\allowbreak---I~use it for all my + fonts. It should be available from the same source that + you obtained Malvern itself (the current version is $2.9$). + +\subsubsec{An alternative approach using less-generic driver files} + + It is possible to avoid having to type such long commands to + \MF, at the expense of having many more small files lying + about. The setting of parameters is performed by small driver + files along these lines: +\begin lines + |% fmvd.mf -- generic driver for demibold Malvern| +\smallskip + |weight := 1.4; % demibold| + |encoding := -200; % Cork TeX Extended Text -- Latin | + |input ma| + |bye| +\end lines + Then the command line to \MF\ is reduced to +\begin example + |\mode=localfont; font_size 10pt#; input fmvd| +\end example + (The files produced by \MF\ will now have names starting + `|fmvd.|', and will still need to be renamed.) + + This can be taken one step further, by having driver files for + every font, thus |fmvd10.mf| would contain just the line + `|font_size 10pt#; input fmvd|'. Then the basename of the |.mf| + file is the same as that which the font is to be installed as. + (This is less of an advantage than it might at first seem, + because installing a font normally requires moving it into a + different file area, and therefore a renaming operation.) + +\subsubsec{Automating the process with {\tt MFjob}} + + The program |MFjob| is part of em\TeX, a public-domain \TeX\ + distribution for IBM PS/$1$s and PS/$2$s. It has the capacity + to generate use driver files in the style of |fmvd.mf| above to + create fonts at arbitrary sizes. + +%}}} organization +\fi +%{{{ file names +\section{File names} + + \MF\ source files for Malvern have names starting with with + `|ma|' (for "Malvern"). I have tried to choose names that fit + in with MS-DOS's lamentable naming conventions. +\begin table \tt#\hfil&&\quad#\hfil\cr + ma.mf& Top-level generic driver file\cr + maaenc.mf& Malvern A encoding description\cr + mabenc.mf& Malvern B encoding description\cr + macenc.mf& Malvern C encoding description\cr + macy.mf& Malvern Cyrillic\cr + madenc.mf& Malvern D encoding description\cr + maencode.mf& Malvern encoding vectors\cr + mafigs.mf& glyph programs for numerals\cr + magenc.mf& Malvern G encoding description\cr + maglcaps.mf& glyph programs for Greco-latin capital letters\cr + magrcaps.mf& glyph programs for Greek capital letters\cr + magrlc.mf& glyph programs for Greek lower case\cr + makit.mf& macro definitions\cr + malc.mf& glyph programs for lower case\cr + malcco.mf& glyph programs for lower case Composite-Only\cr + malcnc.mf& glyph programs for lower case Non-Composite\cr + mamarks.mf& glyph programs for marks for making composites\cr + maparams.mf& computing the ad-hoc paramters\cr + mapunct.mf& glyph programs for punctuation\cr + masenc.mf& \TeX\ Text encoding description\cr + masyms.mf& glyph programs for miscellaneous symbols\cr +\end table +%}}} file names +\iffalse +%{{{ macro conventions +\section{Conventions for macros that draw letters} + + Definitions for macros that draw letters are written so that + they may be used to draw that letter in an position---for + example, so that the program for `c' may be used in drawing + `\copyright'. + + By convention the header for letter "a" looks like: +\begin display + |vardef draw_|"a"|@#(expr l, b, r, t, bl)|"other parameters"| =| +\end display + Where $(l, b)$ is the bottom left and $(r,t)$ the top right + corner of the cell in which the glyph will be drawn, and $bl$ is + the $y$-value of the baseline. All should be whole numbers. + For a normal letter, they are |(l, -d, r, h, 0)|. The "other + parameters" are parameters specific to the letter itself: for + example, giving the relative distance between certain features + within the letter. + +%}}} macros conventions +\fi + +\iflong +\input encoding +\fi +% \input multiple + +%}}} Implementing Malvern +%{{{ About Malvern + +\part{About Malvern} + +%{{{ design +\section{The design of the Malvern font} + + This section describes some of the design decisions made for + Malvern---this may not be strictly relevant to most people's use + of it. I~will start with general, overall style and then + continue to more specific details. + + My main motivation for developing Malvern was that I~was that + I~do not use \TeX\ exclusively for technical documents. + I~produce leaflets, booklets and magazines in + non-scientific fields, where the determinedly old-fashioned + appearance of Computer Modern would jar terribly. These were + the sorts of situations where the simplicity and informality of + a sanserif font would be best suited.\note{Americans seem to be + more frail than Europeans when it comes to reading sanserif + text. It is true that serif faces---particularly oldstyle and + transitional faces---are more readable in continuous text, but + the difference is not so great as to override all other design + considerations. (The United States is noted for its addiction + to Bodoni, which is neither particularly readable nor + particularly legible, and is ugly besides.) Perhaps this + handbook is rather long to be set all in sanserif; I~hope that + not too many readers will be struck blind as a result, and that + they will allow that it is reasonable for the handbook to act as + a showcase for the typeface it describes.} + +%{{{ types of sanserif +\subsec{Types of sanserif font} + + One way of sub-dividing sanserif fonts is into the four flavours + \dfn{grotesque}, \dfn{humanist}, \dfn{geometric} and + \dfn{neo-grotesque}. While these are not cut-and-dried + divisions (there are many faces with a flavour all their own), + they can be a useful approach to thinking about the design of + typefaces. + +\subsubsec{Grotesque} + + The grotesque styles were created during the Victorian period, + when poster printers out-did each other in combining as many + different typestyles as possible (one of many examples of how + the Victorians, who considered themselves the acme of civility + and good taste, exhibited terrible taste). They were so dubbed + because contemporary designers thought they were horribly ugly. + Today `grotesque' is simply a label, and has no more inherent + meaning than `modern' or `dutch' do when applied to serif + styles. Computer Modern Sans Serif is derived from Computer + Modern in the same way that grotesque fonts were derived from + the modern fonts (variations on Bodoni) of the time, so it might + be described as a grotesque. + +\subsubsec{Humanist} + + The humanist styles emerged from the calligraphy revival of the + early twentieth century. They reflected the new emphasis on + carefully-crafted letter-shapes and proportions embodied in + Edward Johnston's Foundational Hand. Gill Sans and Johnston's + Underground Font---used in all London Regional Transport---are + examples. + +\subsubsec{Geometric} + + The Bauhaus movement in $1930$s Germany gave rise to geometric + styles, in which the letter-shapes were progressively simplified + and unified, producing alphabets composed of arcs of circles and + straight lines, with many letters sharing components. + Latter-day geometric styles retain the appearance of being + constructed with ruler and compass, but incorporate subtle + shadings and distortions that allow for optical illusions and + distortions due to printing technology. ITC Avant Garde Gothic + is an example of a geometric font. + +\subsubsec{Neo-Grotesque} + + Finally, neo-grotesques are more refined descendants of the + original grotesque typefaces. Neo-grotesque designs emphasize + legibility and uniformity of design. Their function is to + deliver the text of a message to the reader in as unobtrusively + as possible---they are ideal for signs, where legibility is of + paramount importance (more important than readability, for + example). The British Rail Alphabet---used in airports and the + like as well as BR itself---and the ubiquitous Helvetica are + neo-grotesque designs. + +%}}} types of sanserif +%{{{ what flavour is Malvern? +\subsec{What flavour is Malvern?} + + When designing Malvern, I~was aiming for a mixture of geometric + and humanist features. I~have always liked the look of humanist + faces like Johnston's Underground Font. They are described as + crude, but I~think that this gives them more character than the + refined and refined neo-grotesques: Helvetica is a very + well-designed typeface, but text set in Helvetica looks boring. + I~wanted a face that was appealing to read in itself. + + At the same time I~wanted to make a typeface that was simple and + elegant, without (apparant) variation in stroke width and with + an emphasis on rounded shapes (I~particularly wanted to have a + circular `O'). Since this was my first attempt to design a + typesetter font it seemed sensible to aim for character and + simplicity rather than sophistication. + +%}}} what flavour is Malvern? +%{{{ global design features +\subsec{Global design features} + + There is one feature of Malvern that I~based on the Johnston + Underground Font, which is that the bowls and arches of letters + join the stems at a large angle, rather than curving toward a + tangent with the stem: +\begin display + \font\sf=cmss17 scaled \magstep1\sf bpnu& + \ifPS \font\sf=phvr at 18pt \sf bpnu& \fi + \headingrm bpnu \cr + \noterm CMSS\n{17}& + \ifPS \noterm Helvetica& \fi + \noterm Malvern \n{65}\cr +\end display + As well as forming a nice, uncluttered shape, this avoids having + to narrow the width of the stroke to avoid dark spots. (A + fortuitous side-effect is that these joins have a good chance of + digitizing well at low resolutions.) + + Malvern has rounded terminals---that is, the ends of the strokes\marginchar{nb} + are rounded rather than squared off. Together with the lack of + tapering at curve joins, this means that Malvern looks as if it + were drawn with a circular pen. All this makes Malvern rather + easier to implement than most typefaces would be, because \MF\ + has built-in operators to produce just such an effect. This was + not the reason for choosing to make Malvern look this way, + although it did affect my decision to make a stab at producing + Malvern rather than some other typeface. + +%}}} global design features +%{{{ currency sign + +\subsec{The ISO currency symbol} + + The symbol `\currency' is the \ISO{646} currency symbol. It + takes the place of the dollar sign in position \n{36} of the + \ISO{646} character encoding (which is the international + standard equivalent of ASCII). Thus, in theory, non-Americans + should all use \currency\ instead of \${}, and it should stand + for the local currency. (It has been used in some Scandinavian + countries at least: I~remember a book on \mc{BASIC} which had + \mc{A\currency\ = CHR\currency}($13$) instead of \mc{A\${} = + CHR\${}}($13$)). + + Most fonts I~have encountered which have a `\currency' + character\marginchar{\currency} draw it as a small circle with + the four `ears' at right angles to each other: a small, square, + symbol that floats above the baseline like a binary operator. + My design is unusual, but I~prefer it, because is is the same + approximate size as other currency symbols (and looks like it + belongs in the font). + +\xreflabel{s-currency}{\S\thesecno} + +%}}} currency sign +%{{{ odd symbols + +\subsec{Sundry oddly shaped symbols} + + With some symbols, like the the per-cent sign, I have + deliberately ignored their origins, so `\%' does not much + resemble `$0/0$' or `\frac0/0', `\S' does not look much like two + `s's stacked on top of each other, and `\pounds' does not look + much like a script letter "L". This is partly in recognition of + the fact that they have long since been used as symbols in and + of themselves, and the link to their origins is weak. + + So `\%' has similar proportions to other currency-like + signs\marginchar{\%\S{}} (\${}, \yen, \P, and the like), while + still having two generously-sized, circular rings. (My first + reaction to CM Typewriter was `How can I change that per cent + sign?') The crooked design for the section sign `\S{}' was + partly an attempt to ensure that the lines met at large angles, + to avoid blots without making it a taller character than the + dollar sign. + +%}}} odd symbols +%}}} design +%}}} About Malvern +\fi +%{{{ Appendix +\part{Appendix} + +%{{{ encoding + +\section{The encoding of Malvern fonts} + + + An \dfn{encoding} for a computer font is a mapping from a + \dfn{character code} (a nonnegative integer less than + $256$) to characters in the font. (Encodings are like the `code + pages' defined by ISO standards such as $646$ and $8859$.) + Unlike \PS, any given \TeX/\MF\ font has its encoding hard-wired + into it, because characters are always referred to by code. + + This section discusses some general aspects of \TeX\ font + encodings, and some `standard' font encodings, before describing + the Malvern font encodings. The encoding used is reflected in + the external name of the font (see \xref{s-font-names}). + +\iflong +%{{{ in put != output + +\subsec{Input and output encodings need not be the same} + +\xreflabel{s-input-output}{\S\thesecno} + For the purposes of this handbook, we shall only need to discuss + the encodings of fonts produced with \MF\ to be used to typeset + pages produced by \TeX. The encoding used to interpret the + characters used as input to \TeX\ is usually different, because + it is usually dictated by what symbols the computer keyboard has + printed on its keys and how they are displayed on the screen, + whereas the encodings of fonts referred to by \mc{DVI} files + suffer no such restriction. + + In fact, the encoding used for \TeX's output fonts need have *no + connection whatever* to the ASCII character set. This is + important, because good typesetting requires glyphs like `fi', + `\thinspace``\thinspace', `\S{}' and the like that do not exist + in the ASCII\ or \ISO{8859} characters sets (instead they have + characters like `{\rmb\char34 }' and `{\rmb\char94 }' which are + not of use in fine printing, except when simulating a computer + or typewriter). + + In practice, the (assumed) input encoding and the encoding of + latin text fonts will have a common sub-encoding, because it is + so much easier if we arrange that the code of common characters + is the same as the code of the corresponding character in \TeX's + internal encoding. Thus `A', say, has encoding $65$ in text + fonts, matching the character `|A|' in position $65$ of ASCII. + +%}}} input != output +%{{{ tex text + +\subsec{The \TeX\ Text encoding} + + The encoding used for the Computer Modern text fonts is simply + called `\TeX\ Text' \cite{MFApp.F}, which has two + variations, `\TeX\ Typewriter Text' and `\TeX\ Text without + f-ligatures' (if changing the dollar sign into a pounds-sterling + sign in \mc{CM} Text-Italic is not counted as a different + encoding). The first two of these are displayed in Appendix~F of + the {\it\TeX book}. + + Knuth stresses that other \TeX\ fonts might have different + conventions (addressed with different macros), so perhaps the + use of `\TeX' rather than `Computer Modern' in those names + should be interpreted as a historical artefact from the days + when \TeX\ and Computer Modern were almost synonymous. (Calling + them `CM Text', `CM Typewriter Text' etc.~would not have + prevented non-CM fonts from using the CM conventions, of + course.) + + The \TeX\ Text encodings were devised when many programs in the + \TeX/\MF\ system limited fonts to $128$ characters, and so it + only uses the first $128$ codes. As well as the capital and + lowercase alphabets, ranging figures and usual punctuation and + symbols, it includes the ligatures used in Englsh-language + typesetting ("fi", "ffl", etc.), marks to make composite letters + with, and the uppercase ^{Greek} letters that do not have + similar Latin letters: {\gr G}\negthinspace, {\gr D}, + \dots\thinspace, {\gr W}. + + It lacks the Polish ogonek mark (\showmark\ogonek\enspace) used + to make "\A", "\E", "\a" and "\e";\note{And Lithuanian "\ogonek + i" and "\ogonek u" \cite{Pei}?} guillemets (the quotation marks + << and >>); pounds-sterling and a few other currency-sign-like + symbols (like "\yen" and "\P{}"). + + + Malvern fonts named using \index{Berry, Karl} Karl Berry's + standard short font names (|fmv|\dots) use this encoding if no + other encoding is specified. + +\medskip + + {\rms \ntable} +\medskip +\noindent + Notes: +\smallskip +\halign +{#\hfil\quad&\hfil#&\quad\hfil#&\quad#\hfil\cr + \oct{000}--\oct{012}&\hex{00}--\hex{0A}&$0$--$10$& + non-latin Greek letters\cr + \oct{022}--\oct{030}&\hex{12}--\hex{18}&$18$--$24$& + marks for composite letters\cr + \oct{040}&\hex{20}&$32$& + slash that makes "\l" and "\L"\cr +} + +%}}} tex text +%{{{ Cork + +\subsec{The Cork encoding} + + A new proposed standard encoding is described by Michael + Ferguson \cite{Cork}. I shall refer to this as the Cork + encoding, because it was devised at the \TeX\ users conference + held in Cork in September~$1990$. I~think that it is intended to + be used as \TeX's internal encoding as well as for `standard' + text fonts.\note{\TeX\ converts documents from the local + character set to its own as the first stage of the parsing + process---normally the local character set is ASCII, the same as + \TeX, so this stage is transparent. The advantage of extending + \TeX's internal encoding to include composite letters, assuming + \TeX\ is configured properly, would be that the code for + `{\tt\accent'23 e}' on a user's keyboard would be transformed + into the code for `\'e' in the Cork encoding. The disadvantage + of using the same encoding for \TeX's internal representation of + the input file and in the DVI file is that it requires the \MF\ + fonts to match ASCII for codes $33$--$126$ (|'|, |-| and |`| are + each used in ASCII to stand for several different symbols, so + the match can't be exact). It also requires the input encoding + to include characters like `ffl', which are of little or no + utility in a computer character set. I feel it would make more + sense to have two encodings.} The Cork encoding includes a large + number of composite letters (all those of \ISO{8859/1} and + \ISO{8859/2}), so that most European languages can be typeset + without using the |\accent| primitive (Esperanto and some + European languages are not covered; and it lacks the dotted + consonants used when setting Irish in the traditional Celtic + alphabet, and dotted/underlined letters used in transliterating + Arabic). + + It also includes a duplicate hyphen, and the \dfn{compound word + mark} (cwm), an invisible character. The point of cwm is to + allow the breaking of ligatures; in a language like German where + the `fl' ligature is sometimes used but is incorrect if the `f' + ends a syllable, this would be written as |f^^Wl| (or a control + sequence expanding to this). + + The duplicate hyphen is intended as a kludge to cope with the + fact that \TeX\ will not break words containing hyphens except + at the hyphens, even if those hyphens are really part of a dash + ligature. The relevant paragraph of the article\note{`It + includes both a ``dash'' and an explicit ``hyphen char''. This + capability allows font designers the option of replacing the + ``-'' with an ``='' without losing the dash. Since the ``-'' is + no longer the hyphen char, it allows words with explicit dashes, + such as INRS-T\'el\'ecommunications[,] to be hyphenated.'} is + unclear because Ferguson uses `dash' without specifying whether + he includes hyphens as dashes. My guess is that the hyphen and + its duplicate are expected to both look the same, and that they + intend that \TeX\ normally be set up to hyphenate with character + $45$ as usual. People who want to treat hyphens as a normal + letter character will set |\hyphenchar| to the duplicate hyphen. + + A discouraging point in the article is that the inclusion of the + typewriter-style ugly quotation mark character is described as a + desirable feature of the proposed standard: +\begin quotation + This \dots\ removes an irritant in the use of [double quote + ligatures] in these fonts. The font designer can decide whether + [``], [''], and [{\rmb\char34 }] are distinguishable. +\end quotation + Presumably the aim here is to make it as easy for \TeX ers to + produce lousy typesetting as it is for people using Macintoshes + and \MSDOS\ machines. I can accept that if it is assumed that + the same encoding must be used for \TeX's internal encoding as + for DVI output, then the ugly-quote character is unavoidable; + but it pains me to see it presented primarily as a boon for lazy + typists. One of the worst effects of the `DTP revolution' has + been the way in which typewriter-style quotation marks and + apostrophes have become common in typeset text, because they are + so much easier to generate on a Macintosh than the correct + quotation marks. + +% The article also states +%\begin quotation +% The standard also includes |<| |>| in the normal ASCII +% location[s]. +%\end quotation +% but this does not address the fact that the ASCII symbols `|<|' +% and `|>|' are used both as the less-than and greater-than +% relations {\rmb<} and {\rmb>} and as angle brackets \langle\ and +% \rangle. These keys might also reasonably be used for single +% guillemets < and > or normal (double) guillemets << and >>. + + + Future versions of \LaTeX\ will expect fonts using this encoding + to exist. In the Malvern~\n{1.0} documentation I~suggested that + \index{Berry, Karl} Karl Berry's names be used for these; there + is now a specal code letter `|q|' for the Cork encoding. +\medskip + {\rmx \ntable} +\medskip +\noindent + Notes: +\smallskip +\halign +{#\hfil\quad&\hfil#&\quad\hfil#&\quad#\hfil\cr + \oct{000}--\oct{014}&\hex{00}--\hex{0C}&$0$--$12$& + marks for composite letters\cr + \oct{015}&\hex{0D}&$13$& + German single quotation mark\cr + \oct{016}--\oct{017}&\hex{0E}--\hex{0F}&$14$--$15$& + single guillemets\cr + \oct{027}&\hex{17}&$23$& + compound word mark (cwm)\cr + \oct{030}&\hex{18}&$24$& + ring that combines with \% to make \permille\cr + \oct{040}&\hex{20}&$32$& + visible space\cr + \oct{042}&\hex{22}&$34$& + typewriter-style neutral quotation mark\cr + \oct{136}&\hex{5E}&$94$& + ASCII circumflex\cr + \oct{137}&\hex{5F}&$95$& + ASCII under{\rmb\char95 }score\cr + \oct{176}&\hex{7E}&$126$& + ASCII tilde/swung dash\cr + \oct{177}&\hex{7F}&$127$& + duplicate hyphen\cr +} + + + +%}}} Cork +%{{{ bag-of-characters + +\subsec{The `bag-of-characters' alternative} + + The Cork encoding has as a central assumption that it is + possible and overridingly desirable to have *one* encoding that + is used in typesetting anything, and that this encoding shall be + used for input to \TeX, fonts used in DVI files, and as the + output of \MF. I~am of the opinion that it is not useful or + convenient to try to impose One True Encoding on all text fonts. + + In fact, the Cork article does have as an unstated assumption + that different fonts are used for different languages (or rather + groups of languages): for example, the discussion of the use of + the cwm to separate ligatures in German but to join ligatures in + other contexts suggests a plethora of fonts with the identical + encoding and glyphs but different ligtables. + + I~would argue that if separate fonts are being used then they + might as well have different encodings as well. This would + allow a German font to omit, say, "ffl" and "ffi" (not used in + German) and perhaps add "ck", "tz", "ch" ligatures. True {\it + Fraktur} faces require more ligatures, but do not include + composite letters other than umlauts. Guillemets for French use + should be created with extra space inside them <<\thinspace like + so\thinspace>>, whereas Germanic fonts should have guillemets + without the extra space >>like so<< \cite{Hart's102}. Allowing + different encodings would put Esperanto, Irish, Lappish, Welsh + etc.\ on equal footing with the larger languages. Assuming that + switching between languages already implies a switch in + hyphenation tables and other parameters of \TeX, switching fonts + as well seems like a minor problem, especially as it allows + great benefits. + + Furthermore, the best way within the \TeX\ system to produce + several different fonts with almost the same collection of + glyphs is to use composite fonts. A composite font can draw its + characters from one or more base fonts. These base fonts are in + effect a bag of characters from which different selections can + be drawn to form language-group-specific fonts. There is no + reason for the base font(s) to have the same encoding as the + tailored fonts used by \TeX\ itself. + +%}}} bag-of-characters +\fi +%{{{ Malvern + +\subsec{The Malvern font-encoding conventions} + + The Malvern typeface includes more than $256$ characters, so it + follows that no one font will contain every Malvern character. + Instead I have coding schemes called Malvern~A, Malvern~B, + Malvern~C and Malvern~G.\note{The use of `Malvern' in these + names is in order give them a unique name, not to restrict the + use of these encodings to Malvern fonts. If the encoding + conventions of later versions of Malvern are different for some + reason, then the version number can be appended to distinguish + the different encodings, giving `Malvern A $1.0$', say.} + Malvern~A is the simple latin text font; it has the base + alphabets (that is, it has "A--Z" and the rest but not "\`A--\v + Z"). Malvern~C and G are Cyrillic and Greek respectively + (Malvern~C is stil incomplete). Malvern~B is the latin text + supplement. (There might also be a Malvern~E of composite + letter glyphs in the future.) + +\xreflabel{tab-charcodes}{\S\thesecno} + +%}}} Malvern +%{{{ macros for table notes + +% Much to my annoyance, the smart play is to give the codes in octal +% since TeX can convert to hex and decimal easily. + +\def\hexnumber#1% +{% + \hex{\chardef\tmp=#1 \expandafter\striptodoublequote\meaning\tmp}% +} +\begingroup\catcode`\"=12 \toks0={\endgroup + \def\striptodoublequote#1"{} +}\the\toks0 +\def\decnumber#1% +{% + \n{\number#1}% +} + + +\def\noteone#1#2% +{% + \oct{#1}&\hexnumber{'#1}&\decnumber{'#1}\cr +} +\def\notetwo#1#2#3% +{% + \oct{#1}, \oct{#2}& + \hexnumber{'#1}, \hexnumber{'#2}& + \decnumber{'#1}, \decnumber{'#2}\cr +} +\def\noterange#1#2#3% +{% + \oct{#1}--\oct{#2}& + \hexnumber{'#1}--\hexnumber{'#2}& + \decnumber{'#1}--\decnumber{'#2}\cr +} + +%}}} macros for table notes +%{{{ Malvern A +%{{{ insert table + +\pageinsert % this one is too big for a normal insert +\ntable +\medskip +\noindent + Notes: +\smallskip +\halign +{#\hfil\quad&#\hfil&\quad#\hfil&\quad#\hfil\cr + \oct{006}--\oct{017}&\hex{086}--\hex{0F}&$6$--$15$& + marks for l.c. composites\cr + \oct{026}--\oct{027}&\hex{16}--\hex{17}&$22$--$23$& + marks for U\&lc composites\cr + \oct{060}--\oct{071}&\hex{30}--\hex{39}&$48$--$57$& + oldstyle digits\cr + \oct{074}, \oct{076}&\hex{3C}, \hex{3E}&$60$, $62$& + single guillemets\cr + \oct{206}--\oct{217}&\hex{86}--\hex{8F}&$134$--$143$& + marks for cap.\ composites\cr + \oct{234}&\hex{9C}&$156$& lower-case "d" with hook (\,=\,"\v d")\cr + \oct{235}&\hex{9D}&$157$& lower-case "t" with hook (\,=\,"\v t")\cr + \oct{236}&\hex{9E}&$158$& lower-case "h" with circumflex\cr + \oct{237}&\hex{9F}&$159$& lower-case "L" with hook (\,=\,"\v l"?)\cr + \oct{240}&\hex{A0}&$160$& ballot box\cr + \oct{244}&\hex{A4}&$164$& ISO-$646$ currency sign\cr + \oct{251}&\hex{A9}&$169$& `florin sign' (variant italic "f")\cr + \oct{256}&\hex{AE}&$174$& raised dot (British decimal point)\cr + \oct{260}--\oct{271}&\hex{B0}--\hex{B9}&$176$--$185$& + ranging figures\cr + \oct{300}&\hex{C0}&$192$& degrees sign\cr + \oct{333}, \oct{335}&\hex{DB}, \hex{DD}&$219$, $221$& + angle brackets\cr +} +\caption{Malvern A encoding.} +\xreflabel{tab-charcodes}{Table~\n{\the\tablecount}} +\endinsert +%}}} insert table +\subsec{Malvern A Encoding} + +\xreflabel{tab-charcodes-a}{\S\thesecno} + This is the latin text font, containing alphabets, two sets of + figures, punctuation marks, various symbols, and some special + letters. Although the eventual plan is that language-group + specific fonts be created, this encoding has been designed so + that it can be used on its own at a pinch. As with the \TeX\ + Text encoding, words with composite letters in them will not + hyphenate properly, and any composite-letter characters + available on the user's keyboard will have to be made to expand + to control sequences to generate that character. + + As well as the usual (large) capitals and lower case alphabets, + Malvern has two more capital alphabets: small capitals and + medium capitals. The font is divided into two halves, with the + first $128$ slots being an extension of a subset of normal + ASCII, and the upper $128$ characters largely `shadowing' the + lower half. For example, small capitals and medium capitals + `shadow' the lower case and large capital alphabets (`a' is + character \hex{61}, and `\sc{A}' (small cap.)\ is $\hex{61} + + \hex{80} = \hex{E1}$). + + There are two sets of digits: old style (\lowercase{1234567890}) + are the default; to get ranging digits (\uppercase{1234567890}) + see \xref{s-ranging}. The usual block of marks (which may be + used to make composite letters) is designed to suit the lower + case letters, and the shadow set is designed to suit the medium + capitals\iflong (see \xref{sec-type-A})\fi. + + + +%}}} malvern A +%{{{ Malvern B +%{{{ insert table + +\topinsert + {\rmb \ntable} +\medskip +\noindent + Notes: +\smallskip +\halign +{#\hfil\quad&\hfil#&\quad\hfil#&\quad#\hfil\cr + \noteone{40}{blank space} + \noteone{42}{seconds (and ASCII doublequote)} + \noteone{45}{Cork's ring for per mille} + \noteone{47}{minutes (and ASCII quote)} + \noteone{54}{German single quote} + \noteone{56}{three-dot ellipsis\dag} + \noteone{57}{slash for fractions} + \noterange{60}{72}{infoerior figures} + \noterange{60}{72}{inferior figures} + \notetwo{74}{76}{greater- \& less-than signs} + \noterange{101}{105}{Old English caps\dag} + \noterange{106}{145}{Old English lower case\dag} + \noterange{146}{153}{Ligatures "ch", "ck", "ct", "ft", "ij", "ll"\dag} + \noterange{154}{163}{Long "s" and ligatures} + \noteone{164}{Schwa} + \noterange{165}{173}{Font-specific variant letters} + \noterange{134}{137}{Cork glyphs} + \noteone{140}{reverse tick (ASCII backquote)} + \noteone{240}{Cork visible space} + \noterange{241}{246}{ISO \n{8859}/\n{1} glyphs} +} +\caption{Malvern B encoding.} +\endinsert +%}}} inster table +\subsec{Malvern B Encoding} + +\xreflabel{tab-charcodes-b}{\S\thesecno} + This font is essentially a collection of random symbols and + alphabetical characters, some of them mathematical. I~have not + yet settled on a firm design for it---most of it is left as gray + areas to be filled in in later versions of Malvern. Also, even + in the final form of this font, some areas will be designated as + `font-specific'; other fonts using the Malvern conventions will + use them for whatever variant letters and unique characters the + designer wishes to include. + Superior and inferior---that is, raised and lowered---figures + (\lowercase{{\rmb 1234567890}}/\uppercase{{\rmb 123456789}}) + take the place of the old-style and ranging figures. The glyphs + required by the Cork encoding, such as this visible space + `{\rmb\char160 }' and ASCII doublequote `{\rmb\char34 }', are + also included here. + + +%}}} malvern B +%{{{ Malvern C + +\subsec{Malvern C Encoding} + +\xreflabel{tab-charcodes-c}{\S\thesecno} + This will be the ^{Cyrillic} subset of Malvern, using the same + or simlar conventions to the existing ^|wncy| fonts. As yet, + several of these glyphs are missing. (Perversely enough, mainly + the ones appearing in the Latin and Greek alphabets, so I can + only say `AH{\gr G}{\cy LIQ}AH{\cy I}H' by borrowing `A' and `H' + from Malvern~A and `{\gr G}' from Malvern~G!) I'm not really in + a good position to produce a good Cyrillic font---I don't have + the slightest knowledge of Russian or any other language using + the Cyrillic alphabet. + +\topinsert + {\rmc \ntable} +\caption{Malvern~C encoding (so far).} +\endinsert + +%}}} Malvern C +%{{{ Malvern G + +\subsec{Malvern G encoding} + +\xreflabel{tab-charcodes-g}{\S\thesecno} + This is the ^{Greek} text font encoding, based largely on the + Greek\TeX\ \cite{KD} fonts, so that, for example, `|<'a|||' + produces an alpha with breathing, accent and iota subscript: + `{\gr <'a\char124 }'. The document |magrman.tex| in the Malvern + distribution describes the use of this font. + +\topinsert + {\gr \ntable} +\caption{Malvern G encoding.} +\endinsert + +%}}} Malvern G +%}}} encoding +\dosupereject +\iflong +%{{{ type sizes +\vfil +\penalty-100 +\vfilneg +\section{Sizes of type} + + This is a table of sizes of type, descibed both in \TeX's + Anglo-American points ($0\cdot351\,{\rm mm}$ or $0\cdot01383''$) + and in millimetres, and also the cap heights for Malvern~55. + The choice of point sizes is a mixture of traditional sizes + ($10\pt$, $12\pt$, \dots, $48\pt$, $60\pt$ etc.) and the sizes + Computer Modern fonts are supplied in ($10\pt$, $12\pt$, + $17\cdot28\pt$ etc.), and a few sizes that are round figures in + metric units ($10\mm$ etc.). +\medskip +\moveleft\leftmargin\vbox{\advance\hsize\leftmargin +\halign to \hsize{\hfil $#$\tabskip=0pt& $#$\hfil \tabskip=0pt plus 1fil& + &\quad\hfil $#$\tabskip=0pt& $#$\hfil \tabskip=0pt plus 1fil +\cr + \noalign{\hrule height 1pt \vskip 1.5\jot}% + \multispan4Body size\hfil & + \multispan4\quad Cap.\ ht\hfil & + \multispan8\quad Pixels per em\hfil\cr + \noalign{\vskip\jot\nointerlineskip}% + \multispan4\hrulefill & + \multispan4\quad\hrulefill & + \multispan{12}\quad\hrulefill \cr + \multispan2pt\hfil & + \multispan2\quad mm\hfil & + \multispan2\quad pt\hfil & + \multispan2\quad mm\hfil & + \multispan2\quad $120$ & + \multispan2\quad $200$ & + \multispan2\quad $300$ & + \multispan2\quad $400$ & + \multispan2\quad $600$ & + \multispan2\quad $1000$\cr + \noalign{\vskip\jot \hrule \vskip 1.5\jot}% + \input typesizes + \noalign{\vskip2\jot \hrule height 1pt} +}} +\smallskip + +%}}} type sizes +\fi +%{{{ composite letters + +\section{Composite letters used in some languages} + + This table lists composite letters listed as being + required to typeset several European languages. This list is + not particularly canonical\allowbreak---I~have merely combined + the OUP list \cite{ODWEacc}, the resources of my local library, + and \TUGboat\ articles \lcite{\\{Bien}\\{Hara}}. There are + probably omissions, especially of composites used in + loan-words\allowbreak---and I~would appreciate any information + which I~can include in later revisions. + +%{{{ macros to do footnotes in table + +\newcount\tabcount +%\tabcount=7 \multiply\tabcount16 \advance\tabcount\itfam +%\multiply\tabcount256 \advance\tabcount`a \advance\tabcount-1 + +%% Normally footnotes into a table are lowercase letters +%% In this case it seemed better to use numbers given that the +%% entries are all letters... +%% +\def\tabnote#1% +{% + \global\advance\tabcount1 + \global\edef#1{\footnotetextmark{\the\tabcount}}% + #1% +} +\def\tabnotetext#1% +{% +% \ifvmode +% \noindentfalse +% \leavevmode\llap{#1}% +% \else +% \unskip \penalty10000 \hbox to \parindent{\hfil#1}% +% \fi + \par \indent\llap{#1\enspace}% + \ignorespaces +} + +%}}} +%{{{ the table + +\medskip +\moveleft\leftmargin\vbox\bgroup +\advance\hsize\leftmargin +\hrule height 1pt +\vskip2\jot +\halign to \hsize\bgroup #\unskip\hfil \tabskip=3pt plus 10pt&&#\unskip\hfil\cr +Czech & \'a & \v c \v D\vd\tabnote\czech + &\'e\v e& & \'\i & \v n & \'o + & \v r\v s \v T\vt\czech + & \'u\ringmark u + & & \'y & \v z \cr +Danish &\aa & & & & & & \o & & & & & & \ae \cr +Dutch\tabnote\dutch & & &\'e\"e & & & &\'o\"o \cr +English &\aa\tabnote\angstrom + & \c c &\'e\`e\tabnote\egravenote\"e + & &\"\i + & &\^o\"o\tabnote\odiaeresis &&& & & & \ae\oe\tabnote\aelig \cr +Esperanto & & \^c & & \^g\h & & \^\j & & \^s & \u u \cr +Finnish &\aa\"a + & & & & & & \"o \cr +French%\tabnote\frenchnote + &\`a\^a & \c c & \'e\`e\"e & &\^\i\"\i + & & \^o & & \`u\^u\"u \cr +German & \"a & & & & & & \"o & & \"u & & & & \ss%\tabnote\eszetnote +\cr +Hungarian & \'a & & \'e & &\'\i & &\'o\"o\H o & & \'u\"u\H u \cr +Icelandic & \'a & & \'e & &\'\i & & & & & & & & \th\dh \cr +Norwegian &\aa + & & & & & & \o & & & & & & \ae \cr +Polish & \a & \'c & \e & & & \l\'n & \'o & \'s & & & & \'z\.z \cr +Portuguese & \'a\`a\^a\~a + & \c c & \'e\`e\^e & &\'\i\`\i + & & \'o\`o\^o\~o && \'u\`u\"u\tabnote\portuguese \cr +Romanian & \`a\^a\u a & & \`e & &\`\i\^\i && &\c{s}\c{t} + & \`u \cr +Russian\tabnote\russian && &\`e\"e & &\u{\i} & & + & & & & \=y & \v z & \rmb '\thinspace \char34 \cr +Spanish%\tabnote\spanish + & \'a & & \'e & &\'\i + & \~n & \'o & & \'u\"u \cr +Swedish &\aa\"a && & & & & \"o \cr +Turkish & \^a & \c c & &\u{g} + &\.I\i\tabnote\turkish \^\i + & & \"o &\c{s} + & \"u \cr +Welsh%\tabnote\welsh + &\^a\'a & &\^e\"e & &\^\i\"\i + & & \^o\"o & &\^u & \^w & \^y \cr +\crcr \egroup +\vskip1\jot +\hrule height 1pt +\egroup +\smallskip + +%}}} +%{{{ text of footnotes + +\tabnotetext\czech + The letters "\vd" and "\vt" are used as alternatives to placing + a \showmark\v on letters with ascenders. They can also be + written \xyaccent{0.4 }{\dimen0=0pt }{13}{d} and \v{t}. +\tabnotetext\dutch + "IJ~ij" counts as one letter. +\tabnotetext\angstrom + "\aa ngstr\"om". +\tabnotetext\egravenote + In poetry, "-\`ed" is us\`ed to show a syllable normally mute is + to be separately pronounced \cite{Hart's30}. +\tabnotetext\odiaeresis + American "co\"operate" (Br. spelling is "co-operate"), "\aa ngstr\"om". +\tabnotetext\aelig + Using the vowel ligatures "\ae" and "\oe" in English words + with Latin roots is a Victorian affectation---it is usual + nowadays to write "aesthetic", not "\ae sthetic" + \cite{Hart's62}. Americans write "esthetic", of + course. +\tabnotetext\portuguese + The letter "\"u" is used in Brazil but not in Portugal + \cite{Hart's135}. +\tabnotetext\russian + These are letters used in transliterating Russian and the other + languages that use the Cyrillic alphabet (Belorussian etc.) + \cite{Hart's120}. +\tabnotetext\turkish + In Turkish, "I~\i" and "\.I~i" are separate letters. Sometimes + "\ringmark \i" or "\=\i" is used in manuscripts to indicate~"\i" + \cite{Hart's135}. + +%\tabnotetext\spanish +% The digraphs "ch" and "ll" count as single letters. +%\tabnotetext\welsh +% Has $7$~digraphs: "ch", "dd", "ff", "ng" (ranked after "g"), +% "ll", "ph", "rh" (except after vowels), "th". +%\tabnotetext\eszetnote +% "Es-zet", or `sharp "s"', originating as a {\it Fraktur\/} +% ligature for long "s" and "z" ("\char157 3"), but treated as +% "ss" in alphabetizing, and the upper-case equivalent is "SS". +%\tabnotetext\ocircumflex +% This is inconsistently used for words naturalized from French -- +% "role" (no circumflex) but "m\^el\'ee" \cite{ODWE}. + +%}}} +%}}} composite letters +\iflong +%{{{ list maamac.tex +\section{Listing of {\tt malvern.tex}} + + This is a complete listing of |maamac.tex|, a file of \TeX\ + definitions that redefine the usual accent commands etc.\ and + make some other definitions appropriate to the Malvern encoding. + It might be used by plain~\TeX + +\everylisting{\smallfonts} +\listing{maamac.tex} +%}}} malvern.tex +\fi +%{{{ installation hints + +\section{Installation summary} + +\subsec{Getting Malvern via FTP} + + Malvern should be available from CTAN (the + Comprehensive \TeX\ Archive Network), in directory + |fonts/malvern|. + + Where appropriate, Malvern now uses the same naming convention + as GNU software, so there should be a bundled distribution + called something like +\begin display + {\tt\ttpackage.tar.gz} +\end display + The file, as the suffix suggests, is a |tar| archive compressed + with GNU Zip, and on UNIX systems will likely be unpacked with + something like +\begin display + {\tt zcat \ttpackage.tar.gz \char`\| tar xvf -} +\end display + + A version which has been `patched' will have a version ID like + `$1.2.05$', the `$05$' being the \dfn{patch level}. You apply + the patches (with ^^{Wall, Larry} Larry Wall's ^|patch| + program) in order (patch $01$ first, then $02$, and so on) to + the main distribution. Patch files have names like + `|malvern-1.2-patch05|'. + + There is a document |dvi/install.dvi| included in teh package + that contains installation hints. + +\subsec{Generic driver file} + Malvern is unusual amongst \MF\ families in that it is supplied + with one {\it generic driver file} instead of one driver file + for each size and style the family comes in.\note{The package + also includes a selection of driver files.} The generic driver + file ({\tt ma.mf}) inspects the values of variables like + "designsize" and "weight" and gives the ad-hoc parameters + appropriate values, before reading the program files. On some + UNIX systems a small program called ^|mff| can be used to + generate fonts using this system. Otherwise other measures will + have to be taken, described below. + +\subsec{Malvern encodings} + Malvern uses a nonstandard encoding---in fact a family of + encodings, for example, Malvern~A (latin alphabets) and + Malvern~G (Greek). To create fonts for use with \LaTeXe\ and + the NFSS\vn2 font selection macros, use ^^{Jeffrey, Alan} Alan + Jeffrey's ^|fontinst| package \cite{fontinst} (see also + \xref{s-fontinst}). This generates the |fd| files and virtual + fonts so that Malvern fonts may be used in the same way as other + \LaTeXe\ families. (The glyphs needed to make fonts with the + Cork (T$1$) encoding are in Malvern~A and Malvern~B.) This has + already been done for you to make a selection of styles + available with both \TeX\ Text and T\n1 encodings. + +\subsec{Malvern font names} + The Malvern fonts generated with \MF\ will have \TeX\ names of + the following form: +$$ + \hbox{{\tt ma}\<style>\<encoding>\<size>} +$$ + where the \<style> is a two digit style code (described below), + \<encoding> is a code identifying a Malvern encoding (such as + `{\tt s}' or `{\tt az}'), and \<size> is the size in points + (e.g., `{\tt 12}' for $12\pt$). Thus {\tt ma55a12} ($12$-pt + Malvern $55$, encoding~A). + + The two-digit style codes are based on Adrian Frutiger's system, + devised for the Univers family; see \xref{s-stylecodes}. + + The \MF\ programs can also produce fonts in ^^{Berry, Karl} + Karl Berry's font naming scheme, with the \TeX\ Text encoding. + The names start with `{\tt fmv}'. This is so that these fonts + may be used in plain-\TeX\ and \LaTeX-$2.09$ documents without + too much confusion. The correspondance between Malvern's style + digits and weight, variant and expansion letters is given in the + tables below. NFSS\vn2 systems (indeed, any that use + non-\TeX-text encodings) will have to use virtual fonts. + +\ifkbnames\else +\begin notepar + `\/{\tt fmv}\/-' names are not used at present; use + corresponding `\/|ma|\/-' names instead. See the note at the + end of \xref{s-kb-names}. +\end notepar +\fi + +\subsec{Unpacking Malvern} + The Malvern distribution includes \MF\ source files, some \TeX\ + files such as this documentation, and a few other miscellaneous + files. + +\subsubsec{Source files ({\tt/source})} + On most \TeX\ systems, \MF\ fonts end up with their source files + stored in \MF's input file area. I~suggest that Malvern instead + be given its own file area. This avoids problems with different + font families having files with the same name, and makes it easy + to replace all the Malvern files in one go if you upgrade to a + newer version of Malvern. + + With a new-style directory tree,\note{At the time of writing, + the \TeX\ Directory Standard (TeDiouS) is still in discussion. + This is my best guess based on a \TeX\ system I~recently had + installed.} the {\tt\ttpackage} directory may be placed in the + `|texmf/fonts/public|' directory, and the directories |source| + and |drivers| merged and renamed so that \MF\ can find them. + + The files {\tt mff.rc} and {\tt fmv.mff} are input files for + {\tt mff} and may be ignored if you are not using {\tt mff} to + generate fonts. + +\subsubsec{Driver files ({\tt/drivers})} + These files are not strictly necessary but are included for + convenience. They are used when assignments to the generic + driver file's parameters on the \MF\ command line is impossible, + such as when using the standard {\tt MakeTeXPK} script. A + driver file is included for each {\tt tfm} supplied. + +\subsubsec{\TeX\ input files ({\tt/tex})} + These files belong in a system-wide \TeX\ inputs area. The + files ending with `|.fd|' are font family definition files, + used by NFSS\vn2 and \LaTeXe. + + On new-style directory trees, the best approach is probably to + link or rename {\tt texmf/fonts/public/\ttpackage/tex} to + {\tt texmf/tex/\ttpackage}. + +\subsubsec{Documentation files ({\tt/doc}, {\tt/dvi})} + Files ending in `{\tt.tex}' are plain \TeX\ documents, and will + not work with \LaTeX. Compiled ({\tt dvi}) files are supplied + to save the installer having to run \TeX. Read {\tt + install.tex}, first. The ^{Greek} text encoding is described in + |magrman.tex|. + + The "Malvern Handbook", |maman.tex| produces cross-references + automatically via an |aux| file, and will need to be run through + \TeX\ twice to get the cross-references right. The front matter + (preface and table of contents) are printed *last* and should be + transferred to the front of the handbook before binding. + +\begin notepar + Please do not install any of the macro files used to typeset the + documentation in the system-wide \TeX\ inputs area. They are + not supported, not necessarily generally useful, and very + nonstandard. Earlier releases of Malvern gave the macro files + generic enough names that they might clash with other macro + files. They have been renamed to start with `{\tt pdc}' in the + hope that this will avoid clashes if they are accidentally + installed. +\end notepar + +\subsubsec{Virtual font files ({\tt/vf})} + These virtual fonts are generated using ^^{Jeffrey, Alan}Alan + Jeffrey's ^|fontinst| package \cite{fontinst}, and are Malvern + fonts with the Cork encoding. With NFSS\vn2 (or \LaTeXe) they + are used by specifying encoding `{\tt T1}' and family `{\tt + fmv}'. See \xref{tab-encoding-codes} for a list of encoding + codes. + +\subsubsec{Font metric files ({\tt/tfm})} + A selection of precompiled font metric files, including those + for virtual fonts in {\tt /vf} and the actual fonts needed to + use them, as well as fonts needed to print the documentation in + {\tt/dvi}. + +\subsec{Using mff to generate Malvern fonts} + First, install {\tt mff} and arrange that \MF\ will be able to + find the {\tt mf} files. Then to create a Malvern font, for + example $12$-pt Malvern~$55$ ({\tt ma55a12}), give the command: +\begin example + |mff ma55a12| +\end example + To generate Malvern~$55$ and $56$ at magsteps $0$, \frac1/2 and + $1$, for $300$-dpi and $1000$-dpi printers, you would type: +\begin example + |mff --magstep=0,h,1 --dpi=300,1000 ma55a10 ma56a10| +\end example + If all goes well, the {\tt tfm} and {\tt pk} files generated + will be installed in the correct directories automatically. + +\subsec{Generating Malvern fonts without mff} + This section presumes you know how to install a normal \MF\ + font. + + Create a driver file for each style of Malvern you want to be + able to use. It should have the following form: +\begin lines + |% |\<name of file>| -- generate |\<size>|-pt Malvern |\<style> +\smallskip + |font_size |\<size>| pt#;| + |encoding = |\<number>|; | + |weight = |\<number>|; hratio = |\<number>|;| + |slant = |\<number>|; italicness = |\<number>|;| + |input ma| + |bye.| +\end lines + where \<size> is the design size in points, and the + values for the various variables are given below. The \<style> + is the two-digit style code described in \xref{s-stylecodes}. + + These driver files should be named after the font they + correspond to---for example, `{\tt ma76a12.mf}' to generate + Malvern~$76$. Then they are used as usual with \MF: +\begin example + |mf \mode=luxo; mag=|\<number>|; input ma55a12| +\end example + where the \<number> is the magnification wanted, or `{\tt 1.0}' + for no magnification. + +\subsubsec{Values for {\it encoding}} + The variable {\it encoding} specifies the encoding to use---in + other words, the subset of Malvern's glyphs to be generated. It + should be given one of the following values: +\begin display + \it Encoding&\it Letter&\it Description\cr +\noalign{\kern\jot\hrule\kern1.5\jot} + ${\it encoding} = 1$& \tt a& + Malvern A (latin alphabets ABCdef.)\cr + ${\it encoding} = 2$& \tt b& + Malvern B (superscripts, symbols etc.)\cr + ${\it encoding} = 3$& \tt c& + Malvern C (Cyrillic A{\cy DIlz\char126 })\cr + ${\it encoding} = 5$& \tt e& + Malvern E (composite letters \AA \c C\^D\'e\u g\^\i)\cr + ${\it encoding} = 7$& \tt g& + Malvern G (Greek letters {\gr ABGdez})\cr + ${\it encoding} = 19$& \tt s& + \TeX\ text \cite{TeXF1}\cr + ${\it encoding} = 26$& \tt az& + \TeX\ text, old-style numerals\cr +\end display + The letter is the letter used in the font name -- for example, + {\tt ma55s10} for Malvern with the \TeX\ text encoding (${\it + encoding} = 19$), and so on. + +\begin notepar + The Malvern programs used to attempt to generate other encoding + schemes; with ^|fontinst| this all becomes redundant and + those codes are obsolete. +\end notepar + +\subsubsec{Values for {\it weight}} + The variable {\it weight} specifies the weight (boldness) of the + font. It has the following values: +\begin display + \it Weight&\it Style&\it NFSS\vn2& \it Berry&\it Description\cr + &\it digit&\it code&\it code\cr +\noalign{\kern\jot\hrule\kern1.5\jot} + ${\it weight} = 1/4$& \tt 1& \tt ul& \tt t& ultra-light\cr + ${\it weight} = 1/2$& \tt 2& \tt el& \tt i& extra-light\cr + ${\it weight} = 3/4$& \tt 3& \tt\ l& \tt l& light\cr + ${\it weight} = 7/8$& \tt 4& \tt sl& \tt b& semi-light\cr + ${\it weight} = 1$& \tt 5& \tt\ m& \tt r& medium\cr + ${\it weight} = 1.3$& \tt 6& \tt sb& \tt d& semi-bold\cr + ${\it weight} = 1.6$& \tt 7& \tt\ b& \tt b& bold \cr + ${\it weight} = 2$& \tt 8& \tt eb& \tt x& extra-bold\cr + ${\it weight} = 3$& \tt 9& \tt ub& \tt u& ultra-bold\cr +\end display + The `style digit' is the first digit in the two-digit style + codes described in \xref{s-stylecodes}. The `NFSS\vn2\ code' is the + first half of a corresponding NFSS\vn2\ `font series' code. The + `Berry code' is the code for this weight in Karl Berry's font + naming scheme. + + Note that some of the character programs produce ugly results + for large values of {\it weight}. + +\subsubsec{Values for {\it hratio}} + The variable {\it hratio} specifies the ratio between horizontal + and vertical measurements: in other words, whether the font is + compressed or expanded. It may have the following values: +\begin display + \it Hratio&\it Style&\it NFSS\vn2& \it Berry&\it Description\cr + &\it digit&\it code&\it code\cr +\noalign{\kern\jot\hrule\kern1.5\jot} + ${\it hratio} = 0.50$& {\tt 9} or {\tt 0}& + \tt ec&\tt o& extra compressed\cr + ${\it hratio} = 0.80$& {\tt 7} or {\tt 8}& + \tt\ c&\tt c& compressed\cr + ${\it hratio} = 1.00$& {\tt 5} or {\tt 6}& + \tt\ m&\tt r& normal width\cr + ${\it hratio} = 1.15$& {\tt 3} or {\tt 4}& + \tt\ x&\tt x& expanded\cr + ${\it hratio} = 1.30$& {\tt 1} or {\tt 2}& + \tt ex&\tt w& extra expanded\cr +\end display + The `style digit' is the second half of the two-digit style + codes described in \xref{s-stylecodes}. The `NFSS\vn2\ code' is the + second half of an NFSS\vn2\ `font series' code (for example, + bold expanded is ${\tt b} + {\tt x} = {\tt bx}$, compressed is + ${\tt m} + {\tt c} = {\tt c}$). The `Berry code' is for Karl + Berry's scheme. + + Beware that the character programs do not all produce good + results when {\it hratio} is not $1$. + +\subsubsec{Values for {\it slant} and {\it italicness}} + These two variables between them specify whether a font is to be + produced with italic letterforms or not: +\begin display + \it Slant&\it Italic? &\it Style&\it NFSS\vn2&\it Berry&\it Description\cr + &&\it digit&\it code&\it code\cr +\noalign{\kern\jot\hrule\kern1.5\jot} + ${\it slant} = 0$& ${\it italicness} = 0$& odd& + \tt n& \tt r& upright\cr + ${\it slant} = 1/8$& ${\it italicness} = 1$& even& + \tt it& \tt i& italic\cr + ${\it slant} = 0$& ${\it italicness} = 1$& odd& + \tt ui& \tt u& upright italic (!)\cr + ${\it slant} = 1/8$& ${\it italicness} = 0$& even& + \tt sl& \tt o& oblique\cr +\end display + The `NFSS\vn2\ code' is the `font shape' code. The `Berry + codes' are variant letters for Karl Berry's font naming scheme. + + The variable {\it slant} is common to many \MF\ programs, and + causes the glyphs to be obliqued. The {\it italicness} variable + signals that italic letterforms should be used for some letters. + It is possible to generate an obliqued font or an `upright + italic' with appropriate settings, but these cannot have `{\tt + ma}-' names, because I~have not defined style codes for them. + +%}}} installation hints +%{{{ availability + +\section{Copying Malvern and reporting bugs} + + Like \TeX\ and \MF\ themselves, the implementation of Malvern in + \MF\ for use with \TeX\ is free software in the sense used by + the ^{Free Software Foundation} \cite{GPL}. (The word `free' is + used to mean `free of restrictions', rather than `available for + free'; free software may be bought and sold on the understanding + that the buyer may make copies and distribute them.) +^^{distribution} +^^{copying} + + There is a ^{mailing list} for discussion of Malvern problems + and solutions. Send ^^{bugs} bug reports, suggestions, and + ideas to |malvern@comlab.ox.ac.uk|. To subscribe to the list, + mail me at |malvern-request@comlab.ox.ac.uk|. + +%}}} availability +%{{{ fontinst + +\section{Fontinst} + + ^^{Jeffrey, Alan} Alan Jeffrey's ^|foninst| package + \cite{fontinst} is a set of \TeX\ macros which allows users to + install ^{virtual fonts}. It can combine fonts represented by + Adobe Font Metric ({\tt afm}) or \TeX\ font metric ({\tt pl}) + files into virtual fonts. These virtual fonts can then be used + by \TeX. + +\xreflabel{s-fontinst}{\S\thesecno} + + The package +\begin bullets + \\ is written in \TeX, for maximum portability (at the cost of + speed); + \\ supports the full ^{Cork encoding}; + \\ allows arbitrary `fake' glyphs -- for example, creating an "ij" + ligature by placing "i" next to a "j"; + \\ allows capital-and-small-capital fonts with letter-spacing and + kerning; + \\ allows kerning information to be copied between glyphs -- for + example "ij" can be made to kern on the left like "i" and on the + right like "j"; + \\ allows glyphs from several fonts to be combined to make a new one; + \\ automatically generates a {\tt fd} file for NFSS~\n2 and \LaTeXe; + \\ can deal with arbitrary font encodings. +\end bullets + The current version is a beta release. It can be obtained from + the Comprehensive \TeX\ Archive Network (CTAN), in directory + |fonts/utilities/fontinst|. + + By including some Cork-specific glyphs in the Malvern B + encoding, I~have managed to spin Cork-encoded Malvern fonts + (with variant encodings like cap \& small caps) from Malvern~A + and B fonts. The fonts generated have names in Karl Berry's + scheme, like `|fmvmq12|'. + + +%}}} fontinst +%{{{ to do + +\section{To-do list} + + So far both Malvern and this handbook is incomplete---Malvern is + a spare-time project and progress has slowed to a crawl over the + last few months. For the present, the best strategy seems to be + to release a version that can be picked apart by more + knowledgable people in order that a later, complete, release be + that much better. + + Tasks that need attention include: +\begin bullets +\\ + Make guillemets space themselves automagically. +%\\ +% Fix design of ogonek letters \A, \E, \a, \e. +\\ + Make head of \P{} solid. +%\\ +% Tidy up the ^|fontinst| encoding files so that they can be +% included in future releases. +%\\ +% Need a two drop-in \LaTeX\ style option files---one for standard +% \LaTeX, one for \LaTeX+NFSS. +\\ + The kerning table is incomplete---I need to develop a + systematic method for thrashing one out in the absence of a + decent typesetter or enough specialized knowledge. Donation of + a kerning table or clever software for generating same would be + appreciated. +%\\ +% Need some way of generating VF or VPL files automatically. +\\ + Some composite letters are missing or hastily designed. I need + to do more research into other latin-alphabet languages (so that + I know how to draw their special letters). +\\ + Find example texts containing some of the more esoteric special + letters (such as "\NG"). +\\ + Rethink the proportions of small-capital letters. +%\\ +% Obtain more greek newspapers and magazines and design a +% lower-case greek alphabet. +\\ + Learn Russian and design a Cyrillic alphabet. +\\ + Script alphabets. (Just an idea.) +%\\ +% The figures need to be overhauled---the `8' fails horribly in +% all sorts of conditions. +%\\ +% Lower-case "e" should be different in italic. +\\ + Documentation of the \MF\ code is incomplete---and some of the + code might usefully be rationalized. +\end bullets + +%}}} to do +\input mabib +%{{{ index + +\vfill\eject +\begingroup \leftmargin=0pt \setncolumns3 \notefonts + \section{Index} + + \leftskip=1em \parindent=-\leftskip \parskip=0pt plus 1pt + \let\vn=\n + +\inputifexists{\jobname.ind} + +\vfill\eject + +\endgroup + +\index{New Font Selection Scheme|see{NFSS}} + + +%}}} index +\iflong +%{{{ colphon + +\vfill\eject + +\section{Colophon} + + This manual was of course typeset using \TeX\ with Malvern + fonts. The manuscript was edited using Richard Stallman's GNU + Emacs extensible text-editor, with the CMU\TeX\ Major Mode by + Olin Shivers et al. The DVI files were previewed with |xdvi|, + and converted into \PS\ using Tomas Rokicki's excellent |dvips| + printer driver. + + The body text is set in 10/12 pt Malvern~55, with Malvern~56 + italics and Malvern~75 boldface. + +%}2}} colphon +\fi + +%}}} Appendix +%{{{ preliminary matter + +\vfill\eject +\pageno=-1 +\mark{{}{}} + +\begingroup +\headline={\hfil} \footline={\hfil} +\iftwosided +%{{{ half-title + +\null +\vskip 0pt plus 1fil + +\line{\bigrm\spaceskip=0pt plus 1fil M A L V E R N} + +\vskip 0pt plus 1.5fil +\eject + +\line{}\vfill\eject % fronticepiece + +%}}} +\fi +%{{{ title page + title verso + +\null +\vfill + +\leftline{\bigrm The \iflong\else abridged\fi} +\vskip 24pt +\leftline{\hugerm\spaceskip=-0.05em M A L\kern-0.1em V E R N} +\vskip 18pt +\rightline{\hugerm\spaceskip=-0.05em h a n d b o\kern-0.025em o k} +\vskip36pt + \leftline{\headingfonts P. Damian Cugley} +\vfill + +\iftwosided + Alleged Literature, Oxford. + + \eject\null\vfill +\fi + +\parindent=0pt \parskip=1ex \leftskip=-\leftmargin + + \copyright\ $1991$--$1994$ P. Damian Cugley. + + The right of Damian Cugley to be identified as the author of + this work has been asserted in accordance with British copyright + law. + + Permission is granted by the copyright holder to copy, use and + and distribute verbatim copies of the Malvern package and this + handbook without fee so long as ($1$)~the above copyright + messages and this permissions message are preserved intact on + all copies; and ($2$)~neither the name of Damian Cugley nor that + of Oxford University be used in any related promotion or + advertising without prior written consent. (Merely + acknowledging copyright would not count as contradicting~($2$).) + + {\bf Caveat}\quad This documentation is incomplete. + +\bigskip + This document describes \package. + + \TeX\ was run on this file on \today. +\eject +%}}} +\endgroup + +%{{{ preface +\sectionheading{Preface} + +\dropcap\hugerm + Malvern is a sanserif typeface family: a collection of typefaces + that have been designed together and are intended to coordinate + with each other. (`Sanserif' comes from the French {\it sans + serif\/} and means that the arms and stems of letters do not + have the small finishing strokes called serifs.) This handbook + describes an implementation of Malvern created for use with + \TeX, a fiendish typesetting system devised by ^^{Knuth, Donald + E.} Donald~E.\ Knuth. Like Knuth's own Computer Modern family, + Malvern is implemented as a set of files which are interpreted + by \MF, a companion program to \TeX\ which is included in most + \TeX\ systems. + +\iflong + The reader may be surprised that a typeface needs a `handbook' + like this one at all---after all, we do not see books called + `The Garamond User Guide' or `How to get more from your Bodoni'. + This is partly because of the nature and rarity of \MF\ fonts: they + are individually-crafted programs, whereas commercial fonts are + produced systematically using standard software. Partly it is + because the Computer Modern family is so thoroughly installed + into plain \TeX\ and standard \LaTeX\ that some effort is needed + to switch it over to another font family. And finally, there is + the fact that Malvern is itself eccentric and these + eccentricities need explaining. + + My motivation to create Malvern comes from two sources. + Firstly, the \TeX\ system has always suffered from a dearth of + font designs: In the standard \TeX\ distribution, there are two + sanserif families (Computer Modern Sans Serif and CM Sans Serif + Quotation) both of which are derived from the same character + programs as the Computer Modern fonts. This is a nice gimmick, + but in practice the natures of sanserif and serif faces are so + much at odds that they cannot be usefully merged into one + `meta-design'. +% In particular, the capitals of \cmrname{CMSS} +% and \cmrname{CMSSQ} do not seem to me to coordinate well with +% their lower case. The $x$-height for \cmrname{CMSS} is small +% for a sanserif font, and makes it look top-heavy---but a +% side-effect of increasing the $x$-height in \cmrname{CMSSQ} is +% to make the capitals so extended as to be distended. +% My attempts to coax what I~considered to be a nice sanserif face +% out of the CM programs---with all sorts of hacks and +% fudges---became more and more elaborate, but to no avail. + Of course there are many wonderful faces available + commercially---but I have no money with which to buy them. (One + of the great things about \TeX\ is that it is free, so that + quality typesetting is available to any sufficiently-motivated + pauper with access to a computer.) + + The second main impetus was more immediate---it was the + publication of the proposed standard \TeX\ font encoding in + \TUGboat\ (the \TeX\ User Group journal). I~wanted to write an + article or letter about this---but to do so I~needed to be able + to include many peculiar symbols in a \TeX\ document. After my + first attempts (creating a font to augment Computer Modern) it + seemed obvious that designing a new font from scratch would be + less effort in the long run than trying to come up with a bodge + to patch existing fonts. +\fi + + This handbook describes my implementation of Malvern and some + ways in which Malvern can be used with \TeX\ (both plain \TeX\ + and with the \LaTeX\ macro package). +\iflong + It also includes + information that relates to Malvern in general, as opposed to + any one implementation in particular. It is possible that at + some future date someone will make versions of Malvern fonts for + other systems, in which case they will surely supply their own + handbook to supplement this one. + + Different parts of this handbook will be relevant to different + people. The first sections describe Malvern as it is used in + \TeX\ (or \LaTeX) documents, including the developement of \TeX\ + macros to take advantage of Malvern's features (these are aimed + at \TeX\ experts and should be ignored by people who want merely + to have a system that works). + + Later sections give an outline of the \MF\ code used to + implement Malvern. I~will not describe it in great detail but + I~will attempt to outline some of its weirder features. This + section is for the satisfaction of myself and other \MF-hackers, + and is of even less interest to the typical Malvern user than + the \TeX\ programming. +\fi + + The appendix includes a summary of how to install Malvern, some + of the code described in previous sections, some tables (useful + or otherwise) and a list of books and articles referenced + elsewhere. + +\rightline{Damian Cugley, June \n{1994}} + +%}}} +%{{{ TOC +\sectionheading{Table of Contents} + +\immediate\closeout\TOCfile +\begingroup + +\def\TOCentrysubsec#1#2#3{#1\ #2\quad} + +\input \jobname.toc +\endgroup +%}}} +%}}} preliminary matter +\bye +%}}} maman.tex + + +%Local variables: +%fold-folded-p: t +%tex-has-children: t +%fill-prefix: "\t" +%End: + diff --git a/fonts/malvern/doc/maman.toc b/fonts/malvern/doc/maman.toc new file mode 100644 index 0000000000..b13d185e98 --- /dev/null +++ b/fonts/malvern/doc/maman.toc @@ -0,0 +1,56 @@ +\TOCentrysection{$ \textfont 0=\font 1 $}{Conventions used in this handbook}{2} +\TOCentrysubsec{$ \textfont 0=\font 1.1 $}{Citations and references}{2} +\TOCentrysubsec{$ \textfont 0=\font 1.2 $}{Syntax descriptions}{2} +\TOCentrysubsec{$ \textfont 0=\font 1.3 $}{Composite letters}{2} +\TOCentrysubsec{$ \textfont 0=\font 1.4 $}{Hyphens and dashes}{2} +\TOCentrysubsec{$ \textfont 0=\font 1.5 $}{Sundry quotation marks}{3} +\TOCentrysubsec{$ \textfont 0=\font 1.6 $}{How to refer to Malvern fonts}{3} +\TOCentrysection{$ \textfont 0=\font 2 $}{Malvern's font names}{4} +\TOCentrysubsec{$ \textfont 0=\font 2.1 $}{Numeric style codes}{4} +\TOCentrysubsec{$ \textfont 0=\font 2.2 $}{The style codes used with Malvern}{4} +\TOCentrysubsec{$ \textfont 0=\font 2.3 $}{\TeX \ font names}{4} +\TOCentrysubsec{$ \textfont 0=\font 2.4 $}{Naming Malvern fonts in Karl Berry's system}{5} +\TOCentrysection{$ \textfont 0=\font 3 $}{Using Malvern with \LaTeXe \ or NFSS\vn 2}{6} +\TOCentrysubsec{$ \textfont 0=\font 3.1 $}{Background to \LaTeXe }{6} +\TOCentrysubsec{$ \textfont 0=\font 3.2 $}{NFSS\vn 2}{6} +\TOCentrysubsec{$ \textfont 0=\font 3.3 $}{Malvern in NFSS\vn 2}{7} +\TOCentrysection{$ \textfont 0=\font 4 $}{Using Malvern with \LaTeX ~\n {2.09}}{7} +\TOCentrysubsec{$ \textfont 0=\font 4.1 $}{Using NFSS}{7} +\TOCentrysubsec{$ \textfont 0=\font 4.2 $}{Making fonts change size without NFSS}{8} +\TOCentrysubsec{$ \textfont 0=\font 4.3 $}{Which fonts to use with \LaTeX \ \n {2.09}}{9} +\TOCentrysection{$ \textfont 0=\font 5 $}{Using Malvern with plain \TeX : {\tt maamac.tex}}{9} +\TOCentrysubsec{$ \textfont 0=\font 5.1 $}{Ligatures}{9} +\TOCentrysubsec{$ \textfont 0=\font 5.2 $}{Special letters}{10} +\TOCentrysubsec{$ \textfont 0=\font 5.3 $}{Sundry symbols}{10} +\TOCentrysubsec{$ \textfont 0=\font 5.4 $}{Old-style and ranging numerals}{11} +\TOCentrysubsec{$ \textfont 0=\font 5.5 $}{Small captials}{11} +\TOCentrysection{$ \textfont 0=\font 6 $}{The encoding of Malvern fonts}{12} +\TOCentrysubsec{$ \textfont 0=\font 6.1 $}{The Malvern font-encoding conventions}{12} +\TOCentrysubsec{$ \textfont 0=\font 6.2 $}{Malvern A Encoding}{12} +\TOCentrysubsec{$ \textfont 0=\font 6.3 $}{Malvern B Encoding}{14} +\TOCentrysubsec{$ \textfont 0=\font 6.4 $}{Malvern C Encoding}{15} +\TOCentrysubsec{$ \textfont 0=\font 6.5 $}{Malvern G encoding}{15} +\TOCentrysection{$ \textfont 0=\font 7 $}{Composite letters used in some languages}{17} +\TOCentrysection{$ \textfont 0=\font 8 $}{Installation summary}{18} +\TOCentrysubsec{$ \textfont 0=\font 8.1 $}{Getting Malvern via FTP}{18} +\TOCentrysubsec{$ \textfont 0=\font 8.2 $}{Generic driver file}{18} +\TOCentrysubsec{$ \textfont 0=\font 8.3 $}{Malvern encodings}{18} +\TOCentrysubsec{$ \textfont 0=\font 8.4 $}{Malvern font names}{18} +\TOCentrysubsec{$ \textfont 0=\font 8.5 $}{Unpacking Malvern}{19} +\TOCentrysubsubsec{$ \textfont 0=\font 8.5.1 $}{Source files ({\tt /source})}{19} +\TOCentrysubsubsec{$ \textfont 0=\font 8.5.2 $}{Driver files ({\tt /drivers})}{19} +\TOCentrysubsubsec{$ \textfont 0=\font 8.5.3 $}{\TeX \ input files ({\tt /tex})}{19} +\TOCentrysubsubsec{$ \textfont 0=\font 8.5.4 $}{Documentation files ({\tt /doc}, {\tt /dvi})}{19} +\TOCentrysubsubsec{$ \textfont 0=\font 8.5.5 $}{Virtual font files ({\tt /vf})}{20} +\TOCentrysubsubsec{$ \textfont 0=\font 8.5.6 $}{Font metric files ({\tt /tfm})}{20} +\TOCentrysubsec{$ \textfont 0=\font 8.6 $}{Using mff to generate Malvern fonts}{20} +\TOCentrysubsec{$ \textfont 0=\font 8.7 $}{Generating Malvern fonts without mff}{20} +\TOCentrysubsubsec{$ \textfont 0=\font 8.7.1 $}{Values for {\it encoding}}{21} +\TOCentrysubsubsec{$ \textfont 0=\font 8.7.2 $}{Values for {\it weight}}{21} +\TOCentrysubsubsec{$ \textfont 0=\font 8.7.3 $}{Values for {\it hratio}}{22} +\TOCentrysubsubsec{$ \textfont 0=\font 8.7.4 $}{Values for {\it slant} and {\it italicness}}{22} +\TOCentrysection{$ \textfont 0=\font 9 $}{Copying Malvern and reporting bugs}{23} +\TOCentrysection{$ \textfont 0=\font 10 $}{Fontinst}{23} +\TOCentrysection{$ \textfont 0=\font 11 $}{To-do list}{24} +\TOCentrysection{$ \textfont 0=\font 12 $}{References}{25} +\TOCentrysection{$ \textfont 0=\font 13 $}{Index}{28} diff --git a/fonts/malvern/doc/pdcdcap.tex b/fonts/malvern/doc/pdcdcap.tex new file mode 100644 index 0000000000..458c2da737 --- /dev/null +++ b/fonts/malvern/doc/pdcdcap.tex @@ -0,0 +1,28 @@ +% pdcdcap.tex - drop capitals for start of paragraphs +% Copyright (C) 1990-1991 Damian Cugley + +\newcount\dropcaptmp + +% #1 -- font to use +% #2 -- letter to use as dropcap +% #3 -- rest of 1st word +% #4 -- second word of paragraph +% +\gdef\dropcap#1#2#3 #4 % +{% + \smallbreak % finish previous par + \setbox0=\hbox{#1hX\/}\dimen0=\ht0 + \setbox0=\hbox{hX}\advance\dimen0 by -\ht0 % d := ht(#1X) - ht(X) + \dropcaptmp=\dimen0 \advance\dropcaptmp+\hfuzz + \divide\dropcaptmp\baselineskip \global\advance\dropcaptmp +1 + % c := ((d + hfuzz)/bl + 1) + \message{bl=\the\baselineskip\space d=\the\dimen0 \space + c=\the\dropcaptmp } + \dimen0 = \dropcaptmp\baselineskip \advance\dimen0 by -\baselineskip + % d := (c - 1)*bl + \setbox0=\hbox{#1\kern-0.0555em#2\/}% + \setbox0=\hbox{\smash{\lower\dimen0 \box0 }}% + \hangindent=\wd0 \hangafter=-\dropcaptmp + {\parindent=0pt \leavevmode}% + \llap{\box0 }\uppercase{#3}\space \uppercase{#4}\space +} diff --git a/fonts/malvern/doc/pdcfmt.tex b/fonts/malvern/doc/pdcfmt.tex new file mode 100644 index 0000000000..9c16d8f366 --- /dev/null +++ b/fonts/malvern/doc/pdcfmt.tex @@ -0,0 +1,361 @@ +% pdcfmt.tex 1.1.9 1994/07/20 -- macros for larger-scale formatting of text +% Copyright 1991, 1992, 1993 P. Damian Cugley. + +%%% @TeX-macro-file { +%%% filename = "pdcfmt.tex", +%%% version = "1.1.9", +%%% date = "1994/07/20", +%%% package = "Malvern 1.1", +%%% author = "P. Damian Cugley", +%%% email = "damian.cugley@comlab.ox.ac.uk", +%%% address = "Oxford University Computing Laboratory, +%%% Parks Road, Oxford OX1 3QD, UK", +%%% codetable = "USASCII", +%%% keywords = "TeX, plain TeX, macros", +%%% supported = "Maybe", +%%% abstract = "Formatting macros for plain TeX documents.", +%%% dependencies = "pdcutil.tex", +%%% } + +%{{{ pdcfmt.tex +\begingroup\catcode`\%=12 \toks0={\endgroup + \gdef\version{1.1.9} \gdef\lastedit{pdc 1994/07/20} +}\the\toks0 +\message{\version\space \lastedit} +\ifx\utilsversion\UNDEFINED \input pdcutil \fi + +%{{{ \everypar -- \noindenttrue and \parbox + +\newif\ifnoindent +% If set then next paragraph is not indented + +\newbox\parbox +\newdimen\parboxsep \parboxsep=1pc +% box to go at left of current paragraph -- usually a \vtop or void: +% If not void then next paragraph is not indented, and +% the box is set \parboxsep from left margin. + +\everypar= +{% + \ifvoid\parbox + \ifnoindent {\setbox0=\lastbox}\global\noindentfalse \fi + % after \noindent this has no effect anyway + \else + {\setbox0=\lastbox}\global\noindentfalse % implied noindenttrue + \dp\parbox=0pt + \hbox to 0pt{\hss \box\parbox \hskip\parboxsep}% + \fi +} +%}}} +\newdimen\envindent \envindent=1pc % used when \parindent=0pt +\def\endenv +{ + \par + \ifdim\lastskip<\smallskipamount \removelastskip\smallskip \fi + \global\noindenttrue +} + % generic end of environ. +%{{{ Bullets + +\newcount\bulletlevel \bulletlevel=-1 +\def\bulletsign +{% + \ifcase\bulletlevel \bullet\or --\or \circ\else \cdot\fi +} + +\def\bullets +{% + \par + \advance\bulletlevel 1 + \def\\{\smallskip\noindent\llap{\bulletsign\enspace}\ignorespaces} + \ifdim\parindent>0pt + \advance\leftskip\parindent + \else + \advance\leftskip\envindent + \fi + \the\everybullets +} + +\let\endbullets=\endenv + +\newcount\enumerateitem +\def\enumerate +{% + \global\enumerateitem=0 + \def\bulletsign{\global\advance\enumerateitem1 \n{\the\enumerateitem}.}% + \bullets +} + +\let\endenumerate=\endbullets +%}}} +%{{{ Tagged + +\newdimen\taglabelwidth +\def\tagged % like bullets, but with tags +{% + \par + \def\\% + { + \smallskip\noindent + \setbox0=\hbox\bgroup % matched by \finishtag + \the\everytag\ignorespaces + \let\\\finishtag + } + \def\finishtag + { + \unskip\enspace\egroup % matches \\ + \ifdim \wd0 < \taglabelwidth + \wd0=\taglabelwidth + \llap{\box0}% + \else + \hskip-\taglabelwidth + \unhbox0 + \hfil\break + \vadjust{\nobreak}% + \fi + \ignorespaces + } + \ifdim\leftmargin=0pt + \ifdim\parindent>0pt + \envindent=2\parindent + \fi + \leftskip=\envindent + \taglabelwidth=\envindent + \else + \taglabelwidth=\leftmargin + \fi + \the\everytagged +} + +\let\endtagged=\endenv +%}}} +%{{{ Quotations + +\def\quotation +{ + \smallskip + \ifdim\parindent>0pt + \advance\leftskip\parindent % \advance\rightskip\parindent + \else + \advance\leftskip\envindent % \advance\rightskip\envindent + \fi + \noindenttrue + \the\everyquotation +} +\let\endquotation=\endenv +%}}} +%{{{ lines (for verbatim listings etc) + +\def\lines +{ + \smallskip\hrule\nobreak\smallskip + \obeylines + \parindent=0pt \parskip=0pt + \parfillskip=0pt plus 1fil + \the\everylines % user chooses font to use + \counta=0 \countb=5 \everypar{\linenum}% number lines + % % Cut into left margin to allow for at least 72 columns: + % \leftskip=-\leftmargin \advance\leftskip2em % space for ~3 digits + % \setbox0=\hbox{\tt x}\dimen0=-72\wd0 % estimate of 72 \tt characters + % \advance\dimen0\hsize + % \ifdim\leftskip<\dimen0 \leftskip=\dimen0 \fi + \let\end\linesend +} + +\let\normalend\end +{\obeylines \gdef\linesend#1^^M{\normalend #1 }} + +\def\endlines +{ + \par + \ifdim\lastskip<\smallskipamount \removelastskip\nobreak\smallskip \fi + \hrule\smallskip + \global\noindenttrue +} + +\def\linesskipped#1% +{% + \hskip20pt\strut$\vdots$\hskip20pt{\rm(\it #1 lines omitted\rm)}\par + \advance\counta#1\relax +} +%}}} +%{{{ Displays, Tables -- wrapper about \halign + +% \begin table #\hfil&#\cr +% ...&...\cr +% \end table + +\def\table +{ + \noindent + $$ % matching $$ is in \endtable + \halign \bgroup\indent +} +\def\endtable +{ + \crcr \egroup $$ % matches $$ in \table + \global\noindenttrue +} + +% Random displayed text +% +% \begin display +% ... [&...\cr...] +% \end display + + +\def\display +{% + $$% $$ for matching + \halign\bgroup\indent##\hfil&&\quad##\hfil\cr +} + +\def\enddisplay +{% + \crcr + \egroup% $$ for matching + $$ +} + +%}}} +%{{{ (E)BNF + +\def\bnf +{ + \nobreak\smallskip + \advance\leftskip2\parindent \parindent=-\parindent + \parskip=0.5\smallskipamount + \rightskip=1\rightskip plus 3em + \def\\{$\mid$} % use \\ for alternatives + \def\>{\unskip\enspace$::=$\enspace\ignorespaces} + \def|{`\begingroup\tt\setupverbatim\def|{\endgroup'}} + \chardef\*=`\* + \the\everybnf +} +\def\endbnf +{ + \smallskip + \global\noindenttrue +} + +\newtoks\everybnf + +%}}} +%{{{ headings + +\newdimen\leftmargin % size of left margin +% Set this to 0pt for headings in text, and > 0pt for left margin headingfs +% + +% #1 is skip before -- usu bigskip or medskip +% #2 is pre-text text -- usu. style: e.g. \headerfonts or just \bf +% #3 is post-text text -- e.g. to do a rule, maybe? +% #4 is text of heading +% +\newskip\headingtemp +\def\doheading#1#2#3#4% +{ + \ifdim\lastskip<#1\relax \removelastskip \vskip#1\relax \fi + \ifdim \leftmargin>0pt + \global\setbox\parbox=\vtop + {% + \hsize=\leftmargin \advance\hsize-\parboxsep + \parindent=0pt + \leftskip=0pt \rightskip=0pt plus 3em + \hyphenpenalty=10000 \exhyphenpenalty=5000 + \strut#2#4#3 + } + \else + \begingroup + \parindent=0pt \parfillskip=0pt plus 1fil + \leftskip=0pt \rightskip=0pt plus0.25\hsize + \hyphenpenalty=10000 \exhyphenpenalty=5000 + \strut#2#4#3 + \global\headingtemp=\baselineskip % sets fixed part only + \par + \endgroup + \advance\headingtemp-\baselineskip +% \advance\headingtemp\smallskipamount + \nobreak + \vskip 1.0\headingtemp + \smallskip + \noindenttrue + \fi +} + +% #1 is white space at top of page +% #2 is pre-text +% #3 is post-text +% #4 is text of heading +% +\def\newpageheading#1#2#3#4% +{ + \vfill\supereject % ensure no insertions still floating + \null\vskip#1\relax + \moveleft\leftmargin\vbox + { + \advance\hsize\leftmargin + \parindent=0pt \parfillskip=0pt plus 1fil + \leftskip=0pt \rightskip=0pt plus0.25\hsize + \hyphenpenalty=10000 \exhyphenpenalty=5000 + \strut#2#4#3 + \global\headingtemp=\baselineskip % sets fixed part only + \par + } + \advance\headingtemp-\baselineskip + \advance\headingtemp\smallskipamount + \vskip \headingtemp + \smallskip + \noindenttrue + \def\tmp{#4} + \message{*\expandafter\TOCtrim\meaning\tmp. } +} +%}}} +%{{{ footnotes + +\newcount\notecount % initially 0 +\def\note +{% + \global\advance\notecount+1 + \footnote{\number\notecount}% +} + +\catcode`\@=11 % See TeXbook p.363: +\def\footnote#1{\let\@sf\empty + \ifhmode\edef\@sf{\spacefactor\the\spacefactor}\/\fi + \flushtop{\footnotetextmark{#1}}\@sf\vfootnote{#1}} +\def\vfootnote#1% +{\insert\footins\bgroup % matched by \@foot + \interlinepenalty=\interfootnotelinepenalty + \leftskip=0pt + \the\everyfootnote + \splittopskip=\ht\strutbox \splitmaxdepth=\dp\strutbox + \floatingpenalty=20000 + \indent\footstrut + \ifdim\parindent>1em + \llap{\footnotenotemark{#1}\enspace}% + \else + \footnotenotemark{#1}\enspace + \fi + \futurelet\next\fo@t +} +\def\@foot{\smallskip\egroup} +\catcode`\@=12 +\def\footnotetextmark#1{$^{#1}$} +\def\footnotenotemark#1{$^{#1}$} +%}}} +%{{{ Hooks + +\newtoks\everybullets +\newtoks\everytagged +\newtoks\everytag % e.g., \everytag={\bf} +\newtoks\everyquotation % e.g., \everyquotation={\smallfonts} +\newtoks\everylines +\newtoks\everyfootnote +\newtoks\everyfootnotemark%} }} +%}}} pdcfmt.tex + +%Local variables: +%fold-folded-p:t +%tex-macros-p:t +%End: diff --git a/fonts/malvern/doc/pdcfsel.tex b/fonts/malvern/doc/pdcfsel.tex new file mode 100644 index 0000000000..0333142282 --- /dev/null +++ b/fonts/malvern/doc/pdcfsel.tex @@ -0,0 +1,209 @@ +%{{{ pdcfsel.tex 1.1.6 92/07/17 -- basic font loading +% started - Damian Cugley <pdc@prg.ox.ac.uk> Tue. 23 Apr. 1991 +{\catcode`\%=12 \gdef\ldfontsversion{1.1.6 <pdc 92/07/17>}} +% \catcode for SCCS's sake + +\ifx\utilsversion\UNDEFINED \input utils \fi +\counta=\catcode`\_ \catcode`\_=11 + +%{{{ setting the AUTOLOAD flag + +% If autoloading is true then the magnification and fonts used +% are written to a file \jobname.fnt in the hope that it will be +% possible to create them easily using the mff program. + +\newwrite\font_list +\newif\if_autoloading + +\def\autoloadfonts % set autoload flag to TRUE +{ + \_autoloadingtrue + \immediate\openout\font_list=\jobname.fnt + \def\setmag##1{\writemag{##1}\mag##1\relax} +} + +\def\setmag#1{\mag=#1\relax \write_mag } + +\def\write_mag#1% #1 is file #2 is mag +{{% + \def\magstep##1{\ifcase##1 1000\or1200\or1440\or1728\or2074\or2488\fi}% + \edef\tmp{-s #1}% + \write\font_list\tmp +}} + +%}}} +%{{{ how to set up the csname for one font + +% All parameters are token strings +% #1 is fontset name, e.g., body +% #2 is the size part of external name +% -- either ` at 12pt' or `12' +% #3 is fam name -- e.g., rm +% #4 is "external" name sans size info -- e.g., cmbx +% This does the equivalent of \font\bodyrm=cmbx12 +% except if autoloading then the actual \font is delayed. +\def\ld_font#1#2#3#4% +{\expcs\ifx{#1#3}\relax + \if_autoloading + \expcs\edef{#1#3}% + {% + \write\font_list{#4#2}% make note that font used + \def\noexpand\subfont + {\global\font\noexpcs{#1#3}=cmr10 }% use i\subfont if not found + \global\font\noexpcs{#1#3}=#4#2\relax % load the font + \noexpand\everyloadfont\noexpcs{#1#3}{#4#2}% hook + \expcs\noexpand{#1#3}% and select it + }% + \else + \global\expcs\font{#1#3}=#4#2\relax + \expcs\everyloadfont{#1#3}{#4#2}% + \fi + \else + % The font is already loaded; call \everyloadfont anyway + \expcs\everyloadfont{#1#3}{#4#2}% + \fi +} + +% Ad-hoc laoding of fonts by user +% #1 is csname +% #2 is tokens for external name +\def\ldfont#1#2% +{% + {\escapechar=-1\xdef\ldfont_tmp{{\string#1}}}% get name sans \ + \expandafter\ld_font\ldfont_tmp{#2}{}{}% +}% +%{% +% \if_autoloading \write\font_list{#2}\fi +% \def\subfont{\font#1=cmr10 }% +% \global\font#1=#2\relax +% \everyloadfont#1{#2}% +%} + +% Hook for user's customization +% #1 is one token, the csname of the newly-loaded font +% #2 is token string that is its external name +\def\everyloadfont#1#2{} +%}}} +%{{{ how to set up a fontset + +% fontset map macro: +% \FOOmap is of form {\m{rm}{ma}[\@]\f{it}{mai}...} +% \f -- non-maths font +% \m -- maths font (has \textfont and \scriptfont) +% \M -- ditto plus \scriptscriptfont + +% Set up a fontset +% #1 is name +% #2 is \FOOmap +% #3 is size +% #4 is baselineskip +% #5 is script (fontset name) +% #6 is scriptscript +\def\fontset#1#2#3#4#5#6% +{ + \xfontset{#1}{#2}{#3} + % + % set up the \bodyfonts macro + \expcs\edef{#1fonts}% + {% + \if_autoloading \expcs\noexpand{#1mathsfonts}\fi + \noexpand\set_short_names{#1}{#5}{#6}\noexpand#2% + % \def\rm{...}... + % \textfont\rmfam\bodyrm + \noexpand\set_baseline{#4}% set \baselineskip etc. + \noexpand\rm + } + \if_autoloading + % set up \bodymathsfonts macro + \expcs\def{#1mathsfonts}{\force_maths_fonts{#1}{#5}{#6}#2} + \fi +} + +% xfontset can be used to make a fontset that is never selected +% in its own right -- e.g., used for maths subscripts only +% +% #1 is name +% #2 is map macro +% #3 is size +\def\xfontset#1#2#3% +{ + % call \ld_font for each font: + \def\f##1##2{\ld_font{#1}{#3}{##1}{##2}} + \let\m=\f \let\M=\f + \def\@##1##2##3{\ld_font{#1}{ at #3pt }{##2}{##3}}% + #2 +} + +% Set up the \rm style names and the \textfont etc. vectors +% #1 -- fontset name -- e.g., body +% #2 -- script -- e.g., small +% #3 -- scriptscript -- e.g., tiny +% followed by map macro +\def\set_short_names#1#2#3% +{% + \let\@\relax + \def\f##1##2% + {% + \expcs\edef{##1}{\noexpcs{#1##1}}% has to be def'd not let'd + }% + \def\m##1##2% + {% + \expcs\textfont{##1fam}\csname#1##1\endcsname + \expcs\scriptfont{##1fam}\csname#2##1\endcsname + \expcs\edef{##1}{\fam\expcs\noexpand{##1fam}\expcs\noexpand{#1##1}}% + }% + \def\M##1% + {% + \expcs\scriptscriptfont{##1fam}\csname#3##1\endcsname + \m{##1}% + }% +} + +\def\set_baseline#1% +{% + \baselineskip#1\relax \normalbaselineskip\baselineskip + \jot0.25\baselineskip + \smallskipamount 0.25\baselineskip plus 0.083\baselineskip + minus 0.083\baselineskip + \medskipamount 0.5\baselineskip plus 0.167\baselineskip + minus 0.167\baselineskip + \bigskipamount 1\baselineskip plus 0.333\baselineskip + minus 0.333\baselineskip + \abovedisplayskip=\medskipamount + \abovedisplayshortskip=\abovedisplayskip + \advance\abovedisplayshortskip-1\abovedisplayskip + \belowdisplayskip=\medskipamount + \belowdisplayshortskip=\smallskipamount +} + +% Force all the fonts used in maths to be loaded -- +% then redefine #1mathsfonts to be \relax +% #1 -- fontset name +% #2 -- script fontset name +% #3 -- scriptscript fontset name +\def\force_maths_fonts#1#2#3% +{% + %\message{Loading maths fonts for #1...}% + \let\@\relax + \def\f##1##2{}% + \def\m##1##2{\csname#1##1\endcsname \csname#2##1\endcsname}% + \def\M##1{\csname#3##1\endcsname \m{##1}}% + \global\expcs\let{#1mathsfonts}\relax +} +%}}} +%{{{ example fontset templates + +\chardef\rmfam=0 +\chardef\mifam=1 +\chardef\syfam=2 +% \itfam \bffam \ttfam \slfam set in plain.tex + +%}}} + +\catcode`\_=\counta +%}}} pdcfsel.tex + +%Local variables: +%fold-folded-p: t +%tex-macros-p: t +%End: diff --git a/fonts/malvern/doc/pdchyex.tex b/fonts/malvern/doc/pdchyex.tex new file mode 100644 index 0000000000..6686b7a164 --- /dev/null +++ b/fonts/malvern/doc/pdchyex.tex @@ -0,0 +1,38 @@ +\lefthyphenmin=2 \righthyphenmin=3 \uchyph=0 + +\hyphenation +{ + anth-ro-po-morphic + art-iest cig-ar-ette + bio-logy bio-chem-ic-al bio-chem-is-try + boy-friend + Brit-ain Brit-ish + com-ic com-ics Com-ic Com-ics + con-fuse con-fused Cug-ley + dogs-body + Dor-mouse + Gai-man + graph-ic + im-med-i-ate im-med-i-ately issue + McKean + mis-hap mis-haps + news-letter news-paper + Night-crawler + origin-ally origin-ator + phys-ique phys-iques + porn-o-graphy porn-o-graphic + rec-om-mend-ation + Ser-geant ser-geant + Sien-kie-wicz + spon-tan-e-ous spon-tan-e-ously + stop-ped + strip-ped + teen-ager teen-agers + tem-per-men-tal + Thatch-er-ism Thatch-er-ite + under-ground under-grounds + var-i-able + venge-ance + Warp-smith Warp-smiths + whirl-pool +} diff --git a/fonts/malvern/doc/pdcidx.tex b/fonts/malvern/doc/pdcidx.tex new file mode 100644 index 0000000000..393049d234 --- /dev/null +++ b/fonts/malvern/doc/pdcidx.tex @@ -0,0 +1,133 @@ +%{{{ %M% 1.%I% pdc %E% -- indexing macros + +%%Requires: utils.tex + +% This is the interface to the makeindex program + +\message{starting index file} +\newwrite\idxfile +\openout\idxfile=\jobname.idx + +% Use Knuth's ^ and ^^ notations. +\newif\ifsilentidx +\def\idxcirk{\ifmmode\def\next{^}\else\let\next=\idxbegin\fi\next} +\def\idxbegin{\futurelet\next\idxbeginswitch} +\def\idxbeginswitch +{% + \ifx\next\idxcirk + \let\next=\idxsilent + \else + \silentidxfalse + \let\next=\idx + \fi + \next +} +\catcode`\^=13 \let^=\idxcirk +\macappend\verbatimplains{\\\^} +\def\idxsilent^{\silentidxtrue\idx} + +% ^{foo} ^|foo| ^|\foo| ^<foo> ^$foo$ +\def\idx{\futurelet\next\idxswitch} +\def\idxswitch +{% + \begingroup + \ifx\next|% + \aftergroup\vidx + \else\ifx\next\<% + \aftergroup\angleidx + \else\ifx\next$% $ for bracket matching + \aftergroup\mathsidx + \else\ifx\next"% $ for bracket matching + \aftergroup\quotedidx + \else + \aftergroup\normalidx + \fi\fi\fi\fi + \endgroup +} +\def\vidx|% +{% + \catcode`\\=13 % prevent "\" from forming control sequences + \futurelet\next\vidxswitch +} +\def\vidxswitch% +{% + \catcode`\\=0 + \ifx\next\empty % ^|\foo| + \let\next\csidx + \else % ^|foo| + \let\next\noncsidx + \fi + \next +} +{\catcode`\@=0 \catcode`\\=13 +@gdef@csidx\#1|% +{% + @def@next{{@tt@char`@\#1}}% + @edef@text{#1}% + @emitidx +}} +\def\noncsidx#1|% +{% + \def\next{{\tt#1}}% + \edef\text{#1}% + \emitidx +} +{\catcode`\@=0 \catcode`\\=13 @gdef\{}} % make "\" ifx-equivalent to \empty + +\def\angleidx\<#1>% +{% + \def\next{\<#1>}% + \def\text{#1}% + \emitidx +} +\def\mathsidx$#1$% +{% + \def\next{$#1$}% + \def\text{#1}% + \emitidx +} +\def\quotedidx"#1"% +{% + \def\next{""#1""}% + \def\text{#1}% + \emitidx +} +\def\normalidx#1% +{% + \def\text{#1}% + \let\next=\text + \emitidx +} + +\def\emitidx +{% + \edef\writeit + {% + \write\idxfile{\string\idx{\expandafter\gobbleARROW\meaning\text + \ifx\text\next\else + @\expandafter\gobbleARROW\meaning\next + \fi}{\noexpand\folio}}% + }% + \writeit + \ifsilentidx \ignorespaces \else \next \fi +} +\def\gobbleARROW#1:->{} + +% The simple case -- write the parameter to the file +\def\index#1{\def\next{#1}\let\text=\next \silentidxtrue\emitidx} +{\plain| + \gdef\dfnidx#1{\index{#1|idxunderline}} + \gdef\qdfnidx#1{\index{#1@""#1""|idxunderline}} +} +\def\ttidx#1{^|#1|} + +% Things that go after `|': +\def\idxunderline#1{$\underline{\hbox{#1}}$} +\def\see#1#2{{\it see}\space #1} + +%}}} %M% + +% Local variables: +% fold-folded-p: t +% tex-macros-p: t +% End: diff --git a/fonts/malvern/doc/pdcimth.tex b/fonts/malvern/doc/pdcimth.tex new file mode 100644 index 0000000000..53b43bb905 --- /dev/null +++ b/fonts/malvern/doc/pdcimth.tex @@ -0,0 +1,25 @@ +% pdcimth.tex 1.1.2 91/12/12 -- make maths use text italic family for letters +% Very few RL families have separate maths and text italic fonts. + +% count0 -- mathcode for current u.c. char +% count1 -- mathcode for current l.c. char +% count2 -- ASCII code of current u.c. char +% count3 -- ASCII code of current l.c. char +% count4 -- number of character left to redefine + +\begingroup % preserve values of count registers + + \count0=\itfam \multiply\count0 256 \advance\count0"7000 \count1=\count0 + \advance\count0+`A \advance\count1+`a + \count2=`A \count3=`a + \count4=26 + + \loop + \ifnum\count4>0 + \advance\count4-1 + \global\mathcode\count2=\count0 \global\mathcode\count3=\count1 + \advance\count0+1 \advance\count1+1 + \advance\count2+1 \advance\count3+1 + \repeat + +\endgroup diff --git a/fonts/malvern/doc/pdcmigr.tex b/fonts/malvern/doc/pdcmigr.tex new file mode 100644 index 0000000000..38a867f2fd --- /dev/null +++ b/fonts/malvern/doc/pdcmigr.tex @@ -0,0 +1,14 @@ +% mitgreek.tex 1.1 -- use CMMI for upper-case Greek letters +% (1) more consistent and (2) works when no greek in \rm font + +\mathchardef\Gamma = "7100 +\mathchardef\Delta = "7101 +\mathchardef\Theta = "7102 +\mathchardef\Lambda = "7103 +\mathchardef\Xi = "7104 +\mathchardef\Pi = "7105 +\mathchardef\Sigma = "7106 +\mathchardef\Upsilon = "7107 +\mathchardef\Phi = "7108 +\mathchardef\Psi = "7109 +\mathchardef\Omega = "710A diff --git a/fonts/malvern/doc/pdcoput.tex b/fonts/malvern/doc/pdcoput.tex new file mode 100644 index 0000000000..c215809fa8 --- /dev/null +++ b/fonts/malvern/doc/pdcoput.tex @@ -0,0 +1,432 @@ +% pdcoput.tex 4.1.6 1994/07/20 -- output routines for Stomping Scene +% Copyright 1994 P. Damian Cugley + +%%% @TeX-macro-file { +%%% filename = "pdcoput.tex", +%%% version = "4.1.6", +%%% date = "1994/07/20", +%%% package = "Malvern 1.1", +%%% author = "P. Damian Cugley", +%%% email = "damian.cugley@comlab.ox.ac.uk", +%%% address = "Oxford University Computing Laboratory, +%%% Parks Road, Oxford OX1 3QD, UK", +%%% codetable = "USASCII", +%%% keywords = "TeX, plain TeX, output routine", +%%% supported = "Maybe", +%%% abstract = "An output routine for Plain TeX docs.", +%%% dependencies = "pdcutil.tex", +%%% } + +% See the Malvern Handbook (maman.tex) for more info about Malvern. +% This software is available freely but without warranty. +% See the file COPYING for details. + +%{{{ pdcoput.tex +%{{{ preamble +\ifx\utilsversion\UNDEFINED \input pdcutil \fi + +\begingroup\catcode`\%=12 \toks0={\endgroup + \def\pdcoputversion{4.1.6 <pdc 1994/07/20>} +}\the\toks0 +\message{\pdcoputversion} + +%}}} preamble +%{{{ parameters + +\newdimen\paperwd \newdimen\paperht % Size of paper +\newdimen\bodywd \newdimen\bodyht % size of page body (text etc.) +\newdimen\gridwd \newdimen\gridht % size of grid slots +\newdimen\colwd \newdimen\colht % width & height of text columns + +\newdimen\topmarge \topmarge=20mm +\newdimen\outmarge \outmarge=20mm +\newdimen\innmarge \innmarge=20mm +\newdimen\botmarge \botmarge=27mm +% Size of top, bottom, inner and outer margins between paper edge and +% edge of page body. +% botmarge is an approximation -- the margin at bottom will be +% increased slightly in order to make \bodyht a good value wrt +% \baselineskip. + +\newskip\headlineskip % distance betw baselines of headline & 1st body line +\newskip\footlineskip % ditto for footline +\headlineskip=10mm \footlineskip=10mm + +\newdimen\outputrule \outputrule=0.1mm % default thickness for rules + +\newdimen\caprule \caprule=\outputrule +\newskip\capsep \capsep=5mm +% rule and separation between caption and body text + +\newdimen\colrule \colrule=\outputrule +\newdimen\colsep \colsep=5mm +% ditto for between columns + +\newcount\ncols \ncols=1 +% Number of columns + +\newbox\partialpage % stores partial pages when balancing columns + +\newbox\topbox \newbox\botbox % vboxes placed around body +\newbox\leftbox \newbox\rightbox % hboxes placed around body + +\chardef\pagebox=255 + +\let\collist\empty % list macro of \makecolumns +\let\pagelist\empty % list macro of \makepages + +\newtoks\everypage % expanded at start of vbox being shipped out +\newtoks\everycaption % expanded at start of every caption + +%}}} parameters +%{{{ make a column (vbox) + +\newdimen\toptotal \newdimen\bottotal + +% Helper macro -- calculate total size of space + caption for +% top/bot of a column +% #1 <dimen name> caculate total into here +% #2 <8-bit number> place cap in this box +% #3 <dimen> space to be left +% #4 text text of caption, or empty +\def\calctotal#1#2#3#4% +{% + \setbox#2=\vbox{\the\everycaption#4}% + #1=\ht#2% + \advance#1\baselineskip \advance#1-1sp + \divide#1\baselineskip \multiply#1\baselineskip + \advance#1#3% + \ifdim#1>0pt \advance#1\capsep \fi +} + +% Create one column of stuff of height \colht, as a vbox +% If \capsep=\baselineskip and captions done in fonts of same +% baselineskip as body, then baselines should all line up neatly +% (this takes some doing!). +% #1 <dimen> space at top of col +% #2 text text of top caption, or empty +% #3 <8-bit number> box to make middle out of +% #4 text text of bot cap, or empty +% #5 <dimen> space at bottom of col +\def\makecolumn#1#2#3#4#5% +{% + \vbox to \colht + { + \calctotal\toptotal0{#1}{#2}% + \calctotal\bottotal2{#5}{#4}% + % + % Chop off enough text to fill in gap: + % + \dimen0=\colht + \ifvoid\footins\else % allow space for footnotes + \advance\dimen0-\ht\footins + \advance\dimen0-\skip\footins + \fi + \ifvoid\topins\else % allow for a \topinsert as well + \advance\dimen0-\ht\topins + \advance\dimen0-\skip\topins + \fi + \advance\dimen0-\toptotal + \advance\dimen0-\bottotal + % + \splittopskip=\topskip + \splitmaxdepth=\maxdepth + \setbox1=\vsplit#3to\dimen0 + % + % Sandwich it all together: + \kern\toptotal + \ifdim \toptotal>0pt + \vbox to 0pt + { + \vss + \box0 +%%%% \kern-\dp\strutbox + \capseprule + \kern-\dp\strutbox + \kern\baselineskip + \kern-\topskip + } + \fi + \ifvoid\topins\else \unvbox\topins \vskip\skip\topins \fi + \dimen0=\dp1 % this will be prevdepth for bot caption + \ifvoid1 \vfil \else \unvbox1 \fi + \ifvoid\footins \else + \vskip\skip\footins + \footnoterule + \dimen0=\dp\footins % revise prevdepth-to-be + \unvbox\footins + \fi + \ifdim \bottotal>0pt + \vbox to 0pt + { + \prevdepth=\dimen0 + \capseprule + \vtop{\unvbox2 } + \vss + } + \kern\bottotal + \fi + \kern-\dimen0 + }% +} + +\def\capseprule +{% + \hbox to \colwd + {% + \dimen0=0.5ex \advance\dimen0-0.5\caprule + \dimen1=\dimen0 \advance\dimen1\caprule + \strut + \vrule height \dimen1 depth-\dimen0 width\colwd + }% +} + +%}}} make a column +%{{{ make body part of page (hbox) + +% Generate a column of text to be put in the current page body +\def\makecolumnfromcollist#1% +{% + \ifx\collist\empty + \makecolumn{0pt}{}{#1}{}{0pt}% + \else + \glop\temp\collist + \temp + \fi +} + +\def\makebody#1% +{% + \hbox to \bodywd + {% + \ifvoid\leftbox\else + \box\leftbox + \hfil \vrule width \colrule \hfil + \fi + \counta=\ncols + \makecolumnfromcollist{#1}% + \loop \ifnum\counta>1 + \hfil \vrule width \colrule depth 0pt \hfil + \makecolumnfromcollist{#1}% + \advance\counta -1 + \repeat + \ifvoid\rightbox\else + \hfil \vrule width \colrule \hfil + \box\rightbox + \fi + }% +} + +%}}} make insides of page (hbox) +%{{{ make a page (vbox) + +% Generate a box to be shipped out as the current page. Used in \output. +\def\makepage +{% + \vbox + { + \special{papersize=\the\paperwd,\the\paperht}% + \colht=\bodyht \advance\colht-\ht\partialpage + \advance\colht-\ht\topbox \advance\colht-\ht\botbox + \the\everypage + \makeheadline \nointerlineskip + \box\partialpage + \box\topbox + \ifx\pagelist\empty + \makebody\pagebox + \else + \glop\temp\pagelist + \temp + \fi + \unvbox\botbox + \makefootline + }% +} + +% Generate vertical meterial with zero height to produce the headline. +% Expanded at very top of vbox being shipped out, +% immediately after the \everypage tokens have been read. +% Used in \makepage. +\def\makeheadline +{ + \vbox to 0pt + { + \skip0=\topskip \advance\skip0-2\ht\strutbox + \advance\skip0-\headlineskip + \vskip\skip0 + \hbox to \bodywd{\strut\the\headline} + \vss + } +} + +% Generate vertical material that gives the footline of the page. +% Expanded immediately after the botbox, as the last thing in the +% box that is shipped out. (Does not need to be zero-height). +\def\makefootline +{{ + \baselineskip=\footlineskip + \hbox to \bodywd{\the\footline} +}} + +%}}} make a page (vbox) +%{{{ output + +\def\ssoutput +{% + \ifodd\pageno \hoffset=\innmarge \else \hoffset=\outmarge \fi + \advance\hoffset-1 true in + \voffset=\topmarge + \advance\voffset-1truein + \shipout\makepage \advancepageno + \ifnum\outputpenalty>-20000 \else \dosupereject \fi + \unvbox\pagebox +} + +\output={\ssoutput} + +%}}} output +%{{{ automated column setting + +% User macro -- set paper size and other corresponding dimens +% Use when body font + baselineskip have already been selected. +% #1 <dimen> width +% #2 <dimen> height +\def\setpaper#1#2% +{% + \paperwd=#1% + \paperht=#2% + \calcbodywdht + \calctopskip +} + +% helper macro -- set bodywd, bodyht +\def\calcbodywdht +{ + \bodywd=\paperwd \advance\bodywd-\outmarge \advance\bodywd-\innmarge + \bodyht=\paperht \advance\bodyht-\topmarge \advance\bodyht-\botmarge + \calctopskip +} + +% set topskip to suit current font +% bodyht is munged to be of the form N*baselineskip + topskip +\def\calctopskip +{ + \setbox0=\hbox{Xbl()!gyJQ,} + \topskip=\ht0 \maxdepth=\dp0 + \advance\bodyht-\topskip \divide\bodyht \baselineskip + \multiply\bodyht \baselineskip \advance\bodyht\topskip +} + +% helper macro +% set hsize and vsize appropriate to current #cols, topskip, bodyht, +% and bodywd +% if bodyht = N * baselineskip + topskip, for some N, then set +% vsize to ncols * (N + 1) * baselineskip - baselineskip + topskip +\def\sethsizevsize +{ + \hsize=\colwd + \vsize=\bodyht + \advance\vsize-\topskip \advance\vsize\baselineskip \multiply\vsize\ncols + \advance\vsize-\baselineskip \advance\vsize\topskip +} + +% User macro +% divide into grid of n, with k grid widths making 1 column of body +% #1 <number> number of grid slots making up body width +% #2 <number> number of grid slots making up one column +% so there will be floor(#1/#2) body columns per page +\def\setnkgrid#1#2% +{% + \gridwd=\bodywd + \advance\gridwd-#1\colsep \advance\gridwd\colsep \divide\gridwd by #1 + \colwd=#2\gridwd \advance\colwd#2\colsep \advance\colwd-\colsep + \ncols=#1 \divide\ncols#2 + \gridht=\baselineskip + \capsep=\gridht + \sethsizevsize +} + +% User macro +% divide into n columns +% #1 <number> number of columns per page +\def\setncolumns#1% +{% + \colwd=\bodywd + \advance\colwd-#1\colsep \advance\colwd\colsep \divide\colwd by #1 + \gridwd=\colwd + \ncols=#1 + \sethsizevsize +} + +\def\setpaperA#1% +{ + \ifcase#1 + \setpaper{841mm}{1189mm}\or % A0 + \setpaper{594mm}{841mm}\or % A1 + \setpaper{420mm}{594mm}\or % A2 + \setpaper{297mm}{420mm}\or % A3 + \setpaper{210mm}{297mm}\or % A4 + \setpaper{148mm}{210mm} % A5 + \else + \errmessage{Dunno how big DIN A#1 paper is, sorry.} + \fi +} +% default settings (using default font): +\setpaperA4 +\setncolumns1 + +%}}} automated column setting +%{{{ balancing columns + +% Knuth's rigid balancing routine TeXbook App. D Sec. 7 (p. 396--397) + +\newcount\RGDncols \newdimen\RGDtopskip \newif\ifRGDfirstcol +\newtoks\RGDsep + +% Take a rigid, regular box, and split into several approx equal +% columns. Produces assignments followed by a box -- this can be +% retrieved using \lastbox. +% #1 <8-bit number> box to chop +% #2 <number> #columns to make +% #3 <dimen> value of \topskip for box +% #4 <dimen> width of the whole shebang +% #5 TeX code what goes between columns (e.g., \hfil) +\def\rigidbalance#1#2#3#4#5% +{% + \setbox0=\box#1\relax \RGDncols=#2\relax \RGDtopskip=#3\relax \RGDsep={#5}% + \hbox to #4\relax + {% + \splittopskip=\RGDtopskip \vbadness=10000 + \RGDfirstcoltrue + \valign{##\vfil\cr \doRGDsplits}% + }% +} + +% recursive helper function for above - produces the valign's body +\def\doRGDsplits +{% + \ifnum\RGDncols>0 + % if not first folumn, put in separator + \ifRGDfirstcol + \global\RGDfirstcolfalse + \else + \noalign{\the\RGDsep}% + \fi + % split off one column (see TeXbook for justification + % for this value of \dimen0): + \dimen0=\ht0 \divide\dimen0 \RGDncols \advance\dimen0 \RGDtopskip + \setbox1=\vsplit0 to \dimen0 + \unvbox1 + % + \global\advance\RGDncols-1 + \cr + \doRGDsplits + \fi +} + +%}}} balancing columns +%}}} pdcoput.tex +%Local variables: +%fold-folded-p: t +%tex-macros-p: t +%End: diff --git a/fonts/malvern/doc/pdcpars.tex b/fonts/malvern/doc/pdcpars.tex new file mode 100644 index 0000000000..cc945db6a5 --- /dev/null +++ b/fonts/malvern/doc/pdcpars.tex @@ -0,0 +1,301 @@ +%{{{ pdcpars.tex 1.1.9 1994/06/23 -- Misc paragraph macros +% Copyright (c) 1991-1994 Damian Cugley. +\begingroup\catcode`\%=12 \toks0={\endgroup + \gdef\version{1.1.9} \gdef\lastedit{pdc 1994/06/23} +}\the\toks0 +\message{\version\space \lastedit} +\ifx\utilsversion\UNDEFINED \input pdcutil \fi + +% Permission is granted to distribute verbatim copies if this file provided +% this copyright and permisions is preserved in all copies. + +% Permission is granted to distribute modified versions of this file +% provided: +% -- no deletions are made (but you can comment things out); +% -- this copyright and permissions are preserved; and +% -- it is called something else (so as to prevent confusion). + +%{{{ Active characters + +\def\active#1{\catcode`#1=13 } +\def\plain#1{\catcode`#1=12 } + +\def\minus{-} % \let isn't good enuf + +{\active\^^M \gdef\obeylines{\active\^^M\let^^M=\par}}% +\def\obeyspaces{\active\ } +% Necessary because knuth uses \active to mean 13 +%}}} +%{{{ Macros for making symbols etc + +\def\overstrike#1#2% Used to fudge some characters +{{% + \leavevmode + \setbox1=\hbox{#1}\setbox2=\hbox{#2}% + \dimen0=\wd1 \ifdim\dimen0<\wd2 \dimen0=\wd2\fi % d0 := max(wd1, wd2) + \rlap{\hbox to \dimen0{\hss#1\hss}}\hbox to \dimen0{\hss#2\hss}% +}} + +\def\flushtop#1% +{{% + \setbox0=\hbox{#1}\setbox1=\hbox{X}% + \dimen0=\ht1 \advance\dimen0-\ht0 % d0 := ht(``X'') - ht(#1) + \raise\dimen0\box0 +}} + + +% \chdef CSNAME=cfxx \defs CSNAME to produce a math char with +% class c, using sym xx from family f +% Outside of maths mode, CSNAME produces the plain character +% Used so that \bullet etc. can be used out of maths mode... + +\def\chdef#1=#2#3#4#5% +{\def#1{\ifmmode + \mathchar"#2#3#4#5 + \else + \mathhexbox#3#4#5% + \fi} +} + +% \deldef CSNAME=cfxxFXX +% Similar except for thigns that are delimiters in maths mode. +% FXX gives ``large'' symbol + +\def\deldef#1=#2#3#4#5#6#7#8% +{\def#1{\ifmmode + \delimiter"#2#3#4#5#6#7#8 + \else + \mathhexbox#3#4#5% + \fi} +} +%}}} +%{{{ Various symbols + +\chdef\bullet = 220F +\chdef\cdot = 2201 +\chdef\times = 2202 +\chdef\* = 002A % raised asterisk + +\deldef\langle = 426830A +\deldef\rangle = 526930B +\deldef\lbrace = 4266308 \let\{=\lbrace +\deldef\rbrace = 5267309 \let\}=\rbrace + +\def\poundsign{{\it\char36}} % plain TeX method +\def\yensign{\overstrike=Y} % ick + +\def\hyphen{\ifmmode\hbox{-}\else-\fi} +\def\shortdash{\ifmmode\hbox{--}\else--\fi} +\def\longdash{\ifmmode\hbox{---}\else---\fi} + +\def\tttilde{\leavevmode\lower 0.5ex\hbox{\tt\char`\~}} +\def\ttcirc{\leavevmode\lower 0.5ex\hbox{\tt\char`\^}} +\def\ttlq{\leavevmode\lower 0.125ex\hbox{\tt\char18}} +\def\ttrq{\leavevmode\lower 0.125ex\hbox{\tt\char19}} +\def\ttvert{{\tt\char`\|}} + +\def\Mc{M\flushtop{\the\scriptfont\fam \b{c}}} + % \Mc Gregor -> McGregor + +%}}} +%{{{ Various logos etc + +\def\LaTeX{L\negthinspace\flushtop{a}\kern-0.05em\TeX} +%\def\AmSTeX{{\the\textfont2 A}\kern-.1667em\lower.5ex\hbox +% {\the\textfont2 M}\kern-.125em{\the\textfont2 S}-\TeX} +\def\AMSTeX{AMS-\TeX} +\def\AMSLaTeX{AMS-\LaTeX} +\def\BibTeX{Bib\!\TeX} + +%}}} +%{{{ Date and time-of-day + +\def\shortdates +{\def\today + {{\sfcode`\.=1000 \n{\number\day} + \ifcase\month\or + Jan. \or Feb. \or Mar. \or Apr. \or May \or June \or + July \or Aug. \or Sept. \or Oct. \or Nov. \or Dec. + \fi + \n{\number\year}% + }} +} + +\def\longdates +{\def\today + {\n{\number\day} + \ifcase\month\or + January \or February \or March \or April \or May \or June \or + July \or August \or September \or October \or November \or December + \fi + \n{\number\year}% + } +} + +\shortdates + +\newcount\hour \newcount\minute +\hour=\time \global\divide\hour by 60 % H = T/60 +\minute=-\hour \multiply\minute by 60 \advance\minute\time + % M = T - 60*H = T\60 + +\def\nnumber#1{\ifnum#1<10 0\fi\number1} +\def\timeofday{\n{\number\hour}:\n{\nnumber\minute}} +%}}} +%{{{ Numerals + +% Numbers in a text context -- \n{12,345-56} +% commas become thinspaces in scientific numerals +% full stop becomes decimal point +% hyphen becomes shortdash (for ranges) +% \minus for minus sign + +\begingroup\active\- + \gdef\n#1% + {\leavevmode \counta=\fam + \hbox{$\mathsurround=0pt + \mathcode`\.="0201 + \mathcode`\-="8000 \let-=\shortdash + \mathchardef\minus="2200 + \fam=\counta \everyn + #1$}% + } +\endgroup + +\begingroup \active\, + \gdef\scientificnumerals{\def\everyn{\mathcode`\,="8000 \let,=\,}} +\endgroup + +\def\oldstylenumerals +{\def\everyn{\ifnum\counta=0\mit\fi \mathcode`\,="702C }} + +\def\rangingnumerals{\def\everyn{\mathcode`\,="0702C }} + +%}}} +%{{{ Verbatim text, using |...| + +\active\| + +\def\verbatimplains{\\\\\\\{\\\}\\\_\\\$\\\#\\\&\\\%} % \{}_$#&% +\def\verbatimactives{\\\`\\\'\\\~\\\^\\\ } % `'~^<space> + +\begingroup \active\' \active\` \active\^ + \gdef\setupverbatim + {% + \spaceskip0pt \xspaceskip0pt % use spacing of font + \let\\\plain\verbatimplains + \let\\\active\verbatimactives + \let`=\ttlq \let'=\ttrq + \let~=\tttilde \let^=\ttcirc + \hyphenchar\font=-1 + \the\everyverbatim + } +\endgroup + +\newif\ifdblvert + +\def|% +{% + \ifmmode + \mathchar"026A + \else + \leavevmode + \begingroup % matched by closing | + \aftergroup\verbatimsetspacefactor + \tt \setupverbatim + \let|\endgroup + \ifnum\spacefactor=1003 \ttvert \fi + \fi +} + +\def\verbatimsetspacefactor{\spacefactor1003 } + +% TeXbook, p.380 +\def\listing#1% list file #1 verbatim in +{ + \medskip + \begingroup + \parindent=0pt \parskip=0pt + \counta=0 \countb=5 + \def\par{\leavevmode\endgraf}% + \obeylines \obeyspaces + \everypar={\linenum}% + \maketabstab + \setupverbatim + \the\everylisting + \tt + \input#1 + \endgroup + \medskip\noindent\ignorespaces +} + +{\catcode`\^^I=13 + \gdef\maketabstab{\catcode`\^^I=13 \def^^I{\hskip 4em}} +} + +\def\linenum +{% + \strut + \global\advance\counta+1 \global\advance\countb-1 + \ifnum\countb>0\else + \global\advance\countb 5 + \rlap{\the\everylinenum \kern\hsize\kern1em \the\counta}% + \fi +}% + +{\obeyspaces\global\let =\ } % active space = \SPACE +%}}} +%{{{ Misc + +\def\thinspaceamount % usually 1/6em in CMR +{\ifdim\spaceskip>0pt + 0.5\spaceskip + \else + 0.5\fontdimen2\font + \fi +} + +\def\,{\ifmmode\mskip+\thinmuskip\else\kern+\thinspaceamount\fi} +\def\!{\ifmmode\mskip-\thinmuskip\else\kern-\thinspaceamount\fi} +\def\dots{.\,.\,.} + +\def\makestrut#1#2{\vrule height#1 depth#2 width0pt } + +\let\pTXunderline\underline +\def\underline#1% +{\ifmmode + \pTXunderline{#1}% + \else + \setbox0=\hbox{#1}% + \dp0=0pt + $\pTXunderline{\box0}$% + \fi +} + +\def\crossedout#1% print #1 with line through it +{{% + \setbox0=\hbox{#1}% + \dimen0 = 0.6ex \advance\dimen0 by -0.4pt + \vrule height 0.6ex depth -\dimen0 width \wd0 + \kern -\wd0 + \box0 +}} +%}}} +%{{{ Hooks + +\rangingnumerals % sets \everyn + +\newtoks\everyverbatim + +\newtoks\everylisting +\everylisting={\tentt\baselineskip=10pt} + +\newtoks\everylinenum +\everylinenum={\sevenrm} +%}}} +%}}} parmac.tex + +%Local variables: +%fold-folded-p: t +%tex-macros-p: t +%End: diff --git a/fonts/malvern/drivers/ma53a12.mf b/fonts/malvern/drivers/ma53a12.mf new file mode 100644 index 0000000000..a5ca9b438d --- /dev/null +++ b/fonts/malvern/drivers/ma53a12.mf @@ -0,0 +1,12 @@ +% ma53a12.mf -- 12-pt Malvern 53 with encoding A +% version: 76 +% creator: mkdrivers 3.7 <pdc 1994.10.12> +% creation date: 1994.10.12 +% package: Malvern 1.2 + +font_size 12pt#; +weight = 1; +hratio = 1.15; +encoding = 1; +input ma; +bye. diff --git a/fonts/malvern/drivers/ma55a10.mf b/fonts/malvern/drivers/ma55a10.mf new file mode 100644 index 0000000000..70c2b9b914 --- /dev/null +++ b/fonts/malvern/drivers/ma55a10.mf @@ -0,0 +1,12 @@ +% ma55a10.mf -- 10-pt Malvern 55 with encoding A +% version: 76 +% creator: mkdrivers 3.7 <pdc 1994.10.12> +% creation date: 1994.10.12 +% package: Malvern 1.2 + +font_size 10pt#; +weight = 1; +hratio = 1.00; +encoding = 1; +input ma; +bye. diff --git a/fonts/malvern/drivers/ma55a12.mf b/fonts/malvern/drivers/ma55a12.mf new file mode 100644 index 0000000000..a74e66bbeb --- /dev/null +++ b/fonts/malvern/drivers/ma55a12.mf @@ -0,0 +1,12 @@ +% ma55a12.mf -- 12-pt Malvern 55 with encoding A +% version: 76 +% creator: mkdrivers 3.7 <pdc 1994.10.12> +% creation date: 1994.10.12 +% package: Malvern 1.2 + +font_size 12pt#; +weight = 1; +hratio = 1.00; +encoding = 1; +input ma; +bye. diff --git a/fonts/malvern/drivers/ma55a14.mf b/fonts/malvern/drivers/ma55a14.mf new file mode 100644 index 0000000000..486f593f42 --- /dev/null +++ b/fonts/malvern/drivers/ma55a14.mf @@ -0,0 +1,12 @@ +% ma55a14.mf -- 14-pt Malvern 55 with encoding A +% version: 76 +% creator: mkdrivers 3.7 <pdc 1994.10.12> +% creation date: 1994.10.12 +% package: Malvern 1.2 + +font_size 14pt#; +weight = 1; +hratio = 1.00; +encoding = 1; +input ma; +bye. diff --git a/fonts/malvern/drivers/ma55a18.mf b/fonts/malvern/drivers/ma55a18.mf new file mode 100644 index 0000000000..0344dc9961 --- /dev/null +++ b/fonts/malvern/drivers/ma55a18.mf @@ -0,0 +1,12 @@ +% ma55a18.mf -- 18-pt Malvern 55 with encoding A +% version: 76 +% creator: mkdrivers 3.7 <pdc 1994.10.12> +% creation date: 1994.10.12 +% package: Malvern 1.2 + +font_size 18pt#; +weight = 1; +hratio = 1.00; +encoding = 1; +input ma; +bye. diff --git a/fonts/malvern/drivers/ma55a24.mf b/fonts/malvern/drivers/ma55a24.mf new file mode 100644 index 0000000000..0a34e839f3 --- /dev/null +++ b/fonts/malvern/drivers/ma55a24.mf @@ -0,0 +1,12 @@ +% ma55a24.mf -- 24-pt Malvern 55 with encoding A +% version: 76 +% creator: mkdrivers 3.7 <pdc 1994.10.12> +% creation date: 1994.10.12 +% package: Malvern 1.2 + +font_size 24pt#; +weight = 1; +hratio = 1.00; +encoding = 1; +input ma; +bye. diff --git a/fonts/malvern/drivers/ma55a48.mf b/fonts/malvern/drivers/ma55a48.mf new file mode 100644 index 0000000000..a237a131a7 --- /dev/null +++ b/fonts/malvern/drivers/ma55a48.mf @@ -0,0 +1,12 @@ +% ma55a48.mf -- 48-pt Malvern 55 with encoding A +% version: 76 +% creator: mkdrivers 3.7 <pdc 1994.10.12> +% creation date: 1994.10.12 +% package: Malvern 1.2 + +font_size 48pt#; +weight = 1; +hratio = 1.00; +encoding = 1; +input ma; +bye. diff --git a/fonts/malvern/drivers/ma55a7.mf b/fonts/malvern/drivers/ma55a7.mf new file mode 100644 index 0000000000..624b6ea257 --- /dev/null +++ b/fonts/malvern/drivers/ma55a7.mf @@ -0,0 +1,12 @@ +% ma55a7.mf -- 7-pt Malvern 55 with encoding A +% version: 76 +% creator: mkdrivers 3.7 <pdc 1994.10.12> +% creation date: 1994.10.12 +% package: Malvern 1.2 + +font_size 7pt#; +weight = 1; +hratio = 1.00; +encoding = 1; +input ma; +bye. diff --git a/fonts/malvern/drivers/ma55a9.mf b/fonts/malvern/drivers/ma55a9.mf new file mode 100644 index 0000000000..6a5f615cb5 --- /dev/null +++ b/fonts/malvern/drivers/ma55a9.mf @@ -0,0 +1,12 @@ +% ma55a9.mf -- 9-pt Malvern 55 with encoding A +% version: 76 +% creator: mkdrivers 3.7 <pdc 1994.10.12> +% creation date: 1994.10.12 +% package: Malvern 1.2 + +font_size 9pt#; +weight = 1; +hratio = 1.00; +encoding = 1; +input ma; +bye. diff --git a/fonts/malvern/drivers/ma55az10.mf b/fonts/malvern/drivers/ma55az10.mf new file mode 100644 index 0000000000..d6ae95585a --- /dev/null +++ b/fonts/malvern/drivers/ma55az10.mf @@ -0,0 +1,11 @@ +% ma55az10.mf -- 10-pt Malvern 55 with TeX text encoding with old style figures +% creator: mkdrivers 3.7 <pdc 1994.10.12> +% creation date: 1994.10.12 +% package: Malvern 1.2 + +font_size 10pt#; +weight = 1; +hratio = 1.00; +encoding =26; +input ma; +bye. diff --git a/fonts/malvern/drivers/ma55az12.mf b/fonts/malvern/drivers/ma55az12.mf new file mode 100644 index 0000000000..cc6f4dd22f --- /dev/null +++ b/fonts/malvern/drivers/ma55az12.mf @@ -0,0 +1,11 @@ +% ma55az12.mf -- 12-pt Malvern 55 with TeX text encoding with old style figures +% creator: mkdrivers 3.7 <pdc 1994.10.12> +% creation date: 1994.10.12 +% package: Malvern 1.2 + +font_size 12pt#; +weight = 1; +hratio = 1.00; +encoding =26; +input ma; +bye. diff --git a/fonts/malvern/drivers/ma55az14.mf b/fonts/malvern/drivers/ma55az14.mf new file mode 100644 index 0000000000..5107205702 --- /dev/null +++ b/fonts/malvern/drivers/ma55az14.mf @@ -0,0 +1,11 @@ +% ma55az14.mf -- 14-pt Malvern 55 with TeX text encoding with old style figures +% creator: mkdrivers 3.7 <pdc 1994.10.12> +% creation date: 1994.10.12 +% package: Malvern 1.2 + +font_size 14pt#; +weight = 1; +hratio = 1.00; +encoding =26; +input ma; +bye. diff --git a/fonts/malvern/drivers/ma55az18.mf b/fonts/malvern/drivers/ma55az18.mf new file mode 100644 index 0000000000..0201d8cc45 --- /dev/null +++ b/fonts/malvern/drivers/ma55az18.mf @@ -0,0 +1,11 @@ +% ma55az18.mf -- 18-pt Malvern 55 with TeX text encoding with old style figures +% creator: mkdrivers 3.7 <pdc 1994.10.12> +% creation date: 1994.10.12 +% package: Malvern 1.2 + +font_size 18pt#; +weight = 1; +hratio = 1.00; +encoding =26; +input ma; +bye. diff --git a/fonts/malvern/drivers/ma55az24.mf b/fonts/malvern/drivers/ma55az24.mf new file mode 100644 index 0000000000..b34dcb782b --- /dev/null +++ b/fonts/malvern/drivers/ma55az24.mf @@ -0,0 +1,11 @@ +% ma55az24.mf -- 24-pt Malvern 55 with TeX text encoding with old style figures +% creator: mkdrivers 3.7 <pdc 1994.10.12> +% creation date: 1994.10.12 +% package: Malvern 1.2 + +font_size 24pt#; +weight = 1; +hratio = 1.00; +encoding =26; +input ma; +bye. diff --git a/fonts/malvern/drivers/ma55az7.mf b/fonts/malvern/drivers/ma55az7.mf new file mode 100644 index 0000000000..26b9215a75 --- /dev/null +++ b/fonts/malvern/drivers/ma55az7.mf @@ -0,0 +1,11 @@ +% ma55az7.mf -- 7-pt Malvern 55 with TeX text encoding with old style figures +% creator: mkdrivers 3.7 <pdc 1994.10.12> +% creation date: 1994.10.12 +% package: Malvern 1.2 + +font_size 7pt#; +weight = 1; +hratio = 1.00; +encoding =26; +input ma; +bye. diff --git a/fonts/malvern/drivers/ma55b10.mf b/fonts/malvern/drivers/ma55b10.mf new file mode 100644 index 0000000000..033ea445a7 --- /dev/null +++ b/fonts/malvern/drivers/ma55b10.mf @@ -0,0 +1,12 @@ +% ma55b10.mf -- 10-pt Malvern 55 with encoding B +% version: 76 +% creator: mkdrivers 3.7 <pdc 1994.10.12> +% creation date: 1994.10.12 +% package: Malvern 1.2 + +font_size 10pt#; +weight = 1; +hratio = 1.00; +encoding = 2; +input ma; +bye. diff --git a/fonts/malvern/drivers/ma55b12.mf b/fonts/malvern/drivers/ma55b12.mf new file mode 100644 index 0000000000..6d6eb65254 --- /dev/null +++ b/fonts/malvern/drivers/ma55b12.mf @@ -0,0 +1,12 @@ +% ma55b12.mf -- 12-pt Malvern 55 with encoding B +% version: 76 +% creator: mkdrivers 3.7 <pdc 1994.10.12> +% creation date: 1994.10.12 +% package: Malvern 1.2 + +font_size 12pt#; +weight = 1; +hratio = 1.00; +encoding = 2; +input ma; +bye. diff --git a/fonts/malvern/drivers/ma55b14.mf b/fonts/malvern/drivers/ma55b14.mf new file mode 100644 index 0000000000..321ceb21c3 --- /dev/null +++ b/fonts/malvern/drivers/ma55b14.mf @@ -0,0 +1,12 @@ +% ma55b14.mf -- 14-pt Malvern 55 with encoding B +% version: 76 +% creator: mkdrivers 3.7 <pdc 1994.10.12> +% creation date: 1994.10.12 +% package: Malvern 1.2 + +font_size 14pt#; +weight = 1; +hratio = 1.00; +encoding = 2; +input ma; +bye. diff --git a/fonts/malvern/drivers/ma55b18.mf b/fonts/malvern/drivers/ma55b18.mf new file mode 100644 index 0000000000..d115e46323 --- /dev/null +++ b/fonts/malvern/drivers/ma55b18.mf @@ -0,0 +1,12 @@ +% ma55b18.mf -- 18-pt Malvern 55 with encoding B +% version: 76 +% creator: mkdrivers 3.7 <pdc 1994.10.12> +% creation date: 1994.10.12 +% package: Malvern 1.2 + +font_size 18pt#; +weight = 1; +hratio = 1.00; +encoding = 2; +input ma; +bye. diff --git a/fonts/malvern/drivers/ma55b24.mf b/fonts/malvern/drivers/ma55b24.mf new file mode 100644 index 0000000000..ee369a1866 --- /dev/null +++ b/fonts/malvern/drivers/ma55b24.mf @@ -0,0 +1,12 @@ +% ma55b24.mf -- 24-pt Malvern 55 with encoding B +% version: 76 +% creator: mkdrivers 3.7 <pdc 1994.10.12> +% creation date: 1994.10.12 +% package: Malvern 1.2 + +font_size 24pt#; +weight = 1; +hratio = 1.00; +encoding = 2; +input ma; +bye. diff --git a/fonts/malvern/drivers/ma55b7.mf b/fonts/malvern/drivers/ma55b7.mf new file mode 100644 index 0000000000..e4556836fd --- /dev/null +++ b/fonts/malvern/drivers/ma55b7.mf @@ -0,0 +1,12 @@ +% ma55b7.mf -- 7-pt Malvern 55 with encoding B +% version: 76 +% creator: mkdrivers 3.7 <pdc 1994.10.12> +% creation date: 1994.10.12 +% package: Malvern 1.2 + +font_size 7pt#; +weight = 1; +hratio = 1.00; +encoding = 2; +input ma; +bye. diff --git a/fonts/malvern/drivers/ma55c12.mf b/fonts/malvern/drivers/ma55c12.mf new file mode 100644 index 0000000000..e974becd08 --- /dev/null +++ b/fonts/malvern/drivers/ma55c12.mf @@ -0,0 +1,12 @@ +% ma55c12.mf -- 12-pt Malvern 55 with encoding C +% version: 76 +% creator: mkdrivers 3.7 <pdc 1994.10.12> +% creation date: 1994.10.12 +% package: Malvern 1.2 + +font_size 12pt#; +weight = 1; +hratio = 1.00; +encoding = 3; +input ma; +bye. diff --git a/fonts/malvern/drivers/ma55g10.mf b/fonts/malvern/drivers/ma55g10.mf new file mode 100644 index 0000000000..764ea4ebd3 --- /dev/null +++ b/fonts/malvern/drivers/ma55g10.mf @@ -0,0 +1,12 @@ +% ma55g10.mf -- 10-pt Malvern 55 with encoding G +% version: 76 +% creator: mkdrivers 3.7 <pdc 1994.10.12> +% creation date: 1994.10.12 +% package: Malvern 1.2 + +font_size 10pt#; +weight = 1; +hratio = 1.00; +encoding = 7; +input ma; +bye. diff --git a/fonts/malvern/drivers/ma55g11.mf b/fonts/malvern/drivers/ma55g11.mf new file mode 100644 index 0000000000..bb5dcadda5 --- /dev/null +++ b/fonts/malvern/drivers/ma55g11.mf @@ -0,0 +1,12 @@ +% ma55g11.mf -- 11-pt Malvern 55 with encoding G +% version: 76 +% creator: mkdrivers 3.7 <pdc 1994.10.12> +% creation date: 1994.10.12 +% package: Malvern 1.2 + +font_size 11pt#; +weight = 1; +hratio = 1.00; +encoding = 7; +input ma; +bye. diff --git a/fonts/malvern/drivers/ma55g12.mf b/fonts/malvern/drivers/ma55g12.mf new file mode 100644 index 0000000000..637bd0760f --- /dev/null +++ b/fonts/malvern/drivers/ma55g12.mf @@ -0,0 +1,12 @@ +% ma55g12.mf -- 12-pt Malvern 55 with encoding G +% version: 76 +% creator: mkdrivers 3.7 <pdc 1994.10.12> +% creation date: 1994.10.12 +% package: Malvern 1.2 + +font_size 12pt#; +weight = 1; +hratio = 1.00; +encoding = 7; +input ma; +bye. diff --git a/fonts/malvern/drivers/ma55g24.mf b/fonts/malvern/drivers/ma55g24.mf new file mode 100644 index 0000000000..a4dd643ad9 --- /dev/null +++ b/fonts/malvern/drivers/ma55g24.mf @@ -0,0 +1,12 @@ +% ma55g24.mf -- 24-pt Malvern 55 with encoding G +% version: 76 +% creator: mkdrivers 3.7 <pdc 1994.10.12> +% creation date: 1994.10.12 +% package: Malvern 1.2 + +font_size 24pt#; +weight = 1; +hratio = 1.00; +encoding = 7; +input ma; +bye. diff --git a/fonts/malvern/drivers/ma55g9.mf b/fonts/malvern/drivers/ma55g9.mf new file mode 100644 index 0000000000..8daec159a8 --- /dev/null +++ b/fonts/malvern/drivers/ma55g9.mf @@ -0,0 +1,12 @@ +% ma55g9.mf -- 9-pt Malvern 55 with encoding G +% version: 76 +% creator: mkdrivers 3.7 <pdc 1994.10.12> +% creation date: 1994.10.12 +% package: Malvern 1.2 + +font_size 9pt#; +weight = 1; +hratio = 1.00; +encoding = 7; +input ma; +bye. diff --git a/fonts/malvern/drivers/ma55s10.mf b/fonts/malvern/drivers/ma55s10.mf new file mode 100644 index 0000000000..706d2c2cc6 --- /dev/null +++ b/fonts/malvern/drivers/ma55s10.mf @@ -0,0 +1,11 @@ +% ma55s10.mf -- 10-pt Malvern 55 with TeX text encoding +% creator: mkdrivers 3.7 <pdc 1994.10.12> +% creation date: 1994.10.12 +% package: Malvern 1.2 + +font_size 10pt#; +weight = 1; +hratio = 1.00; +encoding =19; +input ma; +bye. diff --git a/fonts/malvern/drivers/ma55s12.mf b/fonts/malvern/drivers/ma55s12.mf new file mode 100644 index 0000000000..8ea08164a4 --- /dev/null +++ b/fonts/malvern/drivers/ma55s12.mf @@ -0,0 +1,11 @@ +% ma55s12.mf -- 12-pt Malvern 55 with TeX text encoding +% creator: mkdrivers 3.7 <pdc 1994.10.12> +% creation date: 1994.10.12 +% package: Malvern 1.2 + +font_size 12pt#; +weight = 1; +hratio = 1.00; +encoding =19; +input ma; +bye. diff --git a/fonts/malvern/drivers/ma55s14.mf b/fonts/malvern/drivers/ma55s14.mf new file mode 100644 index 0000000000..03ba1ce3a0 --- /dev/null +++ b/fonts/malvern/drivers/ma55s14.mf @@ -0,0 +1,11 @@ +% ma55s14.mf -- 14-pt Malvern 55 with TeX text encoding +% creator: mkdrivers 3.7 <pdc 1994.10.12> +% creation date: 1994.10.12 +% package: Malvern 1.2 + +font_size 14pt#; +weight = 1; +hratio = 1.00; +encoding =19; +input ma; +bye. diff --git a/fonts/malvern/drivers/ma55s18.mf b/fonts/malvern/drivers/ma55s18.mf new file mode 100644 index 0000000000..544503f923 --- /dev/null +++ b/fonts/malvern/drivers/ma55s18.mf @@ -0,0 +1,11 @@ +% ma55s18.mf -- 18-pt Malvern 55 with TeX text encoding +% creator: mkdrivers 3.7 <pdc 1994.10.12> +% creation date: 1994.10.12 +% package: Malvern 1.2 + +font_size 18pt#; +weight = 1; +hratio = 1.00; +encoding =19; +input ma; +bye. diff --git a/fonts/malvern/drivers/ma55s24.mf b/fonts/malvern/drivers/ma55s24.mf new file mode 100644 index 0000000000..3bade613a7 --- /dev/null +++ b/fonts/malvern/drivers/ma55s24.mf @@ -0,0 +1,11 @@ +% ma55s24.mf -- 24-pt Malvern 55 with TeX text encoding +% creator: mkdrivers 3.7 <pdc 1994.10.12> +% creation date: 1994.10.12 +% package: Malvern 1.2 + +font_size 24pt#; +weight = 1; +hratio = 1.00; +encoding =19; +input ma; +bye. diff --git a/fonts/malvern/drivers/ma55s7.mf b/fonts/malvern/drivers/ma55s7.mf new file mode 100644 index 0000000000..9710f0d9a9 --- /dev/null +++ b/fonts/malvern/drivers/ma55s7.mf @@ -0,0 +1,11 @@ +% ma55s7.mf -- 7-pt Malvern 55 with TeX text encoding +% creator: mkdrivers 3.7 <pdc 1994.10.12> +% creation date: 1994.10.12 +% package: Malvern 1.2 + +font_size 7pt#; +weight = 1; +hratio = 1.00; +encoding =19; +input ma; +bye. diff --git a/fonts/malvern/drivers/ma56a10.mf b/fonts/malvern/drivers/ma56a10.mf new file mode 100644 index 0000000000..bd9e601125 --- /dev/null +++ b/fonts/malvern/drivers/ma56a10.mf @@ -0,0 +1,14 @@ +% ma56a10.mf -- 10-pt Malvern 56 with encoding A +% version: 76 +% creator: mkdrivers 3.7 <pdc 1994.10.12> +% creation date: 1994.10.12 +% package: Malvern 1.2 + +font_size 10pt#; +weight = 1; +hratio = 1.00; +slant = 1/8; +italicness = 1; +encoding = 1; +input ma; +bye. diff --git a/fonts/malvern/drivers/ma56a12.mf b/fonts/malvern/drivers/ma56a12.mf new file mode 100644 index 0000000000..6a3cd49684 --- /dev/null +++ b/fonts/malvern/drivers/ma56a12.mf @@ -0,0 +1,14 @@ +% ma56a12.mf -- 12-pt Malvern 56 with encoding A +% version: 76 +% creator: mkdrivers 3.7 <pdc 1994.10.12> +% creation date: 1994.10.12 +% package: Malvern 1.2 + +font_size 12pt#; +weight = 1; +hratio = 1.00; +slant = 1/8; +italicness = 1; +encoding = 1; +input ma; +bye. diff --git a/fonts/malvern/drivers/ma56a14.mf b/fonts/malvern/drivers/ma56a14.mf new file mode 100644 index 0000000000..07620318be --- /dev/null +++ b/fonts/malvern/drivers/ma56a14.mf @@ -0,0 +1,14 @@ +% ma56a14.mf -- 14-pt Malvern 56 with encoding A +% version: 76 +% creator: mkdrivers 3.7 <pdc 1994.10.12> +% creation date: 1994.10.12 +% package: Malvern 1.2 + +font_size 14pt#; +weight = 1; +hratio = 1.00; +slant = 1/8; +italicness = 1; +encoding = 1; +input ma; +bye. diff --git a/fonts/malvern/drivers/ma56a18.mf b/fonts/malvern/drivers/ma56a18.mf new file mode 100644 index 0000000000..7aed9dbd9d --- /dev/null +++ b/fonts/malvern/drivers/ma56a18.mf @@ -0,0 +1,14 @@ +% ma56a18.mf -- 18-pt Malvern 56 with encoding A +% version: 76 +% creator: mkdrivers 3.7 <pdc 1994.10.12> +% creation date: 1994.10.12 +% package: Malvern 1.2 + +font_size 18pt#; +weight = 1; +hratio = 1.00; +slant = 1/8; +italicness = 1; +encoding = 1; +input ma; +bye. diff --git a/fonts/malvern/drivers/ma56a24.mf b/fonts/malvern/drivers/ma56a24.mf new file mode 100644 index 0000000000..40680dd64b --- /dev/null +++ b/fonts/malvern/drivers/ma56a24.mf @@ -0,0 +1,14 @@ +% ma56a24.mf -- 24-pt Malvern 56 with encoding A +% version: 76 +% creator: mkdrivers 3.7 <pdc 1994.10.12> +% creation date: 1994.10.12 +% package: Malvern 1.2 + +font_size 24pt#; +weight = 1; +hratio = 1.00; +slant = 1/8; +italicness = 1; +encoding = 1; +input ma; +bye. diff --git a/fonts/malvern/drivers/ma56a7.mf b/fonts/malvern/drivers/ma56a7.mf new file mode 100644 index 0000000000..432fa0e516 --- /dev/null +++ b/fonts/malvern/drivers/ma56a7.mf @@ -0,0 +1,14 @@ +% ma56a7.mf -- 7-pt Malvern 56 with encoding A +% version: 76 +% creator: mkdrivers 3.7 <pdc 1994.10.12> +% creation date: 1994.10.12 +% package: Malvern 1.2 + +font_size 7pt#; +weight = 1; +hratio = 1.00; +slant = 1/8; +italicness = 1; +encoding = 1; +input ma; +bye. diff --git a/fonts/malvern/drivers/ma56a9.mf b/fonts/malvern/drivers/ma56a9.mf new file mode 100644 index 0000000000..6bd3179a3e --- /dev/null +++ b/fonts/malvern/drivers/ma56a9.mf @@ -0,0 +1,14 @@ +% ma56a9.mf -- 9-pt Malvern 56 with encoding A +% version: 76 +% creator: mkdrivers 3.7 <pdc 1994.10.12> +% creation date: 1994.10.12 +% package: Malvern 1.2 + +font_size 9pt#; +weight = 1; +hratio = 1.00; +slant = 1/8; +italicness = 1; +encoding = 1; +input ma; +bye. diff --git a/fonts/malvern/drivers/ma56az10.mf b/fonts/malvern/drivers/ma56az10.mf new file mode 100644 index 0000000000..23ffebb63e --- /dev/null +++ b/fonts/malvern/drivers/ma56az10.mf @@ -0,0 +1,13 @@ +% ma56az10.mf -- 10-pt Malvern 56 with TeX text encoding with old style figures +% creator: mkdrivers 3.7 <pdc 1994.10.12> +% creation date: 1994.10.12 +% package: Malvern 1.2 + +font_size 10pt#; +weight = 1; +hratio = 1.00; +slant = 1/8; +italicness = 1; +encoding =26; +input ma; +bye. diff --git a/fonts/malvern/drivers/ma56az12.mf b/fonts/malvern/drivers/ma56az12.mf new file mode 100644 index 0000000000..636dc27c51 --- /dev/null +++ b/fonts/malvern/drivers/ma56az12.mf @@ -0,0 +1,13 @@ +% ma56az12.mf -- 12-pt Malvern 56 with TeX text encoding with old style figures +% creator: mkdrivers 3.7 <pdc 1994.10.12> +% creation date: 1994.10.12 +% package: Malvern 1.2 + +font_size 12pt#; +weight = 1; +hratio = 1.00; +slant = 1/8; +italicness = 1; +encoding =26; +input ma; +bye. diff --git a/fonts/malvern/drivers/ma56az14.mf b/fonts/malvern/drivers/ma56az14.mf new file mode 100644 index 0000000000..a77b115546 --- /dev/null +++ b/fonts/malvern/drivers/ma56az14.mf @@ -0,0 +1,13 @@ +% ma56az14.mf -- 14-pt Malvern 56 with TeX text encoding with old style figures +% creator: mkdrivers 3.7 <pdc 1994.10.12> +% creation date: 1994.10.12 +% package: Malvern 1.2 + +font_size 14pt#; +weight = 1; +hratio = 1.00; +slant = 1/8; +italicness = 1; +encoding =26; +input ma; +bye. diff --git a/fonts/malvern/drivers/ma56az18.mf b/fonts/malvern/drivers/ma56az18.mf new file mode 100644 index 0000000000..0f19fbed40 --- /dev/null +++ b/fonts/malvern/drivers/ma56az18.mf @@ -0,0 +1,13 @@ +% ma56az18.mf -- 18-pt Malvern 56 with TeX text encoding with old style figures +% creator: mkdrivers 3.7 <pdc 1994.10.12> +% creation date: 1994.10.12 +% package: Malvern 1.2 + +font_size 18pt#; +weight = 1; +hratio = 1.00; +slant = 1/8; +italicness = 1; +encoding =26; +input ma; +bye. diff --git a/fonts/malvern/drivers/ma56az24.mf b/fonts/malvern/drivers/ma56az24.mf new file mode 100644 index 0000000000..fad0ad0b73 --- /dev/null +++ b/fonts/malvern/drivers/ma56az24.mf @@ -0,0 +1,13 @@ +% ma56az24.mf -- 24-pt Malvern 56 with TeX text encoding with old style figures +% creator: mkdrivers 3.7 <pdc 1994.10.12> +% creation date: 1994.10.12 +% package: Malvern 1.2 + +font_size 24pt#; +weight = 1; +hratio = 1.00; +slant = 1/8; +italicness = 1; +encoding =26; +input ma; +bye. diff --git a/fonts/malvern/drivers/ma56az7.mf b/fonts/malvern/drivers/ma56az7.mf new file mode 100644 index 0000000000..23bb372906 --- /dev/null +++ b/fonts/malvern/drivers/ma56az7.mf @@ -0,0 +1,13 @@ +% ma56az7.mf -- 7-pt Malvern 56 with TeX text encoding with old style figures +% creator: mkdrivers 3.7 <pdc 1994.10.12> +% creation date: 1994.10.12 +% package: Malvern 1.2 + +font_size 7pt#; +weight = 1; +hratio = 1.00; +slant = 1/8; +italicness = 1; +encoding =26; +input ma; +bye. diff --git a/fonts/malvern/drivers/ma56b10.mf b/fonts/malvern/drivers/ma56b10.mf new file mode 100644 index 0000000000..d928837aa3 --- /dev/null +++ b/fonts/malvern/drivers/ma56b10.mf @@ -0,0 +1,14 @@ +% ma56b10.mf -- 10-pt Malvern 56 with encoding B +% version: 76 +% creator: mkdrivers 3.7 <pdc 1994.10.12> +% creation date: 1994.10.12 +% package: Malvern 1.2 + +font_size 10pt#; +weight = 1; +hratio = 1.00; +slant = 1/8; +italicness = 1; +encoding = 2; +input ma; +bye. diff --git a/fonts/malvern/drivers/ma56b12.mf b/fonts/malvern/drivers/ma56b12.mf new file mode 100644 index 0000000000..7449931f63 --- /dev/null +++ b/fonts/malvern/drivers/ma56b12.mf @@ -0,0 +1,14 @@ +% ma56b12.mf -- 12-pt Malvern 56 with encoding B +% version: 76 +% creator: mkdrivers 3.7 <pdc 1994.10.12> +% creation date: 1994.10.12 +% package: Malvern 1.2 + +font_size 12pt#; +weight = 1; +hratio = 1.00; +slant = 1/8; +italicness = 1; +encoding = 2; +input ma; +bye. diff --git a/fonts/malvern/drivers/ma56b14.mf b/fonts/malvern/drivers/ma56b14.mf new file mode 100644 index 0000000000..a539b00fdf --- /dev/null +++ b/fonts/malvern/drivers/ma56b14.mf @@ -0,0 +1,14 @@ +% ma56b14.mf -- 14-pt Malvern 56 with encoding B +% version: 76 +% creator: mkdrivers 3.7 <pdc 1994.10.12> +% creation date: 1994.10.12 +% package: Malvern 1.2 + +font_size 14pt#; +weight = 1; +hratio = 1.00; +slant = 1/8; +italicness = 1; +encoding = 2; +input ma; +bye. diff --git a/fonts/malvern/drivers/ma56b18.mf b/fonts/malvern/drivers/ma56b18.mf new file mode 100644 index 0000000000..489f99efd6 --- /dev/null +++ b/fonts/malvern/drivers/ma56b18.mf @@ -0,0 +1,14 @@ +% ma56b18.mf -- 18-pt Malvern 56 with encoding B +% version: 76 +% creator: mkdrivers 3.7 <pdc 1994.10.12> +% creation date: 1994.10.12 +% package: Malvern 1.2 + +font_size 18pt#; +weight = 1; +hratio = 1.00; +slant = 1/8; +italicness = 1; +encoding = 2; +input ma; +bye. diff --git a/fonts/malvern/drivers/ma56b24.mf b/fonts/malvern/drivers/ma56b24.mf new file mode 100644 index 0000000000..8ae0e2c28d --- /dev/null +++ b/fonts/malvern/drivers/ma56b24.mf @@ -0,0 +1,14 @@ +% ma56b24.mf -- 24-pt Malvern 56 with encoding B +% version: 76 +% creator: mkdrivers 3.7 <pdc 1994.10.12> +% creation date: 1994.10.12 +% package: Malvern 1.2 + +font_size 24pt#; +weight = 1; +hratio = 1.00; +slant = 1/8; +italicness = 1; +encoding = 2; +input ma; +bye. diff --git a/fonts/malvern/drivers/ma56b7.mf b/fonts/malvern/drivers/ma56b7.mf new file mode 100644 index 0000000000..80dc340b89 --- /dev/null +++ b/fonts/malvern/drivers/ma56b7.mf @@ -0,0 +1,14 @@ +% ma56b7.mf -- 7-pt Malvern 56 with encoding B +% version: 76 +% creator: mkdrivers 3.7 <pdc 1994.10.12> +% creation date: 1994.10.12 +% package: Malvern 1.2 + +font_size 7pt#; +weight = 1; +hratio = 1.00; +slant = 1/8; +italicness = 1; +encoding = 2; +input ma; +bye. diff --git a/fonts/malvern/drivers/ma56g11.mf b/fonts/malvern/drivers/ma56g11.mf new file mode 100644 index 0000000000..668cb28f39 --- /dev/null +++ b/fonts/malvern/drivers/ma56g11.mf @@ -0,0 +1,14 @@ +% ma56g11.mf -- 11-pt Malvern 56 with encoding G +% version: 76 +% creator: mkdrivers 3.7 <pdc 1994.10.12> +% creation date: 1994.10.12 +% package: Malvern 1.2 + +font_size 11pt#; +weight = 1; +hratio = 1.00; +slant = 1/8; +italicness = 1; +encoding = 7; +input ma; +bye. diff --git a/fonts/malvern/drivers/ma56s10.mf b/fonts/malvern/drivers/ma56s10.mf new file mode 100644 index 0000000000..33d55084d1 --- /dev/null +++ b/fonts/malvern/drivers/ma56s10.mf @@ -0,0 +1,13 @@ +% ma56s10.mf -- 10-pt Malvern 56 with TeX text encoding +% creator: mkdrivers 3.7 <pdc 1994.10.12> +% creation date: 1994.10.12 +% package: Malvern 1.2 + +font_size 10pt#; +weight = 1; +hratio = 1.00; +slant = 1/8; +italicness = 1; +encoding =19; +input ma; +bye. diff --git a/fonts/malvern/drivers/ma56s12.mf b/fonts/malvern/drivers/ma56s12.mf new file mode 100644 index 0000000000..78fca2a1c7 --- /dev/null +++ b/fonts/malvern/drivers/ma56s12.mf @@ -0,0 +1,13 @@ +% ma56s12.mf -- 12-pt Malvern 56 with TeX text encoding +% creator: mkdrivers 3.7 <pdc 1994.10.12> +% creation date: 1994.10.12 +% package: Malvern 1.2 + +font_size 12pt#; +weight = 1; +hratio = 1.00; +slant = 1/8; +italicness = 1; +encoding =19; +input ma; +bye. diff --git a/fonts/malvern/drivers/ma56s14.mf b/fonts/malvern/drivers/ma56s14.mf new file mode 100644 index 0000000000..b29abf9e65 --- /dev/null +++ b/fonts/malvern/drivers/ma56s14.mf @@ -0,0 +1,13 @@ +% ma56s14.mf -- 14-pt Malvern 56 with TeX text encoding +% creator: mkdrivers 3.7 <pdc 1994.10.12> +% creation date: 1994.10.12 +% package: Malvern 1.2 + +font_size 14pt#; +weight = 1; +hratio = 1.00; +slant = 1/8; +italicness = 1; +encoding =19; +input ma; +bye. diff --git a/fonts/malvern/drivers/ma56s18.mf b/fonts/malvern/drivers/ma56s18.mf new file mode 100644 index 0000000000..7c5ad82d29 --- /dev/null +++ b/fonts/malvern/drivers/ma56s18.mf @@ -0,0 +1,13 @@ +% ma56s18.mf -- 18-pt Malvern 56 with TeX text encoding +% creator: mkdrivers 3.7 <pdc 1994.10.12> +% creation date: 1994.10.12 +% package: Malvern 1.2 + +font_size 18pt#; +weight = 1; +hratio = 1.00; +slant = 1/8; +italicness = 1; +encoding =19; +input ma; +bye. diff --git a/fonts/malvern/drivers/ma56s24.mf b/fonts/malvern/drivers/ma56s24.mf new file mode 100644 index 0000000000..1699101b6b --- /dev/null +++ b/fonts/malvern/drivers/ma56s24.mf @@ -0,0 +1,13 @@ +% ma56s24.mf -- 24-pt Malvern 56 with TeX text encoding +% creator: mkdrivers 3.7 <pdc 1994.10.12> +% creation date: 1994.10.12 +% package: Malvern 1.2 + +font_size 24pt#; +weight = 1; +hratio = 1.00; +slant = 1/8; +italicness = 1; +encoding =19; +input ma; +bye. diff --git a/fonts/malvern/drivers/ma56s7.mf b/fonts/malvern/drivers/ma56s7.mf new file mode 100644 index 0000000000..8aafe95ba0 --- /dev/null +++ b/fonts/malvern/drivers/ma56s7.mf @@ -0,0 +1,13 @@ +% ma56s7.mf -- 7-pt Malvern 56 with TeX text encoding +% creator: mkdrivers 3.7 <pdc 1994.10.12> +% creation date: 1994.10.12 +% package: Malvern 1.2 + +font_size 7pt#; +weight = 1; +hratio = 1.00; +slant = 1/8; +italicness = 1; +encoding =19; +input ma; +bye. diff --git a/fonts/malvern/drivers/ma57a12.mf b/fonts/malvern/drivers/ma57a12.mf new file mode 100644 index 0000000000..e2919fbcfe --- /dev/null +++ b/fonts/malvern/drivers/ma57a12.mf @@ -0,0 +1,12 @@ +% ma57a12.mf -- 12-pt Malvern 57 with encoding A +% version: 76 +% creator: mkdrivers 3.7 <pdc 1994.10.12> +% creation date: 1994.10.12 +% package: Malvern 1.2 + +font_size 12pt#; +weight = 1; +hratio = 0.80; +encoding = 1; +input ma; +bye. diff --git a/fonts/malvern/drivers/ma75a10.mf b/fonts/malvern/drivers/ma75a10.mf new file mode 100644 index 0000000000..954c083cba --- /dev/null +++ b/fonts/malvern/drivers/ma75a10.mf @@ -0,0 +1,12 @@ +% ma75a10.mf -- 10-pt Malvern 75 with encoding A +% version: 76 +% creator: mkdrivers 3.7 <pdc 1994.10.12> +% creation date: 1994.10.12 +% package: Malvern 1.2 + +font_size 10pt#; +weight = 1.6; +hratio = 1.00; +encoding = 1; +input ma; +bye. diff --git a/fonts/malvern/drivers/ma75a12.mf b/fonts/malvern/drivers/ma75a12.mf new file mode 100644 index 0000000000..1090bdac37 --- /dev/null +++ b/fonts/malvern/drivers/ma75a12.mf @@ -0,0 +1,12 @@ +% ma75a12.mf -- 12-pt Malvern 75 with encoding A +% version: 76 +% creator: mkdrivers 3.7 <pdc 1994.10.12> +% creation date: 1994.10.12 +% package: Malvern 1.2 + +font_size 12pt#; +weight = 1.6; +hratio = 1.00; +encoding = 1; +input ma; +bye. diff --git a/fonts/malvern/drivers/ma75a14.mf b/fonts/malvern/drivers/ma75a14.mf new file mode 100644 index 0000000000..3ac9c4cc97 --- /dev/null +++ b/fonts/malvern/drivers/ma75a14.mf @@ -0,0 +1,12 @@ +% ma75a14.mf -- 14-pt Malvern 75 with encoding A +% version: 76 +% creator: mkdrivers 3.7 <pdc 1994.10.12> +% creation date: 1994.10.12 +% package: Malvern 1.2 + +font_size 14pt#; +weight = 1.6; +hratio = 1.00; +encoding = 1; +input ma; +bye. diff --git a/fonts/malvern/drivers/ma75a18.mf b/fonts/malvern/drivers/ma75a18.mf new file mode 100644 index 0000000000..7a3f9f24ab --- /dev/null +++ b/fonts/malvern/drivers/ma75a18.mf @@ -0,0 +1,12 @@ +% ma75a18.mf -- 18-pt Malvern 75 with encoding A +% version: 76 +% creator: mkdrivers 3.7 <pdc 1994.10.12> +% creation date: 1994.10.12 +% package: Malvern 1.2 + +font_size 18pt#; +weight = 1.6; +hratio = 1.00; +encoding = 1; +input ma; +bye. diff --git a/fonts/malvern/drivers/ma75a24.mf b/fonts/malvern/drivers/ma75a24.mf new file mode 100644 index 0000000000..0aad996cd3 --- /dev/null +++ b/fonts/malvern/drivers/ma75a24.mf @@ -0,0 +1,12 @@ +% ma75a24.mf -- 24-pt Malvern 75 with encoding A +% version: 76 +% creator: mkdrivers 3.7 <pdc 1994.10.12> +% creation date: 1994.10.12 +% package: Malvern 1.2 + +font_size 24pt#; +weight = 1.6; +hratio = 1.00; +encoding = 1; +input ma; +bye. diff --git a/fonts/malvern/drivers/ma75a7.mf b/fonts/malvern/drivers/ma75a7.mf new file mode 100644 index 0000000000..0a991f8335 --- /dev/null +++ b/fonts/malvern/drivers/ma75a7.mf @@ -0,0 +1,12 @@ +% ma75a7.mf -- 7-pt Malvern 75 with encoding A +% version: 76 +% creator: mkdrivers 3.7 <pdc 1994.10.12> +% creation date: 1994.10.12 +% package: Malvern 1.2 + +font_size 7pt#; +weight = 1.6; +hratio = 1.00; +encoding = 1; +input ma; +bye. diff --git a/fonts/malvern/drivers/ma75a72.mf b/fonts/malvern/drivers/ma75a72.mf new file mode 100644 index 0000000000..3d3683405a --- /dev/null +++ b/fonts/malvern/drivers/ma75a72.mf @@ -0,0 +1,12 @@ +% ma75a72.mf -- 72-pt Malvern 75 with encoding A +% version: 76 +% creator: mkdrivers 3.7 <pdc 1994.10.12> +% creation date: 1994.10.12 +% package: Malvern 1.2 + +font_size 72pt#; +weight = 1.6; +hratio = 1.00; +encoding = 1; +input ma; +bye. diff --git a/fonts/malvern/drivers/ma75a9.mf b/fonts/malvern/drivers/ma75a9.mf new file mode 100644 index 0000000000..e2a6ff1692 --- /dev/null +++ b/fonts/malvern/drivers/ma75a9.mf @@ -0,0 +1,12 @@ +% ma75a9.mf -- 9-pt Malvern 75 with encoding A +% version: 76 +% creator: mkdrivers 3.7 <pdc 1994.10.12> +% creation date: 1994.10.12 +% package: Malvern 1.2 + +font_size 9pt#; +weight = 1.6; +hratio = 1.00; +encoding = 1; +input ma; +bye. diff --git a/fonts/malvern/drivers/ma75az10.mf b/fonts/malvern/drivers/ma75az10.mf new file mode 100644 index 0000000000..af723cd553 --- /dev/null +++ b/fonts/malvern/drivers/ma75az10.mf @@ -0,0 +1,11 @@ +% ma75az10.mf -- 10-pt Malvern 75 with TeX text encoding with old style figures +% creator: mkdrivers 3.7 <pdc 1994.10.12> +% creation date: 1994.10.12 +% package: Malvern 1.2 + +font_size 10pt#; +weight = 1.6; +hratio = 1.00; +encoding =26; +input ma; +bye. diff --git a/fonts/malvern/drivers/ma75az12.mf b/fonts/malvern/drivers/ma75az12.mf new file mode 100644 index 0000000000..5db197045f --- /dev/null +++ b/fonts/malvern/drivers/ma75az12.mf @@ -0,0 +1,11 @@ +% ma75az12.mf -- 12-pt Malvern 75 with TeX text encoding with old style figures +% creator: mkdrivers 3.7 <pdc 1994.10.12> +% creation date: 1994.10.12 +% package: Malvern 1.2 + +font_size 12pt#; +weight = 1.6; +hratio = 1.00; +encoding =26; +input ma; +bye. diff --git a/fonts/malvern/drivers/ma75az14.mf b/fonts/malvern/drivers/ma75az14.mf new file mode 100644 index 0000000000..d79ebce6cd --- /dev/null +++ b/fonts/malvern/drivers/ma75az14.mf @@ -0,0 +1,11 @@ +% ma75az14.mf -- 14-pt Malvern 75 with TeX text encoding with old style figures +% creator: mkdrivers 3.7 <pdc 1994.10.12> +% creation date: 1994.10.12 +% package: Malvern 1.2 + +font_size 14pt#; +weight = 1.6; +hratio = 1.00; +encoding =26; +input ma; +bye. diff --git a/fonts/malvern/drivers/ma75az18.mf b/fonts/malvern/drivers/ma75az18.mf new file mode 100644 index 0000000000..6f2e812c13 --- /dev/null +++ b/fonts/malvern/drivers/ma75az18.mf @@ -0,0 +1,11 @@ +% ma75az18.mf -- 18-pt Malvern 75 with TeX text encoding with old style figures +% creator: mkdrivers 3.7 <pdc 1994.10.12> +% creation date: 1994.10.12 +% package: Malvern 1.2 + +font_size 18pt#; +weight = 1.6; +hratio = 1.00; +encoding =26; +input ma; +bye. diff --git a/fonts/malvern/drivers/ma75az24.mf b/fonts/malvern/drivers/ma75az24.mf new file mode 100644 index 0000000000..a0666a9af1 --- /dev/null +++ b/fonts/malvern/drivers/ma75az24.mf @@ -0,0 +1,11 @@ +% ma75az24.mf -- 24-pt Malvern 75 with TeX text encoding with old style figures +% creator: mkdrivers 3.7 <pdc 1994.10.12> +% creation date: 1994.10.12 +% package: Malvern 1.2 + +font_size 24pt#; +weight = 1.6; +hratio = 1.00; +encoding =26; +input ma; +bye. diff --git a/fonts/malvern/drivers/ma75az7.mf b/fonts/malvern/drivers/ma75az7.mf new file mode 100644 index 0000000000..cdbccf3fbf --- /dev/null +++ b/fonts/malvern/drivers/ma75az7.mf @@ -0,0 +1,11 @@ +% ma75az7.mf -- 7-pt Malvern 75 with TeX text encoding with old style figures +% creator: mkdrivers 3.7 <pdc 1994.10.12> +% creation date: 1994.10.12 +% package: Malvern 1.2 + +font_size 7pt#; +weight = 1.6; +hratio = 1.00; +encoding =26; +input ma; +bye. diff --git a/fonts/malvern/drivers/ma75b10.mf b/fonts/malvern/drivers/ma75b10.mf new file mode 100644 index 0000000000..e9360e451a --- /dev/null +++ b/fonts/malvern/drivers/ma75b10.mf @@ -0,0 +1,12 @@ +% ma75b10.mf -- 10-pt Malvern 75 with encoding B +% version: 76 +% creator: mkdrivers 3.7 <pdc 1994.10.12> +% creation date: 1994.10.12 +% package: Malvern 1.2 + +font_size 10pt#; +weight = 1.6; +hratio = 1.00; +encoding = 2; +input ma; +bye. diff --git a/fonts/malvern/drivers/ma75b12.mf b/fonts/malvern/drivers/ma75b12.mf new file mode 100644 index 0000000000..9a5595de03 --- /dev/null +++ b/fonts/malvern/drivers/ma75b12.mf @@ -0,0 +1,12 @@ +% ma75b12.mf -- 12-pt Malvern 75 with encoding B +% version: 76 +% creator: mkdrivers 3.7 <pdc 1994.10.12> +% creation date: 1994.10.12 +% package: Malvern 1.2 + +font_size 12pt#; +weight = 1.6; +hratio = 1.00; +encoding = 2; +input ma; +bye. diff --git a/fonts/malvern/drivers/ma75b14.mf b/fonts/malvern/drivers/ma75b14.mf new file mode 100644 index 0000000000..c48dfe0edf --- /dev/null +++ b/fonts/malvern/drivers/ma75b14.mf @@ -0,0 +1,12 @@ +% ma75b14.mf -- 14-pt Malvern 75 with encoding B +% version: 76 +% creator: mkdrivers 3.7 <pdc 1994.10.12> +% creation date: 1994.10.12 +% package: Malvern 1.2 + +font_size 14pt#; +weight = 1.6; +hratio = 1.00; +encoding = 2; +input ma; +bye. diff --git a/fonts/malvern/drivers/ma75b18.mf b/fonts/malvern/drivers/ma75b18.mf new file mode 100644 index 0000000000..6045acd719 --- /dev/null +++ b/fonts/malvern/drivers/ma75b18.mf @@ -0,0 +1,12 @@ +% ma75b18.mf -- 18-pt Malvern 75 with encoding B +% version: 76 +% creator: mkdrivers 3.7 <pdc 1994.10.12> +% creation date: 1994.10.12 +% package: Malvern 1.2 + +font_size 18pt#; +weight = 1.6; +hratio = 1.00; +encoding = 2; +input ma; +bye. diff --git a/fonts/malvern/drivers/ma75b24.mf b/fonts/malvern/drivers/ma75b24.mf new file mode 100644 index 0000000000..f2ffbe6aa4 --- /dev/null +++ b/fonts/malvern/drivers/ma75b24.mf @@ -0,0 +1,12 @@ +% ma75b24.mf -- 24-pt Malvern 75 with encoding B +% version: 76 +% creator: mkdrivers 3.7 <pdc 1994.10.12> +% creation date: 1994.10.12 +% package: Malvern 1.2 + +font_size 24pt#; +weight = 1.6; +hratio = 1.00; +encoding = 2; +input ma; +bye. diff --git a/fonts/malvern/drivers/ma75b7.mf b/fonts/malvern/drivers/ma75b7.mf new file mode 100644 index 0000000000..2344794737 --- /dev/null +++ b/fonts/malvern/drivers/ma75b7.mf @@ -0,0 +1,12 @@ +% ma75b7.mf -- 7-pt Malvern 75 with encoding B +% version: 76 +% creator: mkdrivers 3.7 <pdc 1994.10.12> +% creation date: 1994.10.12 +% package: Malvern 1.2 + +font_size 7pt#; +weight = 1.6; +hratio = 1.00; +encoding = 2; +input ma; +bye. diff --git a/fonts/malvern/drivers/ma75s10.mf b/fonts/malvern/drivers/ma75s10.mf new file mode 100644 index 0000000000..2cc7278891 --- /dev/null +++ b/fonts/malvern/drivers/ma75s10.mf @@ -0,0 +1,11 @@ +% ma75s10.mf -- 10-pt Malvern 75 with TeX text encoding +% creator: mkdrivers 3.7 <pdc 1994.10.12> +% creation date: 1994.10.12 +% package: Malvern 1.2 + +font_size 10pt#; +weight = 1.6; +hratio = 1.00; +encoding =19; +input ma; +bye. diff --git a/fonts/malvern/drivers/ma75s12.mf b/fonts/malvern/drivers/ma75s12.mf new file mode 100644 index 0000000000..ad0f91a8ff --- /dev/null +++ b/fonts/malvern/drivers/ma75s12.mf @@ -0,0 +1,11 @@ +% ma75s12.mf -- 12-pt Malvern 75 with TeX text encoding +% creator: mkdrivers 3.7 <pdc 1994.10.12> +% creation date: 1994.10.12 +% package: Malvern 1.2 + +font_size 12pt#; +weight = 1.6; +hratio = 1.00; +encoding =19; +input ma; +bye. diff --git a/fonts/malvern/drivers/ma75s14.mf b/fonts/malvern/drivers/ma75s14.mf new file mode 100644 index 0000000000..dd3dd901f0 --- /dev/null +++ b/fonts/malvern/drivers/ma75s14.mf @@ -0,0 +1,11 @@ +% ma75s14.mf -- 14-pt Malvern 75 with TeX text encoding +% creator: mkdrivers 3.7 <pdc 1994.10.12> +% creation date: 1994.10.12 +% package: Malvern 1.2 + +font_size 14pt#; +weight = 1.6; +hratio = 1.00; +encoding =19; +input ma; +bye. diff --git a/fonts/malvern/drivers/ma75s18.mf b/fonts/malvern/drivers/ma75s18.mf new file mode 100644 index 0000000000..0d5357f169 --- /dev/null +++ b/fonts/malvern/drivers/ma75s18.mf @@ -0,0 +1,11 @@ +% ma75s18.mf -- 18-pt Malvern 75 with TeX text encoding +% creator: mkdrivers 3.7 <pdc 1994.10.12> +% creation date: 1994.10.12 +% package: Malvern 1.2 + +font_size 18pt#; +weight = 1.6; +hratio = 1.00; +encoding =19; +input ma; +bye. diff --git a/fonts/malvern/drivers/ma75s24.mf b/fonts/malvern/drivers/ma75s24.mf new file mode 100644 index 0000000000..3018b4c8c6 --- /dev/null +++ b/fonts/malvern/drivers/ma75s24.mf @@ -0,0 +1,11 @@ +% ma75s24.mf -- 24-pt Malvern 75 with TeX text encoding +% creator: mkdrivers 3.7 <pdc 1994.10.12> +% creation date: 1994.10.12 +% package: Malvern 1.2 + +font_size 24pt#; +weight = 1.6; +hratio = 1.00; +encoding =19; +input ma; +bye. diff --git a/fonts/malvern/drivers/ma75s7.mf b/fonts/malvern/drivers/ma75s7.mf new file mode 100644 index 0000000000..4ce58bbc68 --- /dev/null +++ b/fonts/malvern/drivers/ma75s7.mf @@ -0,0 +1,11 @@ +% ma75s7.mf -- 7-pt Malvern 75 with TeX text encoding +% creator: mkdrivers 3.7 <pdc 1994.10.12> +% creation date: 1994.10.12 +% package: Malvern 1.2 + +font_size 7pt#; +weight = 1.6; +hratio = 1.00; +encoding =19; +input ma; +bye. diff --git a/fonts/malvern/drivers/ma76a10.mf b/fonts/malvern/drivers/ma76a10.mf new file mode 100644 index 0000000000..a41e376766 --- /dev/null +++ b/fonts/malvern/drivers/ma76a10.mf @@ -0,0 +1,14 @@ +% ma76a10.mf -- 10-pt Malvern 76 with encoding A +% version: 76 +% creator: mkdrivers 3.7 <pdc 1994.10.12> +% creation date: 1994.10.12 +% package: Malvern 1.2 + +font_size 10pt#; +weight = 1.6; +hratio = 1.00; +slant = 1/8; +italicness = 1; +encoding = 1; +input ma; +bye. diff --git a/fonts/malvern/drivers/ma76a12.mf b/fonts/malvern/drivers/ma76a12.mf new file mode 100644 index 0000000000..bd235d7a3f --- /dev/null +++ b/fonts/malvern/drivers/ma76a12.mf @@ -0,0 +1,14 @@ +% ma76a12.mf -- 12-pt Malvern 76 with encoding A +% version: 76 +% creator: mkdrivers 3.7 <pdc 1994.10.12> +% creation date: 1994.10.12 +% package: Malvern 1.2 + +font_size 12pt#; +weight = 1.6; +hratio = 1.00; +slant = 1/8; +italicness = 1; +encoding = 1; +input ma; +bye. diff --git a/fonts/malvern/drivers/ma76a14.mf b/fonts/malvern/drivers/ma76a14.mf new file mode 100644 index 0000000000..eecf66dcfb --- /dev/null +++ b/fonts/malvern/drivers/ma76a14.mf @@ -0,0 +1,14 @@ +% ma76a14.mf -- 14-pt Malvern 76 with encoding A +% version: 76 +% creator: mkdrivers 3.7 <pdc 1994.10.12> +% creation date: 1994.10.12 +% package: Malvern 1.2 + +font_size 14pt#; +weight = 1.6; +hratio = 1.00; +slant = 1/8; +italicness = 1; +encoding = 1; +input ma; +bye. diff --git a/fonts/malvern/drivers/ma76a18.mf b/fonts/malvern/drivers/ma76a18.mf new file mode 100644 index 0000000000..51a0ff1c03 --- /dev/null +++ b/fonts/malvern/drivers/ma76a18.mf @@ -0,0 +1,14 @@ +% ma76a18.mf -- 18-pt Malvern 76 with encoding A +% version: 76 +% creator: mkdrivers 3.7 <pdc 1994.10.12> +% creation date: 1994.10.12 +% package: Malvern 1.2 + +font_size 18pt#; +weight = 1.6; +hratio = 1.00; +slant = 1/8; +italicness = 1; +encoding = 1; +input ma; +bye. diff --git a/fonts/malvern/drivers/ma76a24.mf b/fonts/malvern/drivers/ma76a24.mf new file mode 100644 index 0000000000..77f4ea1249 --- /dev/null +++ b/fonts/malvern/drivers/ma76a24.mf @@ -0,0 +1,14 @@ +% ma76a24.mf -- 24-pt Malvern 76 with encoding A +% version: 76 +% creator: mkdrivers 3.7 <pdc 1994.10.12> +% creation date: 1994.10.12 +% package: Malvern 1.2 + +font_size 24pt#; +weight = 1.6; +hratio = 1.00; +slant = 1/8; +italicness = 1; +encoding = 1; +input ma; +bye. diff --git a/fonts/malvern/drivers/ma76a7.mf b/fonts/malvern/drivers/ma76a7.mf new file mode 100644 index 0000000000..4f71a9b8f7 --- /dev/null +++ b/fonts/malvern/drivers/ma76a7.mf @@ -0,0 +1,14 @@ +% ma76a7.mf -- 7-pt Malvern 76 with encoding A +% version: 76 +% creator: mkdrivers 3.7 <pdc 1994.10.12> +% creation date: 1994.10.12 +% package: Malvern 1.2 + +font_size 7pt#; +weight = 1.6; +hratio = 1.00; +slant = 1/8; +italicness = 1; +encoding = 1; +input ma; +bye. diff --git a/fonts/malvern/drivers/ma76az10.mf b/fonts/malvern/drivers/ma76az10.mf new file mode 100644 index 0000000000..fc67237f90 --- /dev/null +++ b/fonts/malvern/drivers/ma76az10.mf @@ -0,0 +1,13 @@ +% ma76az10.mf -- 10-pt Malvern 76 with TeX text encoding with old style figures +% creator: mkdrivers 3.7 <pdc 1994.10.12> +% creation date: 1994.10.12 +% package: Malvern 1.2 + +font_size 10pt#; +weight = 1.6; +hratio = 1.00; +slant = 1/8; +italicness = 1; +encoding =26; +input ma; +bye. diff --git a/fonts/malvern/drivers/ma76az12.mf b/fonts/malvern/drivers/ma76az12.mf new file mode 100644 index 0000000000..0f76e003ed --- /dev/null +++ b/fonts/malvern/drivers/ma76az12.mf @@ -0,0 +1,13 @@ +% ma76az12.mf -- 12-pt Malvern 76 with TeX text encoding with old style figures +% creator: mkdrivers 3.7 <pdc 1994.10.12> +% creation date: 1994.10.12 +% package: Malvern 1.2 + +font_size 12pt#; +weight = 1.6; +hratio = 1.00; +slant = 1/8; +italicness = 1; +encoding =26; +input ma; +bye. diff --git a/fonts/malvern/drivers/ma76az14.mf b/fonts/malvern/drivers/ma76az14.mf new file mode 100644 index 0000000000..d527c191b4 --- /dev/null +++ b/fonts/malvern/drivers/ma76az14.mf @@ -0,0 +1,13 @@ +% ma76az14.mf -- 14-pt Malvern 76 with TeX text encoding with old style figures +% creator: mkdrivers 3.7 <pdc 1994.10.12> +% creation date: 1994.10.12 +% package: Malvern 1.2 + +font_size 14pt#; +weight = 1.6; +hratio = 1.00; +slant = 1/8; +italicness = 1; +encoding =26; +input ma; +bye. diff --git a/fonts/malvern/drivers/ma76az18.mf b/fonts/malvern/drivers/ma76az18.mf new file mode 100644 index 0000000000..e41f385ac1 --- /dev/null +++ b/fonts/malvern/drivers/ma76az18.mf @@ -0,0 +1,13 @@ +% ma76az18.mf -- 18-pt Malvern 76 with TeX text encoding with old style figures +% creator: mkdrivers 3.7 <pdc 1994.10.12> +% creation date: 1994.10.12 +% package: Malvern 1.2 + +font_size 18pt#; +weight = 1.6; +hratio = 1.00; +slant = 1/8; +italicness = 1; +encoding =26; +input ma; +bye. diff --git a/fonts/malvern/drivers/ma76az24.mf b/fonts/malvern/drivers/ma76az24.mf new file mode 100644 index 0000000000..81f6d16ba5 --- /dev/null +++ b/fonts/malvern/drivers/ma76az24.mf @@ -0,0 +1,13 @@ +% ma76az24.mf -- 24-pt Malvern 76 with TeX text encoding with old style figures +% creator: mkdrivers 3.7 <pdc 1994.10.12> +% creation date: 1994.10.12 +% package: Malvern 1.2 + +font_size 24pt#; +weight = 1.6; +hratio = 1.00; +slant = 1/8; +italicness = 1; +encoding =26; +input ma; +bye. diff --git a/fonts/malvern/drivers/ma76az7.mf b/fonts/malvern/drivers/ma76az7.mf new file mode 100644 index 0000000000..a79f7b0f4d --- /dev/null +++ b/fonts/malvern/drivers/ma76az7.mf @@ -0,0 +1,13 @@ +% ma76az7.mf -- 7-pt Malvern 76 with TeX text encoding with old style figures +% creator: mkdrivers 3.7 <pdc 1994.10.12> +% creation date: 1994.10.12 +% package: Malvern 1.2 + +font_size 7pt#; +weight = 1.6; +hratio = 1.00; +slant = 1/8; +italicness = 1; +encoding =26; +input ma; +bye. diff --git a/fonts/malvern/drivers/ma76b10.mf b/fonts/malvern/drivers/ma76b10.mf new file mode 100644 index 0000000000..e1f9d3d7f2 --- /dev/null +++ b/fonts/malvern/drivers/ma76b10.mf @@ -0,0 +1,14 @@ +% ma76b10.mf -- 10-pt Malvern 76 with encoding B +% version: 76 +% creator: mkdrivers 3.7 <pdc 1994.10.12> +% creation date: 1994.10.12 +% package: Malvern 1.2 + +font_size 10pt#; +weight = 1.6; +hratio = 1.00; +slant = 1/8; +italicness = 1; +encoding = 2; +input ma; +bye. diff --git a/fonts/malvern/drivers/ma76b12.mf b/fonts/malvern/drivers/ma76b12.mf new file mode 100644 index 0000000000..a199a85992 --- /dev/null +++ b/fonts/malvern/drivers/ma76b12.mf @@ -0,0 +1,14 @@ +% ma76b12.mf -- 12-pt Malvern 76 with encoding B +% version: 76 +% creator: mkdrivers 3.7 <pdc 1994.10.12> +% creation date: 1994.10.12 +% package: Malvern 1.2 + +font_size 12pt#; +weight = 1.6; +hratio = 1.00; +slant = 1/8; +italicness = 1; +encoding = 2; +input ma; +bye. diff --git a/fonts/malvern/drivers/ma76b14.mf b/fonts/malvern/drivers/ma76b14.mf new file mode 100644 index 0000000000..0c377beead --- /dev/null +++ b/fonts/malvern/drivers/ma76b14.mf @@ -0,0 +1,14 @@ +% ma76b14.mf -- 14-pt Malvern 76 with encoding B +% version: 76 +% creator: mkdrivers 3.7 <pdc 1994.10.12> +% creation date: 1994.10.12 +% package: Malvern 1.2 + +font_size 14pt#; +weight = 1.6; +hratio = 1.00; +slant = 1/8; +italicness = 1; +encoding = 2; +input ma; +bye. diff --git a/fonts/malvern/drivers/ma76b18.mf b/fonts/malvern/drivers/ma76b18.mf new file mode 100644 index 0000000000..369980eacf --- /dev/null +++ b/fonts/malvern/drivers/ma76b18.mf @@ -0,0 +1,14 @@ +% ma76b18.mf -- 18-pt Malvern 76 with encoding B +% version: 76 +% creator: mkdrivers 3.7 <pdc 1994.10.12> +% creation date: 1994.10.12 +% package: Malvern 1.2 + +font_size 18pt#; +weight = 1.6; +hratio = 1.00; +slant = 1/8; +italicness = 1; +encoding = 2; +input ma; +bye. diff --git a/fonts/malvern/drivers/ma76b24.mf b/fonts/malvern/drivers/ma76b24.mf new file mode 100644 index 0000000000..b47fa76c80 --- /dev/null +++ b/fonts/malvern/drivers/ma76b24.mf @@ -0,0 +1,14 @@ +% ma76b24.mf -- 24-pt Malvern 76 with encoding B +% version: 76 +% creator: mkdrivers 3.7 <pdc 1994.10.12> +% creation date: 1994.10.12 +% package: Malvern 1.2 + +font_size 24pt#; +weight = 1.6; +hratio = 1.00; +slant = 1/8; +italicness = 1; +encoding = 2; +input ma; +bye. diff --git a/fonts/malvern/drivers/ma76b7.mf b/fonts/malvern/drivers/ma76b7.mf new file mode 100644 index 0000000000..9462232db2 --- /dev/null +++ b/fonts/malvern/drivers/ma76b7.mf @@ -0,0 +1,14 @@ +% ma76b7.mf -- 7-pt Malvern 76 with encoding B +% version: 76 +% creator: mkdrivers 3.7 <pdc 1994.10.12> +% creation date: 1994.10.12 +% package: Malvern 1.2 + +font_size 7pt#; +weight = 1.6; +hratio = 1.00; +slant = 1/8; +italicness = 1; +encoding = 2; +input ma; +bye. diff --git a/fonts/malvern/drivers/ma76s10.mf b/fonts/malvern/drivers/ma76s10.mf new file mode 100644 index 0000000000..6a460a954d --- /dev/null +++ b/fonts/malvern/drivers/ma76s10.mf @@ -0,0 +1,13 @@ +% ma76s10.mf -- 10-pt Malvern 76 with TeX text encoding +% creator: mkdrivers 3.7 <pdc 1994.10.12> +% creation date: 1994.10.12 +% package: Malvern 1.2 + +font_size 10pt#; +weight = 1.6; +hratio = 1.00; +slant = 1/8; +italicness = 1; +encoding =19; +input ma; +bye. diff --git a/fonts/malvern/drivers/ma76s12.mf b/fonts/malvern/drivers/ma76s12.mf new file mode 100644 index 0000000000..ff5c93f11a --- /dev/null +++ b/fonts/malvern/drivers/ma76s12.mf @@ -0,0 +1,13 @@ +% ma76s12.mf -- 12-pt Malvern 76 with TeX text encoding +% creator: mkdrivers 3.7 <pdc 1994.10.12> +% creation date: 1994.10.12 +% package: Malvern 1.2 + +font_size 12pt#; +weight = 1.6; +hratio = 1.00; +slant = 1/8; +italicness = 1; +encoding =19; +input ma; +bye. diff --git a/fonts/malvern/drivers/ma76s14.mf b/fonts/malvern/drivers/ma76s14.mf new file mode 100644 index 0000000000..5de3c897db --- /dev/null +++ b/fonts/malvern/drivers/ma76s14.mf @@ -0,0 +1,13 @@ +% ma76s14.mf -- 14-pt Malvern 76 with TeX text encoding +% creator: mkdrivers 3.7 <pdc 1994.10.12> +% creation date: 1994.10.12 +% package: Malvern 1.2 + +font_size 14pt#; +weight = 1.6; +hratio = 1.00; +slant = 1/8; +italicness = 1; +encoding =19; +input ma; +bye. diff --git a/fonts/malvern/drivers/ma76s18.mf b/fonts/malvern/drivers/ma76s18.mf new file mode 100644 index 0000000000..dda4edd466 --- /dev/null +++ b/fonts/malvern/drivers/ma76s18.mf @@ -0,0 +1,13 @@ +% ma76s18.mf -- 18-pt Malvern 76 with TeX text encoding +% creator: mkdrivers 3.7 <pdc 1994.10.12> +% creation date: 1994.10.12 +% package: Malvern 1.2 + +font_size 18pt#; +weight = 1.6; +hratio = 1.00; +slant = 1/8; +italicness = 1; +encoding =19; +input ma; +bye. diff --git a/fonts/malvern/drivers/ma76s24.mf b/fonts/malvern/drivers/ma76s24.mf new file mode 100644 index 0000000000..cf19216d88 --- /dev/null +++ b/fonts/malvern/drivers/ma76s24.mf @@ -0,0 +1,13 @@ +% ma76s24.mf -- 24-pt Malvern 76 with TeX text encoding +% creator: mkdrivers 3.7 <pdc 1994.10.12> +% creation date: 1994.10.12 +% package: Malvern 1.2 + +font_size 24pt#; +weight = 1.6; +hratio = 1.00; +slant = 1/8; +italicness = 1; +encoding =19; +input ma; +bye. diff --git a/fonts/malvern/drivers/ma76s7.mf b/fonts/malvern/drivers/ma76s7.mf new file mode 100644 index 0000000000..88fb329e81 --- /dev/null +++ b/fonts/malvern/drivers/ma76s7.mf @@ -0,0 +1,13 @@ +% ma76s7.mf -- 7-pt Malvern 76 with TeX text encoding +% creator: mkdrivers 3.7 <pdc 1994.10.12> +% creation date: 1994.10.12 +% package: Malvern 1.2 + +font_size 7pt#; +weight = 1.6; +hratio = 1.00; +slant = 1/8; +italicness = 1; +encoding =19; +input ma; +bye. diff --git a/fonts/malvern/dvi/install.dvi b/fonts/malvern/dvi/install.dvi Binary files differnew file mode 100644 index 0000000000..e5d4bddc5c --- /dev/null +++ b/fonts/malvern/dvi/install.dvi diff --git a/fonts/malvern/dvi/magrman.dvi b/fonts/malvern/dvi/magrman.dvi Binary files differnew file mode 100644 index 0000000000..05aa06948f --- /dev/null +++ b/fonts/malvern/dvi/magrman.dvi diff --git a/fonts/malvern/dvi/maman.dvi b/fonts/malvern/dvi/maman.dvi Binary files differnew file mode 100644 index 0000000000..f6d31db841 --- /dev/null +++ b/fonts/malvern/dvi/maman.dvi diff --git a/fonts/malvern/fontinst/README b/fonts/malvern/fontinst/README new file mode 100644 index 0000000000..dfe2aae969 --- /dev/null +++ b/fonts/malvern/fontinst/README @@ -0,0 +1,46 @@ + + Fontinst files for Malvern 1.2 + pdc 1994.07.20 + +Malvern is a sanserif METAFONT font family, which should be available +from the CTAN archives (such as ftp.tex.ac.uk in directory tex-archive) +in directory fonts/malvern. + +These files are intended to be used with Alan Jeffrey's Fontinst +package. Fontinst is a package for generating composite ("virtual") +fonts, written in TeX for portability. For example, you can use +Fontinst to create Malvern fonts with the new Cork (T1) encoding. You +can get fontinst from the CTAN, in directory fonts/utilities/fontinst. + +Encoding files + These can be used inside an fontinst file, and can also be run + through plain TeX to produce a printed copy of the encoding. + + pdcmaa.etx -- describes MAlvern A encoding + + pdcmaa3.etx -- describes MAlvern A encoding with two changes: (1) no + old-style figures (2) no medium capitals + + pdcmab.etx -- describes MAlvern B encoding + +Glyph fudge files + Definitions used to assemble glyphs in Xx into glyphs for Yy are + called pdcxxyy.mtx (think "Xx to Yy") + + pdcmat1.mtx -- glyph hacks for making T1 (Cork) glyphs from MAlvern + encoded fonts. This goes *before* latin.mtx. + + pdcadma.mtx -- glyph hacks for making MAlvern glyphs from ADobe + standard roman glyphs + +Macro files + pdcetxf.tex + -- ETX Formatting macros (used when running TeX on an ETX file to + make a printed copy of the character encoding) + + pdcetxm.tex + -- ETX Macros (used in the business part of an ETX file) + +Miscellaneous + example.tex -- an example TeX file that generates fmvmq10.vpl +------------------------------------------------------------------------ diff --git a/fonts/malvern/fontinst/example.tex b/fonts/malvern/fontinst/example.tex new file mode 100644 index 0000000000..d3b88a223c --- /dev/null +++ b/fonts/malvern/fontinst/example.tex @@ -0,0 +1,35 @@ +% example.tex -- example use of fontinst with Malvern fonts +%%% ==================================================================== +%%% @TeX-file { +%%% author = "P. Damian Cugley", +%%% version = "X", +%%% date = "pdc 1994.07.20", +%%% filename = "example.tex", +%%% address = "Oxford University Computing Laboratory, +%%% Parks Road, Oxford OX1 3QD, UK", +%%% email = "Damian.Cugley@comlab.ox.ac.uk", +%%% codetable = "USASCII", +%%% keywords = "AFM, virtual fonts, fonts, Malvern, TeX", +%%% supported = "no", +%%% abstract = "Example of using fontinst with Malvern fonts.", +%%% package = "", +%%% dependencies = "fontinst.sty, pdcmat1.mtx, pdcmaa.etx, +%%% pdcmab.etx, pdcetxm.etx, latin.mtx, T1.etx, +%%% ma55a10.pl, ma55b10.pl", +%%% } +%%% ==================================================================== + +\input fontinst.sty + +\needsfontinstversion{1.328} + +\declareencoding{MALVERN A 1.1}{pdcmaa} +\declareencoding{MALVERN B 1.1}{pdcmab} + +\installfonts + \installfamily{T1}{fmv}{} + \installfont{fmvmq10}{ma55a10,ma55b10,pdcmat1,latin} + {T1}{T1}{fmv}{m}{n}{10} +\endinstallfonts + +\bye diff --git a/fonts/malvern/fontinst/fontma.tex b/fonts/malvern/fontinst/fontma.tex new file mode 100644 index 0000000000..ec0f662475 --- /dev/null +++ b/fonts/malvern/fontinst/fontma.tex @@ -0,0 +1,224 @@ +% mkfd.tex -- generate FD file for Malvern 1.2 +% version: 73 +% creator: mkdrivers 3.7 <pdc 1994.10.12> +% creation date: 1994.10.12 + +\input fontinst.sty + +\needsfontinstversion{1.328} + +\declaresize{7}{<5-8>} +\declaresize{10}{<8-11>} +\declaresize{12}{<11-13>} +\declaresize{14}{<13-16>} +\declaresize{18}{<16-21>} +\declaresize{24}{<21->} + +\declareencoding{MALVERN A 1.1}{pdcmaa} +\declareencoding{MALVERN B 1.1}{pdcmab} +\declareencoding{MALVERN A 1.2}{pdcmaa} +\declareencoding{MALVERN B 1.2}{pdcmab} +\declareencoding{TEX TEXT WITH OLD-STYLE NUMERALS}{OT19} +% \substitutesilent{n}{nn} +% \substitutesilent{it}{in} +% \substitutesilent{sc}{nc} + +\installfonts + \installfamily{T1}{fmv}{} + \installfamily{T1}{fmv9}{} + \installfont{ma55ar7} + {ma55a7,ma55b7,pdcmat1,latin}{T1}{T1}{fmv}{m}{n}{7} + \installfont{ma55ar10} + {ma55a10,ma55b10,pdcmat1,latin}{T1}{T1}{fmv}{m}{n}{10} + \installfont{ma55ar12} + {ma55a12,ma55b12,pdcmat1,latin}{T1}{T1}{fmv}{m}{n}{12} + \installfont{ma55ar14} + {ma55a14,ma55b14,pdcmat1,latin}{T1}{T1}{fmv}{m}{n}{14} + \installfont{ma55ar18} + {ma55a18,ma55b18,pdcmat1,latin}{T1}{T1}{fmv}{m}{n}{18} + \installfont{ma55ar24} + {ma55a24,ma55b24,pdcmat1,latin}{T1}{T1}{fmv}{m}{n}{24} + \installfont{ma56ar7} + {ma56a7,ma56b7,pdcmat1,latin}{T1}{T1}{fmv}{m}{it}{7} + \installfont{ma56ar10} + {ma56a10,ma56b10,pdcmat1,latin}{T1}{T1}{fmv}{m}{it}{10} + \installfont{ma56ar12} + {ma56a12,ma56b12,pdcmat1,latin}{T1}{T1}{fmv}{m}{it}{12} + \installfont{ma56ar14} + {ma56a14,ma56b14,pdcmat1,latin}{T1}{T1}{fmv}{m}{it}{14} + \installfont{ma56ar18} + {ma56a18,ma56b18,pdcmat1,latin}{T1}{T1}{fmv}{m}{it}{18} + \installfont{ma56ar24} + {ma56a24,ma56b24,pdcmat1,latin}{T1}{T1}{fmv}{m}{it}{24} + \installfont{ma75ar7} + {ma75a7,ma75b7,pdcmat1,latin}{T1}{T1}{fmv}{b}{n}{7} + \installfont{ma75ar10} + {ma75a10,ma75b10,pdcmat1,latin}{T1}{T1}{fmv}{b}{n}{10} + \installfont{ma75ar12} + {ma75a12,ma75b12,pdcmat1,latin}{T1}{T1}{fmv}{b}{n}{12} + \installfont{ma75ar14} + {ma75a14,ma75b14,pdcmat1,latin}{T1}{T1}{fmv}{b}{n}{14} + \installfont{ma75ar18} + {ma75a18,ma75b18,pdcmat1,latin}{T1}{T1}{fmv}{b}{n}{18} + \installfont{ma75ar24} + {ma75a24,ma75b24,pdcmat1,latin}{T1}{T1}{fmv}{b}{n}{24} + \installfont{ma76ar7} + {ma76a7,ma76b7,pdcmat1,latin}{T1}{T1}{fmv}{b}{it}{7} + \installfont{ma76ar10} + {ma76a10,ma76b10,pdcmat1,latin}{T1}{T1}{fmv}{b}{it}{10} + \installfont{ma76ar12} + {ma76a12,ma76b12,pdcmat1,latin}{T1}{T1}{fmv}{b}{it}{12} + \installfont{ma76ar14} + {ma76a14,ma76b14,pdcmat1,latin}{T1}{T1}{fmv}{b}{it}{14} + \installfont{ma76ar18} + {ma76a18,ma76b18,pdcmat1,latin}{T1}{T1}{fmv}{b}{it}{18} + \installfont{ma76ar24} + {ma76a24,ma76b24,pdcmat1,latin}{T1}{T1}{fmv}{b}{it}{24} + \installfont{ma55as7} + {ma55a7,ma55b7,pdcmat1,latin}{T19}{T1}{fmv9}{m}{n}{7} + \installfont{ma55as10} + {ma55a10,ma55b10,pdcmat1,latin}{T19}{T1}{fmv9}{m}{n}{10} + \installfont{ma55as12} + {ma55a12,ma55b12,pdcmat1,latin}{T19}{T1}{fmv9}{m}{n}{12} + \installfont{ma55as14} + {ma55a14,ma55b14,pdcmat1,latin}{T19}{T1}{fmv9}{m}{n}{14} + \installfont{ma55as18} + {ma55a18,ma55b18,pdcmat1,latin}{T19}{T1}{fmv9}{m}{n}{18} + \installfont{ma55as24} + {ma55a24,ma55b24,pdcmat1,latin}{T19}{T1}{fmv9}{m}{n}{24} + \installfont{ma56as7} + {ma56a7,ma56b7,pdcmat1,latin}{T19}{T1}{fmv9}{m}{it}{7} + \installfont{ma56as10} + {ma56a10,ma56b10,pdcmat1,latin}{T19}{T1}{fmv9}{m}{it}{10} + \installfont{ma56as12} + {ma56a12,ma56b12,pdcmat1,latin}{T19}{T1}{fmv9}{m}{it}{12} + \installfont{ma56as14} + {ma56a14,ma56b14,pdcmat1,latin}{T19}{T1}{fmv9}{m}{it}{14} + \installfont{ma56as18} + {ma56a18,ma56b18,pdcmat1,latin}{T19}{T1}{fmv9}{m}{it}{18} + \installfont{ma56as24} + {ma56a24,ma56b24,pdcmat1,latin}{T19}{T1}{fmv9}{m}{it}{24} + \installfont{ma75as7} + {ma75a7,ma75b7,pdcmat1,latin}{T19}{T1}{fmv9}{b}{n}{7} + \installfont{ma75as10} + {ma75a10,ma75b10,pdcmat1,latin}{T19}{T1}{fmv9}{b}{n}{10} + \installfont{ma75as12} + {ma75a12,ma75b12,pdcmat1,latin}{T19}{T1}{fmv9}{b}{n}{12} + \installfont{ma75as14} + {ma75a14,ma75b14,pdcmat1,latin}{T19}{T1}{fmv9}{b}{n}{14} + \installfont{ma75as18} + {ma75a18,ma75b18,pdcmat1,latin}{T19}{T1}{fmv9}{b}{n}{18} + \installfont{ma75as24} + {ma75a24,ma75b24,pdcmat1,latin}{T19}{T1}{fmv9}{b}{n}{24} + \installfont{ma76as7} + {ma76a7,ma76b7,pdcmat1,latin}{T19}{T1}{fmv9}{b}{it}{7} + \installfont{ma76as10} + {ma76a10,ma76b10,pdcmat1,latin}{T19}{T1}{fmv9}{b}{it}{10} + \installfont{ma76as12} + {ma76a12,ma76b12,pdcmat1,latin}{T19}{T1}{fmv9}{b}{it}{12} + \installfont{ma76as14} + {ma76a14,ma76b14,pdcmat1,latin}{T19}{T1}{fmv9}{b}{it}{14} + \installfont{ma76as18} + {ma76a18,ma76b18,pdcmat1,latin}{T19}{T1}{fmv9}{b}{it}{18} + \installfont{ma76as24} + {ma76a24,ma76b24,pdcmat1,latin}{T19}{T1}{fmv9}{b}{it}{24} + \installfont{ma55at7} + {ma55a7,ma55b7,pdcmat1,latin}{T1c}{T1}{fmv}{m}{sc}{7} + \installfont{ma55at10} + {ma55a10,ma55b10,pdcmat1,latin}{T1c}{T1}{fmv}{m}{sc}{10} + \installfont{ma55at12} + {ma55a12,ma55b12,pdcmat1,latin}{T1c}{T1}{fmv}{m}{sc}{12} + \installfont{ma55at14} + {ma55a14,ma55b14,pdcmat1,latin}{T1c}{T1}{fmv}{m}{sc}{14} + \installfont{ma55at18} + {ma55a18,ma55b18,pdcmat1,latin}{T1c}{T1}{fmv}{m}{sc}{18} + \installfont{ma55at24} + {ma55a24,ma55b24,pdcmat1,latin}{T1c}{T1}{fmv}{m}{sc}{24} + \installfont{ma75at7} + {ma75a7,ma75b7,pdcmat1,latin}{T1c}{T1}{fmv}{b}{sc}{7} + \installfont{ma75at10} + {ma75a10,ma75b10,pdcmat1,latin}{T1c}{T1}{fmv}{b}{sc}{10} + \installfont{ma75at12} + {ma75a12,ma75b12,pdcmat1,latin}{T1c}{T1}{fmv}{b}{sc}{12} + \installfont{ma75at14} + {ma75a14,ma75b14,pdcmat1,latin}{T1c}{T1}{fmv}{b}{sc}{14} + \installfont{ma75at18} + {ma75a18,ma75b18,pdcmat1,latin}{T1c}{T1}{fmv}{b}{sc}{18} + \installfont{ma75at24} + {ma75a24,ma75b24,pdcmat1,latin}{T1c}{T1}{fmv}{b}{sc}{24} + \installfont{ma55au7} + {ma55a7,ma55b7,pdcmat1,latin}{T1c9}{T1}{fmv9}{m}{sc}{7} + \installfont{ma55au10} + {ma55a10,ma55b10,pdcmat1,latin}{T1c9}{T1}{fmv9}{m}{sc}{10} + \installfont{ma55au12} + {ma55a12,ma55b12,pdcmat1,latin}{T1c9}{T1}{fmv9}{m}{sc}{12} + \installfont{ma55au14} + {ma55a14,ma55b14,pdcmat1,latin}{T1c9}{T1}{fmv9}{m}{sc}{14} + \installfont{ma55au18} + {ma55a18,ma55b18,pdcmat1,latin}{T1c9}{T1}{fmv9}{m}{sc}{18} + \installfont{ma55au24} + {ma55a24,ma55b24,pdcmat1,latin}{T1c9}{T1}{fmv9}{m}{sc}{24} + \installfont{ma75au7} + {ma75a7,ma75b7,pdcmat1,latin}{T1c9}{T1}{fmv9}{b}{sc}{7} + \installfont{ma75au10} + {ma75a10,ma75b10,pdcmat1,latin}{T1c9}{T1}{fmv9}{b}{sc}{10} + \installfont{ma75au12} + {ma75a12,ma75b12,pdcmat1,latin}{T1c9}{T1}{fmv9}{b}{sc}{12} + \installfont{ma75au14} + {ma75a14,ma75b14,pdcmat1,latin}{T1c9}{T1}{fmv9}{b}{sc}{14} + \installfont{ma75au18} + {ma75a18,ma75b18,pdcmat1,latin}{T1c9}{T1}{fmv9}{b}{sc}{18} + \installfont{ma75au24} + {ma75a24,ma75b24,pdcmat1,latin}{T1c9}{T1}{fmv9}{b}{sc}{24} + \installfont{ma55aa7} + {ma55s7,ma55a7,latin}{OT1c}{OT1}{fmv}{m}{sc}{7} + \installfont{ma55aa10} + {ma55s10,ma55a10,latin}{OT1c}{OT1}{fmv}{m}{sc}{10} + \installfont{ma55aa12} + {ma55s12,ma55a12,latin}{OT1c}{OT1}{fmv}{m}{sc}{12} + \installfont{ma55aa14} + {ma55s14,ma55a14,latin}{OT1c}{OT1}{fmv}{m}{sc}{14} + \installfont{ma55aa18} + {ma55s18,ma55a18,latin}{OT1c}{OT1}{fmv}{m}{sc}{18} + \installfont{ma55aa24} + {ma55s24,ma55a24,latin}{OT1c}{OT1}{fmv}{m}{sc}{24} + \installfont{ma75aa7} + {ma75s7,ma75a7,latin}{OT1c}{OT1}{fmv}{b}{sc}{7} + \installfont{ma75aa10} + {ma75s10,ma75a10,latin}{OT1c}{OT1}{fmv}{b}{sc}{10} + \installfont{ma75aa12} + {ma75s12,ma75a12,latin}{OT1c}{OT1}{fmv}{b}{sc}{12} + \installfont{ma75aa14} + {ma75s14,ma75a14,latin}{OT1c}{OT1}{fmv}{b}{sc}{14} + \installfont{ma75aa18} + {ma75s18,ma75a18,latin}{OT1c}{OT1}{fmv}{b}{sc}{18} + \installfont{ma75aa24} + {ma75s24,ma75a24,latin}{OT1c}{OT1}{fmv}{b}{sc}{24} + \installfont{ma55ab7} + {ma55az7,ma55a7,latin}{OT1c9}{OT1}{fmv9}{m}{sc}{7} + \installfont{ma55ab10} + {ma55az10,ma55a10,latin}{OT1c9}{OT1}{fmv9}{m}{sc}{10} + \installfont{ma55ab12} + {ma55az12,ma55a12,latin}{OT1c9}{OT1}{fmv9}{m}{sc}{12} + \installfont{ma55ab14} + {ma55az14,ma55a14,latin}{OT1c9}{OT1}{fmv9}{m}{sc}{14} + \installfont{ma55ab18} + {ma55az18,ma55a18,latin}{OT1c9}{OT1}{fmv9}{m}{sc}{18} + \installfont{ma55ab24} + {ma55az24,ma55a24,latin}{OT1c9}{OT1}{fmv9}{m}{sc}{24} + \installfont{ma75ab7} + {ma75az7,ma75a7,latin}{OT1c9}{OT1}{fmv9}{b}{sc}{7} + \installfont{ma75ab10} + {ma75az10,ma75a10,latin}{OT1c9}{OT1}{fmv9}{b}{sc}{10} + \installfont{ma75ab12} + {ma75az12,ma75a12,latin}{OT1c9}{OT1}{fmv9}{b}{sc}{12} + \installfont{ma75ab14} + {ma75az14,ma75a14,latin}{OT1c9}{OT1}{fmv9}{b}{sc}{14} + \installfont{ma75ab18} + {ma75az18,ma75a18,latin}{OT1c9}{OT1}{fmv9}{b}{sc}{18} + \installfont{ma75ab24} + {ma75az24,ma75a24,latin}{OT1c9}{OT1}{fmv9}{b}{sc}{24} +\endinstallfonts + +\bye + diff --git a/fonts/malvern/fontinst/pdcadma.mtx b/fonts/malvern/fontinst/pdcadma.mtx new file mode 100644 index 0000000000..59d7c98bef --- /dev/null +++ b/fonts/malvern/fontinst/pdcadma.mtx @@ -0,0 +1,151 @@ +% %M% 1.%I% 19%E% -- glyph hacks for Malvern -*-TeX-*- +%%% ==================================================================== +%%% @TeX-file{ +%%% author = "P. Damian Cugley", +%%% version = "1.%I%", +%%% date = "19%E%", +%%% filename = "%M%", +%%% address = "Oxford University Computing Laboratory, +%%% Parks Road, Oxford OX1 3QD, UK", +%%% email = "Damian.Cugley@comlab.ox.ac.uk", +%%% codetable = "USASCII", +%%% keywords = "AFM, virtual fonts, fonts, Malvern, TeX", +%%% supported = "no", +%%% abstract = "Hacks for making Malvern A glyphs +%%% from Adobe glyphs.", +%%% package = "", +%%% dependencies = "fontinst, pdc-etxf.tex", +%%% } +%%% ==================================================================== + +\relax + +\catcode`@=11 \input fontdoc.sty \catcode`@=12 +\input pdcetxf + +% Following 4 lines get the version ID from SCCS: +\begingroup\catcode`\%=12 \toks0={\endgroup + \def\pdcversion{1.%R%} + \def\lastedit{19%E%} +}\the\toks0 + +\title{Malvern glyphes for {\tt fontinst}} + +\section{Introduction} + This document describes additional glyphs for the {\tt fontinst} + package to use when generating Latin fonts with the Malvern~A + and B encodings from fonts with the Adobe character set. It + should be listed in a \cs{installfont} command after {\tt + latin}. + + This is version \pdcversion, last edited \lastedit. + +\raggedright + +\metrics + +\def\setleftrightkerning#1#2#3% +{ + \setleftkerning{#1}{#2}{#3} + \setrightkerning{#1}{#2}{#3} +} + +\comment{\section{Miscellaneous glyphs}} + +\setint{superiorscale}{700} +\setint{superiordy}{\sub{\int{ascender}} + {\scale{\int{ascender}}{\int{superiorscale}}}} +\setint{inferiorscale}{\int{superiorscale}} +\setint{inferiordy}{0} + +\def\superior#1% +{ + \moveup{\int{superiordy}} + \glyph{#1}{\int{superiorscale}} + \moveup{-\int{superiordy}} +} + +\def\inferior#1% +{ + \moveup{\int{inferiordy}} + \glyph{#1}{\int{inferiorscale}} + \moveup{-\int{inferiordy}} +} +\def\flushtop#1#2% +{ + \moveup{\sub{\height{X}}{\scale{\height{#1}}{#2}}} + \glyph{#1}{#2} + \moveup{\sub{\scale{\height{#1}}{#2}}{\height{X}}} +} + +\setglyph{cedillacap} \glyph{cedilla}{1000} \endsetglyph +\setglyph{ogonekcap} \glyph{ogonek}{1000} \endsetglyph +\setglyph{acutecap} \glyph{acute}{1000} \endsetglyph +\setglyph{gravecap} \glyph{grave}{1000} \endsetglyph +\setglyph{circumflexcap} \glyph{circumflex}{1000} \endsetglyph +\setglyph{tildecap} \glyph{tilde}{1000} \endsetglyph +\setglyph{ringcap} \glyph{ring}{1000} \endsetglyph +\setglyph{caroncap} \glyph{caron}{1000} \endsetglyph +\setglyph{brevecap} \glyph{breve}{1000} \endsetglyph +\setglyph{hungarumlautcap} \glyph{hungarumlaut}{1000} \endsetglyph +\setglyph{macrondbl} \glyph{macron}{1000} \endsetglyph + +\setglyph{careof} + \flushtop{c}{\int{superiorscale}} + \glyph{fraction}{1000} + \inferior{o} +\endsetglyph + +\setglyph{csuperior} + \superior{c} +\endsetglyph + +\setglyph{csuperior1} + \glyph{csuperior}{1000} +\endsetglyph + +\setint{ballotboxht}{\add{\int{ascender}}{\int{descender}}} +\setint{ballotboxdp}{\int{descender}} +\setint{ballotboxwd}{\sub{\int{ballotboxht}} + {\scale{\int{underlinethickness}}{2000}}} +\setint{ballotboxsp}{\int{visiblespacesurround}} + +\setglyph{ballotbox} + \movert{\int{ballotboxsp}} + \moveup{-\int{ballotboxdp}} + \glyphrule{\int{underlinethickness}}{\int{ballotboxht}} + \push + \moveup{\sub{\int{ballotboxht}}{\int{underlinethickness}}} + \glyphrule{\int{ballotboxwd}}{\int{underlinethickness}} + \pop + \glyphrule{\int{ballotboxwd}}{\int{underlinethickness}} + \glyphrule{\int{underlinethickness}}{\int{ballotboxht}} + \moveup{\int{ballotboxdp}} + \movert{\int{ballotboxsp}} +\endsetglyph + +\setint{markscale}{750} +% based on Alan's topaccent +\setglyph{hcircumflex} + \push + \moveup{\sub{\int{xheight}}{\scale{\int{xheight}}{\int{markscale}}}} + \movert{\sub{\scale{\width{h}}{600}} + {\scale{\scale{\width{circumflex}}{500}}{\int{markscale}}}} + \glyph{circumflex}{\int{markscale}} + \pop + \glyph{h}{1000} +\endsetglyph + +\setglyph{copyright} + \glyph{copyrightserif}{1000} +\endsetglyph + +\setglyph{registered} + \glyph{registerserif}{1000} +\endsetglyph + +\endmetrics + +\bye + + diff --git a/fonts/malvern/fontinst/pdcetxf.tex b/fonts/malvern/fontinst/pdcetxf.tex new file mode 100644 index 0000000000..6860f77283 --- /dev/null +++ b/fonts/malvern/fontinst/pdcetxf.tex @@ -0,0 +1,197 @@ +% pdcetxf.tex 1.1.1 1994/07/20 -- Formatting macros for ETX files -*-TeX-*- +% Copyright 1994 P. Damian Cugley + +%%% @TeX-macro-file { +%%% filename = "pdcetxf.tex", +%%% version = "1.1.1", +%%% date = "1994/07/20", +%%% package = "Malvern 1.1", +%%% author = "P. Damian Cugley", +%%% email = "damian.cugley@comlab.ox.ac.uk", +%%% address = "Oxford University Computing Laboratory, +%%% Parks Road, Oxford OX1 3QD, UK", +%%% codetable = "USASCII", +%%% keywords = "Fontinst, virtual fonts, TeX", +%%% supported = "Maybe", +%%% abstract = "Macros for formatting Damian's encoding (ETX) files.", +%%% dependencies = "", +%%% } + +% This software is available freely but without warranty. +% See the file COPYING for details. + +\font\titlerm=cmss17 +\font\sectionrm=cmss12 +\font\tensc=cmcsc10 \let\sc=\tensc +\font\tenrmpounds=cmu10 \def\pounds{{\tenrmpounds \$}} + +% Macros to print composite letters and a few other glyphs: + +\def\c#1{\setbox0\hbox{#1}\ifdim\ht0=1ex\accent24 #1% + \else{\ooalign{\hidewidth\char24\hidewidth\crcr\unhbox0}}\fi} +\def\UU{\leavevmode\setbox0\hbox{h}\dimen0\ht0\advance\dimen0-1ex% + \rlap{\raise.67\dimen0\hbox{\char'27}}U} +\def\uu{\accent23u} + +\def\flushtop#1% +{{% + \setbox0=\hbox{#1}\setbox1=\hbox{X}% + \dimen0=\ht1 \advance\dimen0-\ht0 + \raise\dimen0\box0 +}} + +\def\lguil{\raise0.33ex\hbox{$\scriptscriptstyle \langle\!\langle$}} +\def\rguil{\raise0.33ex\hbox{$\scriptscriptstyle \rangle\!\rangle$}} + +\def\registered +{% + \ooalign{\hfil\raise0.045ex\hbox{\sc \kern0.05em r}\hfil + \crcr\mathhexbox20D}% +} +\def\copyright +{% + \ooalign{\hfil\raise0.035ex\hbox{\sc \kern-0.025em c}\hfil + \crcr\mathhexbox20D}% +} +\def\trademark{\flushtop{$\scriptscriptstyle\rm TM$}} + +\def\tick +{% + \flushtop{\the\scriptscriptfont2 + \kern0.06em \char'060 \kern0.06em }% +} +\def\tickdbl +{% + \flushtop{\the\scriptscriptfont2 + \kern0.06em \char'060 \char'060 \kern0.06em }% +} +\def\asciicircum +{% + \leavevmode\raise0.5ex\hbox{\the\scriptscriptfont2 \char"5E }% +} + +\newcount\seccount \seccount=0 +\def\section#1% +{% + \medbreak + \global\advance\seccount1 + \leftline{\sectionrm \the\seccount.\ #1} + \nobreak\smallskip + \everypar{\setbox0=\lastbox \global\everypar={}} +} + +\def\LaTeX{L\kern-0.1em \flushtop{a}\kern-0.1em\TeX} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% TeXbook chapter 23 -- three columns + +\newdimen\pagewd \newdimen\margin \margin=15mm \newdimen\colsep \colsep=1pc +\pagewd=210mm \advance\pagewd-2\margin + +\hoffset=\margin\advance\hoffset-1in +\voffset=\margin\advance\voffset-1in +\vsize=297mm \advance\vsize-2\margin + +\hsize=\pagewd \advance\hsize-2\colsep \divide\hsize3 +\tolerance=1000 + +\def\makeheadline +{ + \vbox to 0pt + { + \vskip-22.5pt + \hbox to \pagewd{\vbox to 8.5pt{} \the\headline} + \vss + } + \nointerlineskip +} +\def\makefootline +{ + \baselineskip=24pt + \hbox to \pagewd{\the\footline} +} + +\let\lmr=L \newbox\leftcolumn \newbox\midcolumn +\output= +{ + \if L\lmr + \global\setbox\leftcolumn=\columnbox + \global\let\lmr=M + \else\if M\lmr + \global\setbox\midcolumn=\columnbox + \global\let\lmr=R + \else + \tripleformat + \global\let\lmr=L + \fi\fi + \ifnum\outputpenalty>-20000 \else + \dosupereject + \fi +} +\def\tripleformat +{% + \shipout\vbox + { + \makeheadline + \hbox to \pagewd{\box\leftcolumn \hfil + \box\midcolumn\hfil + \columnbox} + \makefootline + } + \advancepageno +} +\def\columnbox{\leftline{\pagebody}} + +\def\bye +{ + \par\vfill\supereject + \if L\lmr \else \null\vfill\eject \fi + \if L\lmr \else \null\vfill\eject \fi + \end +} + +\spaceskip=0.3em \rightskip=0pt plus 2em + + +\def\title#1% +{ + \begingroup \parindent=0pt \titlerm \baselineskip=20pt \rightskip=0pt + plus 2em \hyphenpenalty=10000 + #1 + \medskip + \endgroup + + \noindent + Version \pdcversion, \lastedit + \bigskip + + \rightline{\vbox{\halign{##\hfil\cr + P.\ Damian Cugley\cr + \noalign{\smallskip}% + Oxford University\cr\quad Computing Laboratory\cr + Parks Road\cr + Oxford OX1 3QD\cr + UK \cr + \noalign{\smallskip}% + \tt Damian.Cugley@\cr\tt\quad comlab.ox.ac.uk\cr + }}} + \bigbreak +} + +\def\cs#1{\leavevmode\hbox{\tt\char92 #1}} + +\def\frac#1/#2% +{% + \leavevmode\kern0.1em + \raise0.5ex \hbox{\the\scriptfont0 #1}% + \kern -0.1em /\kern-0.15em + \lower0.5ex \hbox{\the\scriptfont0 #2}% +} + +\def\Aheading#1{\smallbreak\noindent{\bf#1}} +\def\docscale#1#2{#1\times#2/1000} + +%Local Variables: +%tex-mother-file: "pdcmaa.etx" +%End: diff --git a/fonts/malvern/fontinst/pdcetxm.tex b/fonts/malvern/fontinst/pdcetxm.tex new file mode 100644 index 0000000000..359db273e2 --- /dev/null +++ b/fonts/malvern/fontinst/pdcetxm.tex @@ -0,0 +1,110 @@ +% pdcetxm.tex 1.1.1 1994/07/20 -- macros for ETX files +% Copyright 1993, 1994 P. Damian Cugley + +%%% @TeX-macro-file { +%%% filename = "pdcetxm.tex", +%%% version = "1.1.1", +%%% date = "1994/07/20", +%%% package = "Malvern 1.1", +%%% author = "P. Damian Cugley", +%%% email = "damian.cugley@comlab.ox.ac.uk", +%%% address = "Oxford University Computing Laboratory, +%%% Parks Road, Oxford OX1 3QD, UK", +%%% codetable = "USASCII", +%%% keywords = "Malvern, METAFONT, font, typefont, TeX", +%%% supported = "Maybe", +%%% abstract = "Macros for Damian's ETX files.", +%%% dependencies = "", +%%% } + +% This software is available freely but without warranty. +% See the file COPYING for details. + +% Macro to enumerate numerals 0..9 +% #1 -- description +% of which set of numerals this will be -- such as "old style" or +% "ranging" +% #2 -- the suffix to append to the letter to make its name +% -- e.g., "oldstyle" to make "oneoldstyle", etc +% #3 -- body of macro to typeset a sammple numberal +% it takes one argument, the character to be displayed +% +% For eample, \pdcnumerals{ranging}{}{#1} or +% \pdcnumerals{old style}{oldstyle}{$\mit#1$} + +% pdc 1993/10/21 + +\def\pdcnumerals#1#2% +{ + \edef\numeralentry##1##2% + {% + \noexpand\setslot{##1#2} + \noexpand\comment{The #1 digit + `\noexpand\numeralsample{##2}'.} + \noexpand\endsetslot + } + \afterassignment\xxxpdcnumerals + \def\numeralsample##1% +} + +\def\xxxpdcnumerals +{ + \numeralentry{zero}{0} + \numeralentry{one}{1} + \numeralentry{two}{2} + \numeralentry{three}{3} + \numeralentry{four}{4} + \numeralentry{five}{5} + \numeralentry{six}{6} + \numeralentry{seven}{7} + \numeralentry{eight}{8} + \numeralentry{nine}{9} +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% Macro to enumerate alphabetics + +% #1 -- a description of which alphabet this will be -- such as +% "lower case" or "capital" +% #2 -- the suffix to append to the letter to make its name -- +% e.g., "small" to make "Asmall", "Bsmall", etc. +% #3 -- macro body to typeset a sample letter +% it takes one argument, the character to be displayed +% For eample, \pdcuppercase{upper case}{}{\uppercase{#1}} or +% \pdclowercase{small capital}{small}{{\sc \lowercase{#1}}} + +% pdc 1993/10/21 + +\newif\ifpdclowercase +\def\pdcuppercase{\pdclowercasefalse\pdcalphabet} +\def\pdclowercase{\pdclowercasetrue\pdcalphabet} + +\def\pdcalphabet#1#2% +{ + \edef\alphabetentry##1##2% + {% + \noexpand\setslot{\ifpdclowercase##2\else##1\fi#2} + \noexpand\comment{The #1 letter + `\noexpand\alphabetsample{##1}'.} + \noexpand\endsetslot + } + \afterassignment\xxxpdcalphabet + \def\alphabetsample##1% +} + +\def\xxxpdcalphabet +{ + \alphabetentry{A}{a} \alphabetentry{B}{b} \alphabetentry{C}{c} + \alphabetentry{D}{d} \alphabetentry{E}{e} \alphabetentry{F}{f} + \alphabetentry{G}{g} \alphabetentry{H}{h} \alphabetentry{I}{i} + \alphabetentry{J}{j} \alphabetentry{K}{k} \alphabetentry{L}{l} + \alphabetentry{M}{m} \alphabetentry{N}{n} \alphabetentry{O}{o} + \alphabetentry{P}{p} \alphabetentry{Q}{q} \alphabetentry{R}{r} + \alphabetentry{S}{s} \alphabetentry{T}{t} \alphabetentry{U}{u} + \alphabetentry{V}{v} \alphabetentry{W}{w} \alphabetentry{X}{x} + \alphabetentry{Y}{y} \alphabetentry{Z}{z} +} + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% diff --git a/fonts/malvern/fontinst/pdcmaa.etx b/fonts/malvern/fontinst/pdcmaa.etx new file mode 100644 index 0000000000..6f0c2b9cb2 --- /dev/null +++ b/fonts/malvern/fontinst/pdcmaa.etx @@ -0,0 +1,876 @@ +% pdcmaa.etx 1.1.1 1994/07/20 -- Malvern encoding A -*-TeX-*- +%%%======================================================================== +%%% @TeX-font-encoding-file{ +%%% author = "Damian Cugley", +%%% version = "1.1", +%%% date = "1994/07/20", +%%% filename = "pdcmaa.etx", +%%% address = "Oxford University Computing Laboratory, +%%% Parks Road, Oxford OX1 3QD, UK", +%%% telephone = "+44 865 273838 x 73199", +%%% email = "Damian.Cugley@comlab.ox.ac.uk", +%%% codetable = "USASCII", +%%% keywords = "encoding, Malvern, TeX", +%%% supported = "no", +%%% abstract = "This is the Malvern A encoding as a TeX font +%%% encoding file, for use with the fontinst +%%% font installation package.", +%%% package = "Malvern", +%%% dependencies = "fontinst.sty, pdcetxf.tex, pdcetxm.tex", +%%% } +%%%======================================================================== +% +% This file is based on the Malvern A encoding used with my Malvern fonts. +% Created pdc 1993/10/01 + +\relax + +\catcode`@=11 \input fontdoc.sty \catcode`@=12 +\input pdcetxf + +% Following 4 lines get the version ID from SCCS: +\begingroup\catcode`\%=12 \toks0={\endgroup + \def\pdcversion{1.1} + \def\lastedit{1994/07/20} +}\the\toks0 + +\title{The Malvern~A encoding~vector} + +\section{Introduction} + This document describes my Malvern~A \TeX\ font encoding + conventions. It is in Alan Jeffrey's Fontinst format, which + means that it can be used to generate {\tt vpl} files remapping + Malvern-encoded fonts to T1 (Cork) fonts and vice versa. + + The short code for this encoding (for the purposes of Fontinst + and NFSS~2\footnote*{The second New Font Selection Scheme -- the font + selection scheme that is used in \LaTeX~2e.}) is `{\tt + maa}'.\footnote\dag{{\it Ma} is for the Malvern package. In + Karl Berry's font naming scheme, Malvern is abbreviated {\it + Mv}. But in all other contexts, I have abbreviated it {\it + Ma}.} The encoding file is called {\tt pdcmaa.etx}, the `pdc' + prefix intended to reduce the probabilty of my font encoding + files clashing with anyone else's. + + Malvern~A has the following variants (which only exist because + most available PostScript fonts have neither medium capital nor + small capital letters): +\smallskip \item{$\bullet$} + A.1\quad Medium capital letters replaced by the corresponding full + capitals. + +\smallskip\item{$\bullet$} + A.2\quad Old style numerals replaced by ranging numerals. + +\smallskip\item{$\bullet$} + A.3\quad Medium capital letters replaced by the corresponding full + capitals and old style numerals replaced by ranging numerals. +\smallbreak\noindent + Which encoding is produced by using this {\tt.etx} file depends + on the values of integer variables {\tt nomedium} and {\tt + nooldstyle}. If set to any value these variables suppress + medium capitals and old style numerals respectively. + +\iffalse + There are at least the following Malvern encodings: +\list +\item + Malvern A (upper and lower case, small caps and medium caps), +\item + Malvern B (misc symbols, and overflow from A), +\item + Malvern C (Cyrillic) [partially completed], +\item + Malvern D (composites), and +\item + Malvern G (Greek). +\endlist +\fi + +\section{Terminology} + I will use {\it composite letters} to refer to those glyphs + written by combining a {\it base letter} and some sort of {\it + mark}, for example, {\it\'e}, {\it\^\j} or {\it\c t}. I avoid + the term `accented letter' because it tends to provoke irate + email informing me that letters like {\it \"a} and {\it \aa} are + not `accented letters' in the languages where they are used. + + The word {\it composite} refers to the way the glyph is written, + and does not imply that they will be typeset by overprinting or + anything similar. + +\section{Medium capitals} + The medium-capital alphabet is a peculiarity of the Malvern + encoding but is not entirely without precedent (there are other + typefaces that supply a smaller set of capitals). M.cap.\ + letters might be used with the `upper case marks' to make + composite letters that do not poke above the line of text as + much as plain \TeX's upper case composites do. Some computer + documentation uses medium capitals for all-capital acronyms. + Some people have suggested using medium-capitals for languages + like German which use many initial capitals. + + If a typeface has no medium capitals, then large capitals should + be substituted (encoding A.1). +\bigskip \hrule \medskip + +\encoding + +\needsfontinstversion{1.315} +\input pdcetxm + +\comment{\section{Default values}} +\setstr{codingscheme}{Malvern A} + +\setint{italicslant}{0} + +\ifisglyph{space}\then + \setint{interword}{\width{space}} +\else + \setint{interword}{333} +\fi + +\ifisglyph{x}\then + \setint{xheight}{\height{x}} +\else + \setint{xheight}{500} +\fi + +\comment{\section{Default font dimensions}} +\setint{fontdimen(1)}{\int{italicslant}} % italic slant +\setint{fontdimen(2)}{\int{interword}} % interword space +\ifisint{monowidth}\then + \setint{fontdimen(3)}{0} % interword stretch + \setint{fontdimen(4)}{0} % interword shrink +\else + \setint{fontdimen(3)}{\scale{\int{interword}}{333}}% interword stretch + \setint{fontdimen(4)}{\scale{\int{interword}}{333}}% interword shrink +\fi +\setint{fontdimen(5)}{\int{xheight}} % x-height +\setint{fontdimen(6)}{1000} % quad +\ifisint{monowidth}\then + \setint{fontdimen(7)}{\int{interword}} % extra space after . +\else + \setint{fontdimen(7)}{0} % extra space after . +\fi + +\comment{\section{The encoding} + There are 256 glyphs in this encoding.} + +\setslot{Thorn} + \comment{The Icelandic capital letter Thorn, similar to a `P' with the + bowl moved down. It is unavailable in plain \TeX.} +\endsetslot + +\setslot{Aogonek} + \comment{The letter `A' with an ogonek accent hanging from the bottom + right serif.} +\endsetslot + +\setslot{Ng} + \comment{The Sami letter `Ng', which looks like an uncial `N' (or a + large `n') with a right tail taken from a `j'. It is unavailable + in plain \TeX.} +\endsetslot + +\setslot{Lslash} + \comment{The uppercase Polish letter `\L'} +\endsetslot + +\setslot{Eth} + \comment{The uppercase Icelandic letter `Eth' similar to a `D' with a + horizontal bar through the stem. It is unavailable in plain \TeX.} +\endsetslot + +\setslot{Eogonek} + \comment{The letter `E' with an ogonek hanging from the right of the + bottom bar.} +\endsetslot + +\setslot{cedilla} + \comment{The cedilla mark `\c c'.} +\endsetslot + +\setslot{ogonek} + \comment{The ogonek mark (unavailable in plain \TeX).} +\endsetslot + +\setslot{acute} + \comment{The acute mark `\'a'.} +\endsetslot + +\setslot{grave} + \comment{The grave mark `\`a'.} +\endsetslot + +\setslot{circumflex} + \comment{The circumflex mark `\^ a'.} +\endsetslot + +\setslot{tilde} + \comment{The tilde mark `\~a'.} +\endsetslot + +\setslot{ring} + \comment{The ring mark `\aa'.} +\endsetslot + +\setslot{caron} + \comment{The hook (h\'a\v cek) mark `\v c'.} +\endsetslot + +\setslot{breve} + \comment{The breve mark `\u a'.} +\endsetslot + +\setslot{hungarumlaut} + \comment{The long Hungarian umlaut mark `\H a'.} +\endsetslot + +\setslot{thorn} + \comment{The Icelandic lower case letter thorn, similar to a `p' with + the ascender of a `b'. It is unavailable in plain \TeX.} +\endsetslot + +\setslot{aogonek} + \comment{The letter `a' with an ogonek mark hanging from the bottom + right stroke.} +\endsetslot + +\setslot{ng} + \comment{The Sami letter `eng', which looks like an `n' with a right + tail like a `j'. It is unavailable in plain \TeX.} +\endsetslot + +\setslot{lslash} + \comment{The lower case Polish letter `\l'} +\endsetslot + +\setslot{eth} + \comment{The lower case Icelandic letter `eth' similar to a + `$\partial$' with a stroke through the ascender. It is + unavailable in plain \TeX.} +\endsetslot + +\setslot{eogonek} + \comment{The letter `e' with an ogonek mark hanging from bottom + stroke.} +\endsetslot + +\setslot{dotaccent} + \comment{The dot mark `\.c'.} +\endsetslot + +\setslot{dieresis} + \comment{The two-dots mark `\"a'.} +\endsetslot + +\setslot{germandbls} + \comment{The German {\it Eszet}\/ `\ss'.} +\endsetslot + +\setslot{dotlessi} + \comment{A dotless {\it i} `\i', used to produce composite letters + such as `\^\i'.} +\endsetslot + +\setslot{dotlessj} + \comment{A dotless {\it j} `\j', used to produce composite letters + such as `\^\j' (Esperanto letter).} +\endsetslot + +\setslot{ff} + \ligature{LIG}{i}{ffi} + \ligature{LIG}{l}{ffl} + \comment{The `ff' ligature.} +\endsetslot + +\setslot{fi} + \comment{The `fi' ligature.} +\endsetslot + +\setslot{fl} + \comment{The `fl' ligature.} +\endsetslot + +\setslot{ffi} + \comment{The `ffi' ligature.} +\endsetslot + +\setslot{ffl} + \comment{The `ffl' ligature.} +\endsetslot + +\setslot{bullet} + \comment{A bullet `$\bullet$'.} +\endsetslot + +\setslot{exclam} + \ligature{LIG}{quoteleft}{exclamdown} + \comment{The exclamation mark `!'.} +\endsetslot + +\setslot{trademark} + \comment{The trademark sign, `\trademark'. + I~deliberately did not put anything resembling a quotation mark + in this slot, in the hope that that people who think that they + can use `neutral quotation marks' in typeset text will be + trained out of this bad habit.} +\endsetslot + + +\setslot{numbersign} + \comment{The hash mark `\#'.} +\endsetslot + +\setslot{dollar} + \comment{The dollar sign `\$'.} +\endsetslot + +\setslot{percent} + \comment{The percent sign `\%'.} +\endsetslot + +\setslot{ampersand} + \comment{The ampersand sign `\&'.} +\endsetslot + +\setslot{quoteright} + \ligature{LIG}{quoteright}{quotedblright} + \comment{The apostrophe `\thinspace'\thinspace'.} +\endsetslot + +\setslot{parenleft} + \comment{The opening parenthesis `('.} +\endsetslot + +\setslot{parenright} + \comment{The closing parenthesis `)'.} +\endsetslot + +\setslot{asterisk} + \comment{The raised asterisk `*'.} +\endsetslot + +\setslot{plus} + \comment{The addition sign `+'.} +\endsetslot + +\setslot{comma} + \ligature{LIG}{comma}{quotedblbase} + \comment{The comma `,'.} +\endsetslot + +\setslot{hyphen} + \ligature{LIG}{hyphen}{rangedash} + \comment{The hyphen `-'.} +\endsetslot + +\setslot{period} + \comment{The full point `.'.} +\endsetslot + +\setslot{slash} + \comment{The forward oblique `/'.} +\endsetslot + + +\ifisint{nooldstyle}\then + \pdcnumerals{ranging}{}{$#1$} +\else + \comment{\medskip The old style numerals. In effect, old style + figures the default for plain text. \endgraf By using + {\tt\char92 mathcode}s, a document designer can arrange that + ranging numerals be used in maths mode, and then arrange that + all numbers be set in maths mode. (It might be easier to use a + virtual font to exchange the ranging and old style numerals and + not use old style figures at all.) \endgraf This and the + following nine glyphs might be the same as glyphs 176--87, if + the typeface has no old style digits.} + + \pdcnumerals{old style}{oldstyle}{$\mit#1$} +\fi + +\setslot{colon} + \comment{The colon `:'.} +\endsetslot + +\setslot{semicolon} + \comment{The semi-colon `;'.} +\endsetslot + +\setslot{guilsinglleft} + \comment{A leftward-pointing single guillemet (cf.\ glyph~188), not + available in plain \TeX.} +\endsetslot + +\setslot{equal} + \comment{The equals sign `='.} +\endsetslot + +\setslot{guilsinglright} + \comment{A rightward-pointing single guillemet (cf.\ glyph~190), not + available in plain \TeX.} +\endsetslot + +\setslot{question} + \ligature{LIG}{quoteleft}{questiondown} + \comment{The question mark `?'.} +\endsetslot + +\setslot{at} + \comment{The commerical at sign `@'.} +\endsetslot + + +\pdcuppercase{capital}{}{\uppercase{#1}} + + +\setslot{bracketleft} + \comment{The opening square bracket `['.} +\endsetslot + +\setslot{Oslash} + \comment{The letter `\O'.} +\endsetslot + +\setslot{bracketright} + \comment{The closing square bracket `]'.} +\endsetslot + +\setslot{AE} + \comment{The letter `\AE'.} +\endsetslot + +\setslot{OE} + \comment{The letter `\OE'.} +\endsetslot + +\setslot{quoteleft} + \ligature{LIG}{quoteleft}{quotedblleft} + \comment{The inverted (turned) comma `\thinspace`\thinspace'. English opening + quotation mark, German closing nested quotation mark.} +\endsetslot + +\pdclowercase{lower case}{}{\lowercase{#1}} + +\setslot{braceleft} + \comment{The opening curly brace `$\lbrace$'.} +\endsetslot + +\setslot{oslash} + \comment{The lower case letter `\o'.} +\endsetslot + +\setslot{braceright} + \comment{The closing curly brace `$\rbrace$'.} +\endsetslot + +\setslot{ae} + \comment{The lower case letter `\ae'.} +\endsetslot + +\setslot{oe} + \comment{The lower case letter `\oe'.} +\endsetslot + +\ifisint{nomedium}\then + +\setslot{Thorn} + \comment{The capital Icelandic letter Thorn, same as glyph~0.} +\endsetslot + +\setslot{Aogonek} + \comment{The capital letter `A' with an ogonek hanging from + the bottom right serif, same as glyph~1} +\endsetslot + +\setslot{Ng} + \comment{The capital Sami letter `Eng', same as glyph~2.} +\endsetslot + +\setslot{Lslash} + \comment{The capital Polish letter `\L', same as glyph~3.} +\endsetslot + +\setslot{Eth} + \comment{The capital Icelandic letter `Eth', same as glyph~4.} +\endsetslot + +\setslot{Eogonek} + \comment{The capital letter `E' with an ogonek hanging from + the right of the bottom bar, same as glyph~5.} +\endsetslot + +\else + +\setslot{Thornmedium} + \comment{The medium capital Icelandic letter Thorn, similar to a `P' + with the bowl moved down. It is unavailable in plain \TeX. See + \S\thinspace XXX for information about medium capital letters.} +\endsetslot + +\setslot{Aogonekmedium} + \comment{The medium capital letter `A' with an ogonek hanging from + the bottom right serif. The PostScript conventions for naming + glyphs begin to fray at this point\dots} +\endsetslot + +\setslot{Ngmedium} + \comment{The medium capital Sami letter `Eng', which looks like an + uncial `N' (or a large `n') with a right tail taken from a `j'. + It is unavailable in plain \TeX.} +\endsetslot + +\setslot{Lslashmedium} + \comment{The medium capital Polish letter `\L'} +\endsetslot + +\setslot{Ethmedium} + \comment{The medium capital Icelandic letter `Eth' similar to a `D' + with a horizontal bar through the stem. It is unavailable in + plain \TeX.} +\endsetslot + +\setslot{Eogonekmedium} + \comment{The medium capital letter `E' with an ogonek hanging from + the right of the bottom bar.} +\endsetslot +\fi + +\setslot{cedillacap} + \comment{The cedilla mark `\c C', sized for capital letters.} +\endsetslot + +\setslot{ogonekcap} + \comment{The ogonek mark, sized for capital leters (unavailable in + plain \TeX).} +\endsetslot + +\setslot{acutecap} + \comment{The acute mark `\'A', sized for (medium) capital letters. + For all these `capital marks', the glyph is positioned + vertically in the correct position to go over a lower case + letter, even though it is intended to be used over capital or + medioum capital base glyphs. This is so that \TeX's + {\tt\char92 accent} primitive may be used to position the + mark.} +\endsetslot + +\setslot{gravecap} + \comment{The grave mark `\`A', sized for capital letters.} +\endsetslot + +\setslot{circumflexcap} + \comment{The circumflex mark `\^ A', sized for capital letters.} +\endsetslot + +\setslot{tildecap} + \comment{The tilde mark `\~A', sized for capital letters.} +\endsetslot + +\setslot{ringcap} + \comment{The ring mark `\AA', sized for capital letters.} +\endsetslot + +\setslot{caroncap} + \comment{The hook (h\'a\v cek) mark `\v C', sized for + capital letters.} +\endsetslot + +\setslot{brevecap} + \comment{The breve mark `\u A', sized for capital letters.} +\endsetslot + +\setslot{hungarumlautcap} + \comment{The long Hungarian umlaut mark `\H A', sized for + capital letters.} +\endsetslot + +\setslot{Thornsmall} + \comment{The Icelandic small capital letter thorn, similar to a `{\sc + p}', but with the bowl lowered. It is unavailable in plain + \TeX.} +\endsetslot + +\setslot{Aogoneksmall} + \comment{The small capital letter `{\sc a}' with an ogonek mark + hanging from the bottom right stroke.} +\endsetslot + +\setslot{Ngsmall} + \comment{The Sami small capital letter `eng'. It is unavailable in + plain \TeX.} +\endsetslot + +\setslot{Lslashsmall} + \comment{The small capital Polish letter `{\sc\l}'} +\endsetslot + +\setslot{Ethsmall} + \comment{The small capital Icelandic letter `eth' similar to a `{\sc + d}' with a stroke through the left stem. It is unavailable in + plain \TeX.} +\endsetslot + +\setslot{Eogoneksmall} + \comment{The small capital letter `{\sc e}' with an ogonek mark + hanging from bottom bar.} +\endsetslot + +\setslot{macron} + \comment{The macron mark `\=a'.} +\endsetslot + +\setslot{macrondbl} + \comment{The macron mark `$\overline{\rm aa}$', intended to be wide + enough for two letters.} +\endsetslot + +\setslot{ordfeminine} + \comment{A superior (raised) lower case letter {\it a}, optionally + with a bar under: `\flushtop{\the\scriptfont\fam a}' or + `\flushtop{\the\scriptfont\fam \b{a}}'.} +\endsetslot + +\setslot{ordmasculine} + \comment{A superior lower case letter {\it o}, optionally with a bar + under: `\flushtop{\the\scriptfont\fam o}' or `\flushtop{\the\scriptfont\fam + \b{o}}'. Thus `N\flushtop{\the\scriptfont\fam \b{o}}'.} +\endsetslot + +\setslot{careof} + \comment{A superior {\it c} and infoerior {\it o} separated by a + slash. This, or `c/o', is sometimes used to abbrevate `care + of'.} +\endsetslot + +\setslot{csuperior1} + \comment{A superior lower case letter {\it c}, optionally with a bar + under: `\flushtop{\the\scriptfont\fam c}' or `\flushtop{\the\scriptfont\fam + \b{c}}'. The `-1' in the name indicates it is a + variation on plain `csuperior', which would presumably lack the + bar. Thus `M\flushtop{\the\scriptfont\fam \b{c}}Donald'.} +\endsetslot + + +\setslot{dcaron} + \comment{The lower case letter `d' with a hook mark, which is usually + drawn as a curl from the right of the ascender rather than a + `\v{}' over the letter.} +\endsetslot + +\setslot{tcaron} + \comment{The lower case letter `t' with a hook mark, which is usually + drawn as a curl from the right of the ascender rather than a + `\v{}' over the letter.} +\endsetslot + +\setslot{hcircumflex} + \comment{The lower case letter `h' with a circumflex mark (the + Esperanto letter hho). Although usually drawn with the mark + above the ascender, I would suggest that the same considerations + as `dcaron' and `tcaron' apply, and the mark might better be + drawn to the right of the ascender.} +\endsetslot + +\setslot{lcaron} + \comment{The lower case letter `L' with a hook mark, which is usually + drawn as a curl from the right of the ascender rather than a + `\v{}' over the letter.} +\endsetslot + + +\setslot{ballotbox} + \comment{A ballot-box (hollow square).} +\endsetslot + +\setslot{exclamdown} + \comment{The inverted exclamation mark `!`'.} +\endsetslot + +\setslot{cent} + \comment{A cents sign: c or \rlap{/}c.} +\endsetslot + +\setslot{sterling} + \comment{The British currency mark `\pounds'.} +\endsetslot + +\setslot{currency} + \comment{The ISO 646 currency mark, a ring with four ears pointing + NW, NE, SW and SE.} +\endsetslot + +\setslot{perthousand} + \comment{The per-thousand sign, like a `\%' but with two rings below + the slash.} +\endsetslot + +\setslot{multiply} + \comment{The multiplication sign $\times$.} +\endsetslot + +\setslot{quotedblright} + \comment{A double apostrophe `\thinspace''\thinspace', a English closing quotation + mark.} +\endsetslot + +\setslot{yen} + \comment{The Japanese yen currency sign + {\setbox0=\hbox{Y}\rlap{\hbox to \wd0 {\hfil \the\scriptfont\fam=\hfil + }}\box0 }.} +\endsetslot + +\setslot{florin} + \comment{The florin currency sign, an italic `{\it f\/}'.} +\endsetslot + +\setslot{dagger} + \comment{A dagger sign `\dag'.} +\endsetslot + +\setslot{daggerdbl} + \comment{A double dagger sign `\ddag'.} +\endsetslot + +\setslot{quotedblbase} + \comment{A double comma `,\kern-1pt,' used as an opening quotation + mark in German. Note that I have not included a + `quotesingbase', which implies that a comma must be used + instead. Sorry.} +\endsetslot + +\setslot{rangedash} + \ligature{LIG}{hyphen}{punctdash} + \comment{The en-dash, used in English as a number range dash `1--9'.} +\endsetslot + +\setslot{periodcentered} + \comment{A raised full stop, used as a decimal point in English + typesetting: `$3{\cdot}142$' rather than `3,142'.} +\endsetslot + +\setslot{minus} + \comment{A minus sign, `$-$', so that it is possible to typeset + `$-1\,^\circ\rm C$' without using symbol fonts.} +\endsetslot + +\pdcnumerals{ranging}{}{$#1$} + +\setslot{section} + \comment{The section sign `\S'.} +\endsetslot + +\setslot{paragraph} + \comment{The paragraph sign or pilcrow `\P'.} +\endsetslot + +\setslot{guillemotleft} + \comment{A leftward-pointing guillemet, unavailable in plain \TeX\ + but not entirely unlike `\lguil'. French opening quote mark, + German closing quote mark.} +\endsetslot + +\setslot{punctdash} + \comment{The em-dash, or punctuation dash `Oh---boy'.} +\endsetslot + +\setslot{guillemotright} + \comment{A rightward-pointing guillemet, unavailable in plain \TeX\ + but not entirely unlike `\rguil'. French closing quote mark, + German opening quote mark.} +\endsetslot + +\setslot{questiondown} + \comment{The inverted question mark `?`'.} +\endsetslot + +\setslot{degree} + \comment{The degree sign `$^\circ$'.} +\endsetslot + +\ifisint{nomedium}\then + \pdcuppercase{duplicate capital}{}{\uppercase{#1}} +\else + \pdcuppercase{medium capital}{medium}{\uppercase{#1}} +\fi + +\setslot{angleleft} + \comment{An opening angle bracket `$\langle$'.} +\endsetslot + +\ifisint{nomedium}\then +\setslot{Oslash} + \comment{Duplicate capital `\O'.} +\endsetslot +\else +\setslot{Oslashmedium} + \comment{The medium capital `\O'.} +\endsetslot +\fi + +\setslot{angleright} + \comment{An closing angle bracket `$\rangle$'.} +\endsetslot + +\ifisint{nomedium}\then +\setslot{AE} + \comment{The capital letter `\AE'.} +\endsetslot + +\setslot{OE} + \comment{The capital letter `\OE'.} +\endsetslot +\else +\setslot{AEmedium} + \comment{The medium capital letter `\AE'.} +\endsetslot + +\setslot{OEmedium} + \comment{The medium capital letter `\OE'.} +\endsetslot +\fi + +\setslot{quotedblleft} + \comment{A double inverted comma, `\thinspace``\thinspace'. + An English opening + quotation mark and German closing quotation mark.} +\endsetslot + +\pdcuppercase{small capital}{small}{{\sc \lowercase{#1}}} + +\setslot{copyright} + \comment{A small capital `{\sc c}' in a circle: `\copyright', the + pan-galactic symbol for `copyright'.} +\endsetslot + + +\setslot{Oslashsmall} + \comment{The small capital `{\sc\o}'.} +\endsetslot + +\setslot{registered} + \comment{A small capital `{\sc r}' in a circle, standing for + `registered trade mark': `\registered'.} +\endsetslot + +\setslot{AEsmall} + \comment{The small capital letter `{\sc\ae}'.} +\endsetslot + +\setslot{OEsmall} + \comment{The small capital letter `{\sc\oe}'.} +\endsetslot + + +\endencoding + +\leftline{(End of encoding.)} + +\bye + +%Local Variables: +%tex-has-children: t +%fill-prefix: " " +%End: diff --git a/fonts/malvern/fontinst/pdcmaa3.etx b/fonts/malvern/fontinst/pdcmaa3.etx new file mode 100644 index 0000000000..f21ffc0e78 --- /dev/null +++ b/fonts/malvern/fontinst/pdcmaa3.etx @@ -0,0 +1,35 @@ +% pdcmaa3.etx 1.1.1 1994/07/20 -- Malvern encoding A.3 -*-TeX-*- +%%%======================================================================== +%%% @TeX-font-encoding-file{ +%%% author = "Damian Cugley", +%%% version = "1.1", +%%% date = "1994/07/20", +%%% filename = "pdcmaa3.etx", +%%% address = "Oxford University Computing Laboratory +%%% Parks Road, Oxford OX1 3QD, UK", +%%% telephone = "+44 865 273838 x 73199", +%%% email = "Damian.Cugley@comlab.ox.ac.uk", +%%% codetable = "USASCII", +%%% keywords = "encoding, Malvern, TeX", +%%% supported = "no", +%%% abstract = "This is the Malvern A.3 encoding as a TeX font +%%% encoding file, for use with the fontinst +%%% font installation package.", +%%% package = "Malvern", +%%% dependencies = "pdcmaa.etx, +%%% fontinst.sty, pdcetxf.tex, pdcetxm.tex", +%%% } +%%%======================================================================== + +% Note: this file is *not* intended to double as a stand-alone +% document; use pdcmaa.etx for that. + +\relax +\encoding + +\setint{nomedium}{1} +\setint{nooldstyle}{1} + +\inputetx{pdcmaa} + +\endencoding diff --git a/fonts/malvern/fontinst/pdcmab.etx b/fonts/malvern/fontinst/pdcmab.etx new file mode 100644 index 0000000000..347fb21c83 --- /dev/null +++ b/fonts/malvern/fontinst/pdcmab.etx @@ -0,0 +1,523 @@ +% pdcmab.etx 1.1.1 1994/07/20 -- Malvern encoding B -*-TeX-*- +%%%======================================================================== +%%% @TeX-font-encoding-file{ +%%% author = "Damian Cugley", +%%% version = "1.1", +%%% date = "1994/07/20", +%%% filename = "pdcmab.etx", +%%% address = "Oxford University Computing Laboratory +%%% Parks Road +%%% Oxford OX1 3QD +%%% UK", +%%% telephone = "+44 865 273838 x 73199", +%%% email = "Damian.Cugley@comlab.ox.ac.uk", +%%% codetable = "ISO/ASCII", +%%% keywords = "encoding, Malvern, TeX, PostScript", +%%% supported = "no", +%%% abstract = "This is the Malvern B encoding as a TeX font +%%% encoding file, for use with the fontinst +%%% font installation package.", +%%% package = "Malvern", +%%% dependencies = "fontinst.sty, fontdoc.sty, +%%% pdcetxf.tex, pdcetxm.tex", +%%% } +%%%======================================================================== +% +% This file is based on the Malvern B encoding used with my Malvern fonts. +% Created pdc 1993/10/01 + +\relax + +\catcode`@=11 \input fontdoc.sty \catcode`@=12 +\input pdcetxf + +% Following 4 lines get the version ID from SCCS: +\begingroup\catcode`\%=12 \toks0={\endgroup + \def\pdcversion{1.1} + \def\lastedit{1994/07/20} +}\the\toks0 + +\title{The Malvern~B (symbol) encoding vector} +\section{Introduction} + This document describes my Malvern~B \TeX\ font encoding + conventions. It is in Alan Jeffrey's {\tt fontinst} format, + which means that it can be used to generate {\tt vpl} files + remapping Malvern-encoded fonts to T1 (Cork) fonts and vice + versa. + + The short code for this encoding (for the purposes of {\tt + fontinst} and NFSS~2\footnote*{The second New Font Selection + Scheme, used in \LaTeX~2e.}) is `{\tt mab}'.\footnote\dag{{\it + Ma} is for the Malvern package. In Karl Berry's font naming + scheme, Malvern is abbreviated {\it Mv}. But in all other + contexts, I have abbreviated it {\it Ma}.} Thus the encoding + file is called {\tt pdcmab.etx}, the `pdc' prefix intended to + reduce the probabilty of my font encoding files clashing with + anyone else's. + + The B encoding consists mainly of miscellaneous symbols that + don't fit into Malvern~A. It includes those needed to generate + Cork-encoded fonts with Malvern~A, and a fair number of special + letters. +\encoding + +\needsfontinstversion{1.315} + +\comment{\section{Default values}} + +\setstr{codingscheme}{Malvern B} + +\setint{italicslant}{0} + +\ifisglyph{space}\then + \setint{interword}{\width{space}} +\else + \setint{interword}{333} +\fi + +\ifisglyph{x}\then + \setint{xheight}{\height{x}} +\else + \setint{xheight}{500} +\fi + +\comment{\section{Default font dimensions}} + +\setint{fontdimen(1)}{\int{italicslant}} % italic slant +\setint{fontdimen(2)}{\int{interword}} % interword space +\ifisint{monowidth}\then + \setint{fontdimen(3)}{0} % interword stretch + \setint{fontdimen(4)}{0} % interword shrink +\else + \setint{fontdimen(3)}{\scale{\int{interword}}{333}}% interword stretch + \setint{fontdimen(4)}{\scale{\int{interword}}{333}}% interword shrink +\fi +\setint{fontdimen(5)}{\int{xheight}} % x-height +\setint{fontdimen(6)}{1000} % quad +\ifisint{monowidth}\then + \setint{fontdimen(7)}{\int{interword}} % extra space after . +\else + \setint{fontdimen(7)}{0} % extra space after . +\fi + +\comment{\section{The encoding proper}} + +\nextslot{0} +\setslot{arrowleft} + \comment{An arrow pointing left, `$\leftarrow$'.} +\endsetslot + +\setslot{arrowright} + \comment{An arrow pointing right, `$\rightarrow$'.} +\endsetslot + +\setslot{arrowup} + \comment{An arrow pointing up, `$\uparrow$'.} +\endsetslot + +\setslot{arrowdown} + \comment{An arrow pointing down, `$\downarrow$'.} +\endsetslot + +\setslot{arrowboth} + \comment{An arrow pointing left and right, `$\leftrightarrow$'.} +\endsetslot + +\setslot{arrowupdown} + \comment{An arrow pointing up and down, `$\updownarrow$'.} +\endsetslot + +\setslot{arrowhorizex} + \comment{A rule that can be used to extend horizontal arrows (to + make `$\longrightarrow$' etc.).} +\endsetslot + +\setslot{arrowvertex} + \comment{A rule that can be used to extend vertical arrows.} +\endsetslot + +\nextslot{32} +\setslot{space} + \comment{A blank space `~', with width of a normal interword space. + Cf.\thinspace glyph~160.} +\endsetslot + +\nextslot{`\"} +\setslot{quotedbl} + \comment{A doubled tick mark, `\tickdbl' or `{\tt"}' (cf.\ + glyph~39). This is the \tickdbl neutral double quotation + mark\tickdbl\ which will be used when setting computer + langauges, or to simulate the output of DTP programs.} +\endsetslot + +\nextslot{`\!} +\setslot{brokenbar} + \comment{A broken vertical bar.} +\endsetslot + +\nextslot{`\%} +\setslot{perthousandzero} + \comment{A T1 glyph that when jutxaposed with a per cent character + produces a per-mille.} +\endsetslot + +\nextslot{`\'} +\setslot{quotesingle} + \comment{An small tick mark, `\tick' or `{\tt\char13 }'. The ASCII + combined \tick single quote\tick, apostrophe and acute accent + all rolled into one. Use this for LISP's `quote' and as the + neutral single quotation mark when setting other computer + languages. Used in some formatters and in \TeX\ to stand for an + apostrophe `\thinspace'\thinspace'.} +\endsetslot + +\nextslot{`,} +\setslot{quotesinglbase} + \comment{A comma `,', spaced suitably to be used as a German opening + quotation mark.} +\endsetslot + +\nextslot{`.} +\setslot{ellipsis} + \comment{An ellipsis `\dots'.} +\endsetslot + +\nextslot{`\/} +\setslot{fraction} + \comment{A slash `/', with negative sidebearings suitable for making + fractions like `\frac8/9'.} +\endsetslot + +\nextslot{`0} +\setslot{zerosuperior} + \comment{Superior numeral zero, `\flushtop{\the\scriptfont0 0}'.} +\endsetslot + +\setslot{onesuperior} + \comment{Superior numeral one, `\flushtop{\the\scriptfont0 1}'.} +\endsetslot + +\setslot{twosuperior} + \comment{Superior numeral two, `\flushtop{\the\scriptfont0 2}'.} +\endsetslot + +\setslot{threesuperior} + \comment{Superior numeral three, `\flushtop{\the\scriptfont0 3}'.} +\endsetslot + +\setslot{foursuperior} + \comment{Superior numeral four, `\flushtop{\the\scriptfont0 4}'.} +\endsetslot + +\setslot{fivesuperior} + \comment{Superior numeral five, `\flushtop{\the\scriptfont0 5}'.} +\endsetslot + +\setslot{sixsuperior} + \comment{Superior numeral six, `\flushtop{\the\scriptfont0 6}'.} +\endsetslot + +\setslot{sevensuperior} + \comment{Superior numeral seven, `\flushtop{\the\scriptfont0 7}'.} +\endsetslot + +\setslot{eightsuperior} + \comment{Superior numeral eight, `\flushtop{\the\scriptfont0 8}'.} +\endsetslot + +\setslot{ninesuperior} + \comment{Superior numeral nine, `\flushtop{\the\scriptfont0 9}'.} +\endsetslot + +\nextslot{`:} +\setslot{divide} + \comment{A division sign `$\mathchar"204 $'.} +\endsetslot + +\nextslot{`\<} +\setslot{less} + \comment{A less-than sign, `$<$'.} +\endsetslot + + +\nextslot{`\>} +\setslot{greater} + \comment{A greater-than sign, `$>$'.} +\endsetslot + +\nextslot{`\\} +\setslot{backslash} + \comment{A reversed solidus, `$\backslash$'.} +\endsetslot + +\nextslot{`\^} +\setslot{asciicircum} + \comment{An ASCII circumflex character, + `\asciicircum', something + between `{\tt\^{}}' and `$\wedge$'. Used as a dereferencing + operator in Pascal ($x\asciicircum.f$) and as a binary operator + in other computer languages ($x \mathbin{\asciicircum} y$).} +\endsetslot + +\nextslot{`\_} +\setslot{underscore} + \comment{An ASCII underscore `{\tt\char95 }', as might be used in + identifiers in computer programs.} +\endsetslot + +\nextslot{`\`} +\setslot{backquote} + \comment{Originally a grave accent, now generally treated as a + reverse ASCII quote, `{\tt\`{}}' (mirror image of glyph~39). + This symbol is used in LISP and some other computer languages as + a symbol in its own right, and in many formatters to stand in + for an opening quotation mark `\thinspace`\thinspace'.} +\endsetslot + +\setslot{thorn1} + \comment{The style of lower case thorn used for setting Old + English texts.} +\endsetslot + +\setslot{eth1} + \comment{The style of lower case eth used for setting Old + English texts.} +\endsetslot + +\setslot{wyn} + \comment{The obselete letter wyn, used for setting Old English + texts. It looks a bit like a {\bf thorn1} without the + ascender. A sort of precursor to {\it w}.} +\endsetslot + +\setslot{yogh} + \comment{The obselete letter yogh, used for setting Old English + texts. It looks a little like a `3' or the curly sort of {\it + z}. A sorty of precursor ot {\it gh}.} +\endsetslot + +\setslot{yogh1} + \comment{The obselete letter ???, used for setting Old English + texts. A sort of precursor of {\it g}.} +\endsetslot + +\setslot{ch} + \comment{Ligature {\it ch} (common in German founts, especially + {\it Fraktur} faces.)} +\endsetslot + +\setslot{ck} + \comment{Ligature {\it ck} (common in German founts), especially + {\it Fraktur} faces.)} +\endsetslot + +\setslot{ct} + \comment{The ligature {\it ct}. In archaic fonts this has a + link between the top of the {\it c} and the {\it t}.} +\endsetslot + +\setslot{ft} + \comment{A ligature {\it ft}. Seen in German fonts.} +\endsetslot + +\setslot{ij} + \comment{The Dutch special letter {\it ij}. This looks like a + digraph, but it is a separate character on Dutch keyboards, + making it something of a special case, like {\it \ae} and {\it + \oe}.} +\endsetslot + +\setslot{ll} + \comment{Ligature {\it ll}. Common in German fonts, especially + {\it Fraktur} fonts.} +\endsetslot + +\setslot{longs} + \comment{A long {\it s}, which looks like $\smallint$ or like an + {\it f} with the bar omitted.} +\endsetslot + +\setslot{longsi} + \comment{A ligature of long {\it s} with {\it i} + ($\smallint\!\!\imath$), traditional in {\it Fraktur} fonts.} +\endsetslot + +\setslot{longslongs} + \comment{A double long {\it s} + ($\smallint\!\!\smallint$), traditional in {\it Fraktur} fonts.} +\endsetslot + +\setslot{longss} + \comment{A ligature of long {\it s} with final {\it s} + ($\smallint\!\!s$, or {\it \ss}). This is how German sharp-s + (\ss) tends to look in roman fonts.} +\endsetslot + +\setslot{longst} + \comment{A ligature of long {\it s} with {\it t} + ($\smallint\!\!t$), by analogy to {\it ft}.} +\endsetslot + +\setslot{st} + \comment{A ligature of (short) {\it s} with {\it t}, possibly + with a link between the top of the {\it s} and the {\it t} (like + {\bf ct}.} +\endsetslot + +\setslot{longsz} + \comment{A ligature of long {\it s} with {\it z} + ($\smallint\!\!z$). In {\it Fraktur} this is how the sharp-s + (\ss) looks.} +\endsetslot + +\setslot{tz} + \comment{Ligature {\it tz}, traditional in {\it Fraktur} fonts.} +\endsetslot + +\setslot{schwa} + \comment{The sign for schwa (indeterminate vowel sound), an + inverted {\it e}. The most commonly used pronounciation + symbol.} +\endsetslot + +\setslot{l1} + \comment{Variant letter {\it l}. Malvern-specific.} +\endsetslot + +\setslot{lacute1} + \comment{Variant letter {\it \'l}. Malvern-specific.} +\endsetslot + +\setslot{lcaron1} + \comment{Variant letter {\it l\kern-0.1em'} (\thinspace= {\it \v l}). Malvern-specific.} +\endsetslot + +\setslot{lslash1} + \comment{Variant letter {\it \l}. Malvern-specific.} +\endsetslot + +\setslot{ll1} + \comment{Variant ligature {\it ll}. Malvern-specific.} +\endsetslot + +\nextslot{`\|} +\setslot{bar} + \comment{Vertical bar character, `$|$'.} +\endsetslot + +\nextslot{`\~} +\setslot{asciitilde} + \comment{A swung dash, `$\sim$'.} +\endsetslot + +\nextslot{128} +\setslot{arrowdblleft} + \comment{A doubled arrow pointing left, `$\Leftarrow$'.} +\endsetslot + +\setslot{arrowdblright} + \comment{A doubled arrow pointing right, `$\Rightarrow$'.} +\endsetslot + +\setslot{arrowdblup} + \comment{A doubled arrow pointing up, `$\Uparrow$'.} +\endsetslot + +\setslot{arrowdbldown} + \comment{A doubled arrow pointing down, `$\Downarrow$'.} +\endsetslot + +\setslot{arrowdblboth} + \comment{A doubled arrow pointing left and right, `$\Leftrightarrow$'.} +\endsetslot + +\setslot{arrowdblupdown} + \comment{A doubled arrow pointing up and down, `$\Updownarrow$'.} +\endsetslot + +\setslot{arrowdblhorizex} + \comment{A pair of rules that can be used to extend horizontal + arrows (to make `$\Longrightarrow$' etc.).} +\endsetslot + +\setslot{arrowdblvertex} + \comment{A rule that can be used to extend vertical arrows.} +\endsetslot + +\nextslot{"A0} +\setslot{visiblespace} + \comment{A symbol representing an ASCII blank. In CM Typewriter it + is `{\tt\char32 }'.} +\endsetslot + +\setslot{onequarter} + \comment{The fraction `\frac1/4'.} +\endsetslot + +\setslot{onehalf} + \comment{The fraction `\frac1/2'.} +\endsetslot + +\setslot{threequarters} + \comment{The fraction `\frac3/4'.} +\endsetslot + +\setslot{logicalnot} + \comment{Sign for logical negation `$\lnot$'.} +\endsetslot + +\setslot{mu} + \comment{A lower case Greek letter mu `$\mu$'.} +\endsetslot + +\nextslot{"B0} +\setslot{zeroinferior} + \comment{Inferior numeral zero, `\lower0.5ex \hbox{\the\scriptfont0 0}'.} +\endsetslot + +\setslot{oneinferior} + \comment{Inferior numeral one, `\lower0.5ex \hbox{\the\scriptfont0 1}'.} +\endsetslot + +\setslot{twoinferior} + \comment{Inferior numeral two, `\lower0.5ex \hbox{\the\scriptfont0 2}'.} +\endsetslot + +\setslot{threeinferior} + \comment{Inferior numeral three, `\lower0.5ex \hbox{\the\scriptfont0 3}'.} +\endsetslot + +\setslot{fourinferior} + \comment{Inferior numeral four, `\lower0.5ex \hbox{\the\scriptfont0 4}'.} +\endsetslot + +\setslot{fiveinferior} + \comment{Inferior numeral five, `\lower0.5ex \hbox{\the\scriptfont0 5}'.} +\endsetslot + +\setslot{sixinferior} + \comment{Inferior numeral six, `\lower0.5ex \hbox{\the\scriptfont0 6}'.} +\endsetslot + +\setslot{seveninferior} + \comment{Inferior numeral seven, `\lower0.5ex \hbox{\the\scriptfont0 7}'.} +\endsetslot + +\setslot{eightinferior} + \comment{Inferior numeral eight, `\lower0.5ex \hbox{\the\scriptfont0 8}'.} +\endsetslot + +\setslot{nineinferior} + \comment{Inferior numeral nine, `\lower0.5ex \hbox{\the\scriptfont0 9}'.} +\endsetslot + +\endencoding + +\Aheading{End of encoding.} + +\bye + +%Local Variables: +%tex-has-children: t +%fill-prefix: " " +%End: diff --git a/fonts/malvern/fontinst/pdcmat1.mtx b/fonts/malvern/fontinst/pdcmat1.mtx new file mode 100644 index 0000000000..8d69e7592d --- /dev/null +++ b/fonts/malvern/fontinst/pdcmat1.mtx @@ -0,0 +1,186 @@ +% pdcmat1.mtx 1.1.1 1994/07/20 -- glyph hacks for Malvern -*-TeX-*- +%%% ==================================================================== +%%% @TeX-macro-file{ +%%% author = "P. Damian Cugley", +%%% version = "1.1.1", +%%% date = "1994/07/20", +%%% filename = "pdcmat1.mtx", +%%% address = "Oxford University Computing Laboratory, +%%% Parks Road, Oxford OX1 3QD, UK", +%%% email = "Damian.Cugley@comlab.ox.ac.uk", +%%% codetable = "USASCII", +%%% keywords = "AFM, virtual fonts, fonts, Malvern, TeX", +%%% supported = "no", +%%% abstract = "How to make some glyphs needed to generate +%%% Cork (T1) encoded fonts from Malvern +%%% fonts.", +%%% package = "", +%%% dependencies = "(as a document) pdcetxf.tex, fontdoc.sty; +%%% (as a subr) none", +%%% } +%%% ==================================================================== + +\relax + +\catcode`@=11 \input fontdoc.sty \catcode`@=12 +\input pdcetxf + +% Following 4 lines get the version ID from SCCS: +\begingroup\catcode`\%=12 \toks0={\endgroup + \def\pdcversion{1.1} + \def\lastedit{1994/07/20} +}\the\toks0 + +\raggedright + +\title{Glyph hacks for making Cork (T1) from Malvern A \& B} + +\section{Introduction} + This document describes some definitions useful for making fonts + with the Cork (T1) encoding from fonts with Malvern~A and~B + encodings (such as the Malvern fonts). This file is called + `{\tt pdcmat1.mtx}': `{\tt pdc}' as a prefix to avoid + confusion with files contributed by other people; `{\tt ma}' for + Malvern;\footnote*{To prevent a prolifiation of different + abbreviations, Malvern is always shortened to `Ma', (except in + Karl Berry's font-naming scheme, where its code is `Mv'). It + should not be abbreviated `Malv' or any other variations on the + name.} and `{\tt t1}' because the NFSS~2 code for the Cork + encoding is T1. + + This file is expected to be read {\it before}\/ `{\tt + latin.mtx}' in an \cs{installfonts} list. + + This is version \pdcversion, last edited \lastedit. + +\metrics + +% Topaccent and botaccent stolen from Alan's latin.mtx: + +% A top accent is set by placing the center of the accent at the given +% position along the width of the letter, raised up by the difference +% between the height of the letter and the xheight. + +\setcommand\topaccent#1#2#3{ + \push + \moveup{\max{0}{\sub{\height{#1}}{\int{xheight}}}} + \movert{\add{\sub{\scale{\width{#1}}{#3}}{\scale{\width{#2}}{500}}} + {\scale{\sub{\height{#1}}{\int{xheight}}}{\int{italicslant}}}} + \glyph{#2}{1000} + \pop + \glyph{#1}{1000} +} + +% A bottom accent is set by placing the center of the accent at the given +% position along the width of the letter. + +\setcommand\botaccent#1#2#3{ + \push + \movert{\sub{\scale{\width{#1}}{#3}}{\scale{\width{#2}}{500}}} + \glyph{#2}{1000} + \pop + \glyph{#1}{1000} +} + + +% A special verion of topaccent for my twodots mark +% It is designed to be raised to go halfway between +% top of letter and cap-height... +\setcommand\twodots#1#2#3{ + \push + \moveup{\max{0}{\scale{\sub{\height{#1}}{\int{xheight}}}{500}}} + \movert{\add{\sub{\scale{\width{#1}}{#3}}{\scale{\width{#2}}{500}}} + {\scale{\sub{\height{#1}}{\int{xheight}}}{\int{italicslant}}}} + \glyph{#2}{1000} + \pop + \glyph{#1}{1000} +} + +\comment{\section{L-caron}} + +\setglyph{Lcaron} + \glyph{L}{1000} + \ifisint{monowidth}\then\else + \movert{-200} + \fi + \glyph{quoteright}{1000} +\endsetglyph + + +\comment{\section{Botaccents (cedillas, ogoneks)} + These use use full-sized base letters and -cap marks. + Acutually, A-ogonek and E-ogonek are already defined in Malvern~A.} + +\setglyph{Aogonek} \botaccent{A}{ogonekcap}{900} \endsetglyph +\setglyph{Eogonek} \botaccent{E}{ogonekcap}{850} \endsetglyph +\setglyph{Ccedilla} \botaccent{C}{cedillacap}{500} \endsetglyph +\setglyph{Scedilla} \botaccent{S}{cedilla}{500} \endsetglyph +\setglyph{Tcedilla} \botaccent{T}{cedilla}{500} \endsetglyph + +\comment{\section{Dot and two-dot marks} + These are the only marks with no `-cap' variant. Instead the + two dots are placed so as to be about halfway between the top of + the glyph and the cap height. + (Obviously this depends on the base glyph being shorter than + full cap height.)} + +\setglyph{Adieresis} \twodots{Amedium}{dieresis}{500} \endsetglyph +\setglyph{Edieresis} \twodots{Emedium}{dieresis}{500} \endsetglyph +\setglyph{Idotaccent} \twodots{Imedium}{dotaccent}{500} \endsetglyph +\setglyph{Idieresis} \twodots{Imedium}{dieresis}{500} \endsetglyph +\setglyph{Odieresis} \twodots{Omedium}{dieresis}{500} \endsetglyph +\setglyph{Udieresis} \twodots{Umedium}{dieresis}{500} \endsetglyph +\setglyph{Ydieresis} \twodots{Ymedium}{dieresis}{500} \endsetglyph +\setglyph{Zdotaccent} \twodots{Zmedium}{dotaccent}{500} \endsetglyph + +\comment{\section{Topaccents} + This is the bulk of composite letters: medium capitals with a + `-cap' mark raised above them.} + +\setglyph{Aacute} \topaccent{Amedium}{acutecap} {500} \endsetglyph +\setglyph{Abreve} \topaccent{Amedium}{brevecap} {500} \endsetglyph +\setglyph{Acircumflex} \topaccent{Amedium}{circumflexcap} {500} \endsetglyph +\setglyph{Agrave} \topaccent{Amedium}{gravecap} {500} \endsetglyph +\setglyph{Aring} \topaccent{Amedium}{ringcap} {500} \endsetglyph +\setglyph{Atilde} \topaccent{Amedium}{tildecap} {500} \endsetglyph +\setglyph{Cacute} \topaccent{Cmedium}{acutecap} {600} \endsetglyph +\setglyph{Ccaron} \topaccent{Cmedium}{caroncap} {600} \endsetglyph +\setglyph{Dcaron} \topaccent{Dmedium}{caroncap} {450} \endsetglyph +\setglyph{Eacute} \topaccent{Emedium}{acutecap} {500} \endsetglyph +\setglyph{Ecaron} \topaccent{Emedium}{caroncap} {500} \endsetglyph +\setglyph{Ecircumflex} \topaccent{Emedium}{circumflexcap} {500} \endsetglyph +\setglyph{Egrave} \topaccent{Emedium}{gravecap} {500} \endsetglyph +\setglyph{Gbreve} \topaccent{Gmedium}{brevecap} {600} \endsetglyph +\setglyph{Iacute} \topaccent{Imedium}{acutecap} {500} \endsetglyph +\setglyph{Icircumflex} \topaccent{Imedium}{circumflexcap} {500} \endsetglyph +\setglyph{Igrave} \topaccent{Imedium}{gravecap} {500} \endsetglyph +\setglyph{Lacute} \topaccent{Lmedium}{acutecap} {250} \endsetglyph +\setglyph{Nacute} \topaccent{Nmedium}{acutecap} {500} \endsetglyph +\setglyph{Ncaron} \topaccent{Nmedium}{caroncap} {500} \endsetglyph +\setglyph{Ntilde} \topaccent{Nmedium}{tildecap} {500} \endsetglyph +\setglyph{Oacute} \topaccent{Omedium}{acutecap} {500} \endsetglyph +\setglyph{Ocircumflex} \topaccent{Omedium}{circumflexcap} {500} \endsetglyph +\setglyph{Ograve} \topaccent{Omedium}{gravecap} {500} \endsetglyph +\setglyph{Ohungarumlaut} \topaccent{Omedium}{hungarumlautcap}{500} \endsetglyph +\setglyph{Otilde} \topaccent{Omedium}{tildecap} {500} \endsetglyph +\setglyph{Racute} \topaccent{Rmedium}{acutecap} {500} \endsetglyph +\setglyph{Rcaron} \topaccent{Rmedium}{caroncap} {500} \endsetglyph +\setglyph{Sacute} \topaccent{Smedium}{acutecap} {500} \endsetglyph +\setglyph{Scaron} \topaccent{Smedium}{caroncap} {500} \endsetglyph +\setglyph{Tcaron} \topaccent{Tmedium}{caroncap} {500} \endsetglyph +\setglyph{Uacute} \topaccent{Umedium}{acutecap} {500} \endsetglyph +\setglyph{Ucircumflex} \topaccent{Umedium}{circumflexcap} {500} \endsetglyph +\setglyph{Ugrave} \topaccent{Umedium}{gravecap} {500} \endsetglyph +\setglyph{Uhungarumlaut} \topaccent{Umedium}{hungarumlautcap}{500} \endsetglyph +\setglyph{Uring} \topaccent{Umedium}{ringcap} {500} \endsetglyph +\setglyph{Yacute} \topaccent{Ymedium}{acutecap} {500} \endsetglyph +\setglyph{Zacute} \topaccent{Zmedium}{acutecap} {500} \endsetglyph +\setglyph{Zcaron} \topaccent{Zmedium}{caroncap} {500} \endsetglyph + +\endmetrics + +\bye + +% Local Variables: +% fill-prefix: "\t" +% End: diff --git a/fonts/malvern/latex209/fmv9nfss.sty b/fonts/malvern/latex209/fmv9nfss.sty new file mode 100644 index 0000000000..9ec0c943f8 --- /dev/null +++ b/fonts/malvern/latex209/fmv9nfss.sty @@ -0,0 +1,106 @@ +% fmv9nfss.sty -- Malvern style option for LaTeX 2.09 + NFSS +% creator: mkdrivers 3.7 <pdc 1994.10.12> +% creation date: 1994.10.12 + +%%% @LaTeX-style-option { +%%% author = "P. Damian Cugley", +%%% version = "75", +%%% date = "1994.10.12", +%%% filename = "fmv9nfss.sty", +%%% address = "Oxford University Computing Laboratory, +%%% Parks Road +%%% Oxford OX1 3QD +%%% UK", +%%% telephone = "+44 865 273838 x 73199", +%%% email = "Damian.Cugley@comlab.ox.ac.uk", +%%% codetable = "USASCII", +%%% keywords = "NFSS, LaTeX, Malvern, font family", +%%% supported = "no", +%%% abstract = "This is a style option for LaTeX 2.09 with NFSS. +%%% Replaces the roman, bold, italic and bold italic fonts +%%% with Malvern 55, 75, 56 and 75 with old style figures. +%%% Computer Modern is used as \sf.", +%%% package = "Malvern 1.2", +%%% dependencies = "NFSS", +%%% caveat = "I can't test this: I don't have NFSS", +%%% } + +\@ifundefined{selectfont}{ + \@latexerr{The "fmv9nfss" style option can only be used + with LaTeX 2.09 and the New Font Selection Scheme}\@eha + \endinput +}{} + +\def\fileversion{75} +\def\filedate{mkdrivers 1994.10.12} +\message{\fileversion\space <\filedate>} + +\expandafter\def\csname load@fmv9\endcsname{% + \extra@def{fmv9}{}{} + \new@fontshape{fmv9}{m}{n}{% + <5>ma55az7 at 5pt + <6>ma55az7 at 6pt + <7>ma55az7 + <8>ma55az7 at 8pt + <9>ma55az7 at 9pt + <10>ma55az10 + <11>ma55az10 at 11pt + <12>ma55az12 + <14>ma55az14 + <17>ma55az14 at 17pt + <20>ma55az18 at 20pt + <25>ma55az24 at 25pt + }{} + \new@fontshape{fmv9}{m}{it}{% + <5>ma56az7 at 5pt + <6>ma56az7 at 6pt + <7>ma56az7 + <8>ma56az7 at 8pt + <9>ma56az7 at 9pt + <10>ma56az10 + <11>ma56az10 at 11pt + <12>ma56az12 + <14>ma56az14 + <17>ma56az14 at 17pt + <20>ma56az18 at 20pt + <25>ma56az24 at 25pt + }{} + \new@fontshape{fmv9}{b}{n}{% + <5>ma75az7 at 5pt + <6>ma75az7 at 6pt + <7>ma75az7 + <8>ma75az7 at 8pt + <9>ma75az7 at 9pt + <10>ma75az10 + <11>ma75az10 at 11pt + <12>ma75az12 + <14>ma75az14 + <17>ma75az14 at 17pt + <20>ma75az18 at 20pt + <25>ma75az24 at 25pt + }{} + \new@fontshape{fmv9}{b}{it}{% + <5>ma76az7 at 5pt + <6>ma76az7 at 6pt + <7>ma76az7 + <8>ma76az7 at 8pt + <9>ma76az7 at 9pt + <10>ma76az10 + <11>ma76az10 at 11pt + <12>ma76az12 + <14>ma76az14 + <17>ma76az14 at 17pt + <20>ma76az18 at 20pt + <25>ma76az24 at 25pt + }{} + + \subst@fontshape{fmv9}{b}{sc}{fmv9}{b}{n} + \subst@fontshape{fmv9}{m}{sc}{fmv9}{m}{n} + \subst@fontshape{fmv9}{m}{sl}{fmv9}{m}{it} + \subst@fontshape{fmv9}{bx}{n}{fmv9}{b}{n} + \subst@fontshape{fmv9}{bx}{it}{fmv9}{b}{it} +} +\romanfont{fmv9} +\sansfont{cmr} + +\endinput diff --git a/fonts/malvern/latex209/fmv9pltx.sty b/fonts/malvern/latex209/fmv9pltx.sty new file mode 100644 index 0000000000..293dff34f0 --- /dev/null +++ b/fonts/malvern/latex209/fmv9pltx.sty @@ -0,0 +1,354 @@ +% fmv9pltx.sty -- Malvern style option for plain LaTeX 2.09 +% creator: mkdrivers 3.7 <pdc 1994.10.12> +% creation date: 1994.10.12 + +%%% @LaTeX-style-option { +%%% author = "P. Damian Cugley", +%%% version = "75", +%%% date = "1994.10.12", +%%% filename = "fmv9pltx.sty", +%%% address = "Oxford University Computing Laboratory, +%%% Parks Road +%%% Oxford OX1 3QD +%%% UK", +%%% telephone = "+44 865 273838 x 73199", +%%% email = "Damian.Cugley@comlab.ox.ac.uk", +%%% codetable = "USASCII", +%%% keywords = "NFSS, LaTeX, Malvern, font family", +%%% supported = "no", +%%% abstract = "This is a style option for LaTeX 2.09 without NFSS. +%%% Replaces the roman, bold, italic and bold italic fonts +%%% with Malvern 55, 75, 56 and 75.", +%%% package = "Malvern 1.2", +%%% dependencies = "", +%%% } + +\@ifundefined{selectfont}{}{ + \@latexerr{The "fmv9pltx" style option can only be used + with LaTeX 2.09 without the New Font Selection Scheme}\@eha + \endinput +} + +\def\fileversion{75} +\def\filedate{mkdrivers 1994.10.12} +\message{\fileversion\space <\filedate>} + + +% The following assignments override those in lfonts.tex: + +\font\fivrm = ma55az7 at 5pt +\font\sixrm = ma55az7 at 6pt +\font\sevrm = ma55az7 +\font\sevit = ma56az7 +\font\egtrm = ma55az7 at 8pt +\font\egtit = ma56az7 at 8pt +\font\ninrm = ma55az7 at 9pt +\font\ninit = ma56az7 at 9pt +\font\ninbf = ma75az7 at 9pt +\font\tenrm = ma55az10 +\font\tenit = ma56az10 +\font\tenbf = ma75az10 +\font\elvrm = ma55az10 at 11pt +\font\elvit = ma56az10 at 11pt +\font\elvbf = ma75az10 at 11pt +\font\twlrm = ma55az12 +\font\twlit = ma56az12 +\font\twlbf = ma75az12 +\font\frtnrm = ma55az14 +\font\frtnbf = ma75az14 +\font\svtnrm = ma55az14 at 17pt +\font\svtnbf = ma75az14 at 17pt +\font\twtyrm = ma55az18 at 20pt +\font\twfvrm = ma55az24 at 25pt + +% There are no separate sanserif, caps-and-small-capitals or slanted styles: +\let\sl=\it +\let\sf=\rm +\let\sc=\rm + +% Redefine the size-changing macros: +\def\vpt +{% + \textfont\z@\fivrm + \scriptfont\z@\fivrm \scriptscriptfont\z@\fivrm + \textfont\@ne\fivmi \scriptfont\@ne\fivmi \scriptscriptfont\@ne\fivmi + \textfont\tw@\fivsy \scriptfont\tw@\fivsy \scriptscriptfont\tw@\fivsy + \textfont\thr@@\tenex \scriptfont\thr@@\tenex \scriptscriptfont\thr@@\tenex + \def\prm{\fam\z@\fivrm}% + \def\unboldmath{\everymath{}\everydisplay{}\@nomath + \unboldmath\fam\@ne\@boldfalse}\@boldfalse + \def\boldmath{\@subfont\boldmath\unboldmath}% + \def\pit{\@getfont\pit\itfam\@vpt{ma56az7 at 5pt}}% + \def\pbf{\@getfont\pbf\bffam\@vpt{ma75az7 at 5pt}}% + \def\ptt{\@subfont\tt\rm}% + \def\ly{\fam\lyfam\fivly}\textfont\lyfam\fivly + \scriptfont\lyfam\fivly \scriptscriptfont\lyfam\fivly + \@setstrut\rm +} + +\def\vipt +{% + \textfont\z@\sixrm + \scriptfont\z@\sixrm \scriptscriptfont\z@\sixrm + \textfont\@ne\sixmi \scriptfont\@ne\sixmi \scriptscriptfont\@ne\sixmi + \textfont\tw@\sixsy \scriptfont\tw@\sixsy \scriptscriptfont\tw@\sixsy + \textfont\thr@@\tenex \scriptfont\thr@@\tenex \scriptscriptfont\thr@@\tenex + \def\prm{\fam\z@\sixrm}% + \def\unboldmath{\everymath{}\everydisplay{}\@nomath + \unboldmath\@boldfalse}\@boldfalse + \def\boldmath{\@subfont\boldmath\unboldmath}% + \def\pit{\@getfont\pbf\itfam\@vipt{ma56az7 at 6pt}}% + \def\pbf{\@getfont\pbf\bffam\@vipt{ma75az7 at 6pt}}% + \def\ptt{\@subfont\tt\rm}% + \def\ly{\fam\lyfam\sixly}\textfont\lyfam\sixly + \scriptfont\lyfam\sixly \scriptscriptfont\lyfam\sixly + \@setstrut\rm +} + +\def\viipt +{% + \textfont\z@\sevrm + \scriptfont\z@\sixrm \scriptscriptfont\z@\fivrm + \textfont\@ne\sevmi \scriptfont\@ne\fivmi \scriptscriptfont\@ne\fivmi + \textfont\tw@\sevsy \scriptfont\tw@\fivsy \scriptscriptfont\tw@\fivsy + \textfont\thr@@\tenex \scriptfont\thr@@\tenex \scriptscriptfont\thr@@\tenex + \def\prm{\fam\z@\sevrm}% + \def\unboldmath{\everymath{}\everydisplay{}\@nomath + \unboldmath\@boldfalse}\@boldfalse + \def\boldmath{\@subfont\boldmath\unboldmath}% + \def\pit{\fam\itfam\sevit}\textfont\itfam\sevit + \scriptfont\itfam\sevit \scriptscriptfont\itfam\sevit + \def\pbf{\@getfont\pbf\bffam\@viipt{ma75az7}}% + \def\ptt{\@subfont\tt\rm}% + \def\ly{\fam\lyfam\sevly}\textfont\lyfam\sevly + \scriptfont\lyfam\fivly \scriptscriptfont\lyfam\fivly + \@setstrut \rm +} + +\def\viiipt +{% + \textfont\z@\egtrm + \scriptfont\z@\sixrm \scriptscriptfont\z@\fivrm + \textfont\@ne\egtmi \scriptfont\@ne\sixmi \scriptscriptfont\@ne\fivmi + \textfont\tw@\egtsy \scriptfont\tw@\sixsy \scriptscriptfont\tw@\fivsy + \textfont\thr@@\tenex \scriptfont\thr@@\tenex \scriptscriptfont\thr@@\tenex + \def\prm{\fam\z@\egtrm}% + \def\unboldmath{\everymath{}\everydisplay{}\@nomath + \unboldmath\@boldfalse}\@boldfalse + \def\boldmath{\@subfont\boldmath\unboldmath}% + \def\pit{\fam\itfam\egtit}\textfont\itfam\egtit + \scriptfont\itfam\sevit \scriptscriptfont\itfam\sevit + \def\pbf{\@getfont\pbf\bffam\@viiipt{ma75az7 at 8pt}}% + \def\ptt{\@getfont\ptt\ttfam\@viiipt{cmtt8}\@nohyphens\ptt\@viiipt}% + \def\ly{\fam\lyfam\egtly}\textfont\lyfam\egtly + \scriptfont\lyfam\sixly \scriptscriptfont\lyfam\fivly + \@setstrut \rm +} + +\def\ixpt +{% + \textfont\z@\ninrm + \scriptfont\z@\sixrm \scriptscriptfont\z@\fivrm + \textfont\@ne\ninmi \scriptfont\@ne\sixmi \scriptscriptfont\@ne\fivmi + \textfont\tw@\ninsy \scriptfont\tw@\sixsy \scriptscriptfont\tw@\fivsy + \textfont\thr@@\tenex \scriptfont\thr@@\tenex \scriptscriptfont\thr@@\tenex + \def\prm{\fam\z@\ninrm}% + \def\unboldmath{\everymath{}\everydisplay{}\@nomath\unboldmath + \@boldfalse}\@boldfalse + \def\boldmath{\@subfont\boldmath\unboldmath}% + \def\pit{\fam\itfam\ninit}\textfont\itfam\ninit + \scriptfont\itfam\sevit \scriptscriptfont\itfam\sevit + \def\pbf{\fam\bffam\ninbf}\textfont\bffam\ninbf + \scriptfont\bffam\ninbf \scriptscriptfont\bffam\ninbf + \def\ptt{\fam\ttfam\nintt}\textfont\ttfam\nintt + \scriptfont\ttfam\nintt \scriptscriptfont\ttfam\nintt + \def\ly{\fam\lyfam\ninly}\textfont\lyfam\ninly + \scriptfont\lyfam\sixly \scriptscriptfont\lyfam\fivly + \@setstrut \rm +} + +\def\xpt +{% + \textfont\z@\tenrm + \scriptfont\z@\sevrm \scriptscriptfont\z@\fivrm + \textfont\@ne\tenmi \scriptfont\@ne\sevmi \scriptscriptfont\@ne\fivmi + \textfont\tw@\tensy \scriptfont\tw@\sevsy \scriptscriptfont\tw@\fivsy + \textfont\thr@@\tenex \scriptfont\thr@@\tenex \scriptscriptfont\thr@@\tenex + \def\unboldmath{\everymath{}\everydisplay{}\@nomath\unboldmath + \textfont\@ne\tenmi + \textfont\tw@\tensy \textfont\lyfam\tenly + \@boldfalse}\@boldfalse + \def\boldmath{\@ifundefined{tenmib}{\global\font\tenmib\@mbi + \global\font\tensyb\@mbsy + \global\font\tenlyb\@lasyb\relax\@addfontinfo\@xpt + {\def\boldmath{\everymath{\mit}\everydisplay{\mit}\@prtct\@nomathbold + \textfont\@ne\tenmib \textfont\tw@\tensyb + \textfont\lyfam\tenlyb \@prtct\@boldtrue}}}{}\@xpt\boldmath}% + \def\prm{\fam\z@\tenrm}% + \def\pit{\fam\itfam\tenit}\textfont\itfam\tenit \scriptfont\itfam\sevit + \scriptscriptfont\itfam\sevit + \def\pbf{\fam\bffam\tenbf}\textfont\bffam\tenbf + \scriptfont\bffam\tenbf \scriptscriptfont\bffam\tenbf + \def\ptt{\fam\ttfam\tentt}\textfont\ttfam\tentt + \scriptfont\ttfam\tentt \scriptscriptfont\ttfam\tentt + \def\ly{\fam\lyfam\tenly}\textfont\lyfam\tenly + \scriptfont\lyfam\sevly \scriptscriptfont\lyfam\fivly + \@setstrut \rm +} + +\def\xipt +{% + \textfont\z@\elvrm + \scriptfont\z@\egtrm \scriptscriptfont\z@\sixrm + \textfont\@ne\elvmi \scriptfont\@ne\egtmi \scriptscriptfont\@ne\sixmi + \textfont\tw@\elvsy \scriptfont\tw@\egtsy \scriptscriptfont\tw@\sixsy + \textfont\thr@@\tenex \scriptfont\thr@@\tenex \scriptscriptfont\thr@@\tenex + \def\unboldmath{\everymath{}\everydisplay{}\@nomath\unboldmath + \textfont\@ne\elvmi \textfont\tw@\elvsy + \textfont\lyfam\elvly \@boldfalse}\@boldfalse + \def\boldmath{\@ifundefined{elvmib}{\global\font\elvmib\@mbi\@halfmag + \global\font\elvsyb\@mbsy\@halfmag + \global\font\elvlyb\@lasyb\@halfmag\relax\@addfontinfo\@xipt + {\def\boldmath{\everymath{\mit}\everydisplay{\mit}\@prtct\@nomathbold + \textfont\@ne\elvmib \textfont\tw@\elvsyb + \textfont\lyfam\elvlyb\@prtct\@boldtrue}}}{}\@xipt\boldmath}% + \def\prm{\fam\z@\elvrm}% + \def\pit{\fam\itfam\elvit}\textfont\itfam\elvit + \scriptfont\itfam\egtit \scriptscriptfont\itfam\sevit + \def\pbf{\fam\bffam\elvbf}\textfont\bffam\elvbf + \scriptfont\bffam\ninbf \scriptscriptfont\bffam\ninbf + \def\ptt{\fam\ttfam\elvtt}\textfont\ttfam\elvtt + \scriptfont\ttfam\nintt \scriptscriptfont\ttfam\nintt + \def\ly{\fam\lyfam\elvly}\textfont\lyfam\elvly + \scriptfont\lyfam\egtly \scriptscriptfont\lyfam\sixly + \@setstrut \rm +} + +\def\xiipt +{% + \textfont\z@\twlrm + \scriptfont\z@\egtrm \scriptscriptfont\z@\sixrm + \textfont\@ne\twlmi \scriptfont\@ne\egtmi \scriptscriptfont\@ne\sixmi + \textfont\tw@\twlsy \scriptfont\tw@\egtsy \scriptscriptfont\tw@\sixsy + \textfont\thr@@\tenex \scriptfont\thr@@\tenex \scriptscriptfont\thr@@\tenex + \def\unboldmath{\everymath{}\everydisplay{}\@nomath\unboldmath + \textfont\@ne\twlmi + \textfont\tw@\twlsy \textfont\lyfam\twlly + \@boldfalse}\@boldfalse + \def\boldmath{\@ifundefined{twlmib}{\global\font\twlmib\@mbi\@magscale1\global + \font\twlsyb\@mbsy \@magscale1\global\font + \twllyb\@lasyb\@magscale1\relax\@addfontinfo\@xiipt + {\def\boldmath{\everymath + {\mit}\everydisplay{\mit}\@prtct\@nomathbold + \textfont\@ne\twlmib \textfont\tw@\twlsyb + \textfont\lyfam\twllyb\@prtct\@boldtrue}}}{}\@xiipt\boldmath}% + \def\prm{\fam\z@\twlrm}% + \def\pit{\fam\itfam\twlit}\textfont\itfam\twlit \scriptfont\itfam\egtit + \scriptscriptfont\itfam\sevit + \def\pbf{\fam\bffam\twlbf}\textfont\bffam\twlbf + \scriptfont\bffam\ninbf \scriptscriptfont\bffam\ninbf + \def\ptt{\fam\ttfam\twltt}\textfont\ttfam\twltt + \scriptfont\ttfam\nintt \scriptscriptfont\ttfam\nintt + \def\ly{\fam\lyfam\twlly}\textfont\lyfam\twlly + \scriptfont\lyfam\egtly \scriptscriptfont\lyfam\sixly + \@setstrut \rm +} + +\def\xivpt +{% + \textfont\z@\frtnrm + \scriptfont\z@\tenrm \scriptscriptfont\z@\sevrm + \textfont\@ne\frtnmi \scriptfont\@ne\tenmi \scriptscriptfont\@ne\sevmi + \textfont\tw@\frtnsy \scriptfont\tw@\tensy \scriptscriptfont\tw@\sevsy + \textfont\thr@@\tenex \scriptfont\thr@@\tenex \scriptscriptfont\thr@@\tenex + \def\unboldmath{\everymath{}\everydisplay{}\@nomath\unboldmath + \textfont\@ne\frtnmi \textfont\tw@\frtnsy + \textfont\lyfam\frtnly \@boldfalse}\@boldfalse + \def\boldmath{\@ifundefined{frtnmib}{\global\font + \frtnmib\@mbi\@magscale2\global\font\frtnsyb\@mbsy\@magscale2 + \global\font\frtnlyb\@lasyb\@magscale2\relax\@addfontinfo\@xivpt + {\def\boldmath{\everymath + {\mit}\everydisplay{\mit}\@prtct\@nomathbold + \textfont\@ne\frtnmib \textfont\tw@\frtnsyb + \textfont\lyfam\frtnlyb\@prtct\@boldtrue}}}{}\@xivpt\boldmath}% + \def\prm{\fam\z@\frtnrm}% + \def\pit{\@getfont\pit\itfam\@xivpt{ma56az14}}% + \def\pbf{\fam\bffam\frtnbf}\textfont\bffam\frtnbf + \scriptfont\bffam\tenbf \scriptscriptfont\bffam\ninbf + \def\ptt{\@getfont\ptt\ttfam\@xivpt{cmtt10\@magscale2}\@nohyphens\ptt\@xivpt}% + \def\ly{\fam\lyfam\frtnly}\textfont\lyfam\frtnly + \scriptfont\lyfam\tenly \scriptscriptfont\lyfam\sevly + \@setstrut \rm +} + +\def\xviipt +{% + \textfont\z@\svtnrm + \scriptfont\z@\twlrm \scriptscriptfont\z@\tenrm + \textfont\@ne\svtnmi \scriptfont\@ne\twlmi \scriptscriptfont\@ne\tenmi + \textfont\tw@\svtnsy \scriptfont\tw@\twlsy \scriptscriptfont\tw@\tensy + \textfont\thr@@\tenex \scriptfont\thr@@\tenex \scriptscriptfont\thr@@\tenex + \def\unboldmath{\everymath{}\everydisplay{}\@nomath\unboldmath + \textfont\@ne\svtnmi \textfont\tw@\svtnsy \textfont\lyfam\svtnly + \@boldfalse}\@boldfalse + \def\boldmath{\@subfont\boldmath\unboldmath}% + \def\prm{\fam\z@\svtnrm}% + \def\pit{\@getfont\pit\itfam\@xviipt{ma56az14 at 17pt}}% + \def\pbf{\fam\bffam\svtnbf}\textfont\bffam\svtnbf + \scriptfont\bffam\twlbf \scriptscriptfont\bffam\tenbf + \def\ptt{\@getfont\ptt\ttfam\@xviipt{cmtt10\@magscale3}\@nohyphens + \ptt\@xviipt}% + \def\ly{\fam\lyfam\svtnly}\textfont\lyfam\svtnly + \scriptfont\lyfam\twlly \scriptscriptfont\lyfam\tenly + \@setstrut \rm +} + +\def\xxpt +{% + \textfont\z@\twtyrm + \scriptfont\z@\frtnrm \scriptscriptfont\z@\twlrm + \textfont\@ne\twtymi \scriptfont\@ne\frtnmi \scriptscriptfont\@ne\twlmi + \textfont\tw@\twtysy \scriptfont\tw@\frtnsy \scriptscriptfont\tw@\twlsy + \textfont\thr@@\tenex \scriptfont\thr@@\tenex \scriptscriptfont\thr@@\tenex + \def\unboldmath{\everymath{}\everydisplay{}\@nomath\unboldmath + \textfont\@ne\twtymi \textfont\tw@\twtysy \textfont\lyfam\twtyly + \@boldfalse}\@boldfalse + \def\boldmath{\@subfont\boldmath\unboldmath}% + \def\prm{\fam\z@\twtyrm}% + \def\pit{\@getfont\pit\itfam\@xxpt{ma56az18 at 20pt}}% + \def\pbf{\@getfont\pbf\bffam\@xxpt{ma75az18 at 20pt}}% + \def\ptt{\@getfont\ptt\ttfam\@xxpt{cmtt10\@magscale4}\@nohyphens\ptt\@xxpt}% + \def\ly{\fam\lyfam\twtyly}\textfont\lyfam\twtyly + \scriptfont\lyfam\frtnly \scriptscriptfont\lyfam\twlly + \@setstrut \rm +} + +\def\xxvpt +{% + \textfont\z@\twfvrm + \scriptfont\z@\twtyrm \scriptscriptfont\z@\svtnrm + \textfont\@ne\twtymi \scriptfont\@ne\twtymi \scriptscriptfont\@ne\svtnmi + \textfont\tw@\twtysy \scriptfont\tw@\twtysy \scriptscriptfont\tw@\svtnsy + \textfont\thr@@\tenex \scriptfont\thr@@\tenex \scriptscriptfont\thr@@\tenex + \def\unboldmath{\everymath{}\everydisplay{}\@nomath\unboldmath + \textfont\@ne\twtymi \textfont\tw@\twtysy \textfont\lyfam\twtyly + \@boldfalse}\@boldfalse + \def\boldmath{\@subfont\boldmath\unboldmath}% + \def\prm{\fam\z@\twfvrm}% + \def\pit{\@getfont\pit\bffam\@xxvpt{ma56az24 at 25pt}}% + \def\pbf{\@getfont\pbf\bffam\@xxvpt{ma75az24 at 25pt}}% + \def\ptt{\@subfont\tt\rm}% + \def\ly{\fam\lyfam\twtyly}\textfont\lyfam\twtyly + \scriptfont\lyfam\twtyly \scriptscriptfont\lyfam\svtnly + \@setstrut \rm +} + +% No fancy definition of \$ needed: +\chardef\$=`\$ +\def\pounds{\protect\ppounds} +\def\ppounds{\hrule \@height 0.5ex \@width 0.5ex \relax} + % NO pounds sign! + +\endinput + + diff --git a/fonts/malvern/latex209/fmvnfss.sty b/fonts/malvern/latex209/fmvnfss.sty new file mode 100644 index 0000000000..6eaa4837f1 --- /dev/null +++ b/fonts/malvern/latex209/fmvnfss.sty @@ -0,0 +1,106 @@ +% fmvnfss.sty -- Malvern style option for LaTeX 2.09 + NFSS +% creator: mkdrivers 3.7 <pdc 1994.10.12> +% creation date: 1994.10.12 + +%%% @LaTeX-style-option { +%%% author = "P. Damian Cugley", +%%% version = "75", +%%% date = "1994.10.12", +%%% filename = "fmvnfss.sty", +%%% address = "Oxford University Computing Laboratory, +%%% Parks Road +%%% Oxford OX1 3QD +%%% UK", +%%% telephone = "+44 865 273838 x 73199", +%%% email = "Damian.Cugley@comlab.ox.ac.uk", +%%% codetable = "USASCII", +%%% keywords = "NFSS, LaTeX, Malvern, font family", +%%% supported = "no", +%%% abstract = "This is a style option for LaTeX 2.09 with NFSS. +%%% Replaces the roman, bold, italic and bold italic fonts +%%% with Malvern 55, 75, 56 and 75. +%%% Computer Modern is used as \sf.", +%%% package = "Malvern 1.2", +%%% dependencies = "NFSS", +%%% caveat = "I can't test this: I don't have NFSS", +%%% } + +\@ifundefined{selectfont}{ + \@latexerr{The "fmvnfss" style option can only be used + with LaTeX 2.09 and the New Font Selection Scheme}\@eha + \endinput +}{} + +\def\fileversion{75} +\def\filedate{mkdrivers 1994.10.12} +\message{\fileversion\space <\filedate>} + +\expandafter\def\csname load@fmv\endcsname{% + \extra@def{fmv}{}{} + \new@fontshape{fmv}{m}{n}{% + <5>ma55s7 at 5pt + <6>ma55s7 at 6pt + <7>ma55s7 + <8>ma55s7 at 8pt + <9>ma55s7 at 9pt + <10>ma55s10 + <11>ma55s10 at 11pt + <12>ma55s12 + <14>ma55s14 + <17>ma55s14 at 17pt + <20>ma55s18 at 20pt + <25>ma55s24 at 25pt + }{} + \new@fontshape{fmv}{m}{it}{% + <5>ma56s7 at 5pt + <6>ma56s7 at 6pt + <7>ma56s7 + <8>ma56s7 at 8pt + <9>ma56s7 at 9pt + <10>ma56s10 + <11>ma56s10 at 11pt + <12>ma56s12 + <14>ma56s14 + <17>ma56s14 at 17pt + <20>ma56s18 at 20pt + <25>ma56s24 at 25pt + }{} + \new@fontshape{fmv}{b}{n}{% + <5>ma75s7 at 5pt + <6>ma75s7 at 6pt + <7>ma75s7 + <8>ma75s7 at 8pt + <9>ma75s7 at 9pt + <10>ma75s10 + <11>ma75s10 at 11pt + <12>ma75s12 + <14>ma75s14 + <17>ma75s14 at 17pt + <20>ma75s18 at 20pt + <25>ma75s24 at 25pt + }{} + \new@fontshape{fmv}{b}{it}{% + <5>ma76s7 at 5pt + <6>ma76s7 at 6pt + <7>ma76s7 + <8>ma76s7 at 8pt + <9>ma76s7 at 9pt + <10>ma76s10 + <11>ma76s10 at 11pt + <12>ma76s12 + <14>ma76s14 + <17>ma76s14 at 17pt + <20>ma76s18 at 20pt + <25>ma76s24 at 25pt + }{} + + \subst@fontshape{fmv}{b}{sc}{fmv}{b}{n} + \subst@fontshape{fmv}{m}{sc}{fmv}{m}{n} + \subst@fontshape{fmv}{m}{sl}{fmv}{m}{it} + \subst@fontshape{fmv}{bx}{n}{fmv}{b}{n} + \subst@fontshape{fmv}{bx}{it}{fmv}{b}{it} +} +\romanfont{fmv} +\sansfont{cmr} + +\endinput diff --git a/fonts/malvern/latex209/fmvpltx.sty b/fonts/malvern/latex209/fmvpltx.sty new file mode 100644 index 0000000000..2c250185b8 --- /dev/null +++ b/fonts/malvern/latex209/fmvpltx.sty @@ -0,0 +1,354 @@ +% fmvpltx.sty -- Malvern style option for plain LaTeX 2.09 +% creator: mkdrivers 3.7 <pdc 1994.10.12> +% creation date: 1994.10.12 + +%%% @LaTeX-style-option { +%%% author = "P. Damian Cugley", +%%% version = "75", +%%% date = "1994.10.12", +%%% filename = "fmvpltx.sty", +%%% address = "Oxford University Computing Laboratory, +%%% Parks Road +%%% Oxford OX1 3QD +%%% UK", +%%% telephone = "+44 865 273838 x 73199", +%%% email = "Damian.Cugley@comlab.ox.ac.uk", +%%% codetable = "USASCII", +%%% keywords = "NFSS, LaTeX, Malvern, font family", +%%% supported = "no", +%%% abstract = "This is a style option for LaTeX 2.09 without NFSS. +%%% Replaces the roman, bold, italic and bold italic fonts +%%% with Malvern 55, 75, 56 and 75.", +%%% package = "Malvern 1.2", +%%% dependencies = "", +%%% } + +\@ifundefined{selectfont}{}{ + \@latexerr{The "fmvpltx" style option can only be used + with LaTeX 2.09 without the New Font Selection Scheme}\@eha + \endinput +} + +\def\fileversion{75} +\def\filedate{mkdrivers 1994.10.12} +\message{\fileversion\space <\filedate>} + + +% The following assignments override those in lfonts.tex: + +\font\fivrm = ma55s7 at 5pt +\font\sixrm = ma55s7 at 6pt +\font\sevrm = ma55s7 +\font\sevit = ma56s7 +\font\egtrm = ma55s7 at 8pt +\font\egtit = ma56s7 at 8pt +\font\ninrm = ma55s7 at 9pt +\font\ninit = ma56s7 at 9pt +\font\ninbf = ma75s7 at 9pt +\font\tenrm = ma55s10 +\font\tenit = ma56s10 +\font\tenbf = ma75s10 +\font\elvrm = ma55s10 at 11pt +\font\elvit = ma56s10 at 11pt +\font\elvbf = ma75s10 at 11pt +\font\twlrm = ma55s12 +\font\twlit = ma56s12 +\font\twlbf = ma75s12 +\font\frtnrm = ma55s14 +\font\frtnbf = ma75s14 +\font\svtnrm = ma55s14 at 17pt +\font\svtnbf = ma75s14 at 17pt +\font\twtyrm = ma55s18 at 20pt +\font\twfvrm = ma55s24 at 25pt + +% There are no separate sanserif, caps-and-small-capitals or slanted styles: +\let\sl=\it +\let\sf=\rm +\let\sc=\rm + +% Redefine the size-changing macros: +\def\vpt +{% + \textfont\z@\fivrm + \scriptfont\z@\fivrm \scriptscriptfont\z@\fivrm + \textfont\@ne\fivmi \scriptfont\@ne\fivmi \scriptscriptfont\@ne\fivmi + \textfont\tw@\fivsy \scriptfont\tw@\fivsy \scriptscriptfont\tw@\fivsy + \textfont\thr@@\tenex \scriptfont\thr@@\tenex \scriptscriptfont\thr@@\tenex + \def\prm{\fam\z@\fivrm}% + \def\unboldmath{\everymath{}\everydisplay{}\@nomath + \unboldmath\fam\@ne\@boldfalse}\@boldfalse + \def\boldmath{\@subfont\boldmath\unboldmath}% + \def\pit{\@getfont\pit\itfam\@vpt{ma56s7 at 5pt}}% + \def\pbf{\@getfont\pbf\bffam\@vpt{ma75s7 at 5pt}}% + \def\ptt{\@subfont\tt\rm}% + \def\ly{\fam\lyfam\fivly}\textfont\lyfam\fivly + \scriptfont\lyfam\fivly \scriptscriptfont\lyfam\fivly + \@setstrut\rm +} + +\def\vipt +{% + \textfont\z@\sixrm + \scriptfont\z@\sixrm \scriptscriptfont\z@\sixrm + \textfont\@ne\sixmi \scriptfont\@ne\sixmi \scriptscriptfont\@ne\sixmi + \textfont\tw@\sixsy \scriptfont\tw@\sixsy \scriptscriptfont\tw@\sixsy + \textfont\thr@@\tenex \scriptfont\thr@@\tenex \scriptscriptfont\thr@@\tenex + \def\prm{\fam\z@\sixrm}% + \def\unboldmath{\everymath{}\everydisplay{}\@nomath + \unboldmath\@boldfalse}\@boldfalse + \def\boldmath{\@subfont\boldmath\unboldmath}% + \def\pit{\@getfont\pbf\itfam\@vipt{ma56s7 at 6pt}}% + \def\pbf{\@getfont\pbf\bffam\@vipt{ma75s7 at 6pt}}% + \def\ptt{\@subfont\tt\rm}% + \def\ly{\fam\lyfam\sixly}\textfont\lyfam\sixly + \scriptfont\lyfam\sixly \scriptscriptfont\lyfam\sixly + \@setstrut\rm +} + +\def\viipt +{% + \textfont\z@\sevrm + \scriptfont\z@\sixrm \scriptscriptfont\z@\fivrm + \textfont\@ne\sevmi \scriptfont\@ne\fivmi \scriptscriptfont\@ne\fivmi + \textfont\tw@\sevsy \scriptfont\tw@\fivsy \scriptscriptfont\tw@\fivsy + \textfont\thr@@\tenex \scriptfont\thr@@\tenex \scriptscriptfont\thr@@\tenex + \def\prm{\fam\z@\sevrm}% + \def\unboldmath{\everymath{}\everydisplay{}\@nomath + \unboldmath\@boldfalse}\@boldfalse + \def\boldmath{\@subfont\boldmath\unboldmath}% + \def\pit{\fam\itfam\sevit}\textfont\itfam\sevit + \scriptfont\itfam\sevit \scriptscriptfont\itfam\sevit + \def\pbf{\@getfont\pbf\bffam\@viipt{ma75s7}}% + \def\ptt{\@subfont\tt\rm}% + \def\ly{\fam\lyfam\sevly}\textfont\lyfam\sevly + \scriptfont\lyfam\fivly \scriptscriptfont\lyfam\fivly + \@setstrut \rm +} + +\def\viiipt +{% + \textfont\z@\egtrm + \scriptfont\z@\sixrm \scriptscriptfont\z@\fivrm + \textfont\@ne\egtmi \scriptfont\@ne\sixmi \scriptscriptfont\@ne\fivmi + \textfont\tw@\egtsy \scriptfont\tw@\sixsy \scriptscriptfont\tw@\fivsy + \textfont\thr@@\tenex \scriptfont\thr@@\tenex \scriptscriptfont\thr@@\tenex + \def\prm{\fam\z@\egtrm}% + \def\unboldmath{\everymath{}\everydisplay{}\@nomath + \unboldmath\@boldfalse}\@boldfalse + \def\boldmath{\@subfont\boldmath\unboldmath}% + \def\pit{\fam\itfam\egtit}\textfont\itfam\egtit + \scriptfont\itfam\sevit \scriptscriptfont\itfam\sevit + \def\pbf{\@getfont\pbf\bffam\@viiipt{ma75s7 at 8pt}}% + \def\ptt{\@getfont\ptt\ttfam\@viiipt{cmtt8}\@nohyphens\ptt\@viiipt}% + \def\ly{\fam\lyfam\egtly}\textfont\lyfam\egtly + \scriptfont\lyfam\sixly \scriptscriptfont\lyfam\fivly + \@setstrut \rm +} + +\def\ixpt +{% + \textfont\z@\ninrm + \scriptfont\z@\sixrm \scriptscriptfont\z@\fivrm + \textfont\@ne\ninmi \scriptfont\@ne\sixmi \scriptscriptfont\@ne\fivmi + \textfont\tw@\ninsy \scriptfont\tw@\sixsy \scriptscriptfont\tw@\fivsy + \textfont\thr@@\tenex \scriptfont\thr@@\tenex \scriptscriptfont\thr@@\tenex + \def\prm{\fam\z@\ninrm}% + \def\unboldmath{\everymath{}\everydisplay{}\@nomath\unboldmath + \@boldfalse}\@boldfalse + \def\boldmath{\@subfont\boldmath\unboldmath}% + \def\pit{\fam\itfam\ninit}\textfont\itfam\ninit + \scriptfont\itfam\sevit \scriptscriptfont\itfam\sevit + \def\pbf{\fam\bffam\ninbf}\textfont\bffam\ninbf + \scriptfont\bffam\ninbf \scriptscriptfont\bffam\ninbf + \def\ptt{\fam\ttfam\nintt}\textfont\ttfam\nintt + \scriptfont\ttfam\nintt \scriptscriptfont\ttfam\nintt + \def\ly{\fam\lyfam\ninly}\textfont\lyfam\ninly + \scriptfont\lyfam\sixly \scriptscriptfont\lyfam\fivly + \@setstrut \rm +} + +\def\xpt +{% + \textfont\z@\tenrm + \scriptfont\z@\sevrm \scriptscriptfont\z@\fivrm + \textfont\@ne\tenmi \scriptfont\@ne\sevmi \scriptscriptfont\@ne\fivmi + \textfont\tw@\tensy \scriptfont\tw@\sevsy \scriptscriptfont\tw@\fivsy + \textfont\thr@@\tenex \scriptfont\thr@@\tenex \scriptscriptfont\thr@@\tenex + \def\unboldmath{\everymath{}\everydisplay{}\@nomath\unboldmath + \textfont\@ne\tenmi + \textfont\tw@\tensy \textfont\lyfam\tenly + \@boldfalse}\@boldfalse + \def\boldmath{\@ifundefined{tenmib}{\global\font\tenmib\@mbi + \global\font\tensyb\@mbsy + \global\font\tenlyb\@lasyb\relax\@addfontinfo\@xpt + {\def\boldmath{\everymath{\mit}\everydisplay{\mit}\@prtct\@nomathbold + \textfont\@ne\tenmib \textfont\tw@\tensyb + \textfont\lyfam\tenlyb \@prtct\@boldtrue}}}{}\@xpt\boldmath}% + \def\prm{\fam\z@\tenrm}% + \def\pit{\fam\itfam\tenit}\textfont\itfam\tenit \scriptfont\itfam\sevit + \scriptscriptfont\itfam\sevit + \def\pbf{\fam\bffam\tenbf}\textfont\bffam\tenbf + \scriptfont\bffam\tenbf \scriptscriptfont\bffam\tenbf + \def\ptt{\fam\ttfam\tentt}\textfont\ttfam\tentt + \scriptfont\ttfam\tentt \scriptscriptfont\ttfam\tentt + \def\ly{\fam\lyfam\tenly}\textfont\lyfam\tenly + \scriptfont\lyfam\sevly \scriptscriptfont\lyfam\fivly + \@setstrut \rm +} + +\def\xipt +{% + \textfont\z@\elvrm + \scriptfont\z@\egtrm \scriptscriptfont\z@\sixrm + \textfont\@ne\elvmi \scriptfont\@ne\egtmi \scriptscriptfont\@ne\sixmi + \textfont\tw@\elvsy \scriptfont\tw@\egtsy \scriptscriptfont\tw@\sixsy + \textfont\thr@@\tenex \scriptfont\thr@@\tenex \scriptscriptfont\thr@@\tenex + \def\unboldmath{\everymath{}\everydisplay{}\@nomath\unboldmath + \textfont\@ne\elvmi \textfont\tw@\elvsy + \textfont\lyfam\elvly \@boldfalse}\@boldfalse + \def\boldmath{\@ifundefined{elvmib}{\global\font\elvmib\@mbi\@halfmag + \global\font\elvsyb\@mbsy\@halfmag + \global\font\elvlyb\@lasyb\@halfmag\relax\@addfontinfo\@xipt + {\def\boldmath{\everymath{\mit}\everydisplay{\mit}\@prtct\@nomathbold + \textfont\@ne\elvmib \textfont\tw@\elvsyb + \textfont\lyfam\elvlyb\@prtct\@boldtrue}}}{}\@xipt\boldmath}% + \def\prm{\fam\z@\elvrm}% + \def\pit{\fam\itfam\elvit}\textfont\itfam\elvit + \scriptfont\itfam\egtit \scriptscriptfont\itfam\sevit + \def\pbf{\fam\bffam\elvbf}\textfont\bffam\elvbf + \scriptfont\bffam\ninbf \scriptscriptfont\bffam\ninbf + \def\ptt{\fam\ttfam\elvtt}\textfont\ttfam\elvtt + \scriptfont\ttfam\nintt \scriptscriptfont\ttfam\nintt + \def\ly{\fam\lyfam\elvly}\textfont\lyfam\elvly + \scriptfont\lyfam\egtly \scriptscriptfont\lyfam\sixly + \@setstrut \rm +} + +\def\xiipt +{% + \textfont\z@\twlrm + \scriptfont\z@\egtrm \scriptscriptfont\z@\sixrm + \textfont\@ne\twlmi \scriptfont\@ne\egtmi \scriptscriptfont\@ne\sixmi + \textfont\tw@\twlsy \scriptfont\tw@\egtsy \scriptscriptfont\tw@\sixsy + \textfont\thr@@\tenex \scriptfont\thr@@\tenex \scriptscriptfont\thr@@\tenex + \def\unboldmath{\everymath{}\everydisplay{}\@nomath\unboldmath + \textfont\@ne\twlmi + \textfont\tw@\twlsy \textfont\lyfam\twlly + \@boldfalse}\@boldfalse + \def\boldmath{\@ifundefined{twlmib}{\global\font\twlmib\@mbi\@magscale1\global + \font\twlsyb\@mbsy \@magscale1\global\font + \twllyb\@lasyb\@magscale1\relax\@addfontinfo\@xiipt + {\def\boldmath{\everymath + {\mit}\everydisplay{\mit}\@prtct\@nomathbold + \textfont\@ne\twlmib \textfont\tw@\twlsyb + \textfont\lyfam\twllyb\@prtct\@boldtrue}}}{}\@xiipt\boldmath}% + \def\prm{\fam\z@\twlrm}% + \def\pit{\fam\itfam\twlit}\textfont\itfam\twlit \scriptfont\itfam\egtit + \scriptscriptfont\itfam\sevit + \def\pbf{\fam\bffam\twlbf}\textfont\bffam\twlbf + \scriptfont\bffam\ninbf \scriptscriptfont\bffam\ninbf + \def\ptt{\fam\ttfam\twltt}\textfont\ttfam\twltt + \scriptfont\ttfam\nintt \scriptscriptfont\ttfam\nintt + \def\ly{\fam\lyfam\twlly}\textfont\lyfam\twlly + \scriptfont\lyfam\egtly \scriptscriptfont\lyfam\sixly + \@setstrut \rm +} + +\def\xivpt +{% + \textfont\z@\frtnrm + \scriptfont\z@\tenrm \scriptscriptfont\z@\sevrm + \textfont\@ne\frtnmi \scriptfont\@ne\tenmi \scriptscriptfont\@ne\sevmi + \textfont\tw@\frtnsy \scriptfont\tw@\tensy \scriptscriptfont\tw@\sevsy + \textfont\thr@@\tenex \scriptfont\thr@@\tenex \scriptscriptfont\thr@@\tenex + \def\unboldmath{\everymath{}\everydisplay{}\@nomath\unboldmath + \textfont\@ne\frtnmi \textfont\tw@\frtnsy + \textfont\lyfam\frtnly \@boldfalse}\@boldfalse + \def\boldmath{\@ifundefined{frtnmib}{\global\font + \frtnmib\@mbi\@magscale2\global\font\frtnsyb\@mbsy\@magscale2 + \global\font\frtnlyb\@lasyb\@magscale2\relax\@addfontinfo\@xivpt + {\def\boldmath{\everymath + {\mit}\everydisplay{\mit}\@prtct\@nomathbold + \textfont\@ne\frtnmib \textfont\tw@\frtnsyb + \textfont\lyfam\frtnlyb\@prtct\@boldtrue}}}{}\@xivpt\boldmath}% + \def\prm{\fam\z@\frtnrm}% + \def\pit{\@getfont\pit\itfam\@xivpt{ma56s14}}% + \def\pbf{\fam\bffam\frtnbf}\textfont\bffam\frtnbf + \scriptfont\bffam\tenbf \scriptscriptfont\bffam\ninbf + \def\ptt{\@getfont\ptt\ttfam\@xivpt{cmtt10\@magscale2}\@nohyphens\ptt\@xivpt}% + \def\ly{\fam\lyfam\frtnly}\textfont\lyfam\frtnly + \scriptfont\lyfam\tenly \scriptscriptfont\lyfam\sevly + \@setstrut \rm +} + +\def\xviipt +{% + \textfont\z@\svtnrm + \scriptfont\z@\twlrm \scriptscriptfont\z@\tenrm + \textfont\@ne\svtnmi \scriptfont\@ne\twlmi \scriptscriptfont\@ne\tenmi + \textfont\tw@\svtnsy \scriptfont\tw@\twlsy \scriptscriptfont\tw@\tensy + \textfont\thr@@\tenex \scriptfont\thr@@\tenex \scriptscriptfont\thr@@\tenex + \def\unboldmath{\everymath{}\everydisplay{}\@nomath\unboldmath + \textfont\@ne\svtnmi \textfont\tw@\svtnsy \textfont\lyfam\svtnly + \@boldfalse}\@boldfalse + \def\boldmath{\@subfont\boldmath\unboldmath}% + \def\prm{\fam\z@\svtnrm}% + \def\pit{\@getfont\pit\itfam\@xviipt{ma56s14 at 17pt}}% + \def\pbf{\fam\bffam\svtnbf}\textfont\bffam\svtnbf + \scriptfont\bffam\twlbf \scriptscriptfont\bffam\tenbf + \def\ptt{\@getfont\ptt\ttfam\@xviipt{cmtt10\@magscale3}\@nohyphens + \ptt\@xviipt}% + \def\ly{\fam\lyfam\svtnly}\textfont\lyfam\svtnly + \scriptfont\lyfam\twlly \scriptscriptfont\lyfam\tenly + \@setstrut \rm +} + +\def\xxpt +{% + \textfont\z@\twtyrm + \scriptfont\z@\frtnrm \scriptscriptfont\z@\twlrm + \textfont\@ne\twtymi \scriptfont\@ne\frtnmi \scriptscriptfont\@ne\twlmi + \textfont\tw@\twtysy \scriptfont\tw@\frtnsy \scriptscriptfont\tw@\twlsy + \textfont\thr@@\tenex \scriptfont\thr@@\tenex \scriptscriptfont\thr@@\tenex + \def\unboldmath{\everymath{}\everydisplay{}\@nomath\unboldmath + \textfont\@ne\twtymi \textfont\tw@\twtysy \textfont\lyfam\twtyly + \@boldfalse}\@boldfalse + \def\boldmath{\@subfont\boldmath\unboldmath}% + \def\prm{\fam\z@\twtyrm}% + \def\pit{\@getfont\pit\itfam\@xxpt{ma56s18 at 20pt}}% + \def\pbf{\@getfont\pbf\bffam\@xxpt{ma75s18 at 20pt}}% + \def\ptt{\@getfont\ptt\ttfam\@xxpt{cmtt10\@magscale4}\@nohyphens\ptt\@xxpt}% + \def\ly{\fam\lyfam\twtyly}\textfont\lyfam\twtyly + \scriptfont\lyfam\frtnly \scriptscriptfont\lyfam\twlly + \@setstrut \rm +} + +\def\xxvpt +{% + \textfont\z@\twfvrm + \scriptfont\z@\twtyrm \scriptscriptfont\z@\svtnrm + \textfont\@ne\twtymi \scriptfont\@ne\twtymi \scriptscriptfont\@ne\svtnmi + \textfont\tw@\twtysy \scriptfont\tw@\twtysy \scriptscriptfont\tw@\svtnsy + \textfont\thr@@\tenex \scriptfont\thr@@\tenex \scriptscriptfont\thr@@\tenex + \def\unboldmath{\everymath{}\everydisplay{}\@nomath\unboldmath + \textfont\@ne\twtymi \textfont\tw@\twtysy \textfont\lyfam\twtyly + \@boldfalse}\@boldfalse + \def\boldmath{\@subfont\boldmath\unboldmath}% + \def\prm{\fam\z@\twfvrm}% + \def\pit{\@getfont\pit\bffam\@xxvpt{ma56s24 at 25pt}}% + \def\pbf{\@getfont\pbf\bffam\@xxvpt{ma75s24 at 25pt}}% + \def\ptt{\@subfont\tt\rm}% + \def\ly{\fam\lyfam\twtyly}\textfont\lyfam\twtyly + \scriptfont\lyfam\twtyly \scriptscriptfont\lyfam\svtnly + \@setstrut \rm +} + +% No fancy definition of \$ needed: +\chardef\$=`\$ +\def\pounds{\protect\ppounds} +\def\ppounds{\hrule \@height 0.5ex \@width 0.5ex \relax} + % NO pounds sign! + +\endinput + + diff --git a/fonts/malvern/source/ascii.mf b/fonts/malvern/source/ascii.mf new file mode 100644 index 0000000000..bd47f3860a --- /dev/null +++ b/fonts/malvern/source/ascii.mf @@ -0,0 +1,54 @@ +% ascii.mf 1.2.0 1994/10/11 -- a common subset of the ASCII character set +% Copyright 1994 P. Damian Cugley + +%%% @METAFONT-file { +%%% filename = "ascii.mf", +%%% version = "1.2.0", +%%% date = "1994/10/11", +%%% package = "Malvern 1.2", +%%% author = "P. Damian Cugley", +%%% email = "damian.cugley@comlab.ox.ac.uk", +%%% address = "Oxford University Computing Laboratory, +%%% Parks Road, Oxford OX1 3QD, UK", +%%% codetable = "USASCII", +%%% keywords = "Malvern, METAFONT, font, typefont, TeX", +%%% supported = "Maybe", +%%% abstract = "Specify the character codes for a common subset of +%%% the ASCII character set.", +%%% dependencies = "", +%%% } + +% See the Malvern Handbook (maman.tex) for more info about Malvern. +% This software is available freely but without warranty. +% See the file COPYING for details. + +code.exclam = 33; + +code.hash = 35; +code.dollar = 36; +code.percent = 37; +code.ampersand = 38; +code.apostrophe = 39; +code.paren.left = 40; +code.paren.right = 41; +code.asterisk5 = 42; +code.plus_sign = 43; +code.comma = 44; + +code.full_stop = 46; +code.slash = 47; + +code.colon = 58; +code.semicolon = 59; + +code.equals = 61; + +code.question = 63; +code.at_sign = 64; + +code.brack.left = 91; + +code.brack.right = 93; + +code.inv.comma = 96; + diff --git a/fonts/malvern/source/fmv.mf b/fonts/malvern/source/fmv.mf new file mode 100644 index 0000000000..4ebdf7e0d7 --- /dev/null +++ b/fonts/malvern/source/fmv.mf @@ -0,0 +1,33 @@ +% fmv.mf 1.2.0 94/10/11 -- generate fmv* fonts +% Copyright 1994 P. Damian Cugley + +%%% @METAFONT-file { +%%% filename = "fmv.mf", +%%% version = "1.2.0", +%%% date = "1994/10/11", +%%% package = "Malvern 1.2", +%%% author = "P. Damian Cugley", +%%% email = "damian.cugley@comlab.ox.ac.uk", +%%% address = "Oxford University Computing Laboratory, +%%% Parks Road, Oxford OX1 3QD, UK", +%%% codetable = "USASCII", +%%% keywords = "Malvern, METAFONT, font, typefont, TeX", +%%% supported = "Maybe", +%%% abstract = "Generic driver file for the Malvern +%%% font family, to be compiled using +%%% METAFONT into TFM files (for TeX) and +%%% GF files (for your printer driver).", +%%% dependencies = "program files", +%%% } + +% See the Malvern Handbook (maman.tex) for more info about Malvern. +% This software is available freely but without warranty. +% See the file COPYING for details. + +% This uses Knuth's "TeX Text" encoding +% and Karl Berry's naming system -- with fmv as the family name. + +% encoding shoul;d be either 26 for old-style numerals, or undefined. +if unknown encoding: encoding = 19; fi +input ma +bye diff --git a/fonts/malvern/source/fmv.mff b/fonts/malvern/source/fmv.mff new file mode 100644 index 0000000000..23fc7f4df9 --- /dev/null +++ b/fonts/malvern/source/fmv.mff @@ -0,0 +1,92 @@ +# fmv.mff 1.2.0 1994/10/11 -- mff startup file for Malvern 1.2 with KB names + +### @mff-options-file { +### filename = "fmv.mff", +### version = "1.2.0", +### date = "1994/10/11", +### package = "Malvern 1.2", +### author = "P. Damian Cugley", +### email = "damian.cugley@comlab.ox.ac.uk", +### address = "Oxford University Computing Laboratory, +### Parks Road, Oxford OX1 3QD, UK", +### codetable = "USASCII", +### keywords = "Malvern, METAFONT, font, typefont, TeX", +### supported = "Maybe", +### abstract = "An alternative mff options file for the Malvern +### font family.", +### dependencies = "program files", +### } + +# See the Malvern Handbook (maman.tex) for more info about Malvern. +# This software is available freely but without warranty. +# See the file COPYING for details. + +# This file describes the translation of font names into assignments to +# METAFONT variables (see the file INSTALL for more info). +# It is used by programs like mff that run METAFONT automatically. + +######################################################################## +# +# The font names understood are of the form +# +# fmv<weight><variant><encoding><width><size> +# +# where <weight> is one of t, i, l, k, m, d, b, x, c +# <variant> is one of r, i, 9, 9i +# <width> is one of c, r, x +# <encoding> is one of k or <empty> +# <size> is one or two digits +# +# Except that if both <width> and <variant> are "r", we omit them. +# Unless... and so on. The syntax is complicated. +# +# The 7t suffix (indicating the old TeX Text encoding) is new. +# It used to be that when there was no encoding suffix the assumption +# was that "TeX Text" was being used. It isn't supported yet! +# +# font old new nonstandard name +# +# Malvern 55 10-pt fmvm10 fmvm7t10 ma55s10 +# Malvern 65 10-pt fmvd10 fmvd7t10 ma65s10 +# Malvern 74 18-pt fmvbix18 fmvbi7tx18 ma74s18 +# Malvern 58 7-pt fmvmic7 fmvmi7tc7 ma58s7 +# +######################################################################## + +-K # tell mff that Karl Berry names are being used + +# The following sets the W table: + ++W +-W "t= weight = 1/4" # thin [ultra-light] +-W "i= weight = 1/2" # extra-lIght +-W "l= weight = 3/4" # Light +-W "k= weight = 7/8" # booK +-W "m= weight = 1" # Medium +-W "d= weight = 1.3" # Demi +-W "b= weight = 1.6" # Bold +-W "x= weight = 2" # eXtra +-W "u= weight = 3" # Ultra + +# The table of widths (table C): + ++C +-C "o= hratio = 0.50" # extra condensed +-C "c= hratio = 0.80" # compressed +-C "r= hratio = 1.00" # normal width +-C "x= hratio = 1.15" # expanded +-C "w= hratio = 1.30" # extra expanded + +# table of variants: + ++I +-I "i= italicness = 1; slant = 1/8" # italic +-I "9= encoding = 26" # oldstyle digits +-I "o= slant = 1/8" # oblique +-I "u= italicness = 1" # upright italic (!) +-I "r= " +-I "k= encoding = 7" # Greek + +# The J table is not used: + ++J diff --git a/fonts/malvern/source/ma.mf b/fonts/malvern/source/ma.mf new file mode 100644 index 0000000000..230c5b72f8 --- /dev/null +++ b/fonts/malvern/source/ma.mf @@ -0,0 +1,392 @@ +% ma.mf 1.2.0 94/10/11 -- top-level driver file for the Malvern family +% Copyright 1991, 1992, 1993, 1994 P. Damian Cugley + +%%% @METAFONT-file { +%%% filename = "ma.mf", +%%% version = "1.2.0", +%%% package = "Malvern 1.2", +%%% author = "P. Damian Cugley", +%%% email = "damian.cugley@comlab.ox.ac.uk", +%%% address = "Oxford University Computing Laboratory, +%%% Parks Road, Oxford OX1 3QD, UK", +%%% codetable = "USASCII", +%%% keywords = "Malvern, METAFONT, font, typefont, TeX", +%%% supported = "Maybe", +%%% abstract = "Generic driver file for the Malvern +%%% font family.", +%%% dependencies = "other program files", +%%% } + +% See the Malvern Handbook (maman.tex) for more info about Malvern. +% This software is available freely without warranty. +% See the file COPYING for details. + +%{{{ ma.mf +string maversion; maversion = "1.2"; + +boolean new_mf; new_mf = unknown no_new_mf; + +%{{{ Just testing? + +% If |mode| is unknown (no |\mode| in commandline) +% then |testing| is given value |true|. +% This means that most character programs will be skipped. + +% To make a proof of all charcters, use |\mode=proof;...|. + +boolean testing; + +if unknown mode: + message "Malvern version " & maversion; + message "Copyright (c) 1991 Damian Cugley."; + if designsize = 0pt#: font_size 10pt#; fi + testing := true; +else: + testing := false; +fi + +%}}} +mode_setup; +input maparams +input maencode +input makit; +%{{{ read program files + +code_offset = 0; % added to all character codes + +boolean no_co; % control which chars made by macaps. +no_co := false; + +boolean lc_marks; lc_marks = true; +boolean text_figs; text_figs = true; +boolean small_figs; small_figs = false; % sup or inf figs +fig_b = 0v; + +height# := 12v#; +pn_wd# := pn.wd#; + +if testing: endinput fi + +input mapunct % punctuation +input masyms % symbols + +if known code.lc.a or known code.lc.longs: + input malc +fi % lowercase letters +if known code.mk.acute: input mamarks fi % marks for l.c. +%%%%if known code.gr.lc.mu: input magrlc fi % l.c. greek +input magrlc +if known code.gr.cap.gamma: input magrcaps fi % u.c. greek +if known code.cy.cap.b: input macy fi % cyrillic + +%{{{ Figures 0-9 + +if known code.zero.old_style: + text_figs := true; + fig_offset := code.zero.old_style; + input mafigs; +fi + +if known code.zero: + text_figs := false; + fig_b := 0; fig_dp# := 0; + fig_offset := code.zero; + input mafigs; +fi + +if known code.zero.superior: + text_figs := false; + fig_ht# := body_ht#; + fig_wd# := sfig_wd#; + fig_b := vround (body_ht - sfig_ht); fig_dp# := 0; + fig_offset := code.zero.superior; + input mafigs; +fi + +if known code.zero.inferior: + text_figs := false; + fig_ht# := -body_dp# + sfig_ht#; + fig_wd# := sfig_wd#; + fig_b := vround (-body_dp); fig_dp# := body_dp#; + fig_offset := code.zero.inferior; + input mafigs; +fi + +%}}} +%{{{ Capital letters + +%% The conventions for capital letters programs are supposed +%% to've been changed -- again -- to use capcode instead of +%% all these offsets and things. + +def input_macaps(suffix CC, SS) = + if known code.offset.CC and known code.offset.SS: + if code.offset.SS <> code.offset.CC: + co_only := true; no_co := false; + message (str CC & " -- composites.") + code_offset := code.offset.CC; scantokens "input macaps"; + co_only := false; no_co := true; + message(str SS & " -- simples.") + code_offset := code.offset.SS; scantokens "input macaps"; + else: + co_only := no_co := false; + code_offset := code.offset.SS; + message(str SS & "&" & str CC & " -- simples & composites."); + scantokens "input macaps"; + fi + else: % one or the other unknown + if known code.offset.CC: + co_only := true; no_co := false; + code_offset := code.offset.CC; show code.offset.CC; + message (str CC & " -- composites only."); + scantokens "input macaps"; + else: + co_only := false; no_co := true; + code_offset := code.offset.SS; + message (str SS & " -- simples only."); + scantokens "input macaps"; + fi; + fi +enddef; + +if known code.offset.LS or known code.offset.LC: + capmode := 1; + pickup pencircle xscaled cap.pn.wd yscaled cap.pn.ht; the_pen := savepen; + height# := cap_ht#; pn_wd# := cap.pn.wd#; + input_macaps(LC,LS); +fi + +if known code.mk.Acute: + code_offset := code.mk.Acute - code.mk.acute; + lc_marks := false; input mamarks; +fi + +if known code.offset.MC or known code.offset.MS: + capmode := 2; + pickup pencircle xscaled mcap.pn.wd yscaled mcap.pn.ht; the_pen := savepen; + height# := mcap_ht#; pn_wd# := mcap.pn.wd#; + input_macaps(MC,MS); +fi + +if known code.offset.SC or known code.offset.SS: + capmode := 3; + pickup pencircle xscaled scap.pn.wd yscaled scap.pn.ht; the_pen := savepen; + height# := scap_ht#; pn_wd# := scap.pn.wd#; + input_macaps(SC,SS); +fi + +%}}} +%}}} +if known code.lc.a and known code.offset.LS: +%{{{ Ligtable + +vardef chardefined primary c = + if known byte c: charexists c else: false fi +enddef; + +def KK = kern -2ku# enddef; +def K = kern -3/2ku# enddef; +def k = kern -ku# enddef; +def kk = kern -1/2ku# enddef; +def kkk = kern -1/4ku# enddef; + +def o_kerns primary x = + if italic: "a" kern x, fi + for i = "c", "d", "e", "g", "o": i kern x, endfor + "q" kern x +enddef; + +def O_kerns primary x = + for i = "C", "G", "O": i kern x, endfor + "Q" kern x +enddef; + +def u_kerns primary x = + "u" kern x, "y" kern x +enddef; + +def v_kerns primary x = + "v" kern x, "w" kern x +enddef; + +def maybe_a_kern primary x = + if not italic: "a" kern x, fi +enddef; + +def kerns_for_f = + if new_mf: 1:: fi + maybe_a_kern(-1/2ku#) + o_kerns(-1/2ku#), + "s" kk, + if new_mf: boundarychar kern 1.5u#, fi + "," k, "." k, + "'" kern ku#, "?" kern ku#, ")" kern ku#, "]" kern ku#, + if known code.anglebr.right: code.anglebr.right kern ku#, fi + if known code.lc.dotless_j and new_mf: % fjord + "j" |=: code.lc.dotless_j, + fi + if known code.lc.dotless_i: + code.lc.dotless_j kern fi_kern#, + code.lc.dotless_i kern fi_kern#, + fi + "*" kern ku# +enddef; + +def do_kerns_for_f = if new_mf: skipto 1 else: kerns_for_f fi enddef; + +ligtable "b": "e": "o": "p": + "f" kkk, "t" kkk, + "v" kern -1/3ku#, "w" kern -1/3ku#, + ")" k; + +ligtable "c": + o_kerns(-1/2ku#) + if known c_h_kern#: if c_h_kern# <> 0pt#: , "h" kern c_h_kern# fi fi; + +ligtable "i": "j": + "j" kern -0.125ku#; + +ligtable "l": + "l" kern 1/8ku#; + +ligtable "r": + maybe_a_kern(-3/4ku#) o_kerns(-3/4ku#), + "j" kkk, "s" kk; + +if chardefined code.lc.f.f: +ligtable "f": + if chardefined code.lc.f.f: "f" =: code.lc.f.f, fi + if chardefined code.lc.f.i: "i" =: code.lc.f.i, fi + if chardefined code.lc.f.l: "l" =: code.lc.f.l, fi + do_kerns_for_f; +fi + +if chardefined code.lc.f.f.i: + ligtable code.lc.f.f: + "i" =: code.lc.f.f.i, "l" =: code.lc.f.f.l, + kerns_for_f; +fi + +ligtable "A": + o_kerns(-1/4ku#), + "j" kk, "t" kkk, "v" k, "w" k, + O_kerns(-1/2ku#), + "S" kk, "U" kk, + "T" k, "V" K, "W" k, "Y" K; + +ligtable "D": "O": "Q": + "A" kk, ")" k; + +ligtable "F": + maybe_a_kern(-ku#) + o_kerns(-ku#); + +ligtable "L": + maybe_a_kern(-1/2ku#) + o_kerns(-ku#), u_kerns(-1/2ku#), v_kerns(-ku#); + +ligtable "P": + "A" k, + "." kern -1.5ku#, "," kern -2ku#; + +ligtable "T": + maybe_a_kern(-2ku#) + o_kerns(-2ku#), "r" K, "s" KK, + u_kerns(-2ku#), "w" k, + "A" k, + if hratio >= 0.9: "C" k, "G" k, "O" k, "Q" k, fi + "." kern -1.5ku#, "," kern -1.5ku#, + "J" k, + "T" kern 1/2ku#; + +ligtable "V": + "A" K; + +ligtable "W": + "A" k; + +ligtable "Y": + "A" K; + +ligtable ".": + "." kern 2ku#, "?" kern 4ku#, "!" kern 4ku#; + +ligtable "3": + "0" k, "r" kk; + +ligtable "4": + "t" k; + +ligtable "(": "[": if chardefined code.anglebr.left: code.anglebr.left: fi + O_kerns(-ku#), o_kerns(-ku#), "T" kern +1/2ku#; + +if chardefined code.en_dash: + ligtable "-": "-" =: code.en_dash; + ligtable code.en_dash: "-" =: code.em_dash; +fi + +if chardefined code.dbl.inv.comma: + ligtable "'": "'" =: code.dbl.apostrophe; + ligtable "`": "`" =: code.dbl.inv.comma; +fi + +if chardefined code.dbl.comma: + ligtable ",": "," =: code.dbl.comma; +fi + +if chardefined code.guillemet.single.left: + ligtable code.guillemet.single.left: + code.guillemet.single.left =: code.guillemet.left; + ligtable code.guillemet.single.right: + code.guillemet.single.right =: code.guillemet.right; +fi + +if chardefined code.inv.question: + ligtable "?": "`" =: code.inv.question; + ligtable "!": "`" =: code.inv.exclam; +fi +%}}} +fi +%{{{ Fontdimens + +font_slant slant; +font_x_height x_ht#; +font_quad 16u#; % = design_size * hratio +font_normal_space 5u#; % 0.313em +font_normal_stretch 3u#; % max space is 1/2 em +font_normal_shrink 2u#; % min is 0.2 em (ouch) +font_identifier ("MA" + & decimal weight & "/" & decimal hratio & "/" + & decimal slant & if italic: "I" else: "R" fi + & if encoding = 0: "S" else: char (64 + encoding) fi); + +subs = 0.7; % expect subscripts to be 70% as big +rth# = 0.04designsize; % expect rule of 0.4pt when 10pt +fontdimen8: axis_ht# + 3.5rth# + 2.5v# + subs*desc_dp#; % num1 (display) +fontdimen9: axis_ht# + 1.5rth# + 1.5v#; % num2 (\over, non-display) +fontdimen10: axis_ht# + 1.5rth# + 2.5v#; % num3 (\atop, non-display) +fontdimen11: -(axis_ht# - 3.5rth# - subs*fig_ht# - 6v#); % denom1 (display) +fontdimen12: -(axis_ht# - 1.5rth# - subs*fig_ht# - 1.5v#); % denom2 (text) +fontdimen13: body_ht# - subs*0.75x_ht#; % sup1 (non-cramped, display) +fontdimen14: body_ht# - subs*x_ht#; % sup2 (non-cramped, non-display) +fontdimen15: body_ht# - subs*0.75[asc_ht#,x_ht#]; % sup3 (cramped) +fontdimen16: 3v#; % sub1 +fontdimen17: min(-(body_ht# - subs*0.75[asc_ht#,x_ht#] - 2v# - subs*asc_ht#), + body_dp#); % sub2 +fontdimen18: subs*asc_ht# - 1/2v#; % sup_drop +fontdimen19: 0.9 v#; % sub_drop +fontdimen20: 36v#; % delim1 (display) +fontdimen21: 18v#; % delim2 (non-display) +fontdimen22: axis_ht#; + +% Karl Berry's suggestions: +fontdimen23: body_ht# + min(1,weight/hratio) * 0.2 * body_ht#; +fontdimen24: body_dp# + min(1,weight/hratio) * 0.2 * body_dp#; +fontdimen25: designsize; + +%}}} +%}}} ma.mf + +%Local variables: +%fold-folded-p: t +%End: diff --git a/fonts/malvern/source/maaenc.mf b/fonts/malvern/source/maaenc.mf new file mode 100644 index 0000000000..922f12cff6 --- /dev/null +++ b/fonts/malvern/source/maaenc.mf @@ -0,0 +1,238 @@ +% maaenc.mf 1.2.0 1994/10/11 -- Malvern Encoding A +% Copyright 1993-4 P. Damian Cugley. + +%%% @METAFONT-file { +%%% filename = "maaenc.mf", +%%% version = "1.2.0", +%%% date = "1994/10/11", +%%% package = "Malvern 1.2", +%%% author = "P. Damian Cugley", +%%% email = "damian.cugley@comlab.ox.ac.uk", +%%% address = "Oxford University Computing Laboratory, +%%% Parks Road, Oxford OX1 3QD, UK", +%%% codetable = "USASCII", +%%% keywords = "Malvern, METAFONT, font, typefont, TeX", +%%% supported = "Maybe", +%%% abstract = "Character programs for the Malvern +%%% font family, to be compiled using +%%% METAFONT into TFM files (for TeX) and +%%% GF files (for your printer driver).", +%%% dependencies = "other program files", +%%% } + +% See the Malvern Handbook (maman.tex) for more info about Malvern. +% This software is available freely but without warranty. +% See the file COPYING for details. + +%{{{ maaenc.mf + +% These offsets are now obselete: +code.offset.LS = code.offset.MS = code.offset.SS = 0; + +%{{{ Summary + +% 0 1 2 3 4 5 6 7 8 9 A B C D E F +% +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ +% 0 | l.cap specials | * * | marks that go above l.c. | +% + +---+---+---+---+---+---+---+---+---+---+ +% 1 | l.c. specials | . .. | l.c. ligs, eszet, \i, \j | +% +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ +% 2 | * ! TM # $ % & ' ( ) | * + , - . / | +% +---+---+---+---+---+---+---+---+---+---+ + +% 3 | text/old style figures | : ; < = > ? | +% +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ +% 4 | @ | | +% +---+ large capitals +---+ +---+ + +% 5 | Z | [ | O | ] |AE OE | +% +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ +% 6 | ` | | +% +---+ lower case +---+ +---+ + +% 7 | | { | o | } |ae oe | +% +===+===+===+===+===+===+===+===+===+===+===+===+===+===+===+===+ +% 8 | m.cap specials | * * | marks that go above m.caps | +% + +---+---+---+---+---+---+---+---+---+---+ +% 9 | s.cap specials | - -- | really weird stuff | +% +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ +% A | !` c * * %% x '' Y f | * * ,, -- . / | +% +---+---+---+---+---+---+---+---+---+---+ + +% B | ranging figures |\S \P << --- >> ?` | +% +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ +% C | * | | +% +---+ medium capitals +---+ +---+ + +% D | | < | O | > |AE OE | +% +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ +% E |`` | | +% +---+ small capitals +---+ +---+ + +% F | |(C)| O |(R)|AE OE | +% +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ +%}}} +%{{{ 0-5, 16-21 -- special letters that appear in l.c. and caps + +% These have m.caps and s.caps equivs at +128 and +144: + +tmp := 0 - 1; +code.cap.thorn = incr tmp; code.lc.thorn = 16 + tmp; +code.cap.a.ogonek = incr tmp; code.lc.a.ogonek = 16 + tmp; +code.cap.eng = incr tmp; code.lc.eng = 16 + tmp; +code.cap.l.slash = incr tmp; code.lc.l.slash = 16 + tmp; +code.cap.eth = incr tmp; code.lc.eth = 16 + tmp; +code.cap.e.ogonek = incr tmp; code.lc.e.ogonek = 16 + tmp; +%}}} +%{{{ 6, 7, 8-15, 22, 23 -- MARKS + +% Marks are added to some letters to make compoite characters. +% Some that go above letters are drawn differently for m.caps and l.c. +% The l.c. version is also for s.caps, and the m.caps version for large caps. +% Dots, twodots, macron and maacron appear once only. + +tmp := 8 - 1; +% These have m.caps equivs at +128: +code.mk.acute = incr tmp; code.mk.Acute = tmp + 128; +code.mk.grave = incr tmp; code.mk.Grave = tmp + 128; +code.mk.circumflex = incr tmp; code.mk.Circumflex = tmp + 128; +code.mk.tilde = incr tmp; code.mk.Tilde = tmp + 128; +code.mk.ring = incr tmp; code.mk.Ring = tmp + 128; + +code.mk.hook = incr tmp; code.mk.Hook = tmp + 128; +% in Czech, called a h\'a\v{c}ek. AKA caron + +code.mk.breve = incr tmp; code.mk.Breve = tmp + 128; +code.mk.hungarian = incr tmp; code.mk.Hungarian = tmp + 128; +code.mk.cedilla = 6; code.mk.Cedilla = 128 + code.mk.cedilla; +code.mk.ogonek = 7; code.mk.Ogonek = 128 + code.mk.ogonek; + +% These appear once only: +code.mk.dot = 22; +code.mk.twodots = 23; +code.mk.macron = 22 + 128; +code.mk.maacron = 23 + 128; % macron for 2 chars + +%}}} +%{{{ 24-31 -- l.c.-only ligs and special letters + +tmp := 24 - 1; +code.lc.eszet = incr tmp; +code.lc.dotless_i = incr tmp; +code.lc.dotless_j = incr tmp; +code.lc.f.f = incr tmp; +code.lc.f.i = incr tmp; +code.lc.f.l = incr tmp; +code.lc.f.f.i = incr tmp; +code.lc.f.f.l = incr tmp; + +%}}} +%{{{ "!"-"?" -- symbols and punct + +% Most are as ASCII except for +% "" trademark -- this should encourage people to +% remember to use '' for double quote marks +% ' apostrophe (only) +% - hyphen (only) +% < > single guillemets +% 0123456789 old-style numerals + +input ascii +% defines a common ASCII subset + +code.bullet = 32; + +code.trademark = 34; % replaces doublequote (this is intentional) +code.hyphen = ASCII"-"; + +code.zero.old_style = ASCII"0"; % defines all old-style figures + +code.guillemet.single.left = ASCII"<"; +code.guillemet.single.right = ASCII">"; + +%}}} +%{{{ "A"-"Z", "a"-"z" etc. + +code.cap.o.slash = hex"5C"; code.lc.o.slash = hex"7C"; +code.cap.ae = hex"5E"; code.lc.ae = hex"7E"; +code.cap.oe = hex"5F"; code.lc.oe = hex"7F"; + +code.brace.left = 123; +code.brace.right= 125; + +%}}} +%{{{ 128-159 -- cap versions of 0-31 and extra syms + +code.mc.thorn = hex"80"; +code.mc.a.ogonek = hex"81"; +code.mc.eng = hex"82"; +code.mc.l.slash = hex"83"; +code.mc.eth = hex"84"; +code.mc.e.ogonek = hex"85"; +code.sc.thorn = hex"90"; +code.sc.a.ogonek = hex"91"; +code.sc.eng = hex"92"; +code.sc.l.slash = hex"93"; +code.sc.eth = hex"94"; +code.sc.e.ogonek = hex"95"; +code.ord_feminine = hex"98"; % Na. +code.ord_masculine = hex"99"; % No. +code.care_of = hex"9A"; % c/o +code.sp.lc.c = hex"9B"; % as in McDonald +code.lc.d.hook = hex"9C"; % d' -- Czech d with hook +code.lc.t.hook = hex"9D"; % t' -- Czech t with hook +code.lc.h.circumflex = hex"9E"; % \^h -- Esperanto hho +code.lc.l.hook = hex"9F"; % l' -- Slovakian? + +%}}} +%{{{ meta"!"..meta"?" -- symbols and more punct + +code.ballotbox = meta " "; +code.inv.exclam = meta "!"; % !` (should that be exclam.inv?) +code.cent = hex"A2"; +code.sterling = meta "#"; % \pounds +code.currency = meta "$"; % ISO 646 currency sign +code.per_thousand = meta "%"; +code.multiply = meta "&"; % as in 2x4 ... +code.yen = meta "("; +code.florin = meta ")"; +code.dbl.apostrophe = meta "'"; % '' +code.dagger = meta "*"; % \dag +code.dbl.dagger = meta "+"; % \ddag +code.dbl.comma = meta ","; % ,, +code.en_dash = meta "-"; % -- +code.cdot = meta "."; % $\cdot$ +code.minus_sign = meta "/"; % $-$ +code.zero = meta "0"; % ranging figures start here +code.section = meta ":"; % \S +code.paragraph = meta ";"; % \P +code.guillemet.left = meta "<"; % left-pointing french quote +code.em_dash = meta "="; % --- +code.guillemet.right = meta ">"; % right-pointing french quote +code.inv.question = meta "?"; % ?` + +%}}} +%{{{ meta"A"-meta"Z", meta"a"-meta"z" -- med caps, small caps + +code.degree = meta "@"; % as in angles etc. +code.dbl.inv.comma = meta "`"; % `` +code.copyright = meta "{"; +code.registered = meta "}"; +code.anglebr.left = meta "["; +code.anglebr.right = meta "]"; +code.mc.o.slash = hex"DC"; +code.mc.ae = hex"DE"; +code.mc.oe = hex"DF"; +code.sc.o.slash = hex"FC"; +code.sc.ae = hex"FE"; +code.sc.oe = hex"FF"; + +%}}} + +for i = ASCII"a" step 1 until ASCII"z": + scantokens ("code.lc." & char i) = i; + scantokens ("code.cap." & char i) = i - 32; + scantokens ("code.sc." & char i) = i + 128 - code.offset.SS; + scantokens ("code.mc." & char i) = i - 32 + 128 - code.offset.MS; +endfor + +font_coding_scheme "Malvern A " & maversion; +%}}} Malvern A + +% Local variables: +% fold-folded-p: t +% End: diff --git a/fonts/malvern/source/mabenc.mf b/fonts/malvern/source/mabenc.mf new file mode 100644 index 0000000000..b8c1d0318e --- /dev/null +++ b/fonts/malvern/source/mabenc.mf @@ -0,0 +1,134 @@ +% mabenc.mf 1.2.0 1994/10/11 -- Malvern encoding B +% Copyright 1994 P. Damian Cugley + +%%% @METAFONT-file { +%%% filename = "mabenc.mf", +%%% version = "1.2.0", +%%% date = "1994/10/11", +%%% package = "Malvern 1.2", +%%% author = "P. Damian Cugley", +%%% email = "damian.cugley@comlab.ox.ac.uk", +%%% address = "Oxford University Computing Laboratory, +%%% Parks Road, Oxford OX1 3QD, UK", +%%% codetable = "USASCII", +%%% keywords = "Malvern, METAFONT, font, typefont, TeX", +%%% supported = "Maybe", +%%% abstract = "Character programs for the Malvern +%%% font family, to be compiled using +%%% METAFONT into TFM files (for TeX) and +%%% GF files (for your printer driver).", +%%% dependencies = "other program files", +%%% } + +% See the Malvern Handbook (maman.tex) for more info about Malvern. +% This software is available freely but without warranty. +% See the file COPYING for details. + +%{{{ mabenc.mf +%{{{ arrows + +code.arrow.left = 0; +code.arrow.right = 1; +code.arrow.up = 2; +code.arrow.down = 3; +code.arrow.left_right = 4; +code.arrow.up_down = 5; +code.arrow.horiz_ex = 6; +code.arrow.vert_ex = 7; + +code.arrow.dbl.left = 128; +code.arrow.dbl.right = 129; +code.arrow.dbl.up = 130; +code.arrow.dbl.down = 131; +code.arrow.dbl.left_right = 132; +code.arrow.dbl.up_down = 133; +code.arrow.dbl.horizex = 134; +code.arrow.dbl.vertex = 135; +%}}} arrows +%{{{ lower case latin specials + +tmp := 64; +code.cap.thorn1 = incr tmp; +code.cap.eth1 = incr tmp; +code.cap.wyn = incr tmp; +code.cap.yogh = incr tmp; % one stroke +code.cap.yogh1 = incr tmp; % g-ish one + +tmp := 96; + +% Some letters used in printing Old English and the like: +code.lc.thorn1 = incr tmp; +code.lc.eth1 = incr tmp; +code.lc.wyn = incr tmp; +code.lc.yogh = incr tmp; % one stroke +code.lc.yogh1 = incr tmp; % g-ish one + +code.lc.c.h = incr tmp; % Fraktur +code.lc.c.k = incr tmp; % ditto +code.lc.c.t = incr tmp; % archaic link ligature +code.lc.f.t = incr tmp; +code.lc.ij = incr tmp; % ij letter not ligature? +code.lc.l.l = incr tmp; % Fraktur +code.lc.longs = incr tmp; % +code.lc.longs.i = incr tmp; +code.lc.longs.longs = incr tmp; +code.lc.longs.s = incr tmp; +code.lc.longs.t = incr tmp; +code.lc.s.t = incr tmp; % archaic link ligature +code.lc.longs.z = incr tmp; % Fraktur Eszet +code.lc.t.z = incr tmp; % Fraktur + +code.lc.schwa = incr tmp; % inverted e + +% variant letters -- Malvern-specific: + +code.lc.l1 = incr tmp; % l with curl at base +code.lc.l.acute1 = incr tmp; % ditto plus acute +code.lc.l.hook1 = incr tmp; % ditto plus hook +code.lc.l.slash1 = incr tmp; +code.lc.l.l1 = incr tmp; % +code.cap.m1 = inc tmp; + +%}}} lower case latin specials +% ASCII quote and quote.dbl care called ticks because +% quote is a reserved word + +code.space = ASCII " "; +code.tick.dbl = 34; +code.per_thousand_zero = ASCII "%"; % a Cork-ism +code.tick = ASCII "'"; +code.comma = ASCII ","; +code.ellipsis = ASCII "."; +code.fraction = ASCII "/"; + +code.zero.superior = ASCII"0"; + +code.divide = ASCII ":"; +code.less = ASCII "<"; +code.greater = ASCII ">"; + +code.backslash = ASCII "\"; +code.ascii.circumflex = ASCII "^"; +code.ascii.underscore = ASCII "_"; +code.backtick = ASCII "`"; + +code.vert = ASCII "|"; +code.swung_dash = ASCII "~"; + +numeric t; t = 160 - 1; +code.ascii.visible_space = incr t; +code.one_quarter = incr t; +code.one_half = incr t; +code.three_quarters = incr t; +code.logical_not = incr t; +code.gr.lc.mu = incr t; +code.ascii.broken_bar = incr t; + +code.zero.inferior = ASCII"0" + 128; + +font_coding_scheme "Malvern B " & maversion; +%}}} + +% Local variables: +% fold-folded-p: t +% End: diff --git a/fonts/malvern/source/macaps.mf b/fonts/malvern/source/macaps.mf new file mode 100644 index 0000000000..273764bf03 --- /dev/null +++ b/fonts/malvern/source/macaps.mf @@ -0,0 +1,348 @@ +% macaps.mf 1.2.0 94/10/11 -- capital letters program file +% Copyright 1991-4 P. Damian Cugley + +%%% @METAFONT-file { +%%% filename = "macaps.mf", +%%% version = "1.2.0", +%%% package = "Malvern 1.2", +%%% author = "P. Damian Cugley", +%%% email = "damian.cugley@comlab.ox.ac.uk", +%%% address = "Oxford University Computing Laboratory, +%%% Parks Road, Oxford OX1 3QD, UK", +%%% codetable = "USASCII", +%%% keywords = "Malvern, METAFONT, font, typefont, TeX", +%%% supported = "Maybe", +%%% abstract = "Character programs for the Malvern +%%% font family, to be compiled using +%%% METAFONT into TFM files (for TeX) and +%%% GF files (for your printer driver).", +%%% dependencies = "other program files", +%%% } + +% See the Malvern Handbook (maman.tex) for more info about Malvern. +% This software is available freely but without warranty. +% See the file COPYING for details. + +% This file produces capital letters of the Latin alphabet, including +% a couple of national letters like thorn and AE ligature. + +%{{{ macaps.mf + +set_cap_widths; + +if testing: endinput fi + +input maglcaps + +%{{{ L + +ma_cap(capcode.l, narrow_wd# + pn_adj#)(1,1/2); + box_points; + draw (x.l, y.t) -- (x.l, y.b) -- (x.r, y.b); +remember; + some_cap_marks(0.45[l,r]) l; +endchar; + +%}}} L +%{{{ D + +D_wd# := wide_wd# + pn_adj#; + +ma_cap(capcode.d, D_wd#)(1, O_sp); + D_stem; D_bowl.bowl(h, -d, r); set_ic_O; +if not no_co: +remember; + some_cap_marks(0.45[l,r]) D; +fi +endchar; + +%}}} D +%{{{ R + +ma_cap(capcode.r, max(2pn_wd# + 3u#, narrow_wd# + pn_adj#))(1,1/2); + P_stem; D_bowl.bowl(h, hround bot 0.5[-d, h], r); + z1tail = z4bowl; + z2tail = (lft r + ho, top -d - o); % bot right + draw z1tail -- z2tail; + labels(1tail, 2tail); + set_ic 0.9h#; charic := max(0, charic - 0.1(r# - l#)); +if not no_co: +remember; + some_cap_marks(0.5[l,r]) R; +fi +endchar; + +%}}} +%{{{ G + +ma_cap(capcode.g, wide_wd# + 2pn_adj#)(O_sp, 3/4); + draw_C(l, h, r, -d) 1/20; + x6 = x5; x7 = good.x 0.6[l,r]; + y6 = y7 = good.y (0.45[-d, h]); + draw z5 -- z6 -- z7; + labels(6,7); set_ic 0.95h#; +if not no_co: +remember; + some_cap_marks(0.6[l,r]) G; +fi +endchar; + +%}}} +%{{{ Y + +ma_cap(capcode.y, medium_wd# + 2pn_adj#)(1/2,1/2); + draw_Y(0.475[-d, h]); set_ic_tr; +remember; +if not no_co: + some_cap_marks(0.5w) Y; +fi +endchar; + +%}}} +%{{{ U + +ma_cap(capcode.u,medium_wd# + 2pn_adj#)(1,1); + lft x1 = lft x0 = l; rt x3 = rt x4 = r; + top y0 = top y4 = h + o; + bot z2 = (1/2[l,r], -d -o); + z1 = z2 + whatever*(-hratio,1); z3 = z2 + whatever*(hratio,1); + draw z0 --- z1 ... z2 ... z3 --- z4; + labels(0,1,2,3,4); set_ic_tr; +remember; +if not no_co: +some_cap_marks(1/2[l,r]) U; +similarly(code.co.U.ring); "Cap. U with ring"; + if cap_mark_t - h >= 4v: + % there is room to float the ring: + draw_clear_ring.ring(1/2[l,r], 1/2[h, cap_mark_t] - 1.5v - eps, 3u, 3v); + elseif cap_mark_t - h >= 3v: + draw_clear_ring.ring(1/2[l,r], h, 3u, 3v); + else: + % Not enough room -- squash the ring: + draw_joined_ring.ring(1/2[l,r], h, 3u, min(cap_mark_t - h + pn.ht - o, 3v)); + fi + charht := cap_mark_t#; +wug; +fi +endchar; +%}}} U +%{{{ C + +% Compressible pdc Mon. 6 May 1991 + +ma_cap(capcode.c, wide_wd# + 2pn_adj#)(O_sp, 1/3); + draw_C(l, h, r, -d) 1/16; set_ic 0.95h#; +remember; +if not no_co: + some_cap_marks(0.6[l,r]) C; +fi +similarly(code.C_cedilla); "cap C with cedilla"; + chardp := Cedilla_ht#; charht := cap_ht#; + draw_cedilla.cedilla(x2, 0, Cedilla_wd, Cedilla_ht); +wug; +endchar; + +%}}} +%{{{ S + +ma_cap(capcode.s, 0.9narrow_wd# + pn_adj#)(0.8,0.8); + draw_S(h, -d)(0.53, 0.075, 0.1); + set_ic_tr; charic := max(0, charic - 1/2u#); +remember; +if not no_co: + some_cap_marks(0.5[l,r]) S; +fi +similarly(code.S_cedilla); "cap S with cedilla"; + chardp := Cedilla_ht#; charht := cap_ht#; + draw_cedilla.cedilla(1/2[l,r], 0, Cedilla_wd, Cedilla_ht); +wug; +endchar; + +%}}} +if co_only: endinput; fi +%{{{ A-ogonek + +iff known capcode.a.ogonek: "Capital A with ogonek"; +ma_char(capcode.a.ogonek, wide_wd# + 3pn_adj#, height#, ogonek_dp#)(1/3,1/3); + A_body(true, false); + z1ogonek = z3; y2ogonek = 2/3[y1ogonek, y3ogonek]; + rt x2ogonek = lft x1ogonek - min(u, pn.wd); + if lft x2ogonek < 1/2[l,r]: x2ogonek := rt 1/2[l,r]; fi + x3ogonek = good.x (lft x2ogonek + 2.5u); + bot y3ogonek = vround -ogonek_dp; + draw hvarc(1ogonek,2ogonek) ... z3ogonek{right}; + labels(1ogonek, 2ogonek, 3ogonek); +endchar; + +%}}} A-ogonek +%{{{ E-ogonek + +iff known capcode.e.ogonek: "E with ogonek"; + +ma_cap(capcode.e.ogonek, narrow_wd# + pn_adj#)(1, 1/2); + rt x1 = rt x4 = r; lft x2 = lft x3 = lft x1bar = l; + top y1 = top y2 = h; bot y3 = bot y4 = 0; + y1bar = y2bar = 0.52h; x2bar = 4/5[l,r]; + draw z1 -- z2 -- z3 -- z4; draw z1bar -- z2bar; + set_ic_tr; + labels(1,2,3,4, 1bar, 2bar); + z1ogonek = z4; y2ogonek = 2/3[y1ogonek, y3ogonek]; + rt x2ogonek = lft x1ogonek - min(u, pn.wd); + if lft x2ogonek < 1/2[l,r]: x2ogonek := rt 1/2[l,r]; fi + x3ogonek = good.x (lft x2ogonek + 2.5u); + bot y3ogonek = vround -ogonek_dp; + draw hvarc(1ogonek,2ogonek) ... z3ogonek{right}; + labels(1ogonek, 2ogonek, 3ogonek); +endchar; + +%}}} E-ogonek +%{{{ AE and OE + +% - pdc Tue. 26 Feb. 1991 + +def draw_lig_E = + top y1mid = top y1bar = h; + y2mid = y2bar = good.y 0.55[-d, h]; + bot y3mid = bot y3bar = -d; + lft x1mid = lft x2mid = lft x3mid = hround (r - narrow_wd); + rt x1bar = rt x3bar = r; x2bar = good.x 4/5[x1mid, x1bar]; + draw z1bar -- z1mid -- z3mid -- z3bar; + draw z2mid -- z2bar; + labels(1mid, 2mid, 3mid, 1bar, 2bar, 3bar); set_ic_tr +enddef; + +if known capcode.ae: + "Cap. lig. AE"; + ma_char(capcode.ae, 3/4medium_wd# + narrow_wd#, height#, 0v#)(1/2,1/2); + draw_lig_E; + y1 = y1mid; y2 = y2mid; y3=y3mid; + x1 = x1mid - 2apex_adjust; lft x3 = l; z2 = whatever[z1, z3]; + draw z3 -- z1 -- z1mid; draw z2 -- z2mid; + labels(1, 2, 3); + endchar; +fi + +if known capcode.oe: + "Cap. lig. OE"; + ma_char(capcode.oe, 1/2width# + narrow_wd# + 1/2pn.wd#, + height#, 0v#)(1/2,1/2); + draw_lig_E; + x1 = x3 = lft x1mid ; y1 = y1mid; y3 = y3mid; + lft x2 = l; y2 = 1/2[-d, h]; + draw z1mid --- z1 .. z2 .. z3 --- z3mid; + labels(1,2,3); + endchar; +fi +%}}} +%{{{ ETH + +iff known capcode.eth: "Cap. Eth"; +ma_cap(capcode.eth, D_wd#)(1, O_sp); + D_stem; D_bowl.bowl(h, -d, r); + lft x3 = hround (x1 - 1/10(r - l) - 1/2pn.wd); + rt x4 = hround (x3 + 1/2(r - l)); + y3 = y4 = good.y (1/2[-d, h]); + draw z3 -- z4; + labels(3,4); set_ic_O; +endchar; + +%}}} +%{{{ F, L-bar + +if known capcode.f: + do_EFL(capcode.f, true, 0, 3/4, false); +fi + +if known capcode.l.slash: + "Cap. L with bar"; + do_EFL(capcode.l.slash, false, -1/4, 1/2, true); +fi + +%}}} +%{{{ Eng + +iff known capcode.eng: "Lappish cap. Eng"; +ma_char(capcode.eng, medium_wd# + 2pn_adj#, height#, 2/3desc_dp#)(1,1); + lft x1l = lft x2l = lft x3l = l; rt x1r = rt x2r = r; + top y1l = top y1r = h + o; bot y3l = - o; + bot y3r = bot y4r - 1/2v = -d - o; + x3r = 0.55[x2r, x4r]; x4r = 0.45[r,l]; + z2r = z3r + whatever*ne; z2l = z1r + whatever*ne; + draw z1l -- z3l; draw z2l -- z1r --- z2r ... z3r{left} ... z4r; + labels(1l, 2l, 3l, 1r, 2r, 3r, 4r, 5r); set_ic_tr; +endchar; + +%} }} +%{{{ Thorn + +iff known capcode.thorn: "Cap. Thorn"; +ma_cap(capcode.thorn, max(2pn_wd# + 3u#, narrow_wd# + pn_adj#))(1,1/2); + H_stem; D_bowl.bowl(0.85[-d,h], 0.35[-d, h], r); set_ic 0.75h#; +endchar; + +%}}} +%{{{ Q O/slash + +"Cap. Q"; +ma_char(capcode.q, O_wd#, height#, 1/6height#)(O_sp, O_sp); + draw_O; set_ic_O; + x1tail = x3 + 3u; y1tail = -d; draw z3 -- z1tail; +endchar; + +iff known capcode.o.slash: "Cap. O with slash"; +ma_char(capcode.o.slash, O_wd#, height#, 0v#)(O_sp, O_sp); + draw_O; draw_O_slash; set_ic_O; +endchar; + +%}}} +%{{{ V + +ma_cap(capcode.v, medium_wd# + 3pn_adj#)(1/3,1/3); + draw_V; set_ic_tr; +endchar; + +%}}} +%{{{ W + +"Cap. W"; +ma_char(capcode.w, 1.2width# + 2pn_adj#, height#, 0pt#)(1/3,1/3); + if 1/2w <> apex.x 1/2w: change_width; fi + lft x1 = w - rt x5 = l; top y1 = top y5 = h + o; + bot y2 = bot y4 = -d; + x3 = 1/2[x1,x5]; y3 = good.y 4/5[-d,h]; + x2 = w - x4 = apex.x (y3 / (y3 + y1))[l,1/2[l,r]]; + draw z1 -- vpex_path2 -- apex_path3 -- vpex_path4 -- z5; + labels(1, 2, 3, 4, 5); set_ic_tr; +endchar; + +%}}} W +%{{{ J + +"Cap. J"; +ma_char(capcode.j, 0.5width# + pn_adj#, height#, 0pt#)(1/3,1); + rt x1 = rt x2 = r; top y1 = h + o; + x3 = 1/2[r, l]; bot y3 = -d - o; + z2 = z3 + whatever*(hratio,1); + lft x4 = l; y4 = 1/8[-d, h]; + draw z1 --- z2 .. z3 .. z4; + labels(1,2,3,4); set_ic_tr; +remember; +if not no_co: + some_cap_marks(lft r) J; +fi +if not co_only: +similarly(capcode.ij); "IJ ligature"; + charwd := charwd + pn.wd# + 4/3sp#; + interim xoffset := pn.wd + hround(7/3sp#*hppp); + lft x1I = lft x0I = hround(-xoffset + sp); + top y0I = h + o; bot y1I = -d - o; + draw z0I -- z1I; +fi +endchar; + +%}}} +%}}} macaps + +%Local variables: +%fold-folded-p: t +%End: diff --git a/fonts/malvern/source/macenc.mf b/fonts/malvern/source/macenc.mf new file mode 100644 index 0000000000..24a4a5e7eb --- /dev/null +++ b/fonts/malvern/source/macenc.mf @@ -0,0 +1,227 @@ +% macenc.mf 1.2.0 1994/10/11 -- Malvern encoding C (Cyrillic) +% Copyright 1994 P. Damian Cugley + +%%% @METAFONT-file { +%%% filename = "macenc.mf", +%%% version = "1.2.0", +%%% date = "1994/10/11", +%%% package = "Malvern 1.2", +%%% author = "P. Damian Cugley", +%%% email = "damian.cugley@comlab.ox.ac.uk", +%%% address = "Oxford University Computing Laboratory, +%%% Parks Road, Oxford OX1 3QD, UK", +%%% codetable = "USASCII", +%%% keywords = "Malvern, METAFONT, font, typefont, TeX", +%%% supported = "Maybe", +%%% abstract = "Encoding definition for the Malvern +%%% font family.", +%%% dependencies = "other program files", +%%% } + +% See the Malvern Handbook (maman.tex) for more info about Malvern. +% This software is available freely but without warranty. +% See the file COPYING for details. + +%{{{ macenc.mf +% no idea how to name the Cyrillic letters, sorry, so I am using the +% transliterations in my dictionaries. +% The encoding is based on the various *CYR10 fonts. +% +%{{{ alphabets + +code.cy.cap.nj = 0; % macedonian +code.cy.cap.lj = 1; % serbian +code.cy.cap.dz_hook = 2; % macedonian +code.cy.cap.e_acute = 3; +code.cy.cap.old_i = 4; % pre-1918 russian +code.cy.cap.ye = 5; % ukranian +code.cy.cap.d_bar = 6; % serbian +code.cy.cap.c_acute = 7; % serbian +code.cy.lc.nj = 8; % macedonian +code.cy.lc.lj = 9; % serbian +code.cy.lc.dz_hook = 10; % macedonian +code.cy.lc.e_acute = 11; +code.cy.lc.old_i = 12; % pre-1918 russian +code.cy.lc.ye = 13; % ukranian +code.cy.lc.d_bar = 14; % serbian +code.cy.lc.c_acute = 15; % serbian +code.cy.cap.yu = 16; +code.cy.cap.zh = 17; +code.cy.cap.i_breve = 18; % * +code.cy.cap.e_twodots = 19; % * obselete? +code.cy.cap.upsilon = 20; % * pre-1918, > i +code.cy.cap.theta = 21; % * pre-1918, > f +code.cy.cap.dz = 22; % macedonian +code.cy.cap.ya = 23; +code.cy.lc.yu = 24; +code.cy.lc.zh = 25; +code.cy.lc.i_breve = 26; % * +code.cy.lc.e_twodots = 27; % * obselete? +code.cy.lc.upsilon = 28; % * pre-1918, > i +code.cy.lc.theta = 29; % * pre-1918, > f +code.cy.lc.dz = 30; % macedonian +code.cy.lc.ya = 31; +code.cy.cap.old_e = 35; % * pre-1918, > e +code.cy.lc.old_e = 43; % * pre-1918, > e +code.cy.cap.g_acute = 128; % * macedonian +code.cy.cap.k_acute = 129; % * macedonian +code.cy.cap.i_twodots = 130; % * ukranian +code.cy.cap.old_g = 131; % * ukranian, obselete +code.cy.cap.w = 132; % * belorussian +code.cy.lc.g_acute = 136; % * macedonian +code.cy.lc.k_acute = 137; % * macedonian +code.cy.lc.i_twodots = 138; % * ukranian +code.cy.lc.old_g = 139; % * ukranian, obselete +code.cy.lc.w = 140; % * belorussian + +code.cy.lc.a = ASCII"a"; +code.cy.lc.b = ASCII"b"; +code.cy.lc.ts = ASCII"c"; % (like esperanto c!) +code.cy.lc.d = ASCII"d"; +code.cy.lc.e = ASCII"e"; +code.cy.lc.f = ASCII"f"; +code.cy.lc.g = ASCII"g"; +code.cy.lc.kh = ASCII"h"; +code.cy.lc.i = ASCII"i"; +code.cy.lc.j = ASCII"j"; % serbian +code.cy.lc.k = ASCII"k"; +code.cy.lc.l = ASCII"l"; +code.cy.lc.m = ASCII"m"; +code.cy.lc.n = ASCII"n"; +code.cy.lc.o = ASCII"o"; +code.cy.lc.p = ASCII"p"; +code.cy.lc.ch = ASCII"q"; +code.cy.lc.r = ASCII"r"; +code.cy.lc.s = ASCII"s"; +code.cy.lc.t = ASCII"t"; +code.cy.lc.u = ASCII"u"; +code.cy.lc.v = ASCII"v"; % actually 3rd letter of alfabet.. +code.cy.lc.shch = ASCII"w"; +code.cy.lc.sh = ASCII"x"; +code.cy.lc.y = ASCII"y"; +code.cy.lc.z = ASCII"z"; % actually 9th letter of alphabet +code.cy.lc.soft_sign = ASCII"~"; % ' +code.cy.lc.hard_sign = 127; % '' + +code.cy.cap.a = ASCII"A"; +code.cy.cap.b = ASCII"B"; +code.cy.cap.ts = ASCII"C"; % (like Esperanto c!) +code.cy.cap.d = ASCII"D"; +code.cy.cap.e = ASCII"E"; +code.cy.cap.f = ASCII"F"; +code.cy.cap.g = ASCII"G"; +code.cy.cap.kh = ASCII"H"; +code.cy.cap.i = ASCII"I"; +code.cy.cap.j = ASCII"J"; % Serbian +code.cy.cap.k = ASCII"K"; +code.cy.cap.l = ASCII"L"; +code.cy.cap.m = ASCII"M"; +code.cy.cap.n = ASCII"N"; +code.cy.cap.o = ASCII"O"; +code.cy.cap.p = ASCII"P"; +code.cy.cap.ch = ASCII"Q"; +code.cy.cap.r = ASCII"R"; +code.cy.cap.s = ASCII"S"; +code.cy.cap.t = ASCII"T"; +code.cy.cap.u = ASCII"U"; +code.cy.cap.v = ASCII"V"; % actually 3rd letter of alfabet.. +code.cy.cap.shch = ASCII"W"; +code.cy.cap.sh = ASCII"X"; +code.cy.cap.y = ASCII"Y"; +code.cy.cap.z = ASCII"Z"; % actually 9th letter of alphabet +code.cy.cap.soft_sign = ASCII"^"; % ' +code.cy.cap.hard_sign = ASCII"_"; % '' +%}}} alphabets +%{{{ substitutions2 + +% Substitute similar latin or greek letters. Some letters like +% cy.cap.k, cy.cap.r, cy.cap.u are normally drawn slightly differently +% from their latin sijmilars cap.k, cap.p, cap.y, but these will +% do for now. + +vardef subst(suffix $, $$) = + if unknown code$: code$ := code.cy$$; fi +enddef; + +% forsuffixes $=y,j: subst(cap$,cap$); endfor +forsuffixes $=e,y,j: subst(lc$,lc$); endfor + +% subst(cap.c, cap.s); +% subst(cap.s, cap.dz); +% subst(cap.v, cap.upsilon); % not a great match +subst(cap.e.twodots, cap.e_twodots); +subst(gr.cap.alpha, cap.a); +subst(gr.cap.beta, cap.v); +subst(gr.cap.chi, cap.kh); +subst(gr.cap.epsilon, cap.e); +subst(gr.cap.eta, cap.n); +subst(gr.cap.gamma, cap.g); +subst(gr.cap.iota, cap.old_i); +subst(gr.cap.kappa, cap.k); +subst(gr.cap.mu, cap.m); +subst(gr.cap.omicron, cap.o); +subst(gr.cap.phi, cap.f); +subst(gr.cap.rho, cap.r); + +subst(lc.a, lc.a); +subst(sc.b, lc.v); +if italic: subst(lc.eth, lc.d); fi +subst(lc.e, lc.e); +subst(lc.e.twodots, lc.e_twodots); +subst(lc.sc.h, lc.n); +subst(gr.lc.omicron, lc.o); +if italic: subst(lc.n, lc.p); fi +subst(gr.lc.rho, lc.r); +subst(lc.c, lc.s); +if italic: subst(lc.m, lc.t); fi +subst(lc.y, lc.u); +subst(gr.lc.phi, lc.f); +subst(lc.x, lc.kh); +subst(lc.i, lc.old_i); +subst(lc.v, lc.upsilon); +subst(lc.y.breve, lc.w); +subst(lc.j, lc.j); +subst(lc.i.twodots, lc.i_twodots); + + +%}}} substitutions +%{{{ digits, punctuation, symbols + +code.mk.twodots = ASCII" "; +code.exclam = ASCII"!"; +code.dbl.apostrophe = ASCII ditto; +code.mk.breve = ASCII"$"; +code.percent = ASCII"%"; +code.mk.acute = ASCII"&"; +code.apostrophe = ASCII"'"; +code.paren.left = ASCII"("; +code.paren.right = ASCII")"; +code.asterisk6 = ASCII"*"; +code.comma = ASCII","; +code.hyphen = ASCII"-"; +code.full_stop = ASCII"."; +code.slash = ASCII"/"; +code.zero = ASCII"0"; +code.colon = ASCII":"; +code.semicolon = ASCII";"; +code.guillemet.left = ASCII"<"; +code.lc.dotless_i = ASCII "="; +code.guillemet.right = ASCII">"; +code.question = ASCII"?"; +code.mk.breve1 = ASCII"@"; +code.brack.left = ASCII"["; +code.brack.right = ASCII"]"; +code.dbl.inv.comma = ASCII"\"; +code.inv.comma = ASCII"`"; +code.en_dash = 121; +code.em_dash = 122; +code.numero = 123; + +%}}} digits, punctuation, symbols +font_coding_scheme "Malvern C " & maversion; + +%}}} + +% Local variables: +% fold-folded-p: t +% End: diff --git a/fonts/malvern/source/macy.mf b/fonts/malvern/source/macy.mf new file mode 100644 index 0000000000..3fd94850fe --- /dev/null +++ b/fonts/malvern/source/macy.mf @@ -0,0 +1,279 @@ +% macy.mf 1.2.0 94/10/11 -- Cyrillic letters +% Copyright 1994 P. Damian Cugley + +%%% @METAFONT-file { +%%% filename = "macy.mf", +%%% version = "1.2.0", +%%% date = "1994/10/11", +%%% package = "Malvern 1.2", +%%% author = "P. Damian Cugley", +%%% email = "damian.cugley@comlab.ox.ac.uk", +%%% address = "Oxford University Computing Laboratory, +%%% Parks Road, Oxford OX1 3QD, UK", +%%% codetable = "USASCII", +%%% keywords = "Malvern, METAFONT, font, typefont, TeX", +%%% supported = "Maybe", +%%% abstract = "Character programs for the Malvern +%%% font family.", +%%% dependencies = "other program files", +%%% } + +% See the Malvern Handbook (maman.tex) for more info about Malvern. +% This software is available freely but without warranty. +% See the file COPYING for details. + +%{{{ macy.mf +%{{{ kit +%{{{ heights etc for caps & lc + +cap.height# := cap_ht#; +cap.narrow_wd# := 6.5u#; +cap.medium_wd# := 8u#; +cap.wide_wd# := 12u#; +cap.tail_dp# := 2v#; + +lc.height# := x_ht#; +lc.narrow_wd# := 5u#; +lc.medium_wd# := 6u#; +lc.wide_wd# := 9u#; +lc.tail_dp# := 2v#; + +pn_adj# := pn.wd# - u#; + +string cap.case, lc.case; +cap.case = "capital"; +lc.case = "lower case"; +%}}} heights etc for caps & lc +%{{{ macro to start a char + +def ma_cy_char(expr pre)(suffix $$, ##) = + if pre <> "": pre & " " & fi + "Cyrillic " & $$case & " " & str ##; + ma_char(code.cy.$$.##) +enddef; +%}}} macro to start a char +%{{{ loop for rhs of several letters + +vardef cy_loop@#(expr leftx, rightx) = + top y1@# = h + o; + lft x1@# = lft x2@# = lft x6@# = hround leftx; + rt x4@# = hround rightx; + if italic: + bot y3@# = -d - o; y2@# = y3@# + 1/12h; + top y5@# = 2/3[-d, h]; y6@# = y5@# - 1/12h; + else: + bot y3@# = bot y2@# = -d; + top y5@# = top y6@# = 2/3[-d, h]; + fi + y4@# = 1/2[y3@#, y5@#]; + z5@# = z4@# + whatever * se; x3@# = x5@#; + draw z1@# -- z2@# ... z3@#{right} ... z4@#{up} ... z5@#{left} ... z6@#; + labels(1@#, 2@#, 3@#, 4@#, 5@#); +enddef; +%}}} loop for rhs of several letters +%}}} kit + +forsuffixes $$ = cap: + +endfor + + +if testing: endinput fi + +forsuffixes $$ = cap, lc: + +%{{{ D + +ma_cy_char("", $$, d)($$medium_wd# + 2pn_adj#, $$height#, $$tail_dp#)(1,1) + bot lft z1 = (l, 0); bot rt z2 = (r, 0); + top rt z3 = (r, h); top lft z4 = (0.3[l,r], h); + draw z1 -- z2 -- z3 -- z4 -- cycle; + bot lft z1tail = (l, -d - o); bot rt z2tail = (r, -d - o); + draw z1 -- z1tail; draw z2 -- z2tail; + labels(1,2,3,4, 1tail, 2tail); +endchar; + +%}}} D +%{{{ L + + +ma_cy_char("", $$, l)($$medium_wd# + 2pn_adj#, $$height#, 0v#)(1,1) + bot lft z1 = (l, 0); bot rt z2 = (r, 0); + top rt z3 = (r, h); top lft z4 = (0.3[l,r], h); + draw z1 -- z4 -- z3 -- z2; + labels(1,2,3,4); +endchar; + +%}}} L +%{{{ TS + +ma_cy_char("", $$, ts)($$medium_wd# + 2pn_adj#, $$height#, $$tail_dp#)(1,1) + top lft z1 = (l, h + o); top rt z4 = (r, h + o); + bot lft z2 = (l, 0); bot rt z3 = (r, 0); bot rt z5 = (r, -d - o); + draw z1 -- z2 -- z3; draw z4 -- z5; + labels(1,2,3,4,5); set_ic_tr; +endchar; + +%}}} TS +%{{{ SHCH + + +ma_cy_char("", $$, shch)($$wide_wd# + 2pn_adj#, $$height#, $$tail_dp#)(1,1) + if 1/2w <> good.x (1/2w): change_width; fi + top lft z1 = (l, h + o); top rt z4 = (r, h + o); + bot lft z2 = (l, 0); bot rt z3 = (r, 0); bot rt z5 = (r, -d - o); + z6 = 1/2[z1,z4]; z7 = 1/2[z2,z3]; + draw z1 -- z2 -- z3; draw z4 -- z5; draw z6 -- z7; + labels(1,2,3,4,5,6,7); set_ic_tr; +endchar; + +%}}} SHCH +%{{{ SH + + +ma_cy_char("", $$, sh)($$wide_wd# + 2pn_adj#, $$height#, 0v#)(1,1) + if 1/2w <> good.x (1/2w): change_width; fi + top lft z1 = (l, h + o); top rt z4 = (r, h + o); + bot lft z2 = (l, 0); bot rt z3 = (r, 0); + z6 = 1/2[z1,z4]; z7 = 1/2[z2,z3]; + draw z1 -- z2 -- z3 -- z4; draw z6 -- z7; + labels(1,2,3,4,6,7); set_ic_tr; +endchar; + +%}}} SH +%{{{ DZ-hook + +ma_cy_char("Macedonian", $$, dz_hook) + ($$medium_wd# + 2pn_adj#, $$height#, $$tail_dp#)(1,1) + if 1/2w <> good.x (1/2w): change_width; fi + top lft z1 = (l, h + o); top rt z4 = (r, h + o); + bot lft z2 = (l, 0); bot rt z3 = (r, 0); + z5 = (1/2[l,r], 0); bot z6 = (1/2[l,r], -d - o); + draw z1 -- z2 -- z3 -- z4; draw z5 -- z6; + labels(1,2,3,4,5,6); set_ic_tr; +endchar; + +%}}} DZ-hook +%{{{ I + +ma_cy_char("", $$, i)($$medium_wd#, $$height#, 0pt#)(1,1) + top lft z1l = (l, h + o); top rt z1r = (r, h + o); + bot lft z2l = (l, 0 - o); bot rt z2r = (r, 0 - o); + z1join = z2l + whatever * ne; x1join = x1r; + draw z1l -- z2l -- z1join; draw z1r -- z2r; + set_ic_tr; labels(1l,1r,2l,2r,1join); +endchar; + +%}}} I +%{{{ P + +ma_cy_char("", $$, p)($$medium_wd#, $$height#, 0pt#)(1,1); + bot lft z1 = (l, 0 - o); top lft z2 = (l , h); + top rt z3 = (r, h); bot rt z4 = (r, 0 - o); + draw z1 -- z2 -- z3 -- z4; + labels(1,2,3,4); set_ic_tr; +endchar; +%}}} P +%{{{ CH + +ma_cy_char("", $$, ch)($$medium_wd#, $$height#, 0pt#)(1/2,1); + top rt z1r = (r, h + o); bot rt z2r = (r, -o); + top lft z1l = (l, h + o); x2l = x1l; + bot y3l = 1/3h; % bottom tangent of bowl + bot rt z4l = (r, bot y3l + 0.5v); % where it joins stem + z3l = z2l + whatever * se; % make circular curve + x3l = 0.55[x1l, x1r]; + draw z1l --- z2l{down} ... z3l{right} ... z4l; + draw z1r -- z2r; + labels(1l, 2l, 3l, 4l, 1r, 2r); set_ic_tr; +endchar; + +%}}} CH +%{{{ T + +% This is one that looks different in Kursiv +ma_cy_char("", $$, t)($$medium_wd#, $$height#, 0pt#)(1/3,1/3); + if 1/2w <> good.x (1/2w): change_width; fi + top lft z1t = (l, h); top rt z2t = (r, h); + z1s = 1/2[z1t, z2t]; bot z2s = (x1s, 0 - o); + draw z1t -- z2t; draw z1s -- z2s; + set_ic_tr; labels(1t, 2t, 1s, 2s); +endchar; + +%}}} T +%{{{ YE/E-acute + +ma_cy_char("Ukranian", $$, ye) + (4/5$$height# * hratio + 2pn_adj#, $$height#, 0pt#)(1/3, 1/2); + draw_C.c(l, h, r, -d) 1/16; + z1bar = z3c; y2bar = y1bar; rt x2bar = 0.9[x3c, x1c]; + draw z1bar -- z2bar; + set_ic 0.95h#; +remember; +similarly(code.cy$$E_acute) + "Cyrillic " & $$case & " E-acute"; + currentpicture := currentpicture reflectedabout + ((1/2w,0), (1/2w,h)); % this effectively transposes the sidebearings +wug; +endchar; + +%}}} YE/E-acute +%{{{ Hard/Soft/Y + +ma_cy_char("", $$, soft_sign) + ($$medium_wd# + 2pn_adj#, $$height#, 0pt#)(1, 1/2); + cy_loop(l, r); +endchar; + +ma_cy_char("", $$, hard_sign) + ($$medium_wd# + 2u# + 2pn_adj#, $$height#, 0pt#)(1/3, 1/2); + cy_loop(l + 2u, r); + lft z0 = (l, y1); + draw z0 -- z1; +endchar; + +ma_cy_char("", $$, y) + ($$medium_wd# + u# + pn.wd# + 2pn_adj#, $$height#, 0pt#)(1, 1); + cy_loop(l, r - u - pn.wd); + top rt z1r = (r, h + o); bot rt z2r = (r, 0 - o); + draw z1r -- z2r; labels(1r, 2r); set_ic_tr; +endchar; + +%}}} Hard/Soft/Y +%{{{ Z + +ma_cy_char("",$$,z)($$narrow_wd#, $$height#, 0pt#)(1/2,1/2); + lft x1 = lft x8 = l; rt x6 = r; + top y2 = h + o; bot y7 = -d - o; + x2 = x7 = 0.45[x1, x6]; % top & bot tangents + y5 = y4 = good.y (0.55[y7, y2]); % height of join + y3 = 1/2[y2,y4]; y6 = 1/2[y4, y7]; + y1 = y2 - 1/16h; y8 = y7 + 1/16h; + x4 = x2 + 1v; lft x5 = 0.2[x1, x6]; + x3 = good.x (x6 - 1/2u); + draw z1 ... z2{right} ... z3{down} ... z4 -- z5 + -- z4 ... z6{down} ... z7{left} .. z8; + labels(1,2,3,4,5,6,7,8); set_ic 0.85$$height#; +endchar; + +%}}} Z +%{{{ Macedonian NJ + +ma_cy_char("Macedonian", $$, nj)($$wide_wd#, $$height#, 0pt#)(1,1/2); + top lft z1l = (l, h + o); bot lft z2l = (l, 0 - o);% left stem + cy_loop.loop(lft 1/2[l,r], r); + z.join = (x1l, y6loop); + draw z1l -- z2l; draw z.join -- z6loop; + labels(1l, 2l, join); +endchar; + +%}}} Macedonian NJ +endfor + +%}}} macy.mf + + +%Local variables: +%fold-folded-p: t +%End: + diff --git a/fonts/malvern/source/maeenc.mf b/fonts/malvern/source/maeenc.mf new file mode 100644 index 0000000000..91c0fb5a32 --- /dev/null +++ b/fonts/malvern/source/maeenc.mf @@ -0,0 +1,79 @@ +% maeenc.mf 1.2.0 1994/10/11 -- Malvern composite letters encoding +% Copyright 1994 P. Damian Cugley + +%%% @METAFONT-file { +%%% filename = "maeenc.mf", +%%% version = "1.2.0", +%%% date = "1994/10/11", +%%% package = "Malvern 1.2", +%%% author = "P. Damian Cugley", +%%% email = "damian.cugley@comlab.ox.ac.uk", +%%% address = "Oxford University Computing Laboratory, +%%% Parks Road, Oxford OX1 3QD, UK", +%%% codetable = "USASCII", +%%% keywords = "Malvern, METAFONT, font, typefont, TeX", +%%% supported = "Maybe", +%%% abstract = "Encoding definition for the Malvern +%%% font family.", +%%% dependencies = "other program files", +%%% } + +% See the Malvern Handbook (maman.tex) for more info about Malvern. +% This software is available freely but without warranty. +% See the file COPYING for details. + +%{{{ maeenc.mf + +% This file is in a bit of a mess -- needs an overhaul. +% I haven't bothered because I have no particular use for +% this font. + +tmp := 0; +def def_composite(suffix @#)text t = + forsuffixes $$ = t: + code.cap.@#.$$ = tmp; + code.lc.@#.$$ = tmp + 32; + code.mc.@#.$$ = tmp + 128; + code.sc.@#.$$ = tmp + 128 + 32; + tmp := tmp + 1; if tmp = 32:tmp := 64; fi + endfor +enddef; + +co_only := true; + +%code.mcap.A = 0; +code.lc.a= code.a = 64; +%code.A = 128; +%code.scap.A = 128 + 64; + +%code.offset.LC = 32; +%code.offset.MC = 32 + 128; +%code.offset.SC = 32 + 128 + 64; + +def_composite(a) acute, grave, circumflex, tilde, ring, breve, twodots; +def_composite(c) acute, circumflex, hook, cedilla; +def_composite(d) hook, bar; +def_composite(e) acute, grave, circumflex, hook, twodots; +def_composite(g) circumflex, breve; +def_composite(h) circumflex; +def_composite(i) acute, grave, circumflex, dot, breve, twodots; +def_composite(j) circumflex; +def_composite(l) acute, hook; +def_composite(n) acute, tilde, hook; +def_composite(o) acute, grave, circumflex, tilde, hungarian, twodots, cdot; +def_composite(r) acute, hook; +def_composite(s) acute, circumflex, hook, cedilla; +def_composite(t) hook, cedilla; +def_composite(u) acute, grave, circumflex, ring, breve, hungarian, twodots; +def_composite(w) circumflex; +def_composite(y) acute, circumflex, twodots, macron; +def_composite(z) acute, hook, dot; +def_composite() ij; + +font_coding_scheme "Malvern D " & maversion; + +%}}} + +% Local variables: +% fold-folded-p: t +% End: diff --git a/fonts/malvern/source/maencode.mf b/fonts/malvern/source/maencode.mf new file mode 100644 index 0000000000..0860ad6c66 --- /dev/null +++ b/fonts/malvern/source/maencode.mf @@ -0,0 +1,68 @@ +% maencode.mf 1.2.0 94/10/11 -- Malvern Encoding +% Copyright 1991, 1992, 1994 P. Damian Cugley + +%%% @METAFONT-file { +%%% filename = "maencode.mf", +%%% version = "1.2.0", +%%% date = "1994/10/11", +%%% package = "Malvern 1.2", +%%% author = "P. Damian Cugley", +%%% email = "damian.cugley@comlab.ox.ac.uk", +%%% address = "Oxford University Computing Laboratory, +%%% Parks Road, Oxford OX1 3QD, UK", +%%% codetable = "USASCII", +%%% keywords = "Malvern, METAFONT, font, typefont, TeX", +%%% supported = "Maybe", +%%% abstract = "Get the right encoding definition for the Malvern +%%% font family.", +%%% dependencies = "ma*enc.mf", +%%% } + +% See the Malvern Handbook (maman.tex) for more info about Malvern. +% This software is available freely but without warranty. +% See the file COPYING for details. + +%{{{ maencode.mf 1.2.0 1994/10/11 + +% If it is important to distinguish different versions of the Malvern +% encoding, append the Malvern package version number, e.g., Malvern A 1.0. + +% 19 S TeX text (like CMR12) +% 26 AZ TxT Text, old-stye figures +% 1 A letters, digits, punctuation, usual symbols +% 2 B symbols & dingbats & sup figs. +% 3 C Cyrillic +% 4 E just composite letters +% 7 G greek + +vardef meta primary s = 128 + byte s enddef; + +boolean co_only; co_only := false; + +if unknown encoding: encoding := 19; fi +if encoding = 1: + input maaenc +elseif encoding = 2: + input mabenc +elseif encoding = 3: + input macenc +elseif encoding = 5: + input maeenc +elseif encoding = 7: + input magenc +elseif (encoding = 19) or (encoding = 26): + input masenc +fi + +if new_mf: + if known code.frac_slash: boundarychar := code.frac_slash; + elseif known code.cwm: boundarychar := code.cwm; + else: boundarychar := 127; + fi +fi + +%}}} maencode.mf + +%Local variables: +%fold-folded-p: t +%End: diff --git a/fonts/malvern/source/mafigs.mf b/fonts/malvern/source/mafigs.mf new file mode 100644 index 0000000000..a256f78150 --- /dev/null +++ b/fonts/malvern/source/mafigs.mf @@ -0,0 +1,230 @@ +% mafigs.mf 1.2.0 1994/10/11 -- program file for figures +% Copyright 1991, 1992, 1993 P. Damian Cugley. + +%%% @METAFONT-file { +%%% filename = "mafigs.mf", +%%% version = "1.2.0", +%%% date = "1994/10/11", +%%% package = "Malvern 1.2", +%%% author = "P. Damian Cugley", +%%% email = "damian.cugley@comlab.ox.ac.uk", +%%% address = "Oxford University Computing Laboratory, +%%% Parks Road, Oxford OX1 3QD, UK", +%%% codetable = "USASCII", +%%% keywords = "Malvern, METAFONT, font, typefont, TeX", +%%% supported = "Maybe", +%%% abstract = "Character programs for the Malvern +%%% font family.", +%%% dependencies = "other program files", +%%% } + +% See the Malvern Handbook (maman.tex) for more info about Malvern. +% This software is available freely but without warranty. +% See the file COPYING for details. + +% This file is read in more than once in order to create several sets +% of figures: old-style (`text'), ranging, and maybe superior (superscript) +% and inferior (subscript). To do this several parameters set in +% ma.mf must be set correctly. + +%{{{ mafigs.mf +%{{{ macro to start each character with + +% So that each program can generate `superior' figures as well as +% text and ranging figures, they refer to |fig_b| instead of |-d|. +% For text figures this is set to |-d|. For others it must be set +% before the |input mafigs| command. + +string type_of_figs; +type_of_figs := + if text_figs: "old style" + elseif fig_b > 0: "superior" % footnotes etc. + elseif fig_b < 0: "inferior" + else: "ranging" % fixed width and height + fi; + +if (fig_b > 0) or (fig_ht# < x_ht#) and unknown sfig_pn: + small_figs := true; + pickup pencircle xscaled sfig.pn.wd yscaled sfig.pn.ht; + fig_pn := savepen; +fi + +def ma_fig(expr num)(expr w_sh, h_sh, d_sh) = + type_of_figs & " figure " & char(ASCII"0" + num); + ma_char(fig_offset + num, + if text_figs: w_sh, h_sh, d_sh + else: fig_wd#, fig_ht#, fig_dp# fi) + (1,1); + if text_figs: fig_b := -d; fi + if known fig_pn: pickup fig_pn; fi +enddef; +%}}} + +def hsuper(suffix f, t) = + z.f + ... (1/sqrt2)[(x.f, y.t), (x.t, y.f)]{z.t - z.f} + ... z.t +enddef; + +def vsuper(suffix f, t) = + z.f + ... (1/sqrt2)[(x.t, y.f), (x.f, y.t)]{z.t - z.f} + ... z.t +enddef; + +if testing: endinput; fi + +%{{{ 1 + +% - pdc Mon. 25 Feb. 1991 + +ma_fig(1, 4u#, x_ht#, 0v#); + top z1 = (hround (1/2w + 1/2u), h + o); bot z2 = (x1, fig_b - o); + z0 = z1 + whatever*ne; x0 = x1 - 2u; + draw z0 -- z1 -- z2; + labels(0,1,2); set_ic_tr; +endchar; +%}}} +%{{{ 0 + +ma_fig(0, 8u#, x_ht#, 0v#); + top z1 = (1/2[l,r], h + o); bot z4 = (x1, fig_b - o); + lft x2 = lft x3 = l; rt x0 = rt x5 = r; + if x0 - x2 < y1 - y4: + y2 = y0 = 2/3[1/2[fig_b, h] + eps, y1 - 1/2(x0 - x2)]; + y3 = y5 = 2/3[1/2[fig_b, h] - eps, y4 + 1/2(x0 - x2)]; + draw vsuper(0,1) & hsuper(1,2) --- vsuper(3,4) & hsuper(4,5) --- cycle; + else: + y2 = y0 = 1/2[y4, y1]; + draw superellipse(z0, z1, z2, z4)(1/sqrt2); + fi + labels(1, 2, 3, 4, 5, 0); set_ic_tr; +endchar; + +%}}} +%{{{ 3 & 5 + +def draw_fivthree = + rt z4 = (r, 1/2[y3,y5]); + bot z5 = (0.55[r,l], fig_b - o); + bot lft z6 = (l, good.y (fig_b - o + 1/2v)); + draw z1 -- z2 -- z3 ... hsuper(3',4){down} & vsuper(4,5){left} + & hsuper(5,6); + labels(1,2,3,3',4,5,6) +enddef; + +ma_fig(5, 7.25u#, x_ht#, desc_dp#); + top rt z1 = (good.x 0.8[l,r], h); + top lft z2 = (good.x 0.1[l,r], h); + top y3 + if r - l > 5u: 1/4v else: 1/8v fi = top y3' + = if text_figs: 0.708[fig_b,h] else: 2/3[fig_b,h] fi; + x3 = x2; x3' = x5; + draw_fivthree; +endchar; + +ma_fig(3, 7.25u#, x_ht#, desc_dp#); + top lft z1 = (0.05[l,r], h); top rt z2 = (good.x 0.875[l,r], h); + top y3 if r - l > 6u: + 1/6v fi = top y3' + = if text_figs: 0.683[fig_b,h] else: 2/3[fig_b,h] fi; + x3 = max(1/6[l,r] + 1/2pn.wd, min(0.35[l,r], x2 - (y2 - y3))); + x3' = x5; + draw_fivthree; +endchar; + +%}}} +%{{{ 7 +ma_fig(7, 6.5u#, x_ht#, desc_dp#); + draw bot rt (l,h) -- bot lft (r, h) -- top (good.x 1/3[l,r], fig_b - o); +endchar; +%}}} +%{{{ 4 + +ma_fig(4, 7u#, x_ht#, 2/3desc_dp#) + top y1 = h + o; x1 = good.x 1/3[l,r]; + bot y2 = bot y3 = if text_figs: 0 else: 1/4[fig_b, h] fi; + lft x2 = l; rt x3 = r; + draw z1 -- z2 -- z3; + x4 = x5 = good.x 1/3[r,l]; + top y4 = 2/3[fig_b, h]; + bot y5 = fig_b - o; + draw z4 -- z5; + labels(1,2,3,4,5); +endchar; +%}}} +%{{{ 2 + +ma_fig(2, 6u#, x_ht#, 0v#); + lft x1 = l; top y2 = top y1 + if text_figs: 1.25v else: 1.5v fi = h + o; + rt x3 = rt x7 = r; lft x6 = l; bot y6 = bot y7 = fig_b; + + x2 = x4 = 0.55[r,l]; + y3 = if text_figs: 2/3 else: 0.75 fi [y6, y2]; + y4 = 0.55[y6, y3]; %% if text_figs: 3/8 else: 2/5 fi [y6, y2]; + z5 = z6 + 1/2pn.ht * up; + draw z1 ... hsuper(2,3) + ... z4 ... z5 + ... {(z6 - z4) yscaled 8} z6 -- z7; + labels(1,2,3,4,5,6,7); +endchar; + +%}}} +%{{{ 8 + +ma_fig(8, 8u#, fig_ht#, 0v#); + bot z3bot = (1/2[l,r], fig_b - o); + lft x2bot = l - ho; rt x0bot = r + ho; + x1bot = x3bot = x1top = x3top = 1/2[x2top, x0top]; + y2top = y0top = 1/2[y3top, y1top]; + y2bot = y0bot = 1/2[y3bot, y1bot]; top y1top = h + o; + y1bot = y3top = max(0.55[y3bot, y1top], + min(2/3[y3bot, y1top], y3bot + (x0bot - x2bot))); + x2top = max(rt 1/16[l,r], 1/2[l,r] - + 1/2(y1top - y3top) * max(1, (x0bot - x2bot)/(y1bot - y3bot))); + draw superellipse(z0bot, z1bot, z2bot, z3bot)(1/sqrt2); + draw superellipse(z0top, z1top, z2top, z3top)(1/sqrt2); +endchar; + +%}}} +%{{{ 69 + +% pdc Wed. 27 Feb. 1991 +% tails fixed pdc Tue. 23 Apr. 1991 + +ma_fig(6, 8u#, fig_ht#, 0v#); + lft x2 = l; rt x0 = r + ho; bot y3 = fig_b - o; + y2 = y0 = 1/2[y1, y3]; x1 = x3 = 1/2[x0, x2]; + top z2tail = (1/2[l,r], h + o); + y1 = max(0.55[y3, y2tail], min(3/4[y3, y2tail], y3 + (x0 - x2))); + draw superellipse(z0, z1, z2, z3)(1/sqrt2); + + % try to guess the point on bowl where tail connects: + numeric theta; + theta = angle(y1 - y0, (y2tail - y0) +-+ (y1 - y0)); + z1tail = (x1, y0) + (y1 - y0) * (dir (theta + 90) + xscaled ((x0 - x2)/(y1 - y3))); + draw z1tail -- z2tail; + labels(0, 1, 2, 3, 1tail, 2tail); +endchar; + +ma_fig(9, 8u#, x_ht#, desc_dp#); + lft x2 = l; rt x0 = r + ho; top y1 = h + o; + y2 = y0 = 1/2[y1, y3]; x1 = x3 = 1/2[x0, x2]; + bot z2tail = (1/2[l,r], fig_b - o); + y3 = min(0.55[y1, y2tail], max(3/4[y1, y2tail], y1 - (x0 - x2))); + draw superellipse(z0, z1, z2, z3)(1/sqrt2); + + % try to guess the point on bowl where tail connects: + numeric theta; + theta = angle(y1 - y0, (y0 - y2tail) +-+ (y1 - y0)); + z1tail = (x1, y0) + (y1 - y0) * (dir (theta + 270) + xscaled ((x0 - x2)/(y1 - y3))); + draw z1tail -- z2tail; + labels(0, 1, 2, 3, 1tail, 2tail); +endchar; +%}}} +%}}} + + +% Local variables: +% fold-folded-p: t +% End: diff --git a/fonts/malvern/source/magenc.mf b/fonts/malvern/source/magenc.mf new file mode 100644 index 0000000000..a6a1b5eb6c --- /dev/null +++ b/fonts/malvern/source/magenc.mf @@ -0,0 +1,384 @@ +% magenc.mf 1.2.0 1994/10/11 -- Malvern G (greek) +% Copyright 1994 P. Damian Cugley + +%%% @METAFONT-file { +%%% filename = "magenc.mf", +%%% version = "1.2.0", +%%% date = "1994/10/11", +%%% package = "Malvern 1.2", +%%% author = "P. Damian Cugley", +%%% email = "damian.cugley@comlab.ox.ac.uk", +%%% address = "Oxford University Computing Laboratory, +%%% Parks Road, Oxford OX1 3QD, UK", +%%% codetable = "USASCII", +%%% keywords = "Malvern, METAFONT, font, typefont, TeX", +%%% supported = "Maybe", +%%% abstract = "Greek encoding definition for the Malvern +%%% font family.", +%%% dependencies = "other program files", +%%% } + +% See the Malvern Handbook (maman.tex) for more info about Malvern. +% This software is available freely but without warranty. +% See the file COPYING for details. + +%{{{ magenc.mf + +numeric c; c = -1; +vardef next_code = + c := c + 1; + if c = 32: c := hex"80"; fi + c +enddef; + +%{{{ capitals + +code.gr.cap.alpha = ASCII"A"; +code.gr.cap.beta = ASCII"B"; +code.gr.cap.sigma1 = ASCII"C"; % lunate sigma +code.gr.cap.delta = ASCII"D"; +code.gr.cap.epsilon = ASCII"E"; +code.gr.cap.phi = ASCII"F"; +code.gr.cap.gamma = ASCII"G"; +code.gr.cap.eta = ASCII"H"; +code.gr.cap.iota = ASCII"I"; +code.gr.cap.theta = ASCII"J"; +code.gr.cap.kappa = ASCII"K"; +code.gr.cap.lambda = ASCII"L"; +code.gr.cap.mu = ASCII"M"; +code.gr.cap.nu = ASCII"N"; +code.gr.cap.omicron = ASCII"O"; +code.gr.cap.pi = ASCII"P"; +code.gr.cap.chi = ASCII"Q"; +code.gr.cap.rho = ASCII"R"; +code.gr.cap.sigma = ASCII"S"; +code.gr.cap.tau = ASCII"T"; +code.gr.cap.upsilon = ASCII"U"; +code.gr.cap.digamma = ASCII"V"; % obselete +code.gr.cap.omega = ASCII"W"; +code.gr.cap.xi = ASCII"X"; +code.gr.cap.psi = ASCII"Y"; +code.gr.cap.zeta = ASCII"Z"; + +%code.gr.cap.upsilon1 = 91; +%code.gr.cap.koppa = 92; +%code.gr.cap.xi1 = 93; + +%}}} capitals +%{{{ lower case + +% Transliteration as per Yannis's + +% alpha beta gamma delta epsilon zeta eta theta iota kappa mu nu +% a b g d e z h j i k m n +% xi omicron pi rho sigma final-sigma tau upsilon phi chi psi omega +% x o p r s c t u f q y w + +% also: koppa digamma lunate-sigma sampi stimga +% 92/124 v 91/123 64/96 + +% code.gr.lc.sampi = 96; % obselete letter + +code.gr.lc.alpha = ASCII"a"; +code.gr.lc.beta = ASCII"b"; +code.gr.lc.sigma1 = ASCII"c"; % lunate sigma +code.gr.lc.delta = ASCII"d"; +code.gr.lc.epsilon = ASCII"e"; +code.gr.lc.phi = ASCII"f"; +code.gr.lc.gamma = ASCII"g"; +code.gr.lc.eta = ASCII"h"; +code.gr.lc.iota = ASCII"i"; +code.gr.lc.theta = ASCII"j"; +code.gr.lc.kappa = ASCII"k"; +code.gr.lc.lambda = ASCII"l"; +code.gr.lc.mu = ASCII"m"; +code.gr.lc.nu = ASCII"n"; +code.gr.lc.omicron = ASCII"o"; +code.gr.lc.pi = ASCII"p"; +code.gr.lc.chi = ASCII"q"; +code.gr.lc.rho = ASCII"r"; +code.gr.lc.sigma = ASCII"s"; % medial sigma ($\sigma$) +code.gr.lc.tau = ASCII"t"; +code.gr.lc.upsilon = ASCII"u"; +code.gr.lc.digamma = ASCII"v"; % obselete letter +code.gr.lc.omega = ASCII"w"; +code.gr.lc.xi = ASCII"x"; +code.gr.lc.psi = ASCII"y"; +code.gr.lc.zeta = ASCII"z"; + +code.gr.lc.final_sigma = 127; % $\varsigma$ +code.gr.lc.phi1 = 92; + +%code.gr.lc.koppa = 124; % obselete letter +%code.gr.lc.epsilon1 = 125; +%code.gr.lc.theta1 = 127; +%code.gr.lc.rho1 = 94; +%code.gr.lc.pi1 = 95; + +%}}} lower case +%{{{ punctuation etc. + +code.exclam = ASCII"!"; +code.colon = ASCII":"; % two dots +code.gr.colon = ASCII";"; % raised dot +code.gr.question = ASCII"?"; % looks like ; +code.full_stop = ASCII"."; +code.comma = ASCII","; +code.hyphen = ASCII"-"; + +code.zero = ASCII"0"; +code.percent = ASCII"%"; +code.plus_sign = ASCII"+"; +code.asterisk7 = ASCII"*"; +code.equals = ASCII"="; +code.paren.left = ASCII"("; +code.paren.right = ASCII")"; +code.brack.left = ASCII"["; +code.brack.right = ASCII"]"; +code.slash = ASCII"/"; +code.guillemet.left = ASCII"{"; +code.guillemet.right = ASCII"}"; + +code.cwm = ASCII" "; % same effect as end of word +code.null = ASCII"@"; % supresses effect of being at end of word + +forsuffixes $ = apostrophe, en_dash, em_dash: + code.$ = next_code; +endfor + +%}}} punctuation +%{{{ marks + +code.gr.accent = next_code; +code.gr.breve = next_code; +code.gr.macron = next_code; + +code.gr.acute = ASCII"'"; +code.gr.grave = ASCII"`"; +code.gr.circumflex = ASCII"~"; +code.gr.asp = ASCII"<"; +code.gr.len = ASCII">"; +code.gr.di = 34; +code.gr.iota_sub = ASCII"|"; + +forsuffixes $ = asp, len, di: + forsuffixes @ = acute, grave, circumflex: + code.gr.$.@ = next_code; + endfor +endfor + +code.gr.di.accent = next_code; + +if false: + +code.gr.iota_sub = 0; % iota subscript +code.gr.lc.alpha.iota_sub = 1; +code.gr.lc.eta.iota_sub = 2; +code.gr.lc.omega.iota_sub = 3; + +code.gr.acute = 9; +code.gr.grave = 10; +code.gr.circumflex = 11; +code.gr.tilde = 12; +code.gr.accent = 13; % the new universal accent + +code.gr.asp = 14; +code.gr.asp.acute = 15; +code.gr.asp.grave = 16; +code.gr.asp.circumflex = 17; +code.gr.asp.tilde = 18; +code.gr.breve = 19; % instead of asp.accent, which does not occur + +code.gr.len = 20; +code.gr.len.acute = 21; +code.gr.len.grave = 22; +code.gr.len.circumflex = 23; +code.gr.len.tilde = 24; +code.gr.macron = 25; % instead of len.accent + +code.gr.di = 26; +code.gr.di.acute = 27; +code.gr.di.grave = 28; +code.gr.di.circumflex = 29; +code.gr.di.tilde = 30; +code.gr.di.accent = 31; + +fi + +%}}} marks +%{{{ composites + +if c + 1 < hex"10": c := hex"10" - 1; fi + +forsuffixes $ = alpha, eta, omega: + code.gr.lc.$.iota_sub = next_code; +endfor + +forsuffixes # = asp, len: + code.gr.lc.rho.# = next_code; +endfor + +forsuffixes $$ = cap, lc: + forsuffixes $ = sigma, zeta, psi, xi: + code.gr.$$.$.breve = next_code; + endfor +endfor + +%if c + 1 < hex"80": c := hex"80" - 1; fi + +forsuffixes $ = alpha, alpha.iota_sub, epsilon, eta, eta.iota_sub, + iota, omicron, upsilon, omega, omega.iota_sub: + forsuffixes @ = accent, acute, grave, circumflex: + code.gr.lc.$.@ = next_code; + endfor + forsuffixes # = asp, len: + forsuffixes @ = , acute, grave, circumflex: + code.gr.lc.$.#.@ = next_code; + endfor + endfor +endfor + +forsuffixes $ = iota, upsilon: + forsuffixes @ = , accent, acute, grave, circumflex: + code.gr.lc.$.di.@ = next_code; + endfor +endfor + +if false: +% These codes are from Levy's fonts. + +code.gr.lc.alpha.grave = hex"80"; +code.gr.lc.alpha.asp = hex"81"; +code.gr.lc.alpha.len = hex"82"; + +code.gr.lc.alpha.iota_sub.grave = hex"84"; +code.gr.lc.alpha.iota_sub.asp = hex"85"; +code.gr.lc.alpha.iota_sub.len = hex"86"; + +code.gr.lc.alpha.acute = hex"88"; +code.gr.lc.alpha.asp.acute = hex"89"; +code.gr.lc.alpha.len.acute = hex"8A"; + +code.gr.lc.alpha.iota_sub.acute = hex"8C"; +code.gr.lc.alpha.iota_sub.asp.acute = hex"8D"; +code.gr.lc.alpha.iota_sub.len.acute = hex"8E"; + +code.gr.lc.alpha.circumflex = hex"90"; +code.gr.lc.alpha.asp.circumflex = hex"91"; +code.gr.lc.alpha.len.circumflex = hex"92"; + +code.gr.lc.alpha.iota_sub.circumflex = hex"94"; +code.gr.lc.alpha.iota_sub.asp.circumflex = hex"95"; +code.gr.lc.alpha.iota_sub.len.circumflex = hex"96"; + +code.gr.lc.eta.grave = hex"98"; +code.gr.lc.eta.asp = hex"99"; +code.gr.lc.eta.len = hex"9A"; + +code.gr.lc.eta.iota_sub.grave = hex"9C"; +code.gr.lc.eta.iota_sub.asp = hex"9D"; +code.gr.lc.eta.iota_sub.len = hex"9E"; + +code.gr.lc.eta.acute = hex"A0"; +code.gr.lc.eta.asp.acute = hex"A1"; +code.gr.lc.eta.len.acute = hex"A2"; + +code.gr.lc.eta.iota_sub.acute = hex"A4"; +code.gr.lc.eta.iota_sub.asp.acute = hex"A5"; +code.gr.lc.eta.iota_sub.len.acute = hex"A6"; + +code.gr.lc.eta.circumflex = hex"A8"; +code.gr.lc.eta.asp.circumflex = hex"A9"; +code.gr.lc.eta.len.circumflex = hex"AA"; + +code.gr.lc.eta.iota_sub.circumflex = hex"AC"; +code.gr.lc.eta.iota_sub.asp.circumflex = hex"AD"; +code.gr.lc.eta.iota_sub.len.circumflex = hex"AE"; + +code.gr.lc.omega.grave = hex"B0"; +code.gr.lc.omega.asp = hex"B1"; +code.gr.lc.omega.len = hex"B2"; + +code.gr.lc.omega.iota_sub.grave = hex"B4"; +code.gr.lc.omega.iota_sub.asp = hex"B5"; +code.gr.lc.omega.iota_sub.len = hex"B6"; + +code.gr.lc.omega.acute = hex"B8"; +code.gr.lc.omega.asp.acute = hex"B9"; +code.gr.lc.omega.len.acute = hex"BA"; + +code.gr.lc.omega.iota_sub.acute = hex"BC"; +code.gr.lc.omega.iota_sub.asp.acute = hex"BD"; +code.gr.lc.omega.iota_sub.len.acute = hex"BE"; + +code.gr.lc.omega.circumflex = hex"C0"; +code.gr.lc.omega.asp.circumflex = hex"C1"; +code.gr.lc.omega.len.circumflex = hex"C2"; + +code.gr.lc.omega.iota_sub.circumflex = hex"C4"; +code.gr.lc.omega.iota_sub.asp.circumflex = hex"C5"; +code.gr.lc.omega.iota_sub.len.circumflex = hex"C6"; + +code.gr.lc.iota.grave = hex"C8"; +code.gr.lc.iota.asp = hex"C9"; +code.gr.lc.iota.len = hex"CA"; + +code.gr.lc.upsilon.grave = hex"CC"; +code.gr.lc.upsilon.asp = hex"CD"; +code.gr.lc.upsilon.len = hex"CE"; + +code.gr.lc.iota.acute = hex"D0"; +code.gr.lc.iota.asp.acute = hex"D1"; +code.gr.lc.iota.len.acute = hex"D2"; + +code.gr.lc.upsilon.acute = hex"D4"; +code.gr.lc.upsilon.asp.acute = hex"D5"; +code.gr.lc.upsilon.len.acute = hex"D6"; + +code.gr.lc.iota.circumflex = hex"D8"; +code.gr.lc.iota.asp.circumflex = hex"D9"; +code.gr.lc.iota.len.circumflex = hex"DA"; + +code.gr.lc.upsilon.circumflex = hex"DC"; +code.gr.lc.upsilon.asp.circumflex = hex"DD"; +code.gr.lc.upsilon.len.circumflex = hex"DE"; + +code.gr.lc.epsilon.grave = hex"E0"; +code.gr.lc.epsilon.asp = hex"E1"; +code.gr.lc.epsilon.len = hex"E2"; + +code.gr.lc.omicron.grave = hex"E4"; +code.gr.lc.omicron.asp = hex"E5"; +code.gr.lc.omicron.len = hex"E6"; + +code.gr.lc.epsilon.acute = hex"E8"; +code.gr.lc.epsilon.asp.acute = hex"E9"; +code.gr.lc.epsilon.len.acute = hex"EA"; + +code.gr.lc.omicron.acute = hex"EC"; +code.gr.lc.omicron.asp.acute = hex"ED"; +code.gr.lc.omicron.len.acute = hex"EE"; + +code.gr.lc.iota.di = hex"F0"; +code.gr.lc.iota.di.grave = hex"F1"; +code.gr.lc.iota.di.acute = hex"F2"; +code.gr.lc.iota.di.circumflex = hex"F3"; +code.gr.lc.upsilon.di = hex"F4"; +code.gr.lc.upsilon.di.grave = hex"F5"; +code.gr.lc.upsilon.di.acute = hex"F6"; +code.gr.lc.upsilon.di.circumflex = hex"F7"; + +code.gr.lc.rho.asp = hex"FB"; +code.gr.lc.rho.len = hex"FC"; + +fi + +%}}} composites + +font_coding_scheme "Malvern G " & maversion; + +%}}} Malvern G + +% Local variables: +% fold-folded-p: t +% End: diff --git a/fonts/malvern/source/maglcaps.mf b/fonts/malvern/source/maglcaps.mf new file mode 100644 index 0000000000..5e403264a0 --- /dev/null +++ b/fonts/malvern/source/maglcaps.mf @@ -0,0 +1,293 @@ +% maglcaps.mf 1.2.0 94/10/11 -- caps common to Greek and Latin +% Copyright 1992-4 P. Damian Cugley. + +%%% @METAFONT-file { +%%% filename = "maglcaps.mf", +%%% version = "1.2.0", +%%% date = "1994/10/11", +%%% package = "Malvern 1.2", +%%% author = "P. Damian Cugley", +%%% email = "damian.cugley@comlab.ox.ac.uk", +%%% address = "Oxford University Computing Laboratory, +%%% Parks Road, Oxford OX1 3QD, UK", +%%% codetable = "USASCII", +%%% keywords = "Malvern, METAFONT, font, typefont, TeX", +%%% supported = "Maybe", +%%% abstract = "Greek/Latin cap. character programs for the Malvern +%%% font family.", +%%% dependencies = "other program files", +%%% } + +% See the Malvern Handbook (maman.tex) for more info about Malvern. +% This software is available freely but without warranty. +% See the file COPYING for details. + +%{{{ maglcaps.mf + +set_cap_widths; + +if capmode = 1: + vardef subst@# suffix $ = + if unknown code.cap$: code.cap$ := code.gr.cap@#; fi + enddef; + + subst alpha (a); + subst beta (b); + subst chi (x); + subst epsilon (e); + subst eta (h); + subst iota (i); + subst kappa (k); + subst mu (m); + subst nu (n); + subst omicron (o); + subst rho (p); + subst tau (t); + subst zeta (z); +fi + +if testing: endinput fi + +%{{{ N + +iff known capcode.n: "Capital Nu"; +ma_cap(capcode.n, medium_wd# + 2pn_adj#)(1,1); + box_points; set_ic_tr; + y1 = y.t + o - (x.r - x.l); + if y1 < y.b: y1 := y.b; fi + draw_box_l_o; draw_box_r_o; + draw (x.l, y.t + o) -- (x.r, y1); +if not no_co: +remember; + some_cap_marks(0.5[l,r]) N; +fi +endchar; + +%}}} +%{{{ H + +iff known capcode.h: "Capital Eta"; +ma_cap(capcode.h, medium_wd# + 2pn_adj#)(1,1); + box_points; draw_box_l_o; draw_box_r_o; draw_box_m; set_ic_tr; +if not no_co: +remember; + some_cap_marks(0.5[l,r]) H; +fi +endchar; + +%}}} +%{{{ Z + +iff known capcode.z: "Capital Zeta"; +ma_cap(capcode.z, medium_wd# + 2pn_adj#)(1/2,1/2); + box_points; set_ic_tr; + draw (good.x 1/24[x.l, x.r], y.t) + -- (good.x 1/24[x.r, x.l], y.t) -- (x.l, y.b) -- (x.r, y.b); +if not no_co: +remember; + some_cap_marks(0.5[l,r]) Z; +similarly(code.co.Z.dot); "Cap. Z with dot above"; + charht := mark_t#; + draw_dot_mark.dot(0.5[l,r], mark_b, dot_wd, mark_ht); +wug; +fi +endchar; + +%}}} +%{{{ E + +iff known capcode.e: "Capital Epsilon"; +ma_cap(capcode.e, narrow_wd# + pn_adj#)(1, 1/2); + rt x1 = rt x4 = r; lft x2 = lft x3 = lft x1bar = l; + top y1 = top y2 = h; bot y3 = bot y4 = 0; + y1bar = y2bar = 0.52h; x2bar = 4/5[l,r]; + draw z1 -- z2 -- z3 -- z4; + draw z1bar -- z2bar; + labels(1,2,3,4, 1bar, 2bar); + set_ic_tr; +remember; +some_cap_marks(0.475[l,r]) E; +endchar; + +%}}} +%{{{ A + +iff known capcode.a: "Capital Alpha"; +ma_cap(capcode.a, wide_wd# + 3pn_adj#)(1/3,1/3); + A_body(true, false); +remember; +if not no_co: + some_cap_marks(0.5[l,r]) A; +similarly(code.cap.a.ring); "Cap. A with ring"; + if cap_mark_t - h > 4v: + draw_clear_ring.ring(1/2[l,r], 1/2[h, cap_mark_t] - 3/2v - eps, 3u, 3v); + elseif cap_mark_t - h > 3.5v: + draw_clear_ring.ring(1/2[l,r], h + 1/2v, 3u, 3v); + else: + draw_joined_ring.ring(1/2[l,r], h, 3u, min(3v, cap_mark_t - h + pn.ht - o)); + fi + charht := cap_mark_t#; +wug; +fi +endchar; + +%}}} +%{{{ T + +iff known capcode.t: "Capital Tau"; +ma_cap(capcode.t,medium_wd# + 2pn_adj#)(0,0); + if 1/2w <> good.x 1/2w: change_width; fi + lft x1 = w - rt x2 = l - eps; x3 = x4 = 1/2[x1,x2]; + top y1 = top y2 = top y3 = h; bot y4 = -d - o; + draw z1 -- z2; draw z3 -- z4; + labels(1,2,3,4); set_ic_tr; +remember; +if not no_co: + some_cap_marks(0.5[l,r]) T; +fi +similarly(code.cap.t.cedilla); "cap T with cedilla"; + chardp := Cedilla_ht#; charht := cap_ht#; + draw_cedilla.cedilla(1/2[l,r], 0, Cedilla_wd, Cedilla_ht); +wug; +endchar; + +%}}} +%{{{ O + +iff known capcode.o: "Captial Omicron (O)"; +ma_char(capcode.o, O_wd#, height#, 0v#)(O_sp, O_sp); + draw_O; set_ic_O; +if not no_co: +remember; + some_cap_marks(0.5[l,r]) O; +fi +endchar; + +%}}} +%{{{ I + +iff known capcode.i: "Capital Iota (I)"; +ma_char(capcode.i, pn.wd#, height#, 0pt#)(1,1); + if 1/2w <> good.x (1/2w): change_width; fi + draw (1/2w, bot h + o) -- (1/2w, top -d - o); set_ic_tr; +endchar; + +if not no_co: +%{{{ composite letters based on I + +def do_marked_I(expr code, mark_width_sharp)(text MARK_PROC) text CODA = + iff known code: + ma_char(code, max(pn.wd#, mark_width_sharp - sp#), mark_t#, 0v#)(1,1); + if good.x (1/2[l,r]) <> 1/2[l,r]: change_width; fi + draw (1/2[l,r], bot (vround height#*vppp)) -- (1/2[l,r], top (0 - o)); + MARK_PROC(1/2[l,r], mark_b, + mark_width_sharp * hppp, mark_ht) CODA; + set_ic_tr; + endchar; +enddef; + +do_marked_I(code.cap.i.acute, max(2pn.wd#, (mark_t# - mark_b#)*hratio)) + (draw_acute_grave) false; +do_marked_I(code.cap.i.grave, max(2pn.wd#, (mark_t# - mark_b#)*hratio)) + (draw_acute_grave) true; +do_marked_I(code.cap.i.twodots, 2dot_wd# + sp#) + (draw_twodots); +do_marked_I(code.cap.i.circumflex, + max(3pn.wd#, (mark_t# - mark_b#)*hratio - pn.wd#)) + (draw_circumflex) false; +do_marked_I(code.cap.i.breve, + max(3pn.wd#, (mark_t# - mark_b#)*hratio - pn.wd#)) + (draw_breve); +do_marked_I(code.cap.i.dot, dot_wd#)(draw_dot_mark); + +%}}} composite letters based on I +fi + +%}}} + +if co_only: endinput; fi + +%{{{ B, P + +iff known capcode.b: "Capital Beta"; +ma_cap(capcode.b,max(2pn_wd# + 3u#, narrow_wd# + pn_adj#))(1,0.6); + numeric mid; mid = good.y (0.55[-d, h]); + D_stem; + D_bowl.top(h, bot mid, hround 0.9[l,r]); + D_bowl.bot(top mid, -d, r); + set_ic 0.9h#; charic := max(0, charic - 0.1(r# - l#)); +endchar; + +iff known capcode.p: "Capital Rho"; +ma_cap(capcode.p, max(2pn_wd# + 3u#, narrow_wd# + pn_adj#))(1,1/2); + P_stem; D_bowl.bowl(h, hround bot 0.45[-d, h], r); set_ic 0.9h#; +endchar; + +%}}} +%{{{ K + +iff known capcode.k: "Capital Kappa"; +ma_cap(capcode.k, medium_wd# + pn_adj#)(1,1/2); + box_points; + z1top = (1/18[x.r, x.l],y.t + o); + z2top = z1top + whatever*(hratio, 1); x2top = x.l; + z1bot = (x.r, y.b - o); + z2bot = whatever[z1top, z2top] = z1bot + whatever*(-hratio, 1); + draw_box_l_o; draw z1top -- z2top; draw z1bot -- z2bot; + labels(1top, 2top, 1bot, 2bot); set_ic_tr; +endchar; +%}}} +%{{{ M + +if known capcode.m: + +def do_variant_M(expr code) = + ma_cap(code, wide_wd# + 3pn_adj#)(1,1); + if 1/2w <> hround 1/2w: change_width; fi + box_points; + z1 = (x.l, y.t + o); z3 = (x.r, y.t + o); + x2 = 1/2[x1, x3]; y2 = 1/2[-d, h]; + draw z1 -- z2 -- z3; draw_box_l_o; draw_box_r_o; + labels(1,2,3); set_ic_tr; + endchar +enddef; + +def do_M(expr code) = + ma_char(code, width# + 2pn_adj#, height#, 0pt#)(3/4,3/4); + if 1/2w <> apex.x 1/2w: change_width; fi + lft x1 = w - rt x5 = l; bot y1 = bot y5 = -d -o; + top y2 = top y4 = h; + x3 = 1/2[l, r]; y3 = 0.1[y1, y2]; + x2 = w - x4 = x1 + floor(1/18(r - l)); + draw z1 -- apex_path2 -- vpex_path3 -- apex_path4 -- z5; + labels(1,2,3,4,5); set_ic_tr; + endchar +enddef; + +if (width# < 7.5pt#): + do_variant_M(capcode.m); + if known code.cap.m1: "variant cap. M"; + do_M(code.cap.m1); + fi +else: + do_M(capcode.m); + if known code.cap.m1: "variant cap. M"; + do_variant_M(code.cap.m1); + fi +fi + +fi + +%}}} M +%{{{ X +iff known capcode.x: "Capital Chi"; +ma_cap(capcode.x, medium_wd# + 2pn_adj#)(1/2,1/2); + draw_X 1/16; set_ic_tr; +endchar; +%}}} X + +%}}} maglcaps.mf + +% Local variables: +% fold-folded-p: t +% End: diff --git a/fonts/malvern/source/magrcaps.mf b/fonts/malvern/source/magrcaps.mf new file mode 100644 index 0000000000..b0aeb84484 --- /dev/null +++ b/fonts/malvern/source/magrcaps.mf @@ -0,0 +1,219 @@ +% magrcaps.mf 1.2.0 1994/10/11 -- caps in greek and not latin +% Copyright 1994 P. Damian Cugley + +%%% @METAFONT-file { +%%% filename = "magrcaps.mf", +%%% version = "1.2.0", +%%% date = "1994/10/11", +%%% package = "Malvern 1.2", +%%% author = "P. Damian Cugley", +%%% email = "damian.cugley@comlab.ox.ac.uk", +%%% address = "Oxford University Computing Laboratory, +%%% Parks Road, Oxford OX1 3QD, UK", +%%% codetable = "USASCII", +%%% keywords = "Malvern, METAFONT, font, typefont, TeX", +%%% supported = "Maybe", +%%% abstract = "Greek cap. character programs for the Malvern +%%% font family.", +%%% dependencies = "other program files", +%%% } + +% See the Malvern Handbook (maman.tex) for more info about Malvern. +% This software is available freely but without warranty. +% See the file COPYING for details. + +%{{{ magrcaps.mf + +set_cap_widths; + +if testing: endinput fi + +"Greep capital Gamma"; do_EFL(code.gr.cap.gamma, true, 0, 0, false); +%{{{ Delta, Lambda + +"Greek capital Delta"; +ma_cap(code.gr.cap.delta, wide_wd# + 3pn_adj#)(1/3,1/3); + A_body(false, true); +endchar; + +"Greek capital Lambda"; +ma_cap(code.gr.cap.lambda, wide_wd# + 3pn_adj#)(1/3,1/3); + A_body(false, false); +endchar; + +%}}} +%{{{ Theta, Koppa + +"Greek Capital Theta"; +ma_char(code.gr.cap.theta, O_wd#, height#, 0v#)(O_sp, O_sp); + draw_O; + y1bar = y2bar = good.y 0.505h; + lft x1bar = w - rt x2bar = max(1/5[l,r], rt x2 + 1/2u); + draw z1bar -- z2bar; + labels(1bar, 2bar); + set_ic_O; +endchar; + +iff known code.gr.cap.koppa: "Greek Capital Koppa"; +ma_char(code.gr.cap.koppa, O_wd#, height#, desc_dp#)(O_sp, O_sp); + if 1/2w <> good.x 1/2w: change_width; fi + draw_O; set_ic_O; + z1stroke = good.top (1/2w, 1/3h); + bot y2stroke = -d; x2stroke = x1stroke; + draw z1stroke -- z2stroke; + labels(1stroke, 2stroke); +endchar; + +%}}} +%{{{ Xi + +iff known code.gr.cap.xi1: "eccentric Greek capital Xi"; +ma_cap(code.gr.cap.xi1, medium_wd# + 2pn_adj#)(1/2,1/2); + lft x1 = lft x5 = w - rt x2 = w - rt x6 = l; + top y1 = top y2 = h; bot y5 = bot y6 = -d; + y3 = y4 = good.y 0.55[-d, h]; + lft x3 = w - rt x4 = max(lft x1 + 1/2u, 1/5[l,r]); + draw z1 -- z2 -- bot z2 + -- top z3 -- z3 -- z4 -- bot z4 + -- top z5 -- z5 -- z6; + labels(range 1 thru 6); set_ic_tr; +endchar; + +iff known code.gr.cap.xi: "Greek capital Xi"; +ma_cap(code.gr.cap.xi, medium_wd# + 2pn_adj#)(1/2,1/2); + lft x1 = lft x5 = w - rt x2 = w - rt x6 = l; + top y1 = top y2 = h; bot y5 = bot y6 = -d; + y3 = y4 = good.y 0.55[-d, h]; + lft x3 = w - rt x4 = max(lft x1 + 1/2u, 1/5[l,r]); + draw z1 -- z2; + draw z3 -- z4; + draw z5 -- z6; + labels(range 1 thru 6); set_ic_tr; +endchar; + +%}}} +%{{{ Pi + +ma_cap(code.gr.cap.pi, medium_wd# + 2pn_adj#)(1,1); + lft x1 = lft x2 = w - rt x3 = w - rt x4 = l; + top y2 = top y3 = h; bot y1 = bot y4 = -d - o; + draw z1 -- z2 -- z3 -- z4; + set_ic_tr; + labels(1,2,3,4); +endchar; + +%}}} +%{{{ Sigma + +ma_cap(code.gr.cap.sigma, medium_wd# + 2pn_adj#)(1/3,1/2); + rt x1 = rt x5 = r; lft x2 = lft x4 = l; + top y1 = top y2 = h; bot y4 = bot y5 = -d; + y3 = 0.54[y4, y2]; x3 = good.x 0.7[x2, x1]; + draw z1 -- z2 -- bot z2 -- z3 -- top z4 -- z4 -- z5; + labels(1, 2, 3, 4, 5); + set_ic_tr; +endchar; + +%}}} +%{{{ Upsilon + +iff known code.gr.cap.upsilon: +ma_cap(code.gr.cap.upsilon, medium_wd# + 2pn_adj#)(1/2,1/2); + draw_Y(0.55[-d, h]); set_ic_tr; +endchar; + +iff known code.gr.cap.upsilon1: +ma_cap(code.gr.cap.upsilon1, medium_wd# + 2pn_adj#)(1/3,1/3); + if 1/2w <> good.x (1/2w): change_width; fi + x2stem = x1stem = 1/2w; + bot y2stem = d - o; y1stem = 0.475[-d, h]; + lft x1arm = l; top y2arm = h; + y1arm = bot y2arm; x2arm = rt x1arm; + y3arm = y1arm; lft x3arm = rt x2arm; + path p; p = z1arm ... z2arm ... z3arm{z1stem - z2arm} ... z1stem; + draw p; draw p reflectedabout(z1stem, z2stem); + draw z1stem -- z2stem; + labels(1stem, 2stem, 1arm, 2arm); set_ic_tr; +endchar; + +%}}} +%{{{ Phi, Psi + +def PhiPsi(expr pp) = + if 0.5w <> good.x 0.5w: change_width; fi + top z1stem = (1/2w, h + o); bot z2stem = (1/2w, -d - o); + top y1a = top y1b = bot y3a + 8v = bot y3b + 8v + = vround (1/2[-d, h] + 4v); + x1a = x3a = lft x1stem; x1b = x3b = rt x1stem; + lft x2a = w - rt x2b = l; y2a = y2b = 1/2[y1a, y3a]; + forsuffixes $ = a,b: + draw + if pp: z1${(x2$ - x1$, 0)} + ... (1/sqrt2)[(x1$, y2$), (x2$, y1$)]{z2$ - z1$} + else: (x2$, y1$) + fi + ... z2${down} + ... (1/sqrt2)[(x3$, y2$), (x2$, y3$)]{z3$ - z2$} + ... z3${(x3$ - x2$, 0)}; + endfor; + draw z1stem -- z2stem; + labels(1stem, 2stem); +enddef; + +"Greek capital Phi"; ma_cap(code.gr.cap.phi, 8u# + pn.wd#)(1/2, 1/2); PhiPsi(true); endchar; +"Greek capital Psi"; ma_cap(code.gr.cap.psi, 6u# + 3pn.wd#)(1/2, 1/2); PhiPsi(false); endchar; +%}}} +%{{{ Omega + +% 6 +% 5 7 +% 4 8 +% +% 3 9 +% 1 2 10 11 + +"Greek Capital Omega"; +ma_char(code.gr.cap.omega, O_wd#, height#, 0v#)(O_sp, O_sp); + lft x1 = w - rt x11 = lft x4 = w - rt x8 = l; + bot y1 = bot y2 = bot y10 = bot y11 = -d; top y6 = h + o; + x6 = 1/2[l,r]; + rt x2 = w - lft x10 = hround min(1/2w - 1/2u, 1/3[l,r]); + y4 = y8 = 0.52[top y2, y6]; + numeric super; super = 1/sqrt2; + z5 = super[(x6, y4), (x4, y6)]; z7 = super[(x6, y8), (x8, y6)]; + x3 = x5; x9 = x7; + 1/2[y3, y5] = 1/2[y9, y7] = y4; + draw z1 -- z2 --- top z2 + ... z3{z6 - z8} ... z4 ... z5{z6 - z4} ... z6 ... z7{z8 - z6} ... z8 + ... z9{z4 - z6} ... top z10 --- z10 -- z11; + labels(range 1 thru 11); + set_ic_O; +endchar; + + +%}}} +%{{{ Digamma/Wau + +if known code.gr.cap.digamma: + do_EFL(code.gr.cap.digamma, true, 0, 5/6, false); +fi + +%}}} Digamma +%{{{ Lunate Sigma + +iff known code.gr.cap.sigma1: "Capital Greek lunate Sigma"; +ma_cap(code.gr.cap.sigma1, medium_wd# + pn_adj#)(1/2,1/3); + draw_C(l, h, r, -d) 0; set_ic_tr; +endchar; + +%}}} Lunate Sigma + +greek_names := 1; +input maglcaps + +%}}} magrcaps.mf + +%Local variables: +%fold-folded-p: t +%End: + diff --git a/fonts/malvern/source/magrlc.mf b/fonts/malvern/source/magrlc.mf new file mode 100644 index 0000000000..1cbf8b19c0 --- /dev/null +++ b/fonts/malvern/source/magrlc.mf @@ -0,0 +1,846 @@ +% magrlc.mf 1.2.0 1994/10/11 -- lowercase greek letters +% Copyright 1994 P. Damian Cugley + +%%% @METAFONT-file { +%%% filename = "magrlc.mf", +%%% version = "1.2.0", +%%% date = "1994/10/11", +%%% package = "Malvern 1.2", +%%% author = "P. Damian Cugley", +%%% email = "damian.cugley@comlab.ox.ac.uk", +%%% address = "Oxford University Computing Laboratory, +%%% Parks Road, Oxford OX1 3QD, UK", +%%% codetable = "USASCII", +%%% keywords = "Malvern, METAFONT, font, typefont, TeX", +%%% supported = "Maybe", +%%% abstract = "Lower case Greek character programs for the Malvern +%%% font family.", +%%% dependencies = "other program files", +%%% } + +% See the Malvern Handbook (maman.tex) for more info about Malvern. +% This software is available freely but without warranty. +% See the file COPYING for details. + +%{{{ magrlc.mf +%{{{ macros to start characters + +def grlc_char(suffix $$) = + iff known code.gr.lc$$: "Greek lower case " & str $$; + ma_char(code.gr.lc$$) +enddef; + +def grlc_variant(suffix $$) = + iff known code.gr.lc$$1: "variant Greek lower case " & str $$; + ma_char(code.gr.lc$$1) +enddef; + +% standalone marks: +def gr_mk(suffix $$) = + iff known code.gr$$: str $$ & " mark for Greek letters"; + ma_char(code.gr$$)(8u#, body_ht#, 0pt#)(0,0); +enddef; + +%}}} start characters +%{{{ ad hoc parameters + +numeric gr_mk_bot; gr_mk_bot = vround (x_ht + v); +numeric gr_low_mk_bot; gr_low_mk_bot = vround (x_ht + 1/2v); +numeric gr_mk_top; gr_mk_top = vround (body_ht); + +%}}} ad hoc parameters +%{{{ add marks + +def gr_maybe_many_marks(suffix $)(expr anchorx) = + gr_maybe_many_marks_(code.gr.lc.$, anchorx) +enddef; + +def gr_maybe_many_marks_(suffix $$)(expr anchorx) = + remember; + similarly($$.len); + "Greek lc " & str $$ & " len mark"; + charht := body_ht#; + gr_breathing.len(anchorx - 1.5u, gr_mk_top, + anchorx + u, gr_mk_bot) true; + wug; + similarly($$.asp); + "Greek lc " & str $$ & " asp mark"; + charht := body_ht#; + gr_breathing.asp(anchorx - 1u, gr_mk_top, + anchorx + 1.5u, gr_mk_bot) false; + wug; + similarly($$.di); + "Greek lc " & str $$ & " di mark"; + charht := body_ht#; + gr_draw_twodots.di(2u + dot_wd, gr_mk_bot); + wug; + similarly($$.acute); + "Greek lc " & str $$ & " acute mark"; + charht := body_ht#; + 1/2[x1acute, x2acute] = anchorx; gr_draw_ag.acute true; + wug; + similarly($$.di.acute); + "Greek lc " & str $$ & " di.acute mark"; + charht := body_ht#; + x2di.acute.a = anchorx; gr_draw_ag.di.acute.a true; + gr_draw_twodots.di.acute.d(5u, gr_mk_bot); + wug; + similarly($$.len.acute); + "Greek lc " & str $$ & " len.acute mark"; + charht := body_ht#; + gr_breathing.len.acute.b(anchorx - 2.75u, gr_mk_top, + anchorx - 1/4u, gr_mk_bot) true; + lft x2len.acute.a = anchorx + 1/4u; gr_draw_ag.len.acute.a true; + wug; + similarly($$.asp.acute); + "Greek lc " & str $$ & " asp.acute mark"; + charht := body_ht#; + gr_breathing.asp.acute.b(anchorx - 2.5u, gr_mk_top, + anchorx, gr_mk_bot) false; + lft x2asp.acute.a = anchorx; gr_draw_ag.asp.acute.a true; + wug; + similarly($$.grave); + "Greek lc " & str $$ & " grave mark"; + charht := body_ht#; + 1/2[x1grave, x2grave] = anchorx; gr_draw_ag.grave false; + wug; + similarly($$.di.grave); + "Greek lc " & str $$ & " di.grave mark"; + charht := body_ht#; + x2di.grave.a = anchorx; gr_draw_ag.di.grave.a false; + gr_draw_twodots.di.grave.d(5u, gr_mk_bot); + wug; + similarly($$.len.grave); + "Greek lc " & str $$ & " len.grave mark"; + charht := body_ht#; + gr_breathing.len.grave.b(anchorx - 3.5u, gr_mk_top, + anchorx - u, gr_mk_bot) true; + lft x2len.grave.a = anchorx; gr_draw_ag.len.grave.a false; + wug; + similarly($$.asp.grave); + "Greek lc " & str $$ & " asp.grave mark"; + charht := body_ht#; + gr_breathing.asp.grave.b(anchorx - 4u, gr_mk_top, + anchorx - 1.5u, gr_mk_bot) false; + lft x2asp.grave.a = anchorx; gr_draw_ag.asp.grave.a false; + wug; + similarly($$.circumflex); + "Greek lc " & str $$ & " circumflex mark"; + charht := body_ht#; + gr_circ.circumflex(anchorx - 2u, gr_mk_bot, anchorx + 2u, gr_mk_top - v); + wug; + similarly($$.di.circumflex); + "Greek lc " & str $$ & " di.circumflex mark"; + charht := body_ht#; + gr_circ.di.circumflex.a(anchorx - 2u, gr_mk_bot + 1v, anchorx + 2u, gr_mk_top); + gr_draw_twodots.di.circumflex.d(u + dot_wd, gr_low_mk_bot); + wug; + similarly($$.len.circumflex); + "Greek lc " & str $$ & " len.circumflex mark"; + charht := body_ht#; + gr_circ.len.circumflex.a(anchorx - 2u, gr_mk_bot + 1.25v, + anchorx + 2u, gr_mk_top); + gr_breathing.len.circumflex.b(anchorx - 1u, gr_mk_top - 1.25v, + anchorx + 1u, gr_low_mk_bot) true; + wug; + similarly($$.asp.circumflex); + "Greek lc " & str $$ & " asp.circumflex mark"; + charht := body_ht#; + gr_circ.asp.circumflex.a(anchorx - 2u, gr_mk_bot + 1.25v, + anchorx + 2u, gr_mk_top); + gr_breathing.asp.circumflex.b(anchorx - 1u, gr_mk_top - 1.25v, + anchorx + 1u, gr_low_mk_bot) false; + wug; + similarly($$.tilde); + "Greek lc " & str $$ & " tilde mark"; + charht := body_ht#; + gr_tilde.tilde(anchorx - 2.5u, gr_mk_bot, anchorx + 2.5u, gr_mk_top - v); + wug; + similarly($$.di.tilde); + "Greek lc " & str $$ & " di.tilde mark"; + charht := body_ht#; + gr_tilde.di.tilde.a(anchorx - 2.5u, gr_mk_bot + 1.25v, + anchorx + 2.5u, gr_mk_top); + gr_draw_twodots.di.tilde.d(u + dot_wd, gr_low_mk_bot); + wug; + similarly($$.len.tilde); + "Greek lc " & str $$ & " len.tilde mark"; + charht := body_ht#; + gr_tilde.len.tilde.a(anchorx - 2.5u, gr_mk_bot + 1.5v, + anchorx + 2.5u, gr_mk_top); + gr_breathing.len.tilde.b(anchorx - 2u, gr_mk_top - 1.25v, + anchorx + 0u, gr_low_mk_bot) true; + wug; + similarly($$.asp.tilde); + "Greek lc " & str $$ & " asp.tilde mark"; + charht := body_ht#; + gr_tilde.asp.tilde.a(anchorx - 2.5u, gr_mk_bot + 1.5v, + anchorx + 2.5u, gr_mk_top); + gr_breathing.asp.tilde.b(anchorx - 1.5u, gr_mk_top - 1.25v, + anchorx + 0.5u, gr_low_mk_bot) false; + wug; + similarly($$.accent); + "Greek lc " & str $$ & " accent mark"; + charht := body_ht#; + x1accent = x2accent = good.x anchorx; + top y1accent = gr_mk_top; bot y2accent = gr_mk_bot; + draw z1accent -- z2accent; + labels(1accent, 2accent); + wug; + similarly($$.di.accent); + "Greek lc " & str $$ & " with diaeresis accent mark"; + charht := body_ht#; + draw z1accent -- z2accent; + gr_draw_twodots.di.accent.d(5u, gr_mk_bot); + + wug +enddef; + +%}}} magrlc.mf + +if testing: endinput fi +%{{{ standalone marks + +co_only := true; +iff known code.gr.acute: +ma_char(" ", 8u#, body_ht#, 0pt#)(0,0); +gr_maybe_many_marks_(code.gr, 1/2w); +endchar; +co_only := false; + +iff known code.gr.iota_sub: +ma_char(code.gr.iota_sub, 8u#, 0pt#, desc_dp#)(0,0); + gr_iota_sub(0.4w); +endchar; + +%}}} standalone marks +%{{{ mu + +grlc_char(mu)(n_wd#, x_ht#, desc_dp#)(1,1); + draw_n_arch(r,l); + draw (x1, y2) -- (x1, y4); H_stem.l; set_ic_tr; +endchar; + +%}}} mu +%{{{ phi + +grlc_char(phi)(8u#, asc_ht#, desc_dp#)(o_sp, o_sp); + force_symmetry; + x0m = x1m = x3m = x4m = 1/2[l,r]; top y0m = h + o; bot y4m = -d - o; + x1l = x3l = lft x0m; x1r = x3r = rt x0m; % where loops join + top y1l = top y1m = top y1r = x_ht; + bot y3l = bot y3m = bot y3r = 0; + lft x2l = l; rt x2r = r; + y2l = y2r = 1/2[y1l, y3l]; + forsuffixes $ = l, r: + for i = 1, 3: + x[i]$2 = (1/sqrt2)[x[i]m, x2$]; + y[i]$2 = (1/sqrt2)[y2$, y[i]$]; + endfor + endfor + draw z0m -- z4m; + draw z1l .. z1l2{z2l - z1m} .. z2l .. z3l2{z3m - z2l} .. z3l + --- z3r .. z3r2{z2r - z3m} .. z2r .. z1r2{z1m - z2r} .. z1r --- cycle; + labels(0m, 1m, 3m, 4m, 1l, 2l, 3l, 1r, 2r, 3r, 1l2, 3l2, 1r2, 3r2); +endchar; + +grlc_variant(phi)(8.5u#, x_ht#, desc_dp#)(o_sp, o_sp); + lft x2 = l; bot y3 = 0 - o; rt x4 = r; top y5 = h + o; bot y7 = -d - o; + x6 = x7 = 0.5[x2, x4]; x3 = 1/2[x2, x4]; + y1 = y5; x1 = 0.4[x2, x6]; x5 = 0.4[x6, x4]; + y2 = y6 = y4 = 0.5[y3, y5]; + draw z1 .. z2{down} .. z3{right} .. z4{up} .. z5{left} ... z6 --- z7; + labels(range 1 thru 7); +endchar; + +%}}} phi +%{{{ psi + +grlc_char(psi)(8u#, asc_ht#, desc_dp#)(o_sp, o_sp); + force_symmetry; + x1 = x2 = 1/2[l,r]; top y1 = h + o; bot y2 = -d - o; + x3l = lft x1; x3r = rt x1; + top y1l = top y1r = x_ht; bot y3l = bot y3r = 0; + lft x1l = lft x2l = l - eps; rt x1r = rt x2r = r + eps; + y2l = y2r = 1/2[y1l, y3l]; + draw z1 -- z2; + draw z1l --- z2l ... z3l --- z3r ... z2r --- z1r; + labels(1, 2, 1l, 2l, 3l, 1r, 2r, 3r); +endchar; +%}}} psi +%{{{ lambda + +grlc_char(lambda)(7u#, asc_ht#, 0pt#)(1/2,1/2); + bot lft z2l = (l, 0 - o); bot rt z2r = (r, 0 - o); + z1l = z1r = (1/2[l,r], x_ht); % join straddles x-height + top lft z0r = (l + u, h + o); + draw z1l -- z2l; draw z0r ... z1r --- z2r; + labels(1l, 2l, 0r, 1r, 2r); +endchar; +%}}} lambda +%{{{ theta + +grlc_char(theta)(7.5u#, asc_ht#, 0pt#)(2/3,2/3); + top z1 = (1/2w, h + o); bot z3 = (1/2w, -d - o); + lft z4 = (l, 1/2[-d, h]); rt z2 = (r, 1/2[-d, h]); + draw z4 -- z2{down} .. z3 .. z4 .. z1 .. z2{down}; + labels(1, 2, 3, 4); +endchar; +%}}} theta +%{{{ zeta + +grlc_char(zeta)(7u#, asc_ht#, desc_dp#)(1/2,1/2); + % curly top: + top y1t = top y3t = h + o; + lft x1t = hround (0.2[l,r]); rt x3t = hround (0.95[l,r]); + x2t = 1/2[x1t, x3t]; y2t = y1t - 1/2v; + path p; p = z1t .. z2t .. z3t; draw p; + z1 = point 1.75 of p; % stem joins top loop + lft x2 = l; y2 = 0.2h; % left tangent of stem + bot y3 = bot y4 = 0; % tangent at baseline + x3 = 1/3[l,r]; x4 = 2/3[l,r]; + rt x5 = r; y5 = 1/2[y4, y6]; % tangent at right + bot y6 = -d - o; x6 = x4; + draw z1 .. tension 1.4 .. z2{down} .. z3 --- z4 ... z5{down} .. z6; + labels(1t, 2t, 3t, 1, 2, 3, 4, 5, 6); +endchar; +%}}} zeta +%{{{ beta + +grlc_char(beta)(7.5u#, asc_ht#, desc_dp#)(1, 2/3); + lft x1 = lft x2 = l; bot y1 = -d - o; + top y3 = h + o; rt x6 = r; bot y7 = 0 - o; + + y2 = y4 = 1/2[y5, y3]; x3 = 1/2[x2, x4]; y6 = 1/2[y7, y5]; + + y5 = 0.6[y7, y3]; + x4 = x6 - 1.25u; y8 = y7 + 1/2v; + lft x8 = rt x1; x5 = x3 = x7; + + draw z1 --- z2 .. z3 .. z4{down} .. z5 + & z5 .. z6{down} .. z7{left} .. z8; + labels(1, 2, 3, 4, 5, 6, 7, 8); +endchar; +%}}} beta +%{{{ gamma + +grlc_char(gamma)(8u#, x_ht#, desc_dp#)(1/3, 1/3); + if good.x(1/2w) <> 1/2w: change_width; fi + top lft z1 = (l, h + o); top rt z3 = (r, h + o); + bot z2 = (1/2[l, r], -d - o); + z.j = (x2, 0.6[y2, y1]); + draw z1 ... z.j{(z.j - z1) yscaled 2}; + draw z.j{(z3 - z.j) yscaled 2} ... z3; + draw z.j -- z2; + set_ic_tr; +endchar; +%}}} gamma +%{{{ delta + +grlc_char(delta)(8u#, asc_ht#, 0pt#)(o_sp, o_sp); + lft x2 = l; rt x4 = r; bot y3 = -d - o; top y6 = h + o; + y1 = x_ht; + y2 = y4 = 1/2[y3, y1]; + x1 = x3 = 1/2[x2, x4]; + x5 = good.x (0.15[x2, x4]); y5 = y6 - v; x6 = x5 + u; + x7 = good.x (0.85[x2, x4]); y7 = good.y (0.5[y1, y6]); + draw z1{left} .. z2{down} .. z3 .. z4{up} .. z1 + .. z5 .. {right}z6 ... z7{(z7 - z6) yscaled 1.5}; +endchar; +%}}} delta +%{{{ epsilon + +% This is the 2-stroke epsilon: +grlc_variant(epsilon)(6u#, x_ht#, 0pt#)(o_sp, 2/3); + top rt z1 = (r, h + o); bot rt z3 = (r, -d - o); + lft z2 = (l, good.y (0.5[y3, y1])); + x4 = 0.85[x2, x1]; y4 = y2; + draw z1{left} .. z2 .. {right}z3; draw z2 -- z4; + set_ic_tr; labels(1, 2, 3, 4); +endchar; + +% One-stroke epsilon: +grlc_char(epsilon)(6u#, x_ht#, 0pt#)(o_sp, 2/3); + top y2 = h + o; bot y6 = -d - o; + lft x3 = lft x5 = l; rt x1 = rt x7 = r; + y5 = 1/2[y4, y6]; y3 = 1/2[y2, y4]; + + y4 = y4a = good.y (0.55[y6, y2]); x4 = 0.75[x3, x2]; x4a = 0.6[x3, x1]; + x2 = x6 = 0.6[x5, x7]; + y1 = 0.15[y2, y4]; y7 = 0.15[y6, y4]; + + draw z1 .. z2{left} .. z3{down} .. z4 --- z4a; + draw z7 .. z6{left} .. z5{up} .. z4 --- z4a; + labels(1, 2, 3, 4, 5, 6, 7); set_ic_tr; +gr_maybe_many_marks(epsilon, 0.55[l,r]); +endchar; + + +%}}} epsilon +%{{{ iota + +grlc_char(iota)(pn.wd#, x_ht#, 0pt#)(1,1); + top z1 = (1/2w, h + o); + bot z2 = (1/2w, -d - o); + draw z1 -- z2; set_ic_tr; labels(1,2); +gr_maybe_many_marks(iota, x1); +endchar; + +%}}} iota +%{{{ xi + +grlc_char(xi)(7u#, asc_ht#, desc_dp#)(1, 1/2); + top y1 = h + o; lft x4 = l; rt x7 = r; + bot y5 = bot y6 = 0; + bot y8 = -d - o; + y7 = 0.45[y6, y8]; y4 = 1/2[y3, y5]; y2 = 0.45[y3, y1]; + x2 = good.x (x4 + 0.5u); + x3 = x5 = 0.5[x4, x7]; x6 = 0.6[x4, x7]; x8 = 0.7[x4, x7]; + y3 = 0.55[y5, y1]; x1 = good.x (x7 - u); y3a = y3; x3a = 0.4[x3, x1]; + draw z1{left} .. z2{down} .. z3 --- z3a & + z3a --- z3 .. z4{down} .. z5 --- z6 .. z7{down} .. z8; + labels(1, 2, 3, 3a, 4, 5, 6, 7, 8); set_ic_tr; +endchar; +%}}} xi +%{{{ kappa + +% This is the one-stroke kappa: +grlc_char(kappa)(8u#, x_ht#, 0pt#)(1/2,1/2); + top lft z1 = (l, h + o); top rt z4 = (r, h + o); + bot lft z3 = (l, -o); bot rt z6 = (r, -o); + y2 = h - y5 = 1/2h; x2 = w - x5 = x1 + u; + draw z1 .. z2 .. z3; draw z4 .. z5 .. z6; + draw z3 + o * up -- z4 + o * down; + labels(1, 2, 3, 4, 5, 6); set_ic_tr; +endchar; +%}}} kappa +%{{{ nu + +grlc_char(nu)(7u#, x_ht#, 0pt#)(1/2,1/2); + top lft z1 = (l, h + o); top rt z3 = (r, h + o); + bot y2 = -d - o; x2 = 0.45[x1, x3]; + draw z1{(z2 - z1) xscaled 2} .. z2 & z2 .. z3{up}; + set_ic_tr; labels(1,2,3); +endchar; +%}}} nu +%{{{ pi + +% Three-stroke version: +grlc_char(pi)(8u#, x_ht#, 0pt#)(1,1); + top lft z1 = (l, h + o); top rt z2 = (r, h + o); + lft x1l = hround (l + 1.5u); x2l = 0.25[x1l, x1]; + rt x1r = hround (r - 1.5u); rt x3r = r; x2r = 0.15[x1r, x3r]; + y1l = y1r = y1; + bot y2l = bot y3r = -o; y2r = y3r + pn.ht; + draw z1 -- z2; draw z1r{down} ... z2r .. z3r{right}; + draw z1l{down} .. z2l; + labels(1, 2, 1l, 2l, 1r, 2r, 3r); set_ic_tr; +endchar; + +%}}} pi +%{{{ koppa + +% This is an obselete letter: +grlc_char(koppa)(7u#, x_ht#, desc_dp#)(o_sp, o_sp); + draw_circle(l, h, r, vround v); + bot z4 = (x3, -d - o); + draw z3 -- z4; + labels(4); set_ic(0.75h#); +endchar; +%}}} koppa +%{{{ rho + +grlc_char(rho)(8u#, x_ht#, desc_dp#)(1/2, o_sp); + lft x1 = lft x2 = lft x6 = l; + top y3 = h + o; rt x4 = r; bot y5 = -o; bot y1 = -d - o; + y2 = y4 = 1/2[y3, y5]; x3 = x5 = 1/2[x2, x4]; + y6 = y5 + 1.5v; + draw z1 --- z2 .. z3 .. z4 .. z5{left} .. z6; + labels(1, 2, 3, 4, 5, 6); set_ic_o; +gr_maybe_many_marks(rho, x3); +endchar; + +%}}} rho +%{{{ sigma + +grlc_char(final_sigma)(7u#, x_ht#, desc_dp#)(1/2,1/2); + rt x1 = rt x5 = r; top y2 = h + o; lft x3 = l; + bot y4 = 0; bot y6 = -d - o; + x2 = x4 = 0.55[x3, x1]; y3 = 1/2[y2, y4]; y5 = 1/2[y4, y6]; + y1 = good.y (y2 - 0.5v); x6 = good.x (0.7[x3, x1]); + draw z1 .. z2{left} .. z3{down} .. z4 .. z5{down} .. z6{left}; + labels(1, 2, 3, 4, 5, 6); set_ic_tr; +endchar; + +% Medial looped sigma +grlc_char(sigma)(8.5u#, x_ht#, 0pt#)(o_sp, 1/2); + top y5 = top y6 = h; bot y3 = -d - o; + lft x4 = l; rt x6 = r; + y2 = y4 = 1/2[y3, y5]; x3 = x5 = 1/2[x2, x4]; + rt x2 = hround (l + 8u); + x1 = 0.5[x5, x6]; y1 = bot y5; + draw z1 .. z2{down} .. z3{left} .. z4{up} .. z5 --- z6; + labels(1,2,3,4,5,6); set_ic_tr; +endchar; + +% lunate sigma: +grlc_variant(sigma)(4.5u# + pn.wd#, x_ht#, 0pt#)(1/2,1/3); + draw_C(l, h, r, -d) 0; set_ic_tr; +endchar; + +%}}} sigma +%{{{ tau + +grlc_char(tau)(7u# + pn.wd#, x_ht#, 0pt#)(1/2,1/2); + top lft z1 = (l, h); top rt z2 = (r, h); y3 = y1; + bot y5 = 0 - o; + x3 = 1/2[x1, x2]; % stem joins with bar + x4 = good.x (0.45[x1, x2]); % start of curl + y4 = 0.24[y5, y3]; % at bot of stem + x5 = 0.5[x4, x6]; % bot tangent of curl + x6 = 0.8[x1, x2]; % end of curl + y6 = y5 + 0.25v; + draw z1 -- z2; draw z3 ... z4{down} .. z5{right} .. z6; + labels(1, 2, 3, 4, 5, 6); set_ic_tr; +endchar; +%}}} tau +%{{{ upsilon + +grlc_char(upsilon)(6u# + 2pn.wd#, x_ht#, 0pt#)(2/3, 2/3); + lft x1 = lft x2 = l; bot y3 = -d - o; rt x4 = r; + top y1 = top y5 = h + o; + y2 = 0.45[y3, y1]; y4 = 0.6[y3, y5]; x3 = 0.5[x2, x4]; + x5 = x4 - 0.5u; + draw z1 --- z2 .. z3{right} .. z4{up} .. z5; + labels(1, 2, 3, 4, 5); set_ic(0.9h#); +gr_maybe_many_marks(upsilon, x3); +endchar; + +%}}} upsilon +%{{{ digamma + +grlc_char(digamma)(5u# + pn.wd#, x_ht#, desc_dp#)(1,1/3); + top y1 = top y2 = h; bot y3 = -d - o; + lft x2 = lft x1b = lft x3 = l; rt x1 = r; + y1b = y2b = good.y (0.575[y3, y2]); x2b = good.x (0.75[x2, x1]); + draw z1 -- z2 -- z3; draw z1b -- z2b; + labels(1, 2, 3, 1b, 2b); set_ic_tr; +endchar; + +%}}} digamma +%{{{ chi + +grlc_char(chi)(7.5u#, x_ht#, desc_dp#)(1/2,1/2); + top y1 = top y3 = h + o; bot y2 = bot y4 = -d - o; + lft x4 = l; rt x2 = r; + x1 = good.x (x4 + 0.25u); x3 = good.x (x2 - 0.25u); + z5 = (z1 -- z2) intersectionpoint (z3 -- z4); + draw z1{(z2 - z1) xscaled 2} .. z5 .. z2{(z2 - z1) xscaled 2}; + draw z3 -- z4; + labels(1, 2, 3, 4, 5); set_ic(0.9h#); +endchar; +%}}} chi +%{{{ alpha + +def draw_alpha = + top rt z1 = (r, h + o); bot rt z5 = (r, 0 - o); + lft z3 = (l, 1/2[0, h]); y4 = y1; y2 = y5; + y.j = 1/2[y1, y5]; + x2 = x4 = 0.35[l, r]; x.j = 0.75[x2, x5]; + draw z1 .. z.j .. z2{left} .. z3{up} + .. z4{right} .. z.j .. z5; + labels(1, 2, 3, 4, 5, j); set_ic_tr +enddef; + +grlc_char(alpha)(9u#, x_ht#, 0pt#)(o_sp, 1/2); + draw_alpha; +gr_maybe_many_marks(alpha, 0.2[x4, x1]); +endchar; + +grlc_char(alpha.iota_sub)(9u#, x_ht#, desc_dp#)(o_sp, 1/2); + draw_alpha; + gr_iota_sub.i(0.35[x3, x1]); +gr_maybe_many_marks(alpha.iota_sub, 0.2[x4, x1]); +endchar; + +%}}} alpha +%{{{ eta + +def draw_eta = + draw_n_arch(l,r); + draw (x1, y2) -- (x1, y4); + x.tail = x4; bot y.tail = -d - o; + draw z.tail .. z4{up}; + set_ic_tr; +enddef; + +grlc_char(eta)(n_wd#, x_ht#, desc_dp#)(1,1); + draw_eta; +gr_maybe_many_marks(eta, x2); +endchar; + +grlc_char(eta.iota_sub)(n_wd#, x_ht#, desc_dp#)(1,1); + draw_eta; + gr_iota_sub.i(0.35[x1, x3]); +gr_maybe_many_marks(eta.iota_sub, x2); +endchar; + +%}}} eta +%{{{ omega +% This omega is symmetrical: + +def draw_omega = + if 1/2w <> good.x (1/2w): change_width; fi + top y1 = top y7 = h + o; lft x2 = l; bot y3 = bot y5 = 0 - o; rt x6 = r; + x4 = x4a = 1/2[x2, x6]; x3 = 1/2[x2, x4]; x5 = 1/2[x4, x6]; + + y2 = y6 = 0.5[y3, y1]; y4 = 0.3[y3, y1]; y4a = good.y (0.6[y3, y1]); + x1 = w - x7 = 0.2[x2, x4]; + draw z1 .. z2{down} .. z3{right} .. z4 -- z4a; + draw z7 .. z6{down} .. z5{left} .. z4; +enddef; + +grlc_char(omega)(3pn.wd# + 8.5u#, x_ht#, 0pt#)(2/3, 2/3); + draw_omega; +gr_maybe_many_marks(omega, 1/2w); +endchar; + +grlc_char(omega.iota_sub)(3pn.wd# + 8.5u#, x_ht#, desc_dp#)(2/3, 2/3); + draw_omega; + gr_iota_sub.i(x4); +gr_maybe_many_marks(omega.iota_sub, 1/2w); +endchar; + +%}}} omega +%{{{ omicron + +iff known code.gr.lc.omicron: "l.c. omicron"; +ma_char(code.gr.lc.omicron, 8u#, x_ht#, 0v#)(o_sp, o_sp); + draw_circle(l - ho, h + oo, r + ho, -d - oo); + set_ic_o; +gr_maybe_many_marks(omicron, 1/2w); +endchar; + +%}}} omicron + +if false: +%{{{ marks for Greek letters +%{{{ no accent + +gr_mk(len); + gr_breathing(1/2w - 1.5u, h, 1/2w + u, gr_mk_bot) true; +endchar; + +gr_mk(asp); + gr_breathing(1/2w - 1u, h, 1/2w + 1.5u, gr_mk_bot) false; +endchar; + +gr_mk(di); + gr_draw_twodots.d(2u + dot_wd, gr_mk_bot); +endchar; +%}}} no accent +%{{{ acute + +gr_mk(acute); + 1/2[x1, x2] = 1/2w; gr_draw_ag true; +endchar; + +gr_mk(di.acute) + x2 = 1/2w; gr_draw_ag true; gr_draw_twodots.d(5u, gr_mk_bot); +endchar; + +gr_mk(len.acute); + gr_breathing.b(1/2w - 2.75u, h, 1/2w - 1/4u, gr_mk_bot) true; + lft x2 = 1/2w + 1/4u; gr_draw_ag true; +endchar; + +gr_mk(asp.acute); + gr_breathing.b(1/2w - 2.5u, h, 1/2w, gr_mk_bot) false; + lft x2 = 1/2w; gr_draw_ag true; +endchar; +%}}} acute +%{{{ grave + +gr_mk(grave) + 1/2[x1, x2] = 1/2w; gr_draw_ag false; +endchar; + +gr_mk(di.grave) + x2 = 1/2w; gr_draw_ag false; gr_draw_twodots.d(5u, gr_mk_bot); +endchar; + +gr_mk(len.grave); + gr_breathing.b(1/2w - 3.5u, h, 1/2w - u, gr_mk_bot) true; + lft x2 = 1/2w; gr_draw_ag false; +endchar; + +gr_mk(asp.grave); + gr_breathing.b(1/2w - 4u, h, 1/2w - 1.5u, gr_mk_bot) false; + lft x2 = 1/2w; gr_draw_ag false; +endchar; +%}}} grave +%{{{ circumflex + +gr_mk(circumflex); + gr_circ(1/2w - 2u, gr_mk_bot, 1/2w + 2u, h - v); +endchar; + +gr_mk(di.circumflex); + gr_circ.a(1/2w - 2u, gr_mk_bot + 1v, 1/2w + 2u, h); + gr_draw_twodots.d(u + dot_wd, gr_low_mk_bot); +endchar; + +gr_mk(len.circumflex); + gr_circ.a(1/2w - 2u, gr_mk_bot + 1.25v, 1/2w + 2u, h); + gr_breathing.b(1/2w - 1u, h - 1.25v, 1/2w + 1u, gr_low_mk_bot) false; +endchar; + +gr_mk(asp.circumflex); + gr_circ.a(1/2w - 2u, gr_mk_bot + 1.25v, 1/2w + 2u, h); + gr_breathing.b(1/2w - 1u, h - 1.25v, 1/2w + 1u, gr_low_mk_bot) true; +endchar; +%}}} circumflex +%{{{ tilde + +gr_mk(tilde); + gr_tilde(1/2w - 2.5u, gr_mk_bot, 1/2w + 2.5u, h - v); +endchar; + +gr_mk(di.tilde); + gr_tilde.a(1/2w - 2.5u, gr_mk_bot + 1.25v, 1/2w + 2.5u, h); + gr_draw_twodots.d(u + dot_wd, gr_low_mk_bot); +endchar; + +gr_mk(len.tilde); + gr_tilde.a(1/2w - 2.5u, gr_mk_bot + 1.5v, 1/2w + 2.5u, h); + gr_breathing.b(1/2w - 2u, h - 1.25v, 1/2w + 0u, gr_low_mk_bot) false; +endchar; + +gr_mk(asp.tilde); + gr_tilde.a(1/2w - 2.5u, gr_mk_bot + 1.5v, 1/2w + 2.5u, h); + gr_breathing.b(1/2w - 1.5u, h - 1.25v, 1/2w + 0.5u, gr_low_mk_bot) true; +endchar; +%}}} tilde +%{{{ iota subscript + +iff known code.gr.iota_sub: +ma_char(code.gr.iota_sub, 8u#, 0pt#, desc_dp#)(0,0); + gr_iota_sub(0.4w); +endchar; +%}}} iota subscript +%{{{ the new universal accent + +gr_mk(accent); + x1 = x2 = 1/2w; + top y1 = h; bot y2 = gr_mk_bot; + draw z1 -- z2; + labels(1, 2); +endchar; +%}}} the new universal accent +%}}} magrlc.mf +fi + +if known code.gr.lc.alpha: +%{{{ ligtable + +def startligtable(suffix $$$) = + ligtable code.$$$: + if string ligs.$$$: + scantokens ligs.$$$ + else: + code.null kern 0pt# + fi +enddef; + +string ligs.gr.acute; +ligs.gr.acute = "code.gr.acute =: code.apostrophe" + & ", code.cwm =:| code.apostrophe"; + +startligtable(gr.lc.sigma) + forsuffixes $$ = cwm, comma, full_stop, gr.colon, gr.question, exclam: + , code$$ =:| code.gr.lc.final_sigma + endfor + ; +show boundarychar; + +forsuffixes $ = di, len, asp: + startligtable(gr.$) + forsuffixes # = alpha, alpha.iota_sub, epsilon, eta, eta.iota_sub, + iota, omicron, upsilon, omega, omega.iota_sub, rho: + if known code.gr.lc.#.$: + , code.gr.lc.# =: code.gr.lc.#.$ + fi + endfor + forsuffixes @ = acute, grave, circumflex, tilde, accent: + if known code.gr.$.@: + , code.gr.@ =: code.gr.$.@ + fi + endfor + ; + forsuffixes @ = acute, grave, circumflex, tilde, accent: + if known code.gr.$.@: + startligtable(gr.$.@) + forsuffixes # = alpha, alpha.iota_sub, epsilon, + eta, eta.iota_sub, iota, omicron, upsilon, + omega, omega.iota_sub, rho: + if known code.gr.lc.#.$.@: + , code.gr.lc.# =: code.gr.lc.#.$.@ + fi + endfor + ; + fi + endfor +endfor + +forsuffixes @ = acute, grave, circumflex, tilde, accent: + if known code.gr.@: + startligtable(gr.@) + forsuffixes # = alpha, alpha.iota_sub, epsilon, eta, eta.iota_sub, + iota, omicron, upsilon, omega, omega.iota_sub, rho: + if known code.gr.lc.#.@: + , code.gr.lc.# =: code.gr.lc.#.@ + fi + endfor + forsuffixes $ = di, asp, len: + if known code.gr.$.@: + , code.gr.$ =: code.gr.$.@ + fi + endfor + ; + fi +endfor + +forsuffixes # = alpha, eta, omega: + forsuffixes $ = , len, asp: + forsuffixes @ = , accent, acute, grave, circumflex: + if known code.gr.lc.#.iota_sub.$.@: + startligtable(gr.lc.#.$.@) + , code.gr.iota_sub =: code.gr.lc.#.iota_sub.$.@ + ; + fi + endfor + endfor +endfor + +if known code.en_dash: + ligtable code.hyphen: code.hyphen =: code.en_dash; + if known code.em_dash: + ligtable code.en_dash: code.hyphen =: code.em_dash; + fi +fi + +if known code.guillemet.left: + ligtable code.paren.left: code.paren.left =: code.guillemet.left; + ligtable code.paren.right: code.paren.right =: code.guillemet.right; +fi + + +%}}} ligtable +fi + +%}}} magrlc.mf + +%Local variables: +%fold-folded-p: t +%End: + diff --git a/fonts/malvern/source/makit.mf b/fonts/malvern/source/makit.mf new file mode 100644 index 0000000000..00b50406d2 --- /dev/null +++ b/fonts/malvern/source/makit.mf @@ -0,0 +1,1167 @@ +% makit.mf 1.2.0 94/10/11 -- bits of "kit" +% Copyright 1991, 1992, 1993 P. Damian Cugley. + +%%% @METAFONT-file { +%%% filename = "makit.mf", +%%% version = "1.2.0", +%%% date = "1994/10/11", +%%% package = "Malvern 1.2", +%%% author = "P. Damian Cugley", +%%% email = "damian.cugley@comlab.ox.ac.uk", +%%% address = "Oxford University Computing Laboratory, +%%% Parks Road, Oxford OX1 3QD, UK", +%%% codetable = "USASCII", +%%% keywords = "Malvern, METAFONT, font, typefont, TeX", +%%% supported = "Maybe", +%%% abstract = "Macro definitions for the Malvern +%%% font family.", +%%% dependencies = "other program files", +%%% } + +% See the Malvern Handbook (maman.tex) for more info about Malvern. +% This software is available freely but without warranty. +% See the file COPYING for details. + +%{{{ makit.mf +% See the file COPYING for details. + +%{{{ oneof -- check if elt in set + +% if oneof(1,5,7)var: ...; fi + +def oneof(text t) suffix $ = + false + for i = t: or ($ = i) endfor +enddef; + +%}}} +%{{{ |ma_char| -- macro to start/end characters with + +% Instead of giving the width of the bounding box and then +% drawing within it -- as with most font programs -- I make explicit in +% the character program's header how much space is left on either side +% of the glyph itself. + +% This is used to calculate the usual |w| value, and also |l| and |r|, +% which are set to be the left and right edges of the glyph. The +% character programs then set points etc. relative to |l| and |r| +% rather than |0| and |w|. + +def ma_char(expr code, w_sharp, h_sharp, d_sharp, l_sp, r_sp) = + beginchar(code_offset + byte code, % matched by endchar + if known force_wd#: force_wd# else: w_sharp + (l_sp + r_sp) * sp# fi, + h_sharp, d_sharp); + h# := charht; l# := l_sp * sp#; r# := charwd - r_sp * sp#; + % for italcor calc + l := hround (l_sp * sp); + if known force_wd#: + r := hround (charwd * hppp - r_sp*sp); + else: + r := l + hround (w_sharp * hppp); + fi + pickup the_pen; +enddef; +%}}} +%{{{ beginglyph etc. -- new conventions + +% New beginglyph acts like beginchar but has no code parameter +% The code is given to shipglyph or endglyph. + +def beginglyph(expr w_sharp, h_sharp, d_sharp) = + begingroup % matched by endglyph + charcode := -1; + charwd := w_sharp; w := hround(charwd * hppp); + charht := h_sharp; h := vround(charht * hppp); + chardp := d_sharp; d := vround(chardp * hppp); + charic := 0; clearxy; clearit; clearpen; + glyph_tmp := nullpicture; glyph_set := false; + scantokens extra_beginchar; + scantokens extra_beginglyph +enddef; + +def endglyph(expr code) = + if known code: + scantokens extra_endchar; scantokens extra_endglyph; + if proofing > 0: makebox(proofrule); fi + charcode := code_offset + byte code; chardx := w; + shipit; + if displaying > 0: makebox(screenrule); showit; fi + fi + endgroup % matches beginglyph +enddef; + +% Shipglyph may be used between beginglyph and endglyph +% it ships out the current picture with the goven code +% and then if this is a composite glyph it restores the base glyph +% (the picture that was current the first time shipglyph was invoked). +% +% thus +% beginglyph(w,h,d); +% ... +% shipglyph(base); +% ... (draw acute) +% shipglyph(base.acute) +% ... (draw grave) +% shipglyph(base.grave) +% ... (draw circumflex) +% endchar(base.circumflex) +% +def shipglyph(expr code) = + if known code: + if not glyph_set: glyph_tmp := currentpicture; fi + scantokens extra_endchar; scantokens extra_endglyph; + if proofing > 0: makebox(proofrule); fi + charcode := code_offset + byte code; chardx := w; + shipit; + if displaying > 0: makebox(screenrule); showit; fi + if glyph_set: + currentpicture := glyph_tmp; + else: + glyph_set := true; % for next time + fi + fi +enddef; + +string extra_beginglyph, extra_endglyph; +extra_beginglyph = extra_endglyph = ""; +picture glyph_tmp; +boolean glyph_set; + +def ma_glyph(expr w_sharp, h_sharp, d_sharp, l_sp, r_sp) = + beginglyph( % matched by endchar + if known force_wd#: force_wd# else: w_sharp + (l_sp + r_sp) * sp# fi, + h_sharp, d_sharp); + h# := charht; l# := l_sp * sp#; r# := charwd - r_sp * sp#; + % for italcor calc + l := hround (l_sp * sp); + if known force_wd#: + r := hround (charwd * hppp - r_sp*sp); + else: + r := l + hround (w_sharp * hppp); + fi + pickup the_pen; +enddef; + +%}}} +%{{{ alter some standard macros to fit with my l,r convention + +def force_symmetry = + if odd ((r - l) - pn.wd): change_width; fi +enddef; + +def change_width = + begingroup save delta; delta = if w>charwd*hppp: -1 else: +1 fi; + w := w + delta; r := r + delta; + endgroup +enddef; + +def change_depth = + begingroup save delta; delta = if d>chardp*hppp: -1 else: +1 fi; + d := d + delta; + endgroup +enddef; + +def makebox(text rule) = + for y = if charht > x_ht#: body_ht, brack_ht, cap_ht, asc_ht, fig_ht, fi + x_ht, axis_ht + if chardp <> 0: , -desc_dp, -brack_dp, -body_dp fi: + rule ((l,y)t_, (r,y)t_); + endfor + for x = 0, w: rule ((x, h + v)t_, (x, -d - v)t_); endfor % set width + rule ((0, 0)t_, (w,0)t_); + for x = l step u until r: rule ((x,-d)t_, (x, h)t_); endfor + if charic <> 0: + rule ((w + charic/pt#*pt, h o_), (w + charic/pt#*pt, 1/2h o_)); + fi +enddef; +%}}} +%{{{ macros to start l.c. characters with + +def lctitle expr s = + if (byte s > 96) and (byte s < 123): + "lower case " & if string s: s else: "code " & decimal s fi; + fi +enddef; + +def x_char(expr code, w_sharp) = + lctitle code; ma_char(code, w_sharp, x_ht#, 0v#) +enddef; + +def y_char(expr code, w_sharp) = + lctitle code; ma_char(code, w_sharp, x_ht#, desc_dp#) +enddef; + +def b_char(expr code, w_sharp) = + lctitle code; ma_char(code, w_sharp, asc_ht#, 0v#) +enddef; + +def b_glyph(expr w_sharp) = + ma_glyph(w_sharp, asc_ht#, 0v#) +enddef; +%}}} +%{{{ macros to start cap letters with + +def capttl expr code = + if string code: + if (ASCII code > 64) and (ASCII code < 91): + "Capital " & code; + fi + fi +enddef; + +def ma_cap(expr code, wd_sh) = + capttl code; ma_char(code, wd_sh, height#, 0v#) +enddef; + +%}}} macros to start cap letters with +%{{{ The usual iff macro to skip characters with + +% I originally used the more straightforward method of surrounding +% character programs in if ... fi. But this gets too cluttered, +% and the indentation gets out of control... + +% METAFONTbook p.307 +let semi_=; ; let colon_ = : ; let endchar_ = endchar; +let endglyph_ = endglyph; + +def iff expr b = + if b: let next_ = use_it; else: let next_ = lose_it; fi + next_ +enddef; + +def use_it = let : = restore_colon; enddef; +def restore_colon = let : = colon_; enddef; + +def lose_it = + let endchar = fi; let endglyph = fi; let ; = fix_ semi_ + if false % everything from colon to matching |endchar| deleted +enddef; + +def fix_ = + let ; = semi_; let endchar = endchar_; let endglyph = endglyph_; +enddef; + +%}}} +%{{{ |similarly| -- One character program makes several characters + +% Several characters are made by combining one basic glyph (usually a +% letter) with some sort of mark -- for example, `\'e' is a composite +% letter made from `e' and `\'{}'. + +% The |anotherchar| macro ships out the current charcter and then +% starts a new character with the same currentpicture, pen, variables +% etc. |yetanotherchar| reuses the picture from the first char. +% If the new code is |whatever|, the old code + 1 is used. + + +picture anothercharpicture; +boolean finishcharp; + +def remember = + anothercharpicture := currentpicture; + save_chardp := chardp; save_charht := charht; + finishcharp := not co_only +enddef; + +def similarly(expr newcode) = + if known newcode: + if finishcharp: finishchar; else: finishcharp := true; fi + charcode := code_offset + newcode; + chardp := save_chardp; charht := save_charht; + scantokens extra_beginchar; + currentpicture := anothercharpicture; + let next_ = \; + let wug = \; + else: + let next_ = skip_subprog; + fi + next_ +enddef; + +def skip_subprog = + let wug = fi; let ; = sim_fix_ semi_ + if false: % matched by |wug|, whose following |;| becomes |sim_fix_|. +enddef; + +def sim_fix_ = + semi_ let ; = semi_; let wug = \; +enddef; + +def finishchar = + scantokens extra_endchar; + if proofing > 0: makebox(proofrule); fi + chardx := w; shipit; + if displaying > 0: makebox(screenrule); showit; fi +enddef; + +% beginchar(...) +% ... +% remember; +% similarly(...) +% ... +% wug; +% similarly(...) +% ... +% wug; +% endchar; +%}}} +%{{{ italic corrections + +def set_ic expr z = + italcorr r# + slant*z + 1/2sp# - charwd +enddef; + +def set_icc(expr tx, ty) expr y = + charic := max(0, tx + slant*ty + 1/2sp# - charwd, + r# + slant*y + 1/2sp# - charwd); +enddef; + +def set_ic_Oo(expr wd, ht) = + for theta = angle (1, slant): + x# := wd * cosd theta + (r# - wd) + + slant * (ht * sind theta + ht); + charic := max(0, x# + 1/2sp# - charwd); + endfor +enddef; +def set_ic_o = set_ic_Oo(4u#, 4v#) enddef; +def set_ic_O = + if hratio >= 0.9: + set_ic_Oo(1/2width#, 1/2height#) + else: + set_ic(11/12h#) + fi +enddef; +def set_ic_tr = set_ic h# enddef; +def set_ic_e = set_ic_o enddef; +%}}} +%{{{ Circles & arcs + +vardef draw_circle@#(expr leftx, topy, rightx, boty) = + x1@# = x3@# = 1/2[x0@#, x2@#]; y0@# = y2@# = 1/2[y1@#, y3@#]; + top y1@# = topy; bot y3@# = boty; + rt x0@# = rightx; lft x2@# = leftx; + z1a@# = z3b@# = z0@#; z1b@# = z3a@# = z2@#; % for later calculations + draw superellipse(z0@#, z1@#, z2@#, z3@#)(1/sqrt2); + labels(0@#, 1@#, 2@#, 3@#) +enddef; + +def hvarc(suffix f, t) = + z.f + ... (1/sqrt2)[(x.f, y.t), (x.t, y.f)]{z.t - z.f} + ... z.t +enddef; + +def vharc(suffix f, t) = + z.f + ... (1/sqrt2)[(x.t, y.f), (x.f, y.t)]{z.t - z.f} + ... z.t +enddef; + +%}}} +%{{{ "box" x.l, x.r, ... for simple boxlike chars + +vardef box_points@# = + lft x@#l = l; rt x@#r = r; + top y@#t = h; bot y@#b = -d; + y@#m = good.y (0.55[y@#b,y@#t]); +enddef; + +vardef draw_box_l@# = draw (x.l, y.t) -- (x.l, y.b) enddef; +vardef draw_box_r@# = draw (x.r, y.t) -- (x.r, y.b) enddef; +vardef draw_box_l_o@# = draw (x.l, y.t + o) -- (x.l, y.b - o) enddef; +vardef draw_box_r_o@# = draw (x.r, y.t + o) -- (x.r, y.b - o) enddef; +vardef draw_box_t@# = draw (x.l, y.t) -- (x.r, y.t) enddef; +vardef draw_box_m@# = draw (x.l, y.m) -- (x.r, y.m) enddef; +vardef draw_box_b@# = draw (x.l, y.b) -- (x.r, y.b) enddef; +vardef draw_box@# = + draw (x.l, y.b) -- (x.r, y.b) -- (x.r, y.t) -- (x.l, y.t) -- cycle +enddef; +%}}} +%{{{ apex + +vardef apex.x primary x = + save trial; trial := hround x; + if odd apex_adjust: + if trial > x: trial - 1/2 else: trial + 1/2 fi + else: + trial + fi +enddef; + +vardef apex_path@# = + x@#a = x@# - 1/2apex_adjust; + x@#c = x@# + 1/2apex_adjust; + x@#b = 1/2[x@#a, x@#c]; + y@#a = y@#c = y@#; y@#b = y@# + apex_o; + labels(@#a,@#b,@#c); + z@#a & z@#a .. z@#b .. z@#c & z@#c +enddef; + +vardef vpex_path@# = + x@#a = x@# - 1/2apex_adjust; + x@#c = x@# + 1/2apex_adjust; + x@#b = 1/2[x@#a, x@#c]; + y@#a = y@#c = y@#; y@#b = y@# - apex_o; + labels(@#a,@#b,@#c); + z@#a & z@#a .. z@#b .. z@#c & z@#c +enddef; +%}}} + +vardef draw_dot@# = + fill fullcircle xscaled dot_wd yscaled dot_ht shifted z@# +enddef; + +%{{{ Left stem + +vardef left_stem@#(expr to, bo) = + lft x@#1 = lft x@#2 = l; + top y@#1 = h + to; bot y@#2 = -d - bo; + draw z@#1 -- z@#2; + labels(@#1, @#2); +enddef; + +vardef D_stem@# = left_stem@#(0,0) enddef; +vardef P_stem@# = left_stem@#(0,o) enddef; +vardef H_stem@# = left_stem@#(o,o) enddef; +%}}} +%{{{ Macros for symetrical characters: + +boolean b; + +def leftright = if b: "left " else: "right " fi & enddef; +def lftrt = if b: lft else: rt fi enddef; +def rtlft = if b: rt else: lft fi enddef; +def topbot = if b: top else: bot fi enddef; +def bottop = if b: bot else: top fi enddef; +def lr = if b: l else: r fi enddef; +def rl = if b: r else: l fi enddef; +def hd = if b: h else: -d fi enddef; +def dh = if b: -d else: h fi enddef; +def minmax = if b: min else: max fi enddef; +def maxmin = if b: max else: min fi enddef; +def plus = if b: + else: - fi enddef; +def minus = if b: - else: + fi enddef; + +pair ne, se; ne = (hratio, 1); se = (hratio, -1); +%}}} +%{{{ Marks + +% These have an anchor point and width and height +% For marks that go above characters, anchor point is optical centre +% of top of character. +% For cedilla, it is bottom of character. +% Width and height are of the mark itself + +%{{{ cedilla + +def cedilla_pen(expr w, h) = + begingroup + save ww, hh; + hh = min(pn.ht, 0.4h); + ww = min(pn.wd, 0.5w); + pencircle xscaled ww yscaled hh + endgroup +enddef; + +vardef draw_cedilla@#(expr anchorx, anchory, wd, ht) = + pickup cedilla_pen(wd, ht); + top y1@# = vround anchory; bot y5@# = vround(anchory - ht); + y3@# = 0.5[y1@#, y5@#]; x5@# = 0.66[x3@#, x6@#]; + anchorx = 1/2[x1@#, x3@#]; + lft x6@# + hround wd = rt x3@#; + y6@# = y5@# + 1/2v#; + x1@# = 1/2[x6@#, x3@#]; + draw z1@#{right} ... z3@#{down} ... z5@#{left} ... z6@#; + labels(1@#, 2@#, 3@#, 4@#, 5@#, 6@#); + pickup the_pen; +enddef; + +%}}} cedilla +%{{{ ring + +% pdc Wed. 30 Oct. 1991 +vardef draw_clear_ring@#(expr anchorx, anchory, wd_, ht_) = + numeric wd, ht; + % will shrink ring slightly to make it circular: + if (wd_ < ht_) and (wd_/ht_ > 0.9): + ht = wd = wd_; + elseif (ht_ < wd_) and (ht_/wd_ > 0.9): + wd = ht = ht_; + else: + wd = wd_; ht = ht_; + fi + numeric ring.pn.ht, ring.pn.wd; + ring.pn.ht = vround max(1, min(1/3(ht), acc.pn.th)); + ring.pn.wd = hround max(1, min(1/3wd, acc.pn.th)); + pickup pencircle xscaled ring.pn.wd yscaled ring.pn.ht; + top y1@# = vround (anchory + ht); + bot y3@# = vround (anchory); + lft x2@# = hround (anchorx - 1/2wd - eps); + rt x4@# = hround (anchorx + 1/2wd + eps); + x1@# = x3@# = 1/2[x2@#, x4@#]; y2@# = y4@# = 1/2[y1@#, y3@#]; + draw superellipse(z4@#, z1@#, z2@#, z3@#, + (max(0, weight - 1))[1/sqrt2, 0.8]); + labels(1@#, 2@#, 3@#, 4@#); + pickup the_pen; +enddef; + + +% A ring that connects to the top of the character! +% pdc Fri. 1 Nov. 1991 +vardef draw_joined_ring@#(expr anchorx, anchory, wd_, ht_) = + numeric lap; lap = pn.ht - o; + numeric wd, ht; + % will shrink ring slightly to make it circular: + if (wd_ < ht_ ) and (wd_/(ht_ + lap) > 0.9): + ht + lap = wd = wd_; + elseif (ht_ < wd_) and (ht_/wd_ > 0.9): + wd = ht= ht_; + else: + wd = wd_; ht = ht_; + fi + numeric ring.pn.ht, ring.pn.wd; + ring.pn.ht = vround max(1, min(1/3ht, acc.pn.th)); + ring.pn.wd = hround max(1, min(1/3wd, acc.pn.th)); + pickup pencircle xscaled ring.pn.wd yscaled ring.pn.ht; + top y1@# = vround (anchory + ht - lap); + bot y3@# = vround (anchory - lap); + lft x2@# = hround (anchorx - 1/2wd - eps); + rt x4@# = hround (anchorx + 1/2wd + eps); + x1@# = x3@# = 1/2[x2@#, x4@#]; y2@# = y4@# = 1/2[y1@#, y3@#]; + draw superellipse(z4@#, z1@#, z2@#, z3@#, + (max(0, weight - 1))[1/sqrt2, 0.8]); + labels(1@#, 2@#, 3@#, 4@#); + pickup the_pen; +enddef; +%}}} ring +%{{{ acute & grave + +vardef draw_acute_grave@#(expr anchorx, anchory, wd_, ht_) expr grave = + b := grave; pickup mark_pn; + rtlft x2@# = hround (anchorx plus 1/3wd_); + lftrt x1@# = hround (rtlft x2@# minus wd_); + x1'@# = x1@# plus (pn.wd - acc.pn.th); + top y1@# = top y1'@# = anchory + ht_; + bot y2@# = anchory; + draw z2@# -- z1@# -- z1'@# -- z2@#; + labels(1@#, 1'@#, 2@#, 3@#) +enddef; + +%}}} acute +%{{{ dot & twodots + +vardef draw_dot_mark@#(expr anchorx, anchory, wd, ht) = + pickup pencircle xscaled dot_wd yscaled dot_ht; + x@# = anchorx; + y@# = min(anchory + ht - 1/2dot_ht, + max(anchory + 1/2ht, anchory + 1/2dot_wd)); + drawdot z@#; + labels(@#); +enddef; + +vardef draw_twodots@#(expr anchorx, anchory, wd, ht) = + pickup pencircle xscaled dot_wd yscaled dot_ht; + lft x1@# = hround (anchorx - 1/2(hround wd) - eps); + rt x2@# = hround (anchorx + 1/2(hround wd) + eps); + y1@# = y2@# = min(anchory + ht - 1/2dot_ht, + max(anchory + 1/2ht, anchory + 1/2dot_wd)); + drawdot z1@#; drawdot z2@#; + labels(1@#, 2@#); +enddef; + +%}}} dot & twodots +%{{{ circumflex + +vardef draw_circumflex@#(expr anchorx, anchory, width, height) expr inverted_p = + b := inverted_p; + pickup mark_pn; + lft x1@# = hround (anchorx - 1/2width - eps); % |-eps| is for symmetry + rt x3@# = good.x (anchorx + 1/2width); + x2@# = x2'@# = 1/2[x1@#,x3@#]; + topbot y1@# = topbot y3@# + = vround (if inverted_p: anchory + height else: anchory fi); + bottop y2@# = bottop y2'@# minus pn.wd plus acc.pn.th + = vround (if inverted_p: anchory else: anchory + height fi); + % Now for some digitization hacks: + numeric rat; rat := (x2@# - x1@#) / (y2@# - y1@#); + if not inverted_p and (rat > 1): + y1@# := y3@# := + max(top anchory - 1/2v, y2@# - (x2@# - x1@#)); + elseif inverted_p and (rat < 1): + y2@# := max(top anchory - 1/2v, y1@# - (x2@# - x1@#)); + y2'@# := y2@# + pn.wd - acc.pn.th; + fi + draw z1@# -- z2@# -- z3@#; %%%% -- z2'@# -- z1@# + labels(1@#,2@#,2'@#,3@#); +enddef; + +%}}} +%{{{ tilde + +% This glyph is rather simpler than the original in mamarks.mf. + +vardef draw_tilde@#(expr anchorx, anchory, width, height) = + pickup mark_pn; + lft x1@# = hround (anchorx - 1/2width - eps); + rt x5@# = hround (anchorx + 1/2width); + z3@# = (1/2[x1@#, x5@#], 1/2height + anchory); + x2@# = 1/2[x1@#,x3@#]; x4@# = 1/2[x3@#,x5@#]; + top y2@# = anchory + height; bot y4@# = anchory; + bot y1@# = anchory + 1/4height - o; + top y5@# = anchory + 3/4height + o; + draw z1@# ... z2@#{right} ... z3@# ... z4@#{right} ... z5@#; + labels(1@#, 2@#, 3@#, 4@#, 5@#); +enddef; + +%}}} tilde +%{{{ breve + +vardef draw_breve@#(expr anchorx, anchory, width, height) = + pickup mark_pn; + top y1@# = top y3@# = anchory + height; + bot y2@# = anchory; + lft x1@# = hround (anchorx - 1/2width); + rt x3@# = hround (anchorx + 1/2width); + x2@# = 1/2[x1@#, x3@#]; + draw z1@#{down} ... z2@# ... z3@#{up}; + labels(1@#, 2@#, 3@#); +enddef; + +%}}} breve +%{{{ variant hacek -- for d and t +% resembles an apostrophe stuck onto the right hand side of letter +% corresponds to the inverted circumflex mark on c, e, n, r, s, z + +vardef draw_hook@# = + top z1a@# = (r - 0.55hook_wd, asc_ht); + top z1@# = (r - hook_wd, asc_ht - 1/4v); + rt x2@# = r; y2@# = 0.77[y3@#, y1@#]; + bot lft z3@# = (min(r - hook_wd + 1/2u, lft x2@#), x_ht); + draw z1@# ... z1a@#{right} ... z2@#{down} ... z3@#; + labels(1@#, 2@#, 3@#); +enddef; + +%}}} variant hacek +%{{{ macron + +vardef draw_macron@#(expr anchorx, anchory, wd, ht) = + pickup mark_pn; + 1/2[x@#1, x@#2] = good.x anchorx; y@#1 = y@#2 = good.y anchory + 1/2ht; + lft x@#1 = hround (good.x anchorx - 1/2wd); + draw z@#1 -- z@#2; + labels(@#1, @#2); +enddef; + +%}}} amcron +%}}} Marks +%{{{ Macros for letters that are same in caps as l.c. +%{{{ slash for O and o + +def draw_O_slash = + x1slash = good.x (1/12[l,r] - eps); + y1slash = good.y (1/12[0,h] - eps); + z2slash = z1slash + whatever*(hratio,1); + y2slash = h - y1slash; + draw z1slash -- z2slash; + labels(1slash, 2slash); +enddef; + +%}}} +%{{{ V + +def draw_V = + if 1/2w <> hround 1/2w: change_width; fi + top lft z1 = (l, h + o); top rt z3 = (r, h + o); + bot z2 = (1/2w, -d); + draw z1 -- vpex_path2 -- z3; + labels(1, 2, 3); +enddef; + +%}}} V +%{{{ X +def draw_X expr magic = + lft x1 = w - rt x3 = magic[l, r]; top y1 = top y3 = h + o; + rt x2 = w - lft x4 = r; bot y2 = bot y4 = -d -o; + draw z1 -- z2; draw z3 -- z4; + labels(1,2,3,4) +enddef; +%}}} X +%{{{ Y, yen + +def draw_Y(expr ytwo) = + if 1/2w <> good.x 1/2w: change_width; fi + lft x1 = w - rt x3 = l; top y1 = top y3 = h + o; + x2 = x4 = 1/2[x1,x3]; bot y4 = -d -o; + y2 = ytwo; + draw z1 -- apex_path2 -- z3; draw z2 -- z4; + labels(1,2,3,4); +enddef; + +%}}} +%{{{ C + +% become ovals when compressed -- pdc Fri. 3 May 1991 + +vardef draw_C@#(expr leftx, topy, rightx, boty) expr curl = + lft x3@# = leftx; y3@# = 1/2[boty, topy]; + rt x1@# = rt x5@# = rightx; + z2@# = z3@# + whatever*(hratio,1); top y2@# = topy + o; + z4@# = z3@# + whatever*(hratio,-1); bot y4@# = boty - o; + % round form: + % The top edge curls is an arc with centre z4@# + save deltay, deltax; + deltax = lft rightx - x4@#; + deltay = (y2@# - y4@#) +-+ deltax; + z1@# = z4@# + whatever*(deltax, deltay); + z5@# = z2@# + whatever*(deltax, -deltay); + %% top y1@# = topy + boty - bot y5@# = good.y curl[topy,boty]; + draw z1@#{(-deltay, deltax)} + .. z2@#{left} .. z3@#{down} .. z4@#{right} .. + {(deltay, deltax)}z5@#; + labels(1@#,2@#,3@#,4@#,5@#); +enddef; +%}}} +%{{{ S + +def draw_S(expr topy, boty)(expr magic, top_magic, bot_magic) = + x2 = x4 = x6; + top y2 = topy + o; bot y6 = boty - o; + lft x3 = w - rt x1 + = if r - l > 15: hround (1/20[l,r] - eps) else: l fi; + lft x7 = w - rt x5 = l; + y3 = 1/2[y2,y4]; y5 = 1/2[y4,y6]; + y4 = good.y (magic[boty, topy] + eps); + top y1 = top_magic[topy, boty]; + bot y7 = bot_magic[boty, topy]; + z4 = whatever[z3, z5]; + draw z1 ... hvarc(2,3) .. z4 .. vharc(5,6) ... z7; + labels(range 1 thru 7); +enddef; + +%}}} +%}}} +%{{{ cap kit +%{{{ cap codes + +numeric capmode; capmode := 1; % 1 for LC, 2 for MC, 3 for SC +vardef capcode@# = + if capmode = 1: code.cap@# + elseif capmode = 2: code.mc@# + else: code.sc@# + fi +enddef; + +%}}} cap codes +%{{{ set_cap_widths + +def set_cap_widths = + if unknown height#: height# := cap_ht#; fi + width# := height# * hratio; + % narrow etc. s.cap letters will be proportionately wider: + narrow_wd# := 1/2[0.6width#, 6u#]; + medium_wd# := 1/3[0.7width#, 8u#]; + wide_wd# := 1/4[0.8width#, 10u#]; + % define these as pixels for making ligature chars: + define_pixels(width, narrow_wd, medium_wd, wide_wd); + % adjustment for width of pen for some letters: + pn_adj# := 1/2(pn_wd# - 1/12width#); + % width and spacing of capital O: + O_wd# := width# + cap.pn.wd# - cap.pn.ht#; + O_sp := 1/2; + % size of marks: + mark_b# := min(body_ht#, height# + 0.75v#); + mark_t# := min(mark_b# + 2.5v#, body_ht# + 1.25v#); + define_whole_vertical_pixels(mark_t, mark_b); + mark_ht := mark_t - mark_b; +enddef; + +%}}} set_cap_widths +%{{{ A/Delta/Lambda + +% Draw a letter A -- sets IC, changes width to make symmetrical etc. +% apex is z@#2, feet are z@#1 and z@#3 +% barp and boolp are booleans + +vardef A_body@#(expr barp, basep) = + if 1/2w <> apex.x 1/2w: change_width; fi + lft x1@# = w - rt x3@# = l; + bot y1@# = bot y3@# = 0 if not basep: - o fi; + top z2@# = (1/2w, h); + draw z1@# -- apex_path2@# -- z3@# if basep: -- cycle fi; + if barp: + lft z1@#bar = whatever[z1@#, z2@#]; rt z2@#bar = whatever[z3@#, z2@#]; + y1@#bar = y2@#bar = good.y ((1 - golden_ratio) * h); + draw z1@#bar -- z2@#bar; + labels(1@#bar, 2@#bar); + fi + labels(1@#, 2@#, 3@#); + set_ic 0v#; +enddef; + +%}}} +%{{{ EFL + +def do_EFL(expr code, tb_p, mbl, mb, bb_p) = + ma_cap(code, narrow_wd# + pn_adj#)(1, 1/2); + box_points; + draw (x.l, y.t) -- (x.l, y.b); + if tb_p: draw_box_t; set_ic_tr; else: set_ic 0v#; fi + if mb > 0: draw (mbl[x.l,x.r], y.m) -- (mb[x.l,x.r], y.m); fi + if bb_p: draw_box_b; fi + endchar +enddef; + +%}}} EFL +%{{{ O + +def draw_O = + draw_circle(l - ho, h + oo, r + ho, - oo) +enddef; +%}}} O +%{{{ how to draw the bowl of a D or P + +vardef D_bowl@#(expr topy, boty, rightx) suffix $ = % $ is a [DP]_stem + x1@# = x5@# = x$1; x2@# = x4@#; + top y1@# = top y2@# = topy; bot y4@# = bot y5@# = boty; + y3@# = 1/2[y1@#, y5@#]; rt x3@# = rightx; + z2@# = z3@# + whatever*(min(1, hratio),-1); + draw z1@# --- z2@# .. z3@# .. z4@# --- z5@#; + labels(1@#,2@#,3@#,4@#,5@#); +enddef; + +%}}} +%{{{ cap marks + +def some_cap_marks(expr nicex) suffix @ = +if not no_co: + similarly(capcode@acute); str @ & " acute"; + charht := mark_t#; + draw_acute_grave.acute(nicex, mark_b, acute_wd, mark_ht) false; + wug; + similarly(capcode@grave); str @ & " grave"; + charht := mark_t#; + draw_acute_grave.grave(nicex, mark_b, acute_wd, mark_ht) true; + wug; + similarly(capcode@twodots); "Capital " & str @ & " two-dots"; + charht := mark_t#; + draw_twodots.twodots(nicex, mark_b, acute_wd + dot_wd, mark_ht); + wug; + similarly(capcode@circumflex); "Capital " & str @ & " circumflex"; + charht := mark_t#; + draw_circumflex.circumflex(nicex, mark_b, + max(acute_wd, 2mark_ht * hratio - pn.wd), + mark_ht) false; + wug; + similarly(capcode@tilde); "Capital " & str @ & " tilde"; + charht := mark_t#; + draw_tilde.tilde(nicex, mark_b, + max(acute_wd, 2mark_ht * hratio - pn.wd), mark_ht); + wug; + similarly(capcode@breve); "Capital " & str @ & " breve"; + charht := mark_t#; + draw_breve.breve(nicex, mark_b, + max(acute_wd, 2mark_ht * hratio - pn.wd), mark_ht); + wug; + similarly(capcode@hook); "Capital " & str @ & " hook"; + charht := mark_t#; + draw_circumflex.hook(nicex, mark_b, + max(acute_wd, 2mark_ht * hratio - pn.wd), mark_ht) true; + wug; +fi +enddef; + +%}}} cap marks +%}}} cap kit +%{{{ l.c. kit +%{{{ how to draw b bowl + +b_wd# := if italic: 1/2pn.wd# + 5.75u# else: 1/2pn.wd# + 6.5u# fi; + +let {{ = if; let }} = fi; let | = elseif; +if italic: + vardef draw_b_bowl@#(expr l, by, r, h, bl, x_ht) expr left_p = + b := left_p; + {{b: lft else: rt}} x@#1stem = + {{b: lft else: rt}} x@#2stem = + {{b: lft else: rt}} x@#1bowl = + {{b: lft else: rt}} x@#5bowl = {{b: l else: r}}; + {{b: rt else: lft}} x@#3bowl = {{b: r else: l}}; + top y@#1stem = {{b: h + o else: h }}; + bot y@#2stem = {{b: by else: by - o}}; + + if b: + x@#2bowl = 0.7[x@#1bowl,x@#3bowl]; + x@#4bowl = 0.45[x@#1bowl,x@#3bowl]; + top y@#2bowl = x_ht + o; bot y@#4bowl = bl; + bot y@#5bowl = bl; top y@#1bowl = 5/8[bot bl, x_ht]; + else: + x@#4bowl = 0.7[x@#1bowl,x@#3bowl]; + x@#2bowl = 0.45[x@#1bowl,x@#3bowl]; + top y@#2bowl = x_ht; bot y@#4bowl = bl - o; + bot y@#5bowl = 3/8[bl, x_ht]; top y@#1bowl = x_ht; + fi + y@#3bowl = 1/2[y@#2bowl, y@#4bowl]; + draw z@#1bowl if b: {(z@#2bowl - z@#1bowl) yscaled 2} fi + ... z@#2bowl{plus right} .. z@#3bowl .. z@#4bowl{plus left} + ... if not b: {(z@#5bowl - z@#4bowl) yscaled 2} fi z@#5bowl; + labels(@#1bowl, @#2bowl, @#3bowl, @#4bowl, @#5bowl, @#1stem, @#2stem); + enddef; +else: + vardef draw_b_bowl@#(expr l, by, r, h, bl, x_ht) expr left_p = + b := left_p; + {{b: lft else: rt}} x@#1stem = + {{b: lft else: rt}} x@#2stem = + {{b: lft else: rt}} x@#1bowl = + {{b: lft else: rt}} x@#5bowl = {{b: l else: r}}; + {{b: rt else: lft}} x@#3bowl = {{b: r else: l}}; + top y@#1stem = h + o; bot y@#2stem = by - o; + x@#2bowl = x@#4bowl = 0.45[x@#1bowl, x@#3bowl]; + top y@#2bowl = x_ht + o; bot y@#4bowl = bl - o; + y@#3bowl = 1/2[y@#2bowl, y@#4bowl]; + bot y@#5bowl = 1/16[bl, x_ht]; top y@#1bowl = 15/16[bl, x_ht]; + draw z@#1bowl + ... z@#2bowl{plus right} .. z@#3bowl .. z@#4bowl{plus left} + ... z@#5bowl; + labels(@#1bowl, @#2bowl, @#3bowl, @#4bowl, @#5bowl, @#1stem, @#2stem); + enddef; +fi + +vardef draw_b@#(expr l, by, r, h, bl, x_ht) expr left_p = + draw_b_bowl(l, by, r, h, bl, x_ht) left_p; + draw if italic or (h > x_ht): z@#1stem else: z@#1bowl fi + -- if italic or (by < bl): z@#2stem else: z@#5bowl fi; +enddef; + +%}}} +%{{{ How to draw tail of g or y + +vardef draw_tail@# = % attaches to @# + x1tail = x@#; lft x3tail = 0.85[r,l]; + bot y2tail = -d - o; x2tail = 0.55[x1tail, x3tail]; + z1tail = z2tail + whatever*(hratio,1); + y3tail = good.y (y2tail + 1/2v); + draw z@# --- z1tail .. z2tail{left} .. z3tail; + labels(1tail, 2tail, 3tail) +enddef; + +%}}} +%{{{ how to draw the arch on an `n' + +n_wd# := 1/2pn.wd# + 6u#; +n_dip := if italic: 5v else: 1v fi; +define_pixels(n_wd); + +vardef draw_n_arch@#(expr leftrightx, rightleftx) = + b := leftrightx < rightleftx; + if b: + top y1@# = x_ht - n_dip; + top y2@# = x_ht + o; bot y4@# = -o; + else: + bot y1@# = n_dip; + bot y2@# = -o; top y4@# = x_ht + o; + fi + lftrt x1@# = hround leftrightx; + rtlft x3@# = rtlft x4@# = rightleftx; + x2@# = if italic: 0.3 else: 0.45 fi[x3@#, x1@#]; + z3@# = z2@# + whatever*se if italic: yscaled 2 fi; + draw z1@#{(z2@# - z1@#) yscaled 2} + .. z2@#{(x3@# - x1@#, 0)} .. z3@# --- z4@#; + labels(1@#,2@#,3@#,4@#); +enddef; + +def set_ic_n = set_ic(0.75x_ht#) enddef; +%}}} +%{{{ how to draw an `f' + +f_bar_left# := 1u#; f_wd# := f_bar_left# + 5u#; +f_dp# := if italic: 3/4desc_dp# else: 0v# fi; + +f_join# := f_rsp*sp# + sp#; + % First two terms give where an "i" would go relative to rt of "f". +fi_kern# := -1/4u#; + +define_pixels(f_bar_left, f_join, f_wd, fi_kern); + +def f_char(expr code, w_sharp) = + lctitle code; ma_char(code, w_sharp, asc_ht#, f_dp#) +enddef; + +% leftx is left of main stroke +vardef draw_f@#(expr leftx, kernamount) expr join_p = + top y@#2 = h + o; bot y@#4 = -d - o; + lft x@#3 = lft x@#4 = hround leftx; + if join_p: % Why is this bit causing me so much hassle? + lft x@#1 = (leftx + (f_wd - f_bar_left)) + f_join + kernamount; + % |lft x@#1| is where left edge of "i" following "f" would go + else: + rt x@#1 = leftx + (f_wd - f_bar_left); + % |rt x@#1| is |f_wd| from left end of the bar + fi + y@#1 = good.y (h - 1v); y@#3 = h - 3v; + z@#2 = z@#3 + whatever*ne; + draw z@#1 .. z@#2 .. z@#3 --- z@#4; + labels(@#1, @#2, @#3, @#4); +enddef; + +vardef draw_f_bar@# expr join_p = + top y1bar = top y2bar = x_ht; + lft x1bar = l; x2bar = good.x x@#2; %%%% if join_p: x@#1 else: x@#2 fi; + draw z1bar -- z2bar; + labels(1bar,2bar); +enddef; +%}}} +%{{{ how to draw an "i" (!) + +def draw_i = + if 1/2w <> good.x 1/2w: change_width; fi + top z1 = (1/2w, x_ht + o); bot z2 = (1/2w, -d - o); + draw z1 -- z2; labels(1, 2); set_ic_tr; +enddef; + +%}}} how to draw an "i" (!) +%{{{ generate lc letter with composites (new conventions) + +% There must be a vardef macro draw_lc@# that draws the base letter. +% It takes 6 parameters: leftx, boty, rightx, topy, baseline, x-ht. +% It must set variable x.anchor to x-coordinate of anchor for marks. + +vardef lc_with_composites@#(expr w_sharp, h_sharp, d_sharp, l_sp, r_sp) = + iff known code.lc@#: + ma_char(code.lc@#, w_sharp, h_sharp, d_sharp, l_sp, r_sp) + "lower case " & str @#; + draw_lc@#(l, -d, r, h, 0, x_ht); + endchar; + lc_composites_only@#(w_sharp, h_sharp, d_sharp, l_sp, r_sp) +enddef; + +vardef lc_composites_only@#(expr w_sharp, h_sharp, d_sharp, l_sp, r_sp) = + mh# := max(d_sharp, lc_mark_t#); % height of glyph with mark + hh := vround(h_sharp * hppp); % height of base glyph + iff known code.lc@#acute: + ma_char(code.lc@#acute, w_sharp, mh#, d_sharp, l_sp, r_sp); + "lower case " & str @# & " acute"; + draw_lc@#(l, -d, r, hh, 0, x_ht); + draw_acute_grave.acute(x.anchor, lc_mark_b, acute_wd, + lc_mark_ht) false; + endchar; + iff known code.lc@#grave: + ma_char(code.lc@#grave, w_sharp, mh#, d_sharp, l_sp, r_sp); + "lower case " & str @# & " grave"; + draw_lc@#(l, -d, r, hh, 0, x_ht); + draw_acute_grave.grave(x.anchor, lc_mark_b, acute_wd, + lc_mark_ht) true; + endchar; + iff known code.lc@#twodots: + ma_char(code.lc@#twodots, w_sharp, mh#, d_sharp, l_sp, r_sp); + "lower case " & str @# & " two-dots"; + draw_lc@#(l, -d, r, hh, 0, x_ht); + draw_twodots.twodots(x.anchor, lc_mark_b, acute_wd + dot_wd, + lc_mark_ht); + endchar; + iff known code.lc@#circumflex: + ma_char(code.lc@#circumflex, w_sharp, mh#, d_sharp, l_sp, r_sp); + "lower case " & str @# & " circumflex"; + draw_lc@#(l, -d, r, hh, 0, x_ht); + draw_circumflex.circumflex(x.anchor, lc_mark_b, + 2lc_mark_ht * hratio - pn.wd, lc_mark_ht) false; + endchar; + iff known code.lc@#tilde: + ma_char(code.lc@#tilde, w_sharp, mh#, d_sharp, l_sp, r_sp); + "lower case " & str @# & " tilde"; + draw_lc@#(l, -d, r, hh, 0, x_ht); + draw_tilde.tilde(x.anchor, lc_mark_b, + 2lc_mark_ht * hratio - pn.wd, lc_mark_ht); + endchar; + iff known code.lc@#breve: + ma_char(code.lc@#breve, w_sharp, mh#, d_sharp, l_sp, r_sp); + "lower case " & str @# & " breve"; + draw_lc@#(l, -d, r, hh, 0, x_ht); + draw_breve.breve(x.anchor, lc_mark_b, + 2lc_mark_ht * hratio - pn.wd, lc_mark_ht); + endchar; + iff known code.lc@#hook: + ma_char(code.lc@#hook, w_sharp, mh#, d_sharp, l_sp, r_sp); + "lower case " & str @# & " inverted circumflex"; + draw_lc@#(l, -d, r, hh, 0, x_ht); + draw_circumflex.hook(x.anchor, lc_mark_b, + 2lc_mark_ht * hratio - pn.wd, lc_mark_ht) true; + endchar; + iff known code.lc@#dot: + ma_char(code.lc@#dot, w_sharp, mh#, d_sharp, l_sp, r_sp); + "lower case " & str @# & " inverted circumflex"; + draw_lc@#(l, -d, r, hh, 0, x_ht); + draw_dot_mark.dot(x.anchor, lc_mark_b, 0, lc_mark_ht); + endchar; + iff known code.lc@#macron: + ma_char(code.lc@#macron, w_sharp, mh#, d_sharp, l_sp, r_sp); + "lower case " & str @# & " inverted circumflex"; + draw_lc@#(l, -d, r, hh, 0, x_ht); + draw_macron.macron(x.anchor, lc_mark_b, 0.8 * (r - l), lc_mark_ht); + endchar; +enddef; + +%}}} generate lc letter with composites (new conventions) +%}}} l.c. kit +%{{{ kit for lower case Greek + +% Draw an acute or grave mark. +% Set its position with some equation mentioning x1@# or x2@# +% before using this macro. +vardef gr_draw_ag@# expr b = + top y1@# = gr_mk_top; bot y2@# = gr_mk_bot; + z1@# - z2@# = whatever * if b: ne else: se fi yscaled 2; + draw z1@# -- z2@#; +enddef; + +vardef gr_draw_twodots@#(expr width, boty) = + x1@# = 1/2dot_wd + hround (1/2w - 1/2width - 1/2dot_wd); + x2@# = 1/2dot_wd + hround (1/2w + 1/2width - 1/2dot_wd); + y2@# = y1@# = 1/2dot_ht + boty; + draw_dot1@#; draw_dot 2@#; + labels(1@#, 2@#); +enddef; + +vardef gr_breathing@#(expr leftx, topy, rightx, boty) expr b_ = + b := b_; + top y1@# = topy; bot y3@# = boty; + y2@# = 0.6[y3@#, y1@#]; + lftrt x1@# = if b: leftx else: rightx fi; + rtlft x2@# = hround if b: rightx else: leftx fi; + x3@# = 0.75[x1@#, x2@#]; + draw z1@#{ (x2@# - x1@#, 0) } .. z2@#{down} .. z3@#; + labels(1@#, 2@#, 3@#); +enddef; + +vardef gr_circ@#(expr leftx, boty, rightx, topy) = + lft x1@# = hround leftx; rt x3@# = hround rightx; + top y2@# = vround topy; bot y1@# = bot y3@# = vround boty; + x2@# = 1/2[x1@#, x3@#]; + draw z1@#{up} .. z2@# .. z3@#{down}; + labels(1@#, 2@#, 3@#); +enddef; + +vardef gr_tilde@#(expr leftx, boty, rightx, topy) = + lft x1@# = hround leftx; rt x4@# = hround rightx; + top y2@# = vround topy; bot y3@# = vround boty; + x2@# = 0.3[x1@#, x4@#]; x4@# - x3@# = x2@# - x1@#; + y1@# = 0.15[y3@#, y2@#]; y4@# - y3@# = y2@# - y1@#; + draw z1@# .. z2@#{right} .. z3@#{right} .. z4@#; + labels(1@#, 2@#, 3@#, 4@#); +enddef; + +% Add iota subscript to letter. Note this alters chardp! +vardef gr_iota_sub@#(expr anchorx) = + chardp := desc_dp#; + x1@# = x2@# = good.x anchorx; + top y1@# = -1/2v; + bot y2@# = -hround desc_dp - o; + draw z1@# -- z2@#; + labels(1@#, 2@#) +enddef; + +%}\}} kit for lower case Greek +%}}} makit.mf + +%Local variables: +%fold-folded-p: t +%End: diff --git a/fonts/malvern/source/malc.mf b/fonts/malvern/source/malc.mf new file mode 100644 index 0000000000..e778047542 --- /dev/null +++ b/fonts/malvern/source/malc.mf @@ -0,0 +1,620 @@ +% malc.mf 1.2.0 1994/10/11 -- Lower case character programs +% Copyright 1991-4 P. Damian Cugley + +%%% @METAFONT-file { +%%% filename = "malc.mf", +%%% version = "1.2.0", +%%% date = "1994/10/11", +%%% package = "Malvern 1.2", +%%% author = "P. Damian Cugley", +%%% email = "damian.cugley@comlab.ox.ac.uk", +%%% address = "Oxford University Computing Laboratory, +%%% Parks Road, Oxford OX1 3QD, UK", +%%% codetable = "USASCII", +%%% keywords = "Malvern, METAFONT, font, typefont, TeX", +%%% supported = "Maybe", +%%% abstract = "Lower case latin character programs for the Malvern +%%% font family.", +%%% dependencies = "other program files", +%%% } + +% See the Malvern Handbook (maman.tex) for more info about Malvern. +% This software is available freely but without warranty. +% See the file COPYING for details. + +% Glyph programs for lower case letters that generate +% both base letters and composite letters. +% In some cases composite letters are generated in a separate +% program from the base letter -- these go in malcco and malcnc. + +%{{{ malc.mf + +if testing: endinput; fi + +%{{{ h + +vardef draw_lc.h@#(expr l, by, r, h, bl, x_ht) = + top lft z@#stem1 = (l, h + o); bot lft z@#stem2 = (l, by - o); + draw z@#stem1 -- z@#stem2; draw_n_arch@#(l,r); set_ic_n; +enddef; + +iff known code.lc.h: +b_char(code.lc.h, n_wd#)(1, n_sp); + "lower case h"; + draw_lc.h(l, -d, r, h, 0, x_ht); +endchar; + +iff known code.lc.h.circumflex: +b_char(code.lc.h.circumflex, n_wd#)(1, n_sp); + "lower case h with circumflex"; + draw_lc.h(l, -d, r, h, 0, x_ht); + draw_circumflex.silly(0.5[rt x.stem1, rt x4], lc_mark_b, + min(x4 - x.stem1 - u, 2lc_mark_ht * hratio - pn.wd), lc_mark_ht) false; + set_ic_tr; +endchar; + +%}}} h +%{{{ w + +vardef draw_lc.w@#(expr l, by, r, h, bl, x_ht) = + if 1/2w <> apex.x 1/2w: change_width; fi; + lft x@#1 = l; rt x@#5 = r; + x@#3 = 1/2[x@#1, x@#5]; + x@#2 = apex.x (1/2[x@#1,x@#3] - eps); + x@#4 = apex.x (1/2[x@#3,x@#5] + eps); + top y@#1 = top y@#5 = h + o; top y@#3 = h; bot y@#2 = bot y@#4 = by; + draw z@#1 -- vpex_path@#2 -- apex_path@#3 -- vpex_path@#4 -- z@#5; + labels(@#1,@#2,@#3,@#4,@#5); set_ic_tr; x.anchor = 1/2[l,r]; +enddef; + +lc_with_composites.w(12u#, x_ht#, 0pt#)(v_sp, v_sp); + +%}}} w +%{{{ t + +vardef draw_lc.t@#(expr l, by, r, h, bl, x_ht) = + top lft z@#1 = (hround (l + u), h + o); x@#2 = x@#1; + bot rt z@#4 = (r, by); bot z@#3 = (min(4/5[l,r], x@#4 - eps), by); + z@#2 = z@#3 + whatever*se; + draw z@#1 --- z@#2 .. z@#3 --- z@#4; + lft x@#1bar = l; rt x@#2bar = x@#4; + top y@#2bar = top y@#1bar = x_ht; + draw z@#1bar -- z@#2bar; + labels(@#1,@#2,@#3,@#4,@#1bar,@#2bar); +enddef; + +iff known code.lc.t: +ma_char(code.lc.t, + 3u# + pn.wd#, 1/2[asc_ht#, x_ht#], 0pt#)(f_lsp, x_sp); + draw_lc.t(l, 0, r, 1/2[asc_ht, x_ht], 0, x_ht); + set_ic(x_ht#); charic := charic - 1/2pn.wd#; +endchar; + +iff known code.lc.t.cedilla: +ma_char(code.lc.t.cedilla, + 3u# + pn.wd#, 1/2[asc_ht#, x_ht#], cedilla_ht#)(f_lsp, x_sp); + draw_lc.t(l, 0, r, 1/2[asc_ht, x_ht], 0, x_ht); + draw_cedilla.cedilla(1/2[l,r], 0, cedilla_wd, cedilla_ht); + set_ic(x_ht#); charic := charic - 1/2pn.wd#; +endchar; + +iff known code.lc.t.hook: +ma_char(code.lc.t.hook, + 3u# + pn.wd#, 1/2[asc_ht#, x_ht#], 0pt#)(f_lsp, x_sp); + draw_lc.t(l, 0, r, 1/2[asc_ht, x_ht], 0, x_ht); + draw_hook.hook; + set_ic(x_ht#); charic := charic - 1/2pn.wd#; +endchar; + +%}}} +%{{{ g + +vardef draw_lc.g(expr l, by, r, h, bl, x_ht) = + draw_b_bowl(l, bl, r, h)(bl, x_ht) false; + draw_tail1stem; set_ic_tr; x.anchor = x2bowl; +enddef; +lc_with_composites.g(b_wd#, x_ht#, desc_dp#)(o_sp, 1); + +%}}} g +%{{{ r + +vardef draw_lc.r@#(expr l, by, r, h, bl, x_ht) = + top lft z@#1stem = (l, h + o); bot lft z@#2stem = (l, by - o); + z@#1arch = if italic: 1/3 else: 3/4 fi [z@#2stem, z@#1stem]; + top rt z@#2arch = (r, h + o); + draw z@#1stem -- z@#2stem; + draw z@#1arch{(z@#2arch - z@#1arch) yscaled 3} .. z@#2arch; + labels(@#1arch, @#2arch); set_ic_tr; x.anchor = 0.4[l,r]; +enddef; + +lc_with_composites.r(4u#, x_ht#, 0pt#)(1, r_sp); + +%}}} +%{{{ a +if not italic: +%{{{ roman a + +vardef draw_lc.a@#(expr l, by, r, h, bl, x_ht) = + lft x@#3bowl = l; rt x@#1bowl = rt x@#5bowl = r; + bot y@#4bowl = by - o; top y@#2bowl = vround 2/3[by - o, h]; + x@#2bowl = x@#4bowl = 0.525[x@#3bowl, x@#1bowl]; + y@#1bowl = y@#2bowl - 3/4v; y@#5bowl = 1.5v + by - o; + y@#3bowl = 1/2[y@#2bowl, y@#4bowl]; + draw z@#1bowl .. z@#2bowl{left} .. z@#3bowl{down} + .. z@#4bowl{right} .. z@#5bowl; + labels(@#1bowl, @#2bowl, @#3bowl, @#4bowl, @#5bowl); + top y@#2spine = h + o; bot y@#4spine = by - o; + rt x@#3spine = rt x@#4spine = r; + x@#1spine = good.x 1/5[l,r]; x@#2spine = 0.575[x@#1spine, x@#3spine]; + z@#3spine = z@#2spine + whatever*se; + y@#1spine = good.y (min(y@#2spine, + max(y@#2spine - 0.75v, y@#2bowl + pn.ht + 1/2v))); + draw z@#1spine .. z@#2spine{right} .. z@#3spine --- z@#4spine; + labels(@#1spine, @#2spine, @#3spine, @#4spine); + x.anchor = 0.585[l,r]; +enddef; + +a_wd# = 1/2pn.wd# + 6.5u#; + +lc_with_composites.a(a_wd#, x_ht#, 0pt#)(a_sp, n_sp); + +iff known code.lc.a.ring: +ma_char(code.lc.a.ring, a_wd#, lc_mark_t#, 0pt#)(a_sp, n_sp); + "lower case a with ring"; + draw_lc.a(l, 0, r, x_ht, 0, x_ht); + draw_clear_ring.ring(0.585[l,r], lc_mark_b, 3.5u, lc_mark_ht); +endchar; + +iff known code.lc.a.ogonek: +ma_char(code.lc.a.ogonek, a_wd#, x_ht#, ogonek_dp#)(a_sp, n_sp); + "lower case a with ogonek"; + draw_lc.a(l, 0, r, x_ht, 0, x_ht); + pickup cedilla_pen(2.25u + 1/2pn.wd, ogonek_dp); + x1ogonek = x4spine; y1ogonek = 0; + y2ogonek = 0.5[y3ogonek, y1ogonek]; + lft x2ogonek = min(x4spine - 1.5u, lft x4spine - 1/2u); + bot rt z3ogonek = (r + 0.75u, -ogonek_dp); + draw z1ogonek{-ne} ... z2ogonek{down} ... z3ogonek{right}; + labels(1ogonek, 2ogonek, 3ogonek); +endchar; + +iff known code.ord_feminine: +ma_char(code.ord_feminine, 3u# + 2pn.wd#, sup_x_top#, 0pt#)(0.5,0.5); + draw_lc.a(l, vround (h - sup_x_ht), r, h, vround (h - sup_x_ht), h); + pickup pencircle scaled yen.pn.th; + top y1bar = top y2bar = bot y4spine - v; + lft x1bar = l + 1/2u; rt x2bar = r - 1/4u; + draw z1bar -- z2bar; + labels(1bar,2bar); +endchar; + +%}}} roman +else: +%{{{ italic a + +vardef draw_lc.a(expr l, by, r, h, bl, x_ht) = + draw_b(l, by, r, h, bl, x_ht)false; set_ic_tr; x.anchor = 1/2[l,r]; +enddef; + +lc_with_composites.a(b_wd#, x_ht#, 0pt#)(o_sp, 1); + +iff known code.lc.a.ring: +ma_char(code.lc.a.ring, b_wd#, lc_mark_t#, 0pt#)(o_sp, 1); + "lower case a with ring"; + draw_lc.a(l, 0, r, x_ht, 0, x_ht); + draw_clear_ring.ring(0.6[l,r], lc_mark_b, 3.5u, lc_mark_ht); +endchar; + + +iff known code.lc.a.ogonek: +ma_char(code.lc.a.ogonek, b_wd#, x_ht#, ogonek_dp#)(o_sp, 1); + "lower case a with ogonek"; + draw_lc.a(l, 0, r, x_ht, 0, x_ht); + pickup cedilla_pen(3u, ogonek_dp); + rt x3ogonek = r; + lft x2ogonek = hround (rt x3ogonek - 3u); + bot y3ogonek = vround -ogonek_dp; + top y1ogonek = 0; + rt x1ogonek = max(lft x1stem - 1/2u, rt x2ogonek); + y2ogonek = max(y3ogonek, min(0.6[bot y3ogonek, top y1ogonek], y1ogonek)); + draw z1ogonek{left} ... z2ogonek{down} ... z3ogonek{right}; + labels(1ogonek, 2ogonek, 3ogonek); + pickup the_pen; +endchar; + +iff known code.ord_feminine: "superior l.c. a"; +ma_char(code.ord_feminine, 3.25u# + 2pn.wd#, sup_x_top#, 0pt#)(1/2,1/2); + bot rt z1 = (r, vround (h - sup_x_ht)); + top rt z2 = (r, h); + lft z3 = (l, 1/3[y1, y2]); + bot z4 = (1/3[l,r], bot y1); + rt z5 = (r, 1/4[y1, y2]); + draw z1 -- z2{left} ... z3{down} ... z4{right} ... z5; + labels(1, 2, 3, 4, 5); + pickup pencircle scaled yen.pn.th; + top y1bar = top y2bar = bot y1 - v; + lft x1bar = l + 1/2u; rt x2bar = r - 1/4u; + draw z1bar -- z2bar; + labels(1bar,2bar); + set_ic_tr; +endchar; + +%}}} italic a +fi +%}}} a +%{{{ u + +vardef draw_lc.u(expr l, by, r, h, bl, x_ht) = + draw_n_arch(r,l); draw (x1, y2) -- (x1, y4); set_ic_tr; + x.anchor = 1/2[l,r]; +enddef; + +lc_with_composites.u(n_wd#, x_ht#, 0pt#)(n_sp, 1); + +iff known code.lc.u.ring: +ma_char(code.lc.u.ring, n_wd#, lc_mark_t#, 0pt#)(n_sp ,1); + "lower case u with ring!"; + draw_lc.u(l, -d, r, x_ht, 0, x_ht); + draw_clear_ring.ring(0.5[l,r], lc_mark_b, 3.5u, lc_mark_ht); +endchar; + +%}}} u +%{{{ l +%{{{ versions with a tail + +vardef draw_lc.lvar@#(expr l, by, r, h, bl, x_ht) = + top lft z@#1 = (l, h + o); x@#2 = x@#1; + bot z@#3 = (3/4[l,r], by); bot rt z@#4 = (r, by); + z@#2 = z@#3 + whatever*se; + draw z@#1 --- z@#2 .. z@#3 --- z@#4; + labels(@#1,@#2,@#3,@#4); +enddef; + +iff known code.lc.l1: +b_char(code.lc.l1, 2u# + pn.wd#)(1, -2/3); + draw_lc.lvar(l, -d, r, h, 0, x_ht); +endchar; + +iff known code.lc.l.slash1: "variant l.c. l with slash"; +b_char(code.lc.l.slash1, 3u# + pn.wd#)(1/2, -1/2); + draw_lc.lvar(l + u, -d, r, h, 0, x_ht); + 1/2[x1bar, x2bar] = x1; z2bar = z1bar + whatever*ne xscaled 2; + lft x1bar = l; top y2bar = x_ht; + draw z1bar -- z2bar; labels(1bar,2bar); +endchar; + +iff known code.lc.l.acute1: "variant l.c. l with acute"; +b_char(code.lc.l.acute1, 2u# + pn.wd#)(1/2, -1/2); + draw_lc.lvar(l, -d, r, h - 2v, 0, x_ht); + draw_acute_grave.acute(l + 1/2pn.wd, h - 1.5v, + acute_wd, 1.5v) false; +endchar; + +iff known code.lc.l.hook1: "variant l.c. l with hook"; +b_char(code.lc.l.hook1, 2u# + pn.wd#)(1/2, -1/2); + draw_lc.lvar(l, -d, r, h, 0, x_ht); + draw_hook.hook; +endchar; + + +%}}} +%{{{ straight stick versions + +iff known code.lc.l: +b_char(code.lc.l, pn.wd#)(l_sp, l_sp); + if 1/2w <> good.x 1/2w: change_width; fi + draw (1/2w, bot (h + o)) -- (1/2w, top (-d - o)); set_ic_tr; +endchar; + +iff known code.lc.l.slash: "l.c. l with slash"; +b_char(code.lc.l.slash, pn.wd# + 2u#)(1/2,1/2); + if 1/2w <> good.x 1/2w: change_width; fi + draw (1/2w, bot (h + o)) -- (1/2w, top (-d - o)); + 1/2[x1bar, x2bar] = 1/2w; z2bar = z1bar + whatever*ne xscaled 2; + lft x1bar = l; top y2bar = x_ht; + draw z1bar -- z2bar; + labels(1bar, 2bar); set_ic (1/2h#); +endchar; + +iff known code.lc.l.hook: "lower-case l with hook"; +b_char(code.lc.l.hook, pn.wd# + hook_wd#)(1,1/2); + draw_hook; + lft x1stem = lft x2stem = l; + top y1stem = h + o; bot y2stem = -d - o; + draw z1stem -- z2stem; + labels(1stem, 2stem); set_ic_tr; +endchar; + +iff known code.lc.l.acute: "lower-case l with acute mark"; +b_char(code.lc.l.acute, max(pn.wd#, acute_wd# - sp#))(1,1); + if 1/2w <> good.x 1/2w: change_width; fi + x1stem = x2stem = 1/2w; top y1stem = h - 2v; bot y2stem = -d - o; + draw z1stem -- z2stem; + labels(1stem, 2stem); set_ic_tr; + draw_acute_grave.acute(1/2w, h - 1.5v, acute_wd, 1.5v) false; +endchar; + +%}}} +%}}} +%{{{ c + +def set_ic_frac expr s = set_ic (s * h#) enddef; +c_wd# = 6u# + pn.wd#; +c_k_kern# = c_h_kern# = 0pt#; +c_rsp = x_sp; + +vardef draw_lc.c@#(expr l, by, r, h, bl, x_ht) = + draw_C@#(l, h, r, by) 1/15; set_ic_frac 14/15; x.anchor = x2@#; +enddef; + +lc_with_composites.c(c_wd#, x_ht#, 0pt#)(o_sp, c_rsp); + +iff known code.lc.c.cedilla: +ma_char(code.lc.c.cedilla, 6u# + pn.wd#, x_ht#, cedilla_ht#)(o_sp, x_sp); + "l.c. c with cedilla"; + draw_lc.c(l, 0, r, x_ht, 0, x_ht); + draw_cedilla.cedilla(x2, 0, cedilla_wd, cedilla_ht); +endchar; + +iff known code.sp.lc.c: "superior l.c. c"; % pdc Tue. 23 Apr. 1991 +ma_char(code.sp.lc.c, 5u#, sup_x_top#, 0v#)(1/3,1/2); + draw_C(l, h, r, vround (h - sup_x_ht)) 1/40; + pickup pencircle scaled yen.pn.th; + top y1bar = top y2bar = bot y4 - v; + lft x1bar = l + 1/2u; rt x2bar = r - 1/4u; + draw z1bar -- z2bar; + labels(1bar,2bar); + set_ic_tr; +endchar; + +%}}} c +%{{{ s + +def set_ic_lc_s = set_icc(0.05[r#,l#], h# - v#) 1/3h# enddef; + +vardef draw_lc.s@#(expr l, by, r, h, bl, x_ht) = + draw_S(h, by)(0.52, 0.05, 0.05); + set_ic_lc_s; x.anchor = 0.52[l,r]; +enddef; + +lc_with_composites.s(4u# + pn.wd#, x_ht#, 0pt#)(s_sp, s_sp); + +iff known code.lc.s.cedilla: +ma_char(code.lc.s.cedilla, 4u# + pn.wd#, x_ht#, cedilla_ht#)(s_sp, s_sp); + "l.c. s with cedilla"; + draw_lc.s(l, 0, r, x_ht, 0, x_ht); + draw_cedilla.cedilla(1/2[l,r], 0, cedilla_wd, cedilla_ht); +endchar; + +%}}} +%{{{ o + +o_wd# := if italic: 7u# else: 8u# fi; + +vardef draw_lc.o(expr l, by, r, h, bl, x_ht) = + draw_circle(l - ho, h + oo, r + ho, -d - oo); + set_ic_o; x.anchor = 1/2[l,r]; +enddef; + +lc_with_composites.o(o_wd#, x_ht#, 0pt#)(o_sp, o_sp); + +iff known code.lc.o.cdot: +x_char(code.lc.o.cdot, o_wd#)(o_sp, o_sp); + "l.c. o with dot in centre"; + draw_lc.o(l, -d, r, h, 0, x_ht); + z.dot = (x1, y0); draw_dot.dot; +endchar; + +iff known code.ord_masculine: "superior lower-case o"; +ma_char(code.ord_masculine, sup_x_ht#*hratio, sup_x_top#, 0pt#)(1/2,1/2); + draw_circle(l, h, r, h - sup_x_ht); + set_ic_tr; + pickup pencircle scaled yen.pn.th; + top y1bar = top y2bar = bot y3 - v; + lft x1bar = l + 1/2u; rt x2bar = r - 1/2u; + draw z1bar -- z2bar; + labels(1bar,2bar); +endchar; + +%}}} o +%{{{ e +if italic: +%{{{ italic e + +e_wd# := 6.5u# + 2ho#; + +vardef draw_lc.e@#(expr l, by, r, h, bl, x_ht) = + numeric rat; rat = 0.9; + x@#4 = x@#2 = 0.55[l,r]; top y@#4 = h + o; bot y@#2 = by - o;% top & bot + y@#3 = 1/2[y@#2,y@#4]; lft x@#3 = l; % left point + y@#5 = 0.25[y@#4,y@#2]; rt x@#5 = r; % right point + z@#6 = point rat of (z@#2{left} .. z@#3{up}); % join + y@#1 = y@#2 + 1/16(h - by); x@#1 = x@#5 - 1/13(r - l); + % terminal + draw z@#1 .. z@#2{left} .. z@#3{up} .. z@#4{right} .. {down}z@#5 +% ... z@#6{ (direction rat of (z@#2{left} .. z@#3{up})) rotated 90 }; + ... z@#6{left}; + x.anchor = x@#4; + labels(1,2,3,4,5,6); +enddef; + +lc_with_composites.e(e_wd#, x_ht#, 0pt#)(o_sp, e_sp); + +iff known code.lc.e.ogonek: +ma_char(code.lc.e.ogonek, e_wd#, x_ht#, ogonek_dp#)(o_sp, e_sp); + "lower case e with ogonek"; + draw_lc.e(l, 0, r, x_ht)(0, x_ht); + numeric wd; wd = 2u + 1/2pn.wd; + pickup cedilla_pen(wd + 1/2pn.wd, ogonek_dp); + z1ogonek = z1; + bot rt z3ogonek = (x1ogonek + wd, - ogonek_dp); + z2ogonek = 0.75[(x3ogonek, y1ogonek), (x1ogonek, y3ogonek)]; + draw z1ogonek{down} ... z2ogonek{z3ogonek - z1ogonek} + ... z3ogonek{right}; + labels(1ogonek, 2ogonek, 3ogonek); +endchar; + + +vardef draw_lc.schwa@#(expr l, by, r, h, bl, x_ht) = + numeric rat; rat = 0.9; + x@#4 = x@#2 = 0.55[r,l]; bot y@#4 = by - o; top y@#2 = h + o; + % top & bot + y@#3 = 1/2[y@#2,y@#4]; rt x@#3 = r; % left point + y@#5 = 0.25[y@#4,y@#2]; lft x@#5 = l; % right point + z@#6 = point rat of (z@#2{right} .. z@#3{down}); % join + y@#1 = y@#2 + 1/16(by - h); x@#1 = x@#5 - 1/13(l - r); + % terminal + draw z@#1 .. z@#2{right} .. z@#3{down} .. z@#4{left} .. {up}z@#5 + ... z@#6{right}; + x.anchor = x@#4; + labels(1,2,3,4,5,6); +enddef; + +iff known code.lc.e.schwa: "lower case schwa"; +x_char(code.lc.e.schwa, e_wd#)(e_sp, o_sp); + draw_lc.schwa(l, 0, r, x_ht, 0, x_ht); +endchar; + +%}}} italic e +else: +%{{{ upright e + +e_wd# = 7.5u# + 2ho#; + +vardef draw_lc.e@#(expr l, by, r, h, bl, x_ht) = + x@#1 = l + pn.wd; rt x@#2 = r; lft x@#4 = l; + top y@#3 = h + oo; bot y@#5 = by - oo; + y@#6 = good.y (y@#5 + 1/16(h - by)); x@#3 = x@#5 = 1/2[l, r]; + y@#1 = y@#2 = y@#4 = 0.525[by, h]; x@#6 = 0.825[l, r]; + draw z@#1 -- z@#2{up} .. z@#3 .. z@#4 .. z@#5{right} .. z@#6; + labels(@#1,@#2,@#3,@#4,@#5,@#6); set_ic_e; x.anchor = x@#3; +enddef; + +lc_with_composites.e(7.5u# + 2ho#, x_ht#, 0pt#)(o_sp, e_sp); + +iff known code.lc.e.ogonek: "lower case e with ogonek"; +ma_char(code.lc.e.ogonek, e_wd#, x_ht#, ogonek_dp#)(o_sp, e_sp); + draw_lc.e(l, 0, r, x_ht, 0, x_ht); + numeric wd; wd = 2u + 1/2pn.wd; + pickup cedilla_pen(wd + 1/2pn.wd, ogonek_dp); + z1ogonek = z5; + bot rt z3ogonek = (x1ogonek + wd, - ogonek_dp); + z2ogonek = 0.75[(x3ogonek, y1ogonek), (x1ogonek, y3ogonek)]; + draw z1ogonek{down} ... z2ogonek{z3ogonek - z1ogonek} + ... z3ogonek{right}; + labels(1ogonek, 2ogonek, 3ogonek); +endchar; + + +vardef draw_lc.schwa@#(expr l, by, r, h, bl, x_ht) = + x@#1 = r - pn.wd; lft x@#2 = l; rt x@#4 = r; + bot y@#3 = by - oo; top y@#5 = h + oo; + y@#6 = good.y (y@#5 - 1/16(h - by)); x@#3 = x@#5 = 1/2[l, r]; + y@#1 = y@#2 = y@#4 = 0.525[h, by]; x@#6 = 0.825[r, l]; + draw z@#1 -- z@#2{down} .. z@#3 .. z@#4 .. z@#5{left} .. z@#6; + labels(@#1,@#2,@#3,@#4,@#5,@#6); set_ic_e; x.anchor = x@#3; +enddef; + +iff known code.lc.schwa: +x_char(code.lc.schwa, e_wd#)(e_sp, o_sp); "lower case schwa"; + draw_lc.schwa(l, 0, r, x_ht)(0, x_ht); +endchar; + +%}}} upright e +fi +%}}} +%{{{ n + +vardef draw_lc.n@#(expr l, by, r, h, bl, x_wd) = + top lft z@#1stem = (l, h + o); + bot lft z@#2stem = (l, by - o); + draw z@#1stem -- z@#2stem; + draw_n_arch@#(l,r); set_ic_n; x.anchor=x@#2 +enddef; + +lc_with_composites.n(n_wd#, x_ht#, 0pt#, 1, n_sp); + +%}}} +%{{{ y + +vardef draw_lc.y@#(expr l, by, r, h, bl, x_ht) = + draw_n_arch@#(r,l); top rt z@#0 = (r, h + o); draw_tail@#0; + set_ic_tr; x.anchor = 1/2[l,r]; +enddef; + +lc_with_composites.y(n_wd#, x_ht#, desc_dp#, n_sp, 1); + +%}}} y +%{{{ z + +vardef draw_lc.z@#(expr l, by, r, h, bl, x_ht) = + top lft z@#1 = (l, h); top rt z@#2 = (r, h); top z@#3 = z@#2; + bot z@#4 = z@#5; bot lft z@#5 = (l, by); bot rt z@#6 = (r, by); + draw z@#1 -- z@#2 -- z@#3 -- z@#4 -- z@#5 -- z@#6; + labels(@#1, @#2, @#3, @#4, @#5, @#6); x.anchor = 1/2[l,r]; +enddef; + +lc_with_composites.z(7u#, x_ht#, 0pt#)(x_sp, x_sp); + +%iff known code.lc.z.dot: "lower case z with dot"; +%ma_char(code.lc.z.dot, 7u#, lc_mark_t#, 0pt#)(x_sp, x_sp); +% draw_lc.z.z(l, 0, r, x_ht, 0, x_ht); +% draw_dot_mark.dot_mark(1/2[l,r], lc_mark_b, 0, lc_mark_ht); +%endchar; + +%}}} +%{{{ j + +vardef draw_lc.j@#(expr l, by, r, h, bl, x_ht) = + rt x@#1 = rt x@#2 = r; lft x@#3 = l; + top y@#1 = x_ht + o; bot y@#3 = by - o; bot y@#4 = good.y (bot y@#3 + 1v); + z@#2 = z@#3 + whatever*ne; + draw z@#1 --- z@#2 .. z@#3{left}; + labels(@#1,@#2,@#3); set_ic_tr; x.anchor = x@#1; +enddef; + +% There's a slight complication because the composites are +% formed from a dotless j but are called j.foo not dotless_j.foo: + +iff known code.lc.j: +ma_char(code.lc.j, 3u#, + min(body_ht#, 1/2dot_ht# + 1/2[x_ht#, asc_ht#]), desc_dp#) + (j_sp,i_sp); + draw_lc.j(l, -d, r, h, 0, x_ht); top rt z.dot = (r, h); draw_dot.dot; +endchar; + +iff known code.lc.dotless_j: "l.c. j without dot"; +y_char(code.lc.dotless_j, 3u#)(j_sp,i_sp); + draw_lc.j(l, -d, r, h, 0, x_ht); +endchar; + +lc_composites_only.j(3u#, x_ht#, desc_dp#)(j_sp, i_sp); + +%}}} j + +input malcco +input malcnc +%{{{ ligatures + +iff known code.lc.c.h: +ma_char(code.lc.c.h, c_wd# + n_wd# + c_h_kern# + sp#*(c_rsp + 1), + asc_ht#, 0pt#)(o_sp, n_sp); + "Ligature ch"; + draw_lc.c.c(l, 0, l + hround(c_wd# * hppp), x_ht, 0, x_ht); + draw_lc.h.h(r - hround(n_wd# * hppp), 0, r, h, 0, x_ht); +endchar; + +iff known code.lc.c.k: +ma_char(code.lc.c.k, c_wd# + k_wd# + c_k_kern# + sp#*(c_rsp + 1), + asc_ht#, 0pt#)(o_sp, x_sp); + "Ligature ck"; + draw_lc.c.c(l, 0, l + hround(c_wd# * hppp), x_ht, 0, x_ht); + draw_lc.k.k(r - hround(n_wd# * hppp), 0, r, h, 0, x_ht); +endchar; + +%}}} ligatures +%}}} malc.mf + +% Local variables: +% fold-folded-p: t +% End: diff --git a/fonts/malvern/source/malcco.mf b/fonts/malvern/source/malcco.mf new file mode 100644 index 0000000000..1cdbdec421 --- /dev/null +++ b/fonts/malvern/source/malcco.mf @@ -0,0 +1,112 @@ +% malcco.mf 1.2.0 1994/10/11 -- lower case composite letter glyph programs +% Copyright 1994 P. Damian Cugley + +%%% @METAFONT-file { +%%% filename = "malcco.mf", +%%% version = "1.2.0", +%%% date = "1994/10/11", +%%% package = "Malvern 1.2", +%%% author = "P. Damian Cugley", +%%% email = "damian.cugley@comlab.ox.ac.uk", +%%% address = "Oxford University Computing Laboratory, +%%% Parks Road, Oxford OX1 3QD, UK", +%%% codetable = "USASCII", +%%% keywords = "Malvern, METAFONT, font, typefont, TeX", +%%% supported = "Maybe", +%%% abstract = "Character programs for the Malvern +%%% font family, for some l.c. composite letters .", +%%% dependencies = "other program files", +%%% } + +% See the Malvern Handbook (maman.tex) for more info about Malvern. +% This software is available freely but without warranty. +% See the file COPYING for details. + +%{{{ malcco.mf + +if testing: endinput; fi + +%{{{ d+hook, d+bar + +iff known code.lc.d.hook: +b_char(code.lc.d.hook)(b_wd# + hook_wd#)(o_sp, 0); + "l.c. d with variant hook"; + draw_b(l, -d, r - hook_wd, h, 0, x_ht) false; + draw_hook.hook; + set_ic_tr; +endchar; + +iff known code.lc.d.bar: +b_char(code.lc.d.bar)(b_wd# + u#)(o_sp, 0); + "l.c. d with bar"; + draw_b(l, -d, r - u, h, 0, x_ht) false; + y1bar = y2bar = good.y(0.4[x_ht, h]); + rt x2bar = r; x1bar = hround (2 * x1stem - x2bar - eps); + draw z1bar -- z2bar; + labels(1bar, 2bar); + set_ic_tr; +endchar; + +%}}} d+hook, d+bar +%{{{ composite letters based on "i" + +iff known code.lc.i.acute: "l.c. i with acute mark"; +ma_char(code.lc.i.acute, max(pn.wd#, dot_wd#), + lc_mark_t#, 0v#)(i_sp, i_sp); + draw_i; + draw_acute_grave.acute(1/2w, lc_mark_b, 2u, lc_mark_ht) false; +endchar; + +iff known code.lc.i.grave: "l.c. i with grave mark"; +ma_char(code.lc.i.grave, max(pn.wd#, dot_wd#), + lc_mark_t#, 0v#)(i_sp, i_sp); + draw_i; + draw_acute_grave.grave(1/2w, lc_mark_b, 2u, lc_mark_ht) true; +endchar; + +iff known code.lc.i.circumflex: "l.c. i with circumflex"; +ma_char(code.lc.i.circumflex, max(pn.wd#, dot_wd#), + lc_mark_t#, 0v#)(i_sp, i_sp); + draw_i; + draw_circumflex.circumflex(1/2w, lc_mark_b, 4u, lc_mark_ht) false; +endchar; + +iff known code.lc.i.twodots: "l.c. i with two dots above"; +ma_char(code.lc.i.twodots, max(pn.wd#, dot_wd#), + lc_mark_t#, 0v#)(i_sp, i_sp); + draw_i; + draw_twodots.twodots(1/2w, lc_mark_b, u + 2dot_wd, lc_mark_ht); +endchar; + +iff known code.lc.i.dot: "l.c. i with dot"; +ma_char(code.lc.i.dot, max(pn.wd#, dot_wd#), + lc_mark_t#, 0v#)(i_sp, i_sp); + draw_i; + draw_dot_mark.dot(1/2w, lc_mark_b, 0, lc_mark_ht); +endchar; + +iff known code.lc.i.macron: "l.c. i with macron"; +ma_char(code.lc.i.macron, max(pn.wd#, dot_wd#), + lc_mark_t#, 0v#)(i_sp, i_sp); + draw_i; + draw_macron.macron(1/2w, lc_mark_b, 2pn.wd + u, lc_mark_ht); +endchar; + +iff known code.lc.i.breve: "l.c. i with breve"; +ma_char(code.lc.i.breve, max(pn.wd#, dot_wd#), + lc_mark_t#, 0v#)(i_sp, i_sp); + draw_i; + draw_breve.breve(1/2w, lc_mark_b, 2pn.wd + 2u, lc_mark_ht); +endchar; + +iff known code.dotless_i: "l.c. i sans dot"; +x_char(code.dotless_i, max(pn.wd#, dot_wd#))(i_sp, i_sp); + draw_i; +endchar; + +%}}} composite letters based on "i" +%}}} malcco.mf + +% Local variables: +% fold-folded-p: t +% End: diff --git a/fonts/malvern/source/malcnc.mf b/fonts/malvern/source/malcnc.mf new file mode 100644 index 0000000000..02b9f20656 --- /dev/null +++ b/fonts/malvern/source/malcnc.mf @@ -0,0 +1,341 @@ +% malcnc.mf 1.2.0 1994/10/11 -- lower case non-composite letter glyph programs +% Copyright 1991-4 P. Damian Cugley. + +%%% @METAFONT-file { +%%% filename = "malcnc.mf", +%%% version = "1.2.0", +%%% date = "1994/10/11", +%%% package = "Malvern 1.2", +%%% author = "P. Damian Cugley", +%%% email = "damian.cugley@comlab.ox.ac.uk", +%%% address = "Oxford University Computing Laboratory, +%%% Parks Road, Oxford OX1 3QD, UK", +%%% codetable = "USASCII", +%%% keywords = "Malvern, METAFONT, font, typefont, TeX", +%%% supported = "Maybe", +%%% abstract = "Character programs for the Malvern font family, +%%% for non-composite lower case latin letter.", +%%% dependencies = "other program files", +%%% } + +% See the Malvern Handbook (maman.tex) for more info about Malvern. +% This software is available freely but without warranty. +% See the file COPYING for details. + +% Glyph programs for lower case letters that do not generate +% composite letters. +% Some composite letters are generated by separate glyph programs. +% Some letters aren't used in composite letters. + +%{{{ malcnc.mf + +if testing: endinput; fi + +%{{{ d + +iff known code.lc.d: +b_char(code.lc.d)(b_wd#)(o_sp, 1); + draw_b(l, -d, r, h, 0, x_ht) false; set_ic_tr; +endchar; +%}}} d +%{{{ i + +iff known code.lc.i: +ma_char(code.lc.i, max(pn.wd#, dot_wd#), + min(body_ht#, 1/2dot_ht# + 1/2[x_ht#, asc_ht#]), 0v#)(i_sp, i_sp); + draw_i; top z.dot = (1/2w, h); draw_dot.dot; labels(dot); +endchar; + +iff known code.lc.dotless_i: +ma_char(code.lc.dotless_i, max(pn.wd#, dot_wd#), + min(body_ht#, 1/2dot_ht# + 1/2[x_ht#, asc_ht#]), 0v#)(i_sp, i_sp); + draw_i; +endchar; + +%}}} +%{{{ o with slash + +iff known code.lc.o.slash: "l.c. o with slash"; +x_char(code.lc.o.slash, if italic: 7u# else: 8u# fi)(o_sp, o_sp); + draw_circle(l - ho, h + oo, r + ho, -d - oo); + draw_O_slash; + set_icc (1/12[r#,l#], 11/12h#) 0.7h#; +endchar; + +%}}} +%{{{ b, d, p, q, thorn + +iff known code.lc.b: +b_char(code.lc.b, b_wd#)(1, o_sp); + draw_b(l, -d, r, h, 0, x_ht) true; set_ic_o; +endchar; + +iff known code.lc.p: +y_char(code.lc.p, b_wd#)(1, o_sp); + draw_b(l, -d, r, h, 0, x_ht) true; set_ic_o; +endchar; + +iff known code.lc.q: +y_char(code.lc.q, b_wd#)(o_sp, 1); + draw_b(l, -d, r, h, 0, x_ht) false; set_ic_tr; +endchar; + +iff known code.lc.thorn: "l.c. thorn"; +ma_char(code.lc.thorn, b_wd#, asc_ht#, desc_dp#)(1, o_sp); + draw_b(l, -d, r, h, 0, x_ht) true; set_ic_o; +endchar; + +%}}} +%{{{ v, x + +iff known code.lc.v: +x_char(code.lc.v, 7u#)(v_sp, v_sp); draw_V; set_ic_tr; endchar; + +iff known code.lc.x: +x_char(code.lc.x, 7u#)(x_sp, x_sp); draw_X 1/20; set_ic(h# - pn.ht#); endchar; +%}}} +%{{{ m, eng + +iff known code.lc.m: +x_char(code.lc.m, 10u#)(1,n_sp); + if 1/2[l,r] <> good.x 1/2[l,r]: change_width; fi + save n_dip; n_dip = if italic: 3v else: 1.5v fi; + H_stem.stem; draw_n_arch1(l, rt 1/2[l,r]); draw_n_arch2(lft 1/2[l,r],r); + set_ic_n; +endchar; + +iff known code.lc.eng: "Lappish lower case eng"; +y_char(code.lc.eng, n_wd#)(1, n_sp); + top lft z1stem = (l, h + o); bot lft z2stem = (l, -o); + draw z1stem -- z2stem; + draw_n_arch.a(l,r); + x1tl = x4a; bot y2tl = bot y3tl - 1/3v = -d - o; + lft x3tl = 3/4[r, l]; x2tl = 0.55[x1tl, x3tl]; + z1tl = z2tl + whatever*ne; + draw z4a --- z1tl ... z2tl{left} ... z3tl; + labels(1stem, 2stem, 1tl, 2tl, 3tl); set_ic_n; +endchar; + +%}}} +%{{{ k + +k_wd# = 1/2pn.wd# + 5.5u#; +def set_ic_x_ht = set_ic x_ht# enddef; + +vardef draw_lc.k@#(expr l, by, r, h, bl, x_ht) = + top lft z@#stem1 = (l, h); bot lft z@#stem2 = (l, by); + top rt z@#top1 = (r, x_ht + o); + y@#top2 = y@#bot2 = 0.5[y@#top1, y@#bot1]; + x@#top2 = rt x@#stem1; z@#top2 = z@#bot2; + bot rt z@#bot1 = (r, by - o); + draw z@#stem1 -- z@#stem2; + draw z@#top1 -- z@#top2 ; draw z@#bot1 -- z@#bot2; + labels(@#stem1, @#stem2, @#top1, @#top2, @#bot1, @#bot2); + set_ic_x_ht; x.anchor := 1/2[rt x@#stem1, r]; +enddef; + +iff known code.lc.k: +b_char(code.lc.k, k_wd#)(1,x_sp); + draw_lc.k(l, -d, r, h, 0, x_ht); +endchar; + +%}}} +%{{{ eszet + +if unknown code.lc.longs.s: code.lc.longs.s = code.lc.eszet; fi + +iff known code.lc.longs.s: "Ligature longs+s"; +ma_char(code.lc.longs.s, pn.wd# + 7u#, asc_ht#, + if italic: desc_dp# else: 0v# fi)(1,o_sp); + bot lft z1 = (l, -d); lft x2 = l; top y3 = h + o; + rt x8 = r; bot y9 = 0 - o; + x7 = x9; + y2 = 0.25[x_ht, h]; y4 = 1/2[y3, y5]; y5 = x_ht; + y6 = 1/2[y5, y7]; y8 = 1/2[y7, y9]; + x7 = 0.5[x10, x8]; + y10 = y9 + 1u; lft x10 = rt x1 + 1u; + y7 = 0.6[y9, y5]; x6 - x7 = 0.8(x7 - x8); + x4 - x5 = 0.5(x5 - x6); + z3 = z4 + whatever * se; z3 = z2 + whatever * ne; + draw z1 --- vharc(2, 3) & hvarc(3, 4) .. z5 + & hvarc(5, 6) ... hvarc(7, 8) & vharc(8, 9) .. z10; + labels(range 1 thru 10); +endchar; + +iff known code.lc.eszet1: "Variant German Eszet"; +ma_char(code.lc.eszet1, pn.wd# + 7u#, asc_ht#, + if italic: desc_dp# else: 0v# fi)(1,o_sp); + lft x1 = lft x2 = l; rt x8 = r; + top y3 = h + o; bot y1 = -d -o; bot y9 = bot y10 - 3/4v = -o; + top y5 = top y6 + 1/4v - o = top y7 - o = x_ht; + lft x6 = good.x(rt x1 + 1/2u); lft x10 = rt x1; + z3 - z2 = z4 - z5 = (z3 - z4) xscaled -1 = whatever*ne; + z8 - z9 = (z8 - z7) yscaled -1 = whatever*ne; + z5' = (1/sqrt2)[(x5,y4), (x4,y5)]; + draw z1 --- z2 ... z3{right} ... z4 ... z5'{(z5-z4)}; + draw z6 ... z7{right} ... z8 ... {left}z9 ... z10; % bot bowl + labels(range 1 thru 10, 5'); set_ic_o; +endchar; + +%}}} +%{{{ eth and Anglo-Saxon eth + +% This will be a bit tricky. + +def ma_eth(expr code) = + b_char(code, 8u#)(o_sp, o_sp); % matched by |endchar| + draw_circle.circ(l - ho, x_ht + oo, r + ho, -d - oo); + z1 = (1/sqrt2)[(x1circ,y0circ), (x0circ,y1circ)]; + z2 = z1 + whatever*se; + y2 = 1/2[x_ht, h]; % junction + top y3 = h + o; lft x3 = l + 1/2u; % this just happens to work + draw z1 ... z2 ... z3; + 1/2[z1a,z1b] = 0[z2,z3]; + z1b - z1a = whatever*(z3 - z2) xscaled -1; + top y1a = h + o; %%%lft x1b = l; + draw z1a -- z1b; + labels(1,2,3, 1a, 1b); set_ic_o; +enddef; + +iff known code.lc.eth: "Icelandic eth"; +ma_eth(code.lc.eth); +endchar; + +iff known code.lc.eth1: +ma_eth(code.lc.eth1); + "Anglo-Saxon eth"; + z2b - z1b = z1a - z2a = whatever*se; + lft x2b = l - o; + draw z1b -- z2b; draw z1a -- z2a; + labels(2a, 2b); set_ic_o; +endchar; + +%}}} +%{{{ ae and oe ligatures + +def ma_e_lig(expr code, lsp, rsp) = + x_char(code, pn.wd# + 12u#)(lsp, rsp); + if 1/2w <> good.x 1/2w: change_width; fi + forsuffixes $ = 1, 2, 3, 4, 5: 1/2[z$a, z$e] = z0; endfor + x0 = 1/2w; y0 = y5a = good.y 1/2h; + top y2a = h + o; bot y3a = -o; lft x4a = l; + x2a = x3a = x5a = 0.55[x0, x4a]; + y4a = 1/2[y3a, y0]; + x1a = 0.85[x0, x4a]; top y1a = vround(h - 1/3v); + y2e := (-d - o) + 1/2pn.ht; y3e := (h + o) - 1/2pn.ht; + %% low-resolution hackettes + set_ic_e; +enddef; + +iff known code.lc.ae: "lower case ligature ae"; +ma_e_lig(code.lc.ae)(a_sp, e_sp); + draw z1a .. z2a{right} .. z0 .. z3a{left} .. z4a{up} .. z5a + --- z5e .. z4e{up} .. z3e{left} .. z0 .. z2e{right} .. z1e; + labels(1a, 2a, 3a, 4a, 5a, 1e, 2e, 3e, 4e, 5e, 0); +endchar; + +iff known code.lc.oe: "lower case ligature oe"; +ma_e_lig(code.lc.oe)(o_sp, e_sp); + draw z0 --- z5e .. z4e{up} .. z3e{left} .. z0 .. z2e{right} .. z1e; + draw_circle.o(l - ho, h + oo, rt 1/2w, -d - oo); + labels(1e, 2e, 3e, 4e, 5e, 0); +endchar; + +%}}} +%{{{ f and f-ligatures + +longs_adjust# := -1u#; +longs_rsp:=f_rsp + longs_adjust#/sp#; +define_whole_pixels(longs_adjust); + +iff known code.lc.f: +f_char(code.lc.f, f_wd#)(f_lsp, f_rsp); + draw_f(l + f_bar_left, 0) false; draw_f_bar false; + set_ic (h# - v# + 1/2pn.ht#); +endchar; + +iff known code.lc.f.f: "ligature ff"; +f_char(code.lc.f.f, 2f_wd# - f_bar_left# + f_join#)(f_lsp, f_rsp); + draw_f1(l + f_bar_left, 0) true; + draw_f2(l + f_wd + f_join, 0) false; + draw_f_bar2 false; + set_ic (h# - v# + 1/2pn.ht#); +endchar; + +iff known code.lc.f.i: "ligature fi"; +f_char(code.lc.f.i, f_wd# + (f_join# + fi_kern#) + pn.wd#)(f_lsp, i_sp); + draw_f(l + f_bar_left, fi_kern) true; + draw_f_bar true; + bot z1foot = (x1, 0 - o); draw z1foot -- (x1foot, y1bar); + rt z2foot = (r, y1foot); + labels(1foot, 2foot); + set_ic (h# - v# + 1/2pn.ht#); +endchar; + +iff known code.lc.f.l: "ligature fl"; +f_char(code.lc.f.l, f_wd# + (f_join# + fi_kern#) + pn.wd#)(f_lsp, l_sp); + draw_f(l + f_bar_left, fi_kern) true; + draw_f_bar true; + bot z1foot = (x1, 0 - o); draw z1foot -- z1; + labels(1foot); + set_ic (h# - v# + 1/2pn.ht#); +endchar; + +iff known code.lc.f.f.i: "ligature ffi"; +f_char(code.lc.f.f.i, 2f_wd# - f_bar_left# + 2f_join# + fi_kern# + pn.wd#) + (f_lsp, i_sp); + draw_f1(l + f_bar_left, 0) true; + draw_f2(l + f_wd + f_join, fi_kern) true; + draw_f_bar2 true; + bot z1foot = (x[2]1, 0 - o); draw z1foot -- (x1foot, y1bar); + labels(1foot); + set_ic (h# - v# + 1/2pn.ht#); +endchar; + +iff known code.lc.f.f.l: "ligature ffl"; +f_char(code.lc.f.f.l, 2f_wd# - f_bar_left# + 2f_join# + fi_kern# + pn.wd#) + (f_lsp, l_sp); + draw_f1(l + f_bar_left, 0) true; + draw_f2(l + f_wd + f_join, fi_kern) true; + draw_f_bar2 true; + bot z1foot = (x[2]1, 0 - o); draw z1foot -- z[2]1; + labels(1foot); + set_ic (h# - v# + 1/2pn.ht#); +endchar; + +iff known code.lc.longs: "long s"; +f_char(code.lc.longs, f_wd#)(f_lsp, longs_rsp); + draw_f(f_bar_left, 0) false; + set_ic (h# - v# + 1/2pn.ht#); +endchar; + +iff known code.lc.longs.longs: "ligature longs longs"; +f_char(code.lc.longs.longs, 2f_wd# - f_bar_left# + f_join# + longs_adjust#)(f_lsp, longs_rsp); + draw_f1(l + f_bar_left, longs_adjust)true; + draw_f2(l + f_wd + longs_adjust + f_join, 0)false; + set_ic (h# - v# + 1/2pn.ht#); +endchar; + +%}}} +%{{{ ij ligature + +iff known code.lc.ij: "lower-case Dutch ij"; +ma_char(code.lc.ij, 2*max(pn.wd#, dot_wd#) + 2.5u#, + min(body_ht#, 1/2dot_ht# + 1/2[x_ht#, asc_ht#]), desc_dp#)(i_sp, i_sp); + x1i = w - x1j = l + 1/2max(dot_wd, pn.wd); + top y1j = top y1i = x_ht; + bot z2i = (x1i, 0); + draw z1i -- z2i; draw_tail 1j; draw z1j -- z1tail; + y0i = y0j = h; x0i = x1i; x0j = x1j; + draw_dot0i; draw_dot0j; + labels(0i, 1i, 2i, 0j, 1j); + set_ic_tr; +endchar; + +%}\}} ij ligature + +%}}} malcnc.mf + +% Local variables: +% fold-folded-p: t +% End: diff --git a/fonts/malvern/source/mamarks.mf b/fonts/malvern/source/mamarks.mf new file mode 100644 index 0000000000..c355c0a80e --- /dev/null +++ b/fonts/malvern/source/mamarks.mf @@ -0,0 +1,255 @@ +% mamarks.mf 1.2.0 1994/10/11 -- marks program file +% Copyright 1991-4 P. Damian Cugley + +%%% @METAFONT-file { +%%% filename = "mamarks.mf", +%%% version = "1.2.0", +%%% date = "1994/10/11", +%%% package = "Malvern 1.2", +%%% author = "P. Damian Cugley", +%%% email = "damian.cugley@comlab.ox.ac.uk", +%%% address = "Oxford University Computing Laboratory, +%%% Parks Road, Oxford OX1 3QD, UK", +%%% codetable = "USASCII", +%%% keywords = "Malvern, METAFONT, font, typefont, TeX", +%%% supported = "Maybe", +%%% abstract = "Character programs for the Malvern +%%% font family -- stand-alone marks (accents).", +%%% dependencies = "other program files", +%%% } + +% See the Malvern Handbook (maman.tex) for more info about Malvern. +% This software is available freely but without warranty. +% See the file COPYING for details. + +%{{{ mamarks.mf + +%{{{ Set mark_t etc. + +if lc_marks: + mark_t# := lc_mark_t#; mark_b# := lc_mark_b#; +else: + mark_t# := cap_mark_t# - (mcap_ht# - x_ht#); + mark_b# := cap_mark_b# - (mcap_ht# - x_ht#); +fi +define_whole_vertical_pixels(mark_t, mark_b); + +def ma_mark(expr code) = + ma_char(code, 8u#, mark_t#, 0pt#)(0,0); + pickup mark_pn; +enddef; + +%}}} + + +if testing: endinput; fi + +%{{{ ring + +"ring mark"; +ma_mark(code.mk.ring); + draw_circle(1/2w + -1.5u, mark_t, 1/2 w + 1.5u, + mark_b if not lc_marks: - acc.pn.th + 2o fi); +endchar; + +%}}} +%{{{ Grave, acute + +vardef draw_graveacute@#(expr leftx) = + rtlft x2@# = hround leftx; + lftrt x1@# = hround (rtlft x2@# minus 3u); + x1'@# = x1@# plus (pn.wd - acc.pn.th); + top y1@# = top y1'@# = mark_t; bot y2@# = mark_b; + draw z2@# -- z1@# -- z1'@# -- z2@#; + labels(1@#, 1'@#, 2@#, 3@#) +enddef; + +def do_graveacute(expr code) expr grave_p = + b := grave_p; + ma_mark(code); draw_graveacute(1/2w plus u); endchar +enddef; + +"grave mark"; do_graveacute(code.mk.grave) true; +"acute mark"; do_graveacute(code.mk.acute) false; + +"Hungarian double acute mark"; +ma_mark(code.mk.hungarian); + draw_graveacute1(1/2w - if lc_marks: 2u else: 2.5u fi); + draw_graveacute2(1/2w + if lc_marks: u else: 0.5u fi); +endchar; +%}}} +%{{{ circumflex and inverted circumflex + +def do_circumflex(expr code) expr inverted_p = + b := inverted_p; + ma_mark(code); + x1 = w - x3 = good.x (1/2w - (if lc_marks: 3u else: 2.5u fi + - acc.pn.th + 1/2apex_adjust)); + x2 = x2' = 1/2[x1,x3]; + topbot y1 = topbot y3 = if inverted_p: mark_t else: mark_b fi; + bottop y2 = bottop y2' minus pn.wd plus acc.pn.th + = if inverted_p: mark_b else: mark_t fi; + draw z1 -- z2 -- z3 -- z2' -- z1; + labels(1,2,2',3); + endchar; +enddef; + +"circumflex mark"; do_circumflex(code.mk.circumflex) false; +"inverted circumflex mark"; do_circumflex(code.mk.hook) true; +%}}} +%{{{ breve + +"breve mark"; +ma_mark(code.mk.breve); + top y1 = top y3 = mark_t; + bot y2 = mark_b; + top y2' = vround (y2 + (pn.wd - acc.pn.th) + 1/2acc.pn.th); + lft x1 = w - rt x3 = hround (1/2w - 2.5u); + x2 = x2' = 1/2[x1,x3]; + draw z1{down} .. z2{right} .. z3{up}; + % draw z1{down} .. z2'{right} .. z3{up}; + labels(1,2,2',3); +endchar; + +%}}} +%{{{ tilde + +"tilde"; +ma_mark(code.mk.tilde); + z3 = (1/2w, 1/2[mark_t, mark_b]); + lft x1 = w - rt x5 = x3 - 3u; + x2 = 1/2[x1,x3]; x4 = 1/2[x3,x5]; + top y2 = mark_t; bot y4 = mark_b; + bot y1 = 0.75[mark_t, mark_b]; + top y5 = 0.75[mark_b, mark_t]; + save p; path p; p = z1 ... z2{right} ... z3 ... z4{right} ... z5; + draw p; +% penpos3(pn.wd - acc.pn.th, angle(direction 2 of p) + 90); +% forsuffixes e=l,r: draw z2{right} ... z3e ... z4{right}; endfor + labels(1, 2, 3l, 3, 3r, 5); +endchar; + +%}}} + +if lc_marks: + %{{{ dot, twodots + +"two-dots mark"; +ma_mark(code.mk.twodots); + 1/2[x1,x2] = 1/2w; + y1 = y2 = 1/2[mark_t, mark_b]; + lft x2 = hround (1/2w - 1.5u - 1/2dot_wd); + draw_dot1; draw_dot2; + labels(1,2); +endchar; + +"dot mark"; +ma_mark(code.mk.dot) + z1 = (1/2w, 1/2[mark_t, mark_b]); + draw_dot1; +endchar; +%}}} + %{{{ macrons +"macron"; +ma_mark(code.mk.macron); + 1/2[x1,x2] = 1/2w; y1 = y2 = 1/2[mark_t, mark_b]; x2 - x1 = 4u; + draw z1 -- z2; labels(1,2); +endchar; + +if known code.mk.maacron: "macron for 2-letter vowels"; +ma_mark(code.mk.maacron); + 1/2[x1,x2] = 1/2w; y1 = y2 = 1/2[mark_t, mark_b]; + x2 - x1 = 8u; + draw z1 -- z2; labels(1,2); +endchar; +fi + +%}}} + if known code.mk.L_bar: + %{{{ bar for l-bar + +ma_char(code.mk.L_bar, 2u# + pn.wd#, 0.55cap_ht# + 1/2pn.ht#, 0pt#)(1/2,1) + top lft z1 = (l, h); top rt z2 = (r, h); + draw z1 -- z2; +endchar; + +%ligtable code.mk.L_bar: +% "l" kern -1sp# - l_sp*sp# - u# - pn.wd#, +% "L" kern -2sp# - u# - pn.wd#; +%}}} bar for l-bar + fi +fi + +%{{{ cedilla + +ma_char(code.mk.cedilla, + if lc_marks: cedilla_wd#, 0pt#, cedilla_ht# + else: Cedilla_wd#, 0pt#, Cedilla_ht# fi)(1,1); + pickup mark_pn; + draw_cedilla(1/2w, 0, if lc_marks: cedilla_wd, cedilla_ht + else: Cedilla_wd, Cedilla_ht fi); +endchar; + +%}}} +%{{{ Cedilla and ogonek + +iff known code.mk.ogonek: "ogonek mark"; +ma_char(code.mk.ogonek, 0u#, 0v#, 3v#)(0,0); + pickup mark_pn; + z1 = (good.x (1/2w + u), h); % overlaps baseline + bot y3 - (pn.ht - acc.pn.th) = bot y2 = -d; + z2 = z1 + whatever * se; x3 = x2; + draw z1{down} ... z2 -- z3 ... z1{up}; + labels(1,2,3); +endchar; + +%% This version is too complicated +%"cedilla"; +%ma_char(code.mk.cedilla, 0u#, 0v#, +% if lc_marks: 3/4 fi desc_dp#)(0,0); +% pickup mark_pn; +% x1 = x2 = x4 = good.x (1/2w if not lc_marks: + 1/2u fi); +% y1 = h; % overlaps baseline +% top y2 = h - if lc_marks: 2/3v else: v fi; +% bot y4 = -d; y3 = 1/2[y2,y4]; y5 = 1/6[y4, y2]; +% x5 = x1 - if lc_marks: 1.75u else: 2u fi; +% x3 = good.x (x1 + if lc_marks: 2u else: 2.5u fi); +% draw z1 -- z2{right} .. z3{down} .. z4{left} .. z5; +% z5' = z5 + (pn.wd - acc.pn.th)*up; +% z4' = z4 + (pn.ht - acc.pn.th)*up; +% z3' = z3 + (pn.ht - acc.pn.th)*left; +% draw z2{right} .. z3'{down} .. z4'{left} .. z5'; +% labels(1,2,3,4,5,3',4',5'); +%endchar; +%}}} + +if known code.asper and lc_marks: +%{{{ Asper and Lenis (they don't belong here) + +% pdc Wed. 20 Mar. 1991 +for bb := true, false: b := bb; + if b: "Greek asper, Arabic `ain, or Hebrew `ayin"; + else: "Greek lenis, Arabic hamza, or Hebrew 'aleph"; + fi + ma_char(if b: code.asper else: code.lenis fi + if not lc_marks: + 128 fi, + acc.pn.th# + 2u#, asc_ht#, 0v#)(0,0); + pickup mark_pn; + top y1 = mark_t; y2 = min (y1, 0.4[mark_t, mark_b]); + y1' = y1 - (pn.wd - acc.pn.th); + y2' = y2 - (pn.ht - acc.pn.th); + bot y3 = mark_b; + lftrt x2 = lftrt x2' = lr; + rtlft x1 = rtlft x1' = rtlft x3 plus u = rl; + draw z3{(x2' - x3, 0)} ... z2'{up} ... {(x1 - x2, 0)}z1' + -- z1{(x2 - x1, 0)} ... z2{down} ... {(x3 - x2, 0)}z3; + labels(1,2,3,1'); + endchar; +endfor +%}}} +fi +%}}} + +%Local variables: +%fold-folded-p: t +%End: diff --git a/fonts/malvern/source/maparams.mf b/fonts/malvern/source/maparams.mf new file mode 100644 index 0000000000..b8ca2fca0f --- /dev/null +++ b/fonts/malvern/source/maparams.mf @@ -0,0 +1,219 @@ +% maparams.mf 1.2.0 1994/10/11 -- Set ad-hoc parameters +% Copyright 1991-4 P. Damian Cugley. + +%%% @METAFONT-file { +%%% filename = "maparams.mf", +%%% version = "1.2.0", +%%% date = "1994/10/11", +%%% package = "Malvern 1.2", +%%% author = "P. Damian Cugley", +%%% email = "damian.cugley@comlab.ox.ac.uk", +%%% address = "Oxford University Computing Laboratory, +%%% Parks Road, Oxford OX1 3QD, UK", +%%% codetable = "USASCII", +%%% keywords = "Malvern, METAFONT, font, typefont, TeX", +%%% supported = "Maybe", +%%% abstract = "Define ad-hoc parameters for the Malvern +%%% font family.", +%%% dependencies = "other program files", +%%% } + +% See the Malvern Handbook (maman.tex) for more info about Malvern. +% This software is available freely but without warranty. +% See the file COPYING for details. + +%{{{ maparams.mf + +%{{{ meta-parameters (should be set before |\input ma|) + +boolean italic; % set if |italicness > 0| -- use italic letter-shapes + +if unknown italicness: + italic := false; + italicness := 0; +elseif italicness > 0: + italic := true; +else: + italic := false; +fi +% |italicness| is not referred to again + +if unknown hratio: hratio := 1; fi + +if unknown weight: weight := 1; fi + +if unknown slant: slant := 0; fi +currenttransform := identity + if slant <> 0: slanted slant fi + if aspect_ratio <> 1.0: yscaled aspect_ratio fi; + +% Warning message if selected obliqued font +if (slant <> 0) and (not italic): + message "Please use italic instead of obliqued."; + message "(Unless you know what you're doing!)"; +fi +%}}} meta-paramaters +%{{{ units of measurement +v# = 1/16 designsize; % unit of vertical measurement NB 1/16, not 1/18 + +u# = v# * hratio + if italic: * 0.95 fi; % unit of horizontal measurement + +sp# = 1.2u# + if designsize < 8pt#: * (8pt#/designsize) fi; + % unit of inter-charcter spacing + +ku# = 1/2[u#,sp#]; % unit of kerning +%}}} units +%{{{ heights and widths + + +body_ht# = % height of tallest characters +brack_ht# = % height of parentheses and other brackets +asc_ht# = % height of ascenders on l.c.\ letters like d +cap_ht# = % height of capital letters like X +fig_ht# = 12v#; % height of ranging figures +x_ht# = 8v#; % height of lower case letters like x +axis_ht# = 5v#; % height of maths axis (rarely used) +brack_dp# = 2v#; % depth of parentheses etc. +ogonek_dp# = 2.5v#; % depth of Polish ogonek +desc_dp# = % depth of descenders on letters like p +body_dp# = 4v#; % depth of deepest characters + +% |body_ht + body_dp = 16v = designsize| +% Large x-height; no built-in leading + +mcap_ht# = 7/8cap_ht#; % heigth of medium capitals +scap_ht# = 3/4cap_ht#; % height of small capitals +% Adobe's favoured value is |1/3[x_ht#,cap_ht#]| + +fig_wd# = 8u# - 2sp#; % width of ranging figures +sfig_ht# = 9v#; % height of superior figures +sfig_wd# = 2sfig.pn.wd# + 3.75u#; % width of same + +sup_x_ht# = 5.4v#; % x-height of superior letters +sup_x_top# = 11v#; % superior letters raised so that x-height is here + +dot_wd# = 1.25v# * weight; +dot_ht# = min(1.25v# * max(weight, 1), 3v#); + +bullet_wd# = (weight - 1)[4v#,6v#]; % not affected by hratio! +bullet_ht# = (weight - 1)[4v#,6v#]; + +ho# = oo# = 1/5v#; % overshoot for letter o +o# = 2/3oo#; % overshoot for other curves +apex_o# = 1/2o#; % overshoot for apexes +apex_adjust# = 1/3u# * weight; % widen apexes by this much +%}}} +%{{{ pens + +% wd = width ht = height th = thickness +% pn = pen (pen is a reserved word) + +pn.wd# = if italic: 0.8v# else: 0.9v# fi + * weight; % the default pen width + +% Lores hack: +if italic and (round(pn.wd# * hppp) < 0.75v# * weight * hppp): + pn.wd# := 0.9v# * weight; +fi + +comma.pn.th# = 4/5pn.wd#; +yen.pn.th# = min(3/4pn.wd#, v#); % bar in yen sign +ast.pn.th# = min(3/5pn.wd#, v#); % used in drawing asterisk +dag.pn.th# = min(2/3pn.wd#, v#); % used in drawing dagger +acc.pn.th# = min(pn.wd#, v#); % used drawing marks + +define_blacker_pixels(ast.pn.th, comma.pn.th, acc.pn.th); +define_whole_vertical_blacker_pixels(dag.pn.th, yen.pn.th); +pickup pencircle scaled acc.pn.th; mark_pn := savepen; +% the others are used once each so don't |savepn| them + +cap.pn.wd# = pn.wd#; %%%% 1.10*pn.wd#; +mcap.pn.wd# = pn.wd#; %%%% 1.05*pn.wd#; +scap.pn.wd# = 1.00*pn.wd#; +sfig.pn.wd# = 0.90*pn.wd#; + +% ht = wd unless this would cause counters to fill up etc. +forsuffixes $$ = ,cap,mcap,scap: + $$pn.ht# = min(2v#, $$pn.wd#); +endfor + +sfig.pn.ht# = min((sfig_ht# - 2v#)/3, sfig.pn.wd#); + +forsuffixes $$ = ,cap,mcap,scap,sfig: + define_whole_blacker_pixels($$pn.wd); + define_whole_vertical_blacker_pixels($$pn.ht); +endfor + +% lowres hacks! +if cap.pn.wd/pn.wd > 1.2: + cap.pn.wd := mcap.pn.wd := scap.pn.wd := pn.wd; + cap.pn.ht := mcap.pn.ht := scap.pn.ht := pn.ht; +fi + +pickup pencircle xscaled pn.wd yscaled pn.ht; +the_pen = savepen; + +%}}} +%{{{ usual sizes of marks + +cap_mark_t# = body_ht# + 1.25v#; +cap_mark_b# = mcap_ht# + 0.75v#; +lc_mark_t# = body_ht#; +lc_mark_b# = x_ht# + v#; + +% assuming body_ht# = 12v#, mcap_ht# = 10v#, mcap marks go from +% 11v# to 13.5v# (2.5v#), so are flatter than l.c. marks. + +acute_wd# = 3u#; +hook_wd# := pn.wd# + 1u#; % hook for tall letters like "d" and "t" + +% These are all kept unrounded, and rounded later + +cedilla_ht# = 3v#; cedilla_wd# = 3u#; +Cedilla_ht# = 4v#; Cedilla_wd# = 4u#; + +%}}} +%{{{ define_pixels + +define_pixels(sp,u,v); +define_whole_pixels(apex_adjust, acute_wd, hook_wd); +define_whole_vertical_pixels(brack_ht, body_ht, asc_ht, cap_ht, fig_ht, + mcap_ht, scap_ht, x_ht, desc_dp, body_dp, brack_dp, ogonek_dp, + sup_x_ht, sup_x_top, + sfig_ht, lc_mark_t, lc_mark_b, cap_mark_t, cap_mark_b); + +define_whole_blacker_pixels(dot_wd, bullet_wd); +define_whole_vertical_blacker_pixels(dot_ht, bullet_ht); + +define_good_y_pixels(axis_ht); + +define_corrected_pixels(o, oo, apex_o); +define_horizontal_corrected_pixels(ho); + +define_pixels(cedilla_ht, cedilla_wd, Cedilla_ht, Cedilla_wd); +%}}} +%{{{ Spacing of l.c. letters + +a_sp = 0.6; +e_sp = o_sp; +f_lsp = 0.35; +f_rsp = (0.5sp# - 2u#)/sp#; +i_sp = 1.0; +j_sp = (1sp# - 1.75u#)/sp#; +l_sp = 1.0; +n_sp = 0.9; +o_sp = 0.5; +r_sp = 0.4; +s_sp = 0.6; +v_sp = 0.4; +x_sp = 0.5; +%}}} +golden_ratio = 0.618034; +lc_mark_ht = lc_mark_t - lc_mark_b; +%}}} maparams.mf + +%Local variables: +%fold-folded-p: t +%End: diff --git a/fonts/malvern/source/mapunct.mf b/fonts/malvern/source/mapunct.mf new file mode 100644 index 0000000000..03c859c8fd --- /dev/null +++ b/fonts/malvern/source/mapunct.mf @@ -0,0 +1,308 @@ +% mapunct.mf 1.2.0 94/10/11 -- punctuation +% Copyright 1991, 1993 P. Damian Cugley + +%%% @METAFONT-file { +%%% filename = "mapunct.mf", +%%% version = "1.2.0", +%%% date = "1994/10/11", +%%% package = "Malvern 1.2", +%%% author = "P. Damian Cugley", +%%% email = "damian.cugley@comlab.ox.ac.uk", +%%% address = "Oxford University Computing Laboratory, +%%% Parks Road, Oxford OX1 3QD, UK", +%%% codetable = "USASCII", +%%% keywords = "Malvern, METAFONT, font, typefont, TeX", +%%% supported = "Maybe", +%%% abstract = "Punctuation character programs for the Malvern +%%% font family.", +%%% dependencies = "other program files", +%%% } + +% See the Malvern Handbook (maman.tex) for more info about Malvern. +% This software is available freely but without warranty. +% See the file COPYING for details. + +%{{{ mapunct.mf + +ang_brack_wd# := 1/2 * (brack_ht# + brack_dp# - pn.ht#) * hratio + pn.wd#; + +if testing: endinput; fi + +%{{{ Hyphen + dashes + +dash_ht# := golden_ratio*x_ht# + 1/2pn.ht#; + +def do_dash(expr code, w_sharp) = + ma_char(code, w_sharp - 2/3sp#, dash_ht#, 0pt#)(1/3,1/3); + draw (rt l, bot h) -- (lft r, bot h); set_ic_tr; + endchar +enddef; + +if known code.hyphen: "hyphen"; do_dash(code.hyphen, 4u#); fi +if known code.dup.hyphen: "spare hyphen"; do_dash(code.dup.hyphen, 4u#); fi +if known code.en_dash: "short dash"; do_dash(code.en_dash, 8u#); fi +if known code.em_dash: "long dash"; do_dash(code.em_dash, 16u#); fi + +%}}} +%{{{ Dots and commas +%{{{ How to draw a comma or inverted comma + +comma_ht# := 3v#; comma_wd# := 1u#; +define_whole_vertical_pixels(comma_ht); +define_whole_pixels(comma_wd); + +vardef draw_comma@#(expr up_p) = + pickup pencircle scaled comma.pn.th; + z@#z = (hround x@#, vround y@#); + % this makes z@#c good.x and z@#d good.y, because comma_wd integer + if up_p: bot else: top fi z@#d + = z@#z + comma_ht * if up_p: down else: up fi; + y@#c = 1/2[y@#z, y@#d]; + if up_p: rt else: lft fi x@#c + = if up_p: x@#z + comma_wd else: x@#z - comma_wd fi; + 1/2[z@#a, z@#b] = z@#z; + z@#b = z@#a + (dot_wd - comma.pn.th) + * if up_p: (hratio, 1) else: (-hratio, -1) fi; + draw z@#d .. z@#c{if up_p: up else: down fi} + .. z@#b{(z@#z - z@#c) xscaled 2} .. z@#a{(z@#c - z@#z) xscaled 2} + .. z@#c{if up_p: down else: up fi} .. z@#d; + draw z@#d .. z@#c{if up_p: up else: down fi} + .. z@#z{(z@#z - z@#c) xscaled 2}; % fill in any hole in middle + labels(@#z, @#a, @#b, @#c, @#d) +enddef; + +comma_dp# := comma_ht# - dot_ht# + 2o#; +%}}} +%{{{ .,:; + +def do_semicolon(expr code, t_p, comma_p) = + ma_char(code, if comma_p: comma_wd# + 1/2dot_wd# else: dot_wd# fi, + if t_p: x_ht# else: dot_ht# - 2o# fi, + if comma_p: comma_dp# else: 0pt# fi)(1,1); + z1 = (l + 1/2dot_wd, 1/2dot_ht - o); + if comma_p: draw_comma1(true) else: draw_dot1 fi; + if t_p: z2 = (x1, h - 1/2dot_ht + o); draw_dot2; fi + set_ic_tr; + endchar +enddef; + +if known code.full_stop: + "full stop"; do_semicolon(code.full_stop, false, false); fi +if known code.comma: + "comma"; do_semicolon(code.comma, false, true); fi +if known code.comma1: + "spare comma"; do_semicolon(code.comma1, false, true); fi +if known code.colon: + "colon"; do_semicolon(code.colon, true, false); fi +if known code.semicolon: + "semicolon"; do_semicolon(code.semicolon, true, true); fi +if known code.gr.question: + "Greek question mark"; do_semicolon(code.gr.question, true, true); fi + +%}}} +%{{{ quotes + +iff known code.apostrophe: "apostrophe"; +ma_char(code.apostrophe, comma_wd# + 1/2dot_wd#, asc_ht#, 0pt#)(1,1); + z1 = (l + 1/2dot_wd, h - 1/2dot_ht + o); draw_comma1(true); set_ic_tr; +endchar; + +iff known code.inv.comma: "inverted comma"; +ma_char(code.inv.comma, comma_wd# + 1/2dot_wd#, asc_ht#, 0pt#)(1,1); + z1 = (r - 1/2dot_wd, h - comma_ht + o); draw_comma1(false); set_ic_tr; +endchar; + +iff known code.dbl.inv.comma: "double inverted comma"; +ma_char(code.dbl.inv.comma, 2comma_wd# + u# + dot_wd#, asc_ht#, 0pt#)(1,1); + z1 = (r - 1/2dot_wd, h - comma_ht + o); draw_comma1(false); + z2 = (x1 - comma_wd - 1/2dot_wd - u, y1); draw_comma2(false); + set_ic_tr; +endchar; + +iff known code.dbl.apostrophe: "double apostrophe"; +ma_char(code.dbl.apostrophe, 2comma_wd# + u# + dot_wd#, asc_ht#, 0pt#)(1,1); + z1 = (l + 1/2dot_wd, h - 1/2dot_ht + o); draw_comma1(true); + z2 = (x1 + comma_wd + 1/2dot_wd + u, y1); draw_comma2(true); + set_ic_tr; +endchar; + +iff known code.dbl.comma: "double comma"; +ma_char(code.dbl.comma, 2comma_wd# + u# + dot_wd#, asc_ht#, + comma_ht# - dot_ht# + 2o#)(1,1); + z1 = (l + 1/2dot_wd, 1/2dot_ht - o); draw_comma1(true); + z2 = (x1 + comma_wd + 1/2dot_wd + u, y1); draw_comma2(true); + set_ic_tr; +endchar; + +%}}} + +iff known code.cdot: "raised dot"; +ma_char(code.cdot, dot_wd#, axis_ht# + dot_ht# - 2o#, 0pt#)(1,1); + z1 = (l + 1/2dot_wd, h - 1/2dot_ht + o); + draw_dot1; set_ic_tr; +endchar; + +iff known code.gr.colon: "Greek colon"; +ma_char(code.gr.colon, dot_wd#, axis_ht# + dot_ht# - 2o#, 0pt#)(1,1); + z1 = (l + 1/2dot_wd, h - 1/2dot_ht + o); + draw_dot1; set_ic_tr; +endchar; + +%}}} +%{{{ brackets of different sorts + +def ma_brack(expr code, edoc, w_sh, lrsp, rlsp) = + ma_char(if b: code else: edoc fi, w_sh, brack_ht#, brack_dp#) + if b: (lrsp, rlsp) else: (rlsp, lrsp) fi +enddef; + +for i = 0, 1: b := (i = 0); +%{{{ parenthesis + +iff known code.paren.left: leftright "parenthesis"; +ma_brack(code.paren.left, code.paren.right, 4u#)(1,1/3); + numeric twist; twist = 3; + top rtlft z1 = (rl, h + o); bot rtlft z3 = (rl, -d - o); + y2 = 1/2[y1, y3]; lftrt x2 = lr; + draw z1{(z2 - z1) xscaled twist} .. z2 .. {(z3 - z2) xscaled twist}z3; + labels(1,2,3); + if b: set_ic_tr; else: set_ic 0.7charht; fi +endchar; + +%}}} +%{{{ bracket + +iff known code.brack.left: leftright "bracket"; +ma_brack(code.brack.left, code.brack.right, pn.wd# + 2u#)(1,1/3); + lftrt x2 = lftrt x3 = lr; rtlft x1 = rtlft x4 = rl; + top y1 = top y2 = h; bot y3 = bot y4 = -d; + draw z1 -- z2 -- z3 -- z4; + labels(1,2,3,4); set_ic_tr; +endchar; + +%}}} +%{{{ angle bracket + +iff known code.anglebr.left: leftright "angle bracket"; +ma_brack(code.anglebr.left, code.anglebr.right, ang_brack_wd#)(1,0); + top rtlft z1 = (rl, h); + bot rtlft z3 = (rl, -d); + lftrt z2 = (lr, 1/2[-d, h]); + draw z1 -- z2 -- z3; + labels(1,2,3); + if b: set_ic_tr; else: set_ic 1/2[brack_ht#, brack_dp#]; fi +endchar; + +%}}} +%{{{ brace + +iff known code.brace.left: leftright "brace"; +ma_brack(code.brace.left, code.brace.right, 6u#)(1/2,1/3); + if 1/2[-d,h] <> good.y 1/2[-d,h]: change_depth; fi + rtlft x1top = rtlft x1bot = rl; + lftrt x1mid = lr; y1mid = y2mid = 1/2[-d, h]; + top y1top = top y2top = h; bot y1bot = bot y2bot = -d; + x3top = x4top = x3bot = x4bot = good.x 0.45[x1mid, x1top]; + x2top = x2bot = 3/4[x3top, x1top]; + x2mid = 3/4[x4top, x1mid]; + z3top = z2top + whatever*(plus hratio,1); + z4top = z2mid + whatever*(plus hratio,1); + z3bot = z2bot + whatever*(minus hratio,1); + z4bot = z2mid + whatever*(minus hratio,1); + draw z1top --- z2top .. z3top --- z4top .. z2mid --- z1mid + --- z2mid .. z4bot --- z3bot .. z2bot --- z1bot; + labels(forsuffixes $=top, bot: 1$, 2$, 3$, 4$, endfor 1mid, 2mid); + if b: set_ic_tr; else: set_ic 1/2[brack_ht#, brack_dp#]; fi +endchar; + +%}}} +endfor +%}}} +%{{{ exclam. and question marks + +iff known code.exclam: "exclamation mark"; +ma_char(code.exclam, max(pn.wd#, dot_wd#), cap_ht#, 0pt#)(5/4,5/4); + if 1/2w <> good.x 1/2w: change_width; fi + z1 = (1/2w, 1/2dot_ht - o); draw_dot1; + bot y2 = max(dot_ht + 2v, 1/4[-d, h]); top y3 = h + o; + x2 = x3 = 1/2w; + draw z2 -- z3; + labels(1,2,3); set_ic_tr; +endchar; + +iff known code.inv.exclam: "inverted exclamation mark"; +ma_char(code.inv.exclam, max(pn.wd#, dot_wd#), x_ht#, desc_dp#)(5/4,5/4); + if 1/2w <> good.x 1/2w: change_width; fi + z1 = (1/2w, h - 1/2dot_ht + o); draw_dot1; + top y2 = min(h - dot_ht - 2v, 1/4[h, -d]); bot y3 = -d - o; + x2 = x3 = 1/2w; + draw z2 -- z3; + labels(1,2,3); set_ic_tr; +endchar; + +def draw_question expr bb = + b := bb; + topbot y2 = hd plus o; rtlft x3 = rl; lftrt x1 = lr; + x2 = x4 = x6 = 0.55[x3, x1]; + y6 = y7 = good.y maxmin(dh plus dot_ht plus 2v, 1/4[dh, hd]); + y3 = 1/2[y2,y4]; y5 = 1/2[y6,y4]; + y4 = good.y (2/3[y2,y6]); + y1 = hd minus v; + x7 = x6 plus u; x5 = good.x (x6 minus 1.5u); + draw z1 ... z2{(x3 - x1, 0)} + ... z3{(0, y4 - y2)} ... z4 + ... z5{(0, y6 - y4)} ... z6 --- z7; + z0 = (x2, dh plus 1/2dot_ht minus o); draw_dot0; + labels(0, 1,2,3,4,5,6,7); +enddef; + +iff known code.question: "question mark"; +ma_char(code.question, 7u#, cap_ht#, 0v#)(1/2,2/3); + draw_question true; set_ic 0.9h#; +endchar; + +iff known code.inv.question: "inverted question mark"; +ma_char(code.inv.question, 7u#, x_ht#, desc_dp#)(2/3,1/2); + draw_question false; set_ic 0.6h#; +endchar; + +%}}} +%{{{ Guillemets + +guil_wd# := 1/2(x_ht# - pn.ht#)*hratio + pn.wd#; +guil_adj# := -u#; +define_whole_pixels(guil_wd, guil_adj); + +vardef guil@#(expr leftx) = + lftrt x@#2 = good.x leftx plus eps; y@#2 = good.y 1/2[-d, h]; + z@#1 = z@#2 + whatever * if b: ne else: se fi; + z@#3 = z@#2 + whatever * if b: se else: ne fi; + x@#1 = x@#3; bot y@#3 = -d; + draw z@#1 -- z@#2 -- z@#3; + labels(@#1, @#2, @#3); +enddef; + +for i = 0,1: b := (i = 0); + iff known code.guillemet.single.left: leftright "single guillemet"; + ma_char(if b: code.guillemet.single.left + else: code.guillemet.single.right fi, + guil_wd#, x_ht#, 0v#) + if b: (1,1/2) else: (1/2,1) fi; + guil(lr); + if b: set_ic_tr; else: set_ic 1/2x_ht#; fi + endchar; + + iff known code.guillemet.left: leftright "guillemet"; + ma_char(if b: code.guillemet.left else: code.guillemet.right fi, + 2guil_wd# + guil_adj#, x_ht#, 0v#) + if b: (1,1/2) else: (1/2,1) fi; + guil$(lr); guil#(lr plus guil_wd plus guil_adj); + if b: set_ic_tr; else: set_ic 1/2x_ht#; fi + endchar; +endfor + +%}}} +%}}} +%Local variables: +%fold-folded-p: t +%End: diff --git a/fonts/malvern/source/mascript.mf b/fonts/malvern/source/mascript.mf new file mode 100644 index 0000000000..5d91b36929 --- /dev/null +++ b/fonts/malvern/source/mascript.mf @@ -0,0 +1,39 @@ +%{{{ script caps for Malvern +%{{{ curly bits + +curl_ht# := 5v#; curl_wd# := 2.5u#; +define_whole_pixels(curl_wd); +define_whole_vertical_pixels(curl_ht); + +vardef curl_pts@#(expr left, bottom) = + x2@# - x1@# = x2@# - x3@# = (curl_wd - 1/2pn.wd) if left: * -1 fi; + y3@# - y1@# = (curl_ht - pn.ht) if bottom: * -1 fi; + y2@# = 1/2[y1@#, y3@#]; + if left: lft x2@# = l; else: rt x2@# = r; fi + if bottom: bot y3@# = -d; else top y3@# = h; fi + labels(1@#, 2@#, 3@#); +enddef; + +vardef curl_path@# = + z1@#{(x2@# - x1@#, 0)} .. z2@# .. {(x3@# - x2@#, 0)}z3@# +enddef; + +vardef curl_pts_path@#(expr left, bot) = + curl_pts@#(left, bot); + curl_path@# +enddef; +%}}} + +"script capital A"; +ma_char("A", 4/5width#, height#, 0v#)(1/2,1); + curl_pts(true, true); + rt x7 = rt x8 = r; x6 = lft x7; + top y6 = top y7 = h; bot y8 = -d; + z4 - z3 = z6 - z5 = whatever*(z6 - z3) xscaled 1.2; x4 = x5; + if y5 < y4: y5 - eps := y4 + eps := 1/2[y4, y5]; fi + x9 = 1/2[x5, x8]; y9 = 0.3[-d, h]; + y11 = y10 = good.y 0.45[-d, h]; lft x11 = r; lft x10 = 1/4[x1,x4]; + draw curl_path .. z4 --- z5 .. z6 -- z7 -- z8{up} .. z9 .. z10; + labels(4,5,6,7,8,9,10); +endchar; +%}}} diff --git a/fonts/malvern/source/masenc.mf b/fonts/malvern/source/masenc.mf new file mode 100644 index 0000000000..9ffae45429 --- /dev/null +++ b/fonts/malvern/source/masenc.mf @@ -0,0 +1,109 @@ +% masenc.mf 1.2.0 1994/10/11 -- standard TeX encoding +% Copyright 1994 P. Damian Cugley + +%%% @METAFONT-file { +%%% filename = "masenc.mf", +%%% version = "1.2.0", +%%% date = "1994/10/11", +%%% package = "Malvern 1.2", +%%% author = "P. Damian Cugley", +%%% email = "damian.cugley@comlab.ox.ac.uk", +%%% address = "Oxford University Computing Laboratory, +%%% Parks Road, Oxford OX1 3QD, UK", +%%% codetable = "USASCII", +%%% keywords = "Malvern, METAFONT, font, typefont, TeX", +%%% supported = "Maybe", +%%% abstract = "Encodign definition for the Malvern +%%% font family.", +%%% dependencies = "other program files", +%%% } + +% See the Malvern Handbook (maman.tex) for more info about Malvern. +% This software is available freely but without warranty. +% See the file COPYING for details. + +%{{{ masenc.mf 1.2.0 1994/10/11 +%{{{ cap Greek letters + +code.gr.cap.gamma = 0; +code.gr.cap.delta = 1; +code.gr.cap.theta = 2; +code.gr.cap.lambda = 3; +code.gr.cap.xi = 4; +code.gr.cap.pi = 5; +code.gr.cap.sigma = 6; +code.gr.cap.upsilon = 7; +code.gr.cap.phi = 8; +code.gr.cap.psi = 9; +code.gr.cap.omega = 10; + +%}}} +%{{{ ligatures & specials + +code.lc.f.f = 11; +code.lc.f.i = 12; +code.lc.f.l = 13; +code.lc.f.f.i = 14; +code.lc.f.f.l = 15; +code.lc.dotless_i = 16; +code.lc.dotless_j = 17; +code.lc.eszet = 25; +code.lc.ae = 26; +code.lc.oe = 27; +code.lc.o.slash = 28; +code.cap.ae = 29; +code.cap.oe = 30; +code.cap.o.slash = 31; + +%}}} +%{{{ marks for composite letters + +code.mk.grave = 18; +code.mk.acute = 19; +code.mk.hook = 20; +code.mk.breve = 21; +code.mk.macron = 22; +code.mk.ring = 23; +code.mk.circumflex= 94; +code.mk.dot = 95; +code.mk.hungarian= 125; +code.mk.tilde = 126; +code.mk.twodots = 127; + +code.mk.cidella = 24; +code.mk.L_bar = 32; + +%}}} +%{{{ punctuation + +input ascii +code.dbl.apostrophe = 34; +code.hyphen = ASCII"-"; +code.inv.exclam = 60; +code.inv.question = 62; +code.dbl.inv.comma = 92; +code.en_dash = 123; +code.em_dash = 124; + +%}}} + +code.offset.LS = 0; + +for i = ASCII"a" step 1 until ASCII"z": + scantokens ("code.lc." & char i) = i; + scantokens ("code.cap." & char i) = i - 32; +endfor + +if encoding = 26: + code.zero.old_style = ASCII "0"; + font_coding_scheme "TeX text with old-style numerals"; +else: + code.zero = ASCII"0"; + font_coding_scheme "TeX text"; +fi + +%}}} standard TeX encoding + +% Local variables: +% fold-folded-p: t +% End: diff --git a/fonts/malvern/source/masyms.mf b/fonts/malvern/source/masyms.mf new file mode 100644 index 0000000000..4e96a4344a --- /dev/null +++ b/fonts/malvern/source/masyms.mf @@ -0,0 +1,779 @@ +% masyms.mf 1.2.0 1994/10/11 -- misc. symbols for the Malvern font +% Copyright 1991, 1992, 1993 P. Damian Cugley + +%%% @METAFONT-file { +%%% filename = "masyms.mf", +%%% version = "1.2.0", +%%% date = "1994/10/11", +%%% package = "Malvern 1.2", +%%% author = "P. Damian Cugley", +%%% email = "damian.cugley@comlab.ox.ac.uk", +%%% address = "Oxford University Computing Laboratory, +%%% Parks Road, Oxford OX1 3QD, UK", +%%% codetable = "USASCII", +%%% keywords = "Malvern, METAFONT, font, typefont, TeX", +%%% supported = "Maybe", +%%% abstract = "Miscellaneous character programs for the Malvern +%%% font family.", +%%% dependencies = "other program files", +%%% } + +% See the Malvern Handbook (maman.tex) for more info about Malvern. +% This software is available freely but without warranty. +% See the file COPYING for details. + +%{{{ masyms.mf +%{{{ Start a symbol char which is symmetrical about axis_ht + +def ma_sym(expr code, w_sh, h_sh) = + ma_char(code, w_sh, axis_ht# + 1/2 * h_sh, + max(0, -(axis_ht# - 1/2 * h_sh)))(1,1); + if 1/2[l,r] <> good.x 1/2[l,r]: change_width; fi + x.m = 1/2[x.l, x.r]; y.m = 1/2[y.t, y.b]; + top y.t = axis_ht + (axis_ht - bot y.b) = h; + lft x.l = w - rt x.r = l; +enddef; +%}}} + +if testing: endinput; fi + +%{{{ plus, minus + +iff known code.plus_sign: "plus sign"; +ma_sym(code.plus_sign, 8u#, 8v#); + draw (x.l, axis_ht) -- (x.r, axis_ht); + draw (x.m, y.t) -- (x.m, y.b); + set_ic axis_ht#; +endchar; + +iff known code.minus_sign: "minus sign"; +ma_sym(code.minus_sign, 8u#, 8v#); + draw (x.l, axis_ht) -- (x.r, axis_ht); set_ic axis_ht#; +endchar; + +%}}} +%{{{ equals sign + +iff known code.equals: "equals sign"; +ma_sym("=", 8u#, 4v#); + draw_box_t; draw_box_b; set_ic axis_ht# + 2v#; +endchar; + +%}}} +%{{{ degree sign + +iff known code.degree: "degree sign"; +ma_char(code.degree, 4u#, body_ht#, 0pt#)(1/2,1/2); + draw_circle(l, h + oo, r, vround(h - 4v + oo)); + set_ic h# - 1.5v#; +endchar; + +%}}} +%{{{ Various currency symbols + +iff known code.dollar: "dollar sign"; +ma_char("$", 6u#, fig_ht#, 0pt#)(1,1); + if 1/2w <> good.x 1/2w: change_width; fi + x1bar = x2bar = x3bar = x4bar = 1/2[l, r]; + top y1bar = h + o; bot y4bar = -d -o; + y2bar = vround (1/2[-d, h] + 1/2x_ht); + y3bar = vround (1/2[-d, h] - 1/2x_ht); + draw_S(y2bar, y3bar)(0.5, 1/16, 1/12); + draw z1bar -- z2bar; draw z3bar -- z4bar; + set_ic 1/2[-chardp,charht] + 1/2x_ht#; % this is too much + charic := max(0, charic - 1/2u#); % fudge + labels(1bar, 2bar, 3bar, 4bar); +endchar; + +iff known code.cent: "cent sign"; +ma_sym(code.cent, 6u#, 11v#); + x1bar = x2bar = x3bar = x4bar = 0.55[l,r] - eps; + y1bar = y.t; y4bar = y.b; + y2bar = axis_ht + 3.5v; y3bar = axis_ht - 3.5v; + draw z1bar -- z2bar; draw z3bar -- z4bar; + draw_C(l, y2bar, r, y3bar) 1/12; + set_ic axis_ht# + 3.5v#; + charic := max(0, charic - 1/4u#); % fudge + labels(1bar, 2bar, 3bar, 4bar) +endchar; + +iff known code.yen: "yen sign"; +ma_char(code.yen, 8u#, fig_ht#, 0pt#)(1,1); + draw_Y(0.55[-d, h]); + pickup pencircle scaled yen.pn.th; + top y5 = top y6 = vround y2; + y7 = y8 = good.y (y5 - pn.ht - 1/2v); + x6 - x5 = x8 - x7 = 1/2(r - l) + eps; + 1/2[x5, x6] = 1/2[x7, x8] = x2; + draw z5 -- z6; draw z7 -- z8; + labels(5,6,7,8); set_ic_tr; +endchar; + +def ear_pt(suffix $, @) = ((1/sqrt2)[x@,x$], (1/sqrt2)[y$,y@]) enddef; + +iff known code.currency: "ISO-646 currency sign"; +ma_char(code.currency, 7u#, 11v#, 0pt#)(1,1); + draw_circle(l, vround(1/2[-d,h] + 3.5v), r, vround(1/2[-d,h] - 3.5v)); + x0ear1 = x3ear1 = x0; x1ear1 = x2ear1 = x2; + top y0ear1 = top y1ear1 = h + o; + y2ear1 = y3ear1 = 2[y0ear1, 1/2[-d,h]]; + z0ear2 = ear_pt(0,1); z1ear2 = ear_pt(2,1); + z2ear2 = ear_pt(2,3); z3ear2 = ear_pt(0,3); + forsuffixes $ = 0,1,2,3: draw z$ear1 -- z$ear2; endfor + set_ic_tr; + labels(forsuffixes $=0,1,2,3: $ear1, $ear2, endfor, 99) +endchar; + +iff known code.sterling: "pounds sterling sign"; +ma_char(code.sterling, 8u#, asc_ht#, + if italic: 1/2desc_dp# else: 0v# fi)(1,1); + top y2 = h + o; bot y6 = bot y7 = -d; y5 = y6 + apex_adjust; + lft x5 = lft x6 = l; rt x7 = r; + rt x1 = 0.875[l,r]; x2 = 0.55[x3, x1]; x3 = x4 = good.x 0.25[l,r]; + z2 = z3 + whatever*(hratio,1); + y4 = 0.3[-d, h]; y1 = 0.25[y2, y3]; + draw z1 .. z2{left} .. z3 --- z4 .. z5 -- z6 -- z7; + y1bar = y2bar = good.y 0.48[-d, h]; + x1bar = 0.4[x5, x4]; x2bar = 0.4[x2,x1]; + draw z1bar -- z2bar; + labels(1,2,3,4,5,6,7, 1bar, 2bar); + set_ic_tr; + charic := max(0, charic - u#); % fudge +endchar; + +%}}} +%{{{ (C) and (R) + +width# := 12u#; height# := 12v#; % for set_ic_O + +iff known code.copyright: "copyright sign"; +ma_char(code.copyright, 12u#, 12v#, 0pt#)(1/2,1/2); + draw_C(hround (1/2w - 3.6u), vround (1/2[-d,h] + 3.5v), + hround (1/2w + 2.4u), vround (1/2[-d,h] - 3.5v)) 1/12; + draw_circle.circle(l - ho, h + oo, r + ho, -d - oo); + set_ic_O; +endchar; + +iff known code.registered: "registered trademark sign"; +ma_char(code.registered, 12u#, 12v#, 0v#)(1/2,1/2); + draw_circle.circle(l - ho, h + oo, r + ho, -d - oo); + z0 = 1/2[(l, h), (r, -d)]; + lft x1stem = lft x2stem = lft x3stem = hround (x0 - 3u); + rt x2bowl = x2tail = hround (x0 + 3u); + top y1stem = top y1bowl = vround (y0 + 3.5v); + bot y3stem = bot y2tail = vround (y0 - 3.5v); + y3bowl = y2stem = y1tail = good.y (y0 - 1/2v); + y2bowl = 1/2[y1bowl, y3bowl]; + z1bowl = z2bowl + whatever*(-hratio, 1); + z3bowl = z2bowl + whatever*(hratio, 1); + z1tail = z2tail + whatever*(-hratio,1); + draw z3stem -- z1stem --- z1bowl .. z2bowl .. z3bowl --- z2stem; + draw z1tail -- z2tail; + labels(1stem, 2stem, 3stem, 1bowl, 2bowl, 3bowl, 1tail, 2tail); + set_ic_O; +endchar; + +%}}} +%{{{ hash mark + +iff known code.hash: "hash mark"; % or number sign etc. +ma_char(code.hash, 8u#, fig_ht#, if italic: 1/2desc_dp# else: 0v# fi)(1,1); + top y1a = top y2b = h + o; bot y2a = bot y1b = -d - o; + lft x1d = l; rt x2c = r; + x1a = w - x1b = good.x 0.35[l,r]; x2b = w - x2a = good.x 0.775[l,r]; + y1c = y2c = good.y 0.3[h, -d]; + y1d = y2d = h - y1c - d; + z1c = z1d + whatever*(z1a - z2a); z2c = z2d + whatever*(z1a - z2a); + forsuffixes $ = a,b,c,d: draw z1$ -- z2$; labels(1$, 2$); endfor + set_ic 0.3[charht, -chardp]; +endchar; + +%}}} +%{{{ ampersand + +iff known code.ampersand: "ampersand"; +ma_char(code.ampersand, 8u#, asc_ht#, 0v#)(2/3,1/2); + top y2a = h + o; lft x2b = l; bot y3b = -d - o; bot rt z5a = (r, -d - o); + x1a = x3a + 3u; y1a = y2a - 1/2v; + x2a = 0.55[x3a, x1a]; + x3a = good.x 1/6[l,r]; y3a = 1/2[x_ht, h]; + z4a - (x2a, y3a) = (1/sqrt2)*(x3a - x2a, y3a - y2a); + % z4a is tangent to circle through z2a and z3a + draw z1a ... z2a{left} ... z3a{down} ... z4a --- z5a; + z1b = whatever[z4a, z5a]; top y1b = x_ht; + x3b = 0.45[l,r]; z3b = z2b + whatever*se; + z4b = (9/10[l,r], 1/2[-d, h]); + draw z1b ... z2b{down} ... z3b{right} ... z4b{up}; + labels(1a, 2a, 3a, 4a, 5a, 1b, 2b, 3b, 4b); + set_ic 1/2h#; +endchar; + +%}}} +%{{{ asterisk(s) + +for nlobes = 5,6,7,8,9: + if known code.asterisk[nlobes]: + decimal nlobes & "-lobed asterisk"; + ma_char(code.asterisk[nlobes], 6u#, body_ht#, 0v#)(1/2,1/2); + if 1/2w <> good.x 1/2w: change_width; fi + z.m = (1/2w, good.y (h - 3v)); + pickup pencircle scaled ast.pn.th; + top z0 = (x.m, h + o); + for i = 1 upto nlobes - 1: + z[i] = z.m + (y0 - y.m) * dir(360*i/nlobes + 90) + xscaled hratio; + endfor + for i = 0 upto nlobes - 1: + penpos[i](pn.wd - ast.pn.th, 360*i/nlobes); + draw z.m --- z[i]l ... z[i]r --- z.m; + penlabels([i]); + endfor + set_ic h# - 2v#; + endchar; + fi +endfor + +%}}} +%{{{ slash and backslash + +iff known code.slash: "slash"; +ma_char(code.slash, 7u#, brack_ht#, brack_dp#)(1/3,1/3); + draw top rt (l, -d - o) -- bot lft (r, h + o); + set_ic_tr; +endchar; + +iff known code.fraction: "slash for fractions"; +ma_char(code.fraction, 7u#, brack_ht#, brack_dp#)(-1,-1); + draw top rt (l, -d - o) -- bot lft (r, h + o); + set_ic_tr; +endchar; + +iff known code.backslash: "backslash"; +ma_char(code.backslash, 7u#, brack_ht#, brack_dp#)(1/3,1/3); + draw top lft (r, -d - o) -- bot rt (l, h + o); + set_ic chardp; +endchar; + +%}}} +%{{{ daggers + +vardef dagger_bar@#(expr midy) = + pickup pencircle scaled dag.pn.th; + y1@# = y2@# = vround (midy + 1/2dot_wd) - 1/2dot_wd; + x1@# = w - x2@# = hround (l + 1/2dot_wd) + 1/2dag.pn.th; + penpos1@#(dot_wd - dag.pn.th, 90); penpos2@#(dot_wd - dag.pn.th, -90); + draw z1@#l --- z2@#l ... z2@#r --- z1@#r ... cycle; + draw z1@# -- z2@#; + penlabels(1@#,2@#); +enddef; + +def ma_dagger(expr code) expr bot_bar_p = + ma_char(code, 6u#, asc_ht#, 1/2desc_dp#)(1/2,1/2); + if 1/2w <> good.x 1/2w: change_width; fi + draw (1/2w, h - 1/2pn.ht + o) -- (1/2w, -d + 1/2pn.ht - o); + if bot_bar_p: + dagger_bar.top(1/4[h, -d]); + dagger_bar.bot(1/4[-d, h]); + set_ic 1/4[charht, chardp]; + else: + dagger_bar(0.3[h, -d]); + set_ic 0.3[charht, chardp]; + fi + endchar +enddef; + +if known code.dagger: "dagger"; ma_dagger(code.dagger) false; fi +if known code.dbl.dagger: "double dagger"; ma_dagger(code.dbl.dagger) true; fi + +%}}} +%{{{ at sign (@) + +iff known code.at_sign: "at sign"; +ma_char(code.at_sign, 12u#, cap_ht#, 0v#)(1/2,1/2); + lft z2 = (l - o, 1/2[-d, h]); rt z4 = (r + o, y2); + top z3 = (1/2[l,r], h + o); bot y1 = -d - o; + y10 = y6 = good.y 0.275[-d, h]; % bot of `a' part + x1 = x8 = x10 = x3; + rt x6 = 1/12[r, l]; + y9 = y7 = 1/2[-d, h]; + y8 = good.y 2[y10, y9]; + x9 = w - x7 = good.x max(0.275[l, r], + rt x2 + 1/4(r - l - 4pn.wd) + 1/2pn.wd); + bot z0 = (good.x 0.85[l,r], good.y 1/24[-d, h]); + draw z0 ... z1{left} ... z2{up} ... z3{right} ... z4{down} + ... z6{left} + ... z7{up} ... z8{left} ... z9{down} ... z10{right} ... z7{up}; + labels(range 0 thru 10); + set_ic 0.7h#; +endchar; + +%}}} +%{{{ Paragraph sign (\P) + +iff known code.paragraph: "paragraph sign"; +ma_char(code.paragraph, + 2.5pn.wd# + if italic: 5.5u# else: 5u# fi, + cap_ht#, + if italic: 1/2desc_dp# else: 0v# fi)(1/2,1); + top rt z1c = (r, h); y1a = y1b = y2c = y1c; % points at top + bot y2a = bot y2b = -d - o; % points at bot + x1a = x2a = good.x (r - 1/2pn.wd - u); + x1b = x2b = x2c = x4c = good.x (x1a - pn.wd - 1.5u); + lft x3c = l; y3c = 1/2[y2c, y4c]; z3c = z2c + whatever*ne; + if y4c < 1/2[-d,h]: + y4c := (vround 1/2[-d,h]); y3c := 1/2[y2c, y4c]; + fi + draw z2a -- z1a -- z1b -- z2b; draw z1c -- z2c; + if false: filldraw else: draw fi + z2c{left} ... z3c{down} ... z4c{right} -- cycle; + labels(1a, 1b, 2a, 2b, 1c, 2c, 3c, 4c); + set_ic_tr; +endchar; + +%}}} +%{{{ Section sign (\S) + +iff known code.section: "section sign"; +ma_char(code.section, 6u#, cap_ht#, + if italic: 1/2desc_dp# else: 0v# fi)(1,1); + z0 = 1/2[(l,h), (r,-d)]; % centre + draw_circle.o(l, vround (y0 + 3v), r, vround (y0 - 3v)); + rt x1a = w - lft x1b = hround 0.9[l,r]; + lft x3a = l + ho; rt x3b = r - ho; + top y2a = top y1a + 1/2v = h + o; + bot y2b = bot y1b - 1/2v = -d - o; + if italic: + z4a = z1o; z4b = z3o; + y3a = 1/2[y2a, y4a]; y3b = 1/2[y2b, y4b]; + else: + y3a = 2/3[y2a, y1o]; y3b = 2/3[y2b, y3o]; + z4a = (1/sqrt2)[z0, (x2o, y1o)]; + z4b = (1/sqrt2)[z0, (x0o, y3o)]; + fi + forsuffixes $ = a,b: + x2$ = x0; + draw z1$ ... z2${(x2$ - x1$, 0)} ... z3${(0, y3$ - y2$)} ... z4$; + labels(1$, 2$, 3$, 4$); + endfor; + set_ic_tr; + charic := max(0, charic - 1/2u#); %% fudge city +endchar; + +%}}} +%{{{ Trade mark sign + +iff known code.trademark: "trade mark sign"; +ma_char(code.trademark, 3pn.wd# + sp# + 7u#, body_ht#, 0v#)(1/3,1/2); + bot y4t = bot y1m = bot y5m = vround (h - 6u); + top y1t = top y2t = top y3t = h; + top y2m = top y4m = h + o; + lft x1t = l; rt x4m = rt x5m = r; + x2m = x1m = good.x 1/2[l,r]; + rt x2t = hround (lft x2m - sp); + if 1/2[x1t, x2t] <> good.x 1/2[x1t, x2t]: x2t := x2t + 1; fi + x3t = x4t = 1/2[x1t, x2t]; + z3m = z2m + whatever*se; z3m = z4m + whatever*ne; + if y3m < y1m: y3m := y1m; fi + draw z1t -- z2t; draw z3t -- z4t; + draw z1m -- z2m -- z3m -- z4m -- z5m; + labels(1t, 2t, 3t, 4t, 1m, 2m, 3m, 4m, 5m); + set_ic_tr; +endchar; + +%}}} +%{{{ florin + +% I can't get anyone to tell me one way or the other whether +% the florin sign is usually simply an italic `f' or is a special +% symbol unto itself. +% All the times I've seen it in print, it's simply been an italic `f'. +% But since it is now a feature of the standard PostScript encoding +% is is appearing more and more often in `real' fonts. +% So, what the hey, here's another character +% slot used up... + +iff known code.florin: "florin sign"; +ma_char(code.florin, 3pn.wd# + 4u#, fig_ht#, desc_dp#)(1/2,1/2); + if 1/2[l,r] <> good.x 1/2[l,r]: change_width; fi + top y2 = h + oo; bot y5 = -d - oo; + lft x6 = lft x7 = l; rt x0 = rt x1 = r; + x3 = x4 = 1/2[l,r]; x2 = 1/2[x1,x3]; x5 = 1/2[x4,x6]; + h - y1 = h - y3 = y4 - (-d) = y6 - (-d); z2 = z1 + whatever*se; + h - bot y0 = top y7 - (-d) = max(h - bot y1, vround 1/16(h + d)); + draw z0 --- z1 .. z2 .. z3 --- z4 .. z5 .. z6 --- z7; + top y1bar = top y2bar = hround (golden_ratio[-d,h] + 1/2pn.ht); + lft x1bar = good.x (lft x3 - 3/2u); + rt x2bar = good.x (rt x3 + 2u); + draw z1bar -- z2bar; + labels(range 0 thru 7, 1bar, 2bar); + set_ic_tr; +endchar; + +%}}} +%{{{ multiplication sign + +iff known code.multiply: "multiplication sign"; +ma_char(code.multiply, 8u#/sqrt2, axis_ht# + 4v#/sqrt2, + -min(0, axis_ht# - 4v#/sqrt2))(x_sp,x_sp); + box_points; + 1/2[z1,z2] = 1/2[z3,z4] = (1/2w, axis_ht); + z2 = z1 + whatever*se; z3 = z4 + whatever*ne; + top y1 = top y3 = h; + draw z1 -- z2; draw z3 -- z4; + labels(1,2,3,4); set_ic_tr; +endchar; + +%}}} +%{{{ per cent sign and similar + +ring_wd# := 5u#; ring_wd'# := 5.25u#; +ring_ht# := 5v#; ring_ht'# := 5.25v#; +define_whole_pixels(ring_wd, ring_wd'); +define_whole_vertical_pixels(ring_ht, ring_ht'); +lowres_fix(ring_wd, ring_wd') 1.2; +lowres_fix(ring_ht, ring_ht') 1.2; + +iff known code.percent: "per cent sign"; +ma_char(code.percent, 8u#, asc_ht#, if italic: 1/2desc_dp# else: 0v# fi)(1,1); + draw_circle.top(l - ho, h + oo, + l + ring_wd + ho, h - ring_ht - oo); + draw_circle.bot(r - ring_wd' - ho, -d + ring_ht' + oo, + r + ho, -d - oo); + z4top = 1/2[z0top, z2top]; z4bot = 1/2[z0bot, z2bot]; + 1/2[z1, z2] = 1/2[z4top, z4bot]; + z1 - z2 = whatever*(y4bot - y4top, x4top - x4bot) + if italic: yscaled 2 fi; + % line is at rt angles to line joining circles + lft x1 = l; draw z1 -- z2; + labels(1,2); + set_ic 1/2[charht, chardp] + if italic: 2 else: 1 fi * 4v#; +endchar; + +iff known code.per_thousand_zero: + "ring to stick on per-cent to make per-mille"; +ma_char(code.per_thousand_zero, ring_wd#, + if italic: ring_ht# - 1/2desc_dp# else: ring_ht# fi, + if italic: 1/2desc_dp# else: 0v# fi)(0, 1); + draw_circle(r - ring_wd' - ho, -d + ring_ht' + oo, + r + ho, -d - oo); +endchar; + +%{{{ c/o sign + +iff known code.care_of: "care of sign"; +ma_char(code.care_of, 8u#, asc_ht#, + if italic: 1/2desc_dp# else: 0v# fi)(1,1); + draw_C.top(l - ho, h + oo, + l + 7/8ring_wd + ho, h - ring_ht - oo) 1/20; + draw_circle.bot(r - ring_wd' - ho, -d + ring_ht' + oo, + r + ho, -d - oo); + z.cent.top = 1/2[z2top, z4top]; z.cent.bot = 1/2[z0bot, z2bot]; + 1/2[z1, z2] = 1/2[z.cent.top, z.cent.bot]; + z1 - z2 = whatever*(y.cent.bot - y.cent.top, x.cent.top - x.cent.bot) + if italic: yscaled 2 fi; + % line is at rt angles to line joining circles + lft x1 = l; draw z1 -- z2; + labels(1,2); + set_ic 1/2[charht, chardp] + if italic: 2 else: 1 fi * 4v#; +endchar; + +%}}} +%{{{ Draw per-mille in the same was as per-cent but with smaller rings + +ring_wd# := 4.5u#; ring_ht# := 4.5v#; +ring_wd'# := 4.6u#; ring_ht'# := 4.6v#; +define_whole_pixels(ring_wd, ring_wd'); +define_whole_vertical_pixels(ring_ht, ring_ht'); +lowres_fix(ring_wd, ring_wd') 1.2; +lowres_fix(ring_ht, ring_ht') 1.2; + +iff known code.per_thousand: "per thousand sign"; +ma_char(code.per_thousand, ring_wd# + 2ring_wd'# + sp# - 3/4u#, + asc_ht#, if italic: 1/2desc_dp# else: 0v# fi)(1/2,1/2); + draw_circle.top(l - ho, h + oo, l + ring_wd + ho, h - ring_ht - oo); + draw_circle.rt(r - ring_wd' - ho, -d + ring_ht' + oo, + r + ho, -d - oo); + draw_circle.mid(r - 2ring_wd' - sp - ho, -d + ring_ht' + oo, + r - ring_wd' - sp + ho, -d - oo); + 1/2[z1bar, z2bar] = 1/2[z1top, z3mid]; + y1bar = 1/4[y0top,y1top]; x1bar = 0.6[x1mid, x0mid]; + draw z1bar -- z2bar; + labels(1bar, 2bar); set_ic chardp + 3/4ring_ht#; +endchar; + +%}}} + +%}}} +%{{{ Bullet & ballot box + +iff known code.bullet: "bullet"; +ma_char(code.bullet, bullet_wd#, 1/2bullet_ht# + golden_ratio*x_ht#, + -(golden_ratio*x_ht# - 1/2bullet_ht#))(1,1); + fill fullcircle xscaled bullet_wd yscaled bullet_ht + shifted (1/2w, h - 1/2bullet_ht); +endchar; + +iff known code.ballotbox: "ballot box"; +ma_char(code.ballotbox, 12u#, 12v#, 0v#)(1,1); + box_points; draw_box; set_ic_tr; +endchar; + +%}}} +%{{{ NULL character, `Compound Word Mark' + +iff known code.null: "null glyph"; +ma_char(code.null, 0pt#, 0pt#, 0pt#)(0,0); +endchar; + +iff known code.cwm: "compound word mark"; +ma_char(code.cwm, 0pt#, 0pt#, 0pt#)(0,0); +endchar; + +%}}} +%{{{ Visible space (Cork again) + +iff known code.ascii.visible_space: "visible symbol for ASCII space character"; +ma_char(code.ascii.visible_space, 6u#, 1/2pn.ht#, 3v#)(1/2,1/2); + if 1/2[l,r] <> good.x 1/2[l,r]: change_width; fi + lft z1 = (l - eps, 0); rt z2 = (r, 0); bot z3 = (1/2[l,r], -d - eps); + draw z1 -- z2 -- z3 -- cycle; + labels(1,2,3); +endchar; + +%}}} +%{{{ Greater-than and less-than symbols + +iff known code.greater: +ma_sym(code.greater, hratio * sqrt3 * (4v# - 1/2pn.ht#) + 2pn.wd#, 8v#) + draw (x.l, y.t) -- (x.r, y.m) -- (x.l, y.b); +endchar; + +iff known code.less: +ma_sym(code.less, hratio * sqrt3 * (4v# - 1/2pn.ht#) + 2pn.wd#, 8v#) + draw (x.r, y.t) -- (x.l, y.m) -- (x.r, y.b); +endchar; + +%}}} +%{{{ Trypetiper quote marks -- ack! ppht! + +iff known code.tick.dbl: "typewriter double quotation marks"; +ma_char(code.tick.dbl, pn.wd# + 5u#, cap_ht#, 0pt#)(2/3,1/3); + top y1a = top y1b = h; + bot y2a = bot y2b = x_ht; + lft x1a - 2u = lft x2a = l; + rt x1b = rt x2b + 2u = r; + draw z1a -- z2a; draw z1b -- z2b; + labels(1a, 1b, 2a, 2b); + set_ic_tr; +endchar; + +iff known code.tick: "small tick mark"; +ma_char(code.tick, pn.wd# + 3u#, cap_ht#, 0pt#)(2/3,1/3); + top rt z1 = (r, h); + bot lft z2 = (l, x_ht); + draw z1--z2; + labels(1,2); + set_ic_tr; +endchar; + +iff known code.backtick: "reversed small tick mark"; +ma_char(code.backtick, pn.wd# + 3u#, cap_ht#, 0pt#)(2/3,1/3); + top lft z1 = (l, h); + bot rt z2 = (r, x_ht); + draw z1--z2; + labels(1,2); + set_ic_tr; +endchar; + +%}}} +%{{{ ASCII circumflex symbol + +iff known code.ascii.circumflex: "ASCII circumflex"; +ma_sym(code.ascii.circumflex, pn.wd# + 5u#, 1/2pn.ht# + 4v#); + draw (x.l, y.b) -- (x.m, y.t) -- (x.r, y.b); +endchar; + +%}}} +%{{{ ASCII underscore character + +iff known code.ascii.underscore: "ASCII underscore"; +ma_char(code.ascii.underscore, 6u#, pn.ht#, 0pt#)(1,1); + bot lft z1 = (l, 0); bot rt z2 = (r, 0); + draw z1 -- z2; + labels(1,2); +endchar; + +%}}} +%{{{ Vertical bar + +iff known code.vert: "vertical bar"; +ma_char(code.vert, pn.wd#, asc_ht#, 1/2brack_dp#)(1,1); + if 1/2w <> good.x 1/2w: change_width; fi + top z1 = (1/2w, h); bot z2 = (1/2w, -d); + draw z1 -- z2; + set_ic_tr; +endchar; + +%}}} +%{{{ Swung dash/ASCII tilde + +if known code.ascii.tilde and unknown code.swung_dash: + code.swung_dash = code.ascii.tilde; +fi + +iff known code.swung_dash: +ma_sym(code.swung_dash, 8u#, 4v#); + top z1 = (x.l, y.m); + bot z5 = (x.r, y.m); + z3 = 1/2[z1,z5]; + x2 = 1/2[x1,x3]; x4 = 1/2[x3,x5]; + y2 = y.t; y4 = y.b; + draw z1{up} ... z2{right} ... z3 ... z4{right} ... {up}z5; + labels(1,2,3,4,5); + set_ic_tr; +endchar; + +%}}} +%{{{ arrows +%{{{ generic arrow macro + +% Arrows in Malvern are deliberately simplified shapes + +numeric arrow_wd#, arrow_ht#; +arrow_wd# = 6u#; arrow_ht# = 6v#; +define_pixels(arrow_wd, arrow_ht); + +vardef draw_arrow@#(expr hbarp, vbarp, lheadp, rheadp, uheadp, dheadp) = + if hbarp: + lft x1@#h = l; rt x2@#h = r; + y1@#h = y2@#h = good.y (golden_ratio*x_ht); + draw z1@#h -- z2@#h; labels(1@#h, 2@#h); + if lheadp: + z1@#l = z1@#h + whatever*ne; + z2@#l = z1@#h + whatever*se; + top y1@#l = vround (y1@#h + 1/2arrow_ht); + bot y2@#l = vround (y1@#h - 1/2arrow_ht); + draw z1@#l -- z1@#h -- z2@#l; + labels(1@#l, 2@#l); + fi + if rheadp: + z1@#r = z2@#h + whatever*se; + z2@#r = z2@#h + whatever*ne; + top y1@#r = vround (y2@#h + 1/2arrow_ht); + bot y2@#r = vround (y2@#h - 1/2arrow_ht); + draw z1@#r -- z2@#h -- z2@#r; + labels(1@#r, 2@#r); + fi + fi + if vbarp: + top y1@#v = h; bot y2@#v = -d; + x1@#v = x2@#v = good.x 1/2[l,r]; + draw z1@#v -- z2@#v; labels(1@#v, 2@#v); + if uheadp: + z1@#u = z1@#v + whatever*ne; + z2@#u = z1@#v + whatever*se; + lft x1@#u = hround (x1@#v - 1/2arrow_wd); + rt x2@#u = hround (x1@#v + 1/2arrow_wd); + draw z1@#u -- z1@#v -- z2@#u; + labels(1@#u, 2@#u); + fi + if dheadp: + z1@#d = z2@#v + whatever*se; + z2@#d = z2@#v + whatever*ne; + lft x1@#d = hround (x2@#v - 1/2arrow_wd); + rt x2@#d = hround (x2@#v + 1/2arrow_wd); + draw z1@#d -- z2@#v -- z2@#d; + labels(1@#d, 2@#d); + fi + fi +enddef; + +%}}} generic arrow macros + +iff known code.arrow.left: +ma_sym(code.arrow.left, 12u#, arrow_ht#); + draw_arrow(true, false, true, false, false, false); +endchar; + +iff known code.arrow.right: +ma_sym(code.arrow.right, 12u#, arrow_ht#); + draw_arrow(true, false, false, true, false, false); +endchar; + +iff known code.arrow.left_right: +ma_sym(code.arrow.left_right, 12u#, arrow_ht#); + draw_arrow(true, false, true, true, false, false); +endchar; + +iff known code.arrow.down: +ma_sym(code.arrow.down, arrow_wd#, 12v#); + draw_arrow(false, true, false, false, false, true); +endchar; + +iff known code.arrow.up: +ma_sym(code.arrow.up, arrow_wd#, 12v#); + draw_arrow(false, true, false, false, true, false); +endchar; + +iff known code.arrow.up_down: +ma_sym(code.arrow.up_down, arrow_wd#, 12v#); + draw_arrow(false, true, false, false, true, true); +endchar; + +iff known code.arrow.all: +ma_sym(code.arrow.all, 12u#, 12v#); + draw_arrow(true, true, true, true, true, true); +endchar; + +% These sextension segments need some work... + +iff known code.arrow.horiz_ex: +ma_sym(code.arrow.horiz_ex, 5u#, arrow_ht#); + rt z1 = (l, axis_ht); lft z2 = (r, axis_ht); + draw z1--z2; labels(1,2); set_ic axis_ht#; +endchar; + +iff known code.arrow.vert_ex: +ma_sym(code.arrow.vert_ex, arrow_wd#, 5v#); + draw_arrow(false, true, false, false, false, false); +endchar; + +%}}} arrows +%{{{ blank space + +% Note that the blank space has 3 properties that distinguish it from +% a simple space as genberated by TeX: +% -- it has height and depth +% -- it has an italic correction +% -- it is (approx) 1/3em rather than approx 1/4em + +iff known code.blank_space: +ma_char(code.blank_space, 5u#, body_ht#, body_dp#)(0,0) + set_ic_tr; +endchar; + +%}}} blank space +%{{{ division sign + +iff known code.divide: "division sign"; +ma_sym(code.divide, 8u#, 8v#); + draw (x.l, axis_ht) -- (x.r, axis_ht); + z1dot = (x.m, y.t); z2dot = (x.m, y.b); + draw_dot1dot; draw_dot2dot; + labels(1ot, 2dot); set_ic axis_ht#; +endchar; +%}}} division sign +%{{{ logical negation + +iff known code.logical_not: "logical negation sign"; +ma_sym(code.logical_not, 8u#, 6v#); + draw (x.l, y.t) -- (x.r, y.t) -- (x.r, y.b); + set_ic_tr; +endchar; +%}}} logical negation +%}}} masyms.mf + + +%Local variables: +%fold-folded-p: t +%End: diff --git a/fonts/malvern/source/mff.rc b/fonts/malvern/source/mff.rc new file mode 100644 index 0000000000..cdeaa5091d --- /dev/null +++ b/fonts/malvern/source/mff.rc @@ -0,0 +1,95 @@ +# mff.rc 1.2.0 1994/10/11 -- mff startup file for Malvern 1.2 +# Copyright 1994 P. Damian Cugley + +### @mff-startup-file { +### filename = "mff.rc", +### version = "1.2.0", +### date = "1994/10/11", +### package = "Malvern 1.2", +### author = "P. Damian Cugley", +### email = "damian.cugley@comlab.ox.ac.uk", +### address = "Oxford University Computing Laboratory, +### Parks Road, Oxford OX1 3QD, UK", +### codetable = "USASCII", +### keywords = "Malvern, METAFONT, font, typefont, TeX", +### supported = "Maybe", +### abstract = "mff startup file for the Malvern +### font family.", +### dependencies = "other program files", +### } + +# See the Malvern Handbook (maman.tex) for more info about Malvern. +# This software is available freely but without warranty. +# See the file COPYING for details. + +# This file describes the translation of font names into assignments to +# METAFONT variables (see the file INSTALL for more info). +# It is used by programs like mff that run METAFONT automatically. + +######################################################################## +# +# The font name is of the form +# +# maXXx## my nonstandard font names +# +# where XX is 2 digits giving a style in the tradition of Univers +# x is a suffix describing the character set of the font +# ## is the design size, in points (with p as decimal point) +# +# Examples: +# +# ma55a10 Malvern 55 10-pt +# ma65a10 Malvern 65 demibold 10-pt +# ma74a18 Malvern 74 bold extended italic 18-pt +# ma58a7 Malvern 58 condensed italic 7-pt +# +# Use "mff -ffmv ..." to get Karl Berry's style of names. +# +######################################################################## + +# The following sets the W table. + ++W +-W "1= weight = 1/4" # ultra-light +-W "2= weight = 1/2" # extra-light +-W "3= weight = 3/4" # light +-W "4= weight = 7/8" # book +-W "5= weight = 1" # medium +-W "6= weight = 1.3" # demi +-W "7= weight = 1.6" # bold +-W "8= weight = 2" # extra +-W "9= weight = 3" # ultra + +# The table of widths. + ++C +-C "9= hratio = 0.50" +-C "0= hratio = 0.50; slant = 1/8; italicness = 1" +-C "7= hratio = 0.80" +-C "8= hratio = 0.80; slant = 1/8; italicness = 1" +-C "5= hratio = 1.00" +-C "6= hratio = 1.00; slant = 1/8; italicness = 1" +-C "3= hratio = 1.15" +-C "4= hratio = 1.15; slant = 1/8; italicness = 1" +-C "1= hratio = 1.30" +-C "2= hratio = 1.30; slant = 1/8; italicness = 1" + + ++I +# "j" is a hack to prevent the programs from using features new +# to METAFONT 2.0 -- such as the |=: ligature step, which is used +# to fake an "fj" ligature. +-I "j= no_new_mf = 1" # use when using METAFONT 1.x + +# Malvern encodings: ++J +-J "a= encoding = 1" # Malvern A (Latin text) +-J "b= encoding = 2" # Malvern B (symbols) +-J "c= encoding = 3" # Malvern C (Cyrillic) +-J "d= encoding = 4" # Malvern D +-J "e= encoding = 5" # Malvern E +-J "f= encoding = 6" # Malvern F +-J "g= encoding = 7" # Malvern G (Greek letters) + +-J "s= encoding =19" # Standard TeX text (like cmr) +-J "az=encoding =26" # TeX text, old-style figs diff --git a/fonts/malvern/source/testfont.tex b/fonts/malvern/source/testfont.tex new file mode 100644 index 0000000000..65031ed68e --- /dev/null +++ b/fonts/malvern/source/testfont.tex @@ -0,0 +1,495 @@ +% A testbed for font evaluation (see The METAFONTbook, Appendix H) + +% Modified by pdc to add uppercase text. 29-Nov-89 +% Modified some more by me again for testing Malvern. + +% ************************************************************************ +% +% This file should NOT, repeat * N * O * T * be installed in the +% standard TeX macro file area. Instead you should leave it in +% the same directory as the Malvern program files. It customizes +% testfont for the Malvern encoding conventions. +% +% ************************************************************************ + +\input malvern +\errorcontextlines=20 + +\tracinglostchars=0 +\tolerance=1000 +\raggedbottom +\nopagenumbers +\parindent=0pt +\newlinechar=`@ +\hyphenpenalty=200 +\doublehyphendemerits=30000 + +\newcount\m \newcount\n \newcount\p \newdimen\dim +\chardef\other=12 + +\def\today{\ifcase\month\or + January\or February\or March\or April\or May\or June\or + July\or August\or September\or October\or November\or December\fi + \space\number\day, \number\year} +\def\hours{\n=\time \divide\n 60 + \m=-\n \multiply\m 60 \advance\m \time + \twodigits\n\twodigits\m} +\def\twodigits#1{\ifnum #1<10 0\fi \number#1} + +\def\init{\message{@Name of the font to test = } + \read-1 to\fontname \startfont + \message{Now type a test command (\string\help\space for help):}} +\def\startfont{\font\testfont=\fontname + \leftline{\sevenrm Test of \fontname\unskip\ on \today\ at \hours} + \medskip + \testfont \setbaselineskip + \ifdim\fontdimen6\testfont<10pt \rightskip=0pt plus 20pt + \else\rightskip=0pt plus 2em \fi + \spaceskip=\fontdimen2\testfont % space between words (\raggedright) + \xspaceskip=\fontdimen2\testfont \advance\xspaceskip by\fontdimen7\testfont} + +{\catcode`\|=0 \catcode`\\=\other +|gdef|help{|message{% +\init switches to another font;@% +\end or \bye finishes the run;@% +\text prints a sample text, assuming TeX text font conventions;@% +\TEXT prints the sample text in uppercase;@% +\display prints all the characters in the font in a nice order;@% +\sample combines \display and \text;@% +\table prints the font layout in tabular format;@% +\mixture mixes a background character with a series of others;@% +\alternation interleaves a background character with a series;@% +\alphabet prints all lowercase letters within a given background;@% +\ALPHABET prints all uppercase letters within a given background;@% +\series prints a series of letters within a given background;@% +\lowers prints a comprehensive test of lowercase;@% +\uppers prints a comprehensive test of uppercase;@% +\digits prints a comprehensive test of numerals;@% +\math prints a comprehensive test of TeX math italic;@% +\names prints a text that mixes upper and lower case;@% +\punct prints a punctuation test;@% +\bigtest combines many of the above routines;@% +\help repeats this message;@% +and you can use ordinary TeX commands (e.g., to \input a file).}}} + +\def\setbaselineskip{\setbox0=\hbox{\n=0 +\loop\char\n \ifnum \n<255 \advance\n 1 \repeat} +\baselineskip=6pt \advance\baselineskip\ht0 \advance\baselineskip\dp0 } + +\def\setchar#1{{\escapechar-1\message{\string#1 character = }% + \def\do##1{\catcode`##1=\other}\dospecials + \read-1 to\next + \expandafter\finsetchar\next\next#1}} +\def\finsetchar#1#2\next#3{\global\chardef#3=`#1 + \ifnum #3=`\# \global\chardef#3=#2 \fi} +\def\promptthree{\setchar\background + \setchar\starting \setchar\ending} + +\def\mixture{\promptthree \domix\mixpattern} +\def\alternation{\promptthree \domix\altpattern} +\def\mixpattern{\0\1\0\0\1\1\0\0\0\1\1\1\0\1} +\def\altpattern{\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0} +\def\domix#1{\par\chardef\0=\background \n=\starting + \loop \chardef\1=\n #1\endgraf + \ifnum \n<\ending \advance\n 1 \repeat} + +\def\!{\discretionary{\background}{\background}{\background}} +\def\series{\promptthree \!\doseries\starting\ending\par} +\def\doseries#1#2{\n=#1\loop\char\n\!\ifnum\n<#2\advance\n 1 \repeat} +\def\complower{\!\doseries{`a}{`z}\doseries{'31}{'34}\par} +\def\compupper{\!\doseries{`A}{`Z}\doseries{'35}{'37}\par} +\def\compdigs{\!\doseries{`0}{`9}\par} +\def\alphabet{\setchar\background\complower} +\def\ALPHABET{\setchar\background\compupper} + +\def\lowers{\docomprehensive\complower{`a}{`z}{'31}{'34}} +\def\uppers{\docomprehensive\compupper{`A}{`Z}{'35}{'37}} +\def\digits{\docomprehensive\compdigs{`0}{`4}{`5}{`9}} +\def\docomprehensive#1#2#3#4#5{\par\chardef\background=#2 + \loop{#1} \ifnum\background<#3\m=\background\advance\m 1 + \chardef\background=\m \repeat \chardef\background=#4 + \loop{#1} \ifnum\background<#5\m=\background\advance\m 1 + \chardef\background=\m \repeat} + +\def\names{ {\AA}ngel\aa\ Beatrice Claire + Diana \'Erica Fran\c{c}oise Ginette H\'el\`ene Iris + Jackie K\=aren {\L}a\u{u}\.ra Mar{\'\i}a N\H{a}ta{\l}{\u\i}e {\O}ctave + O\^ctavia\~n + Pauline Qu\^eneau Roxanne Sabine T\~a{\'\j}a Ur\v{s}ula + Vivian Wendy Xanthippe Yv{\o}nne Z\"azilie\par} +\def\punct{\par\dopunct{min}\dopunct{pig}\dopunct{hid} + \dopunct{HIE}\dopunct{TIP}\dopunct{fluff} + \$1,234\cdot56 + 7/8 = 9\% = 90\permille\ @ \#0 2\times4 \S3 \P4 + 57\degrees\ = 57\thinspace\degrees C\par} +\def\dopunct#1% +{ + #1,\ #1:\ #1;\ `#1'\ ?`#1?\ !`#1!\ (#1)\ [#1]\ \langle#1\rangle\ + <#1>\ <<#1>>\ <<\thinspace#1\thinspace>>\ + #1*\ #1\dag\ #1\ddag\ #1.\par +} + +\def\bigtest{\sample + hamburgefonstiv HAMBURGEFONSTIV\par + \names \punct \lowers \uppers \digits \table} + +\def\math{\textfont1=\testfont \skewchar\testfont=\skewtrial + \mathchardef\Gamma="100 \mathchardef\Delta="101 + \mathchardef\Theta="102 \mathchardef\Lambda="103 \mathchardef\Xi="104 + \mathchardef\Pi="105 \mathchardef\Sigma="106 \mathchardef\Upsilon="107 + \mathchardef\Phi="108 \mathchardef\Psi="109 \mathchardef\Omega="10A + \def\ii{i} \def\jj{j} + \def\\##1{|##1|+}\mathtrial + \def\\##1{##1_2+}\mathtrial + \def\\##1{##1^2+}\mathtrial + \def\\##1{##1/2+}\mathtrial + \def\\##1{2/##1+}\mathtrial + \def\\##1{##1,{}+}\mathtrial + \def\\##1{d##1+}\mathtrial + \let\ii=\imath \let\jj=\jmath \def\\##1{\hat##1+}\mathtrial} +\newcount\skewtrial \skewtrial='177 +\def\mathtrial{$\\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 \\a \\b \\c \\d \\e \\f \\g + \\h \\\ii \\\jj \\k \\l \\m \\n \\o \\p \\q \\r \\s \\t \\u \\v \\w \\x \\y + \\z \\\alpha \\\beta \\\gamma \\\delta \\\epsilon \\\zeta \\\eta \\\theta + \\\iota \\\kappa \\\lambda \\\mu \\\nu \\\xi \\\pi \\\rho \\\sigma \\\tau + \\\upsilon \\\phi \\\chi \\\psi \\\omega \\\vartheta \\\varpi \\\varphi + \\\Gamma \\\Delta \\\Theta \\\Lambda \\\Xi \\\Pi \\\Sigma \\\Upsilon + \\\Phi \\\Psi \\\Omega \\\partial \\\ell \\\wp$\par} +\def\mathsy{\begingroup\skewtrial='060 % for math symbol font tests + \def\mathtrial{$\\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$\par} + \math\endgroup} + + +\newcount\whichtext +\newif\ifuppercase + +\def\text +{{\advance\baselineskip-4pt + \setbox0=\hbox{abcdefghijklmnopqrstuvwxyz} + \ifdim\hsize>2\wd0 \ifdim 15pc>2\wd0 \hsize=15pc \else \hsize=2\wd0 + \fi\fi + \parindent = 0.1\hsize \parskip = 1ex plus 2pt + \ifuppercase \uppercase \fi { + \ifcase\whichtext + It isn't easy to explain what attracts some people to letterforms + with such joy and fury. Most people can't tell typing from printing + and the latest figures on illiteracy suggest that we should be + grateful, while we can, that they can read at all. + + In comparison to the details of such other callings as, say, keeping + rabbits, small particulars of the alphabet can easily become an + obsession. I often think of Thomas Codben-Sanderson, a remarkable + man and a bookbinder of distinction, as he stood on + Hammersmith Bridge in the dark, throwing the printing type of the + Doves Press into the Thames. This was a crime of passion and has a + comical side that the decades often give to such things. But I can + see him, heart pounding, full of earnest purpose, as he puts his + beloved type to rest. He was not about to wonder, as the song + wonders about the lady, who might be kissing her now. + + I could name a few things I'd like to throw into the Thames + myself in the shadow of the night. But my reasons would not be as + pure has his. My motive wouldn't be love. + + \or + Lettering people disagree over everything. They argue about the + very purpose of the alphabet, which is as good a point for a fight + as any. + + Some people say that letters exist to be read and therefore the + things that interfere with legibility should be discouraged. (This + is a bit like saying that the purpose of liquor is to get you drunk. + If they were right, people would swig metal polish, and the farmers + of Cognac, Burgundy and Champagne grow potatoes.) + + The alphabet, the argument goes, should be a well-mannered + servant who quietly carries messages from author to reader. This is + sometimes true: it is just what we need in a telephone directory. + Fortunately, the world still has some other uses for letters as + well. We celebrate the alphabet for other reasons than legibility. + We enjoy all the passions and the fury and could hardly have more + fun without breaking the furniture. + + \or + The alphabet as a style for every need. For dignity, the style of + Roman inscriptions is unsurpassed. To attempt the limits of human + skill, people have decorated letters almost beyond recognition in + some of the world's greatest manuscript books. More than a code for + text, the alphabet has developed throught the centuries into a + splendid medium of expression. Even the greeting card with pink + pigs from your friend Henry had a printed message that was made to + look silly expressly to match his sense of humour. I think it's + marvellous and I don't think any permanent damage was done to our + heritage. + + As long as people seem to like letters made of soap bubbles, the + world can't be all bad. A few colleagues of mine have been driven + to despair over some lovely letters with snow on top that are used + in winter advertising. These things disd not come about by + accident. No designer consciously decided to forfeit his reputation + and go down in history wearing a fool's cap. They were made because + people wanted them and it is because people still do that they are + used every year as the waether gets cold. + + \or + Even if we agree that expression is a part of the alphabet, and agree + again that it sometimes comes before legibility, we still have many + things to disagree over. One thing that divides people is apprach. + They ask what kind of lettering is permissible in polite society. What + kind of expression can the common man be trusted with? + + One view, especially liked by amateurs, is that the only legitimate way + of using the alphabet for expression is to imitate medieval methods. + This means that you should write with a feather. You should work on + vellum if you can afford it, on hand-made paper if not (even if it only + differs comparably from machine-made paper in the direction of the + fibres). You should approach the job with reverence and possibly make + your own ink. All this is said to be justified by regarding writing, + illuminating, and lettering as medieval crafts. + + \null\hfill Gunnlaugur S. E. Briem\par + + \whichtext = -1 + \fi + } +\global\advance\whichtext by 1 +\moretext +(!`THE DAZED BROWN FOX QUICKLY GAVE 12345--67890 JUMPS!)\par}} +\def\moretext{?`But are{\ng}'t Kafka's Schlo{\ss} +and {\AE}sop's {\OE}uvres +often na{\"\i}ve vis-\`a-vis the {\dh}{\ae}monic {\th}h{\oe}nix's official +r\^ole in fluffy souffl\'es? } +\def\omitaccents{\let\moretext=\relax} + +\def\TEXT{{\uppercasetrue\text}} + +\def\,{\kern 0.1667em } + +\def\display +{{\par \rightskip = 0pt plus 0.25\hsize + \displayloop{65}{91} + \displayloop{97}{123} + \displayloop{48}{58} + ,.;: ` ' `` '' ()[]*+=/?!@\$\%\& - -- --- + \displayloop{0}{16} + \displayloop{16}{32} + \char32\char`\" \char`\<\char`\> + \char`\\\char`\^\char`\_ + \char`\|\char`\~\char127 + \par{\sevenrm 128+:} + \displayloop{128}{144} + \displayloop{144}{160} + \displayloop{160}{176} + \displayloop{176}{192} + \displayloop{192}{208} + \displayloop{208}{224} + \displayloop{224}{240} + \displayloop{240}{256} + \par +}} + +\def\displayloop#1#2% +{% + \n=#1 + \loop + \ifnum\n<#2 + \char\n + \advance\n+1 + \repeat +} + +\def\grecoroman +{{\rightskip = 0pt plus 0.25\hsize + AB% + \char0 C% Gamma + \char1 D% Delta + EFZGH\char2 % Theta + IJK% + \char3 L% Lambda + MN\char4 % Xi + O\char5 P% Pi + QR% + \char6 S% Sigma + T\char7 % Upsilon + UVW% + \char8 X\char9% Phi, Psi + Y\char10 + \par +}} + +\def\liggy +{{\def\\{\kern0pt}% + ff, f\\f; fi, f\\i; fl, f\\l; ffi, f\\f\\i; ffl, f\\f\\l. + \par Kafka often fluffy souffle official fife. + \par Kaf\\ka of\\ten f\\luf\\fy souf\\f\\le of\\f\\icial f\\if\\e. + \par +}} + +\def\sample{\display\TEXT\text\names} + +\newcount\hexcount +\def\hexdigit#1{\ifcase#1\relax 0\or 1\or 2\or 3\or 4\or 5\or 6\or 7\or + 8\or 9\or A\or B\or C\or D\or E\or F\fi} + +\def\tablecr +{% + \cr + \noalign{\nointerlineskip} + \multispan2\hfill &\multispan{33}\hrulefill + \cr + \noalign{\nointerlineskip} +} +\def\table +{ + \def\\{\char\n \global\advance\n 1} + \def\0##1{&\omit&\sevenrm##1} + \halign to \hsize + {% + \chartstrut\hss##\tabskip=0pt plus 10pt & + &\hss##\hss&##\vrule\cr + \lower 6.5pt\null + &\00\01\02\03\04\05\06\07\08\09\0A\0B\0C\0D\0E\0F + \tablecr + \global\n=0 + \tablelines + } + \bigbreak +} + +\def\tablelines +{ + \ifnum\n<256 + & \hexcount=\n \divide\hexcount16 \sevenrm\hexdigit\hexcount + &&\\&&\\&&\\&&\\&&\\&&\\&&\\&&\\&&\\&&\\&&\\&&\\&&\\&&\\&&\\&&\\& + \tablecr \noalign{\penalty5000 } + \tablelines + \fi +} +\def\chartstrut{\lower 0.25\baselineskip \vbox to \baselineskip{}} + +\def\oneaccent#1% +{ + O \'#1 \`#1 \^#1 \~#1 \"#1 \v #1 \u #1 \H #1 \.#1 \=#1 \accent9 #1 + O \par +} + +\def\currencies +{ + \pounds19\cdot66 = 99\cents\ = \$1\cdot00 = \currency66\cdot66 = + 123456\yen = \florin358 (or is that 358\florin\ or what?\par + \pounds\char"B1\char"B9\cdot\char"B6\char"B6\ = \char"B9\char"B9\cents\ + = \$\char"B1\cdot\char"B0\char"B0\ = + \currency\char"B6\char"B6\cdot\char"B6\char"B6\ = + \char"B1\char"B2\char"B3\char"B4\char"B5\char"B6\yen + = \florin\char"B3\char"B5\char"B8\ (or is that + \char"B3\char"B5\char"B8\florin\ or what?\par +} + +\ifx\noinit!\else\init\fi + +% insane smallcaps hacks + +\newcount\alphaone \newcount\alphatwo \newcount\alphathr +\def\doalphabet#1#2#3% +{% + \alphaone=#2\relax \alphatwo=#3\relax \alphathr=26 + \loop + \advance\alphathr-1 + \ifnum\alphathr>0 + #1\alphaone\alphatwo + \advance\alphaone+1 + \advance\alphatwo+1 + \repeat +} + +\def\sctext{{\doalphabet\uccode{`a}{"E1}\uc\text}} +\def\lc#1{\lowercase{#1}} +\def\mctext{{\doalphabet\lccode{`A}{"C1}\lc\text}} + +\def\scnames{{\doalphabet\uccode{`a}{"E1}\uppercase\expandafter{\names}}} +\def\mcnames{{\doalphabet\lccode{`A}{"C1}\lowercase\expandafter{\names}}} + +\def\accents +{{ + \leftskip=1em \parindent=-1em \def\\##1:{\par{\tenrm ##1:}} + {\tenrm Accents according to HART'S:} + \\Anglo-Saxon: \TH\th\ \DH\dh (not quite right) \ \AE\ae\ \OE\oe\ + \=A\=a \=E\=e \=I \=\i\ \=O\=o \=U\=u \AAEE\aaee\ \OOEE\ooee\ + {\tenrm wyn, yogh} + {\tenrm and in textbooks:} \dotG\.g \dotC\dotc + \\Arabic: {\arabic \`alim, mu\`allim, \.d^a\`. \'am^ir, mu\'allim, + \.d^a\'. taw^ar^i_{kh} ma\`l^um} + \\Cyrllic languages: \'C\'c \'E\'e \"E\"e \'{} \u{I}o\u{\i} \=Y\=y + \v{Z}\v{z} + \\Czech: \'A\'a \hacekC\hacekc\ {\hacekD}d' \'E\'e \v{E}\v{e} \'I\'\i\ + \v{N}\v{n} \'O\'o \v{R}\v{r} \v{S}\v{s} \v{T}t' \'U\'u \@U\@u + \'Y\'y \v{Z}\v{z} + \\Danish: \AE\ae\ \O\o\ \AA\aa + \\English: \'E\'e \"I \"\i\ + \\Esperanto: {\esperanto ^Cu ^ci tia ^Genevulo ^guas ^Hano^h ^Jones + kaj la ^jipo de ^Sim^son kiu ^Uaas kaj ba^umas?} + \\Finnish: \"A\"a \"O\"o \AA\aa + \\French: \OE\oe\ \`A\`a \^A\^a \c{C}\c{c} \'E\'e \`E\`e \^E\^e + \"E\"e \^I \^\i\ \"I \"\i\ \^O\^o \`U\`u \^U\^u \"U\"u + \\Gaelic (Irish): \'A\'a \'E\'e \'I\'\i\ \'O\'o \'U\'u + \\Gaelic (Scots): \`A\`a \`E\`e \'E\'e \'I\'\i\ \`O\`o \'O\'o \'U\'u + \\German: {\german "S"s "A"a "O"o "U"u} + \\Hungarian: \'A\'a \'E\'e \'I\'\i\ \'O\'o \"O\"o \H{O}\H{o} \'U\'u + \"U\"u \H{U}\H{u} + \\Icelandic: \TH\th\ \DH\dh\ \AE\ae\ \OE\oe\ \'A\'a \'E\'e + \'I\'\i\ \'O\'o \"O\"o \'U\'u \'Y\'y + \\Norwegian: \AE\ae\ \O\o\ \AA\aa + \\Polish: \ogonek{A}\ogonek{a} \'C\'c \ogonek{E}\ogonek{e} + \L\l\ \'N\'n \'O\'o \'S\'s \'Z\'z \.Z\.z + \\Portuguese: \`A\`a \'A\'a \^A\^a \~A\~a \c{C}\c{c} \`E\`e \'E\'e + \^E\^e \`Io\`\i\ \'Io\'\i\ \`O\`o \'O\'o \^O\^o \~O\~o \'U\'u + \`U\`u + \\Romanian: \`A\`a \^A\^a \u{A}\u{a} \`E\`e \`Io\`\i\ \^Io\^\i\ + \c{S}\c{s} \c{T}\c{t} \`U\`u + \\Spanish: \'A\'a \'E\'e \'Io\'\i\ \~N\~n \'O\'o \'U\'u + \\Swedish: \AA\aa\ \"A\"a \"O\"o + \\Turkish: \^A\^a \c{C}\c{c} \u{G}\u{g} \.Ii I\i\ \^Io\^\i\ \"O\"o + \c{S}\c{s} \"U\"u \^U\^u + \\Welsh: \^A\^a \'A\'a \^E\^e \"E\"e \^Io\^\i\ \^O\^o \"O\"o \^U\^u + \^W\^w \^Y\^y + \par +}} + + +\def\greekaccents +{ + \n=12 + \loop \ifnum \n<32 + \accent\n a\accent\n e\accent\n i% + \char\n A\char\n E\char\n I% + \space + \advance\n1 + \repeat +} + + +\def\corkquote#1#2{#1min#2 #1pig#2 #1hid#2 #1HIE#2 #1TIP#2 #1fluff#2 \par} +\def\corkpunct +{ + \corkquote{\char34 }{\char34 } + \corkquote{`}{'} \corkquote{``}{''} + \corkquote{,}{`} \corkquote{,,}{``} + \corkquote{\char14 }{\char15 } \corkquote{<<}{>>} + \corkquote{\char15 }{\char14 } \corkquote{>>}{<<} + \corkquote{\char123 }{\char125 } +} +\def\corkascii % various computer language symbols using ASCII chars +{{ + \let\\=\corkbinary f(x) a[i] p.q !x \ \char`\~a \ a++ \ b--\/-- \ + \&a \ \\* \\/ \\\% \\< \\{<\/<} \\{<=} \\> \\{>\/>} \\{>=} + \\{==} \\{!=} \\{\char`\~=} \\{/=} \\{<>} \\{\#} \\{@} \\{+} + \\{\char`\\} + \\{--} \\{=} \\{\&} \\{\&\&} \\| \\{||} \\{\char`\^} \\{\char`\^.} + \\{\char`\~} \\{+=} \\{--=} \\{*=} \\{/=} \\{\%=} \\{\&=} \\{:=} + \\{::=} \\{:==} \\{<--} \\{-->} \\{\char`\^=} \\{|=} \\{<\/<=} + \\{>\/>=} \par +}} +\def\corkbinary#1{x #1\ y \ x#1y \ } + +\def\corkstuff{\corkpunct \corkascii} diff --git a/fonts/malvern/tex/OT1fmv.fd b/fonts/malvern/tex/OT1fmv.fd new file mode 100644 index 0000000000..45d4660b03 --- /dev/null +++ b/fonts/malvern/tex/OT1fmv.fd @@ -0,0 +1,75 @@ +% .fd -- font family description for NFSS 2 +% generated 1994.10.12 by fdcvt +% Created from: T1fmv.fd +%Created by: tex mkfd +%Created using fontinst v1.335 + +%THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY + +\ProvidesFile{OT1fmv.fd} + [1994/10/12 Fontinst v1.335 font definitions for OT1/fmv.] + +\DeclareFontFamily{OT1}{fmv}{} + +\DeclareFontShape{OT1}{fmv}{m}{n}{ + <5-8> ma55s7 + <8-11> ma55s10 + <11-13> ma55s12 + <13-16> ma55s14 + <16-21> ma55s18 + <21-> ma55s24 +}{} + +\DeclareFontShape{OT1}{fmv}{m}{it}{ + <5-8> ma56s7 + <8-11> ma56s10 + <11-13> ma56s12 + <13-16> ma56s14 + <16-21> ma56s18 + <21-> ma56s24 +}{} + +\DeclareFontShape{OT1}{fmv}{b}{n}{ + <5-8> ma75s7 + <8-11> ma75s10 + <11-13> ma75s12 + <13-16> ma75s14 + <16-21> ma75s18 + <21-> ma75s24 +}{} + +\DeclareFontShape{OT1}{fmv}{b}{it}{ + <5-8> ma76s7 + <8-11> ma76s10 + <11-13> ma76s12 + <13-16> ma76s14 + <16-21> ma76s18 + <21-> ma76s24 +}{} + +\DeclareFontShape{OT1}{fmv}{m}{sc}{ + <5-8> ma55aa7 + <8-11> ma55aa10 + <11-13> ma55aa12 + <13-16> ma55aa14 + <16-21> ma55aa18 + <21-> ma55aa24 +}{} + +\DeclareFontShape{OT1}{fmv}{b}{sc}{ + <5-8> ma75aa7 + <8-11> ma75aa10 + <11-13> ma75aa12 + <13-16> ma75aa14 + <16-21> ma75aa18 + <21-> ma75aa24 +}{} + +\DeclareFontShape{OT1}{fmv}{m}{ui}{<->sub * fmv/m/it}{} +\DeclareFontShape{OT1}{fmv}{bx}{n}{<->ssub * fmv/b/n}{} +\DeclareFontShape{OT1}{fmv}{bx}{it}{<->ssub * fmv/b/it}{} +\DeclareFontShape{OT1}{fmv}{b}{ui}{<->sub * fmv/b/it}{} +\DeclareFontShape{OT1}{fmv}{bx}{ui}{<->ssub * fmv/b/ui}{} +\DeclareFontShape{OT1}{fmv}{bx}{sc}{<->ssub * fmv/b/sc}{} + +\endinput diff --git a/fonts/malvern/tex/OT1fmv9.fd b/fonts/malvern/tex/OT1fmv9.fd new file mode 100644 index 0000000000..94a389b289 --- /dev/null +++ b/fonts/malvern/tex/OT1fmv9.fd @@ -0,0 +1,75 @@ +% .fd -- font family description for NFSS 2 +% generated 1994.10.12 by fdcvt +% Created from: T1fmv9.fd +%Created by: tex mkfd +%Created using fontinst v1.335 + +%THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY + +\ProvidesFile{OT1fmv9.fd} + [1994/10/12 Fontinst v1.335 font definitions for OT1/fmv9.] + +\DeclareFontFamily{OT1}{fmv9}{} + +\DeclareFontShape{OT1}{fmv9}{m}{n}{ + <5-8> ma55az7 + <8-11> ma55az10 + <11-13> ma55az12 + <13-16> ma55az14 + <16-21> ma55az18 + <21-> ma55az24 +}{} + +\DeclareFontShape{OT1}{fmv9}{m}{it}{ + <5-8> ma56az7 + <8-11> ma56az10 + <11-13> ma56az12 + <13-16> ma56az14 + <16-21> ma56az18 + <21-> ma56az24 +}{} + +\DeclareFontShape{OT1}{fmv9}{b}{n}{ + <5-8> ma75az7 + <8-11> ma75az10 + <11-13> ma75az12 + <13-16> ma75az14 + <16-21> ma75az18 + <21-> ma75az24 +}{} + +\DeclareFontShape{OT1}{fmv9}{b}{it}{ + <5-8> ma76az7 + <8-11> ma76az10 + <11-13> ma76az12 + <13-16> ma76az14 + <16-21> ma76az18 + <21-> ma76az24 +}{} + +\DeclareFontShape{OT1}{fmv9}{m}{sc}{ + <5-8> ma55ab7 + <8-11> ma55ab10 + <11-13> ma55ab12 + <13-16> ma55ab14 + <16-21> ma55ab18 + <21-> ma55ab24 +}{} + +\DeclareFontShape{OT1}{fmv9}{b}{sc}{ + <5-8> ma75ab7 + <8-11> ma75ab10 + <11-13> ma75ab12 + <13-16> ma75ab14 + <16-21> ma75ab18 + <21-> ma75ab24 +}{} + +\DeclareFontShape{OT1}{fmv9}{m}{ui}{<->sub * fmv9/m/it}{} +\DeclareFontShape{OT1}{fmv9}{bx}{n}{<->ssub * fmv9/b/n}{} +\DeclareFontShape{OT1}{fmv9}{bx}{it}{<->ssub * fmv9/b/it}{} +\DeclareFontShape{OT1}{fmv9}{b}{ui}{<->sub * fmv9/b/it}{} +\DeclareFontShape{OT1}{fmv9}{bx}{ui}{<->ssub * fmv9/b/ui}{} +\DeclareFontShape{OT1}{fmv9}{bx}{sc}{<->ssub * fmv9/b/sc}{} + +\endinput diff --git a/fonts/malvern/tex/T1fmv.fd b/fonts/malvern/tex/T1fmv.fd new file mode 100644 index 0000000000..e6c7b2d1b7 --- /dev/null +++ b/fonts/malvern/tex/T1fmv.fd @@ -0,0 +1,73 @@ +%Filename: T1fmv.fd +%Created by: tex mkfd +%Created using fontinst v1.335 + +%THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY + +\ProvidesFile{T1fmv.fd} + [1994/10/12 Fontinst v1.335 font definitions for T1/fmv.] + +\DeclareFontFamily{T1}{fmv}{} + +\DeclareFontShape{T1}{fmv}{m}{n}{ + <5-8> ma55ar7 + <8-11> ma55ar10 + <11-13> ma55ar12 + <13-16> ma55ar14 + <16-21> ma55ar18 + <21-> ma55ar24 +}{} + +\DeclareFontShape{T1}{fmv}{m}{it}{ + <5-8> ma56ar7 + <8-11> ma56ar10 + <11-13> ma56ar12 + <13-16> ma56ar14 + <16-21> ma56ar18 + <21-> ma56ar24 +}{} + +\DeclareFontShape{T1}{fmv}{b}{n}{ + <5-8> ma75ar7 + <8-11> ma75ar10 + <11-13> ma75ar12 + <13-16> ma75ar14 + <16-21> ma75ar18 + <21-> ma75ar24 +}{} + +\DeclareFontShape{T1}{fmv}{b}{it}{ + <5-8> ma76ar7 + <8-11> ma76ar10 + <11-13> ma76ar12 + <13-16> ma76ar14 + <16-21> ma76ar18 + <21-> ma76ar24 +}{} + +\DeclareFontShape{T1}{fmv}{m}{sc}{ + <5-8> ma55at7 + <8-11> ma55at10 + <11-13> ma55at12 + <13-16> ma55at14 + <16-21> ma55at18 + <21-> ma55at24 +}{} + +\DeclareFontShape{T1}{fmv}{b}{sc}{ + <5-8> ma75at7 + <8-11> ma75at10 + <11-13> ma75at12 + <13-16> ma75at14 + <16-21> ma75at18 + <21-> ma75at24 +}{} + +\DeclareFontShape{T1}{fmv}{m}{ui}{<->sub * fmv/m/it}{} +\DeclareFontShape{T1}{fmv}{bx}{n}{<->ssub * fmv/b/n}{} +\DeclareFontShape{T1}{fmv}{bx}{it}{<->ssub * fmv/b/it}{} +\DeclareFontShape{T1}{fmv}{b}{ui}{<->sub * fmv/b/it}{} +\DeclareFontShape{T1}{fmv}{bx}{ui}{<->ssub * fmv/b/ui}{} +\DeclareFontShape{T1}{fmv}{bx}{sc}{<->ssub * fmv/b/sc}{} + +\endinput diff --git a/fonts/malvern/tex/T1fmv9.fd b/fonts/malvern/tex/T1fmv9.fd new file mode 100644 index 0000000000..4270f7b6e8 --- /dev/null +++ b/fonts/malvern/tex/T1fmv9.fd @@ -0,0 +1,73 @@ +%Filename: T1fmv9.fd +%Created by: tex mkfd +%Created using fontinst v1.335 + +%THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY + +\ProvidesFile{T1fmv9.fd} + [1994/10/12 Fontinst v1.335 font definitions for T1/fmv9.] + +\DeclareFontFamily{T1}{fmv9}{} + +\DeclareFontShape{T1}{fmv9}{m}{n}{ + <5-8> ma55as7 + <8-11> ma55as10 + <11-13> ma55as12 + <13-16> ma55as14 + <16-21> ma55as18 + <21-> ma55as24 +}{} + +\DeclareFontShape{T1}{fmv9}{m}{it}{ + <5-8> ma56as7 + <8-11> ma56as10 + <11-13> ma56as12 + <13-16> ma56as14 + <16-21> ma56as18 + <21-> ma56as24 +}{} + +\DeclareFontShape{T1}{fmv9}{b}{n}{ + <5-8> ma75as7 + <8-11> ma75as10 + <11-13> ma75as12 + <13-16> ma75as14 + <16-21> ma75as18 + <21-> ma75as24 +}{} + +\DeclareFontShape{T1}{fmv9}{b}{it}{ + <5-8> ma76as7 + <8-11> ma76as10 + <11-13> ma76as12 + <13-16> ma76as14 + <16-21> ma76as18 + <21-> ma76as24 +}{} + +\DeclareFontShape{T1}{fmv9}{m}{sc}{ + <5-8> ma55au7 + <8-11> ma55au10 + <11-13> ma55au12 + <13-16> ma55au14 + <16-21> ma55au18 + <21-> ma55au24 +}{} + +\DeclareFontShape{T1}{fmv9}{b}{sc}{ + <5-8> ma75au7 + <8-11> ma75au10 + <11-13> ma75au12 + <13-16> ma75au14 + <16-21> ma75au18 + <21-> ma75au24 +}{} + +\DeclareFontShape{T1}{fmv9}{m}{ui}{<->sub * fmv9/m/it}{} +\DeclareFontShape{T1}{fmv9}{bx}{n}{<->ssub * fmv9/b/n}{} +\DeclareFontShape{T1}{fmv9}{bx}{it}{<->ssub * fmv9/b/it}{} +\DeclareFontShape{T1}{fmv9}{b}{ui}{<->sub * fmv9/b/it}{} +\DeclareFontShape{T1}{fmv9}{bx}{ui}{<->ssub * fmv9/b/ui}{} +\DeclareFontShape{T1}{fmv9}{bx}{sc}{<->ssub * fmv9/b/sc}{} + +\endinput diff --git a/fonts/malvern/tex/maamac.tex b/fonts/malvern/tex/maamac.tex new file mode 100644 index 0000000000..02e40689c0 --- /dev/null +++ b/fonts/malvern/tex/maamac.tex @@ -0,0 +1,290 @@ +% maamac.tex 1.1.8 94/07/20 -- the Malvern-A font conventions +% Copyright (c) 1991, 1992, 1993, 1994 P. Damian Cugley. + +%%% @TeX-macro-file { +%%% filename = "maamac.tex", +%%% version = "1.1.8", +%%% date = "1994/07/20", +%%% package = "Malvern 1.1", +%%% author = "P. Damian Cugley", +%%% email = "damian.cugley@comlab.ox.ac.uk", +%%% address = "Oxford University Computing Laboratory, +%%% Parks Road, Oxford OX1 3QD, UK", +%%% codetable = "USASCII", +%%% keywords = "Malvern, METAFONT, font, typefont, TeX", +%%% supported = "Maybe", +%%% abstract = "Macros for using the Malvern-A font coding +%%% scheme in plain TeX documents.", +%%% dependencies = "pdcutil.tex", +%%% } + +% See the Malvern Handbook (maman.tex) for more info about Malvern. +% This software is available freely but without warranty. +% See the file COPYING for details. + +\begingroup\catcode`\%=12 \toks0={\endgroup + \gdef\maaversion{1.1.8} \gdef\lastedit{pdc 1994/07/20} +}\the\toks0 +\message{\maaversion\space \lastedit} +\ifx\utilsversion\UNDEFINED \input pdcutil \fi + +% If #1 is letter or "other character", or is <chardef token>, +% then return its ASCII code: +\def\code#1% +{% + \ifcat#1a% letter? + `#1 + \else \ifcat#1+% <otherchar>? + `#1 + \else \ifx\char#1 + % assume \char followed by number + \else + #1% Assume it is chardef name + \fi \fi \fi +} + +% #1 <character> to test +% #2 TRUE text +% #3 FALSE text +\def\Ifcap#1#2#3{\ifnum\lccode\code{#1}=\code{#1}#3\else #2\fi} +\def\Iflower#1#2#3{\ifnum\uccode\code{#1}=\code{#1}#3\else #2\fi} + + +% Place text #3 at displacement (#1,#2) from current position: +\def\putxy#1#2#3{\rlap{\hskip#1\raise#2\hbox{#3}}} + +% Strip the "pt" from the result of \the applied to a dimen: +{ \catcode`p=12 \catcode`t=12 + \gdef\\#1pt{#1} +} +\let\stripPT=\\ + +% Find desimal string representing slant of font #1 +\def\fontslant#1{\expandafter\stripPT\the\fontdimen1#1} + +% Place a mark \char#2 over #3 +% #1 -- <decimal constant> in range 0-1, gives optical centre of #4 +% #2 -- TeX code that calculates the amount mark must be raised +% (assuming \box0 contains #3 and putting result in \dimen0) +% #3 -- <8-bit number> -- character code of mark +% #4 -- TeX text -- the thing to be marked +\def\xyaccent#1#2#3#4% +{{% + \setbox0=\hbox{#4}% + #2\relax% must calc. dy into \dimen0 + \dimen1=#1\wd0 \advance\dimen1 \fontslant\font\dimen0 + \leavevmode + \putxy{\dimen1}{\dimen0}{\hbox to 0pt{\hss\char#3\hss}}% + \box0 +}} +\def\yaccent{\xyaccent{0.5}} + +% Place Type I mark (\char#1) over character #2: +\def\typeImark#1#2% +{{% + \setbox1=\hbox{#2}% + \ifdim \ht1=1ex + \accent#1\relax#2% + \else + \counta=\code{#2}% + \ifnum \counta>64 \ifnum \counta<96 + \advance\counta 128 + \fi \fi + \yaccent{\dimen0=0.5\ht0 \advance\dimen0-0.5ex} + {#1}{\char\counta}% + \fi +}} + +% Place Type II mark (#1) over character #2 +%\def\typeIImark#1#2% +%{{% +% \counta=#1\relax \countb=\code{#2}% +% \ifnum \countb<224 \ifnum \countb>127 +% \ifnum \counta<128 \advance\counta 128 \fi +% \else \ifnum \countb<96 \ifnum \countb>64 +% \advance\countb 128 +% \ifnum \counta<128 \advance\counta 128 \fi +% \fi \fi \fi \fi +% \accent\counta \char\countb +%}} + +\def\typeIImark#1#2% +{{% + \counta=#1\relax \countb=\code{#2}% + \Ifcap{#2}{% + \ifnum \counta<128 \advance\counta 128 \fi + \ifnum \countb<128 \advance\countb 128 \fi + }{}% + \accent\counta \char\countb +}} + + +\def\.{\typeImark{22}} +\def\"{\typeImark{23}} +\def\={\typeImark{150}} + +\def\'{\typeIImark8} +\def\`{\typeIImark9} +\def\^{\typeIImark{10}} +\def\~{\typeIImark{11}} +\def\ringmark{\typeIImark{12}}% ring for Scandinavian a +\def\v{\typeIImark{13}} +\def\u{\typeIImark{14}} +\def\H{\typeIImark{15}} + +\def\c{\cidellalike{6}{134}} +\def\ogonek{\cidellalike{7}{135}} +\def\cidellalike#1#2#3% +{% + \setbox0=\hbox{#3}% + \ifdim\ht0>1ex + {\ooalign{\hidewidth\char#2\relax\hidewidth\crcr\unhbox0 }}% + \else + \accent#1 #3% + \fi +} + +\chardef\TH="00 \chardef\th="10 % Icelandic thorn +\chardef\A ="01 \chardef\a ="11 % Polish A-ogonek +\chardef\NG="02 \chardef\ng="12 % Lappish eng +\chardef\L ="03 \chardef\l ="13 % Polish l with bar +\chardef\DH="04 \chardef\dh="14 % Icelandic eth/D with bar +\chardef\E ="05 \chardef\e ="15 % Polish E-ogonek + +\chardef\ss= "18 +\chardef\i = "19 +\chardef\j = "1A +\chardef\vd= "9C +\chardef\vt= "9D +\chardef\h = "9E +\chardef\vl= "9F + +\chardef\O ="5C \chardef\o ="7C % o with slash +\chardef\AE="5E \chardef\ae="7E % ae ligature +\chardef\OE="5F \chardef\oe="7F % oe ligature + +\def\aa{\ringmark a} +\def\AA{\ringmark A} +\def\Mc{M\char"9B } % as in {\Mc}Donald +\def\No{N\char"99 } % short for number, numero, etc. +\def\Na{N\char"98 } % is this correct? + +\chardef\bullet = "20 +\mathchardef\spot = "3020 % bullet as relation +\chardef\trademark = "22 +\chardef\orda = "98 +\chardef\ordo = "99 +\chardef\careof = "9A +\chardef\Box = "A0 +\chardef\cents = "A2 +\chardef\pounds = "A3 +\chardef\currency = "A4 +\chardef\permille = "A5 +\chardef\times = "A6 +\chardef\yen = "A8 +\chardef\florin = "A9 +\chardef\dag = "AA +\chardef\ddag = "AB +\chardef\brdecimal = "AE + \def\cdot{\ifmmode\mathchar"00AE \else\brdecimal\fi} +\chardef\minus = "AF +\chardef\S = "BA +\chardef\P = "BB +\chardef\degrees = "C0 +\let\mathlangle=\langle \def\langle{\ifmmode\mathlangle\else\char"DB \fi} +\let\mathrangle=\rangle \def\rangle{\ifmmode\mathrangle\else\char"DD \fi} +\chardef\copyright = "FB +\chardef\registered = "FD + +\def\{{\ifmmode \delimiter"407B308 \else \char123 \fi} \let\lbrace=\{ +\def\}{\ifmmode \delimiter"507C309 \else \char125 \fi} \let\rbrace=\} + +\uccode\th=\TH \lccode\TH=\th \uccode\TH=\TH \lccode\th=\th +\uccode\a =\A \lccode\A =\a \uccode\A =\A \lccode\a =\a +\uccode\ng=\NG \lccode\NG=\ng \uccode\NG=\NG \lccode\ng=\ng +\uccode\l =\L \lccode\L =\l \uccode\L =\L \lccode\l =\l +\uccode\dh=\DH \lccode\DH=\dh \uccode\DH=\DH \lccode\dh=\dh +\uccode\e =\E \lccode\E =\e \uccode\E =\E \lccode\e =\e +\uccode\o =\O \lccode\O =\o \uccode\O =\O \lccode\o =\o +\uccode\ae=\AE \lccode\AE=\ae \uccode\AE=\AE \lccode\ae=\ae +\uccode\oe=\OE \lccode\OE=\oe \uccode\OE=\OE \lccode\oe=\oe + +\uccode\i=`I \uccode\j=`J \lccode\i=\i \lccode\j=\j +\uccode"9B=`C % McDonald -> MCDONALD + + +\newcount\chcdA \newcount\chcdC \newcount\chcdN + +\def\changecodes#1#2#3#4% +{% + \chcdA=#2\relax \chcdC=#3\relax \chcdN=#4\relax + \loop + \ifnum\chcdN>0 + #1\chcdA\chcdC + \advance\chcdA 1 + \advance\chcdC 1 + \advance\chcdN-1 + \repeat +} + +\changecodes\uccode{"E1}{`A}{26} % \uppercase{scap} = cap +\changecodes\uccode{"C1}{"C1}{26} % \uppercase{mcap} = mcap +\changecodes\lccode{"E1}{"E1}{26} % \lowercase{scap} = scap +\changecodes\lccode{"C1}{`a}{26} % \lowercase{mcap} = lc + +\changecodes\lccode{"B0}{`0}{10} +\changecodes\uccode{`0}{"B0}{10} +\changecodes\mathcode{`0}{"70B0}{10} + +% for \sc and \mc, arg should be all-capitals (lowercase deliberately +% left untouched -- useful occasionally for odd effects) + +\def\capspecials#1#2% #1,#2 hex digits +{% + \chardef\TH="#10 \chardef\A ="#11 \chardef\NG="#12 + \chardef\L ="#13 \chardef\DH="#14 \chardef\E ="#15 + \chardef\O ="#2C \chardef\AE="#2E \chardef\OE="#2F +} + +\def\lcspecials#1#2#3% +{% + \chardef\th="#10 \chardef\a ="#11 \chardef\ng="#12 + \chardef\l ="#13 \chardef\dh="#14 \chardef\e ="#15 + \chardef\o ="#2C \chardef\ae="#2E \chardef\oe="#2F + \def\ss{\char"#23 \char"#23 }% \ss -> ss + \chardef\i = "#39 % \i -> I + \chardef\j = "#3A % \j -> J +} + +\def\sc#1% +{{% + \changecodes\lccode{`A}{"E1}{26}% + \capspecials9F% + \lowercase{#1}% +}} + +\def\mc#1% +{{% + \changecodes\lccode{`A}{"C1}{26}% + \capspecials8D% + \lowercase{#1}% +}} + +\def\csc#1% +{{% + \changecodes\uccode{`a}{"E1}{26}% + \lcspecials9FE% + \uppercase{#1}% +}} + +\def\caps#1% +{{% + \lcspecials054% + \uppercase{#1}% +}} + +\def\lc#1% +{{% + \capspecials17% + \lowercase{#1}% +}} diff --git a/fonts/malvern/tex/pdcutil.tex b/fonts/malvern/tex/pdcutil.tex new file mode 100644 index 0000000000..e2133c2928 --- /dev/null +++ b/fonts/malvern/tex/pdcutil.tex @@ -0,0 +1,217 @@ +% pdcutil.tex 1.1.7 1994/07/20 -- various ``utility'' macros +% Copyright 1994 P. Damian Cugley + +%%% @TeX-macro-file { +%%% filename = "pdcutil.tex", +%%% version = "1.1.7", +%%% date = "1994/07/20", +%%% package = "Malvern 1.1", +%%% author = "P. Damian Cugley", +%%% email = "damian.cugley@comlab.ox.ac.uk", +%%% address = "Oxford University Computing Laboratory, +%%% Parks Road, Oxford OX1 3QD, UK", +%%% codetable = "USASCII", +%%% keywords = "A few useful macros used by other macro files", +%%% supported = "Maybe", +%%% abstract = "Character programs for the Malvern +%%% font family.", +%%% dependencies = "other program files", +%%% } + +%{{{ pdcutil.tex +% Copyright (c) 1991, 1992, 1993 Damian Cugley. + +\ifx\utilsversion\UNDEFINED + \let\next\relax +\else + \message{Warning: pdcutil.tex \string\input\space more than once.} + \let\next=\endinput +\fi +\next + +\begingroup\catcode`\%=12 \toks0={\endgroup + \gdef\utilsversion{1.1.7} \gdef\lastedit{pdc 1994/07/20} +}\the\toks0 +\message{\utilsversion\space \lastedit} + +%{{{ List macros + +% TeXbook pp.378-9 +% Note -- parameters in different order! + +\toksdef\toksa=0 +\toksdef\toksb=1 +\toksdef\toksc=2 + +\long\def\prepend#1#2% #1 := <#2> + #1 +{% + \toksa={\\{#2}}\toksb=\expandafter{#1}% + \edef#1{\the\toksa\the\toksb}% +} + +\long\def\gprepend#1#2% #1 := <#2> + #1 +{% + \toksa={\\{#2}}\toksb=\expandafter{#1}% + \xdef#1{\the\toksa\the\toksb}% +} + +\long\def\append#1#2% #1 := #1 + <#2> +{% + \toksa={\\{#2}}\toksb=\expandafter{#1}% + \edef#1{\the\toksb\the\toksa}% +} + +\long\def\gappend#1#2% #1 := #1 + <#2> +{% + \toksa={\\{#2}}\toksb=\expandafter{#1}% + \xdef#1{\the\toksb\the\toksa}% +} + +\def\catenate#1#2#3% #1 := #2 + #3 +{% + \toksa=\expandafter{#2}\toksb=\expandafter{#3}% + \edef#1{\the\toksa\the\toksb}% +} + +\def\gcatenate#1#2#3% #1 := #2 + #3 +{% + \toksa=\expandafter{#2}\toksb=\expandafter{#3}% + \xdef#1{\the\toksa\the\toksb}% +} + +\def\lop#1#2% #1, #2 := hd #2, tl #2 +{% + \expandafter\lopoff#2\lopoff#1#2% +} +\long\def\lopoff\\#1#2\lopoff#3#4% #3, #4 := #1, #2 +{% + \def#3{#1}\def#4{#2}% +} + +\def\glop#1#2% +{% + \expandafter\glopoff#2\glopoff#1#2% +} +\long\def\glopoff\\#1#2\glopoff#3#4% #3, #4 := #1, #2 +{% + \gdef#3{#1}\gdef#4{#2}% +} + +\def\length#1#2% #1 := length(#2) +{% + #1=0 \long\def\\##1{\advance#1 1}#2% +} +%}}} +%{{{ Macro expansion + +% \expcs\def{foo}... is like \def\foo... +% #1 a single token +% #2 a token string +\def\expcs#1#2{\expandafter#1\csname#2\endcsname} + +% \noexpcs{foo} -> \noexpand\foo (for in \edefs) +\def\noexpcs{\expcs\noexpand} + +% \letcs\tok{foo} is like \let\tok=\fo +% #1 is a single token +% #2 is a token string +\def\letcs#1#2{\expandafter\let\expandafter#1\csname#2\endcsname} + +% Append to a macro definition +% #1 is the name of a macro +% #2 is a token string (it is not expanded) +\def\macappend#1#2% +{% + \toksa=\expandafter{#1}\toksb={#2}% + \edef#1{\the\toksa\the\toksb}% +} + +%}}} +%{{{ Numbers + +% Convert <dimen> to pure number in TeX's mouth: +% the following is likely to be used on \fontdimen1 +% to find the slant expressed as a pure number: + +% #1 -- <internal dimen> +\def\dimentonumber#1{\expandafter\stripPT\the#1 } +{ \catcode`p=12 \catcode`t=12 + \gdef\\#1pt{#1} +} +\let\stripPT=\\ + +% Convert <chardef token> to hexadecimal in TeX's mouth: + +\def\chardeftohex#1{\expandafter\stripCHAR\meaning#1} +\def\stripCHAR#1"{} + +%}}} Numbers +%{{{ Arithmetic + +\newcount\counta +\newcount\countb +\newcount\countc +\newcount\countd +\newcount\counte + +\newcount\tmodulus +\def\modulus#1#2% #1 := #1 MOD #2 +{% + \tmodulus=#1% + \divide\tmodulus by#2\relax + \multiply\tmodulus by#2\relax + \advance#1-\tmodulus +} +%}}} +%{{{ \begin foo ...\end foo is like {\foo ... \endfoo}. + +\let\END=\end +\outer\def\bye{\par\vfill\supereject\END} + +% TeXbook Ex.7.7, Ex.5.7: +\def\begin #1 % +{% + \expcs\ifx{#1}\relax % is \#1 undefined? + \errhelp{Give up and type X now, that's my advice to you. + (I will carry on as if \char`\\#1 was def'd to {}.)}% + \errmessage{Don't understand #1 environment}% + \fi + \def\curenvironment{#1}% + \begingroup + \csname#1\endcsname % if \#1 undefined this does nothing +} + +\def\end #1 % +{% + \csname end#1\endcsname % if \end#1 undefined this does nothing + \endgroup + \def\temp{#1}% + \ifx\temp\curenvironment \else + \errhelp={Argh. Why not just type X and get it over with?}% + \errmessage{Expecting \string\end \curenvironment\space + but got \string\end #1}% + \fi +} +%}}} +%{{{ include file iff it exists + +\newread\inputifexistsfile + +\def\inputifexists#1% +{% + \openin\inputifexistsfile=#1 + \ifeof\inputifexistsfile + \message{Note: no file #1.}% + \else + \input #1 + \fi + \closein\inputifexistsfile +} + +%}}} include file iff it exists +%}}} pdcutil.tex + +%Local variables: +%fold-folded-p:t +%tex-macros-p: t +%End: diff --git a/fonts/malvern/tfm/ma53a12.tfm b/fonts/malvern/tfm/ma53a12.tfm Binary files differnew file mode 100644 index 0000000000..c3f96dd12c --- /dev/null +++ b/fonts/malvern/tfm/ma53a12.tfm diff --git a/fonts/malvern/tfm/ma55a10.tfm b/fonts/malvern/tfm/ma55a10.tfm Binary files differnew file mode 100644 index 0000000000..b03f38079e --- /dev/null +++ b/fonts/malvern/tfm/ma55a10.tfm diff --git a/fonts/malvern/tfm/ma55a12.tfm b/fonts/malvern/tfm/ma55a12.tfm Binary files differnew file mode 100644 index 0000000000..309617da77 --- /dev/null +++ b/fonts/malvern/tfm/ma55a12.tfm diff --git a/fonts/malvern/tfm/ma55a14.tfm b/fonts/malvern/tfm/ma55a14.tfm Binary files differnew file mode 100644 index 0000000000..d15a2e3ad7 --- /dev/null +++ b/fonts/malvern/tfm/ma55a14.tfm diff --git a/fonts/malvern/tfm/ma55a18.tfm b/fonts/malvern/tfm/ma55a18.tfm Binary files differnew file mode 100644 index 0000000000..37cc1bd004 --- /dev/null +++ b/fonts/malvern/tfm/ma55a18.tfm diff --git a/fonts/malvern/tfm/ma55a24.tfm b/fonts/malvern/tfm/ma55a24.tfm Binary files differnew file mode 100644 index 0000000000..53847dfbd4 --- /dev/null +++ b/fonts/malvern/tfm/ma55a24.tfm diff --git a/fonts/malvern/tfm/ma55a48.tfm b/fonts/malvern/tfm/ma55a48.tfm Binary files differnew file mode 100644 index 0000000000..48949366bb --- /dev/null +++ b/fonts/malvern/tfm/ma55a48.tfm diff --git a/fonts/malvern/tfm/ma55a7.tfm b/fonts/malvern/tfm/ma55a7.tfm Binary files differnew file mode 100644 index 0000000000..9c60a6d5a5 --- /dev/null +++ b/fonts/malvern/tfm/ma55a7.tfm diff --git a/fonts/malvern/tfm/ma55a9.tfm b/fonts/malvern/tfm/ma55a9.tfm Binary files differnew file mode 100644 index 0000000000..f6edecea9b --- /dev/null +++ b/fonts/malvern/tfm/ma55a9.tfm diff --git a/fonts/malvern/tfm/ma55aa10.tfm b/fonts/malvern/tfm/ma55aa10.tfm Binary files differnew file mode 100644 index 0000000000..2de7c6a3d4 --- /dev/null +++ b/fonts/malvern/tfm/ma55aa10.tfm diff --git a/fonts/malvern/tfm/ma55aa12.tfm b/fonts/malvern/tfm/ma55aa12.tfm Binary files differnew file mode 100644 index 0000000000..919a38126b --- /dev/null +++ b/fonts/malvern/tfm/ma55aa12.tfm diff --git a/fonts/malvern/tfm/ma55aa14.tfm b/fonts/malvern/tfm/ma55aa14.tfm Binary files differnew file mode 100644 index 0000000000..5deef9458b --- /dev/null +++ b/fonts/malvern/tfm/ma55aa14.tfm diff --git a/fonts/malvern/tfm/ma55aa18.tfm b/fonts/malvern/tfm/ma55aa18.tfm Binary files differnew file mode 100644 index 0000000000..fd46ee05a0 --- /dev/null +++ b/fonts/malvern/tfm/ma55aa18.tfm diff --git a/fonts/malvern/tfm/ma55aa24.tfm b/fonts/malvern/tfm/ma55aa24.tfm Binary files differnew file mode 100644 index 0000000000..eccda830e5 --- /dev/null +++ b/fonts/malvern/tfm/ma55aa24.tfm diff --git a/fonts/malvern/tfm/ma55aa7.tfm b/fonts/malvern/tfm/ma55aa7.tfm Binary files differnew file mode 100644 index 0000000000..fe5eb4a5cf --- /dev/null +++ b/fonts/malvern/tfm/ma55aa7.tfm diff --git a/fonts/malvern/tfm/ma55ab10.tfm b/fonts/malvern/tfm/ma55ab10.tfm Binary files differnew file mode 100644 index 0000000000..a4d82e9826 --- /dev/null +++ b/fonts/malvern/tfm/ma55ab10.tfm diff --git a/fonts/malvern/tfm/ma55ab12.tfm b/fonts/malvern/tfm/ma55ab12.tfm Binary files differnew file mode 100644 index 0000000000..50755d41a3 --- /dev/null +++ b/fonts/malvern/tfm/ma55ab12.tfm diff --git a/fonts/malvern/tfm/ma55ab14.tfm b/fonts/malvern/tfm/ma55ab14.tfm Binary files differnew file mode 100644 index 0000000000..237230bfaa --- /dev/null +++ b/fonts/malvern/tfm/ma55ab14.tfm diff --git a/fonts/malvern/tfm/ma55ab18.tfm b/fonts/malvern/tfm/ma55ab18.tfm Binary files differnew file mode 100644 index 0000000000..80f214c12d --- /dev/null +++ b/fonts/malvern/tfm/ma55ab18.tfm diff --git a/fonts/malvern/tfm/ma55ab24.tfm b/fonts/malvern/tfm/ma55ab24.tfm Binary files differnew file mode 100644 index 0000000000..fa19161310 --- /dev/null +++ b/fonts/malvern/tfm/ma55ab24.tfm diff --git a/fonts/malvern/tfm/ma55ab7.tfm b/fonts/malvern/tfm/ma55ab7.tfm Binary files differnew file mode 100644 index 0000000000..f5edbb9fc9 --- /dev/null +++ b/fonts/malvern/tfm/ma55ab7.tfm diff --git a/fonts/malvern/tfm/ma55ar10.tfm b/fonts/malvern/tfm/ma55ar10.tfm Binary files differnew file mode 100644 index 0000000000..41368fccef --- /dev/null +++ b/fonts/malvern/tfm/ma55ar10.tfm diff --git a/fonts/malvern/tfm/ma55ar12.tfm b/fonts/malvern/tfm/ma55ar12.tfm Binary files differnew file mode 100644 index 0000000000..632bd250df --- /dev/null +++ b/fonts/malvern/tfm/ma55ar12.tfm diff --git a/fonts/malvern/tfm/ma55ar14.tfm b/fonts/malvern/tfm/ma55ar14.tfm Binary files differnew file mode 100644 index 0000000000..cd06d838fe --- /dev/null +++ b/fonts/malvern/tfm/ma55ar14.tfm diff --git a/fonts/malvern/tfm/ma55ar18.tfm b/fonts/malvern/tfm/ma55ar18.tfm Binary files differnew file mode 100644 index 0000000000..d3d2763940 --- /dev/null +++ b/fonts/malvern/tfm/ma55ar18.tfm diff --git a/fonts/malvern/tfm/ma55ar24.tfm b/fonts/malvern/tfm/ma55ar24.tfm Binary files differnew file mode 100644 index 0000000000..61905cd6c3 --- /dev/null +++ b/fonts/malvern/tfm/ma55ar24.tfm diff --git a/fonts/malvern/tfm/ma55ar7.tfm b/fonts/malvern/tfm/ma55ar7.tfm Binary files differnew file mode 100644 index 0000000000..0819d4deec --- /dev/null +++ b/fonts/malvern/tfm/ma55ar7.tfm diff --git a/fonts/malvern/tfm/ma55as10.tfm b/fonts/malvern/tfm/ma55as10.tfm Binary files differnew file mode 100644 index 0000000000..c089883f40 --- /dev/null +++ b/fonts/malvern/tfm/ma55as10.tfm diff --git a/fonts/malvern/tfm/ma55as12.tfm b/fonts/malvern/tfm/ma55as12.tfm Binary files differnew file mode 100644 index 0000000000..fc36573385 --- /dev/null +++ b/fonts/malvern/tfm/ma55as12.tfm diff --git a/fonts/malvern/tfm/ma55as14.tfm b/fonts/malvern/tfm/ma55as14.tfm Binary files differnew file mode 100644 index 0000000000..2ab88a1ee6 --- /dev/null +++ b/fonts/malvern/tfm/ma55as14.tfm diff --git a/fonts/malvern/tfm/ma55as18.tfm b/fonts/malvern/tfm/ma55as18.tfm Binary files differnew file mode 100644 index 0000000000..4f66ffb2c5 --- /dev/null +++ b/fonts/malvern/tfm/ma55as18.tfm diff --git a/fonts/malvern/tfm/ma55as24.tfm b/fonts/malvern/tfm/ma55as24.tfm Binary files differnew file mode 100644 index 0000000000..fae9f45290 --- /dev/null +++ b/fonts/malvern/tfm/ma55as24.tfm diff --git a/fonts/malvern/tfm/ma55as7.tfm b/fonts/malvern/tfm/ma55as7.tfm Binary files differnew file mode 100644 index 0000000000..586ac70797 --- /dev/null +++ b/fonts/malvern/tfm/ma55as7.tfm diff --git a/fonts/malvern/tfm/ma55at10.tfm b/fonts/malvern/tfm/ma55at10.tfm Binary files differnew file mode 100644 index 0000000000..e6667f2526 --- /dev/null +++ b/fonts/malvern/tfm/ma55at10.tfm diff --git a/fonts/malvern/tfm/ma55at12.tfm b/fonts/malvern/tfm/ma55at12.tfm Binary files differnew file mode 100644 index 0000000000..28e6df3ce1 --- /dev/null +++ b/fonts/malvern/tfm/ma55at12.tfm diff --git a/fonts/malvern/tfm/ma55at14.tfm b/fonts/malvern/tfm/ma55at14.tfm Binary files differnew file mode 100644 index 0000000000..d026e34f80 --- /dev/null +++ b/fonts/malvern/tfm/ma55at14.tfm diff --git a/fonts/malvern/tfm/ma55at18.tfm b/fonts/malvern/tfm/ma55at18.tfm Binary files differnew file mode 100644 index 0000000000..c499baacc8 --- /dev/null +++ b/fonts/malvern/tfm/ma55at18.tfm diff --git a/fonts/malvern/tfm/ma55at24.tfm b/fonts/malvern/tfm/ma55at24.tfm Binary files differnew file mode 100644 index 0000000000..ec3e143203 --- /dev/null +++ b/fonts/malvern/tfm/ma55at24.tfm diff --git a/fonts/malvern/tfm/ma55at7.tfm b/fonts/malvern/tfm/ma55at7.tfm Binary files differnew file mode 100644 index 0000000000..578ef41de0 --- /dev/null +++ b/fonts/malvern/tfm/ma55at7.tfm diff --git a/fonts/malvern/tfm/ma55au10.tfm b/fonts/malvern/tfm/ma55au10.tfm Binary files differnew file mode 100644 index 0000000000..758177cf6c --- /dev/null +++ b/fonts/malvern/tfm/ma55au10.tfm diff --git a/fonts/malvern/tfm/ma55au12.tfm b/fonts/malvern/tfm/ma55au12.tfm Binary files differnew file mode 100644 index 0000000000..206f4f8e8e --- /dev/null +++ b/fonts/malvern/tfm/ma55au12.tfm diff --git a/fonts/malvern/tfm/ma55au14.tfm b/fonts/malvern/tfm/ma55au14.tfm Binary files differnew file mode 100644 index 0000000000..c686ec216d --- /dev/null +++ b/fonts/malvern/tfm/ma55au14.tfm diff --git a/fonts/malvern/tfm/ma55au18.tfm b/fonts/malvern/tfm/ma55au18.tfm Binary files differnew file mode 100644 index 0000000000..0df72a2be8 --- /dev/null +++ b/fonts/malvern/tfm/ma55au18.tfm diff --git a/fonts/malvern/tfm/ma55au24.tfm b/fonts/malvern/tfm/ma55au24.tfm Binary files differnew file mode 100644 index 0000000000..783d688e49 --- /dev/null +++ b/fonts/malvern/tfm/ma55au24.tfm diff --git a/fonts/malvern/tfm/ma55au7.tfm b/fonts/malvern/tfm/ma55au7.tfm Binary files differnew file mode 100644 index 0000000000..1f567bbd3a --- /dev/null +++ b/fonts/malvern/tfm/ma55au7.tfm diff --git a/fonts/malvern/tfm/ma55az10.tfm b/fonts/malvern/tfm/ma55az10.tfm Binary files differnew file mode 100644 index 0000000000..ba7c1b223a --- /dev/null +++ b/fonts/malvern/tfm/ma55az10.tfm diff --git a/fonts/malvern/tfm/ma55az12.tfm b/fonts/malvern/tfm/ma55az12.tfm Binary files differnew file mode 100644 index 0000000000..c7197bcdf7 --- /dev/null +++ b/fonts/malvern/tfm/ma55az12.tfm diff --git a/fonts/malvern/tfm/ma55az14.tfm b/fonts/malvern/tfm/ma55az14.tfm Binary files differnew file mode 100644 index 0000000000..6b349d7cff --- /dev/null +++ b/fonts/malvern/tfm/ma55az14.tfm diff --git a/fonts/malvern/tfm/ma55az18.tfm b/fonts/malvern/tfm/ma55az18.tfm Binary files differnew file mode 100644 index 0000000000..560c465083 --- /dev/null +++ b/fonts/malvern/tfm/ma55az18.tfm diff --git a/fonts/malvern/tfm/ma55az24.tfm b/fonts/malvern/tfm/ma55az24.tfm Binary files differnew file mode 100644 index 0000000000..aecf2c35db --- /dev/null +++ b/fonts/malvern/tfm/ma55az24.tfm diff --git a/fonts/malvern/tfm/ma55az7.tfm b/fonts/malvern/tfm/ma55az7.tfm Binary files differnew file mode 100644 index 0000000000..129b35ca93 --- /dev/null +++ b/fonts/malvern/tfm/ma55az7.tfm diff --git a/fonts/malvern/tfm/ma55b10.tfm b/fonts/malvern/tfm/ma55b10.tfm Binary files differnew file mode 100644 index 0000000000..39ab9accca --- /dev/null +++ b/fonts/malvern/tfm/ma55b10.tfm diff --git a/fonts/malvern/tfm/ma55b12.tfm b/fonts/malvern/tfm/ma55b12.tfm Binary files differnew file mode 100644 index 0000000000..2d799a0491 --- /dev/null +++ b/fonts/malvern/tfm/ma55b12.tfm diff --git a/fonts/malvern/tfm/ma55b14.tfm b/fonts/malvern/tfm/ma55b14.tfm Binary files differnew file mode 100644 index 0000000000..d87eecc56d --- /dev/null +++ b/fonts/malvern/tfm/ma55b14.tfm diff --git a/fonts/malvern/tfm/ma55b18.tfm b/fonts/malvern/tfm/ma55b18.tfm Binary files differnew file mode 100644 index 0000000000..f0c2b6d3a1 --- /dev/null +++ b/fonts/malvern/tfm/ma55b18.tfm diff --git a/fonts/malvern/tfm/ma55b24.tfm b/fonts/malvern/tfm/ma55b24.tfm Binary files differnew file mode 100644 index 0000000000..33bb0f7333 --- /dev/null +++ b/fonts/malvern/tfm/ma55b24.tfm diff --git a/fonts/malvern/tfm/ma55b7.tfm b/fonts/malvern/tfm/ma55b7.tfm Binary files differnew file mode 100644 index 0000000000..3568e0e04c --- /dev/null +++ b/fonts/malvern/tfm/ma55b7.tfm diff --git a/fonts/malvern/tfm/ma55c12.tfm b/fonts/malvern/tfm/ma55c12.tfm Binary files differnew file mode 100644 index 0000000000..c6111b5e67 --- /dev/null +++ b/fonts/malvern/tfm/ma55c12.tfm diff --git a/fonts/malvern/tfm/ma55g10.tfm b/fonts/malvern/tfm/ma55g10.tfm Binary files differnew file mode 100644 index 0000000000..0662908859 --- /dev/null +++ b/fonts/malvern/tfm/ma55g10.tfm diff --git a/fonts/malvern/tfm/ma55g11.tfm b/fonts/malvern/tfm/ma55g11.tfm Binary files differnew file mode 100644 index 0000000000..8cd62dfe32 --- /dev/null +++ b/fonts/malvern/tfm/ma55g11.tfm diff --git a/fonts/malvern/tfm/ma55g12.tfm b/fonts/malvern/tfm/ma55g12.tfm Binary files differnew file mode 100644 index 0000000000..81fa8ca773 --- /dev/null +++ b/fonts/malvern/tfm/ma55g12.tfm diff --git a/fonts/malvern/tfm/ma55g24.tfm b/fonts/malvern/tfm/ma55g24.tfm Binary files differnew file mode 100644 index 0000000000..774c188203 --- /dev/null +++ b/fonts/malvern/tfm/ma55g24.tfm diff --git a/fonts/malvern/tfm/ma55g9.tfm b/fonts/malvern/tfm/ma55g9.tfm Binary files differnew file mode 100644 index 0000000000..54bad76e8c --- /dev/null +++ b/fonts/malvern/tfm/ma55g9.tfm diff --git a/fonts/malvern/tfm/ma55s10.tfm b/fonts/malvern/tfm/ma55s10.tfm Binary files differnew file mode 100644 index 0000000000..4b8653ab21 --- /dev/null +++ b/fonts/malvern/tfm/ma55s10.tfm diff --git a/fonts/malvern/tfm/ma55s12.tfm b/fonts/malvern/tfm/ma55s12.tfm Binary files differnew file mode 100644 index 0000000000..199e6eddec --- /dev/null +++ b/fonts/malvern/tfm/ma55s12.tfm diff --git a/fonts/malvern/tfm/ma55s14.tfm b/fonts/malvern/tfm/ma55s14.tfm Binary files differnew file mode 100644 index 0000000000..148dfb3ead --- /dev/null +++ b/fonts/malvern/tfm/ma55s14.tfm diff --git a/fonts/malvern/tfm/ma55s18.tfm b/fonts/malvern/tfm/ma55s18.tfm Binary files differnew file mode 100644 index 0000000000..470d7ea861 --- /dev/null +++ b/fonts/malvern/tfm/ma55s18.tfm diff --git a/fonts/malvern/tfm/ma55s24.tfm b/fonts/malvern/tfm/ma55s24.tfm Binary files differnew file mode 100644 index 0000000000..ee357f9413 --- /dev/null +++ b/fonts/malvern/tfm/ma55s24.tfm diff --git a/fonts/malvern/tfm/ma55s7.tfm b/fonts/malvern/tfm/ma55s7.tfm Binary files differnew file mode 100644 index 0000000000..edf7c925c9 --- /dev/null +++ b/fonts/malvern/tfm/ma55s7.tfm diff --git a/fonts/malvern/tfm/ma56a10.tfm b/fonts/malvern/tfm/ma56a10.tfm Binary files differnew file mode 100644 index 0000000000..b5b18108a4 --- /dev/null +++ b/fonts/malvern/tfm/ma56a10.tfm diff --git a/fonts/malvern/tfm/ma56a12.tfm b/fonts/malvern/tfm/ma56a12.tfm Binary files differnew file mode 100644 index 0000000000..f0c4af8820 --- /dev/null +++ b/fonts/malvern/tfm/ma56a12.tfm diff --git a/fonts/malvern/tfm/ma56a14.tfm b/fonts/malvern/tfm/ma56a14.tfm Binary files differnew file mode 100644 index 0000000000..7b71c47970 --- /dev/null +++ b/fonts/malvern/tfm/ma56a14.tfm diff --git a/fonts/malvern/tfm/ma56a18.tfm b/fonts/malvern/tfm/ma56a18.tfm Binary files differnew file mode 100644 index 0000000000..8d13aa00f9 --- /dev/null +++ b/fonts/malvern/tfm/ma56a18.tfm diff --git a/fonts/malvern/tfm/ma56a24.tfm b/fonts/malvern/tfm/ma56a24.tfm Binary files differnew file mode 100644 index 0000000000..af8fa40a8f --- /dev/null +++ b/fonts/malvern/tfm/ma56a24.tfm diff --git a/fonts/malvern/tfm/ma56a7.tfm b/fonts/malvern/tfm/ma56a7.tfm Binary files differnew file mode 100644 index 0000000000..c971790333 --- /dev/null +++ b/fonts/malvern/tfm/ma56a7.tfm diff --git a/fonts/malvern/tfm/ma56a9.tfm b/fonts/malvern/tfm/ma56a9.tfm Binary files differnew file mode 100644 index 0000000000..7009f7e97d --- /dev/null +++ b/fonts/malvern/tfm/ma56a9.tfm diff --git a/fonts/malvern/tfm/ma56ar10.tfm b/fonts/malvern/tfm/ma56ar10.tfm Binary files differnew file mode 100644 index 0000000000..a57f225819 --- /dev/null +++ b/fonts/malvern/tfm/ma56ar10.tfm diff --git a/fonts/malvern/tfm/ma56ar12.tfm b/fonts/malvern/tfm/ma56ar12.tfm Binary files differnew file mode 100644 index 0000000000..a95d218456 --- /dev/null +++ b/fonts/malvern/tfm/ma56ar12.tfm diff --git a/fonts/malvern/tfm/ma56ar14.tfm b/fonts/malvern/tfm/ma56ar14.tfm Binary files differnew file mode 100644 index 0000000000..abba44a3c3 --- /dev/null +++ b/fonts/malvern/tfm/ma56ar14.tfm diff --git a/fonts/malvern/tfm/ma56ar18.tfm b/fonts/malvern/tfm/ma56ar18.tfm Binary files differnew file mode 100644 index 0000000000..2e92cb595e --- /dev/null +++ b/fonts/malvern/tfm/ma56ar18.tfm diff --git a/fonts/malvern/tfm/ma56ar24.tfm b/fonts/malvern/tfm/ma56ar24.tfm Binary files differnew file mode 100644 index 0000000000..23ea29c214 --- /dev/null +++ b/fonts/malvern/tfm/ma56ar24.tfm diff --git a/fonts/malvern/tfm/ma56ar7.tfm b/fonts/malvern/tfm/ma56ar7.tfm Binary files differnew file mode 100644 index 0000000000..ff1e63de51 --- /dev/null +++ b/fonts/malvern/tfm/ma56ar7.tfm diff --git a/fonts/malvern/tfm/ma56as10.tfm b/fonts/malvern/tfm/ma56as10.tfm Binary files differnew file mode 100644 index 0000000000..9b07daf4e5 --- /dev/null +++ b/fonts/malvern/tfm/ma56as10.tfm diff --git a/fonts/malvern/tfm/ma56as12.tfm b/fonts/malvern/tfm/ma56as12.tfm Binary files differnew file mode 100644 index 0000000000..410077d907 --- /dev/null +++ b/fonts/malvern/tfm/ma56as12.tfm diff --git a/fonts/malvern/tfm/ma56as14.tfm b/fonts/malvern/tfm/ma56as14.tfm Binary files differnew file mode 100644 index 0000000000..3edb9fb376 --- /dev/null +++ b/fonts/malvern/tfm/ma56as14.tfm diff --git a/fonts/malvern/tfm/ma56as18.tfm b/fonts/malvern/tfm/ma56as18.tfm Binary files differnew file mode 100644 index 0000000000..089f3d9e1d --- /dev/null +++ b/fonts/malvern/tfm/ma56as18.tfm diff --git a/fonts/malvern/tfm/ma56as24.tfm b/fonts/malvern/tfm/ma56as24.tfm Binary files differnew file mode 100644 index 0000000000..7d4b584516 --- /dev/null +++ b/fonts/malvern/tfm/ma56as24.tfm diff --git a/fonts/malvern/tfm/ma56as7.tfm b/fonts/malvern/tfm/ma56as7.tfm Binary files differnew file mode 100644 index 0000000000..2c2bc953f3 --- /dev/null +++ b/fonts/malvern/tfm/ma56as7.tfm diff --git a/fonts/malvern/tfm/ma56az10.tfm b/fonts/malvern/tfm/ma56az10.tfm Binary files differnew file mode 100644 index 0000000000..248d7f8cda --- /dev/null +++ b/fonts/malvern/tfm/ma56az10.tfm diff --git a/fonts/malvern/tfm/ma56az12.tfm b/fonts/malvern/tfm/ma56az12.tfm Binary files differnew file mode 100644 index 0000000000..2424444421 --- /dev/null +++ b/fonts/malvern/tfm/ma56az12.tfm diff --git a/fonts/malvern/tfm/ma56az14.tfm b/fonts/malvern/tfm/ma56az14.tfm Binary files differnew file mode 100644 index 0000000000..24e78daaae --- /dev/null +++ b/fonts/malvern/tfm/ma56az14.tfm diff --git a/fonts/malvern/tfm/ma56az18.tfm b/fonts/malvern/tfm/ma56az18.tfm Binary files differnew file mode 100644 index 0000000000..d5634e9dfa --- /dev/null +++ b/fonts/malvern/tfm/ma56az18.tfm diff --git a/fonts/malvern/tfm/ma56az24.tfm b/fonts/malvern/tfm/ma56az24.tfm Binary files differnew file mode 100644 index 0000000000..690355aa77 --- /dev/null +++ b/fonts/malvern/tfm/ma56az24.tfm diff --git a/fonts/malvern/tfm/ma56az7.tfm b/fonts/malvern/tfm/ma56az7.tfm Binary files differnew file mode 100644 index 0000000000..e68c0187cf --- /dev/null +++ b/fonts/malvern/tfm/ma56az7.tfm diff --git a/fonts/malvern/tfm/ma56b10.tfm b/fonts/malvern/tfm/ma56b10.tfm Binary files differnew file mode 100644 index 0000000000..9f5efbcac1 --- /dev/null +++ b/fonts/malvern/tfm/ma56b10.tfm diff --git a/fonts/malvern/tfm/ma56b12.tfm b/fonts/malvern/tfm/ma56b12.tfm Binary files differnew file mode 100644 index 0000000000..889b9bffeb --- /dev/null +++ b/fonts/malvern/tfm/ma56b12.tfm diff --git a/fonts/malvern/tfm/ma56b14.tfm b/fonts/malvern/tfm/ma56b14.tfm Binary files differnew file mode 100644 index 0000000000..aeaf576911 --- /dev/null +++ b/fonts/malvern/tfm/ma56b14.tfm diff --git a/fonts/malvern/tfm/ma56b18.tfm b/fonts/malvern/tfm/ma56b18.tfm Binary files differnew file mode 100644 index 0000000000..5e8e9c5eaf --- /dev/null +++ b/fonts/malvern/tfm/ma56b18.tfm diff --git a/fonts/malvern/tfm/ma56b24.tfm b/fonts/malvern/tfm/ma56b24.tfm Binary files differnew file mode 100644 index 0000000000..62b5de8b2d --- /dev/null +++ b/fonts/malvern/tfm/ma56b24.tfm diff --git a/fonts/malvern/tfm/ma56b7.tfm b/fonts/malvern/tfm/ma56b7.tfm Binary files differnew file mode 100644 index 0000000000..12737fbd35 --- /dev/null +++ b/fonts/malvern/tfm/ma56b7.tfm diff --git a/fonts/malvern/tfm/ma56g11.tfm b/fonts/malvern/tfm/ma56g11.tfm Binary files differnew file mode 100644 index 0000000000..22e98c75b3 --- /dev/null +++ b/fonts/malvern/tfm/ma56g11.tfm diff --git a/fonts/malvern/tfm/ma56s10.tfm b/fonts/malvern/tfm/ma56s10.tfm Binary files differnew file mode 100644 index 0000000000..2b5e440271 --- /dev/null +++ b/fonts/malvern/tfm/ma56s10.tfm diff --git a/fonts/malvern/tfm/ma56s12.tfm b/fonts/malvern/tfm/ma56s12.tfm Binary files differnew file mode 100644 index 0000000000..92d2c0c3aa --- /dev/null +++ b/fonts/malvern/tfm/ma56s12.tfm diff --git a/fonts/malvern/tfm/ma56s14.tfm b/fonts/malvern/tfm/ma56s14.tfm Binary files differnew file mode 100644 index 0000000000..f74370891e --- /dev/null +++ b/fonts/malvern/tfm/ma56s14.tfm diff --git a/fonts/malvern/tfm/ma56s18.tfm b/fonts/malvern/tfm/ma56s18.tfm Binary files differnew file mode 100644 index 0000000000..a024661911 --- /dev/null +++ b/fonts/malvern/tfm/ma56s18.tfm diff --git a/fonts/malvern/tfm/ma56s24.tfm b/fonts/malvern/tfm/ma56s24.tfm Binary files differnew file mode 100644 index 0000000000..911f303acf --- /dev/null +++ b/fonts/malvern/tfm/ma56s24.tfm diff --git a/fonts/malvern/tfm/ma56s7.tfm b/fonts/malvern/tfm/ma56s7.tfm Binary files differnew file mode 100644 index 0000000000..1a7b293e53 --- /dev/null +++ b/fonts/malvern/tfm/ma56s7.tfm diff --git a/fonts/malvern/tfm/ma57a12.tfm b/fonts/malvern/tfm/ma57a12.tfm Binary files differnew file mode 100644 index 0000000000..f40263e1a4 --- /dev/null +++ b/fonts/malvern/tfm/ma57a12.tfm diff --git a/fonts/malvern/tfm/ma75a10.tfm b/fonts/malvern/tfm/ma75a10.tfm Binary files differnew file mode 100644 index 0000000000..fbb56446a2 --- /dev/null +++ b/fonts/malvern/tfm/ma75a10.tfm diff --git a/fonts/malvern/tfm/ma75a12.tfm b/fonts/malvern/tfm/ma75a12.tfm Binary files differnew file mode 100644 index 0000000000..de33a8b838 --- /dev/null +++ b/fonts/malvern/tfm/ma75a12.tfm diff --git a/fonts/malvern/tfm/ma75a14.tfm b/fonts/malvern/tfm/ma75a14.tfm Binary files differnew file mode 100644 index 0000000000..289229223e --- /dev/null +++ b/fonts/malvern/tfm/ma75a14.tfm diff --git a/fonts/malvern/tfm/ma75a18.tfm b/fonts/malvern/tfm/ma75a18.tfm Binary files differnew file mode 100644 index 0000000000..f71d62b7b6 --- /dev/null +++ b/fonts/malvern/tfm/ma75a18.tfm diff --git a/fonts/malvern/tfm/ma75a24.tfm b/fonts/malvern/tfm/ma75a24.tfm Binary files differnew file mode 100644 index 0000000000..3c589c042a --- /dev/null +++ b/fonts/malvern/tfm/ma75a24.tfm diff --git a/fonts/malvern/tfm/ma75a7.tfm b/fonts/malvern/tfm/ma75a7.tfm Binary files differnew file mode 100644 index 0000000000..b2fee335ee --- /dev/null +++ b/fonts/malvern/tfm/ma75a7.tfm diff --git a/fonts/malvern/tfm/ma75a72.tfm b/fonts/malvern/tfm/ma75a72.tfm Binary files differnew file mode 100644 index 0000000000..fdf362795f --- /dev/null +++ b/fonts/malvern/tfm/ma75a72.tfm diff --git a/fonts/malvern/tfm/ma75a9.tfm b/fonts/malvern/tfm/ma75a9.tfm Binary files differnew file mode 100644 index 0000000000..691ef85a68 --- /dev/null +++ b/fonts/malvern/tfm/ma75a9.tfm diff --git a/fonts/malvern/tfm/ma75aa10.tfm b/fonts/malvern/tfm/ma75aa10.tfm Binary files differnew file mode 100644 index 0000000000..eb8a805308 --- /dev/null +++ b/fonts/malvern/tfm/ma75aa10.tfm diff --git a/fonts/malvern/tfm/ma75aa12.tfm b/fonts/malvern/tfm/ma75aa12.tfm Binary files differnew file mode 100644 index 0000000000..06263240a8 --- /dev/null +++ b/fonts/malvern/tfm/ma75aa12.tfm diff --git a/fonts/malvern/tfm/ma75aa14.tfm b/fonts/malvern/tfm/ma75aa14.tfm Binary files differnew file mode 100644 index 0000000000..832e71d0ee --- /dev/null +++ b/fonts/malvern/tfm/ma75aa14.tfm diff --git a/fonts/malvern/tfm/ma75aa18.tfm b/fonts/malvern/tfm/ma75aa18.tfm Binary files differnew file mode 100644 index 0000000000..0ea577212e --- /dev/null +++ b/fonts/malvern/tfm/ma75aa18.tfm diff --git a/fonts/malvern/tfm/ma75aa24.tfm b/fonts/malvern/tfm/ma75aa24.tfm Binary files differnew file mode 100644 index 0000000000..1e6c915779 --- /dev/null +++ b/fonts/malvern/tfm/ma75aa24.tfm diff --git a/fonts/malvern/tfm/ma75aa7.tfm b/fonts/malvern/tfm/ma75aa7.tfm Binary files differnew file mode 100644 index 0000000000..382cbc7dd6 --- /dev/null +++ b/fonts/malvern/tfm/ma75aa7.tfm diff --git a/fonts/malvern/tfm/ma75ab10.tfm b/fonts/malvern/tfm/ma75ab10.tfm Binary files differnew file mode 100644 index 0000000000..8e5583927c --- /dev/null +++ b/fonts/malvern/tfm/ma75ab10.tfm diff --git a/fonts/malvern/tfm/ma75ab12.tfm b/fonts/malvern/tfm/ma75ab12.tfm Binary files differnew file mode 100644 index 0000000000..85ce03ff6b --- /dev/null +++ b/fonts/malvern/tfm/ma75ab12.tfm diff --git a/fonts/malvern/tfm/ma75ab14.tfm b/fonts/malvern/tfm/ma75ab14.tfm Binary files differnew file mode 100644 index 0000000000..baf8e1e81f --- /dev/null +++ b/fonts/malvern/tfm/ma75ab14.tfm diff --git a/fonts/malvern/tfm/ma75ab18.tfm b/fonts/malvern/tfm/ma75ab18.tfm Binary files differnew file mode 100644 index 0000000000..90af08b3e3 --- /dev/null +++ b/fonts/malvern/tfm/ma75ab18.tfm diff --git a/fonts/malvern/tfm/ma75ab24.tfm b/fonts/malvern/tfm/ma75ab24.tfm Binary files differnew file mode 100644 index 0000000000..97705dcb9e --- /dev/null +++ b/fonts/malvern/tfm/ma75ab24.tfm diff --git a/fonts/malvern/tfm/ma75ab7.tfm b/fonts/malvern/tfm/ma75ab7.tfm Binary files differnew file mode 100644 index 0000000000..ddcdcf965f --- /dev/null +++ b/fonts/malvern/tfm/ma75ab7.tfm diff --git a/fonts/malvern/tfm/ma75ar10.tfm b/fonts/malvern/tfm/ma75ar10.tfm Binary files differnew file mode 100644 index 0000000000..0efba6f8c5 --- /dev/null +++ b/fonts/malvern/tfm/ma75ar10.tfm diff --git a/fonts/malvern/tfm/ma75ar12.tfm b/fonts/malvern/tfm/ma75ar12.tfm Binary files differnew file mode 100644 index 0000000000..1e13210dfc --- /dev/null +++ b/fonts/malvern/tfm/ma75ar12.tfm diff --git a/fonts/malvern/tfm/ma75ar14.tfm b/fonts/malvern/tfm/ma75ar14.tfm Binary files differnew file mode 100644 index 0000000000..2ad8bfcc7f --- /dev/null +++ b/fonts/malvern/tfm/ma75ar14.tfm diff --git a/fonts/malvern/tfm/ma75ar18.tfm b/fonts/malvern/tfm/ma75ar18.tfm Binary files differnew file mode 100644 index 0000000000..1e0998c20c --- /dev/null +++ b/fonts/malvern/tfm/ma75ar18.tfm diff --git a/fonts/malvern/tfm/ma75ar24.tfm b/fonts/malvern/tfm/ma75ar24.tfm Binary files differnew file mode 100644 index 0000000000..be3e466908 --- /dev/null +++ b/fonts/malvern/tfm/ma75ar24.tfm diff --git a/fonts/malvern/tfm/ma75ar7.tfm b/fonts/malvern/tfm/ma75ar7.tfm Binary files differnew file mode 100644 index 0000000000..555dc2f1b2 --- /dev/null +++ b/fonts/malvern/tfm/ma75ar7.tfm diff --git a/fonts/malvern/tfm/ma75as10.tfm b/fonts/malvern/tfm/ma75as10.tfm Binary files differnew file mode 100644 index 0000000000..dc44b6b051 --- /dev/null +++ b/fonts/malvern/tfm/ma75as10.tfm diff --git a/fonts/malvern/tfm/ma75as12.tfm b/fonts/malvern/tfm/ma75as12.tfm Binary files differnew file mode 100644 index 0000000000..9271b28474 --- /dev/null +++ b/fonts/malvern/tfm/ma75as12.tfm diff --git a/fonts/malvern/tfm/ma75as14.tfm b/fonts/malvern/tfm/ma75as14.tfm Binary files differnew file mode 100644 index 0000000000..9c59489e27 --- /dev/null +++ b/fonts/malvern/tfm/ma75as14.tfm diff --git a/fonts/malvern/tfm/ma75as18.tfm b/fonts/malvern/tfm/ma75as18.tfm Binary files differnew file mode 100644 index 0000000000..17f0b5637d --- /dev/null +++ b/fonts/malvern/tfm/ma75as18.tfm diff --git a/fonts/malvern/tfm/ma75as24.tfm b/fonts/malvern/tfm/ma75as24.tfm Binary files differnew file mode 100644 index 0000000000..d9c5715a8a --- /dev/null +++ b/fonts/malvern/tfm/ma75as24.tfm diff --git a/fonts/malvern/tfm/ma75as7.tfm b/fonts/malvern/tfm/ma75as7.tfm Binary files differnew file mode 100644 index 0000000000..c7465d5c48 --- /dev/null +++ b/fonts/malvern/tfm/ma75as7.tfm diff --git a/fonts/malvern/tfm/ma75at10.tfm b/fonts/malvern/tfm/ma75at10.tfm Binary files differnew file mode 100644 index 0000000000..ad4f0cee28 --- /dev/null +++ b/fonts/malvern/tfm/ma75at10.tfm diff --git a/fonts/malvern/tfm/ma75at12.tfm b/fonts/malvern/tfm/ma75at12.tfm Binary files differnew file mode 100644 index 0000000000..4a8000788a --- /dev/null +++ b/fonts/malvern/tfm/ma75at12.tfm diff --git a/fonts/malvern/tfm/ma75at14.tfm b/fonts/malvern/tfm/ma75at14.tfm Binary files differnew file mode 100644 index 0000000000..ade1162e8e --- /dev/null +++ b/fonts/malvern/tfm/ma75at14.tfm diff --git a/fonts/malvern/tfm/ma75at18.tfm b/fonts/malvern/tfm/ma75at18.tfm Binary files differnew file mode 100644 index 0000000000..7091b40648 --- /dev/null +++ b/fonts/malvern/tfm/ma75at18.tfm diff --git a/fonts/malvern/tfm/ma75at24.tfm b/fonts/malvern/tfm/ma75at24.tfm Binary files differnew file mode 100644 index 0000000000..26facda998 --- /dev/null +++ b/fonts/malvern/tfm/ma75at24.tfm diff --git a/fonts/malvern/tfm/ma75at7.tfm b/fonts/malvern/tfm/ma75at7.tfm Binary files differnew file mode 100644 index 0000000000..7a3a67a0a6 --- /dev/null +++ b/fonts/malvern/tfm/ma75at7.tfm diff --git a/fonts/malvern/tfm/ma75au10.tfm b/fonts/malvern/tfm/ma75au10.tfm Binary files differnew file mode 100644 index 0000000000..8877e16c80 --- /dev/null +++ b/fonts/malvern/tfm/ma75au10.tfm diff --git a/fonts/malvern/tfm/ma75au12.tfm b/fonts/malvern/tfm/ma75au12.tfm Binary files differnew file mode 100644 index 0000000000..c7dce7cd72 --- /dev/null +++ b/fonts/malvern/tfm/ma75au12.tfm diff --git a/fonts/malvern/tfm/ma75au14.tfm b/fonts/malvern/tfm/ma75au14.tfm Binary files differnew file mode 100644 index 0000000000..82d5f740ba --- /dev/null +++ b/fonts/malvern/tfm/ma75au14.tfm diff --git a/fonts/malvern/tfm/ma75au18.tfm b/fonts/malvern/tfm/ma75au18.tfm Binary files differnew file mode 100644 index 0000000000..9886229dc7 --- /dev/null +++ b/fonts/malvern/tfm/ma75au18.tfm diff --git a/fonts/malvern/tfm/ma75au24.tfm b/fonts/malvern/tfm/ma75au24.tfm Binary files differnew file mode 100644 index 0000000000..c8899008ad --- /dev/null +++ b/fonts/malvern/tfm/ma75au24.tfm diff --git a/fonts/malvern/tfm/ma75au7.tfm b/fonts/malvern/tfm/ma75au7.tfm Binary files differnew file mode 100644 index 0000000000..9979371041 --- /dev/null +++ b/fonts/malvern/tfm/ma75au7.tfm diff --git a/fonts/malvern/tfm/ma75az10.tfm b/fonts/malvern/tfm/ma75az10.tfm Binary files differnew file mode 100644 index 0000000000..38371aac74 --- /dev/null +++ b/fonts/malvern/tfm/ma75az10.tfm diff --git a/fonts/malvern/tfm/ma75az12.tfm b/fonts/malvern/tfm/ma75az12.tfm Binary files differnew file mode 100644 index 0000000000..5dc2dcd428 --- /dev/null +++ b/fonts/malvern/tfm/ma75az12.tfm diff --git a/fonts/malvern/tfm/ma75az14.tfm b/fonts/malvern/tfm/ma75az14.tfm Binary files differnew file mode 100644 index 0000000000..0756930eee --- /dev/null +++ b/fonts/malvern/tfm/ma75az14.tfm diff --git a/fonts/malvern/tfm/ma75az18.tfm b/fonts/malvern/tfm/ma75az18.tfm Binary files differnew file mode 100644 index 0000000000..6e2e0022db --- /dev/null +++ b/fonts/malvern/tfm/ma75az18.tfm diff --git a/fonts/malvern/tfm/ma75az24.tfm b/fonts/malvern/tfm/ma75az24.tfm Binary files differnew file mode 100644 index 0000000000..12df015ee6 --- /dev/null +++ b/fonts/malvern/tfm/ma75az24.tfm diff --git a/fonts/malvern/tfm/ma75az7.tfm b/fonts/malvern/tfm/ma75az7.tfm Binary files differnew file mode 100644 index 0000000000..5e45c25fe2 --- /dev/null +++ b/fonts/malvern/tfm/ma75az7.tfm diff --git a/fonts/malvern/tfm/ma75b10.tfm b/fonts/malvern/tfm/ma75b10.tfm Binary files differnew file mode 100644 index 0000000000..7c88a923be --- /dev/null +++ b/fonts/malvern/tfm/ma75b10.tfm diff --git a/fonts/malvern/tfm/ma75b12.tfm b/fonts/malvern/tfm/ma75b12.tfm Binary files differnew file mode 100644 index 0000000000..160c85f134 --- /dev/null +++ b/fonts/malvern/tfm/ma75b12.tfm diff --git a/fonts/malvern/tfm/ma75b14.tfm b/fonts/malvern/tfm/ma75b14.tfm Binary files differnew file mode 100644 index 0000000000..4d247cdd27 --- /dev/null +++ b/fonts/malvern/tfm/ma75b14.tfm diff --git a/fonts/malvern/tfm/ma75b18.tfm b/fonts/malvern/tfm/ma75b18.tfm Binary files differnew file mode 100644 index 0000000000..e0ceabbd21 --- /dev/null +++ b/fonts/malvern/tfm/ma75b18.tfm diff --git a/fonts/malvern/tfm/ma75b24.tfm b/fonts/malvern/tfm/ma75b24.tfm Binary files differnew file mode 100644 index 0000000000..210ccfc23a --- /dev/null +++ b/fonts/malvern/tfm/ma75b24.tfm diff --git a/fonts/malvern/tfm/ma75b7.tfm b/fonts/malvern/tfm/ma75b7.tfm Binary files differnew file mode 100644 index 0000000000..778dd6568e --- /dev/null +++ b/fonts/malvern/tfm/ma75b7.tfm diff --git a/fonts/malvern/tfm/ma75s10.tfm b/fonts/malvern/tfm/ma75s10.tfm Binary files differnew file mode 100644 index 0000000000..37464027d4 --- /dev/null +++ b/fonts/malvern/tfm/ma75s10.tfm diff --git a/fonts/malvern/tfm/ma75s12.tfm b/fonts/malvern/tfm/ma75s12.tfm Binary files differnew file mode 100644 index 0000000000..a656e038a8 --- /dev/null +++ b/fonts/malvern/tfm/ma75s12.tfm diff --git a/fonts/malvern/tfm/ma75s14.tfm b/fonts/malvern/tfm/ma75s14.tfm Binary files differnew file mode 100644 index 0000000000..2dfaa0335a --- /dev/null +++ b/fonts/malvern/tfm/ma75s14.tfm diff --git a/fonts/malvern/tfm/ma75s18.tfm b/fonts/malvern/tfm/ma75s18.tfm Binary files differnew file mode 100644 index 0000000000..cf1a708a2e --- /dev/null +++ b/fonts/malvern/tfm/ma75s18.tfm diff --git a/fonts/malvern/tfm/ma75s24.tfm b/fonts/malvern/tfm/ma75s24.tfm Binary files differnew file mode 100644 index 0000000000..884010c88b --- /dev/null +++ b/fonts/malvern/tfm/ma75s24.tfm diff --git a/fonts/malvern/tfm/ma75s7.tfm b/fonts/malvern/tfm/ma75s7.tfm Binary files differnew file mode 100644 index 0000000000..8afc33e668 --- /dev/null +++ b/fonts/malvern/tfm/ma75s7.tfm diff --git a/fonts/malvern/tfm/ma76a10.tfm b/fonts/malvern/tfm/ma76a10.tfm Binary files differnew file mode 100644 index 0000000000..125f47e917 --- /dev/null +++ b/fonts/malvern/tfm/ma76a10.tfm diff --git a/fonts/malvern/tfm/ma76a12.tfm b/fonts/malvern/tfm/ma76a12.tfm Binary files differnew file mode 100644 index 0000000000..b0876b2b4c --- /dev/null +++ b/fonts/malvern/tfm/ma76a12.tfm diff --git a/fonts/malvern/tfm/ma76a14.tfm b/fonts/malvern/tfm/ma76a14.tfm Binary files differnew file mode 100644 index 0000000000..a3fa52e829 --- /dev/null +++ b/fonts/malvern/tfm/ma76a14.tfm diff --git a/fonts/malvern/tfm/ma76a18.tfm b/fonts/malvern/tfm/ma76a18.tfm Binary files differnew file mode 100644 index 0000000000..cd342431c8 --- /dev/null +++ b/fonts/malvern/tfm/ma76a18.tfm diff --git a/fonts/malvern/tfm/ma76a24.tfm b/fonts/malvern/tfm/ma76a24.tfm Binary files differnew file mode 100644 index 0000000000..12292c4bae --- /dev/null +++ b/fonts/malvern/tfm/ma76a24.tfm diff --git a/fonts/malvern/tfm/ma76a7.tfm b/fonts/malvern/tfm/ma76a7.tfm Binary files differnew file mode 100644 index 0000000000..d8d8d64094 --- /dev/null +++ b/fonts/malvern/tfm/ma76a7.tfm diff --git a/fonts/malvern/tfm/ma76ar10.tfm b/fonts/malvern/tfm/ma76ar10.tfm Binary files differnew file mode 100644 index 0000000000..aa16ab125d --- /dev/null +++ b/fonts/malvern/tfm/ma76ar10.tfm diff --git a/fonts/malvern/tfm/ma76ar12.tfm b/fonts/malvern/tfm/ma76ar12.tfm Binary files differnew file mode 100644 index 0000000000..1559b62190 --- /dev/null +++ b/fonts/malvern/tfm/ma76ar12.tfm diff --git a/fonts/malvern/tfm/ma76ar14.tfm b/fonts/malvern/tfm/ma76ar14.tfm Binary files differnew file mode 100644 index 0000000000..a7ead80a88 --- /dev/null +++ b/fonts/malvern/tfm/ma76ar14.tfm diff --git a/fonts/malvern/tfm/ma76ar18.tfm b/fonts/malvern/tfm/ma76ar18.tfm Binary files differnew file mode 100644 index 0000000000..7a192c0ee4 --- /dev/null +++ b/fonts/malvern/tfm/ma76ar18.tfm diff --git a/fonts/malvern/tfm/ma76ar24.tfm b/fonts/malvern/tfm/ma76ar24.tfm Binary files differnew file mode 100644 index 0000000000..20c6c21964 --- /dev/null +++ b/fonts/malvern/tfm/ma76ar24.tfm diff --git a/fonts/malvern/tfm/ma76ar7.tfm b/fonts/malvern/tfm/ma76ar7.tfm Binary files differnew file mode 100644 index 0000000000..121d02e5bc --- /dev/null +++ b/fonts/malvern/tfm/ma76ar7.tfm diff --git a/fonts/malvern/tfm/ma76as10.tfm b/fonts/malvern/tfm/ma76as10.tfm Binary files differnew file mode 100644 index 0000000000..b7a20ca8b8 --- /dev/null +++ b/fonts/malvern/tfm/ma76as10.tfm diff --git a/fonts/malvern/tfm/ma76as12.tfm b/fonts/malvern/tfm/ma76as12.tfm Binary files differnew file mode 100644 index 0000000000..2ccf4f94d9 --- /dev/null +++ b/fonts/malvern/tfm/ma76as12.tfm diff --git a/fonts/malvern/tfm/ma76as14.tfm b/fonts/malvern/tfm/ma76as14.tfm Binary files differnew file mode 100644 index 0000000000..7b0464a5c5 --- /dev/null +++ b/fonts/malvern/tfm/ma76as14.tfm diff --git a/fonts/malvern/tfm/ma76as18.tfm b/fonts/malvern/tfm/ma76as18.tfm Binary files differnew file mode 100644 index 0000000000..42e931b867 --- /dev/null +++ b/fonts/malvern/tfm/ma76as18.tfm diff --git a/fonts/malvern/tfm/ma76as24.tfm b/fonts/malvern/tfm/ma76as24.tfm Binary files differnew file mode 100644 index 0000000000..7351f8312e --- /dev/null +++ b/fonts/malvern/tfm/ma76as24.tfm diff --git a/fonts/malvern/tfm/ma76as7.tfm b/fonts/malvern/tfm/ma76as7.tfm Binary files differnew file mode 100644 index 0000000000..ed4a8ad689 --- /dev/null +++ b/fonts/malvern/tfm/ma76as7.tfm diff --git a/fonts/malvern/tfm/ma76az10.tfm b/fonts/malvern/tfm/ma76az10.tfm Binary files differnew file mode 100644 index 0000000000..e93eeb50d2 --- /dev/null +++ b/fonts/malvern/tfm/ma76az10.tfm diff --git a/fonts/malvern/tfm/ma76az12.tfm b/fonts/malvern/tfm/ma76az12.tfm Binary files differnew file mode 100644 index 0000000000..fca6f99cad --- /dev/null +++ b/fonts/malvern/tfm/ma76az12.tfm diff --git a/fonts/malvern/tfm/ma76az14.tfm b/fonts/malvern/tfm/ma76az14.tfm Binary files differnew file mode 100644 index 0000000000..c083addaf5 --- /dev/null +++ b/fonts/malvern/tfm/ma76az14.tfm diff --git a/fonts/malvern/tfm/ma76az18.tfm b/fonts/malvern/tfm/ma76az18.tfm Binary files differnew file mode 100644 index 0000000000..4930db45ff --- /dev/null +++ b/fonts/malvern/tfm/ma76az18.tfm diff --git a/fonts/malvern/tfm/ma76az24.tfm b/fonts/malvern/tfm/ma76az24.tfm Binary files differnew file mode 100644 index 0000000000..dad52ef6ad --- /dev/null +++ b/fonts/malvern/tfm/ma76az24.tfm diff --git a/fonts/malvern/tfm/ma76az7.tfm b/fonts/malvern/tfm/ma76az7.tfm Binary files differnew file mode 100644 index 0000000000..a7efdf3a6e --- /dev/null +++ b/fonts/malvern/tfm/ma76az7.tfm diff --git a/fonts/malvern/tfm/ma76b10.tfm b/fonts/malvern/tfm/ma76b10.tfm Binary files differnew file mode 100644 index 0000000000..5167f365dd --- /dev/null +++ b/fonts/malvern/tfm/ma76b10.tfm diff --git a/fonts/malvern/tfm/ma76b12.tfm b/fonts/malvern/tfm/ma76b12.tfm Binary files differnew file mode 100644 index 0000000000..e5f9f7781b --- /dev/null +++ b/fonts/malvern/tfm/ma76b12.tfm diff --git a/fonts/malvern/tfm/ma76b14.tfm b/fonts/malvern/tfm/ma76b14.tfm Binary files differnew file mode 100644 index 0000000000..94aac314c3 --- /dev/null +++ b/fonts/malvern/tfm/ma76b14.tfm diff --git a/fonts/malvern/tfm/ma76b18.tfm b/fonts/malvern/tfm/ma76b18.tfm Binary files differnew file mode 100644 index 0000000000..5cd76b1105 --- /dev/null +++ b/fonts/malvern/tfm/ma76b18.tfm diff --git a/fonts/malvern/tfm/ma76b24.tfm b/fonts/malvern/tfm/ma76b24.tfm Binary files differnew file mode 100644 index 0000000000..8e8761a3ca --- /dev/null +++ b/fonts/malvern/tfm/ma76b24.tfm diff --git a/fonts/malvern/tfm/ma76b7.tfm b/fonts/malvern/tfm/ma76b7.tfm Binary files differnew file mode 100644 index 0000000000..0230659719 --- /dev/null +++ b/fonts/malvern/tfm/ma76b7.tfm diff --git a/fonts/malvern/tfm/ma76s10.tfm b/fonts/malvern/tfm/ma76s10.tfm Binary files differnew file mode 100644 index 0000000000..085e7b7c59 --- /dev/null +++ b/fonts/malvern/tfm/ma76s10.tfm diff --git a/fonts/malvern/tfm/ma76s12.tfm b/fonts/malvern/tfm/ma76s12.tfm Binary files differnew file mode 100644 index 0000000000..25691fa580 --- /dev/null +++ b/fonts/malvern/tfm/ma76s12.tfm diff --git a/fonts/malvern/tfm/ma76s14.tfm b/fonts/malvern/tfm/ma76s14.tfm Binary files differnew file mode 100644 index 0000000000..bb0c0d2be7 --- /dev/null +++ b/fonts/malvern/tfm/ma76s14.tfm diff --git a/fonts/malvern/tfm/ma76s18.tfm b/fonts/malvern/tfm/ma76s18.tfm Binary files differnew file mode 100644 index 0000000000..8169b8d624 --- /dev/null +++ b/fonts/malvern/tfm/ma76s18.tfm diff --git a/fonts/malvern/tfm/ma76s24.tfm b/fonts/malvern/tfm/ma76s24.tfm Binary files differnew file mode 100644 index 0000000000..167962935f --- /dev/null +++ b/fonts/malvern/tfm/ma76s24.tfm diff --git a/fonts/malvern/tfm/ma76s7.tfm b/fonts/malvern/tfm/ma76s7.tfm Binary files differnew file mode 100644 index 0000000000..599aa4fa15 --- /dev/null +++ b/fonts/malvern/tfm/ma76s7.tfm diff --git a/fonts/malvern/vf/ma55aa10.vf b/fonts/malvern/vf/ma55aa10.vf Binary files differnew file mode 100644 index 0000000000..73eda0f4f3 --- /dev/null +++ b/fonts/malvern/vf/ma55aa10.vf diff --git a/fonts/malvern/vf/ma55aa12.vf b/fonts/malvern/vf/ma55aa12.vf Binary files differnew file mode 100644 index 0000000000..38809e9787 --- /dev/null +++ b/fonts/malvern/vf/ma55aa12.vf diff --git a/fonts/malvern/vf/ma55aa14.vf b/fonts/malvern/vf/ma55aa14.vf Binary files differnew file mode 100644 index 0000000000..a20dd0e48b --- /dev/null +++ b/fonts/malvern/vf/ma55aa14.vf diff --git a/fonts/malvern/vf/ma55aa18.vf b/fonts/malvern/vf/ma55aa18.vf Binary files differnew file mode 100644 index 0000000000..7b99c70dba --- /dev/null +++ b/fonts/malvern/vf/ma55aa18.vf diff --git a/fonts/malvern/vf/ma55aa24.vf b/fonts/malvern/vf/ma55aa24.vf Binary files differnew file mode 100644 index 0000000000..7d793f2db1 --- /dev/null +++ b/fonts/malvern/vf/ma55aa24.vf diff --git a/fonts/malvern/vf/ma55aa7.vf b/fonts/malvern/vf/ma55aa7.vf Binary files differnew file mode 100644 index 0000000000..ecd72d52cb --- /dev/null +++ b/fonts/malvern/vf/ma55aa7.vf diff --git a/fonts/malvern/vf/ma55ab10.vf b/fonts/malvern/vf/ma55ab10.vf Binary files differnew file mode 100644 index 0000000000..58b1867746 --- /dev/null +++ b/fonts/malvern/vf/ma55ab10.vf diff --git a/fonts/malvern/vf/ma55ab12.vf b/fonts/malvern/vf/ma55ab12.vf Binary files differnew file mode 100644 index 0000000000..c09e595b63 --- /dev/null +++ b/fonts/malvern/vf/ma55ab12.vf diff --git a/fonts/malvern/vf/ma55ab14.vf b/fonts/malvern/vf/ma55ab14.vf Binary files differnew file mode 100644 index 0000000000..4066910cf8 --- /dev/null +++ b/fonts/malvern/vf/ma55ab14.vf diff --git a/fonts/malvern/vf/ma55ab18.vf b/fonts/malvern/vf/ma55ab18.vf Binary files differnew file mode 100644 index 0000000000..faea8c29f1 --- /dev/null +++ b/fonts/malvern/vf/ma55ab18.vf diff --git a/fonts/malvern/vf/ma55ab24.vf b/fonts/malvern/vf/ma55ab24.vf Binary files differnew file mode 100644 index 0000000000..a4d53ee080 --- /dev/null +++ b/fonts/malvern/vf/ma55ab24.vf diff --git a/fonts/malvern/vf/ma55ab7.vf b/fonts/malvern/vf/ma55ab7.vf Binary files differnew file mode 100644 index 0000000000..60e937a922 --- /dev/null +++ b/fonts/malvern/vf/ma55ab7.vf diff --git a/fonts/malvern/vf/ma55ar10.vf b/fonts/malvern/vf/ma55ar10.vf Binary files differnew file mode 100644 index 0000000000..f870663e14 --- /dev/null +++ b/fonts/malvern/vf/ma55ar10.vf diff --git a/fonts/malvern/vf/ma55ar12.vf b/fonts/malvern/vf/ma55ar12.vf Binary files differnew file mode 100644 index 0000000000..87e0614fc0 --- /dev/null +++ b/fonts/malvern/vf/ma55ar12.vf diff --git a/fonts/malvern/vf/ma55ar14.vf b/fonts/malvern/vf/ma55ar14.vf Binary files differnew file mode 100644 index 0000000000..b6e26693d5 --- /dev/null +++ b/fonts/malvern/vf/ma55ar14.vf diff --git a/fonts/malvern/vf/ma55ar18.vf b/fonts/malvern/vf/ma55ar18.vf Binary files differnew file mode 100644 index 0000000000..5ab841f187 --- /dev/null +++ b/fonts/malvern/vf/ma55ar18.vf diff --git a/fonts/malvern/vf/ma55ar24.vf b/fonts/malvern/vf/ma55ar24.vf Binary files differnew file mode 100644 index 0000000000..6d613bb283 --- /dev/null +++ b/fonts/malvern/vf/ma55ar24.vf diff --git a/fonts/malvern/vf/ma55ar7.vf b/fonts/malvern/vf/ma55ar7.vf Binary files differnew file mode 100644 index 0000000000..687253dce3 --- /dev/null +++ b/fonts/malvern/vf/ma55ar7.vf diff --git a/fonts/malvern/vf/ma55as10.vf b/fonts/malvern/vf/ma55as10.vf Binary files differnew file mode 100644 index 0000000000..d1d5ca42e5 --- /dev/null +++ b/fonts/malvern/vf/ma55as10.vf diff --git a/fonts/malvern/vf/ma55as12.vf b/fonts/malvern/vf/ma55as12.vf Binary files differnew file mode 100644 index 0000000000..d9649788c7 --- /dev/null +++ b/fonts/malvern/vf/ma55as12.vf diff --git a/fonts/malvern/vf/ma55as14.vf b/fonts/malvern/vf/ma55as14.vf Binary files differnew file mode 100644 index 0000000000..419aa45dd9 --- /dev/null +++ b/fonts/malvern/vf/ma55as14.vf diff --git a/fonts/malvern/vf/ma55as18.vf b/fonts/malvern/vf/ma55as18.vf Binary files differnew file mode 100644 index 0000000000..ee49f5f563 --- /dev/null +++ b/fonts/malvern/vf/ma55as18.vf diff --git a/fonts/malvern/vf/ma55as24.vf b/fonts/malvern/vf/ma55as24.vf Binary files differnew file mode 100644 index 0000000000..a73d769946 --- /dev/null +++ b/fonts/malvern/vf/ma55as24.vf diff --git a/fonts/malvern/vf/ma55as7.vf b/fonts/malvern/vf/ma55as7.vf Binary files differnew file mode 100644 index 0000000000..e544738f38 --- /dev/null +++ b/fonts/malvern/vf/ma55as7.vf diff --git a/fonts/malvern/vf/ma55at10.vf b/fonts/malvern/vf/ma55at10.vf Binary files differnew file mode 100644 index 0000000000..e56b6c792f --- /dev/null +++ b/fonts/malvern/vf/ma55at10.vf diff --git a/fonts/malvern/vf/ma55at12.vf b/fonts/malvern/vf/ma55at12.vf Binary files differnew file mode 100644 index 0000000000..4970e1d11d --- /dev/null +++ b/fonts/malvern/vf/ma55at12.vf diff --git a/fonts/malvern/vf/ma55at14.vf b/fonts/malvern/vf/ma55at14.vf Binary files differnew file mode 100644 index 0000000000..980ed96341 --- /dev/null +++ b/fonts/malvern/vf/ma55at14.vf diff --git a/fonts/malvern/vf/ma55at18.vf b/fonts/malvern/vf/ma55at18.vf Binary files differnew file mode 100644 index 0000000000..35ce554975 --- /dev/null +++ b/fonts/malvern/vf/ma55at18.vf diff --git a/fonts/malvern/vf/ma55at24.vf b/fonts/malvern/vf/ma55at24.vf Binary files differnew file mode 100644 index 0000000000..c29441cd1f --- /dev/null +++ b/fonts/malvern/vf/ma55at24.vf diff --git a/fonts/malvern/vf/ma55at7.vf b/fonts/malvern/vf/ma55at7.vf Binary files differnew file mode 100644 index 0000000000..59fb43ed7b --- /dev/null +++ b/fonts/malvern/vf/ma55at7.vf diff --git a/fonts/malvern/vf/ma55au10.vf b/fonts/malvern/vf/ma55au10.vf Binary files differnew file mode 100644 index 0000000000..b41ab85c64 --- /dev/null +++ b/fonts/malvern/vf/ma55au10.vf diff --git a/fonts/malvern/vf/ma55au12.vf b/fonts/malvern/vf/ma55au12.vf Binary files differnew file mode 100644 index 0000000000..c743946d17 --- /dev/null +++ b/fonts/malvern/vf/ma55au12.vf diff --git a/fonts/malvern/vf/ma55au14.vf b/fonts/malvern/vf/ma55au14.vf Binary files differnew file mode 100644 index 0000000000..3011bd3067 --- /dev/null +++ b/fonts/malvern/vf/ma55au14.vf diff --git a/fonts/malvern/vf/ma55au18.vf b/fonts/malvern/vf/ma55au18.vf Binary files differnew file mode 100644 index 0000000000..0d2cc5de98 --- /dev/null +++ b/fonts/malvern/vf/ma55au18.vf diff --git a/fonts/malvern/vf/ma55au24.vf b/fonts/malvern/vf/ma55au24.vf Binary files differnew file mode 100644 index 0000000000..4e7ee1babd --- /dev/null +++ b/fonts/malvern/vf/ma55au24.vf diff --git a/fonts/malvern/vf/ma55au7.vf b/fonts/malvern/vf/ma55au7.vf Binary files differnew file mode 100644 index 0000000000..0af70fd5bf --- /dev/null +++ b/fonts/malvern/vf/ma55au7.vf diff --git a/fonts/malvern/vf/ma56ar10.vf b/fonts/malvern/vf/ma56ar10.vf Binary files differnew file mode 100644 index 0000000000..8585a3bd7b --- /dev/null +++ b/fonts/malvern/vf/ma56ar10.vf diff --git a/fonts/malvern/vf/ma56ar12.vf b/fonts/malvern/vf/ma56ar12.vf Binary files differnew file mode 100644 index 0000000000..d7727680e2 --- /dev/null +++ b/fonts/malvern/vf/ma56ar12.vf diff --git a/fonts/malvern/vf/ma56ar14.vf b/fonts/malvern/vf/ma56ar14.vf Binary files differnew file mode 100644 index 0000000000..b2d9a6585d --- /dev/null +++ b/fonts/malvern/vf/ma56ar14.vf diff --git a/fonts/malvern/vf/ma56ar18.vf b/fonts/malvern/vf/ma56ar18.vf Binary files differnew file mode 100644 index 0000000000..8282b62fac --- /dev/null +++ b/fonts/malvern/vf/ma56ar18.vf diff --git a/fonts/malvern/vf/ma56ar24.vf b/fonts/malvern/vf/ma56ar24.vf Binary files differnew file mode 100644 index 0000000000..6a5ff02586 --- /dev/null +++ b/fonts/malvern/vf/ma56ar24.vf diff --git a/fonts/malvern/vf/ma56ar7.vf b/fonts/malvern/vf/ma56ar7.vf Binary files differnew file mode 100644 index 0000000000..7b0e8f743a --- /dev/null +++ b/fonts/malvern/vf/ma56ar7.vf diff --git a/fonts/malvern/vf/ma56as10.vf b/fonts/malvern/vf/ma56as10.vf Binary files differnew file mode 100644 index 0000000000..4e976e89ac --- /dev/null +++ b/fonts/malvern/vf/ma56as10.vf diff --git a/fonts/malvern/vf/ma56as12.vf b/fonts/malvern/vf/ma56as12.vf Binary files differnew file mode 100644 index 0000000000..2ea9635529 --- /dev/null +++ b/fonts/malvern/vf/ma56as12.vf diff --git a/fonts/malvern/vf/ma56as14.vf b/fonts/malvern/vf/ma56as14.vf Binary files differnew file mode 100644 index 0000000000..e30ca03774 --- /dev/null +++ b/fonts/malvern/vf/ma56as14.vf diff --git a/fonts/malvern/vf/ma56as18.vf b/fonts/malvern/vf/ma56as18.vf Binary files differnew file mode 100644 index 0000000000..97603cbc67 --- /dev/null +++ b/fonts/malvern/vf/ma56as18.vf diff --git a/fonts/malvern/vf/ma56as24.vf b/fonts/malvern/vf/ma56as24.vf Binary files differnew file mode 100644 index 0000000000..3a03f77ea9 --- /dev/null +++ b/fonts/malvern/vf/ma56as24.vf diff --git a/fonts/malvern/vf/ma56as7.vf b/fonts/malvern/vf/ma56as7.vf Binary files differnew file mode 100644 index 0000000000..e24b408084 --- /dev/null +++ b/fonts/malvern/vf/ma56as7.vf diff --git a/fonts/malvern/vf/ma75aa10.vf b/fonts/malvern/vf/ma75aa10.vf Binary files differnew file mode 100644 index 0000000000..379548251f --- /dev/null +++ b/fonts/malvern/vf/ma75aa10.vf diff --git a/fonts/malvern/vf/ma75aa12.vf b/fonts/malvern/vf/ma75aa12.vf Binary files differnew file mode 100644 index 0000000000..f458fa7f70 --- /dev/null +++ b/fonts/malvern/vf/ma75aa12.vf diff --git a/fonts/malvern/vf/ma75aa14.vf b/fonts/malvern/vf/ma75aa14.vf Binary files differnew file mode 100644 index 0000000000..8d19b5d8a9 --- /dev/null +++ b/fonts/malvern/vf/ma75aa14.vf diff --git a/fonts/malvern/vf/ma75aa18.vf b/fonts/malvern/vf/ma75aa18.vf Binary files differnew file mode 100644 index 0000000000..99e3a9b935 --- /dev/null +++ b/fonts/malvern/vf/ma75aa18.vf diff --git a/fonts/malvern/vf/ma75aa24.vf b/fonts/malvern/vf/ma75aa24.vf Binary files differnew file mode 100644 index 0000000000..3fe3d284f3 --- /dev/null +++ b/fonts/malvern/vf/ma75aa24.vf diff --git a/fonts/malvern/vf/ma75aa7.vf b/fonts/malvern/vf/ma75aa7.vf Binary files differnew file mode 100644 index 0000000000..26af2b6f3f --- /dev/null +++ b/fonts/malvern/vf/ma75aa7.vf diff --git a/fonts/malvern/vf/ma75ab10.vf b/fonts/malvern/vf/ma75ab10.vf Binary files differnew file mode 100644 index 0000000000..0461104453 --- /dev/null +++ b/fonts/malvern/vf/ma75ab10.vf diff --git a/fonts/malvern/vf/ma75ab12.vf b/fonts/malvern/vf/ma75ab12.vf Binary files differnew file mode 100644 index 0000000000..f196a4ba19 --- /dev/null +++ b/fonts/malvern/vf/ma75ab12.vf diff --git a/fonts/malvern/vf/ma75ab14.vf b/fonts/malvern/vf/ma75ab14.vf Binary files differnew file mode 100644 index 0000000000..f310bd0744 --- /dev/null +++ b/fonts/malvern/vf/ma75ab14.vf diff --git a/fonts/malvern/vf/ma75ab18.vf b/fonts/malvern/vf/ma75ab18.vf Binary files differnew file mode 100644 index 0000000000..b18a018400 --- /dev/null +++ b/fonts/malvern/vf/ma75ab18.vf diff --git a/fonts/malvern/vf/ma75ab24.vf b/fonts/malvern/vf/ma75ab24.vf Binary files differnew file mode 100644 index 0000000000..0cc0f14584 --- /dev/null +++ b/fonts/malvern/vf/ma75ab24.vf diff --git a/fonts/malvern/vf/ma75ab7.vf b/fonts/malvern/vf/ma75ab7.vf Binary files differnew file mode 100644 index 0000000000..c14481623e --- /dev/null +++ b/fonts/malvern/vf/ma75ab7.vf diff --git a/fonts/malvern/vf/ma75ar10.vf b/fonts/malvern/vf/ma75ar10.vf Binary files differnew file mode 100644 index 0000000000..6490e18cdd --- /dev/null +++ b/fonts/malvern/vf/ma75ar10.vf diff --git a/fonts/malvern/vf/ma75ar12.vf b/fonts/malvern/vf/ma75ar12.vf Binary files differnew file mode 100644 index 0000000000..8248f77b38 --- /dev/null +++ b/fonts/malvern/vf/ma75ar12.vf diff --git a/fonts/malvern/vf/ma75ar14.vf b/fonts/malvern/vf/ma75ar14.vf Binary files differnew file mode 100644 index 0000000000..0efdd45609 --- /dev/null +++ b/fonts/malvern/vf/ma75ar14.vf diff --git a/fonts/malvern/vf/ma75ar18.vf b/fonts/malvern/vf/ma75ar18.vf Binary files differnew file mode 100644 index 0000000000..29f989810b --- /dev/null +++ b/fonts/malvern/vf/ma75ar18.vf diff --git a/fonts/malvern/vf/ma75ar24.vf b/fonts/malvern/vf/ma75ar24.vf Binary files differnew file mode 100644 index 0000000000..76532cd767 --- /dev/null +++ b/fonts/malvern/vf/ma75ar24.vf diff --git a/fonts/malvern/vf/ma75ar7.vf b/fonts/malvern/vf/ma75ar7.vf Binary files differnew file mode 100644 index 0000000000..cfe8adac3a --- /dev/null +++ b/fonts/malvern/vf/ma75ar7.vf diff --git a/fonts/malvern/vf/ma75as10.vf b/fonts/malvern/vf/ma75as10.vf Binary files differnew file mode 100644 index 0000000000..b15bc48824 --- /dev/null +++ b/fonts/malvern/vf/ma75as10.vf diff --git a/fonts/malvern/vf/ma75as12.vf b/fonts/malvern/vf/ma75as12.vf Binary files differnew file mode 100644 index 0000000000..ffccee930c --- /dev/null +++ b/fonts/malvern/vf/ma75as12.vf diff --git a/fonts/malvern/vf/ma75as14.vf b/fonts/malvern/vf/ma75as14.vf Binary files differnew file mode 100644 index 0000000000..457263ba98 --- /dev/null +++ b/fonts/malvern/vf/ma75as14.vf diff --git a/fonts/malvern/vf/ma75as18.vf b/fonts/malvern/vf/ma75as18.vf Binary files differnew file mode 100644 index 0000000000..0b95ebd331 --- /dev/null +++ b/fonts/malvern/vf/ma75as18.vf diff --git a/fonts/malvern/vf/ma75as24.vf b/fonts/malvern/vf/ma75as24.vf Binary files differnew file mode 100644 index 0000000000..696f71260c --- /dev/null +++ b/fonts/malvern/vf/ma75as24.vf diff --git a/fonts/malvern/vf/ma75as7.vf b/fonts/malvern/vf/ma75as7.vf Binary files differnew file mode 100644 index 0000000000..25471c6b12 --- /dev/null +++ b/fonts/malvern/vf/ma75as7.vf diff --git a/fonts/malvern/vf/ma75at10.vf b/fonts/malvern/vf/ma75at10.vf Binary files differnew file mode 100644 index 0000000000..a1e69a9adc --- /dev/null +++ b/fonts/malvern/vf/ma75at10.vf diff --git a/fonts/malvern/vf/ma75at12.vf b/fonts/malvern/vf/ma75at12.vf Binary files differnew file mode 100644 index 0000000000..b563c1f7b5 --- /dev/null +++ b/fonts/malvern/vf/ma75at12.vf diff --git a/fonts/malvern/vf/ma75at14.vf b/fonts/malvern/vf/ma75at14.vf Binary files differnew file mode 100644 index 0000000000..23855dc6a8 --- /dev/null +++ b/fonts/malvern/vf/ma75at14.vf diff --git a/fonts/malvern/vf/ma75at18.vf b/fonts/malvern/vf/ma75at18.vf Binary files differnew file mode 100644 index 0000000000..1cb43ff335 --- /dev/null +++ b/fonts/malvern/vf/ma75at18.vf diff --git a/fonts/malvern/vf/ma75at24.vf b/fonts/malvern/vf/ma75at24.vf Binary files differnew file mode 100644 index 0000000000..a5b4f7812c --- /dev/null +++ b/fonts/malvern/vf/ma75at24.vf diff --git a/fonts/malvern/vf/ma75at7.vf b/fonts/malvern/vf/ma75at7.vf Binary files differnew file mode 100644 index 0000000000..ca1e2fe301 --- /dev/null +++ b/fonts/malvern/vf/ma75at7.vf diff --git a/fonts/malvern/vf/ma75au10.vf b/fonts/malvern/vf/ma75au10.vf Binary files differnew file mode 100644 index 0000000000..bd2c3cd158 --- /dev/null +++ b/fonts/malvern/vf/ma75au10.vf diff --git a/fonts/malvern/vf/ma75au12.vf b/fonts/malvern/vf/ma75au12.vf Binary files differnew file mode 100644 index 0000000000..25042bca6b --- /dev/null +++ b/fonts/malvern/vf/ma75au12.vf diff --git a/fonts/malvern/vf/ma75au14.vf b/fonts/malvern/vf/ma75au14.vf Binary files differnew file mode 100644 index 0000000000..489f9e66de --- /dev/null +++ b/fonts/malvern/vf/ma75au14.vf diff --git a/fonts/malvern/vf/ma75au18.vf b/fonts/malvern/vf/ma75au18.vf Binary files differnew file mode 100644 index 0000000000..992f801937 --- /dev/null +++ b/fonts/malvern/vf/ma75au18.vf diff --git a/fonts/malvern/vf/ma75au24.vf b/fonts/malvern/vf/ma75au24.vf Binary files differnew file mode 100644 index 0000000000..cc467ad87b --- /dev/null +++ b/fonts/malvern/vf/ma75au24.vf diff --git a/fonts/malvern/vf/ma75au7.vf b/fonts/malvern/vf/ma75au7.vf Binary files differnew file mode 100644 index 0000000000..e947bd665d --- /dev/null +++ b/fonts/malvern/vf/ma75au7.vf diff --git a/fonts/malvern/vf/ma76ar10.vf b/fonts/malvern/vf/ma76ar10.vf Binary files differnew file mode 100644 index 0000000000..3dd1401b99 --- /dev/null +++ b/fonts/malvern/vf/ma76ar10.vf diff --git a/fonts/malvern/vf/ma76ar12.vf b/fonts/malvern/vf/ma76ar12.vf Binary files differnew file mode 100644 index 0000000000..1d7d3db32c --- /dev/null +++ b/fonts/malvern/vf/ma76ar12.vf diff --git a/fonts/malvern/vf/ma76ar14.vf b/fonts/malvern/vf/ma76ar14.vf Binary files differnew file mode 100644 index 0000000000..d75c387eac --- /dev/null +++ b/fonts/malvern/vf/ma76ar14.vf diff --git a/fonts/malvern/vf/ma76ar18.vf b/fonts/malvern/vf/ma76ar18.vf Binary files differnew file mode 100644 index 0000000000..9d7214572d --- /dev/null +++ b/fonts/malvern/vf/ma76ar18.vf diff --git a/fonts/malvern/vf/ma76ar24.vf b/fonts/malvern/vf/ma76ar24.vf Binary files differnew file mode 100644 index 0000000000..bea00f88f2 --- /dev/null +++ b/fonts/malvern/vf/ma76ar24.vf diff --git a/fonts/malvern/vf/ma76ar7.vf b/fonts/malvern/vf/ma76ar7.vf Binary files differnew file mode 100644 index 0000000000..6213dd1c30 --- /dev/null +++ b/fonts/malvern/vf/ma76ar7.vf diff --git a/fonts/malvern/vf/ma76as10.vf b/fonts/malvern/vf/ma76as10.vf Binary files differnew file mode 100644 index 0000000000..70024ffeb5 --- /dev/null +++ b/fonts/malvern/vf/ma76as10.vf diff --git a/fonts/malvern/vf/ma76as12.vf b/fonts/malvern/vf/ma76as12.vf Binary files differnew file mode 100644 index 0000000000..48d7a1bb3e --- /dev/null +++ b/fonts/malvern/vf/ma76as12.vf diff --git a/fonts/malvern/vf/ma76as14.vf b/fonts/malvern/vf/ma76as14.vf Binary files differnew file mode 100644 index 0000000000..9f6c68c60d --- /dev/null +++ b/fonts/malvern/vf/ma76as14.vf diff --git a/fonts/malvern/vf/ma76as18.vf b/fonts/malvern/vf/ma76as18.vf Binary files differnew file mode 100644 index 0000000000..1fffc37eb4 --- /dev/null +++ b/fonts/malvern/vf/ma76as18.vf diff --git a/fonts/malvern/vf/ma76as24.vf b/fonts/malvern/vf/ma76as24.vf Binary files differnew file mode 100644 index 0000000000..3f63bec903 --- /dev/null +++ b/fonts/malvern/vf/ma76as24.vf diff --git a/fonts/malvern/vf/ma76as7.vf b/fonts/malvern/vf/ma76as7.vf Binary files differnew file mode 100644 index 0000000000..771b2fde85 --- /dev/null +++ b/fonts/malvern/vf/ma76as7.vf |