============================================================

            Typeface Theory in Professional Page

============================================================

This isn't required reading, but if you have unusual typeface combinations
or more than four typefaces in a given family, this chapter will give you
insight in organizing your typeface library. These notes apply to any
application that uses fonts and .metrics generated with this package.

                    How PPage (and company) Handles Type

As you know, PPage requires a display font and a .metric file. Sometimes
the display font is really an outline typeface (like the CGFonts or CBM's
new outlines in WB 2.04).

Sticking to the screen font case, PPage displays the font on screen with
a bitmapped image (Amiga font). Character spacing is taken out of the .metric
file so spacing is accurate when printing to PostScript. Kerning pairs,
typeface names, and other tidbits are also taken from the .metric.

A .metric can contain info for up to four typefaces, each representing a
Plain, Bold, Italic, and a BoldItalic style (BoldItalic style is used when
both "Bold" and "Italic" are selected from the Style menu). PPage uses
"fake bolds" and "fake italics" when displaying using a screen font, meaning
it will slant the font or draw using thicker lines. Outline and Underline
styles are generated from these four basic styles.

If a typeface style isn't defined in a .metric, that style setting is ignored.
If you have a .metric with a Plain style defenition only (such as Machine
or ZapfDingbats), then "Bold" and "Italic" settings are ignored. You can
actually omit any one or two or three style defenitions (except Plain) when
you create a .metric file. 

When you print to PostScript, PPage manually positions each character (rather
than relying on the printer to do that) based on the spacing and kerning
info in the .metric. The typefaces are called by PostScript name like program
subroutines (PostScript typefaces are really software programs).

                 Organizing basic typeface families

A basic family has four typefaces, a regular, bold, italic, and bolditalic.
This is the easiest to set up for. You need a group of screen fonts (actually
different point sizes organized into one font directory) and the .metric,
generated from the typeface family's four AFMs. A completed group would look
like this in your FONTS: directory:

1.SYS:> dir FONTS:

   Garamond (dir)
Garamond.font           Garamond.metric

1.SYS:> dir FONTS:Garamond

10                      12
14                      18
24

(from now on I'll omit the individual point sizes in one font.)

You can use this typeface normally in PPage, with all styles available.

Say we just copied a bunch of data from a Macintosh to an Amiga disk in DF0:.
To make the fonts usable in PPage, you first need the screen fonts:

1.SYS:> UnpackFNT "df0:Garamond Screen Fonts"
1.SYS:> CD T:UnpackedFonts
1.RAM DISK:T/UnpackedFonts> SPAT ConvertFNT Garamond.#?

(See the docs for making screen fonts for the details.)

Then, the .metric:

1.SYS:> CD df0:
1.AFMs:> ConvertAFM GaramLig.AFM GaramBol.AFM GaramLigIta.AFM GaramBolIta.AFM
1.AFMs:> copy Garamond.metric FONTS:

(See the docs for making .metric files for more details.)

and that's it. Simple.

                Organizing Single Typefaces or Small Families

A single typeface is easy to set up, too. Let's try ITC Machine:

1.SYS:> UnpackFNT "df0:Machine Screen Fonts"
1.SYS:> CD T:UnpackedFonts
1.RAM DISK:T/UnpackedFonts> SPAT ConvertFNT Machine.#?
1.RAM DISK:T/UnpackedFonts> ConvertAFM df0:Machi.AFM x x x FONTS:Machine.metric

When you try to select "Bold" or "Italic" with this typeface, PPage
will ignore them and you'll still get the Plain version.

Sometimes a typeface family has a missing style, like Candida or DomCasual.
DomCasual, for example only has two styles, regular and bold:

1.SYS:> UnpackFNT "df0:Dom Casual Screen Fonts"
1.SYS:> CD T:UnpackedFonts
1.RAM DISK:T/UnpackedFonts> SPAT ConvertFNT DomCasual.#?
1.RAM DISK:T/UnpackedFonts> ConvertAFM df0:DomCas.AFM DomCasBol.AFM x x
1.RAM DISK:T/UnpackedFonts> copy DomCasual.metric FONTS:

If you processed a family with only one missing style, then that one
style setting is ignored. If there were two missing, like DomCasual above,
they would also be ignored.

               Large Families with Multiple Weights

Ever look at the numbered series Helvetica? Yikes! Eight different weights
with matching italics! What if we want to use all of them with PPage?

The easiest way to handle a large family is to pair off each weight with
its italic version in the .metric files, then generate a screen font for
each weight. This ensures consistency with each weight as the representation
will be exact, and we could probably live with "fake italics" anyway.
All typeface packages come with display fonts for each typeface, including
different weights and italic versions.

Let's start from the top of the list: Helvetica25-UltraLight:

1.SYS:> UnpackFNT "df0:Helvetica 25 Screen Fonts"
1.SYS:> CD T:UnpackedFonts
(You may have to do some renaming to make SPAT work effectively.
Or you can convert the fonts individually.)
1.RAM DISK:T/UnpackedFonts> SPAT ConvertFNT Helvetica25.#?
1.RAM DISK:T/UnpackedFonts> ConvertAFM df0:Helve25UltLig.AFM x df0:Helve26UltLigIta.AFM x FONTS:Helvetica25UltraLight.metric

(Note the real long command line and the alternate .metric filename. The
alternate filename is needed because the basename of these typefaces are 
different. See the docs for details.)

Do this for each weight and you should get a listing like this:

1.SYS:> Dir FONTS:
      Helvetica25UltraLight (dir)
      Helvetica35Thin (dir)
      Helvetica45Light (dir)
      Helvetica55Roman (dir)
      Helvetica65Medium (dir)
      Helvetica75Bold (dir)
      Helvetica85Heavy (dir)
      Helvetica95Black (dir)
Helvetica25UltraLight.font    Helvetica25UltraLight.metric
Helvetica35Thin.font          Helvetica35Thin.metric
Helvetica45Light.font         Helvetica45Light.metric
Helvetica55Roman.font         Helvetica55Roman.metric
Helvetica65Medium.font        Helvetica65Medium.metric
Helvetica75Bold.font          Helvetica75Bold.metric
Helvetica85Heavy.font         Helvetica85Heavy.metric
Helvetica95Black.font         Helvetica95Black.metric

This may seem like a lot of work, but it's worth it because it's easier
to find all your different weights this way. To make work easier, you
can rename the fonts in T:UnpackedFonts to match these font names before
you convert them, then use SPAT to convert them all:

1.RAM DISK:T/UnpackedFonts> SPAT ConvertFNT Helvetica#?

All this work can be crunched into a Shell or AREXX script, using labels
for the command arguments. Using these with AREXX requires you use the
"command" port:

address command "UnpackFNT Suitcasefile"

as these things don't have their own ports. 

Wow... Hope you keep yourself organized. Type, type, and more type, all
at your fingertips... if you can find it. 

