The Greeks,
by peculiar good fortune and natural enlightenment of mind,
had no classics but themselves.
- Charles Augustin Saint-Beuve
Technical (not literary) Greek fonts for the VARKON parametric CAD system, derived from the public domain glyphs of Dr. Allen V. Hershey and others:
com-lemur-vkf-hershey-uniplex_cartographic_greek_vkf0.FNT
com-lemur-vkf-hershey-uniplex_normal_greek_vkf0.FNT
com-lemur-vkf-hershey-duplex_indexical_greek_vkf0.FNT
com-lemur-vkf-hershey-duplex_normal_greek_vkf0.FNT
To use one of these fonts, copy the font file into your $VARKON_ROOT/cnf/fnt directory and rename it to some valid but unused font number; e.g., "10.FNT". Then, in your MBS text statements, use the "tfont" attribute to specify this font; e.g.:
text(#1,vec(0,0),0,"some text": tfont=10);
This page appears in two locations on the Web:
1. As a part of the Notebook "Exploring Dr. Hershey's Typography," on Dr. David M. MacMillan's CircuitousRoot website. If you're already reading it as a part of this Notebook, it needs no further introduction.
2. As a standalone document, together with a number of font data files in the same directory, at: http://www.lemur.com/vkf/hershey/greek/index.html. (It is at "lemur.com" rather than much longer "circuitousroot.com" because "lemur.com" is easier to spell.) This is the "canonical" location for this file and for the font data it references.
If you've just encountered it at this second location, you may have been looking either for information on the glyphs of Dr. Allen V. Hershey (often called, inaccurately, "the Hershey fonts") or for fonts for the VARKON parametric CAD system. If you're interested in Dr. Hershey's work, please consult the full Notebook. If you're just looking for more fonts for VARKON, well, what's here is here. If you have further questions as to why what's here is here, please consult the full Notebook.
This page and these font files may also appear in other places. Everything here is either in the public domain or is licensed under the terms of the Free Software Foundations's GNU® Free Documentation License, as indicated. They may be copied anywhere the nature of the public domain or the terms of the GNU FDL (as appropriate to each type of material) permit. Courtesy, at least to living readers, would indicate that copies ought to contain a reference to the "canonical" location.
The Hershey Greek glyphs are mapped here into four fonts. Each tries to approximate to some degree the default VARKON font 0. Within this set of four fonts, there are fonts for the "Uniplex Cartographic," "Uniplex Normal," "Duplex Indexical," and "Duplex Normal" ranges of Hershey glyphs. (The Hershey "Triplex" ranges of glyphs contain no Greek, alas.)
The VARKON fonts 2 and 3 implement an ISO® 8859-1 (Latin 1) mapping, fonts 4 and 5 implement a "PC" mapping, and font 6 (undocumented) implements ISO 8859-2 (Latin 2) In content, these differ from fonts 0 and 1 mostly in the non-ASCII positions (character codes greater than 127). Since I'm not mapping these positions, in order to keep open the possibility of the use of a UTF-8 encoding with these fonts (even though at this time VARKON does not use UTF-8), I haven't created fonts which parallel them.
For common punctuation, the primary difference between VARKON fonts 0/1 and fonts 2/3/4/5/6 is that the in these latter fonts the character sequences "[\]" and "{|}" appear in their "normal ASCII" positions after the uppercase and lowercase letters, while in fonts 0/1 they appear in the first block of character codes (positions 1, 2, 3, and 8, 9, 8, which are control code positions in ASCII). Characters in the difficult-to-type ranges 0-31 & 127 may be specified in MBS using the chr() function.
The four fonts come in a total of three sizes: "cartographic," "indexical," and "normal." The "cartographic" size is quite small (it was intended for use on maps, I believe). The "indexical" size is of moderate height (for use in super- and sub- script indexes, I suppose). The "normal" size is, well, normal. The "uniplex" fonts are drawn for the most part with single lines, while the "duplex" fonts are drawn with doubled lines. All of this is explained in much greater detail in the Notebook.
The fonts are named in a cumbersome but descriptive style modelled after that used in the Java® programming language. In this scheme, the name begins with our domain name (lemur.com) in reverse (thus, "com.lemur"; this is another reason to make the canonical location of these fonts lemur.com rather than circuitousroot.com), followed by the directory path to the font description file. The font description file itself is named with a subset of the full set of descriptive components for the Hershey glyphs out of which it is built and the VARKON font which it roughly mirrors.
For example:
com-lemur-vkf-hershey-uniplex_cartographic_greek_vkf0
Reading from left to right, the name starts out with our domain name, reversed: "com-lemur". As dots may be misinterpreted as implying filename suffixes, I've used the hyphen character instead. Then comes the fully qualified pathname to the font description file: "vkf-hershey", again using hyphens (rather than forward slashes, in this case). "vkf" stands for "VARKON Fonts," of course, and the "Hershey" is an optimistic indication that I might in the future do non-Hershey VARKON fonts. The font itself is taken from glyphs in ranges which are Uniplex, Cartographic, Taper0, and Lineface (see the section entitled "Organizing Principles within the Occidental Glyphs" in the Notebook "Exploring Dr. Hershey's Typography," for an explanation of these terms). This may be specified more concisely here by using just two of these: Uniplex (which is actually redundant for this particular font; there are no non-Uniplex Cartographic glyphs) and Cartographic. The font contains Greek characters, but otherwise is intended roughly to mirror VARKON font 0. Putting all of this together: "uniplex_cartographic_greek_vkf0". To distinguish spaces between words in this filename from directory levels and DNS separators as used earlier in the font name, I use an underscore rather than a hyphen here.
Each font further has a revision level. This is simply noted in a comment in the font description file. There is no place in the VARKON font data file format for a revision field, so the only way to check on a revision number is to compare the .FNT file against those of known revision levels. To assist in this, I'll note the sha1sums of the .FNT files here. (I'm not using sha1sum (the Secure Hash Algorithm) out of any security considerations; it is simply a convenient checksum program.)
Note: The font number for nonstandard VARKON fonts such as these is, itself, nonstandard. The suggestion from the VARKON developers is to start numbering them at 10. All of the images below were generated with the font set to be font number 10.
Font Name: com-lemur-vkf-hershey-uniplex_cartographic_greek_vkf0
Glyph Types: Hershey Uniplex Cartographic Taper0 Lineface
Characters Represented: Greek Uppercase and Lowercase, Arabic Digits, and
Punctuation & Symbols approximating VARKON Font 0.
Revision: 0, sha1sum: a61563cc4f38854ef38e1c3c39c53651daec1eea
Font Description File: com-lemur-vkf-hershey-uniplex_cartographic_greek_vkf0
Font Data (.FNT) File: com-lemur-vkf-hershey-uniplex_cartographic_greek_vkf0.FNT
This image: com-lemur-vkf-hershey-uniplex_cartographic_greek_vkf0.png
Font Name: com-lemur-vkf-hershey-uniplex_normal_greek_vkf0
Glyph Types: Hershey Uniplex Normal Taper0 Lineface
Characters Represented: Greek Uppercase and Lowercase, Arabic Digits, and
Punctuation & Symbols approximating VARKON Font 0.
Revision: 0, sha1sum: 677bec9eb2e1ced1e9246a84337e78d96b7d3fe1
Font Description File: com-lemur-vkf-hershey-uniplex_normal_greek_vkf0
Font Data (.FNT) File: com-lemur-vkf-hershey-uniplex_normal_greek_vkf0.FNT
This image: com-lemur-vkf-hershey-uniplex_normal_greek_vkf0.png
Font Name: com-lemur-vkf-hershey-duplex_indexical_greek_vkf0
Glyph Types: Hershey Duplex Indexical Taper0 Lineface
Characters Represented: Greek Uppercase and Lowercase, Arabic Digits, and
Punctuation & Symbols approximating VARKON Font 0.
Revision: 0, sha1sum: e7fa02ac7851bc9efaa1de2cd5845022eca5edc8
Font Description File: com-lemur-vkf-hershey-duplex_indexical_greek_vkf0
Font Data (.FNT) File: com-lemur-vkf-hershey-duplex_indexical_greek_vkf0.FNT
This image: com-lemur-vkf-hershey-duplex_indexical_greek_vkf0.png
Font Name: com-lemur-vkf-hershey-duplex_normal_greek_vkf0
Glyph Types: Hershey Duplex Normal Taper0 Lineface
Characters Represented: Greek Uppercase and Lowercase, Arabic Digits, and
Punctuation & Symbols approximating VARKON Font 0.
Revision: 0, sha1sum: b86c5237551636fbacb56533f208894a441397ef
Font Description File: com-lemur-vkf-hershey-duplex_normal_greek_vkf0
Font Data (.FNT) File: com-lemur-vkf-hershey-duplex_normal_greek_vkf0.FNT
This image: com-lemur-vkf-hershey-duplex_normal_greek_vkf0.png
Encoding Greek can be complex and subtle, as the language employs several auxiliary marks, has characters which vary in form depending upon their position, and includes in its most general form several now archaic characters. The ordinary range of unadorned Greek characters employed in scientific and technical work, however, is much easier.
The most modern standard way to encode Greek characters is Unicode®/ISO-10646. However, the Unicode handling of Greek is not without difficulties. Initially it had only one range of Greek, suitable for modern "monotonic" Greek but not for the "polytonic" Greek of tradition. Its handling of monotonic Greek is based in turn on ISO-8859-7 (equivalent to Greek National Standard ELOT 928) (Unicode 1.0, Vol. 1, p. 42; RFC 1947). However, Unicode monotonic Greek puts the main alphabetic sequences starting at U+0391 (ALPHA) and U+03B1 (alpha). Since the Greek coding range starts at U+0370, this is equivalent to 0x21 (0d33) and 0x41 (0d65) (Unicode 1.0, Vol. 1, p. 200). This is out of sequence with the equivalent ASCII, which starts alphabetic characters with 0d65 (A) and 0d97 (a) Actually, Unicode maps lowercase Greek into the same relative position as uppercase Latin. Writing a VARKON string at an ASCII keyboard for the first four Greek letters (capital Α Β Γ Δ) starting at 0d33 would mean writing: !"#$ Writing the first four Greek letters in lowercase (α β γ δ) would require writing, in uppercase: ABCD
Instead, I'll employ a mapping which aligns the main alphabetic ASCII and Greek characters as much as possible. For example, the first four characters would be entered as "ABGD" or "abgd". This must necessarily involve some compromise.
The mapping of Latin to Greek characters here for α to ω is based in part on the "Beta Code" developed by David W. Packard and used by the Thesaurus Linguae Graecae (TLG®) (I am assuming that the Beta Code for γ is "G" rather than "C" as is published in The 2003 TLG Beta Code Manual.) Note that this mapping is not itself Beta Code, which is really quite a different thing.
Regrettably, the key mapping used in the "greek_utf-8" keymap for the vim text editor (I am a longtime user of vi/vim) differs from Beta Code. I chose to stick with a Beta Code like pattern here, though, because it is more generally known.
Here is the mapping of Greek used in these fonts.
ASCII Encoding Used Here | Hershey Glyph Number | ||||||||
Character (rendered by your browser; not a Hershey glyph) |
Character Name | Unicode | ASCII decicmal | ASCII hexadecimal | ASCII character | Uniplex Cartographic | Uniplex Normal | Duplex Indexical | Duplex Normal |
Α α | alpha | U+0391, U+03B1 | 65, 97 | 41, 61 | A, a | 27 | 527, 627 | 1027, 1127 | 2027, 2127 |
Β β | beta | U+0392, U+03B2 | 66, 98 | 42, 62 | B, b | 28 | 528, 628 | 1028, 1128 | 2028, 2128 |
Γ γ | gamma | U+0393, U+03B3 | 71, 103 | 47, 67 | G, g | 29 | 529, 629 | 1029, 1129 | 2029, 2129 |
Δ δ | delta | U+0394, U+03B4 | 68, 100 | 44, 64 | D, d | 30 | 530, 630 | 1030, 1130 | 2030, 2130 |
Ε ε | epsilon | U+0395, U+03B5 | 69, 101 | 45, 65 | E, e | 31 | 531, 631 | 1031, 1131 | 2031, 2131 |
Ζ ζ | zeta | U+0396, U+03B6 | 90, 122 | 5A, 7A | Z, z | 32 | 532, 632 | 1032, 1132 | 2032, 2132 |
Η η | eta | U+0397, U+03B7 | 72, 104 | 48, 68 | H, h | 33 | 533, 633 | 1033, 1133 | 2033, 2133 |
Θ n/a | THETA, script theta | U+0398, U+03D1 | 81, 113 | 51, 71 | Q, q | 34 | 534, 634 | 1034, 1134 | 2034, 2134 |
Ι ι | iota | U+0399, U+03B9 | 73, 105 | 49, 69 | I, i | 35 | 535, 635 | 1035, 1135 | 2035, 2135 |
Κ κ | kappa | U+039A, U+03BA | 75, 107 | 4B, 6B | K, k | 36 | 536, 636 | 1036, 1136 | 2036, 2136 |
Λ λ | lambda | U+039B, U+03BB | 76, 108 | 4C, 6C | L, l | 37 | 537, 637 | 1037, 1137 | 2037, 2137 |
Μ μ | mu | U+039C, U+03BC | 77, 109 | 4D, 6D | M, m | 38 | 538, 638 | 1038, 1138 | 2038, 2138 |
Ν ν | nu | U+039D, U+03BD | 78, 110 | 4E, 6E | N, n | 39 | 539, 639 | 1039, 1139 | 2039, 2139 |
Ξ ξ | xi | U+039E, U+03BE | 67, 99 | 43, 63 | C, c | 40 | 540, 640 | 1040, 1140 | 2040, 2140 |
Ο ο | omikron | U+039F, U+03BF | 79, 111 | 4F, 6F | O, o | 41 | 541, 641 | 1041, 1141 | 2041, 2141 |
Π π | pi | U+03A0, U+03C0 | 80, 112 | 50, 70 | P, p | 42 | 542, 642 | 1042, 1142 | 2042, 2142 |
Ρ ρ | rho | U+03A1, U+03C1 | 82, 114 | 52, 72 | R, r | 43 | 543, 643 | 1043, 1143 | 2043, 2143 |
Σ σ | sigma | U+03A3, U+03C3 | 83, 115 | 53, 73 | S, s | 44 | 544, 644 | 1044, 1144 | 2044, 2144 |
Τ τ | tau | U+03A4, U+03C4 | 84, 116 | 54, 74 | T, r | 45 | 545, 645 | 1045, 1145 | 2045, 2145 |
Υ υ | upsilon | U+03A5, U+03C5 | 85, 117 | 55, 75 | U, u | 46 | 546, 646 | 1046, 1146 | 2046, 2146 |
Φ [n/a] | PHI, script phi | U+03A6, U+03C6 | 70, 102 | 46, 66 | F, f | 47 | 547, 647 | 1047, 1147 | 2047, 2147 |
Χ χ | chi | U+03A7, U+03C7 | 88, 120 | 58, 78 | X, x | 48 | 548, 648 | 1048, 1148 | 2048, 2148 |
Ψ ψ | psi | U+03A8, U+03C8 | 89, 121 | 59, 79 | Y, y | 49 | 549, 649 | 1049, 1149 | 2049, 2149 |
Ω ω | omega | U+03A9, U+03C9 | 87, 119 | 57, 77 | W, w | 50 | 550, 650 | 1050, 1150 | 2050, 2150 |
[n/a] | non-tailed delta | none | not used | 183 | 683 | ||||
[n/a] | lunate or straight epsilon | U+03F5 | 27 | 1B | ESC | 184 | 684 | 1184 | 2184 |
θ | non-script lowercase theta | U+03B8 | 28 | 1C | FS | 185 | 685 | 1185 | 2185 |
φ | non-script lowercase phi | U+03D5 | 29 | 1D | RS | 186 | 686 | 1186 | 2186 |
[n/a] | final sigma | U+03C2 | 30 | 1E | US | 187 | 687 | 1187 | 2187 |
[n/a] | not sure | none | not used | 2190 or 2197 |
The Hershey glyph ranges contain several alternative Greek glyphs. I've mapped four of these into positions 27, 28, 29, and 30 of the character code space. These positions are unused in VARKON fonts 0 and 1. (Positions j, J, v, and V are also unused in the present mapping, but using these raises compatibility issues with the (non-Beta Code) "greek_utf-8" keyboard mapping for the vim(1) text editor as well as other keyboard mappings on which it is based.)
The first of these glyphs, present only in the Cartographic and Uniplex Normal ranges, is a delta without the "tail," perhaps as might more easily be written on a blackboard. I don't use this glyph, although as the Greek fonts here are really suited only for technical rather than literary use, perhaps I should.
The second alternative glyph appears to be an alternative epsilon which more closely resembles the mathematical sign for "element of." I've mapped this to position 27. This might be the "straight" or "lunate" epsilon identified by Unicode as U+03F5.
The third of these is a non-script lowercase theta. I've mapped it to position 28. This is the Unicode (version 2.0 and later) U+03B8 character, which in current Unicode is part of the normal alphabetic run. In current Unicode, the script theta is now outside of the normal alphabetic run, at U+03D1, and is identified as a technical symbol. (These two were in switched positions in the original Unicode version 1.0.)
The fourth of these is a non-script lowercase phi. I've mapped it to position 29. This is the Unicode (version 2.0 and later) U+03C6 character, which in current Unicode is part of the normal alphabetic run. In current Unicode, the script theta is now outside of the normal alphabetic run, at U+03D5, and is identified as a technical symbol. (These two were in switched positions in the original Unicode version 1.0.)
The fifth of these is a conventional final sigma (Unicode U+03C2). I've mapped it to position 30.
Finally, the Duplex Indexical Taper1 Roman & Italic Ligatures and Extra Greek range (Range No. 71) contains a symbol at Hershey glyph number 2190 (in the GNU Plotutils distribution) or 2197 (in Hershey's "Calligraphy for Computers") which might be an alternative and more script-like rho. Or not. I've not mapped it.
In these Greek fonts, the non-ASCII positions from 128 to 255 (decimal) are unused. The use of characters in this space makes Unicode/UTF-8 migration difficult. Even though VARKON does not support Unicode/UTF-8, I'm omitting them in the hope that in the future it will.
Since Greek characters often are used for mathematics, a good argument could be made for mapping Hershey mathematical symbols into unused space in the character maps. Were this done, it might be useful to consult the character mapping used by Prof. Don Knuth in his TeXTM typesetting system, as that system is used by many mathematicians. I have not done this mapping, though.
The font mappings described herein are in the public domain.
The quotation from Saint-Beuve is from his essay "What is a Classic?" as it appears, translated by E. Lee, in Volume 32 of "The Harvard Classics," Literary and Philosophical Essays. Ed. Charles W. Eliot. NY: P. F. Collier & Son Company, 1910. pp. 121-122. It is in the public domain.
Important disclaimers of warranty and liability in the presentation of public domain material.
The rest of this page is copyright © 2003-2005 by David M. MacMillan & Rollande Krandall.
Permission is granted to copy, distribute and/or modify copyrighted portions of this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts and no Back-Cover Texts. A copy of the license is included in the file entitled "fdl.txt" (GNU Free Documentation License).
The computer programs here are also present as files (in the original distribution, at least) and are released, as indicated in those files, under the GNU General Public License Version 2 or (at your option) any later version. A copy of this license is included in the file entitled "gpl.txt" (GNU General Public License).
Note: Those portions of this document which are in the public domain, if any, may be copied freely. The distribution of these public domain portions is subject to all of the disclaimers of warranty and liability noted herein.
This work is distributed WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Free Documentation License for more details.
You should have received copies of the GNU Free Documentation License and the GNU General Public License along with this work; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
This work is distributed "as-is," without any warranty of any kind, expressed or implied; without even the implied warranty of merchantability or fitness for a particular purpose.
In no event will the author(s), editor(s), or publisher(s) of this work be liable to you or to any other party for damages, including but not limited to any general, special, incidental or consequential damages arising out of your use of or inability to use this work or the information contained in it, even if you have been advised of the possibility of such damages.
In no event will the author(s), editor(s), or publisher(s) of this work be liable to you or to any other party for any injury, death, disfigurement, or other personal damage arising out of your use of or inability to use this work or the information contained in it, even if you have been advised of the possibility of such injury, death, disfigurement, or other personal damage.
CircuitousRoot & circuitousroot.com are service marks of
David M. MacMillan
&
Rollande Krandall.
lemur.com is a service mark of
Rollande Krandall and
David M. MacMillan.
ISO is a registered trademark of the
International
Organization for Standardization.
GNU is a registered trademark of the
Free Software Foundation.
Java is a registered trademark of
Sun Microsystems, Inc.
TeX is a trademark of the
American Mathematical Society.
TLG
is a registered trademark of the
Regents of the
University of California.
Unicode is a registered trademark of
Unicode, Inc.
W3C is a trademark (registered in numerous countries) of the
World Wide Web Consortium;
marks of W3C
are registered and held by its host institutions
MIT,
ERCIM, and
Keio.
Other trademark recognition.
Presented originally by CircuitousRootSM and lemur.com.SM
In case you're lost, here is a slightly more extensive than usual set of links.
For further information on VARKON, see:
http://www.tech.oru.se/cad/varkon/
The next four links take you
to the location in this Notebook one level above this present page
and then upward to the CircuitousRoot home page.
These links are fully qualified (not relative) URLs,
so they should work from either version of this page
(Notebook or canonical).
VARKON Fonts from the Hershey Glyphs
Exploring Dr. Hershey's Typography
CircuitousRoot Notebooks
CircuitousRoot
The final pair of links takes you to
the "canonical" location for my VARKON/Hershey fonts:
http://www.lemur.com/vkf/hershey/index.html
and then to the lemur.com home page:
http://www.lemur.com/index.html