1033 lines
16 KiB
Plaintext
1033 lines
16 KiB
Plaintext
// Glyph encoding
|
|
|
|
const cffStandardStrings = [
|
|
'.notdef',
|
|
'space',
|
|
'exclam',
|
|
'quotedbl',
|
|
'numbersign',
|
|
'dollar',
|
|
'percent',
|
|
'ampersand',
|
|
'quoteright',
|
|
'parenleft',
|
|
'parenright',
|
|
'asterisk',
|
|
'plus',
|
|
'comma',
|
|
'hyphen',
|
|
'period',
|
|
'slash',
|
|
'zero',
|
|
'one',
|
|
'two',
|
|
'three',
|
|
'four',
|
|
'five',
|
|
'six',
|
|
'seven',
|
|
'eight',
|
|
'nine',
|
|
'colon',
|
|
'semicolon',
|
|
'less',
|
|
'equal',
|
|
'greater',
|
|
'question',
|
|
'at',
|
|
'A',
|
|
'B',
|
|
'C',
|
|
'D',
|
|
'E',
|
|
'F',
|
|
'G',
|
|
'H',
|
|
'I',
|
|
'J',
|
|
'K',
|
|
'L',
|
|
'M',
|
|
'N',
|
|
'O',
|
|
'P',
|
|
'Q',
|
|
'R',
|
|
'S',
|
|
'T',
|
|
'U',
|
|
'V',
|
|
'W',
|
|
'X',
|
|
'Y',
|
|
'Z',
|
|
'bracketleft',
|
|
'backslash',
|
|
'bracketright',
|
|
'asciicircum',
|
|
'underscore',
|
|
'quoteleft',
|
|
'a',
|
|
'b',
|
|
'c',
|
|
'd',
|
|
'e',
|
|
'f',
|
|
'g',
|
|
'h',
|
|
'i',
|
|
'j',
|
|
'k',
|
|
'l',
|
|
'm',
|
|
'n',
|
|
'o',
|
|
'p',
|
|
'q',
|
|
'r',
|
|
's',
|
|
't',
|
|
'u',
|
|
'v',
|
|
'w',
|
|
'x',
|
|
'y',
|
|
'z',
|
|
'braceleft',
|
|
'bar',
|
|
'braceright',
|
|
'asciitilde',
|
|
'exclamdown',
|
|
'cent',
|
|
'sterling',
|
|
'fraction',
|
|
'yen',
|
|
'florin',
|
|
'section',
|
|
'currency',
|
|
'quotesingle',
|
|
'quotedblleft',
|
|
'guillemotleft',
|
|
'guilsinglleft',
|
|
'guilsinglright',
|
|
'fi',
|
|
'fl',
|
|
'endash',
|
|
'dagger',
|
|
'daggerdbl',
|
|
'periodcentered',
|
|
'paragraph',
|
|
'bullet',
|
|
'quotesinglbase',
|
|
'quotedblbase',
|
|
'quotedblright',
|
|
'guillemotright',
|
|
'ellipsis',
|
|
'perthousand',
|
|
'questiondown',
|
|
'grave',
|
|
'acute',
|
|
'circumflex',
|
|
'tilde',
|
|
'macron',
|
|
'breve',
|
|
'dotaccent',
|
|
'dieresis',
|
|
'ring',
|
|
'cedilla',
|
|
'hungarumlaut',
|
|
'ogonek',
|
|
'caron',
|
|
'emdash',
|
|
'AE',
|
|
'ordfeminine',
|
|
'Lslash',
|
|
'Oslash',
|
|
'OE',
|
|
'ordmasculine',
|
|
'ae',
|
|
'dotlessi',
|
|
'lslash',
|
|
'oslash',
|
|
'oe',
|
|
'germandbls',
|
|
'onesuperior',
|
|
'logicalnot',
|
|
'mu',
|
|
'trademark',
|
|
'Eth',
|
|
'onehalf',
|
|
'plusminus',
|
|
'Thorn',
|
|
'onequarter',
|
|
'divide',
|
|
'brokenbar',
|
|
'degree',
|
|
'thorn',
|
|
'threequarters',
|
|
'twosuperior',
|
|
'registered',
|
|
'minus',
|
|
'eth',
|
|
'multiply',
|
|
'threesuperior',
|
|
'copyright',
|
|
'Aacute',
|
|
'Acircumflex',
|
|
'Adieresis',
|
|
'Agrave',
|
|
'Aring',
|
|
'Atilde',
|
|
'Ccedilla',
|
|
'Eacute',
|
|
'Ecircumflex',
|
|
'Edieresis',
|
|
'Egrave',
|
|
'Iacute',
|
|
'Icircumflex',
|
|
'Idieresis',
|
|
'Igrave',
|
|
'Ntilde',
|
|
'Oacute',
|
|
'Ocircumflex',
|
|
'Odieresis',
|
|
'Ograve',
|
|
'Otilde',
|
|
'Scaron',
|
|
'Uacute',
|
|
'Ucircumflex',
|
|
'Udieresis',
|
|
'Ugrave',
|
|
'Yacute',
|
|
'Ydieresis',
|
|
'Zcaron',
|
|
'aacute',
|
|
'acircumflex',
|
|
'adieresis',
|
|
'agrave',
|
|
'aring',
|
|
'atilde',
|
|
'ccedilla',
|
|
'eacute',
|
|
'ecircumflex',
|
|
'edieresis',
|
|
'egrave',
|
|
'iacute',
|
|
'icircumflex',
|
|
'idieresis',
|
|
'igrave',
|
|
'ntilde',
|
|
'oacute',
|
|
'ocircumflex',
|
|
'odieresis',
|
|
'ograve',
|
|
'otilde',
|
|
'scaron',
|
|
'uacute',
|
|
'ucircumflex',
|
|
'udieresis',
|
|
'ugrave',
|
|
'yacute',
|
|
'ydieresis',
|
|
'zcaron',
|
|
'exclamsmall',
|
|
'Hungarumlautsmall',
|
|
'dollaroldstyle',
|
|
'dollarsuperior',
|
|
'ampersandsmall',
|
|
'Acutesmall',
|
|
'parenleftsuperior',
|
|
'parenrightsuperior',
|
|
'266 ff',
|
|
'onedotenleader',
|
|
'zerooldstyle',
|
|
'oneoldstyle',
|
|
'twooldstyle',
|
|
'threeoldstyle',
|
|
'fouroldstyle',
|
|
'fiveoldstyle',
|
|
'sixoldstyle',
|
|
'sevenoldstyle',
|
|
'eightoldstyle',
|
|
'nineoldstyle',
|
|
'commasuperior',
|
|
'threequartersemdash',
|
|
'periodsuperior',
|
|
'questionsmall',
|
|
'asuperior',
|
|
'bsuperior',
|
|
'centsuperior',
|
|
'dsuperior',
|
|
'esuperior',
|
|
'isuperior',
|
|
'lsuperior',
|
|
'msuperior',
|
|
'nsuperior',
|
|
'osuperior',
|
|
'rsuperior',
|
|
'ssuperior',
|
|
'tsuperior',
|
|
'ff',
|
|
'ffi',
|
|
'ffl',
|
|
'parenleftinferior',
|
|
'parenrightinferior',
|
|
'Circumflexsmall',
|
|
'hyphensuperior',
|
|
'Gravesmall',
|
|
'Asmall',
|
|
'Bsmall',
|
|
'Csmall',
|
|
'Dsmall',
|
|
'Esmall',
|
|
'Fsmall',
|
|
'Gsmall',
|
|
'Hsmall',
|
|
'Ismall',
|
|
'Jsmall',
|
|
'Ksmall',
|
|
'Lsmall',
|
|
'Msmall',
|
|
'Nsmall',
|
|
'Osmall',
|
|
'Psmall',
|
|
'Qsmall',
|
|
'Rsmall',
|
|
'Ssmall',
|
|
'Tsmall',
|
|
'Usmall',
|
|
'Vsmall',
|
|
'Wsmall',
|
|
'Xsmall',
|
|
'Ysmall',
|
|
'Zsmall',
|
|
'colonmonetary',
|
|
'onefitted',
|
|
'rupiah',
|
|
'Tildesmall',
|
|
'exclamdownsmall',
|
|
'centoldstyle',
|
|
'Lslashsmall',
|
|
'Scaronsmall',
|
|
'Zcaronsmall',
|
|
'Dieresissmall',
|
|
'Brevesmall',
|
|
'Caronsmall',
|
|
'Dotaccentsmall',
|
|
'Macronsmall',
|
|
'figuredash',
|
|
'hypheninferior',
|
|
'Ogoneksmall',
|
|
'Ringsmall',
|
|
'Cedillasmall',
|
|
'questiondownsmall',
|
|
'oneeighth',
|
|
'threeeighths',
|
|
'fiveeighths',
|
|
'seveneighths',
|
|
'onethird',
|
|
'twothirds',
|
|
'zerosuperior',
|
|
'foursuperior',
|
|
'fivesuperior',
|
|
'sixsuperior',
|
|
'sevensuperior',
|
|
'eightsuperior',
|
|
'ninesuperior',
|
|
'zeroinferior',
|
|
'oneinferior',
|
|
'twoinferior',
|
|
'threeinferior',
|
|
'fourinferior',
|
|
'fiveinferior',
|
|
'sixinferior',
|
|
'seveninferior',
|
|
'eightinferior',
|
|
'nineinferior',
|
|
'centinferior',
|
|
'dollarinferior',
|
|
'periodinferior',
|
|
'commainferior',
|
|
'Agravesmall',
|
|
'Aacutesmall',
|
|
'Acircumflexsmall',
|
|
'Atildesmall',
|
|
'Adieresissmall',
|
|
'Aringsmall',
|
|
'AEsmall',
|
|
'Ccedillasmall',
|
|
'Egravesmall',
|
|
'Eacutesmall',
|
|
'Ecircumflexsmall',
|
|
'Edieresissmall',
|
|
'Igravesmall',
|
|
'Iacutesmall',
|
|
'Icircumflexsmall',
|
|
'Idieresissmall',
|
|
'Ethsmall',
|
|
'Ntildesmall',
|
|
'Ogravesmall',
|
|
'Oacutesmall',
|
|
'Ocircumflexsmall',
|
|
'Otildesmall',
|
|
'Odieresissmall',
|
|
'OEsmall',
|
|
'Oslashsmall',
|
|
'Ugravesmall',
|
|
'Uacutesmall',
|
|
'Ucircumflexsmall',
|
|
'Udieresissmall',
|
|
'Yacutesmall',
|
|
'Thornsmall',
|
|
'Ydieresissmall',
|
|
'001.000',
|
|
'001.001',
|
|
'001.002',
|
|
'001.003',
|
|
'Black',
|
|
'Bold',
|
|
'Book',
|
|
'Light',
|
|
'Medium',
|
|
'Regular',
|
|
'Roman',
|
|
'Semibold',
|
|
];
|
|
|
|
const cffStandardEncoding = [
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'space',
|
|
'exclam',
|
|
'quotedbl',
|
|
'numbersign',
|
|
'dollar',
|
|
'percent',
|
|
'ampersand',
|
|
'quoteright',
|
|
'parenleft',
|
|
'parenright',
|
|
'asterisk',
|
|
'plus',
|
|
'comma',
|
|
'hyphen',
|
|
'period',
|
|
'slash',
|
|
'zero',
|
|
'one',
|
|
'two',
|
|
'three',
|
|
'four',
|
|
'five',
|
|
'six',
|
|
'seven',
|
|
'eight',
|
|
'nine',
|
|
'colon',
|
|
'semicolon',
|
|
'less',
|
|
'equal',
|
|
'greater',
|
|
'question',
|
|
'at',
|
|
'A',
|
|
'B',
|
|
'C',
|
|
'D',
|
|
'E',
|
|
'F',
|
|
'G',
|
|
'H',
|
|
'I',
|
|
'J',
|
|
'K',
|
|
'L',
|
|
'M',
|
|
'N',
|
|
'O',
|
|
'P',
|
|
'Q',
|
|
'R',
|
|
'S',
|
|
'T',
|
|
'U',
|
|
'V',
|
|
'W',
|
|
'X',
|
|
'Y',
|
|
'Z',
|
|
'bracketleft',
|
|
'backslash',
|
|
'bracketright',
|
|
'asciicircum',
|
|
'underscore',
|
|
'quoteleft',
|
|
'a',
|
|
'b',
|
|
'c',
|
|
'd',
|
|
'e',
|
|
'f',
|
|
'g',
|
|
'h',
|
|
'i',
|
|
'j',
|
|
'k',
|
|
'l',
|
|
'm',
|
|
'n',
|
|
'o',
|
|
'p',
|
|
'q',
|
|
'r',
|
|
's',
|
|
't',
|
|
'u',
|
|
'v',
|
|
'w',
|
|
'x',
|
|
'y',
|
|
'z',
|
|
'braceleft',
|
|
'bar',
|
|
'braceright',
|
|
'asciitilde',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'exclamdown',
|
|
'cent',
|
|
'sterling',
|
|
'fraction',
|
|
'yen',
|
|
'florin',
|
|
'section',
|
|
'currency',
|
|
'quotesingle',
|
|
'quotedblleft',
|
|
'guillemotleft',
|
|
'guilsinglleft',
|
|
'guilsinglright',
|
|
'fi',
|
|
'fl',
|
|
'',
|
|
'endash',
|
|
'dagger',
|
|
'daggerdbl',
|
|
'periodcentered',
|
|
'',
|
|
'paragraph',
|
|
'bullet',
|
|
'quotesinglbase',
|
|
'quotedblbase',
|
|
'quotedblright',
|
|
'guillemotright',
|
|
'ellipsis',
|
|
'perthousand',
|
|
'',
|
|
'questiondown',
|
|
'',
|
|
'grave',
|
|
'acute',
|
|
'circumflex',
|
|
'tilde',
|
|
'macron',
|
|
'breve',
|
|
'dotaccent',
|
|
'dieresis',
|
|
'',
|
|
'ring',
|
|
'cedilla',
|
|
'',
|
|
'hungarumlaut',
|
|
'ogonek',
|
|
'caron',
|
|
'emdash',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'AE',
|
|
'',
|
|
'ordfeminine',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'Lslash',
|
|
'Oslash',
|
|
'OE',
|
|
'ordmasculine',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'ae',
|
|
'',
|
|
'',
|
|
'',
|
|
'dotlessi',
|
|
'',
|
|
'',
|
|
'lslash',
|
|
'oslash',
|
|
'oe',
|
|
'germandbls',
|
|
];
|
|
|
|
const cffExpertEncoding = [
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'space',
|
|
'exclamsmall',
|
|
'Hungarumlautsmall',
|
|
'',
|
|
'dollaroldstyle',
|
|
'dollarsuperior',
|
|
'ampersandsmall',
|
|
'Acutesmall',
|
|
'parenleftsuperior',
|
|
'parenrightsuperior',
|
|
'twodotenleader',
|
|
'onedotenleader',
|
|
'comma',
|
|
'hyphen',
|
|
'period',
|
|
'fraction',
|
|
'zerooldstyle',
|
|
'oneoldstyle',
|
|
'twooldstyle',
|
|
'threeoldstyle',
|
|
'fouroldstyle',
|
|
'fiveoldstyle',
|
|
'sixoldstyle',
|
|
'sevenoldstyle',
|
|
'eightoldstyle',
|
|
'nineoldstyle',
|
|
'colon',
|
|
'semicolon',
|
|
'commasuperior',
|
|
'threequartersemdash',
|
|
'periodsuperior',
|
|
'questionsmall',
|
|
'',
|
|
'asuperior',
|
|
'bsuperior',
|
|
'centsuperior',
|
|
'dsuperior',
|
|
'esuperior',
|
|
'',
|
|
'',
|
|
'isuperior',
|
|
'',
|
|
'',
|
|
'lsuperior',
|
|
'msuperior',
|
|
'nsuperior',
|
|
'osuperior',
|
|
'',
|
|
'',
|
|
'rsuperior',
|
|
'ssuperior',
|
|
'tsuperior',
|
|
'',
|
|
'ff',
|
|
'fi',
|
|
'fl',
|
|
'ffi',
|
|
'ffl',
|
|
'parenleftinferior',
|
|
'',
|
|
'parenrightinferior',
|
|
'Circumflexsmall',
|
|
'hyphensuperior',
|
|
'Gravesmall',
|
|
'Asmall',
|
|
'Bsmall',
|
|
'Csmall',
|
|
'Dsmall',
|
|
'Esmall',
|
|
'Fsmall',
|
|
'Gsmall',
|
|
'Hsmall',
|
|
'Ismall',
|
|
'Jsmall',
|
|
'Ksmall',
|
|
'Lsmall',
|
|
'Msmall',
|
|
'Nsmall',
|
|
'Osmall',
|
|
'Psmall',
|
|
'Qsmall',
|
|
'Rsmall',
|
|
'Ssmall',
|
|
'Tsmall',
|
|
'Usmall',
|
|
'Vsmall',
|
|
'Wsmall',
|
|
'Xsmall',
|
|
'Ysmall',
|
|
'Zsmall',
|
|
'colonmonetary',
|
|
'onefitted',
|
|
'rupiah',
|
|
'Tildesmall',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'',
|
|
'exclamdownsmall',
|
|
'centoldstyle',
|
|
'Lslashsmall',
|
|
'',
|
|
'',
|
|
'Scaronsmall',
|
|
'Zcaronsmall',
|
|
'Dieresissmall',
|
|
'Brevesmall',
|
|
'Caronsmall',
|
|
'',
|
|
'Dotaccentsmall',
|
|
'',
|
|
'',
|
|
'Macronsmall',
|
|
'',
|
|
'',
|
|
'figuredash',
|
|
'hypheninferior',
|
|
'',
|
|
'',
|
|
'Ogoneksmall',
|
|
'Ringsmall',
|
|
'Cedillasmall',
|
|
'',
|
|
'',
|
|
'',
|
|
'onequarter',
|
|
'onehalf',
|
|
'threequarters',
|
|
'questiondownsmall',
|
|
'oneeighth',
|
|
'threeeighths',
|
|
'fiveeighths',
|
|
'seveneighths',
|
|
'onethird',
|
|
'twothirds',
|
|
'',
|
|
'',
|
|
'zerosuperior',
|
|
'onesuperior',
|
|
'twosuperior',
|
|
'threesuperior',
|
|
'foursuperior',
|
|
'fivesuperior',
|
|
'sixsuperior',
|
|
'sevensuperior',
|
|
'eightsuperior',
|
|
'ninesuperior',
|
|
'zeroinferior',
|
|
'oneinferior',
|
|
'twoinferior',
|
|
'threeinferior',
|
|
'fourinferior',
|
|
'fiveinferior',
|
|
'sixinferior',
|
|
'seveninferior',
|
|
'eightinferior',
|
|
'nineinferior',
|
|
'centinferior',
|
|
'dollarinferior',
|
|
'periodinferior',
|
|
'commainferior',
|
|
'Agravesmall',
|
|
'Aacutesmall',
|
|
'Acircumflexsmall',
|
|
'Atildesmall',
|
|
'Adieresissmall',
|
|
'Aringsmall',
|
|
'AEsmall',
|
|
'Ccedillasmall',
|
|
'Egravesmall',
|
|
'Eacutesmall',
|
|
'Ecircumflexsmall',
|
|
'Edieresissmall',
|
|
'Igravesmall',
|
|
'Iacutesmall',
|
|
'Icircumflexsmall',
|
|
'Idieresissmall',
|
|
'Ethsmall',
|
|
'Ntildesmall',
|
|
'Ogravesmall',
|
|
'Oacutesmall',
|
|
'Ocircumflexsmall',
|
|
'Otildesmall',
|
|
'Odieresissmall',
|
|
'OEsmall',
|
|
'Oslashsmall',
|
|
'Ugravesmall',
|
|
'Uacutesmall',
|
|
'Ucircumflexsmall',
|
|
'Udieresissmall',
|
|
'Yacutesmall',
|
|
'Thornsmall',
|
|
'Ydieresissmall',
|
|
];
|
|
|
|
/**
|
|
* This is the encoding used for fonts created from scratch.
|
|
* It loops through all glyphs and finds the appropriate unicode value.
|
|
* Since it's linear time, other encodings will be faster.
|
|
* @exports opentype.DefaultEncoding
|
|
* @class
|
|
* @constructor
|
|
* @param {opentype.Font}
|
|
*/
|
|
function DefaultEncoding(font) {
|
|
this.font = font;
|
|
}
|
|
|
|
DefaultEncoding.prototype.charToGlyphIndex = function (c) {
|
|
const code = c.codePointAt(0);
|
|
const glyphs = this.font.glyphs;
|
|
if (glyphs) {
|
|
for (let i = 0; i < glyphs.length; i += 1) {
|
|
const glyph = glyphs.get(i);
|
|
for (let j = 0; j < glyph.unicodes.length; j += 1) {
|
|
if (glyph.unicodes[j] === code) {
|
|
return i;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
return null;
|
|
};
|
|
|
|
/**
|
|
* @exports opentype.CmapEncoding
|
|
* @class
|
|
* @constructor
|
|
* @param {Object} cmap - a object with the cmap encoded data
|
|
*/
|
|
function CmapEncoding(cmap) {
|
|
this.cmap = cmap;
|
|
}
|
|
|
|
/**
|
|
* @param {string} c - the character
|
|
* @return {number} The glyph index.
|
|
*/
|
|
CmapEncoding.prototype.charToGlyphIndex = function (c) {
|
|
return this.cmap.glyphIndexMap[c.codePointAt(0)] || 0;
|
|
};
|
|
|
|
/**
|
|
* @exports opentype.CffEncoding
|
|
* @class
|
|
* @constructor
|
|
* @param {string} encoding - The encoding
|
|
* @param {Array} charset - The character set.
|
|
*/
|
|
function CffEncoding(encoding, charset) {
|
|
this.encoding = encoding;
|
|
this.charset = charset;
|
|
}
|
|
|
|
/**
|
|
* @param {string} s - The character
|
|
* @return {number} The index.
|
|
*/
|
|
CffEncoding.prototype.charToGlyphIndex = function (s) {
|
|
const code = s.codePointAt(0);
|
|
const charName = this.encoding[code];
|
|
return this.charset.indexOf(charName);
|
|
};
|
|
|
|
function addGlyphNamesAll(font) {
|
|
let glyph;
|
|
const glyphIndexMap = font.tables.cmap.glyphIndexMap;
|
|
const charCodes = Object.keys(glyphIndexMap);
|
|
|
|
for (let i = 0; i < charCodes.length; i += 1) {
|
|
const c = charCodes[i];
|
|
const glyphIndex = glyphIndexMap[c];
|
|
glyph = font.glyphs.get(glyphIndex);
|
|
glyph.addUnicode(parseInt(c));
|
|
}
|
|
}
|
|
|
|
function addGlyphNamesToUnicodeMap(font) {
|
|
font._IndexToUnicodeMap = {};
|
|
|
|
const glyphIndexMap = font.tables.cmap.glyphIndexMap;
|
|
const charCodes = Object.keys(glyphIndexMap);
|
|
|
|
for (let i = 0; i < charCodes.length; i += 1) {
|
|
const c = charCodes[i];
|
|
let glyphIndex = glyphIndexMap[c];
|
|
if (font._IndexToUnicodeMap[glyphIndex] === undefined) {
|
|
font._IndexToUnicodeMap[glyphIndex] = {
|
|
unicodes: [parseInt(c)],
|
|
};
|
|
} else {
|
|
font._IndexToUnicodeMap[glyphIndex].unicodes.push(parseInt(c));
|
|
}
|
|
}
|
|
}
|
|
|
|
/**
|
|
* @alias opentype.addGlyphNames
|
|
* @param {opentype.Font}
|
|
* @param {Object}
|
|
*/
|
|
function addGlyphNames(font, opt) {
|
|
if (opt.lowMemory) {
|
|
addGlyphNamesToUnicodeMap(font);
|
|
} else {
|
|
addGlyphNamesAll(font);
|
|
}
|
|
}
|
|
|
|
export {
|
|
cffStandardStrings,
|
|
cffStandardEncoding,
|
|
cffExpertEncoding,
|
|
DefaultEncoding,
|
|
CmapEncoding,
|
|
CffEncoding,
|
|
addGlyphNames,
|
|
};
|