>> Is there any significance of using 'cvt','fpgm','prep' as subtables of GT ?
>> Are they necessary?
According to the "PCL6 Soft Font Download Specification" document:
The following tables are recognized by PCL XL 2.0:
Required:
· head
· maxp
· gdir (Empty table; placeholder)
Optional (Send them if they exist in the TrueType font file):
· cvt
· fpgm
· prep
Special Cases:
· hhea (Required if using Character Class 0)
· hmtx (Required if using Character Class 0)
· vhea (Required if doing vertical-rotated writing, using Character Class 0 or 1, and the table exists in the TrueType font file)
· vmtx (Required if doing vertical-rotated writing, using Character Class 0 or 1, and the table exists in the TrueType font file)
Although this specification is for PCL XL, the PCL5 soft font format is very similar, except for the headers and encapsulation, so I would expect to see the same tables, in the mandatory GT segment, in each type of font.
>> And you have also used Symbol Set '0N'.
>> Can you please explain ?
I've used this symbol set (ISO 8859-1 Latin 1) because it is a strict subset of the Unicode code-space,and hence uses a simple mapping between the symbol set code-points and the Unicode code-points which are used to index the characters in (non-Symbol) TrueType fonts.
i.e. code-points 0x00 -> 0xFF map to Unicode code-points U+0000 -> U+00FF.
So it is quite simple to extract the required glyph data, via the 'cmap' table (which maps glyph identifiers to Unicode code-points).
Of course, the value used in the font header can be anything you like (within the rules which govern symbol set identifiers), but as I've used set '0N' to extract the appropriate glyphs, I've used this value in the header as well, to indicate what mapping has been used.