---
name: "PDF::API2::Basic::TTF::Name"
section: "3pm"
platform: "linux"
package: "libpdf-api2-perl"
version: "0.73-1"
release: "Debian 6.0 (Squeeze)"
platforms: ["linux"]
url: "https://new.carta.tech/PDF::API2::Basic::TTF::Name"
---

# PDF::API2::Basic::TTF::Name(3pm)

String table for a TTF font

## NAME

PDF::API2::Basic::TTF::Name - String table for a TTF font

## DESCRIPTION

Strings are held by number, platform, encoding and language. Strings are accessed as:

```
    $f->{'name'}{'strings'}[$number][$platform_id][$encoding_id]{$language_id}
```

Notice that the language is held in an associative array due to its sparse nature on some platforms such as Microsoft ($pid = 3). Notice also that the array order is different from the stored array order (platform, encoding, language, number) to allow for easy manipulation of strings by number (which is what I guess most people will want to do).

By default, `$PDF::API2::Basic::TTF::Name::utf8` is set to 1, and strings will be stored as UTF8 wherever possible. The method `"is_utf8"` can be used to find out if a string in a particular platform and encoding will be returned as UTF8. Unicode strings are always converted if utf8 is requested. Otherwise, strings are stored according to platform:

```
    ***WARNING NON-UTF8 is deprecated and utf8 strings has become the default***
```

You now have to set \<$PDF::API2::Basic::TTF::Name::utf8\> to 0 to get the old behaviour.

- Apple Unicode (platform id = 0)

  Data is stored as network ordered UCS2. There is no encoding id for this platform but there are language ids as per Mac language ids.

- Mac (platform id = 1)

  Data is stored as 8-bit binary data, leaving the interpretation to the user according to encoding id.

- Unicode (platform id = 2)

  Currently stored as 16-bit network ordered UCS2. Upon release of Perl 5.005 this will change to utf8 assuming current UCS2 semantics for all encoding ids.

- Windows (platform id = 3)

  As per Unicode, the data is currently stored as 16-bit network ordered UCS2. Upon release of Perl 5.005 this will change to utf8 assuming current UCS2 semantics for all encoding ids.

## INSTANCE VARIABLES

- strings

  An array of arrays, etc.

## METHODS

### $t-\>read

Reads all the names into memory

### $t-\>out($fh)

Writes out all the strings

### $t-\>XML\_element($context, $depth, $key, $value)

Outputs the string element in nice XML (which is all the table really!)

### $t-\>XML\_end($context, $tag, %attrs)

Store strings in the right place

### is\_utf8($pid, $eid)

Returns whether a string of a given platform and encoding is going to be in UTF8

### find\_name($nid)

Hunts down a name in all the standard places and returns the string and for an array context the pid, eid & lid as well

## BUGS

- •

  Unicode type strings will be stored in utf8 for all known platforms, once Perl 5.6 has been released and I can find all the mapping tables, etc.

## AUTHOR

Martin Hosken Martin\_Hosken@sil.org. See PDF::API2::Basic::TTF::Font for copyright and licensing.
