I would like to store a Type 1 font's glyph metrics in a dictionary (Python) using the glyph name as the key, as each glyph has a name and it is unique (AFAIK). However, the Adobe Font Metric specification states that an individual character metrics' specification does not have to include the glyph name (it's optional). Therefore, it is possible that some AFM files do not specify the glyph name, so only the character code is known for some glyphs. This means that, in the case no glyph name is specified, I need to also parse the PFB file to find out the glyph name (looking it up in the encoding table). This seems to defeat the very purpose of the AFM file.
However, I have checked a few AFM files, and I haven't yet found one that omits the glyph name in a metrics specification. Can I safely assume the glyph name will always be present? Is there an unwritten rule that the name is required afterall?
EDIT I have tested the 2447 AFM files that are available on the Adobe FTP site, and in all of them the glyph name is specified for each and every character metrics line. So, for Adobe fonts at least, I think I can assume the glyph name is present.
Lookup of the Encoding only works for those glyphs which are encoded in the default Encoding, this is often a small subset of the total available glyphs. Obviously you can re-encode the font to access the glyphs which are not normally accessible.
Glyphs which aren't encoded have a character code of -1 in the AFM file, so you can't look those up in the Encoding. Which means that the metrics are useless because you don't know which glyph they apply to!
While the name is optional in an AFM I'd be surprised if you find many AFM files which don't supply it.
Note that I don't normally have anything to do with AFM files, as they aren't used by PostScript at all.
You are correct that glyph names in a type 1 font CharStrings dictionary are unique.