#======================================================================= # ____ ____ _____ _ ____ ___ ____ # | _ \| _ \| ___| _ _ / \ | _ \_ _| |___ \ # | |_) | | | | |_ (_) (_) / _ \ | |_) | | __) | # | __/| |_| | _| _ _ / ___ \| __/| | / __/ # |_| |____/|_| (_) (_) /_/ \_\_| |___| |_____| # # A Perl Module Chain to faciliate the Creation and Modification # of High-Quality "Portable Document Format (PDF)" Files. # #======================================================================= # # THIS IS A REUSED PERL MODULE, FOR PROPER LICENCING TERMS SEE BELOW: # # # Copyright Martin Hosken # # No warranty or expression of effectiveness, least of all regarding # anyone's safety, is implied in this software or documentation. # # This specific module is licensed under the Perl Artistic License. # # # $Id: PSNames.pm,v 2.0 2005/11/16 02:16:00 areibens Exp $ # #======================================================================= package PDF::API2::Basic::TTF::PSNames; use strict; use vars qw(%names %doubles); %names = ( '0020' => 'space', '0021' => 'exclam', '0022' => 'quotedbl', '0023' => 'numbersign', '0024' => 'dollar', '0025' => 'percent', '0026' => 'ampersand', '0027' => 'quotesingle', '0028' => 'parenleft', '0029' => 'parenright', '002A' => 'asterisk', '002B' => 'plus', '002C' => 'comma', '002D' => 'hyphen', '002E' => 'period', '002F' => 'slash', '0030' => 'zero', '0031' => 'one', '0032' => 'two', '0033' => 'three', '0034' => 'four', '0035' => 'five', '0036' => 'six', '0037' => 'seven', '0038' => 'eight', '0039' => 'nine', '003A' => 'colon', '003B' => 'semicolon', '003C' => 'less', '003D' => 'equal', '003E' => 'greater', '003F' => 'question', '0040' => 'at', '0041' => 'A', '0042' => 'B', '0043' => 'C', '0044' => 'D', '0045' => 'E', '0046' => 'F', '0047' => 'G', '0048' => 'H', '0049' => 'I', '004A' => 'J', '004B' => 'K', '004C' => 'L', '004D' => 'M', '004E' => 'N', '004F' => 'O', '0050' => 'P', '0051' => 'Q', '0052' => 'R', '0053' => 'S', '0054' => 'T', '0055' => 'U', '0056' => 'V', '0057' => 'W', '0058' => 'X', '0059' => 'Y', '005A' => 'Z', '005B' => 'bracketleft', '005C' => 'backslash', '005D' => 'bracketright', '005E' => 'asciicircum', '005F' => 'underscore', '0060' => 'grave', '0061' => 'a', '0062' => 'b', '0063' => 'c', '0064' => 'd', '0065' => 'e', '0066' => 'f', '0067' => 'g', '0068' => 'h', '0069' => 'i', '006A' => 'j', '006B' => 'k', '006C' => 'l', '006D' => 'm', '006E' => 'n', '006F' => 'o', '0070' => 'p', '0071' => 'q', '0072' => 'r', '0073' => 's', '0074' => 't', '0075' => 'u', '0076' => 'v', '0077' => 'w', '0078' => 'x', '0079' => 'y', '007A' => 'z', '007B' => 'braceleft', '007C' => 'bar', '007D' => 'braceright', '007E' => 'asciitilde', '00A0' => 'space', '00A1' => 'exclamdown', '00A2' => 'cent', '00A3' => 'sterling', '00A4' => 'currency', '00A5' => 'yen', '00A6' => 'brokenbar', '00A7' => 'section', '00A8' => 'dieresis', '00A9' => 'copyright', '00AA' => 'ordfeminine', '00AB' => 'guillemotleft', '00AC' => 'logicalnot', '00AD' => 'hyphen', '00AE' => 'registered', '00AF' => 'macron', '00B0' => 'degree', '00B1' => 'plusminus', '00B2' => 'twosuperior', '00B3' => 'threesuperior', '00B4' => 'acute', '00B5' => 'mu', '00B6' => 'paragraph', '00B7' => 'periodcentered', '00B8' => 'cedilla', '00B9' => 'onesuperior', '00BA' => 'ordmasculine', '00BB' => 'guillemotright', '00BC' => 'onequarter', '00BD' => 'onehalf', '00BE' => 'threequarters', '00BF' => 'questiondown', '00C0' => 'Agrave', '00C1' => 'Aacute', '00C2' => 'Acircumflex', '00C3' => 'Atilde', '00C4' => 'Adieresis', '00C5' => 'Aring', '00C6' => 'AE', '00C7' => 'Ccedilla', '00C8' => 'Egrave', '00C9' => 'Eacute', '00CA' => 'Ecircumflex', '00CB' => 'Edieresis', '00CC' => 'Igrave', '00CD' => 'Iacute', '00CE' => 'Icircumflex', '00CF' => 'Idieresis', '00D0' => 'Eth', '00D1' => 'Ntilde', '00D2' => 'Ograve', '00D3' => 'Oacute', '00D4' => 'Ocircumflex', '00D5' => 'Otilde', '00D6' => 'Odieresis', '00D7' => 'multiply', '00D8' => 'Oslash', '00D9' => 'Ugrave', '00DA' => 'Uacute', '00DB' => 'Ucircumflex', '00DC' => 'Udieresis', '00DD' => 'Yacute', '00DE' => 'Thorn', '00DF' => 'germandbls', '00E0' => 'agrave', '00E1' => 'aacute', '00E2' => 'acircumflex', '00E3' => 'atilde', '00E4' => 'adieresis', '00E5' => 'aring', '00E6' => 'ae', '00E7' => 'ccedilla', '00E8' => 'egrave', '00E9' => 'eacute', '00EA' => 'ecircumflex', '00EB' => 'edieresis', '00EC' => 'igrave', '00ED' => 'iacute', '00EE' => 'icircumflex', '00EF' => 'idieresis', '00F0' => 'eth', '00F1' => 'ntilde', '00F2' => 'ograve', '00F3' => 'oacute', '00F4' => 'ocircumflex', '00F5' => 'otilde', '00F6' => 'odieresis', '00F7' => 'divide', '00F8' => 'oslash', '00F9' => 'ugrave', '00FA' => 'uacute', '00FB' => 'ucircumflex', '00FC' => 'udieresis', '00FD' => 'yacute', '00FE' => 'thorn', '00FF' => 'ydieresis', '0100' => 'Amacron', '0101' => 'amacron', '0102' => 'Abreve', '0103' => 'abreve', '0104' => 'Aogonek', '0105' => 'aogonek', '0106' => 'Cacute', '0107' => 'cacute', '0108' => 'Ccircumflex', '0109' => 'ccircumflex', '010A' => 'Cdotaccent', '010B' => 'cdotaccent', '010C' => 'Ccaron', '010D' => 'ccaron', '010E' => 'Dcaron', '010F' => 'dcaron', '0110' => 'Dcroat', '0111' => 'dcroat', '0112' => 'Emacron', '0113' => 'emacron', '0114' => 'Ebreve', '0115' => 'ebreve', '0116' => 'Edotaccent', '0117' => 'edotaccent', '0118' => 'Eogonek', '0119' => 'eogonek', '011A' => 'Ecaron', '011B' => 'ecaron', '011C' => 'Gcircumflex', '011D' => 'gcircumflex', '011E' => 'Gbreve', '011F' => 'gbreve', '0120' => 'Gdotaccent', '0121' => 'gdotaccent', '0122' => 'Gcommaaccent', '0123' => 'gcommaaccent', '0124' => 'Hcircumflex', '0125' => 'hcircumflex', '0126' => 'Hbar', '0127' => 'hbar', '0128' => 'Itilde', '0129' => 'itilde', '012A' => 'Imacron', '012B' => 'imacron', '012C' => 'Ibreve', '012D' => 'ibreve', '012E' => 'Iogonek', '012F' => 'iogonek', '0130' => 'Idotaccent', '0131' => 'dotlessi', '0132' => 'IJ', '0133' => 'ij', '0134' => 'Jcircumflex', '0135' => 'jcircumflex', '0136' => 'Kcommaaccent', '0137' => 'kcommaaccent', '0138' => 'kgreenlandic', '0139' => 'Lacute', '013A' => 'lacute', '013B' => 'Lcommaaccent', '013C' => 'lcommaaccent', '013D' => 'Lcaron', '013E' => 'lcaron', '013F' => 'Ldot', '0140' => 'ldot', '0141' => 'Lslash', '0142' => 'lslash', '0143' => 'Nacute', '0144' => 'nacute', '0145' => 'Ncommaaccent', '0146' => 'ncommaaccent', '0147' => 'Ncaron', '0148' => 'ncaron', '0149' => 'napostrophe', '014A' => 'Eng', '014B' => 'eng', '014C' => 'Omacron', '014D' => 'omacron', '014E' => 'Obreve', '014F' => 'obreve', '0150' => 'Ohungarumlaut', '0151' => 'ohungarumlaut', '0152' => 'OE', '0153' => 'oe', '0154' => 'Racute', '0155' => 'racute', '0156' => 'Rcommaaccent', '0157' => 'rcommaaccent', '0158' => 'Rcaron', '0159' => 'rcaron', '015A' => 'Sacute', '015B' => 'sacute', '015C' => 'Scircumflex', '015D' => 'scircumflex', '015E' => 'Scedilla', '015F' => 'scedilla', '0160' => 'Scaron', '0161' => 'scaron', '0162' => 'Tcommaaccent', '0163' => 'tcommaaccent', '0164' => 'Tcaron', '0165' => 'tcaron', '0166' => 'Tbar', '0167' => 'tbar', '0168' => 'Utilde', '0169' => 'utilde', '016A' => 'Umacron', '016B' => 'umacron', '016C' => 'Ubreve', '016D' => 'ubreve', '016E' => 'Uring', '016F' => 'uring', '0170' => 'Uhungarumlaut', '0171' => 'uhungarumlaut', '0172' => 'Uogonek', '0173' => 'uogonek', '0174' => 'Wcircumflex', '0175' => 'wcircumflex', '0176' => 'Ycircumflex', '0177' => 'ycircumflex', '0178' => 'Ydieresis', '0179' => 'Zacute', '017A' => 'zacute', '017B' => 'Zdotaccent', '017C' => 'zdotaccent', '017D' => 'Zcaron', '017E' => 'zcaron', '017F' => 'longs', '0192' => 'florin', '01A0' => 'Ohorn', '01A1' => 'ohorn', '01AF' => 'Uhorn', '01B0' => 'uhorn', '01E6' => 'Gcaron', '01E7' => 'gcaron', '01FA' => 'Aringacute', '01FB' => 'aringacute', '01FC' => 'AEacute', '01FD' => 'aeacute', '01FE' => 'Oslashacute', '01FF' => 'oslashacute', '0218' => 'Scommaaccent', '0219' => 'scommaaccent', '021A' => 'Tcommaaccent', '021B' => 'tcommaaccent', '02BC' => 'afii57929', '02BD' => 'afii64937', '02C6' => 'circumflex', '02C7' => 'caron', '02C9' => 'macron', '02D8' => 'breve', '02D9' => 'dotaccent', '02DA' => 'ring', '02DB' => 'ogonek', '02DC' => 'tilde', '02DD' => 'hungarumlaut', '0300' => 'gravecomb', '0301' => 'acutecomb', '0303' => 'tildecomb', '0309' => 'hookabovecomb', '0323' => 'dotbelowcomb', '0384' => 'tonos', '0385' => 'dieresistonos', '0386' => 'Alphatonos', '0387' => 'anoteleia', '0388' => 'Epsilontonos', '0389' => 'Etatonos', '038A' => 'Iotatonos', '038C' => 'Omicrontonos', '038E' => 'Upsilontonos', '038F' => 'Omegatonos', '0390' => 'iotadieresistonos', '0391' => 'Alpha', '0392' => 'Beta', '0393' => 'Gamma', '0394' => 'Delta', '0395' => 'Epsilon', '0396' => 'Zeta', '0397' => 'Eta', '0398' => 'Theta', '0399' => 'Iota', '039A' => 'Kappa', '039B' => 'Lambda', '039C' => 'Mu', '039D' => 'Nu', '039E' => 'Xi', '039F' => 'Omicron', '03A0' => 'Pi', '03A1' => 'Rho', '03A3' => 'Sigma', '03A4' => 'Tau', '03A5' => 'Upsilon', '03A6' => 'Phi', '03A7' => 'Chi', '03A8' => 'Psi', '03A9' => 'Omega', '03AA' => 'Iotadieresis', '03AB' => 'Upsilondieresis', '03AC' => 'alphatonos', '03AD' => 'epsilontonos', '03AE' => 'etatonos', '03AF' => 'iotatonos', '03B0' => 'upsilondieresistonos', '03B1' => 'alpha', '03B2' => 'beta', '03B3' => 'gamma', '03B4' => 'delta', '03B5' => 'epsilon', '03B6' => 'zeta', '03B7' => 'eta', '03B8' => 'theta', '03B9' => 'iota', '03BA' => 'kappa', '03BB' => 'lambda', '03BC' => 'mu', '03BD' => 'nu', '03BE' => 'xi', '03BF' => 'omicron', '03C0' => 'pi', '03C1' => 'rho', '03C2' => 'sigma1', '03C3' => 'sigma', '03C4' => 'tau', '03C5' => 'upsilon', '03C6' => 'phi', '03C7' => 'chi', '03C8' => 'psi', '03C9' => 'omega', '03CA' => 'iotadieresis', '03CB' => 'upsilondieresis', '03CC' => 'omicrontonos', '03CD' => 'upsilontonos', '03CE' => 'omegatonos', '03D1' => 'theta1', '03D2' => 'Upsilon1', '03D5' => 'phi1', '03D6' => 'omega1', '0401' => 'afii10023', '0402' => 'afii10051', '0403' => 'afii10052', '0404' => 'afii10053', '0405' => 'afii10054', '0406' => 'afii10055', '0407' => 'afii10056', '0408' => 'afii10057', '0409' => 'afii10058', '040A' => 'afii10059', '040B' => 'afii10060', '040C' => 'afii10061', '040E' => 'afii10062', '040F' => 'afii10145', '0410' => 'afii10017', '0411' => 'afii10018', '0412' => 'afii10019', '0413' => 'afii10020', '0414' => 'afii10021', '0415' => 'afii10022', '0416' => 'afii10024', '0417' => 'afii10025', '0418' => 'afii10026', '0419' => 'afii10027', '041A' => 'afii10028', '041B' => 'afii10029', '041C' => 'afii10030', '041D' => 'afii10031', '041E' => 'afii10032', '041F' => 'afii10033', '0420' => 'afii10034', '0421' => 'afii10035', '0422' => 'afii10036', '0423' => 'afii10037', '0424' => 'afii10038', '0425' => 'afii10039', '0426' => 'afii10040', '0427' => 'afii10041', '0428' => 'afii10042', '0429' => 'afii10043', '042A' => 'afii10044', '042B' => 'afii10045', '042C' => 'afii10046', '042D' => 'afii10047', '042E' => 'afii10048', '042F' => 'afii10049', '0430' => 'afii10065', '0431' => 'afii10066', '0432' => 'afii10067', '0433' => 'afii10068', '0434' => 'afii10069', '0435' => 'afii10070', '0436' => 'afii10072', '0437' => 'afii10073', '0438' => 'afii10074', '0439' => 'afii10075', '043A' => 'afii10076', '043B' => 'afii10077', '043C' => 'afii10078', '043D' => 'afii10079', '043E' => 'afii10080', '043F' => 'afii10081', '0440' => 'afii10082', '0441' => 'afii10083', '0442' => 'afii10084', '0443' => 'afii10085', '0444' => 'afii10086', '0445' => 'afii10087', '0446' => 'afii10088', '0447' => 'afii10089', '0448' => 'afii10090', '0449' => 'afii10091', '044A' => 'afii10092', '044B' => 'afii10093', '044C' => 'afii10094', '044D' => 'afii10095', '044E' => 'afii10096', '044F' => 'afii10097', '0451' => 'afii10071', '0452' => 'afii10099', '0453' => 'afii10100', '0454' => 'afii10101', '0455' => 'afii10102', '0456' => 'afii10103', '0457' => 'afii10104', '0458' => 'afii10105', '0459' => 'afii10106', '045A' => 'afii10107', '045B' => 'afii10108', '045C' => 'afii10109', '045E' => 'afii10110', '045F' => 'afii10193', '0462' => 'afii10146', '0463' => 'afii10194', '0472' => 'afii10147', '0473' => 'afii10195', '0474' => 'afii10148', '0475' => 'afii10196', '0490' => 'afii10050', '0491' => 'afii10098', '04D9' => 'afii10846', '05B0' => 'afii57799', '05B1' => 'afii57801', '05B2' => 'afii57800', '05B3' => 'afii57802', '05B4' => 'afii57793', '05B5' => 'afii57794', '05B6' => 'afii57795', '05B7' => 'afii57798', '05B8' => 'afii57797', '05B9' => 'afii57806', '05BB' => 'afii57796', '05BC' => 'afii57807', '05BD' => 'afii57839', '05BE' => 'afii57645', '05BF' => 'afii57841', '05C0' => 'afii57842', '05C1' => 'afii57804', '05C2' => 'afii57803', '05C3' => 'afii57658', '05D0' => 'afii57664', '05D1' => 'afii57665', '05D2' => 'afii57666', '05D3' => 'afii57667', '05D4' => 'afii57668', '05D5' => 'afii57669', '05D6' => 'afii57670', '05D7' => 'afii57671', '05D8' => 'afii57672', '05D9' => 'afii57673', '05DA' => 'afii57674', '05DB' => 'afii57675', '05DC' => 'afii57676', '05DD' => 'afii57677', '05DE' => 'afii57678', '05DF' => 'afii57679', '05E0' => 'afii57680', '05E1' => 'afii57681', '05E2' => 'afii57682', '05E3' => 'afii57683', '05E4' => 'afii57684', '05E5' => 'afii57685', '05E6' => 'afii57686', '05E7' => 'afii57687', '05E8' => 'afii57688', '05E9' => 'afii57689', '05EA' => 'afii57690', '05F0' => 'afii57716', '05F1' => 'afii57717', '05F2' => 'afii57718', '060C' => 'afii57388', '061B' => 'afii57403', '061F' => 'afii57407', '0621' => 'afii57409', '0622' => 'afii57410', '0623' => 'afii57411', '0624' => 'afii57412', '0625' => 'afii57413', '0626' => 'afii57414', '0627' => 'afii57415', '0628' => 'afii57416', '0629' => 'afii57417', '062A' => 'afii57418', '062B' => 'afii57419', '062C' => 'afii57420', '062D' => 'afii57421', '062E' => 'afii57422', '062F' => 'afii57423', '0630' => 'afii57424', '0631' => 'afii57425', '0632' => 'afii57426', '0633' => 'afii57427', '0634' => 'afii57428', '0635' => 'afii57429', '0636' => 'afii57430', '0637' => 'afii57431', '0638' => 'afii57432', '0639' => 'afii57433', '063A' => 'afii57434', '0640' => 'afii57440', '0641' => 'afii57441', '0642' => 'afii57442', '0643' => 'afii57443', '0644' => 'afii57444', '0645' => 'afii57445', '0646' => 'afii57446', '0647' => 'afii57470', '0648' => 'afii57448', '0649' => 'afii57449', '064A' => 'afii57450', '064B' => 'afii57451', '064C' => 'afii57452', '064D' => 'afii57453', '064E' => 'afii57454', '064F' => 'afii57455', '0650' => 'afii57456', '0651' => 'afii57457', '0652' => 'afii57458', '0660' => 'afii57392', '0661' => 'afii57393', '0662' => 'afii57394', '0663' => 'afii57395', '0664' => 'afii57396', '0665' => 'afii57397', '0666' => 'afii57398', '0667' => 'afii57399', '0668' => 'afii57400', '0669' => 'afii57401', '066A' => 'afii57381', '066D' => 'afii63167', '0679' => 'afii57511', '067E' => 'afii57506', '0686' => 'afii57507', '0688' => 'afii57512', '0691' => 'afii57513', '0698' => 'afii57508', '06A4' => 'afii57505', '06AF' => 'afii57509', '06BA' => 'afii57514', '06D2' => 'afii57519', '06D5' => 'afii57534', '1E80' => 'Wgrave', '1E81' => 'wgrave', '1E82' => 'Wacute', '1E83' => 'wacute', '1E84' => 'Wdieresis', '1E85' => 'wdieresis', '1EF2' => 'Ygrave', '1EF3' => 'ygrave', '200C' => 'afii61664', '200D' => 'afii301', '200E' => 'afii299', '200F' => 'afii300', '2012' => 'figuredash', '2013' => 'endash', '2014' => 'emdash', '2015' => 'afii00208', '2017' => 'underscoredbl', '2018' => 'quoteleft', '2019' => 'quoteright', '201A' => 'quotesinglbase', '201B' => 'quotereversed', '201C' => 'quotedblleft', '201D' => 'quotedblright', '201E' => 'quotedblbase', '2020' => 'dagger', '2021' => 'daggerdbl', '2022' => 'bullet', '2024' => 'onedotenleader', '2025' => 'twodotenleader', '2026' => 'ellipsis', '202C' => 'afii61573', '202D' => 'afii61574', '202E' => 'afii61575', '2030' => 'perthousand', '2032' => 'minute', '2033' => 'second', '2039' => 'guilsinglleft', '203A' => 'guilsinglright', '203C' => 'exclamdbl', '2044' => 'fraction', '2070' => 'zerosuperior', '2074' => 'foursuperior', '2075' => 'fivesuperior', '2076' => 'sixsuperior', '2077' => 'sevensuperior', '2078' => 'eightsuperior', '2079' => 'ninesuperior', '207D' => 'parenleftsuperior', '207E' => 'parenrightsuperior', '207F' => 'nsuperior', '2080' => 'zeroinferior', '2081' => 'oneinferior', '2082' => 'twoinferior', '2083' => 'threeinferior', '2084' => 'fourinferior', '2085' => 'fiveinferior', '2086' => 'sixinferior', '2087' => 'seveninferior', '2088' => 'eightinferior', '2089' => 'nineinferior', '208D' => 'parenleftinferior', '208E' => 'parenrightinferior', '20A1' => 'colonmonetary', '20A3' => 'franc', '20A4' => 'lira', '20A7' => 'peseta', '20AA' => 'afii57636', '20AB' => 'dong', '20AC' => 'Euro', '2105' => 'afii61248', '2111' => 'Ifraktur', '2113' => 'afii61289', '2116' => 'afii61352', '2118' => 'weierstrass', '211C' => 'Rfraktur', '211E' => 'prescription', '2122' => 'trademark', '2126' => 'Omega', '212E' => 'estimated', '2135' => 'aleph', '2153' => 'onethird', '2154' => 'twothirds', '215B' => 'oneeighth', '215C' => 'threeeighths', '215D' => 'fiveeighths', '215E' => 'seveneighths', '2190' => 'arrowleft', '2191' => 'arrowup', '2192' => 'arrowright', '2193' => 'arrowdown', '2194' => 'arrowboth', '2195' => 'arrowupdn', '21A8' => 'arrowupdnbse', '21B5' => 'carriagereturn', '21D0' => 'arrowdblleft', '21D1' => 'arrowdblup', '21D2' => 'arrowdblright', '21D3' => 'arrowdbldown', '21D4' => 'arrowdblboth', '2200' => 'universal', '2202' => 'partialdiff', '2203' => 'existential', '2205' => 'emptyset', '2206' => 'Delta', '2207' => 'gradient', '2208' => 'element', '2209' => 'notelement', '220B' => 'suchthat', '220F' => 'product', '2211' => 'summation', '2212' => 'minus', '2215' => 'fraction', '2217' => 'asteriskmath', '2219' => 'periodcentered', '221A' => 'radical', '221D' => 'proportional', '221E' => 'infinity', '221F' => 'orthogonal', '2220' => 'angle', '2227' => 'logicaland', '2228' => 'logicalor', '2229' => 'intersection', '222A' => 'union', '222B' => 'integral', '2234' => 'therefore', '223C' => 'similar', '2245' => 'congruent', '2248' => 'approxequal', '2260' => 'notequal', '2261' => 'equivalence', '2264' => 'lessequal', '2265' => 'greaterequal', '2282' => 'propersubset', '2283' => 'propersuperset', '2284' => 'notsubset', '2286' => 'reflexsubset', '2287' => 'reflexsuperset', '2295' => 'circleplus', '2297' => 'circlemultiply', '22A5' => 'perpendicular', '22C5' => 'dotmath', '2302' => 'house', '2310' => 'revlogicalnot', '2320' => 'integraltp', '2321' => 'integralbt', '2329' => 'angleleft', '232A' => 'angleright', '2500' => 'SF100000', '2502' => 'SF110000', '250C' => 'SF010000', '2510' => 'SF030000', '2514' => 'SF020000', '2518' => 'SF040000', '251C' => 'SF080000', '2524' => 'SF090000', '252C' => 'SF060000', '2534' => 'SF070000', '253C' => 'SF050000', '2550' => 'SF430000', '2551' => 'SF240000', '2552' => 'SF510000', '2553' => 'SF520000', '2554' => 'SF390000', '2555' => 'SF220000', '2556' => 'SF210000', '2557' => 'SF250000', '2558' => 'SF500000', '2559' => 'SF490000', '255A' => 'SF380000', '255B' => 'SF280000', '255C' => 'SF270000', '255D' => 'SF260000', '255E' => 'SF360000', '255F' => 'SF370000', '2560' => 'SF420000', '2561' => 'SF190000', '2562' => 'SF200000', '2563' => 'SF230000', '2564' => 'SF470000', '2565' => 'SF480000', '2566' => 'SF410000', '2567' => 'SF450000', '2568' => 'SF460000', '2569' => 'SF400000', '256A' => 'SF540000', '256B' => 'SF530000', '256C' => 'SF440000', '2580' => 'upblock', '2584' => 'dnblock', '2588' => 'block', '258C' => 'lfblock', '2590' => 'rtblock', '2591' => 'ltshade', '2592' => 'shade', '2593' => 'dkshade', '25A0' => 'filledbox', '25A1' => 'H22073', '25AA' => 'H18543', '25AB' => 'H18551', '25AC' => 'filledrect', '25B2' => 'triagup', '25BA' => 'triagrt', '25BC' => 'triagdn', '25C4' => 'triaglf', '25CA' => 'lozenge', '25CB' => 'circle', '25CF' => 'H18533', '25D8' => 'invbullet', '25D9' => 'invcircle', '25E6' => 'openbullet', '263A' => 'smileface', '263B' => 'invsmileface', '263C' => 'sun', '2640' => 'female', '2642' => 'male', '2660' => 'spade', '2663' => 'club', '2665' => 'heart', '2666' => 'diamond', '266A' => 'musicalnote', '266B' => 'musicalnotedbl', 'FB00' => 'ff', 'FB01' => 'fi', 'FB02' => 'fl', 'FB03' => 'ffi', 'FB04' => 'ffl', 'FB1F' => 'afii57705', 'FB2A' => 'afii57694', 'FB2B' => 'afii57695', 'FB35' => 'afii57723', 'FB4B' => 'afii57700', ); %doubles = (map{$_ => "uni$_"} qw(0394 03A9 0162 2215 00AD 02C9 03BC 2219 00A0 0163)); sub lookup { my ($num, $noalt) = @_; my ($val) = sprintf("%04X", $num); if (defined $names{$val}) { return $names{$val} if ($noalt); return $doubles{$val} || $names{$val}; } elsif ($num > 0xFFFF) { return "u$val"; } elsif ($num) { return "uni$val"; } else { return ".notdef"; } } 1;