NAME
Font::GlyphNames - Convert between glyph names and characters
VERSION
Version 1.00000
SYNOPSIS
use Font::GlyphNames qw[
name2str
name2ord
str2name
ord2name
ord2ligname
];
# or:
use Font::GlyphNames ':all';
name2str qw[one two three s_t Psi uni00D4];
name2ord qw[one two three s_t Psi uni00D4];
str2name qw[1 2 3 st Ψ Ô];
ord2name qw[49 50 51 115 116 936 212];
ord2ligname qw[49 50 51 115 116 936 212];
# Or you can use the OO interface:
use Font::GlyphNames;
$gn = new Font::GlyphNames; # use default glyph list
$gn = new Font::GlyphNames 'my-glyphs.txt'; # custom list
$gn->name2ord(qw[ a slong_slong_i s_t.alt ]);
# etc.
DESCRIPTION
This module uses the Adobe Glyph Naming convention (see "SEE ALSO") for converting between glyph names and characters (or character codes).
METHODS/FUNCTIONS
Except for new
(which is only a method), each item listed here is both a function and a method.
- new ( LIST )
-
This class method constructs and returns a new Font::GlyphNames object. If an error occurs, it returns undef (check
$@
for the error; note also thatnew()
clobbers any existing value of$@
, whether there is an error or not). LIST is a list of files to use as a glyph list. If LIST is omitted, the Zapf Dingbats Glyph List and the Adobe Glyph List (see "SEE ALSO") will be used instead. - new \%options
-
new
can also take a hashref of options, which are as follows:- lists
- list
-
(You can specify it with or without the 's'.) Either the name of the file containing the glyph list, or a reference to an array of file names. In fact, if you want an object with no glyph list (not that you would), you can use
lists => []
. - search_inc
-
If this is set to true, 'Font/GlyphNames/' will be added to the beginning of each file name, and the files will then be searched for in the folders listed in
@INC
. - substitute
-
Set this to a string that you want
name2str
to output for each invalid glyph name. The default isundef
. (Actually, it doesn't have to be a string; it could be anything, but it will be stringified ifname2str
is called in scalar context with more than one argument.)
- name2str ( LIST )
-
LIST is a list of glyph names. This function returns a list of the string equivalents of the glyphs in list context. In scalar context the individual elements of the list are concatenated. Invalid glyph names and names beginning with a dot (chr 0x2E) produce undef. Some examples:
name2str 's_t' # returns 'st' name2str qw/Psi uni00D4/ # returns ("\x{3a8}", "\xd4") name2str '.notdef' # returns undef name2str 'uni12345678' # returns "\x{1234}\x{5678}" name2str qw/one uni32 three/ # returns ('1', undef, '3')
If, for invalid glyph names, you would like something other than undef (the null char, for instance), you can either use the OO interface and the
substitute
option to "new", or replace it afterwards like this:map +("\0",$_)[defined], name2str ...
- name2ord ( LIST )
-
LIST is a list of glyph names. This function returns a list of the character codes that the glyphs represent. If called in scalar context with more than one argument, the behaviour is undefined (and subject to change in future releases). Invalid glyph names and names beginning with a dot (chr 0x2E) produce -1. Some examples:
name2ord 's_t' # returns 115, 116 name2ord qw/Psi uni00D4/ # returns 0x3a8, 0xd4 name2ord '.notdef' # returns -1 name2ord 'uni12345678' # returns 0x1234, 0x5678 name2ord qw/one uni32 three/ # returns 49, -1, 51
- str2name ( LIST )
-
LIST is a list of strings. This function returns a list of glyph names that correspond to all the arguments passed to it. If a string is more than one character long, the resulting glyph name will be a ligature name. An empty string will return '.notdef'. If called in scalar context with more than one argument, the behaviour is undefined (and subject to change in future releases).
str2name 'st' # returns 's_t' str2name "\x{3a8}", "\xd4" # returns qw/Psi Ocircumflex/ str2name "\x{3a8}\xd4" # returns 'Psi_Ocircumflex' str2name "\x{1234}\x{5678}" # returns 'uni12345678' str2name "\x{05D3}\x{05B9}" # returns 'daletholam'
- ord2name ( LIST )
-
LIST is a list of character codes. This function returns a list of glyph names that correspond to all the arguments passed to it. If called in scalar context with more than one argument, the behaviour is undefined (and subject to change in future releases).
ord2name 115 # returns 's' ord2name 0x3a8, 0xd4 # returns 'Psi', 'Ocircumflex' ord2name 0x1234, 0x5678 # returns 'uni1234', 'uni5678'
- ord2ligname ( LIST )
-
LIST is a list of character codes. This function returns a glyph name for a ligature that corresponds to the arguments passed to it, or '.notdef' if there are none.
ord2ligname 115, 116 # returns 's_t' ord2ligname 0x3a8, 0xd4 # returns 'Psi_Ocircumflex' ord2ligname 0x1234, 0x5678 # returns 'uni12345678' ord2ligname 0x05D3, 0x05B9 # returns 'daletholam'
THE GLYPH LIST FILE FORMAT
Note: This section is not intended to be normative. It simply describes how this module parses glyph list files--which works with those provided by Adobe.
All lines that consist solely of whitespace or that have a sharp sign (#) preceded only by whitespace (if any) are ignored. All others lines must consist of the glyph name followed by a semicolon, and the character numbers in hex, separated and optionally surrounded by whitespace. If there are multiple character numbers, the glyph is understood to represent a sequence of characters. The line breaks must be either CRLF sequences (as in Adobe's lists) or native line breaks. If a glyph name occurs more than once, the first instance will be used.
COMPATIBILITY
This module requires perl 5.8.0 or later.
BUGS
Please e-mail me if you find any.
AUTHOR & COPYRIGHT
Copyright (C) 2006-8, Father Chrysostomos <name2str qw[s p r o u t at c p a n period o r g]>
SEE ALSO
- Unicode and Glyph Names
-
http://partners.adobe.com/public/developer/opentype/index_glyph.html
- Glyph Names and Current Implementations
-
http://partners.adobe.com/public/developer/opentype/index_glyph2.html
- Adobe Glyph List
-
http://partners.adobe.com/public/developer/en/opentype/glyphlist.txt
- ITC Zapf Dingbats Glyph List
-
http://partners.adobe.com/public/developer/en/opentype/zapfdingbats.txt
1 POD Error
The following errors were encountered while parsing the POD:
- Around line 526:
=over without closing =back