Help-Site Computer Manuals
Software
Hardware
Programming
Networking
  Algorithms & Data Structures   Programming Languages   Revision Control
  Protocols
  Cameras   Computers   Displays   Keyboards & Mice   Motherboards   Networking   Printers & Scanners   Storage
  Windows   Linux & Unix   Mac

Font::TTF::Scripts::AP
Memory representation of a L<TTFBuilder|bin::TTFBuilder> Attachment Point database

Font::TTF::Scripts::AP - Memory representation of a L<TTFBuilder|bin::TTFBuilder> Attachment Point database


NAME

Font::TTF::Scripts::AP - Memory representation of a TTFBuilder Attachment Point database (APDB)


SYNOPSIS


 use Font::TTF::Scripts::AP;

 $ap = Font::TTF::Scripts::AP->read_font($ttf_file, $ap_file, %opts);

 $ap->make_classes();


INSTANCE VARIABLES

cmap
Reference to the Microsoft cmap within the font.

font
Reference to a font structure. read_font will cause at least the post, cmap, loca, and name tables to be read in.

glyphs
An array of references to glyph data structures, indexed by glyphID. Stucture elements are:
uni
Unicode scalar value, if any, as specified in the APDB. (decimal integer)

gnum
Actual glyph ID from font.

post
Actual Postscript name from font.

Note: The uni, gnum and post values are based on the UID, GID, and PSName fields of the APDB. If there are descrepancies between the APDB and the font's internal tables, then for calcuating the above three values, priority is given first to UID field, then PSName field, and finally GID.

glyph
Reference to glyph structure read from font.

line
Line number in APDB where glyph is defined.

points
A hash of references to attachment point structures for this glyph, keyed by attachment point type (aka name). Each AP structure contains
name
The name (type in TTFBuilder terminology) of the attachment point

x, y
X and Y coordinates for the attachment point

line
Line number in APDB where this point is defined.

components
Present if the glyph is a composite. Is a reference to an array of component structures. Each component structure includes:
bbox
comma separated list of bounding box coordinates, i.e., x1, y1, x2, y2

uni
Unicode scalar value, if any, of the component. (decimal integer)

Note: The following instance variables contain the actual text read from the APDB. If there are descrepancies between the APDB and the font, these values may differ from corresponding values given above. Therefore these values should not be used except for diagnostic purposes.

UID
Unicode scalar value, if any, as specified in the APDB. (string of hex digits)

PSName
Postscript name, if any, as specified in the APDB

GID
Glyph id, if any, as specified in the APDB

classes
Created by make_classes, this is a hash keyed by class name returning an array of GIDs for glyphs that are in the class. Classes are identified by extensions (part after a '.') on the post name of each glyph. For each such extension, two classes are defined. The first is the class of all glyphs that have that extension (class name is the extension). The second is the class of nominal glyphs corresponding to the glyphs with that extension (class name is the extension but with the prefix 'no_').

lists
Created by make_classes, this is a hash keyed by attachment point name (as modified by make_point) returning an array of GIDs for glyphs that have the given attachment point.

vecs
If defined, this variable will be updated by make_classes. It is a hash, keyed by attachment point name (as modified by make_point) returning a bit vec bit array, indexed by GID, each bit set to 1 if the corresponding glyph has the given attachment point.

ligclasses
Optionally created by make_classes if ligatures are requested and they exist. The base forms class is no_code while the ligatures are held in code.

WARNINGS
If -errorfh not set, this accumulates any warning or error messages encountered.

cWARNINGS
Count of number fo warnings or errors encountered.


METHODS

$ap = Font::TTF::Scripts::AP->read_font ($ttf_file, $ap_file, %opts)

Reads the TrueType font file $ttf_file and the attachment point database (APDB) file $ap_file, and builds a structure to represent the APDB.

Options that may be supplied throught the %opts hash include:

-omittedAPs
A comma-separated list of attachment point types to ignore.

-strictap
If true, warn about attachment points that do not correspond to appropriate points on the outline of the glyph.

-knownemptyglyphs
A comma-separated list of names of glyphs that are known to have no outline (thus shouldn't generate warning).

-errorfh
A file handle to which warning messages are to be printed. If not supplied, warning messages are accumulated in WARNINGS.

$ap->make_names

Create name records for all the glyphs in the font

$ap->make_classes (%opts)

First, for every glyph record in glyphs, make_classes invokes make_name followed by, for every attachment point record in points, make_point . This gives sub-classes a chance to convert the names (of glyphs and points) to an alternate form (e.g., as might be useful in building Graphite source.) See GDL.pm for an example.

make_classes then builds the classes and lists instance variables, and updates the vecs instance variable (if it is defined).

Options supported are:

-ligatures
Takes two values: first or last. First creates ligature classes with the class based on the first element of the ligature and the contents of the class on the rest of the ligature. Last creates classes based on the last element of the ligature, thus grouping all glyphs with the same last ligature element together. Ligature classes are stored in $self-{'ligclasses'}>.

Ligature elements are separated by _ in the glyph name. Ligatures are only made if there are corresponding non ligature glyphs in the font. A final .text on the glyph name of a ligature is assumed to be associated with the whole ligature and not just the last element.

$ap->make_name ($gname, $uni, $glyph)

Given a glyph's name, USV, and a reference to its glyph structure, returns a replacement name, e.g., one that might be an acceptable identifier in a programming language. By default this returns $gname, but the function could be overridden when subclassing.

$ap->make_point ($pname, $glyph)

Given an an attachment point name and a reference to its glyph structure, returns a replacement name, e.g., one that might be an acceptable identifier in a programming language, or undef to indicate the attachment point should be omitted. By default this returns $pname, but the function could be overridden when subclassing.


See also

TTFBuilder, the Font::TTF::Font manpage

Programminig
Wy
Wy
yW
Wy
Programming
Wy
Wy
Wy
Wy