From 5a528944f0e3a58d6ac0c821d31f3e1471a9a463 Mon Sep 17 00:00:00 2001 From: Adil Allawi Date: Fri, 19 Aug 2011 14:04:34 +0100 Subject: [PATCH] Change the way Type 2 CID fonts are encoded. Move the cmap glyphs above the first 255 unicode values so that fillText does not change them and create an encoding to map characters to the glyphs. --- fonts.js | 68 ++-- pdf.js | 7 +- test/pdfs/complex_ttf_font.pdf | 575 +++++++++++++++++++++++++++++++++ test/test_manifest.json | 5 + 4 files changed, 616 insertions(+), 39 deletions(-) create mode 100644 test/pdfs/complex_ttf_font.pdf diff --git a/fonts.js b/fonts.js index 1860df2..1aff9eb 100755 --- a/fonts.js +++ b/fonts.js @@ -1032,26 +1032,27 @@ var Font = (function Font() { if (properties.type == 'CIDFontType2') { // Type2 composite fonts map characters directly to glyphs so the cmap // table must be replaced. + // canvas fillText will reencode some characters even if the font has a + // glyph at that position - e.g. newline is converted to a space and U+00AD + // (soft hypen) is not drawn. + // So, offset all the glyphs by 0xFF to avoid these cases and use + // the encoding to map incoming characters to the new glyph positions var glyphs = []; - var charset = properties.charset; - if (!charset.length) { - // Type2 composite fonts map characters directly to glyphs so the cmap - for (var i = 1; i < numGlyphs; i++) { - glyphs.push({ - unicode: i - }); - } - } else { - for (var i = 1; i < charset.length; i++) { - var index = charset.indexOf(i); - if (index == -1) - break; + var encoding = properties.encoding; - glyphs.push({ - unicode: index - }); - } + for (var i = 1; i < numGlyphs; i++) { + glyphs.push({ unicode: i + 0xFF }); + } + + if ('undefined' == typeof(encoding[0])) { + // the font is directly characters to glyphs with no encoding + // so create an identity encoding + for (i = 0; i < numGlyphs; i++) + encoding[i] = i + 0xFF; + } else { + for (var i in encoding) + encoding[i] = encoding[i] + 0xFF; } if (!cmap) { @@ -1274,31 +1275,26 @@ var Font = (function Font() { if (!charsCache) charsCache = this.charsCache = Object.create(null); + // translate the string using the font's encoding + var encoding = this.encoding; + if (!encoding) + return chars; + str = ''; + if (this.compositeFont) { // composite fonts have multi-byte strings convert the string from - // single-byte to multi-byte XXX assuming CIDFonts are two-byte - later - // need to extract the correct byte encoding according to the PDF spec - str = ''; - var multiByteStr = ''; - var length = chars.length; + // single-byte to multi-byte + // XXX assuming CIDFonts are two-byte - later need to extract the + // correct byte encoding according to the PDF spec + var length = chars.length - 1; // looping over two bytes at a time so + // loop should never end on the last byte for (var i = 0; i < length; i++) { - var byte1 = chars.charCodeAt(i++) & 0xFF; - var byte2; - if (i == length) - byte2 = 0; - else - byte2 = chars.charCodeAt(i) & 0xFF; - multiByteStr += String.fromCharCode((byte1 << 8) | byte2); + var charcode = int16([chars.charCodeAt(i++), chars.charCodeAt(i)]); + var unicode = encoding[charcode]; + str += String.fromCharCode(unicode); } - str = multiByteStr; } else { - // translate the string using the font's encoding - var encoding = this.encoding; - if (!encoding) - return chars; - - str = ''; for (var i = 0; i < chars.length; ++i) { var charcode = chars.charCodeAt(i); var unicode = encoding[charcode]; diff --git a/pdf.js b/pdf.js index 63aefcd..f8739aa 100644 --- a/pdf.js +++ b/pdf.js @@ -4028,14 +4028,15 @@ var PartialEvaluator = (function() { if (subType.name == 'CIDFontType2') { var cidToGidMap = descendant.get('CIDToGIDMap'); if (cidToGidMap && IsRef(cidToGidMap)) { - // Extract the charset from the CIDToGIDMap + // Extract the encoding from the CIDToGIDMap var glyphsStream = xref.fetchIfRef(cidToGidMap); var glyphsData = glyphsStream.getBytes(0); - var i = 0; // Glyph ids are big-endian 2-byte values + encodingMap[0] = 0; //set this to 0 to verify the font has an encoding for (var j = 0; j < glyphsData.length; j++) { var glyphID = (glyphsData[j++] << 8) | glyphsData[j]; - charset.push(glyphID); + if (glyphID != 0) + encodingMap[j>>1] = glyphID; } } } diff --git a/test/pdfs/complex_ttf_font.pdf b/test/pdfs/complex_ttf_font.pdf new file mode 100644 index 0000000..284caab --- /dev/null +++ b/test/pdfs/complex_ttf_font.pdf @@ -0,0 +1,575 @@ +%PDF-1.3 +%âãÏÓ +1 0 obj +<< +/Parent 2 0 R +/MediaBox [0 0 595 842] +/Resources 3 0 R +/pdftk_PageNum 1 +/Contents 4 0 R +/Type /Page +>> +endobj +2 0 obj +<< +/MediaBox [0 0 612 792] +/Kids [1 0 R] +/Count 1 +/Type /Pages +>> +endobj +4 0 obj +<< +/Length 8531 +>> +stream +q Q q 0 0 595 842 re W n 0 0 0 1 k BT 36 0 0 36 165.615 619.79 Tm /F1.1 1 +Tf [ <033d> -0.2 <0b0b> 0.4 <04a8000301e5> -0.2 <000301b9> 0.2 <033d> -0.2 +<0b61> 0.1 <02250003100e> ] TJ ET BT 36 0 0 36 253.725 619.955 Tm /F1.1 1 +Tf <0d010b61> Tj ET BT 36 0 0 36 268.38 619.79 Tm /F1.1 1 Tf [ <08e7> -0.2 +<04a80003> 0.4 <100c> -0.3 <02be> 0.2 <0003100e> 0.2 <0cb1> -0.2 <033d> -0.2 +<0ccc> 0.4 <00a2000307060225> -0.3 <00a209de> 0.2 <00a200030a2e039d> -0.1 +<0a670003> 0.4 <0a45> -0.1 <0371> -0.1 <02b8> 0.1 <00a200030362> ] TJ ET BT +36 0 0 36 474.69 619.955 Tm /F1.1 1 Tf <0e0f02a4> Tj ET BT 36 0 0 36 494.37 619.79 +Tm /F1.1 1 Tf <04a8> Tj ET BT 36 0 0 36 167.58 568.415 Tm /F1.1 1 Tf [ <033f> +-0.2 <0b0b04a8000301e5> 0.2 <000301ba> 1.2 <033f> -0.2 <0b61> 0.1 <02250003100e> +] TJ ET BT -0.0002 Tc 36 0 0 36 254.25 568.58 Tm /F1.1 1 Tf <0d140b61> Tj +0 Tc ET BT 36 0 0 36 268.02 568.415 Tm /F1.1 1 Tf [ <08ed> -0.4 <04a80003> +0.4 <100c> -0.3 <02be> 0.2 <0003100e> -0.3 <0cba> 0.3 <033f> -0.2 <0ccc00a200030706022500a209df> +0.3 <00a200030a2e039d> -0.1 <0a5e> 1 <00030a45> 0.3 <0371> -0.1 <02ba> 0.1 +<00a200030362> ] TJ ET BT 0.0004 Tc 36 0 0 36 474 568.58 Tm /F1.1 1 Tf <0e0f02a6> +Tj 0 Tc ET BT 36 0 0 36 494.37 568.415 Tm /F1.1 1 Tf <04a8> Tj ET BT 36 0 0 36 161.55 517.055 +Tm /F1.1 1 Tf [ <033d> -0.2 <0b0b04a8000301e5> 0.2 <000301b9> 0.2 <033d> -0.2 +<0b61> 0.1 <0225> -0.3 <0003> 0.4 <100e> ] TJ ET BT 36 0 0 36 249.66 517.22 +Tm /F1.1 1 Tf <0d020b61> Tj ET BT 36 0 0 36 264.315 517.055 Tm /F1.1 1 Tf +[ <08e7> -0.2 <04a80003100c02be> 0.2 <0003100e> -0.3 <0cb1> 0.3 <033d> -0.2 +<0ccc00a200030706022500a209e000a200030a2e039d> -0.1 <0a670003> 0.4 <0a45> +-0.1 <0371> -0.1 <02b8> 0.1 <00a200030362> ] TJ ET BT 36 0 0 36 474.69 517.22 +Tm /F1.1 1 Tf <0e0f02a4> Tj ET BT 36 0 0 36 494.37 517.055 Tm /F1.1 1 Tf <04a8> +Tj ET BT 36 0 0 36 98.88 463.685 Tm /F1.1 1 Tf [ <033d> 0.2 <0b17> -0.2 <04a80003> +0.4 <01e5> -0.2 <000301ba> 1.2 <033f> -0.2 <0b61> 0.1 <02250003100e> ] TJ +ET BT -0.0002 Tc 36 0 0 36 191.955 463.85 Tm /F1.1 1 Tf <0d140b61> Tj 0 Tc +ET BT 36 0 0 36 205.725 463.685 Tm /F1.1 1 Tf [ <08ed> -0.4 <04a8> 0.4 <000303cc02be> +-0.2 <0003100e> 0.2 <0cba033f> 0.2 <0ccc00a20003> ] TJ ET BT 36 0 0 36 309.6 465.695 +Tm /F1.1 1 Tf [ <071e> -0.2 <022500a209df> 0.3 <00a20003> ] TJ ET BT 36 0 0 36 361.68 463.685 +Tm /F1.1 1 Tf [ <020f> -0.2 <039d> 0.3 <0a5e> 1 <0003000300030a4c> 0.2 <0371> +-0.1 <02ba> 0.1 <00a200030362> ] TJ ET BT 0.0004 Tc 36 0 0 36 474 463.85 Tm +/F1.1 1 Tf <0e0f02a6> Tj 0 Tc ET BT 36 0 0 36 494.37 463.685 Tm /F1.1 1 Tf +<04a8> Tj ET BT 36 0 0 36 113.625 409.25 Tm /F1.1 1 Tf <100f> Tj ET BT 0.0001 +Tc 36 0 0 36 125.325 409.775 Tm /F1.1 1 Tf <0d1d0b73> Tj 0 Tc ET BT 36 0 0 36 153.405 409.25 +Tm /F1.1 1 Tf [ <08f3> 0.2 <04a8000303ce02bf0003100e> ] TJ ET BT 36 0 0 36 222.57 409.52 +Tm /F1.1 1 Tf <0d2602a7> Tj ET BT 36 0 0 36 237.69 409.25 Tm /F1.1 1 Tf <0340> +Tj ET BT 36 0 0 36 246.93 410.225 Tm /F1.1 1 Tf <0330> Tj ET BT 36 0 0 36 258.705 410.495 +Tm /F1.1 1 Tf <0dde02a7> Tj ET BT 36 0 0 36 281.07 409.235 Tm /F1.1 1 Tf <00a20003> +Tj ET BT 36 0 0 36 287.295 411.23 Tm /F1.1 1 Tf [ <071e> 0.3 <0225> -0.3 <00a209de> +0.2 <00a20003> ] TJ ET BT 36 0 0 36 339.06 409.235 Tm /F1.1 1 Tf <0a2e03d6> +Tj ET BT -0.0003 Tc 36 0 0 36 357.555 410.21 Tm /F1.1 1 Tf <030e0a71> Tj 0 +Tc ET BT 36 0 0 36 380.415 409.235 Tm /F1.1 1 Tf [ <0003000300030a45> -0.1 +<0363> ] TJ ET BT -0.0006 Tc 36 0 0 36 411.51 409.58 Tm /F1.1 1 Tf <02f7033102a7> +Tj 0 Tc ET BT 36 0 0 36 447.885 409.235 Tm /F1.1 1 Tf <00a200030363> Tj ET +BT 36 0 0 36 464.31 409.82 Tm /F1.1 1 Tf <02fe> Tj ET BT 36 0 0 36 478.74 409.55 +Tm /F1.1 1 Tf <0e0702a7> Tj ET BT 36 0 0 36 494.37 409.235 Tm /F1.1 1 Tf <04a8> +Tj ET BT 36 0 0 36 162.15 348.08 Tm /F1.1 1 Tf [ <000303e6033d> -366 <043e> +365.8 <0b0b> 0.4 <00a4> -0.3 <0003043c> -117.1 <03dc> 117.1 <01e5> 0.2 <0003043c01b9> +-0.2 <033d> 0.2 <03dc> -117.1 <03df> 117.1 <0b61> -58.2 <0439> 58.3 <0225> +-0.3 <0003> -58 <03dc> 58.3 <100e> ] TJ ET BT 36 0 0 36 252.63 348.245 Tm +/F1.1 1 Tf <0d01043d0b61> Tj ET BT 36 0 0 36 265.185 348.08 Tm /F1.1 1 Tf +[ <0410> -175.4 <03e1> 117.1 <08e7> -0.2 <00a4> 0.1 <0003> -58.4 <043e> 58.3 +<100c046c02be> -0.2 <0003> -58.4 <03dc> 58.3 <100e> 0.2 <044e0cb1> -0.2 <033d> +-116.9 <03f2> 117.1 <0ccc04aa000303dc> -117.1 <03dc> 117.1 <07060410022500a203f209de> +-0.2 <04aa0003> -58.4 <043c> 58.3 <0a2e0450> -175.4 <03dc> 175.4 <039d> 58.7 +<043c> -58.3 <0a670003> -117.1 <044f> 117.1 <0a45> -0.1 <043d> -234.2 <043e> +234.2 <0371> 58.2 <046c> -58.3 <03e102b8> 0.1 <04aa0003> -58.4 <043c> 58.3 +<0362> ] TJ ET BT 0.3513 Tc 36 0 0 36 472.05 348.245 Tm /F1.1 1 Tf [ <03e103df> +644 <0e0f> 410 <03e1> 293 <02a4> ] TJ 0 Tc ET BT 36 0 0 36 493.815 348.08 +Tm /F1.1 1 Tf <00a4> Tj ET BT 36 0 0 36 162.15 278.72 Tm /F1.1 1 Tf [ <000303e6033d> +-366 <0411> 365.8 <0b0b> 0.4 <00a4> -0.3 <0003040f> -117.1 <0495> 117.1 <01e5> +0.2 <0003040f01b9> -0.2 <033d> 0.2 <0495> -117.1 <0496> 117.1 <0b61> -58.2 +<040c> 58.3 <0225> -0.3 <0003> -58 <0495> 58.3 <100e> ] TJ ET BT 36 0 0 36 252.63 278.885 +Tm /F1.1 1 Tf <0d01043d0b61> Tj ET BT 36 0 0 36 265.185 278.72 Tm /F1.1 1 +Tf [ <03e0> -175.4 <0497> 117.1 <08e7> -0.2 <00a4> 0.1 <0003> -58.4 <0411> +58.3 <100c043d02be> -0.2 <0003> -58.4 <0495> 58.3 <100e> 0.2 <041f0cb1> -0.2 +<033d> -116.9 <03f2> 117.1 <0ccc04aa00030495> -117.1 <0495> 117.1 <07060410022500a203f209de> +-0.2 <04aa0003> -58.4 <040f> 58.3 <0a2e0421> -175.4 <0495> 175.4 <039d> 58.7 +<043c> -58.3 <0a670003> -117.1 <0420> 117.1 <0a45> -0.1 <0410> -234.2 <0411> +234.2 <0371> 58.2 <043d> -58.3 <049702b8> 0.1 <04aa0003> -58.4 <040f> 58.3 +<0362> ] TJ ET BT 0.3513 Tc 36 0 0 36 472.05 278.885 Tm /F1.1 1 Tf [ <04970496> +644 <0e0f> 410 <0497> 293 <02a4> ] TJ 0 Tc ET BT 36 0 0 36 493.815 278.72 +Tm /F1.1 1 Tf <00a4> Tj ET BT 36 0 0 36 140.535 209.345 Tm /F1.1 1 Tf [ <000303e9033d> +-365.6 <046e> 365.8 <0b0b00a4> 0.1 <0003046b> -117.1 <03dd> 117.1 <01e5> -0.2 +<0003046b01b9> 0.2 <033d> -0.2 <040c> -117.1 <040f> 117.1 <0b61> -58.2 <0468> +58.3 <02250003> -58.4 <040d> 58.3 <100e> ] TJ ET BT 36 0 0 36 231 209.51 Tm +/F1.1 1 Tf [ <0d01> -0.4 <043d0b61> ] TJ ET BT 36 0 0 36 243.57 209.345 Tm +/F1.1 1 Tf [ <0410> -175.4 <0412> 117.1 <08e7> 0.3 <00a4> -0.3 <0003> -58.4 +<046e> 58.3 <100c046c02be> 0.2 <0003> -58.4 <040d> 58.3 <100e> -0.3 <047b0cb1> +0.3 <033d> -117.3 <041f> 117.1 <0ccc04aa000303dc> -117.1 <040c> 117.1 <07060410022500a2041f09de> +0.2 <04aa0003> -58.4 <040f> 58.3 <0a2e043d041e03d6043a0316> 58.4 <046b> -58.3 +<0a5d0003> -117.1 <047c> 117.1 <0a45> -0.1 <043d> -234.2 <043f> 234.2 <0371> +58.2 <046c> -58.3 <03e202b8> 0.1 <04aa0003> -58.4 <046b> 58.3 <0362> ] TJ +ET BT 0.3513 Tc 36 0 0 36 472.05 209.51 Tm /F1.1 1 Tf [ <03e2040f> 644 <0e0f> +410 <0497> 293 <02a4> ] TJ 0 Tc ET BT 36 0 0 36 493.815 209.345 Tm /F1.1 1 +Tf <00a4> Tj ET BT 9 0 0 9 609.45 625.205 Tm /F2.1 1 Tf [ <0031> 0.5 <005200030026> +0.5 <004b> -0.5 <00440051> -0.5 <004a0048> ] TJ ET BT 9 0 0 9 609.45 573.2 +Tm /F2.1 1 Tf [ <0026> 0.5 <004b> -0.5 <00440055> 0.5 <00440046> 0.5 <0057> +-0.3 <0048> 1.5 <0055> 0.5 <00030044004f> -0.5 <0057> -0.3 <0048> 1.5 <0055> +0.5 <0051> -0.5 <00440057> -0.3 <0048> 1.5 <0056> 0.8 <00030014> ] TJ ET BT +9 0 0 9 609.45 521.195 Tm /F2.1 1 Tf [ <0026> 0.5 <004b> -0.5 <00440055> 0.5 +<00440046> 0.5 <0057> -0.3 <0048> 1.5 <0055> 0.5 <00030044004f> -0.5 <0057> +-0.3 <0048> 1.5 <0055> 0.5 <0051> -0.5 <00440057> -0.3 <0048> 1.5 <0056> 0.8 +<00030015> ] TJ ET BT 9 0 0 9 609.45 469.205 Tm /F2.1 1 Tf [ <0029> -0.8 <004c> +0.5 <0051> -0.5 <0044004f> -0.5 <0003003a004c> 0.5 <0047> -0.5 <0048> 1.5 +<00030029> -0.8 <00520055> 0.5 <0050> -0.3 <0056> ] TJ ET BT 9 0 0 9 609.45 406.805 +Tm /F2.1 1 Tf [ <0032> 0.5 <0057> -0.3 <004b> -0.5 <0048> 1.5 <0055> 0.5 <0003003a004c> +0.5 <0047> -0.5 <0048> 1.5 <00030029> -0.8 <00520055> 0.5 <0050> -0.3 <0056> +] TJ ET BT 9 0 0 9 609.45 344.405 Tm /F2.1 1 Tf [ <0031> 0.5 <00520055> 0.5 +<0050> -0.3 <0044004f> -0.5 <00030027> 0.5 <004c> 0.5 <00440046> 0.5 <0055> +0.5 <004c> 0.5 <0057> -0.3 <004c> 0.5 <0046> 0.5 <00030033> 0.2 <00520056> +0.8 <004c> 0.5 <0057> -0.3 <004c> 0.5 <00520051> -0.5 <0056> ] TJ ET BT 9 0 0 9 609.45 282.005 +Tm /F2.1 1 Tf [ <0029> -0.8 <00440055> 0.5 <0057> -0.3 <004b> -0.5 <0048> +1.5 <0055> 0.5 <00030027> 0.5 <004c> 0.5 <00440046> 0.5 <0055> 0.5 <004c> +0.5 <0057> -0.3 <004c> 0.5 <0046> 0.5 <0056> ] TJ ET BT 9 0 0 9 609.45 209.195 +Tm /F2.1 1 Tf [ <0027> 0.5 <004c> 0.5 <00440046> 0.5 <0055> 0.5 <004c> 0.5 +<0057> -0.3 <004c> 0.5 <0046> 0.5 <00030024> 0.5 <004f> -0.5 <0057> -0.3 <0048> +1.5 <0055> 0.5 <0051> -0.5 <00440057> -0.3 <0048> 1.5 <0056> ] TJ ET Q +endstream +endobj +3 0 obj +<< +/Font +<< +/F2.1 5 0 R +/F1.1 6 0 R +>> +/ProcSet [/PDF /Text] +>> +endobj +6 0 obj +<< +/DescendantFonts [7 0 R] +/BaseFont /LSUISA+font0000000013f5eeab +/Subtype /Type0 +/Encoding /Identity-H +/Type /Font +>> +endobj +5 0 obj +<< +/DescendantFonts [8 0 R] +/BaseFont /ZCCVRA+font0000000013f5eeab +/Subtype /Type0 +/Encoding /Identity-H +/Type /Font +>> +endobj +9 0 obj +<< +/Pages 2 0 R +/Type /Catalog +>> +endobj +7 0 obj +<< +/BaseFont /LSUISA+font0000000013f5eeab +/DW 1000 +/CIDSystemInfo +<< +/Supplement 0 +/Ordering (Identity) +/Registry (Adobe) +>> +/Subtype /CIDFontType2 +/FontDescriptor 10 0 R +/W 11 0 R +/CIDToGIDMap 12 0 R +/Type /Font +>> +endobj +10 0 obj +<< +/FontName /LSUISA+font0000000013f5eeab +/StemV 0 +/FontFile2 13 0 R +/Ascent 785 +/Flags 32 +/XHeight 523 +/Descent -662 +/ItalicAngle 0 +/MaxWidth 4959 +/FontBBox [-979 -662 4935 785] +/Type /FontDescriptor +/CapHeight 291 +>> +endobj +13 0 obj +<< +/Length 15672 +/Length1 15672 +>> +stream +true €cvt XôfpgmLglyf¼7Lheadü6hhea4$hmtx`  %=#,:!!>%(*ÿyÿs‘º7&'67&'&'6767'"*; )*¤AH (7 +{8(%C·9',/ 3C##)þéÿsº'&'67&'&'6767h#*: (*¥@H )8 +{8(%C·9',/ 3C##)ÿß.£ 2547&'&676'&5&76š M<'+C& / 0Ç/ +1 U +(;é#"&#"#"5476326324#"6;'-C+% +!2K"#%%<É2)/.#'nGE `ÿæå¬7#&5&'&'&7632å +$ + 1¼; Ëó¢¢!j'1B›þ»ÿæÿáP.A#"767676547&'&7676&'&7676"'&'&&632I› &ed +>h1,"& / #  ," /L.O +@'ü1E$'-1  übŒ@ ††¾:1Æþ¶dÿÙJÇ)1%#"'&'#"54767654'&63232654'&632&'76J!%?@%C`? f %7/%  þþ *B,0‡E183\* -49G + V¿{? +1r1=(-%.2dÿÉÁÍ+3%# '&'#"5474'&632!27654'&6326'76Á!T쭌þ¡O *<]Í +  +)U>îáG&.û…:2 41®MA$I5 -I’0<%kI2g,%'GoAL- E?" +ÿ)þšË1:%'#"'&'&563267654'&'&632327654'#"&546324#"32Ù +^YG%_Y +(/N K?*$470>-3I#&',`) +''îÿ}sl @WI!m2))L>*8ƒ&#f¶â€ŸF T%6;Oã¸a;dÿ7q1%#"'&54763232654''#"'&>32q xK_m9-- 60BxŸ ' % *)“B8hK/A3GsQ:I>&#Q4°M27tzv!(PJ%#3l ,¤“Lþ±# ˜b7HPþTþžÿ=þ?–Ï5%#"54767676767654'&54632–-3†¡>6EpUT<0+6CmY>Ó12 ! $,)¦]29(/)$_œuLqZ +X4:G,Y.,B'D'(%b) +9þïþdÿ‘+¦19%#"'#"547676'&463232545&54632&'76+\S. *@\:1Z +W779#*ã \,0`Ï·..+A#DV´Ë3)NR +e F‘þþA-%Ndÿ +y!%#"547632767654'632tfgÇV[MX])V #)jD$oI@ÕQIAg(Ea)+? p~gRaøeþ7&'67# %&'&'&'&76!27676767654'&632}"H ) +Ý&!q<‘‹áþéøþ»þبbL80/q +:ÈþÃÉyôˆ=H 7×8( 3Dþ3KV + L(87+6P-j59ÿÙÿÛ} 72#"546327676u*R4  5.N7ÿÙÿÛß{%#"54632765&'&4763ß+8ƒ„čk! Zž>",7# )&59^ÿÙÿÌ+²DR%#"''"''&547&'&'&#"#"5463276763263267676&4632&'&#"327676+);…t~5)$UV'   5G94 + .##är.k3$rrbI !+þ¢'.AH•A~$6=ÓD%5   %B7(ú11q$$sg;Lh– ÿÙÿºow?K%!"%''&547&'&12#"54632767632367632327654&'674'&#"3276o]}þ­þýV…( ! +)8I( +  %)ƒG=4<-(KGwОŽ2[ý-%+'H‰g_P´k*: F%!&!7"  +/'3` +N;4Zw +yÿÙÿÛèr'4%#&'#"546327&54632'.46324'&#"326ç 5slOc)v?1DE`@ %î F)I‹54A197Pœ_;=4Za/?2!- >+ÿÙÿÏHr)6%# '#"546327&546327654'674'&#"326H>2Ò¯eþñ\JU)v?1V殲¢B $ü° F)I´a,$?37Pœ_;=%"/B75*+ÿÙÿۉË#7#"546327654'&74632‰$dO'( + +¬c-A7,E!+ Z" + O +éûÿÙÿÛ²´ 7#"5463276'&'&#"547632²Ê+%D0) 2  +@-Ãè7 %#¤“Mþ²!“d7IOþTþÕÿÙÿۍÝ#%#"5463276'&54763Nkì­vK'* + #$ºu,>7&DY *." %) +îúÿÙÿÛÁ 1%'"&#"#"546327676323254'&54632Á:'u#6TO0(f%_ #  '(áMnL(/'7 ('!Š)f  =þïþêÿÙÿÁ%Ë1%#"'#"546327654'&5&6323276&74632%LV)j0   +?$W 0b¡¬’7, ?OZ|‰P%,0 c! +\þÛì>ÿÙÿ¢“W#"'#"'#"&#"&'&#"#"546327&7632326#2576763254'&7&7462“ 7@ ?23EGN !)C(( ##+/u33m0-; >BD B  +):"  +&-s+-<'V-3y$*22@=7ZT- T, $(% +ÿú*& R +eþ¡ÿÙÿÛŠÝ+%#2&#"#"546327&'&'&54632 M< «=8›) 51`76>H7#"&'#"54632767637654'&'&746322'&'&'&¢>3^,„H. 9$z ! +  +X FVe;$5("F(‹7/W0 >ÐÙ Z! + &) ¢³þ« @ÿÙÿÛuE%'#"546327676254&#"u+8x4iC,"#-/* B(!5žN9‰76<61:( ÿÜÿÑTŠ!%2#"'&'&#"#"54632767632FA$ -56#   *K8$#8 +ÿÙÿÑ#®%2#"'#"5463276'&'&632 htW K‡‘70+AQ ]rƒ&HÿÙÿ½ð¢%2#"'!"54632767632áR!aþóÝ^ &K9b€7; *ÿÙÿËɍ %2#"'&'&#"#"5463276763"º œE + /MK. +(MK977+ ,ÿÙÿËd¶6%2#"'#"'#"7#"546327676327676326VÇ> !;8,Ug Dzt> +D= 3+AK9`V)=-37' +8 ( (j 8ÿÙÿL1;%2#"'''&547&'#"546327676766763274'&#"676 ±kP-?'ˆ’\B"(,+©8>ˆqK77 <‹  aFB¢¾y,T-# 03[ C23+#ÿÙÿÛç€'%2#"'#"546327&546'4'&#"326×äTIV)v?1AH6 F)IK8B27O›_Bq!v". <,ÿÙÿÑÏ®BOY%2#"'%#"54627676'7&54632676327&546'4'&326!4&#"676Á w>þ€O°+7&& %l$-4@*$<|Su?1A' + @'DþuL',_oz{xK3:7'1aú2 +R !JƲ/+J\ NSPœ`Csg* 7'&:]"!ÿÕÿ£/˜0%2#"'&'#"546327654'&'&5476%67! ¶qc +7C˜\E:h@V3:ªÝpþ÷þËÏ×8}K=6 <.k6@7H•K~\?F£`†6?<›Á# ÊÒ$PÿÙÿÛÛ8%2#"'&547!"5463 %$%&#"# 5476732$32ÍB&!þ‡þ‡þLþ_Â{{2š9ý7æþêíºŒ Y§Lw1FÌæBcB<=K9,&766:7921[YN“˜x,*4%V.iV1,5>M>ÿÙÿ£­Û&%2#"'#"'&7#"54632767632&'&#"ž  'ZbˆŽ`F06 ‹Z K9 ++ 8?M7 DL.%# +ÿÙÿÑ{î(%2#"'#"'&7#"546327>72'&'&#m —Q &M`7fN/5%+5Z² K) ! 8[J(±s3-( Tÿ…¬¨ 3&67676¬!uñˆ%‚¨!'+e@49DÿüÇ ð (#&'&''&76767&'&54632'4#"6  >!6#>0(># #7#6]  0% #!!#B9!@ +ÿùûþü­ 21&>" ;`M*(¸ü­4 .*0"WG ß× #"547>32&#"32ÙC6 +79!& 0PD@+=`J3-´'&767&#"#"'&632K799F )L P4D“[ + a +ÿÙĶ 2'&767>2'&7>ñ# ;_M º0# ;^N*¸¶4 /*VA5.+!W‡9rÎ &67676&67676b*¥þ¿¬0%·×ë)¥þ¿¬0%µ×Î &5oB5BM, '4pA4ANÿóñ 321&767>#"''&767676767676'&76þ) .UQ "£2 !/  +- 9žC1- +ÿþ3Ý 2'&7> ! 8[J(±Ý3-( Tÿ…ú¬ 3&67676¬!uñˆ%‚!'+e@49Dÿý2 Z(#"'&''&76767&547632'4#"6 @/2">0A!# #7 5Ç   /&#!! #" 9"> +ÿúüÅýu 2'&67>" :`L*¹ýu5/*3 XGwß? #"54767632'&#"32É16 +9!& 0š#>+ _( I3-l'&767&#"#"'&632K799F V P4DþY  a \Ø%#"''&763676767676'&72Õ2 !/ + ÚC1/ +ÿó\w 22&767>#"''&763676767676'&72þ( .§£2 !/ + u.= 8C1/ +ÿÑ\Øæ!GO#"&'"'&76767&'&54632#"''&763676767676'&72'4#"6Á =!5 5+%8 2 !/ + >0a )%<2C1/ +œÿüD +[$1#"''&763676767>'&722'&767>Õ2 !/ +  :* .§ !¥1D 20 •-> 9ÿþG 2'&7> ! 8[J(±G3-( Tÿ…d¬| 3&67676¬!uñˆ%‚|!'+e@49Dÿþ +Ã"*#0&'&''&76767&'&547632'4#"6 + ?'9"90)!# #7#5/ /%!!#"8 "<ÿûýþ? 21&767># ;`M ¸þ?5/( YGßߪ #"547>32'&#"32É06 +79!& 0%@+=_( +H1-Ö‡'&767&#"#"'&632K899F Y O5Dh[   _ +ÿôÆà 12'&767>#"''&763676767>'&76þ) .¥£3 !/ +  Þ/? 8œD00 ÿÑÆÙODL#.'#"5&76767&'&54632#"''&763676767>'&76'4#"6Á  =!1 5+%8 3 !/ +  >0Ê# + '$ +;4! D00  ÿü¬ Ä$1#"''&763676767>'&762&767>Ö2 !/  :* .¨¥˜C1. •-=  8ÿþ± 2'&7> ! 8[J(±±3-( Tÿü +- (&'&''&76767&'&54632'4#"6 + >%7$90(># #8#6™ + 0%!""B8!!=ÿúþTÿ 2'&>" :`L)(¹û5/*0"W@ñ'&767&#"#&'&632K899F Y O5DÓ\  _ +ÿô0J 12'&767>#"''&763676767>'&76þ) .¥£2 !/ +  I0? 8žC00 ÿÏ0Ù¹CK#&'&'#"5&767&'&54632#"''&763676767>'&76'4#"6Á  ;&,  i!%8 2 !/ +  =04# )";/ +;4"C00 › ÿÒ­ÎQ'&767676ÎA‹ RbP*H 5'ÿݳͿ&0'&''6767&'&54632'4#"6Í 7*)j!#8 2 0: - ;. <4!9 ᜬ #"547>32&#"32–D5 6<#&1%D@+=bJ3-ÿÿÿæå‰" +> +stream + + #$%)*+,236789:;<=>?@BCFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ +endstream +endobj +8 0 obj +<< +/BaseFont /ZCCVRA+font0000000013f5eeab +/DW 1000 +/CIDSystemInfo +<< +/Supplement 0 +/Ordering (Identity) +/Registry (Adobe) +>> +/Subtype /CIDFontType2 +/FontDescriptor 14 0 R +/W 15 0 R +/CIDToGIDMap 16 0 R +/Type /Font +>> +endobj +14 0 obj +<< +/FontName /ZCCVRA+font0000000013f5eeab +/StemV 0 +/FontFile2 17 0 R +/Leading 42 +/Ascent 891 +/Flags 32 +/XHeight 242 +/Descent -216 +/ItalicAngle 0 +/MaxWidth 2000 +/FontBBox [-558 -307 2000 1026] +/Type /FontDescriptor +/CapHeight 346 +>> +endobj +17 0 obj +<< +/Length 20588 +/Length1 20588 +>> +stream +true +€ cvt œ&fpgmÄòglyf#X,âheadü6hhea4$hmtx"¸hloca# 6maxpÜ nameP<0prepXA4Œ4¤4¼4Ô4ì55545L5d5|5œò</VHďI +¶»_<õ¢ã5FÁO×Nû‰ýŒ5 !þEWû‰úß±T ¸ ³ 2 ¸ ²2¸ ³( A€?__@²x3@¸²r3@¸²n3@¸²j3@¸²T3@¼J3ÿÀ³2@¸³ + 2€¸³ 2@¸²Z3@A V3ÿÀS3ÿÀ²P3@¸²M3@¼G3ÿÀ³DE2@¸²B3@¼>3ÿÀ²:3A$ @p¯ð/ÿ/@ àÿÀ²3A/` ° ?OŸ +²l¹ÿÀ³EE2@¸³+.2@¸²()2¹ÿÀ²2½™'ÿÀ²2¹ÿÀ²BB2¹ÿÀ²682¹ÿÀ³*-2ßA +ï(ÿÀ³(.2ð¿þÿÀü³2@¸ý³2@AùPù°±À±oõõÿÀ¯²-12¹ÿÀ¯³ +2Aï ï€ï ï ï@ïÿÀï³2@¸ç²2¹ÿÀß²042¹ÿÀß³2PAÜÉÒ#âÒÇÒÆÈ ÿÀ¤³2€A££y)¥z2¨~ÿÀÙ²2¹ÿÀÙ²(*2A +§|2sq4lk²2 »¤@ì³ 2@¸ì²2½ékäk²½n/nÿÀ¸³ 2A ¸ ¸ÒŸÒ@Ò² 2A +©€Ïª‚²À»÷@ö³ 2@¸¢²3@¸¢³ 2ÀA ¢°òÀòÿÀô³&82A&Œ0Œ ã0ãî0îPîoîîŸîí0í/Þpې۟ÞÿÀy²2¹ÿÀy²$(2¹}|²2»~ÿÀ~³ 2@¸|²2¹ÿÀ|³ 2?½×O×@س2o»Ž@³2@¸Ô² 2½{z2ÿÀz²2½€‚‚²°¾‚ƒ@ÿ³ 2AToTTÐTïTT/T_T@P³2»Z@I²3½HHÿÀH²"2¹ÿÀG²"2¹ÿÀ²2¾ÿÀ-2²/Q»KON²d@¸Q²2¹ÿÀN³8:20»NÿÀN²#2¹ÿÀN²2¹ÿÀF² 2¹ÿÀC³ +2»DÿÀ+²2¹ÿÀ+²2¹ÿÀ*³2A:37 707€3ÿÀ2³2PAd2@2`2 2°2202P2à266ÿ6p6ð61?11¿1à11`10`00P//@/`/€/ /À/ð/Ï-ÿ-0-€-°-ß-o,, ý™@:@5%,2@j%,2@.%,2@(%,27` p € 0 @ P  ¸ÿÀ²:3¸ÿÀ@:3ÚMêMúM7ÏA ßïÏßï@‡Ï>ß>ï>ÏMßMïMÏÞßÞïÞÏ-ß-ï-@M:27_o/?O_o/?O` p € 0 @ P     ° À Ð °ÀÐàðP`p€ /?@ðACÛ Û°Û€ېÛÛÀÛÐېÛ`ÛpÛ@ÛPÛ#Û0ÛÛ# Ú€ڐÚ@Ú#Ú0ÚÚ#ÙpِÙÙ@"0$@$$ $$ð$Ð$à$°$À$ÀA:Ø ذØ€ؐØ#Ø0ØØ#À× ×°×€א× ×°×€א×`×p×@×P×#×0×ײ#7A›_›Ÿ›ß›/›?›o››››@š³',2€¸š²&3@¸š²"3@¸š²3@¸š²3@¸š³2_AšŸšßššš?šÿÀ™²D3@¸™²=3@¸™²:3ßA7™_™¯™O™Ÿ™/™?™¯™™?™°™à™p™ ™O™_™™/™?™šš™™z/z@ ¸º²i¸´²(¸³²(¸²²(A# î# ®# Ÿ# ”# W# @ # ù# Å# §# A +J$ ð$ é$ j@$ è$ Æ$ £$ ¢$ »ã" !@" å" Ý" ·" ª" “" \" Q" L" A +(  ^ @ ü á Ë È ¡ Y : A +ò4 œ4 —4 5·4 4 4 º[² »[  +²*>¸ ²*>¸!²M%¸²MA¸²MR¸²Mr¸²M“A ±± ²*¸ ²*¸²*^¸²*9¸þ²*#¸û²f¸ú²f¸ö²f4¸õ²f4¼ófñ²fžA ê(ç&«¸²M?¸·²M“A ´>%²@¬²*r¸¨²*(¸§²*$¸¦²*$¸£²*¸¡²f.¸ž²f“¸²f业²(lA ™(˜&s²M¸q²M$¸p²M/¸o²M5¸k²>͸i²>äA g±šf*«a²f*¸_²fžA ](š\5G²M9¸F²>ÍA E>%DCB±«@²*0¸>²*&¸=²f¸<²f+¸8²(¸7²(ž¼6(š)²Mr¼$*#²*«¸²f)¸²fE¸²(A >%>²*)¸²* ¾ fš +&š¶ýMrû>¸V²ú@¸²÷(¸¶ìMbëM¸²ê@¸«¶ßMrÞ>¸«@ Ü*äÛf"Ê*¸@É*.Ã&y¸(»³M±f)°fb¯f¸²®&¸«²¨(¸@  fL˜*+—&¸š¶’f)‡@¸«@…*y‚&uM“tM‰s*p(^j(¸@i*Rh* gf)efga*“`5¸¶^*ÍS5¸²Kf¸V²I>¸¶HfRF&¸²?f¸V@ ;f42*“.5»-C³ÍU7¼/€r@.½~bTB/'%!  +¸ÿà@+J°KKSB°7+K¸ÿR°8+K°P[X±ŽYK°ÀcKb °öS#¸ +QZ°#B°KKTB°8+°ˆ¸TX¸ÿ±Ž…°CX¹,…¹F…YYv??>9FD>9FD>9FD>9FD>9F`D>9F`DED+++++++++++++++++++++++++°–KSX°ªY°2KSX°ÿYK°)S \X¹ljED¹kjEDYX¹hlERX¹lhDYYK°;S \X¹>kED¹MkEDYX¹\>ERX¹>\DYYK°;S \X¹±>ED±>>EDYX¹O±ERX¹±ODYYK°ZS \X¹C>ED±>>EDYX¹‹CERX¹C‹DYYK°žS \X¹*lED¹@lEDYX¹l*ERX¹*lDYYK°S \X±&&ED±f&EDYX±2&ERX±&2DYYK°QS \X±&&ED±(&EDYX±­&ERX±&­DYYK¸S \X±&&ED±5&EDYX¹(&ERX¹&(DYY++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++eB+++++++++++++++++++++++++++++++++++++++++++++++++++³=vnXEe#E`#Ee`#E`°‹vh°€b ±nvEe#E °&`bch °&ae°v#eD°n#D ±=XEe#E °&`bch °&ae°X#eD°=#D±XETX±X@eD²=@=E#aDY³N8qEe#E`#Ee`#E`°‰vh°€b ±8Ee#E °&`bch °&ae°#eD°8#D ±NqEe#E °&`bch °&ae°q#eD°N#D±qETX±q@eD²N@NE#aDYKRBKPX±BYC\X±BY³ +CX`!YBp>°CX¹;!~º¨ +Y° #B° #B°CX¹-A-Aº +Y°#B°#B°CX¹~;!º¨ +Y°#B°#BtEiDEiDssssttuuuu+++ss++++++EiDssst+EDssssstttEDsttttttuuuEDsuEDssttEDsssssttttuuuuuuuuuuu++tttttts+CX±MMEiD¸ÿÀ³M:2+Ys++uuu+++++ss+C\X¸ÿÀ²3¸ÿÀ@ 3ÕMåMõMÀA ÐàÀÐà@À>Ð>à>ÀMÐMàMÀÞÐÞàÞÀ-Ð-à-7+tttttts++Ysststststststu+sus+++s++++u+++s+++++t+s+sst+ss++++++s+s+++t+++sssss+ss+++s++++sts+s++++u++++++++u+++++s++++stu++sss+++u++s++++++++++stust+stu+++++++++++++++++++stu++++ŽLL”ÿáÿäÿèþJÿük#þjÿà$$%„$薿]ËE.X9K +(#KPJå ¯1êF%Oœ"NA‘ GÿéÓi«¨@'LHÿßQPÿ·.;—šL +#ÿÞ"s‡ºÖÿZ˜ ÿéPRnÿ·\ÑZ[ÿIn~˜¡½äˆÀÿ`5br(‚ÿ¨8Ø µÿÄÿÐn¡ºì+Fÿî@èÿh33n¢¶Ü5C4\]|¯(;H‰œº{¯ÿ¤7càxÀ!Øðÿz'4RФÁÃëFTmþ?ÿN+En„†®¯ÂÂÄ!I{ÁÞánæc§íöø(i~?‚2ýÿµ&5@EIWl¬&@[{œw~¶Ü(ïÿ8ÿÃ/@‚ª¶ÎÓ×åFMÖ~³†ÿ{/h„¥¹õ   37x{Àá#Xb¯Œÿyÿ!$]ehjƒ…·Ïâëí /7?PÄÏW\–@–«ÂüÂþÑþà!$0MM]fz|¸¸ÃÚ/=JP_f|•£¦¶ÇÐéïùŒ”»ÅÏÐ*DŸÌ!Úûaýþ¿þïÿ ÿ+ÿ3ÿÿœÿÛÿí%?CZk€„•§´ÍÕÖßßßäðöû"#',?WXwŠ“¤Æáäü ""*6J\‚ìü +#Ax—Òúy22«µðä%Ìü›ýÞþþiþ–þ›ÿ54BHJWdqqrvwzzƒœ¯¯²»ÈÌÏÏÛÜßäääéëôýþ"#07C[`exxxx{‚‰˜˜›ž¡¦ÑÒÓßãõ-AGJP[]]_c‹´´ÎÖÛâú'EgˆŠ°´ÔÕ&AHkÇÑ2HI_c‹¡£ÂÊäÿ“¢¸è +6PT‰©»Üÿ' M)“[/ÿ¸Û¾tË”«ŠŠd_¸½|â¬‚D= +̼ÌÓèÇî”a¾™6;…ÌPy££ß¯ëd_UòVïÈÏŠCFÞ«ÆJ]ؤ»™ e7tdµú‘¹ ¶%Ðìà/ýB?v:7¹QÿÇ)ÿë?á…ÛúVN/¦ã»Õ4þÑä›Íç³âÊ$¸õ¹4Zà#/ýÉþDtƒöAPO¨Q˜RIn¯{{œjƒëÍ"Óښº%¥€ÿÈ ’àL›}ø4¨mi ÿæþ¤jj88bZDmHÿm¦¦@@ÿ\ÿ™Y+ÎL¿@Ȗ þíH´•ÛH‹³þdÀê%2°ívª´¾Í1x„›Ìâô + cÑê÷B,4A8HXlY½CpÓ(7BPZdsx‚Œœ¥½Îð\¾Ø,cêAKU_s¦ ƒ³Ad*ëú8t,@‚–¶ÀÌÜæðÿ + ,;DVc÷Wd6P±ÿ¶9NDÌå$B"¤ð`à9ã,þNÿ8i½ÿ T=qAPýO5þG9«€P¥+¬WUsÚ\ÎrÿXšD@BUT@?>=<;:987543210/.-,+*)('&%$#"!  + ,E#F` °&`°&#HH-,E#F#a °&a°&#HH-,E#F`° a °F`°&#HH-,E#F#a° ` °&a° a°&#HH-,E#F`°@a °f`°&#HH-,E#F#a°@` °&a°@a°&#HH-, <<-, E# °ÍD# ¸ZQX# °D#Y °íQX# °MD#Y °QX# ° D#Y!!-, EhD °` E°FvhŠE`D-,± +C#Ce +-,± + C#C -,°#p±>°#p±E:± -,E°#DE°#D-, E°%Ead°PQXED!!Y-,°Cc#b°#B°+-, E°C`D-,°C°Ce +-, i°@a°‹ ±,ÀŠŒ¸b`+ d#da\X°aY-,E°+°#D°zä-,E°+°#D-,°CX‡E°+°#D°zäŠEi °#DŠŠ‡ ° QX°+°#D°zä!°zäYY-,-,°%F`ŠF°@aŒH-,KS \X°…YX°…Y-, °%E°#DE°#DEe#E °%`j ° #B#hŠj`a °аRy!²@¹ÿàE ŠTX#!°?#YaD±ŠRy³@ E ŠTX#!°?#YaD-,±C#C -,±C#C -,± C#C -,± C#Ce -,±C#Ce -,±C#Ce -,KRXED!!Y-, °%#I°@`° c °RX#°%8#°%e8Šc8!!!!!Y-,K°dQXEi° C`Š:!!!Y-,°%# Šõ°`#íì-,°%# Šõ°a#íì-,°%õíì-, °` <<-, °a <<-,°++°**-,°C°C -,>°**-,5-,v¸Ÿ#p ¸ŸE °PX°aY:/-,!! d#d‹¸@b-,!°€QX d#d‹¸ b²@/+Y°`-,!°ÀQX d#d‹¸Ub²€/+Y°`-, d#d‹¸@b`#!-,´°&°&°&°&Eh:°-,´°&°&°&°&Ehe:°-,KS#KQZX EŠ`D!!Y-,KTX EŠ`D!!Y-,KS#KQZX8!!Y-,KTX8!!Y-,°CXY-,°CXY-,KT°C\ZX8!!Y-,°C\X °%°% d#dad¸QX°%°% F°`H F°`HY +!!!!Y-,°C\X °%°% d#dad¸QX°%°% F¸ÿð`H F¸ÿð`HY +!!!!Y-,KS#KQZX°:+!!Y-,KS#KQZX°;+!!Y-,KS#KQZ°C\ZX8!!Y-, ŠKT°&KTZŠŠ +°C\ZX8!!Y-,F#F`ŠŠF# FŠ`Ša¸ÿ€b# #й''ŠpE` °PX°a¸ÿº‹°FŒY°`h:-,±B±#ˆQ±@ˆSZX¹ ˆTX²C`BY±$ˆQX¹ @ˆTX²C`BY±$ˆTX² C`BKKRX²C`BY¹@€ˆTX²C`BY¹@€c¸ˆTX²C`BY¹@c¸ˆTX²C`BYYYY-,°CTXKS#KQZX8!!Y!!!!Y-9‡2ÇÇQÇã.Ç9Pã4\NsOOMsF9*9+ªLsFJKQª&i ã¬tF5Eæ; · +f i 8 нYØd¨‰[ûq‡chƒ¼­5¥¶"_oA ­5ù#¥÷5@ ¸ @Po¯¾Æß+öäNô]]ýpO jÊЂ„B+9%% c›:û¨ž)%% BóÓþ-QÿáWk$¹ÿ€³ +4¸ÿ€³ +4¸ÿ€³ +4 ¸ÿ€@Y +4  6M†‹‰kkyy‰§¨ ¥ÇË +&CA€…†„·» +/&hwv v†º7$Z¸@Z!©jj _/p&&%n¹2+NCX@  + + +MôMé]³ +MôMíYN]ö]Mä?í?í99ìôííôíÉ10KSy±2Cy@$ &%  &  +% +% % %+++++*++]q]q++++#&&#"3267#"$54$323267W',ð˜Ô1?\Ĝ€Õvr÷¥Ùþ¯·ËYŸ\ /kþ*¸Ä’v—¹¶þՙp‰uwk®F¸Â\À>$/3qL+ @\€ +4#€ +4€ +4+€ +4ghg%š)¸(gih—˜¤c "" "#."5->0P},=µ+Nô]q>-,($(( $9,(%(%$-.¼!=++??<íí<ô<9/<ííí<Nô"! ( _  }P##(Po}"=v+Nôq]rLü·Gz+:%% #O`û—iü¢uR%%Zl½$6"%Pÿáðk «@3hh˜ +×רØ×ç  '''( +€ +4€ +4¸ÿ€³ +4¸ÿ€³ +4 ¸ÿ€³ +4¸ÿ€@d +4€ +4€ +4—–™™– — ¦¦ ÇÇ Æ××   +   ffxw vv—¶¶×ð V55  nX+NôMCX@M@/ ?  Mé]N]öqMé]@M@/ ?  MíN]öqMíY?í?í10KSy±QCy@<%&& %& %%%% % % +%%++<+<+++++*+++++]q]C\X´9¸ÿô@ 99 9¸ÿè²9 ¸ÿì²9¸ÿè² 9 ¸ÿì± 9++++++++Y++++++++q]$! '&"32765&D•—Èþ“þ’Èž›8ºaOzU™gEXbd›_ þnþÒþþÄþüøÄ .“L¾œþÜþ¥¦t2@â  n4¥L$Ϲ ÿø² 9 ¸ÿø@\ 9O&—öö ù"* "" "# "#..!!Þ`€ŸŠ/&&-  P `  }%&¼!=++Nô]r¸ÿÀ@aK5¶9~¦-¬<·-Æ-Ø!×-Ø5æ- 5EJJI5Xf•›5¥¶¶ 3€>™š-œ1>P>c`>r–¯¥:¿à> +P>t;H;¸ÿÀ@Ä9ï;23 +,(+,%+,)<3«3»33=3M3}33Ÿ3­3½3Î3Ý3í3 p33;!eu;Lz‰Ÿ¦ÈÙ p &++,))f/;H2—]//@)+4_oŸ¯¿ßìü@4 ,,/,?,,D)C%%%ê/ ?  ¿      ¸»@@>€>@>`>>¨¸ÿÀ@(P(?ÿ+7772@#%4oð0@P`=8U¸1…+Nô]q+Míqôq+Á]]qô]]r<ý]öä]??9+/]q+<ôííýôäí9]qr9]qr9999É<<<]+r±CTX´ ]Y10Cy@28:# +%&!% &9& "#:7  +" 8;++++<+++++++rq]rq]q+q+++%#"&546%54&&#"#"&546632327#"&'32I«ˆPj¸5@(A*&I;?UrÌn…› + 2kDPZ +y;'!-2Š—iOk«Ž^j7)+(1EL3HƒFqB*—þ•@!%JCK•9GQ67.#Nÿä_Ã#ñ@mõ$ Y ¦ÅÅ#Øêâ +,*Wf gv v +r—¬¬¸º¶º#ÅÏ%ÐàÐà!ðë& !H +¸ÿÀ³2?¸ÿÀ@ 4 °¯%ï%%2¸ÿÀ³2?¸ÿÀ¶(+4иÿÀ@ 4$8Ž+Nô+]++Mí]N]ö]q++Mär?í?ííq<999]q9q9É10]q]rq%#"547632#"&'&'&#"326@BÅo»àf{ؑ«E8;M 0"4TI7K1Xñ|yÆ¿‘¯’Z9DNd?3MŸ„ñ;+.OÿäEL-z@#˜ ¨ ¹ ·7- ¢Å#¸î´¢¸[·+„  ¸_@y!&**¸ÿÀ@2?O°/¸ÿÀ²K5/¸ÿÀ³;=4/¸ÿÀ@ 4P/Ð/p/ //&&@¸ÿÀ@2?0@PÐ.8+Nô]q+Mí]N]r+++ö]q+Mí]í]<? ‚½—ïz4Ak*ý†Žœ¡±ª&ŠOÿä]à 5@XK]ohey% +§ÆÉÑÑØ Øóø +"@4Vfo"w"ƒ†ê è *ÿ + ] F¸(´&¸³ ¸ÿÀ@ 2?@"4i¸ÿÀ¶2?¸ÿÀ³ 4¸ÿÀ@5/"?"_"ï"" )2¸ÿÀ³2?¸ÿÀ³?¸ÿÀ³&04¸ÿÀ@ 4Ð!8Ž+Nô]++++Mý]äN]ö++q+Mí++<?í?íôý<<ô]äÉq10Cy@%++++*+]+q]q!3267#"'&54324&'&#"]ýÿ ZEa) / >¸ÿÀ@?>@9>@&'4>@4>@40>>¸ÿÀ³4>¸@@47— /@/14¸@ +1—/E&H¸ÿÀ³ ?H¸ÿÀ@ + ? HHH:¸ÿÐ@2? ::2rr/¸@),B@ ?B@ ?/BBBBH!@ ?@ ?/¸@&402?4444@!&+,¸ÿÀ@2?,@()4,@#%4,o,,P,Ð,,wM8U+ö]q+++ä<í]q+í]]++í]]++ý]qü<äíq+í]++?í?íô<ý+<9/í9+/±CTX´@!4+Yí+]+++++±CTX¹>ÿÀ³%'4>¸ÿÀ²4++Y99999999910]q]+!##"'"372#"&&5467&5467&&54632"32654'&"32654'&&;³1o¿Jr-=7>­ÒOqhU¨~ÐZE^‚js†xà°]J:PO6u¸•onŸ³A0ûñ53SJCF8L,ß¹ÿð² 9.¸ÿÀ@/K54FP.Ð.& ", ",¯¿$¸Û@"'$"#" $ ##$!¸Ú@c#($,##",f"!! +  *@!A?@EG4@=5@C5@9:4@014@'(4@+-4@"$4@4@4Ï Ï¸»@À..°./.p..@>5.¸ÿÀ³9:4.¸ÿÀ³014.¸ÿÀ³'(4.¸ÿÀ³4.¸ÿÀ³,.4.¸ÿÀ@4.*('¸ÿÀ@!A?ð'/'À'Ð''¸ÿÀ³7:4'¸ÿÀ³/14'¸ÿÀ³"$4'¸ÿÀ@ !4'-N+Nô++++]q+LýãQCd‡ þ“k5$$!e¡t;!7Eþ d"$$ k¶j4%*#l Û@€?$¸î´" $¸î´#$»î#ÿÀ@464¯@  + ¸ÿÀ@464   @)    *@?¸ÿÀ²:5¸ÿÀ³ #4¸ÿÀ³4¸ÿÀ@/-04°{@P` °/?°ÀàNÀ+]qrö]]q+++++<ý]<ôí]+?.Bl[@@ZZ@@[þ;ýc7$$"c"c7%+$LÀ@€?`° $¸î´"$¸î´# $¸î@# +* @? ¸ÿÀ²:5 ¸ÿÀ³-44 ¸ÿÀ³ #4 ¸ÿÀ@#4°     { °/?Àà¸ÿÀ³144¸ÿÀ¶-.4NÀ+++]qö]]q+++++<ý]<?.BLûvc7$$"cÈb7%LuÃFN@G@ +7<F<F67$¸×´"-$(¸×@"A$<#"$##@'"$'¸Ø·#@;7$;¸Ø@*#B$F##"-6!<2ff + +F<;(' +H@2?H¸ÿÀ@U"4H H°HÀHH*@=5@+-4Ÿ¿Ï@é!"*.-@=5-@+-4Ÿ-¿-Ï-@---é777*BA¸ÿÀ@"4`AàA A°AÀA/AÀAÐAAGH¸S³!N++Nô]qr+54&&#"!567654&'5ÉMƒNZz!P“Pas-'>þ9++X-Aþ'-/(!/5'>þ;'>§{TCTVZPY‰–þl4$$'a’}D!??þ +e%$$#1R’@$Kþ +c?$$ lj4%F7Ã+¹ÿèµ 9 -¸ÿÀ@8K5P-%ÙÖÕ5FÖß!+!+¯¿$¸Û@"&$!#" +$##$ ¸Ú@#'$+##!  +f¸_³Ð¸ÿµ@V5y+ +  *@!A?@=5 Ï@EG4@C5@9:4@564@014@+-4@'(4@"$4@4@4¸»@-°-/-p--@>5-¸ÿÀ³9:4-¸ÿÀ³564-¸ÿÀ³014-¸ÿÀ³,.4-¸ÿÀ³'(4-¸ÿÀ³4-¸ÿÀ@4-*''&¸ÿÀ@!A?ð&/&À&Ð&&¸ÿÀ³7:4&¸ÿÀ³/14&¸ÿÀ@ $4&,N+Nô+++]q+þ'5+VJ'5þ';'>§yNGeK9¢þ”l5$$%c s> +stream + +  +endstream +endobj +18 0 obj (Mac OS X 10.6.8 Quartz PDFContext) +endobj +19 0 obj (Adil) +endobj +20 0 obj (al-Nashir al-Sahafi Version 4.5.0) +endobj +21 0 obj (D:20110812232909Z00'00') +endobj +22 0 obj +<< +/Creator (al-Nashir al-Sahafi Version 4.5.0) +/Author (Adil) +/Producer (Mac OS X 10.6.8 Quartz PDFContext) +/ModDate (D:20110812232909Z00'00') +/CreationDate (D:20110812232909Z00'00') +>> +endobj xref +0 23 +0000000000 65535 f +0000000015 00000 n +0000000138 00000 n +0000008807 00000 n +0000000221 00000 n +0000009026 00000 n +0000008889 00000 n +0000009214 00000 n +0000034643 00000 n +0000009163 00000 n +0000009448 00000 n +0000025429 00000 n +0000026363 00000 n +0000009685 00000 n +0000034877 00000 n +0000055787 00000 n +0000055953 00000 n +0000035127 00000 n +0000056184 00000 n +0000056237 00000 n +0000056261 00000 n +0000056314 00000 n +0000056357 00000 n +trailer + +<< +/Info 22 0 R +/Root 9 0 R +/Size 23 +/ID [<0c87b1b9a219e7aeea550c93d2d72c96> <0c87b1b9a219e7aeea550c93d2d72c96>] +>> +startxref +56561 +%%EOF diff --git a/test/test_manifest.json b/test/test_manifest.json index c74af77..90a9f8a 100644 --- a/test/test_manifest.json +++ b/test/test_manifest.json @@ -64,6 +64,11 @@ "rounds": 1, "type": "load" }, + { "id": "complexttffont-pdf", + "file": "pdfs/complex_ttf_font.pdf", + "rounds": 1, + "type": "load" + }, { "id": "i9-pdf", "file": "pdfs/i9.pdf", "link": true, -- 2.39.5