Font Message files
------------------

What used to be known as font names (ie. the name of the font subdirectory)
are now known as font identifiers - font names are obtained by looking in
<fontprefix>.Messages<country>, using the font identifier as a key.  That
is, the word "Messages" with the number of the country as its last characters.
For example, a UK Messages file would be named "Messages1".  The user is then
presented with the font name, while programs pass the font identifier to the
font manager.

<fontprefix>.Messages is used as a default if the country-specific file is
not present, and the Font Manager only actually scans the font directory if
no message file can be found.

This allows internationalisation by having an extra level of indirection
between font identifiers and font names.  Applications should store
references to fonts inside documents using the font identifier, but always
present the font to the user (eg. in a menu) using the font name.

It also allows font paths to become much more effective, since new font
directories can be added to the list of known fonts without losing
references to other font directories.  This and the fact that the font
manager knows exactly where each font is held makes it possible for a user
to put fonts on several floppy discs and still use them effectively.
Reading a Messages file is much faster than scanning the font directory
and it also allows you to set the default font in its family (e.g. selecting
just "Trinity" in a font menu can be made to select "Trinity.Medium" rather
than just the first entry in the sub-menu).

Font Message file syntax
------------------------

As for message files (see documentation of MessageTrans for details), except:
The valid tokens are:

        Encoding_       encoding (based on a base encoding)
        BEncoding_      base encoding (e.g. Base0 )
        Font_           font which doesn't vary with alphabet (e.g. symbol font)
        LFont_          font which  does   vary with alphabet (a 'language' font)

The tokens are of the form "Font_" followed by the identifier of the font in
the font directory, and their values are the names of those fonts.  If the
value is null, then the font name is taken to be the same as the identifier.

Identifiers should always be in ASCII, to aid in international portability. 
However, the font names should use the alphabet of the relevant territory,
as determined by the country number on the end of the message file name.

Within a font name, the following characters are special:

        .       The first dot encountered causes the font to be split over
                two menu levels.  Subsequent dots do not cause further
                submenu splitting.

        *       An asterisk as the last character of a font name is not
                treated as part of the name, but marks this font as being
                the default for that family.  That is, if the font weights
                and styles are in a font family subdirectory, then clicking
                on the menu entry for the font family will select the
                default for the family.  For our current range of fonts,
                this is normally <familyname>.Medium, but there are other
                examples (eg. Selwyn).

Note that if a font name is given as "*" alone, then it is treated as being
the same as the identifier and is also made the default for that family.

For example, a "Messages1" for the ROM fonts might be:

        BEncoding_Base0:
        Encoding_Latin1:
        Encoding_Latin2:
        Encoding_Latin3:
        Encoding_Latin4:
        LFont_Corpus.Bold:
        LFont_Corpus.Bold.Oblique:
        LFont_Corpus.Medium:*
        LFont_Corpus.Medium.Oblique:
        LFont_Homerton.Bold:Helvetica bold
        LFont_Homerton.Bold.Oblique:Helvetica bold oblique
        LFont_Homerton.Medium:Helvetica*
        LFont_Homerton.Medium.Oblique:Helvetica oblique
        LFont_Trinity.Bold:
        LFont_Trinity.Bold.Italic:
        LFont_Trinity.Medium:*
        LFont_Trinity.Medium.Italic:

Where we've aliased Homerton to Helvetica..., and set the default font in each
family to the one of "Medium" weight (useful).

Note you MUST define all encodings and base encodings (if any) that live inside
the font directory where you've put a Messages file if you want to use a font
that references them, even if you don't alias them to anything (as above).
Also note that you must not prefix the base encoding id with "/" even though
its filename is "/Base<n>".  The "/" in the filename is only used by Font_ListFonts
when its scanning a font directory to determine base encodings from encodings.

-- END --

If you need more information or are unsure of anything, get in touch.
-Chris Murray, 6/4/92.
