-
Notifications
You must be signed in to change notification settings - Fork 23
The 'PUAA' table
The Private Use Area attribute table (tag name: 'PUAA'
) provides a method for specifying Unicode character properties for characters in the Unicode Private Use Area (code points E000-F8FF
, F0000-FFFFD
, and 100000-10FFFD
).
This table is not part of the Unicode Standard and is not endorsed by the Unicode Consortium. The information included in this table should be considered informative only and is not expected to be used by any text rendering engine.
The table header gives the table version number, the number of properties defined, and the offset in bytes to the property name and subtable. The format of the table header is as follows:
Type | Name | Description |
---|---|---|
UInt16 |
version |
The table version number. Set to 1. |
UInt16 |
propertyCount |
The number of properties defined. |
PropertyRecord |
propertyRecord[propertyCount] |
The property records array. |
variable |
subtables |
Property subtable headers. |
variable |
entryData |
Subtable entry data. |
variable |
stringData |
Character strings in UTF-8. |
The property records array follows the table header. Each record consists of an offset to the property name and an offset to the subtable header. Here is the format of a PropertyRecord
:
Type | Name | Description |
---|---|---|
UInt32 |
propertyNameOffset |
Offset in bytes from the start of the table to the property name. |
UInt32 |
subtableHeaderOffset |
Offset in bytes from the start of the table to the subtable header. |
Property records should be sorted in ascending order by property name.
Each property record points to a property subtable header consisting of the number of entries and an array of entry records. The format of the subtable header is as follows:
Type | Name | Description |
---|---|---|
UInt16 |
entryCount |
The number of entries in this subtable. |
EntryRecord |
entryRecord[entryCount] |
The entry records array. |
The entry records array follows the subtable header. Each record consists of a type, a range of code points, and a value or offset.
Type | Name | Description |
---|---|---|
UInt8 |
entryType |
The type of the entry data. |
UInt8 |
plane |
The Unicode plane of the range of code points covered by this entry. One of 0, 15, or 16. |
UInt16 |
firstCodePoint |
The least significant 16 bits of the first code point covered by this entry. |
UInt16 |
lastCodePoint |
The least significant 16 bits of the last code point covered by this entry. |
UInt32 |
entryData |
Interpretation varies according to entryType . |
The entryType
field determines the interpretation of the entryData
field:
Entry Type ID | Entry Type | Meaning |
---|---|---|
1 |
Single |
The entryData field contains either an offset to a UTF-8 character string or a 0-4 byte ASCII character string. |
2 |
Multiple |
The entryData field contains an offset to an array of Single values, one for each code point. |
3 |
Boolean |
The entryData field contains zero for a false property value or nonzero for a true property value. |
4 |
Decimal |
The entryData field contains a plain integer value. |
5 |
Hexadecimal |
The entryData field contains a Unicode code point value. |
6 |
HexMultiple |
The entryData field contains an offset to an array of Hexadecimal values, one for each code point. |
7 |
HexSequence |
The entryData field contains an offset to an array of Unicode code point values. |
8 |
CaseMapping |
The entryData field contains an offset to an array of Unicode code point values, plus a Single value. |
9 |
NameAlias |
The entryData field contains an offset to an array of two Single values, one for a name and one for a name type. |
TBC