In this scheme, names may consist of only the letters (monocase a-z), numerals (0-9), and underscore. Having two names which differ only in case is undesirable, since it results in clashes on common Windows filesystems.
Here is the basic scheme (the spaces here are merely for readability):
S TT W [V…] [N] [E] [DD]
represents the supplier of the font.
represents the typeface name.
represents the weight.
represents the variant(s), and is omitted if both it and the width are normal. Many fonts have more than one variant.
represents the encoding, and is omitted if the encoding is nonstandard. Encodings are subsumed in the section on variants (see Variants).
represents the width (“expansion”), and is omitted if it is normal.
represents the design size (in decimal), and is omitted if the font is linearly scaled. Mittelbach in TUGboat 13(1) proposes using hexadecimal or base-36 notation. In my opinion, the increased range does not make up for the unreadability of the common sizes (e.g., 10pt fonts would have a suffix ‘a’ (in hex), or ‘j’ (in base 36)).
We used to try to limit font names to eight characters. This was never completely possible, and since DOS filesystems have become rare, it’s no longer an issue.
The weight, variants, and width are probably all best taken from the original name of the font, instead of trying to relate them to some external standard.