web/lib/Zend/Pdf/Cmap/ByteEncoding.php
author Yves-Marie Haussonne <1218002+ymph@users.noreply.github.com>
Mon, 10 Mar 2014 13:38:12 +0100
changeset 1075 9b0e09c0990f
parent 807 877f952ae2bd
child 1230 68c69c656a2c
permissions -rw-r--r--
add iii-kadokawa-sympo2014spring event for tokyo

<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Pdf
 * @subpackage Fonts
 * @copyright  Copyright (c) 2005-2012 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: ByteEncoding.php 24593 2012-01-05 20:35:02Z matthew $
 */

/** Zend_Pdf_Cmap */
require_once 'Zend/Pdf/Cmap.php';


/**
 * Implements the "byte encoding" character map (type 0).
 *
 * This is the (legacy) Apple standard encoding mechanism and provides coverage
 * for characters in the Mac Roman character set only. Consequently, this cmap
 * type should be used only as a last resort.
 *
 * The mapping from Mac Roman to Unicode can be found at
 * {@link http://www.unicode.org/Public/MAPPINGS/VENDORS/APPLE/ROMAN.TXT}.
 *
 * @package    Zend_Pdf
 * @subpackage Fonts
 * @copyright  Copyright (c) 2005-2012 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Pdf_Cmap_ByteEncoding extends Zend_Pdf_Cmap
{
  /**** Instance Variables ****/


    /**
     * Glyph index array. Stores the actual glyph numbers. The array keys are
     * the translated Unicode code points.
     * @var array
     */
    protected $_glyphIndexArray = array();



  /**** Public Interface ****/


  /* Concrete Class Implementation */

    /**
     * Returns an array of glyph numbers corresponding to the Unicode characters.
     *
     * If a particular character doesn't exist in this font, the special 'missing
     * character glyph' will be substituted.
     *
     * See also {@link glyphNumberForCharacter()}.
     *
     * @param array $characterCodes Array of Unicode character codes (code points).
     * @return array Array of glyph numbers.
     */
    public function glyphNumbersForCharacters($characterCodes)
    {
        $glyphNumbers = array();
        foreach ($characterCodes as $key => $characterCode) {

           if (! isset($this->_glyphIndexArray[$characterCode])) {
                $glyphNumbers[$key] = Zend_Pdf_Cmap::MISSING_CHARACTER_GLYPH;
                continue;
            }

            $glyphNumbers[$key] = $this->_glyphIndexArray[$characterCode];

        }
        return $glyphNumbers;
    }

    /**
     * Returns the glyph number corresponding to the Unicode character.
     *
     * If a particular character doesn't exist in this font, the special 'missing
     * character glyph' will be substituted.
     *
     * See also {@link glyphNumbersForCharacters()} which is optimized for bulk
     * operations.
     *
     * @param integer $characterCode Unicode character code (code point).
     * @return integer Glyph number.
     */
    public function glyphNumberForCharacter($characterCode)
    {
        if (! isset($this->_glyphIndexArray[$characterCode])) {
            return Zend_Pdf_Cmap::MISSING_CHARACTER_GLYPH;
        }
        return $this->_glyphIndexArray[$characterCode];
    }

    /**
     * Returns an array containing the Unicode characters that have entries in
     * this character map.
     *
     * @return array Unicode character codes.
     */
    public function getCoveredCharacters()
    {
        return array_keys($this->_glyphIndexArray);
    }

    /**
     * Returns an array containing the glyphs numbers that have entries in this character map.
     * Keys are Unicode character codes (integers)
     *
     * This functionality is partially covered by glyphNumbersForCharacters(getCoveredCharacters())
     * call, but this method do it in more effective way (prepare complete list instead of searching
     * glyph for each character code).
     *
     * @internal
     * @return array Array representing <Unicode character code> => <glyph number> pairs.
     */
    public function getCoveredCharactersGlyphs()
    {
        return $this->_glyphIndexArray;
    }


  /* Object Lifecycle */

    /**
     * Object constructor
     *
     * Parses the raw binary table data. Throws an exception if the table is
     * malformed.
     *
     * @param string $cmapData Raw binary cmap table data.
     * @throws Zend_Pdf_Exception
     */
    public function __construct($cmapData)
    {
        /* Sanity check: This table must be exactly 262 bytes long.
         */
        $actualLength = strlen($cmapData);
        if ($actualLength != 262) {
            require_once 'Zend/Pdf/Exception.php';
            throw new Zend_Pdf_Exception('Insufficient table data',
                                         Zend_Pdf_Exception::CMAP_TABLE_DATA_TOO_SMALL);
        }

        /* Sanity check: Make sure this is right data for this table type.
         */
        $type = $this->_extractUInt2($cmapData, 0);
        if ($type != Zend_Pdf_Cmap::TYPE_BYTE_ENCODING) {
            require_once 'Zend/Pdf/Exception.php';
            throw new Zend_Pdf_Exception('Wrong cmap table type',
                                         Zend_Pdf_Exception::CMAP_WRONG_TABLE_TYPE);
        }

        $length = $this->_extractUInt2($cmapData, 2);
        if ($length != $actualLength) {
            require_once 'Zend/Pdf/Exception.php';
            throw new Zend_Pdf_Exception("Table length ($length) does not match actual length ($actualLength)",
                                         Zend_Pdf_Exception::CMAP_WRONG_TABLE_LENGTH);
        }

        /* Mapping tables should be language-independent. The font may not work
         * as expected if they are not. Unfortunately, many font files in the
         * wild incorrectly record a language ID in this field, so we can't
         * call this a failure.
         */
        $language = $this->_extractUInt2($cmapData, 4);
        if ($language != 0) {
            // Record a warning here somehow?
        }

        /* The mapping between the Mac Roman and Unicode characters is static.
         * For simplicity, just put all 256 glyph indices into one array keyed
         * off the corresponding Unicode character.
         */
        $i = 6;
        $this->_glyphIndexArray[0x00]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x01]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x02]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x03]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x04]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x05]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x06]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x07]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x08]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x09]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x0a]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x0b]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x0c]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x0d]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x0e]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x0f]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x10]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x11]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x12]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x13]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x14]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x15]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x16]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x17]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x18]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x19]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x1a]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x1b]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x1c]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x1d]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x1e]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x1f]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x20]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x21]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x22]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x23]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x24]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x25]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x26]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x27]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x28]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x29]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x2a]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x2b]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x2c]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x2d]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x2e]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x2f]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x30]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x31]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x32]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x33]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x34]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x35]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x36]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x37]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x38]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x39]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x3a]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x3b]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x3c]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x3d]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x3e]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x3f]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x40]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x41]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x42]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x43]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x44]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x45]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x46]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x47]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x48]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x49]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x4a]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x4b]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x4c]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x4d]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x4e]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x4f]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x50]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x51]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x52]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x53]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x54]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x55]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x56]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x57]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x58]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x59]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x5a]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x5b]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x5c]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x5d]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x5e]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x5f]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x60]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x61]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x62]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x63]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x64]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x65]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x66]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x67]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x68]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x69]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x6a]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x6b]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x6c]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x6d]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x6e]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x6f]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x70]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x71]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x72]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x73]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x74]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x75]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x76]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x77]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x78]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x79]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x7a]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x7b]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x7c]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x7d]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x7e]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x7f]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0xc4]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0xc5]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0xc7]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0xc9]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0xd1]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0xd6]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0xdc]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0xe1]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0xe0]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0xe2]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0xe4]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0xe3]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0xe5]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0xe7]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0xe9]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0xe8]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0xea]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0xeb]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0xed]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0xec]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0xee]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0xef]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0xf1]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0xf3]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0xf2]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0xf4]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0xf6]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0xf5]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0xfa]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0xf9]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0xfb]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0xfc]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x2020] = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0xb0]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0xa2]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0xa3]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0xa7]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x2022] = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0xb6]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0xdf]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0xae]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0xa9]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x2122] = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0xb4]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0xa8]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x2260] = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0xc6]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0xd8]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x221e] = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0xb1]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x2264] = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x2265] = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0xa5]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0xb5]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x2202] = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x2211] = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x220f] = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x03c0] = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x222b] = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0xaa]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0xba]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x03a9] = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0xe6]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0xf8]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0xbf]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0xa1]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0xac]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x221a] = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x0192] = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x2248] = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x2206] = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0xab]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0xbb]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x2026] = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0xa0]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0xc0]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0xc3]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0xd5]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x0152] = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x0153] = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x2013] = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x2014] = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x201c] = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x201d] = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x2018] = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x2019] = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0xf7]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x25ca] = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0xff]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x0178] = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x2044] = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x20ac] = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x2039] = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x203a] = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0xfb01] = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0xfb02] = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x2021] = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0xb7]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x201a] = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x201e] = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x2030] = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0xc2]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0xca]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0xc1]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0xcb]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0xc8]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0xcd]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0xce]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0xcf]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0xcc]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0xd3]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0xd4]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0xf8ff] = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0xd2]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0xda]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0xdb]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0xd9]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x0131] = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x02c6] = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x02dc] = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0xaf]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x02d8] = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x02d9] = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x02da] = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0xb8]   = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x02dd] = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x02db] = ord($cmapData[$i++]);
        $this->_glyphIndexArray[0x02c7] = ord($cmapData[$i]);
    }

}
PKEV}* tweet_live-7633ab659cfd/web/.htaccess.tmplUTu|TPKE[mB .tweet_live-7633ab659cfd/web/2011-2012-museo-audiovisuel/config.phpUTu|TPKEx̐[ tweet_live-7633ab659cfd/web/2011-2012-museo-audiovisuel/images/big_visuel_museo_2011_fr.pngUTu|TPKEfyL tweet_live-7633ab659cfd/web/2011-2012-museo-audiovisuel/images/head_logo.gifUTu|TPKE\tFM 3tweet_live-7633ab659cfd/web/2011-2012-museo-audiovisuel/images/museo-2011.jpgUTu|TPKEЕ;3>dBeR tweet_live-7633ab659cfd/web/2011-2012-museo-audiovisuel/images/slide4_museo_fr.pngUTu|TPKE7[MB^sA hvtweet_live-7633ab659cfd/web/2011-2012-museo-audiovisuel/index.phpUTu|TPKEP' C >wtweet_live-7633ab659cfd/web/2011-2012-museo-contribution/config.phpUTu|TPKEx̐\ \}tweet_live-7633ab659cfd/web/2011-2012-museo-contribution/images/big_visuel_museo_2011_fr.pngUTu|TPKEfyM  tweet_live-7633ab659cfd/web/2011-2012-museo-contribution/images/head_logo.gifUTu|TPKE\tFN } tweet_live-7633ab659cfd/web/2011-2012-museo-contribution/images/museo-2011.jpgUTu|TPKEl>dBeT tweet_live-7633ab659cfd/web/2011-2012-museo-contribution/images/polemic_fly_home.pngUTu|TPKEЕ;3>dBeS tweet_live-7633ab659cfd/web/2011-2012-museo-contribution/images/slide4_museo_fr.pngUTu|TPKEX6GI D S }Rtweet_live-7633ab659cfd/web/2011-2012-museo-contribution/images/tweetExplainBgd.gifUTu|TPKEWj~B P\tweet_live-7633ab659cfd/web/2011-2012-museo-contribution/index.phpUTu|TPKEe$W< 3]tweet_live-7633ab659cfd/web/2011-2012-museo-desir/config.phpUTu|TPKEeA=S lctweet_live-7633ab659cfd/web/2011-2012-museo-desir/images/big_visuel_catastrophe.jpgUTu|TPKEx̐U 7Ztweet_live-7633ab659cfd/web/2011-2012-museo-desir/images/big_visuel_museo_2011_fr.pngUTu|TPKEfyF tweet_live-7633ab659cfd/web/2011-2012-museo-desir/images/head_logo.gifUTu|TPKE\tFG Jtweet_live-7633ab659cfd/web/2011-2012-museo-desir/images/museo-2011.jpgUTu|TPKEl>dBeM etweet_live-7633ab659cfd/web/2011-2012-museo-desir/images/polemic_fly_home.pngUTu|TPKEЕ;3>dBeL ttweet_live-7633ab659cfd/web/2011-2012-museo-desir/images/slide4_museo_fr.pngUTu|TPKEX6GI D L 5/tweet_live-7633ab659cfd/web/2011-2012-museo-desir/images/tweetExplainBgd.gifUTu|TPKEWj~; 9tweet_live-7633ab659cfd/web/2011-2012-museo-desir/index.phpUTu|TPKEbc A 9tweet_live-7633ab659cfd/web/2011-2012-museo-ingenierie/config.phpUTu|TPKEx̐Z ?tweet_live-7633ab659cfd/web/2011-2012-museo-ingenierie/images/big_visuel_museo_2011_fr.pngUTu|TPKEfyK tweet_live-7633ab659cfd/web/2011-2012-museo-ingenierie/images/head_logo.gifUTu|TPKE\tFL tweet_live-7633ab659cfd/web/2011-2012-museo-ingenierie/images/museo-2011.jpgUTu|TPKEЕ;3>dBeQ yKtweet_live-7633ab659cfd/web/2011-2012-museo-ingenierie/images/slide4_museo_fr.pngUTu|TPKEWj~@ ?tweet_live-7633ab659cfd/web/2011-2012-museo-ingenierie/index.phpUTu|TPKE7a A tweet_live-7633ab659cfd/web/2011-2012-museo-interfaces/config.phpUTu|TPKEx̐Z wtweet_live-7633ab659cfd/web/2011-2012-museo-interfaces/images/big_visuel_museo_2011_fr.pngUTu|TPKEfyK G#tweet_live-7633ab659cfd/web/2011-2012-museo-interfaces/images/head_logo.gifUTu|TPKE\tFL L#tweet_live-7633ab659cfd/web/2011-2012-museo-interfaces/images/museo-2011.jpgUTu|TPKEЕ;3>dBeQ #tweet_live-7633ab659cfd/web/2011-2012-museo-interfaces/images/slide4_museo_fr.pngUTu|TPKE7[MB^s@ &&tweet_live-7633ab659cfd/web/2011-2012-museo-interfaces/index.phpUTu|TPKEw@ 큜'&tweet_live-7633ab659cfd/web/2011-2012-museo-ouverture/config.phpUTu|TPKEeA=W .&tweet_live-7633ab659cfd/web/2011-2012-museo-ouverture/images/big_visuel_catastrophe.jpgUTu|TPKEx̐Y %'tweet_live-7633ab659cfd/web/2011-2012-museo-ouverture/images/big_visuel_museo_2011_fr.pngUTu|TPKEfyJ 5*tweet_live-7633ab659cfd/web/2011-2012-museo-ouverture/images/head_logo.gifUTu|TPKE\tFK 크*tweet_live-7633ab659cfd/web/2011-2012-museo-ouverture/images/museo-2011.jpgUTu|TPKEl>dBeQ 1+tweet_live-7633ab659cfd/web/2011-2012-museo-ouverture/images/polemic_fly_home.pngUTu|TPKEЕ;3>dBeV ޕ-tweet_live-7633ab659cfd/web/2011-2012-museo-ouverture/images/slide4_catastrophe_fr.pngUTu|TPKEX6GI D P /tweet_live-7633ab659cfd/web/2011-2012-museo-ouverture/images/tweetExplainBgd.gifUTu|TPKEWj~? y0tweet_live-7633ab659cfd/web/2011-2012-museo-ouverture/index.phpUTu|TPKE^ F Y0tweet_live-7633ab659cfd/web/2011-2012-museo-structured-data/config.phpUTu|TPKEeA=] 0tweet_live-7633ab659cfd/web/2011-2012-museo-structured-data/images/big_visuel_catastrophe.jpgUTu|TPKEx̐_ 1tweet_live-7633ab659cfd/web/2011-2012-museo-structured-data/images/big_visuel_museo_2011_fr.pngUTu|TPKEfyP c4tweet_live-7633ab659cfd/web/2011-2012-museo-structured-data/images/head_logo.gifUTu|TPKE\tFQ 4tweet_live-7633ab659cfd/web/2011-2012-museo-structured-data/images/museo-2011.jpgUTu|TPKEl>dBeW R5tweet_live-7633ab659cfd/web/2011-2012-museo-structured-data/images/polemic_fly_home.pngUTu|TPKEЕ;3>dBeV s7tweet_live-7633ab659cfd/web/2011-2012-museo-structured-data/images/slide4_museo_fr.pngUTu|TPKEX6GI D V 9tweet_live-7633ab659cfd/web/2011-2012-museo-structured-data/images/tweetExplainBgd.gifUTu|TPKEWj~E 9tweet_live-7633ab659cfd/web/2011-2012-museo-structured-data/index.phpUTu|TPKE.Mv* 9tweet_live-7633ab659cfd/web/CPV/config.phpUTu|TPKE-|8Е=8 S9tweet_live-7633ab659cfd/web/CPV/images/big_visuel_mb.pngUTu|TPKE4c4 }?tweet_live-7633ab659cfd/web/CPV/images/head_logo.gifUTu|TPKEjJʵ3 ?tweet_live-7633ab659cfd/web/CPV/images/tail_cpv.pngUTu|TPKE7p : 7Atweet_live-7633ab659cfd/web/CPV/images/tweetExplainBgd.gifUTu|TPKEWj~) CAtweet_live-7633ab659cfd/web/CPV/index.phpUTu|TPKEF. DAtweet_live-7633ab659cfd/web/CPV/traduction.phpUTu|TPKEVkI ? aJAtweet_live-7633ab659cfd/web/JaneMcGonigal-gameDesign/config.phpUTu|TPKECѧtiR BOAtweet_live-7633ab659cfd/web/JaneMcGonigal-gameDesign/images/big_visuel_rsln_mb.jpgUTu|TPKEatB p I >Ctweet_live-7633ab659cfd/web/JaneMcGonigal-gameDesign/images/head_logo.gifUTu|TPKE IKF LCtweet_live-7633ab659cfd/web/JaneMcGonigal-gameDesign/images/slide4.jpgUTu|TPKEJM#rsS YeDtweet_live-7633ab659cfd/web/JaneMcGonigal-gameDesign/images/tail_jane-mcgonigal.jpgUTu|TPKEX6GI D O Dtweet_live-7633ab659cfd/web/JaneMcGonigal-gameDesign/images/tweetExplainBgd.gifUTu|TPKEWj~> Dtweet_live-7633ab659cfd/web/JaneMcGonigal-gameDesign/index.phpUTu|TPKEcC Dtweet_live-7633ab659cfd/web/JaneMcGonigal-gameDesign/traduction.phpUTu|TPKEC% ?Dtweet_live-7633ab659cfd/web/about.phpUTu|TPKE!3/ Dtweet_live-7633ab659cfd/web/archives-iframe.phpUTu|TPKE/A( Dtweet_live-7633ab659cfd/web/archives.phpUTu|TPKE2 \1 Dtweet_live-7633ab659cfd/web/archives_metadata.phpUTu|TPKE+d I Etweet_live-7633ab659cfd/web/attention-1314-01-notion-attention/config.phpUTu|TPKEz/98:U Etweet_live-7633ab659cfd/web/attention-1314-01-notion-attention/images/archive_img.jpgUTu|TPKE |QYϱW C@Etweet_live-7633ab659cfd/web/attention-1314-01-notion-attention/images/client_visual.jpgUTu|TPKEfyS Etweet_live-7633ab659cfd/web/attention-1314-01-notion-attention/images/head_logo.gifUTu|TPKEU Z Etweet_live-7633ab659cfd/web/attention-1314-01-notion-attention/images/slide_background.jpgUTu|TPKEWj~H {Ftweet_live-7633ab659cfd/web/attention-1314-01-notion-attention/index.phpUTu|TPKE5g V |Ftweet_live-7633ab659cfd/web/attention-1314-02-syndrome-saturation-cognitive/config.phpUTu|TPKEz/98:b Ftweet_live-7633ab659cfd/web/attention-1314-02-syndrome-saturation-cognitive/images/archive_img.jpgUTu|TPKE |QYϱd Ftweet_live-7633ab659cfd/web/attention-1314-02-syndrome-saturation-cognitive/images/client_visual.jpgUTu|TPKEfy` kGtweet_live-7633ab659cfd/web/attention-1314-02-syndrome-saturation-cognitive/images/head_logo.gifUTu|TPKEU g bqGtweet_live-7633ab659cfd/web/attention-1314-02-syndrome-saturation-cognitive/images/slide_background.jpgUTu|TPKE7[MB^sU Gtweet_live-7633ab659cfd/web/attention-1314-02-syndrome-saturation-cognitive/index.phpUTu|TPKE5[\S Gtweet_live-7633ab659cfd/web/attention-1314-03-nouvelle-valeur-economique/config.phpUTu|TPKEz/98:_ {Htweet_live-7633ab659cfd/web/attention-1314-03-nouvelle-valeur-economique/images/archive_img.jpgUTu|TPKE |QYϱa 9Htweet_live-7633ab659cfd/web/attention-1314-03-nouvelle-valeur-economique/images/client_visual.jpgUTu|TPKEfy] 4Htweet_live-7633ab659cfd/web/attention-1314-03-nouvelle-valeur-economique/images/head_logo.gifUTu|TPKEU d Htweet_live-7633ab659cfd/web/attention-1314-03-nouvelle-valeur-economique/images/slide_background.jpgUTu|TPKE7[MB^sR yuItweet_live-7633ab659cfd/web/attention-1314-03-nouvelle-valeur-economique/index.phpUTu|TPKEτZNrV `vItweet_live-7633ab659cfd/web/attention-1314-04-pathologies-attention-memoire/config.phpUTu|TPKEz/98:b }Itweet_live-7633ab659cfd/web/attention-1314-04-pathologies-attention-memoire/images/archive_img.jpgUTu|TPKE |QYϱd Itweet_live-7633ab659cfd/web/attention-1314-04-pathologies-attention-memoire/images/client_visual.jpgUTu|TPKEfy` ifJtweet_live-7633ab659cfd/web/attention-1314-04-pathologies-attention-memoire/images/head_logo.gifUTu|TPKEU g kJtweet_live-7633ab659cfd/web/attention-1314-04-pathologies-attention-memoire/images/slide_background.jpgUTu|TPKEWj~U Jtweet_live-7633ab659cfd/web/attention-1314-04-pathologies-attention-memoire/index.phpUTu|TPKET ] Jtweet_live-7633ab659cfd/web/attention-1314-05-marche-attention-avenement-publicite/config.phpUTu|TPKEz/98:i OJtweet_live-7633ab659cfd/web/attention-1314-05-marche-attention-avenement-publicite/images/archive_img.jpgUTu|TPKE |QYϱk 3Ktweet_live-7633ab659cfd/web/attention-1314-05-marche-attention-avenement-publicite/images/client_visual.jpgUTu|TPKEfyg Ktweet_live-7633ab659cfd/web/attention-1314-05-marche-attention-avenement-publicite/images/head_logo.gifUTu|TPKEU n Ktweet_live-7633ab659cfd/web/attention-1314-05-marche-attention-avenement-publicite/images/slide_background.jpgUTu|TPKEWj~\ uoLtweet_live-7633ab659cfd/web/attention-1314-05-marche-attention-avenement-publicite/index.phpUTu|TPKE@ [ rpLtweet_live-7633ab659cfd/web/attention-1314-06-dynamique-ecrans-images-virtuelles/config.phpUTu|TPKEz/98:g DvLtweet_live-7633ab659cfd/web/attention-1314-06-dynamique-ecrans-images-virtuelles/images/archive_img.jpgUTu|TPKE |QYϱi Ltweet_live-7633ab659cfd/web/attention-1314-06-dynamique-ecrans-images-virtuelles/images/client_visual.jpgUTu|TPKEfye _Mtweet_live-7633ab659cfd/web/attention-1314-06-dynamique-ecrans-images-virtuelles/images/head_logo.gifUTu|TPKEU l dMtweet_live-7633ab659cfd/web/attention-1314-06-dynamique-ecrans-images-virtuelles/images/slide_background.jpgUTu|TPKEa]pZ bMtweet_live-7633ab659cfd/web/attention-1314-06-dynamique-ecrans-images-virtuelles/index.phpUTu|TPKE42 7 PMtweet_live-7633ab659cfd/web/body-image-media/config.phpUTu|TPKE1ڽ[2R_ZE AMtweet_live-7633ab659cfd/web/body-image-media/images/client_visual.jpgUTu|TPKEpEA CNtweet_live-7633ab659cfd/web/body-image-media/images/head_logo.gifUTu|TPKERn +-C SNtweet_live-7633ab659cfd/web/body-image-media/images/identifiant.jpgUTu|TPKE2ٙq0 :H Ntweet_live-7633ab659cfd/web/body-image-media/images/slide_background.jpgUTu|TPKE_l^q6 Ntweet_live-7633ab659cfd/web/body-image-media/index.phpUTu|TPKE 8 Ntweet_live-7633ab659cfd/web/bpi-biens-communs/config.phpUTu|TPKEvubCdD Ntweet_live-7633ab659cfd/web/bpi-biens-communs/images/archive_img.jpgUTu|TPKE[PRiSF HOtweet_live-7633ab659cfd/web/bpi-biens-communs/images/client_visual.jpgUTu|TPKEXyB nPtweet_live-7633ab659cfd/web/bpi-biens-communs/images/logo_head.pngUTu|TPKE I ~Ptweet_live-7633ab659cfd/web/bpi-biens-communs/images/slide_background.jpgUTu|TPKE7[MB^s7 nZQtweet_live-7633ab659cfd/web/bpi-biens-communs/index.phpUTu|TPKEW|=B :[Qtweet_live-7633ab659cfd/web/bpi-des-livres-aux-machines/config.phpUTu|TPKERAUchdJ FcQtweet_live-7633ab659cfd/web/bpi-des-livres-aux-machines/images/archive.jpgUTu|TPKE9E[eM Qtweet_live-7633ab659cfd/web/bpi-des-livres-aux-machines/images/bgd_player.jpgUTu|TPKE6 S""$M znStweet_live-7633ab659cfd/web/bpi-des-livres-aux-machines/images/fond_slide.jpgUTu|TPKEXyL QTtweet_live-7633ab659cfd/web/bpi-des-livres-aux-machines/images/logo_head.pngUTu|TPKEWj~A Ttweet_live-7633ab659cfd/web/bpi-des-livres-aux-machines/index.phpUTu|TPKEF7> Ttweet_live-7633ab659cfd/web/bpi-extension-de-la-pub/config.phpUTu|TPKEZLgHF Ttweet_live-7633ab659cfd/web/bpi-extension-de-la-pub/images/archive.jpgUTu|TPKEbdI DUtweet_live-7633ab659cfd/web/bpi-extension-de-la-pub/images/bgd_player.jpgUTu|TPKEj4A>I PVtweet_live-7633ab659cfd/web/bpi-extension-de-la-pub/images/fond_slide.jpgUTu|TPKEXyH Wtweet_live-7633ab659cfd/web/bpi-extension-de-la-pub/images/logo_head.pngUTu|TPKE7[MB^s= Wtweet_live-7633ab659cfd/web/bpi-extension-de-la-pub/index.phpUTu|TPKE 5 Wtweet_live-7633ab659cfd/web/bpi-floptechno/config.phpUTu|TPKEtKΐ6A8A Wtweet_live-7633ab659cfd/web/bpi-floptechno/images/archive_img.jpgUTu|TPKEc̶mC *Xtweet_live-7633ab659cfd/web/bpi-floptechno/images/client_visual.jpgUTu|TPKEXy? &Xtweet_live-7633ab659cfd/web/bpi-floptechno/images/logo_head.pngUTu|TPKEF͍_BbF nXtweet_live-7633ab659cfd/web/bpi-floptechno/images/slide_background.jpgUTu|TPKE7[MB^s4 PYtweet_live-7633ab659cfd/web/bpi-floptechno/index.phpUTu|TPKEk;< QYtweet_live-7633ab659cfd/web/bpi-travailler-demain/config.phpUTu|TPKEޏZ&jD ZYtweet_live-7633ab659cfd/web/bpi-travailler-demain/images/archive.jpgUTu|TPKEi ;G Ytweet_live-7633ab659cfd/web/bpi-travailler-demain/images/bgd_player.jpgUTu|TPKEznzX!G Ztweet_live-7633ab659cfd/web/bpi-travailler-demain/images/fond_slide.jpgUTu|TPKEXyF [tweet_live-7633ab659cfd/web/bpi-travailler-demain/images/logo_head.pngUTu|TPKE7[MB^s; b[tweet_live-7633ab659cfd/web/bpi-travailler-demain/index.phpUTu|TPKE{fA : 2[tweet_live-7633ab659cfd/web/bpi-ville-connectee/config.phpUTu|TPKJ.[