


Fine typography: Letters
Many of the effects defined in the Feature Registry are
intended to mimic the great old standards of typography. This and the
following chapters give a feature-by-feature description of the
effects in the Font Registry.
Letter Case
The Letter Case feature type is used to specify changes to the
case of letters (in scripts where case has meaning), in either a
contextual or a non-contextual manner. The settings of this feature
are exclusive: only one can be on at a time.
Upper and Lower Case
- Glyphs:
- None
- Effect:
- None
- Editor:
- TrueEdit will present a standard one-to-one non-contextual
editor, such as that used in the
"Small Capitals"
example. This editor should be left blank: the Upper and Lower
Case effect is used to remove other letter case effects, so it
should not apply any case changes itself.
- Notes:
- The Upper & Lower Case selector must be the default
setting as it leaves letters in whichever case the user has typed
them. Selecting "Upper and Lower Case" should have the effect of
removing any letter-case effects which have been imposed on text.
All Caps
- Glyphs:
- Lowercase and uppercase letters
- Effect:
- Substitutes uppercase glyphs for lowercase glyphs in all
contexts.
- Editor:
- A standard one-to-one non-contextual editor, as shown in
Example 1: Small Caps.
- Notes:
- If a glyph is not associated with its uppercase form in this
table, it cannot be converted to uppercase by the "All Caps"
effect. Any glyphs which do not have an uppercase form, such as
ligature characters which were directly entered by the user, will
be left unchanged and in lowercase.
![[Sticky!]](Sticky.gif)
Capitalisation effects cannot split up
ligatures, so it is important that the 'mort' table is
laid out in such a manner that capitalisation occurs before
ligature formation.
All Lower Case
- Glyphs:
- Lowercase and uppercase letters
- Effect:
- Substitutes lowercase glyphs for uppercase glyphs in all
contexts.
- Editor:
- A standard one-to-one non-contextual editor, as shown in the
"Small Capitals"
example.
Small Caps.
- Glyphs:
- Lowercase and small capital letters
- Effect:
- Substitutes small capital glyphs for lowercase in all
contexts.
- Editor:
- Shown in "Small
Capitals" example.
- Notes:
- In addition to small caps for the standard Roman alphabet set,
the international glyphs and punctuation, if present in a small
caps form, should be included in this table. Don't forget about oe
and ae diphthong ligatures and lesser-used letters such as eth and
thorn.
- Because the Macintosh character set includes fi and fl
ligatures which can be directly typed by the user, you will need
to provide two rather odd glyphs: small caps versions of the fi
and fl ligatures.
- Using a font editor, copy the small cap outlines of F and L
next to each other into a single glyph location. Repeat for F
and I.
- Using TrueEdit, map the standard Macintosh characters "fi"
(shift-option-5) and "fl" (shift-option-6) to these new glyphs.
This is so that when users select a stream of text which has
these <shift-option> ligatures in it, a small cap version
of FL and FI will be available.
- Note that these pseudo-ligatures are only used for
directly-entered fi and fl ligatures and not those created by GX
from normal text. If the mort table is correctly laid out,
capitalisation should occur before ligature formation, and since
no capital or small-caps ligatures are defined in the ligature
table, no ligatures will be formed.
Initial Caps
In this effect, each individual word is given a capital letter, as
shown below:

- Glyphs:
- Lowercase, uppercase, word delimiters
- Effect:
- When a lowercase glyph immediately follows a word delimiter,
that glyph's uppercase form is substituted for the lowercase
glyph.
- Editor:
- A unique contextual editor with three live areas:
- The editor has three live areas: for Spaces, for
Lower, and for Upper. You can put entries into
the Upper column only one at a time.
-
- Notes:
- This setting is intended to convert lower-case letters at the
beginnings of words into upper-case. The idea is, a Lower
immediately preceded by a Space will be changed to an Upper. Thus,
spaces really should contain anything that delimits a word,
including punctuation such as the open parenthesis shown above.
-
- Also note that there are no exceptions to this behavior, so
standard titling capitalization (ie., "of", "the" etc. left in
lowercase) won't result.
Initial Caps and Small Caps
This effect is a combination of the "Initial Capitalisation" and
"Small Capitals" effects: each word in the text is capitalised, then
the lower case letters are replaced with small capitals.

- Glyphs:
- Lowercase, small caps, word delimiters
- Effect:
- When a lowercase glyph immediately follows a word delimiter
that glyph is capitalised, other lower-case glyphs are replaced a
small cap glyph for the lowercase glyph.
- Editor:
- TrueEdit 1.0 does not support this effect.
Ligatures
A ligature is a single symbol which represents two or more
characters in ordinary type.
The Ligatures feature type permits selection from different ranges of
ligatures. These settings are cumulative: the user can have any
combination on or off.
Required Ligatures
- Glyphs:
- Component glyphs, ligatures
- Effect:
- When the component glyphs (up to three) occur together in
sequence, a ligature glyph is substituted for the sequence.
- Editor:
- Shown in the "Common
Ligatures" example.
- Notes:
- This setting should be used only for ligatures which are
linguistically required (such as in Arabic).
- Also, "required" doesn't mean that when the user sets this
option the application program says to itself "Oh, ligatures are
required for setting this text; I had better find a font with
ligatures in it". The font is in control: this effect means
"ligatures are required to use this font properly"
Common Ligatures
Common ligatures are ligatures which occur automatically for
typographic reasons and should be in every GX font:
- Glyphs:
- Component glyphs, ligatures
- Effect:
- When the component glyphs (up to 3) occur together in
sequence, a ligature glyph is substituted for the sequence.
- Editor:
- Shown in the "Common
Ligatures" example.
- Notes:
- This effect should be used for ligatures which usually appear
in well-set text.
-
- Although pre-desktop typographic standards would say that
ligatures such as those classed here as "common" are just as much
required for fine Roman typography as anything could be, the lower
standards of the typewriter era have prevailed, and these are left
as a user option. However, the effect is easily selectable.
-
- Even though "Common Ligatures" does not imply a default
condition, you can still have this effect on by default. If you
feel strongly enough about it, you can hack the 'mort'
table using the hex editor to guarantee that the common ligatures
cannot be turned off.
Rare Ligatures
Rare ligatures are glyphs which are ornamental and interesting,
but should be used with discretion. For a serif font they include:

For a sans-serif face they include:

These are, of course, particular to an individual font design and
the designer's taste: becuase these are purelyornamental
ligatures, there is no requirement for all or any of these ligatures
to be present in a font.
- Glyphs:
- Component glyphs, ligatures
- Effect:
- When the component glyphs (up to three) occur together in
sequence, a ligature glyph is substituted for the sequence.
- Editor:
- A standard many-to-one ligature editor, as shown in the
"Common Ligatures"
example.
- Notes:
- This setting should be used only for decorative or unusual
ligatures.
One way of deciding which ligatures are "common" and which are
rare is to class as "common" those ligatures which replace glyphs
which would otherwise collide or kern badly. Any other ligatures,
such as those with odd forms or prominent connecting strokes (such as
"ct") can be grouped together as "rare".
When using a font which contains ligatures the "Common" ligatures
will normally be turned on, while "Rare" ligatures will be usually
turned off.
Logos
![[Sticky!]](Sticky.gif)
- Glyphs:
- Component glyphs, ligatures
- Effect:
- When the component glyphs (up to three) occur together in
sequence, a logotype glyph is substituted for the sequence.
- Editor:
- A standard many-to-one ligature editor, as shown in the
"Common Ligatures"
example .
- Notes:
- This setting should be used only for ligatures representing
logotypes (e.g. trademarks).
Rebus Pictures
![[Sticky!]](Sticky.gif)
- Glyphs:
- Component glyphs, ligatures
- Effect:
- When the component glyphs (up to 3) occur together in
sequence, the sequence is replaced with a rebus picture glyph. For
example the word "I" could be replaced with a picture of an eye.
- Editor:
- A standard many-to-one ligature editor, as shown in the
"Common Ligatures"
example.
- Notes:
- This setting should be used only for ligatures that are
pictures representing whole words or syllables.
Diphthong Ligatures
Diphthong ligatures include: oe ae AE OE.

- Glyphs:
- Component vowels, diphthongs
- Effect:
- When the component glyph pair occurs in sequence, a diphtong
ligature glyph is substituted for the sequence.
- Editor:
- A standard many-to-one ligature editor, as shown in the
"Common Ligatures"
example.
- Notes:
- Diphthongs are single glyphs which combine two vowels
(although the editor is the same as the others and can take three
inputs if forced). Unlike most ligatures, however, diphthongs
often have a particular linguistic relevance. The most common ones
are æ, oe, AE, and OE. Different languages treat diphthongs
differently. This effect lets fonts form them automatically
without making the user know the hidden keys.
-
- When using diphthongs, however, the system is not very clever.
Because it cannot have Greek, Latin, Dutch, French, and
miscellaneous Scandinavian dictionaries inside, a dipthong is
applied for every occurance of the corresponding vowel pair, and
not just those in specific words. What happens in a sentence like
"At the hoedown, between dances, Boethius talked about the
Boer war, and I told him how Caedmus brought the alphabet to
Boeotia."
is up to the user - normally he or she would select words which
should have diphtongs (or even individual pairs of letters) and
apply the "Diphtong Ligatures" effect just to those selections.
-
- The adventurous can, of course, add contextual diphthongs via
the hex editor.
In addition to all of the above, some ligatures may lend
themselves to having alternate swash forms, for line endings or
beginnings, such as: ft, ct, st, nt, tt, oe, ae, AE, OE. Thus, in the
general order of the 'mort' table effects, diphtong and
ligature formation should come before swashes.
Overlapping Characters
The Overlapping Characters feature is intended to provide
"clean-up" assistance to fonts which find themselves with too many
swashes which run over each other. The feature has one setting, which
can be either on or off.
The Overlapping Characters feature type permits the user to prevent
the collision of long tails on characters with other characters. It
is typically used in combination with the Smart Swashes feature,
discussed in a later section.
Prevent Overlap
Example

Glyphs:
- Swash forms, normal forms, colliders
- Effect:
- When a swash form glyph is followed by a collider glyph within
a specified number of glyphs (determined by the threshold), the
normal glyph is substituted for the swash form glyph.
- Editor:
- As shown in the
"Prevent Overlap"
example.
- Notes:
- This feature allows only the left-hand glyph to revert to a
normal form. That's because of the way TrueEdit implements it. You
could, however, make a corresponding table processed in descending
glyph order to handle the right-hand glyph, then use the hex
editor to tie them together.
Typographic Extras
The Typographic Extras feature type represents a collection of
small effects that are associated with fine typography.
The features are cumulative: none, all, or any combination may be on
at one time.
Hyphens to Em Dash
This feature is designed to address the long-held typewriter
practice of representing a long dash by two hyphens by changing
them to match the typographic practice of using the long dash.

- Glyphs:
- Hyphen, em dash
- Effect:
- When two hyphen glyphs appear together, they are replaced with
a single em-dash glyph.
- Editor:
- A dedicated editor with two live areas, for exactly two
glyphs: the hyphen and the em dash.
Hyphen to En Dash
This feature is designed to automate two uses of the en dash. An
en dash is used, with spaces on either side, to represent a pause
or to set off a clause. It is also used, without spaces on either
side, to represent a range of numbers or dates.

- Glyphs:
- Hyphen, em dash, spaces, digits
- Effect:
- When a hyphen glyph occurs between two space glyphs or between
two digit glyphs, substitute the en dash glyph for the hyphen
glyph.
- Editor:
- A dedicated editor with four live areas:
- The top two areas are reserved for two specific glyphs: the
hyphen and the en dash. On the bottom is an area for spaces, and
on the right for digits. Remember to include breaking and
non-breaking space glyphs, and all cases of numerals present in
the font.
- Notes:
- The Mathematical Extras setting "Hyphen to Minus" also affects
a hyphen which occurs between spaces. If both effects are on, then
whichever one is first in the '
mort
' table will win.
Unslashed Zero

- Glyphs:
- Slashed zero, unslashed zero.
- Effect:
- Substitutes unslashed zero glyphs for slashed zero glyphs in
all contexts.
- Editor:
- A standard one-to-one non-contextual editor, as shown in the
"Small Capitals"
example.
- Notes:
- This feature is intended for use with some
programming-oriented fonts which have a slash through the glyph
for the digit zero. This slash helps distinguish the zero from
other similar glyphs (such as the capital letter O), but in cases
where there is little ambiguity it is preferable to use the
unslashed zero.
This setting makes sure the unslashed zero is always used, even
if the font designates the slashed zero as default. Of course use
of this effect assumes that the unslashed zero actually exists in
the font.
On the other hand, if the font has a slashed zero, but the
designer wishes to have theunslashed zero as the default
zero glyph, then the "Unslashed Zero" feature must be turned on by
default. This will mean that non-GX users will get a slashed zero,
rather than the unslashed one, but that's something they'll just
have to live with until they upgrade.
Form Interrobang

- Glyphs:
- Exclamation mark, question mark, interrobang
- Effect:
- When an exclamation mark glyph and a question mark glyph
appear together (in either order), a single "interrobang" glyph is
substituted for the pair.
- Editor:
- TrueEdit 1.0 does not support this effect.
- Notes:
- The interrobang is a punctuation mark invented in the
1960s which combines the form and the sense of an exclamation mark
(or "bang") and a question mark (or "interrogation mark"). The
name is pronounced
"interro'bang", incidentally.
Smart Quotes
This feature is designed to address the typewriter practice of
using neutral quotes instead of the more appropriate "curly" quotes.

- Glyphs:
- Neutral quotes (' "), open quotes, close quotes, spaces.
- Effect:
- All neutral quote glyphs are changed to either open quote
glyphs or close quote glyphs. When a neutral quote glyph appears
after a space glyph or after an open quote glyph, it is changed to
an open quote glyph. Otherwise, it is changed to a close quote
glyph.
- Editor:
- There is no editor for this effect. TrueEdit collects the
necessary information automatically when you add the effect.
-
- TrueEdit uses the standard Roman TrueType glyph ordering to
identify the neutral quote, open quote, and close quote glyphs. It
uses the font's properties table (
prop
) to identify
the spaces and other whitespace glyphs. If the font has no
properties table, TrueEdit can also use the standard glyph
ordering to identify the whitespace glyphs. If this happens, you
will see the message below:
Because TrueEdit depends on the standard
Roman glyph ordering to implement this effect, it is not
recommended for non-Roman fonts.
-
Notes:
- Apostrophes are neither recognised nor handled by this effect:
in most cases an apostrophe is treated as a neutral quote, which
gives correct results for possessive cases of nouns and for
contractions. Words which begin with an apostrophe, such as
abbreviations like 'cos, are not handed correctly (the apostrophe
is changed to an opening quote). Fortunately, such words are rare
in written English. This is just as well, because the Smart Quotes
feature makes it very difficult for the user to insert proper
apostrophes manually in these cases, although as a last resort,
the keyboard "closing quote" character
(shift-option-]) can be used.
The results of the Smart Quotes effect are typographically
correct for most English language usage, but may not be correct
for other languages. Even if the other language uses the same
punctuation for quotation as English, the problem of words
starting with apostrophes still arises.
Unfortunately, quotation marks are the one typographical feature
that varies wildly, even across closely-related European
languages. Currently, TrueEdit's implementation of the Smart
Quotes feature has no concept of non-English language punctuation,
so users of these languages may still have to put in quotes
manually when using fonts developed with TrueEdit.



Arleigh Movitz (movitz@apple.com)
Dave Opstad (opstad@apple.com)
Kristian Walsh (walsh.k@euro.apple.com)