NAME
Font::TTF::Cmap - Character map table
DESCRIPTION
Looks after the character map. The primary structure used for handling a cmap is the Font::TTF::Segarr which handles the segmented arrays of format 4 tables, and in a simpler form for format 0 tables.
Due to the complexity of working with segmented arrays, most of the handling of such arrays is via methods rather than via instance variables.
One important feature of a format 4 table is that it always contains a segment with a final address of 0xFFFF. If you are creating a table from scratch this is important (although Font::TTF::Segarr can work quite happily without it).
INSTANCE VARIABLES
The instance variables listed here are not preceeded by a space due to their emulating structural information in the font.
- Num
-
Number of subtables in this table
- Tables
-
An array of subtables ([0..Num-1])
Each subtables also has its own instance variables which are, again, not preceeded by a space.
- Platform
-
The platform number for this subtable
- Encoding
-
The encoding number for this subtable
- Format
-
Gives the stored format of this subtable
- Ver
-
Gives the version (or language) information for this subtable
- val
-
A hash keyed by the codepoint value (not a string) storing the glyph id
METHODS
$t->read
Reads the cmap into memory. Format 4 subtables read the whole subtable and fill in the segmented array accordingly.
Format 2 subtables are not read at all.
$t->ms_lookup($uni)
Given a Unicode value in the MS table (Platform 3, Encoding 1) locates that table and looks up the appropriate glyph number from it.
$t->find_ms
Finds the Microsoft Unicode table and sets the mstable
instance variable to it if found. Returns the table it finds.
$t->out($fh)
Writes out a cmap table to a filehandle. If it has not been read, then just copies from input file to output
$t->XML_element($context, $depth, $name, $val)
Outputs the elements of the cmap in XML. We only need to process val here
@map = $t->reverse([$num])
Returns a reverse map of the table of given number or the Microsoft cmap. I.e. given a glyph gives the Unicode value for it.
is_unicode($index)
Returns whether the table of a given index is known to be a unicode table (as specified in the specifications)
BUGS
No support for format 2 tables (MBCS)
AUTHOR
Martin Hosken Martin_Hosken@sil.org. See Font::TTF::Font for copyright and licensing.