TrueEdit automatically manages many of the details of adding and editing glyph effects, but at the price of some flexibility.
Three tables are involved in determining a font's glyph effects:
'mort
', 'feat
', and
'name
'.
The feat
table defines each feature, such as "letter
case" and whether it's a radio or a checkbox. The mort
table defines the individual feature settings, such as "upper &
lower case" or "small caps".
To GX, mort
is the master table. feat
just
defines the interface and maps to the name
table.
In addition to these, TrueEdit also inserts temporary tables into
fonts it edits. All of these tables are called "TRnn
", and none are required by the end-user of a font. The TRnn
tables hold the information displayed in the feature editor windows.
TrueEdit uses this information to edit and generate the mort
subtables in a font because it cannot decipher the mort
information.
This isn't a flaw in TrueEdit: some of the effects possible in GX
fonts just cannot be "reverse-engineered" back to an editable form:
given an particular effect, it is impossible to determine how that
effect was defined. Because the TRnn tables contain no extra
information, if you remove them from a font, the font can still be
used by GX - such a font is known as a stripped font. However,
if you try to edit such a stripped font using TrueEdit, you will not
be able to edit certain parts of the font file, since the information
which TrueEdit needs to show its editor windows has been removed.
Appendix C lists the TrueEdit tables and the information contained in
them.
TrueEdit takes care of feat
(organization, defaults,
etc.) and most of name
(adding new name strings using
the latest names from the registry) for you.
TrueEdit also maintains entries in the name
table which
describe the features and settings you add to your font. Although the
name strings themselves appear in the name
table, they
are indexed in the feat
table; thus, it is very
important that the mort
, feat
, and
name
tables remain together in the font where they were
built.
TrueEdit automatically adds empty settings where appropriate
TrueEdit makes some assumptions about how the mort
table is laid out. If these assumptions are not valid for a
particular font, then TrueEdit will not be able to open the
mort
table properly.
TrueEdit does not check the layout of the mort
table
first; it just goes ahead and tries to open it, and typically hangs
or bombs if the layout of the table is not as expected.
If a font meets these assumptions then, even without
'TRnn' tables, you can open the mort
list
window, reorder features, and set defaults.
In particular for people who want to do wild stuff, this means you
may have to forego the option of using TrueEdit's nice editors in the
future.
These assumptions are described in detail in
Appendix C.
One assumption results in an important limitation of TrueEdit:
A mort table built with TrueEdit can define at most 32 glyph effects.
This total of 32 glyph effects does not include empty settings.
There are also a few other caveats concerning glyph-effect editing in
TrueEdit - these are set out in
Appendix C.
A few QuickDraw GX features are not supported by TrueEdit 1.0; notice
is given in the discussion of that effect. Even if a GX feature is
not directly supported by TrueEdit, the table defining that feature
may still be edited using the Hex Editor.
TrueEdit has difficulty with some aspects of right-to-left fonts, such as Arabic and Hebrew. Some aspects of the tool are confusing or awkward to use with such fonts, while others may not operate properly.
This is not to say that these things are impossible, but you should at least understand that this is a task for an engineer, working together with a font designer, rather than for the casual user.
To create a new glyph metamorphosis table:
TrueEdit automatically adds a feat
table (in addition to
the mort
you asked for).
To add an effect:
mort
table, or use the command
Open Table from the File menu.mort
subtables.name
table, you can see that
TrueEdit has automatically added the name entries necessary for
this feature and setting (the last two in this picture).(The "All Typographic Features" is a general feature which acts as
a master switch for all glyph effects in the font. TrueEdit adds it
automatically when you add the first glyph effect to the
mort
table.)
Editing effects uses the basic operations involving the glyph
palette, discussed in Introduction to
TrueEdit.
To open the subtable editing window, double-click a setting in the
Metamorphosis Subtables window, or choose Edit Entry from
the Edit menu.
Each effect editor window looks different, depending on the setting.
All the mort
table effect editing windows scroll and
resize, and use the Glyph Palette.
Note that the editors show the glyph numbers in their own windows,
and the Size menu applies, just as for the glyph palette. You can
also resize most of the windows.
Following are four examples of editing glyph effects in TrueEdit.
Note that:
There is no example of a rearrangement effect, because the only registered effect which demonstrates rearrangement isn't implemented in TrueEdit!
Small captitals is a common typographic effect in which the "lower case" letters in a piece of text are replaced with small versions of the capital letters. The illustruation below shows this effect:
To add small capitals to a font, the font must have a set of
"small capital" glyphs in its glyph-table. Using the "Small Caps"
feature editor, you can then tell GX which it small capital glyphs it
should substitute for the normal lowercase glyphs when the "Small
Caps" feature is enabled.
To create the small capitals feature, follow these steps:
Ligatures are glyphs which represent two or more letters. Ligatures are used in place of common letter combinations which would not kern very well if left separate. In English-language typography, the most frequently-occurring ligatures are those shown below:
... although that is probably the first and last time those
particular words will find themselves together in the same
sentence!
To set up the common ligatures for a font, follow these steps:
Unlike in other editors in TrueEdit, all of the columns of this
editor are live and you can add glyphs to this table in any order.
Thus you can easily add all the ligatures first, then the glpyhs
which construct them. Also unlike elsewhere in TrueEdit, you can
drag multiple glyphs to the output ("Ligature") column.
Other than this, adding Common Ligatures is pretty much the same as Small Capitals.
The "Diagonal Fractions" effect replaces numeric characters to the left of a fraction bar with their superior form, and those to the right of a fraction bar with their inferior form, as shown in the diagram below.
Note that this is a contextual effect: whether or not a number is
converted to a superior or inferior depends on whether it is to the
left or right of the fraction bar.
The fraction bar is a special type of slash character which is
only used to produce diagonal fractions. The fraction bar is
not the same as a forward slash: in the diagram above, the
date ("19/05/96") has not been converted into a fraction because
normal slashes were used between the numbers. The fraction bar tends
to move around on keyboard layouts, but on US keyboards it can be
typed as Shift-Option-1 (one).
The big difference when defining this effect is that all combinations of the inputs and outputs are not expressly shown, but by following the directions below, you should get the appropriate results.
Overlap is an undesirable effect that can sometimes occur when
using swash characters. The descenders or ascenders of letters after
an initial swash character can collide with the swash, as
shown in the example below.
In the first line of text, the y in "Lyon" and the first j in
"Ljubljana" have collided with the long swashes on the initial Ls.
The second line shows a more aesthetically pleasing version of the
line: the swashed Ls have been replaced with their normal forms. Note
that this is a contextual substitution: the Ls were only
reverted to their normal forms because they were followed by a
collider glyph (a character form which would cross or touch
the swash on the Ls) - any swashed L's which are not followed
by a collider glyph will remain swashed even when "Prevent Overlap"
is enabled.
The Prevent Overlap feature editor works on two levels. Firstly, a
set of substitutions is created, each associating a swashed character
glyph with its normal, non-swash form. Secondly, a set of trigger
conditions must be defined to tell GX when to substitute the swash
form with the normal glyph. For example, the substitution illustrated
above is "Substitute normal-L for swash-L", and two of the trigger
conditions are: "swash-L followed immediately by 'y'", "swash-L
followed immediately by 'j'".
To make an Overlap Prevention table, follow these steps:
Now it's time to describe which situations should trigger this
substitution:
mort
table
Note that some features which the user will see are added
automatically (i.e., constructed by TrueEdit without the designer's
intervention
TrueEdit automatically adds the name
strings for effects
when you add them to a font. However, if you don't like TrueEdit's
names, you can still edit them. This is not recommended, since the
names TrueEdit assigns are the standard feature names which should be
constant across all fonts.
You can also decide which effects are set on by default in a font. A
feature can still be turned off by the user if it has been set on by
default.
It is also possible to change the order of effects within the mort
table - this can lead to some strange and entertaining effects if not
thought out properly.
To delete, select the effect and choose Clear (or press Delete). When
you delete a feature, TrueEdit automatically deletes the
corresponding 'TRnn' table and the entries in the
name
table.
When you delete the entire mort
table, TrueEdit deletes
all of the 'TRnn' tables (except the ones to do kerning,
which is not a mort feature) and all the appropriate entries
in the name
table.
You can't Cut, Copy, or Paste individual effects.
You can copy the entire mort table, but because of its dependencies on name, feat, and a bunch of TRnn tables, this is not recommended.
Each effect is like a filter: only what passes through that filter
gets down to the level below, and thus the next effect. This means
that the sequencing of effects is very important.
To reorder effects within the mort table, just select the
effect to be re-positioned...
...drag it...
...and drop it.
It is important to understand that the order of the feature registry
(or of the effects in the font, or of this chapter, for that matter)
does not dictate the order in which effect are presented to the
font's end user in a GX application. Although Apple has provided
extensive human interface guidelines for QuickDraw GX typography,
each application may present a different view of your font.
Ordering within the table has absolutely nothing to do with ordering on any user interface in a GX app.
Chapter 6 will get into some detail on exactly how feature ordering
influences the usability of the font.
The following are some guidelines to coming up with the feature set
and the glyph set for a font.
Each mort
subtable can be thought of as a filter:
only the output (either changed or unchanged) from subtable 1 gets to
subtable 2, etc. So the ordering of the mort
subtables
has a big impact on both the complexity necessary within each
subtable (it has to support whatever comes into it from the preceding
subtables) and the user-perceived functionality of the font. You can
rearrange the subtables by simply dragging them up or down in the
mort
window in TrueEdit as described above.
This is not the same as the order in the Feature Registry, nor is it
the same as the order of things users see in the menu. Think of it
like a fully factored application: the organization of the
functionality inside is very different from the organization of the
commands available to users.
The strategy I recommend is essentially: get the easy stuff out of
the way, then tread carefully through the remaining maze. Here's how
that might be applied to a semi-complex Roman font:
* These are "radio button" features, which require a mechanism to
turn off the feature such as a "none" entry, even if it's blank
Get the shortest (dead-end) paths out of the way first:
Of the remaining effects, get the simplest paths out of the way first by doing those things which operate entirely within the mapped character set:
...then take care of figures:
Next, wade through the remaining effects:
Finally, clean up after yourself:
By looking at an existing GX font's mort table in TrueEdit, you can
get feel for the normal order of effects in the mort
table.
Often, you want to make some effects take place automatically the
first time the font is chosen, without any user intervention. Some
applications will provide ways to access features, some won't. The
following is a description of how to set the defaults for a font: how
the font will always act in those applications which don't provide
user access to features.
Select the entry and choose Get Info from the Edit menu.
You get a big dialog box.
Click the Default button to turn the effect on by default. You can
set a default for each effect.
Text Orientation means whether the effect should be applied in
horizontal or vertical text (which applies to non-Roman fonts).
Any table can be processed in either a forward or backward direction.
The Glyph Processing Order option is used to determine this
direction. Tables for Arabic fonts will tend to uncheck this box.
Incidentally, Diagonal Fractions actually consists of two
subfeatures, one going each way.
Note that TrueEdit doesn't prevent you from making nonsensical
default settings, such as turning on both All Caps and Small Caps.
That's because GX's Line Layout can actually process some of these
effects in any order - turning on both All Caps and Small Caps would
convert all lower case to capitals before the question of small caps
comes up, if All Caps is first in order. However, you really should
watch out for conflicts like this, because users will be very
confused. While Layout can process both instructions, only the
ordering of effects in the mort table would determine whether the
results made sense or not.
Functional proofs check whether the features work the way they were
intended, and whether the mort
tables give reasonable
relations between glyphs to produce the appropriate appearance. The
designs of the outlines were fixed long ago, and we're not looking at
the device-specific rendering. All that is needed is a general idea
of which glyphs we're looking at and whether the tables are inserting
them correctly, so checking on-screen will often be sufficient.
It's very hard to think of appropriate "abstract" tests which are any
more specific than permutations and combinations such as:
Althoug not always necessary, printouts are sometimes very handy.
Printouts would be most useful for things related to collision
avoidance, where a higher resolution may reveal that a situation
which looks bad on screen really is OK.