# NAME

PDF::API2::TTF::Cmap - Character map table

# DESCRIPTION

Looks after the character map. For ease of use, the actual cmap is held in a hash against codepoint. Thus for a given table:

        $gid = $font->{'cmap'}{'Tables'}[0]{'val'}{$code};

Note that `$code` should be a true value (0x1234) rather than a string representation.

# 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)

Finds a Unicode table, giving preference to the MS one, and looks up the given Unicode codepoint in it to find the glyph id.

## $t->find_ms

Finds the a Unicode table, giving preference to the Microsoft one, and sets the `mstable` instance variable to it if found. Returns the table it finds.

## $t->ms_enc

Returns the encoding of the microsoft table (0 => symbol, etc.). Returns undef if there is no Microsoft cmap.

## $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 Unicode 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 PDF::API2::TTF::Font for copyright and licensing.