web/lib/Zend/Pdf/Cmap/ByteEncoding.php
changeset 64 162c1de6545a
parent 19 1c2f13fd785c
child 68 ecaf28ffe26e
equal deleted inserted replaced
63:5b37998e522e 64:162c1de6545a
       
     1 <?php
       
     2 /**
       
     3  * Zend Framework
       
     4  *
       
     5  * LICENSE
       
     6  *
       
     7  * This source file is subject to the new BSD license that is bundled
       
     8  * with this package in the file LICENSE.txt.
       
     9  * It is also available through the world-wide-web at this URL:
       
    10  * http://framework.zend.com/license/new-bsd
       
    11  * If you did not receive a copy of the license and are unable to
       
    12  * obtain it through the world-wide-web, please send an email
       
    13  * to license@zend.com so we can send you a copy immediately.
       
    14  *
       
    15  * @category   Zend
       
    16  * @package    Zend_Pdf
       
    17  * @subpackage Fonts
       
    18  * @copyright  Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
       
    19  * @license    http://framework.zend.com/license/new-bsd     New BSD License
       
    20  * @version    $Id: ByteEncoding.php 20096 2010-01-06 02:05:09Z bkarwin $
       
    21  */
       
    22 
       
    23 /** Zend_Pdf_Cmap */
       
    24 require_once 'Zend/Pdf/Cmap.php';
       
    25 
       
    26 
       
    27 /**
       
    28  * Implements the "byte encoding" character map (type 0).
       
    29  *
       
    30  * This is the (legacy) Apple standard encoding mechanism and provides coverage
       
    31  * for characters in the Mac Roman character set only. Consequently, this cmap
       
    32  * type should be used only as a last resort.
       
    33  *
       
    34  * The mapping from Mac Roman to Unicode can be found at
       
    35  * {@link http://www.unicode.org/Public/MAPPINGS/VENDORS/APPLE/ROMAN.TXT}.
       
    36  *
       
    37  * @package    Zend_Pdf
       
    38  * @subpackage Fonts
       
    39  * @copyright  Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
       
    40  * @license    http://framework.zend.com/license/new-bsd     New BSD License
       
    41  */
       
    42 class Zend_Pdf_Cmap_ByteEncoding extends Zend_Pdf_Cmap
       
    43 {
       
    44   /**** Instance Variables ****/
       
    45 
       
    46 
       
    47     /**
       
    48      * Glyph index array. Stores the actual glyph numbers. The array keys are
       
    49      * the translated Unicode code points.
       
    50      * @var array
       
    51      */
       
    52     protected $_glyphIndexArray = array();
       
    53 
       
    54 
       
    55 
       
    56   /**** Public Interface ****/
       
    57 
       
    58 
       
    59   /* Concrete Class Implementation */
       
    60 
       
    61     /**
       
    62      * Returns an array of glyph numbers corresponding to the Unicode characters.
       
    63      *
       
    64      * If a particular character doesn't exist in this font, the special 'missing
       
    65      * character glyph' will be substituted.
       
    66      *
       
    67      * See also {@link glyphNumberForCharacter()}.
       
    68      *
       
    69      * @param array $characterCodes Array of Unicode character codes (code points).
       
    70      * @return array Array of glyph numbers.
       
    71      */
       
    72     public function glyphNumbersForCharacters($characterCodes)
       
    73     {
       
    74         $glyphNumbers = array();
       
    75         foreach ($characterCodes as $key => $characterCode) {
       
    76 
       
    77            if (! isset($this->_glyphIndexArray[$characterCode])) {
       
    78                 $glyphNumbers[$key] = Zend_Pdf_Cmap::MISSING_CHARACTER_GLYPH;
       
    79                 continue;
       
    80             }
       
    81 
       
    82             $glyphNumbers[$key] = $this->_glyphIndexArray[$characterCode];
       
    83 
       
    84         }
       
    85         return $glyphNumbers;
       
    86     }
       
    87 
       
    88     /**
       
    89      * Returns the glyph number corresponding to the Unicode character.
       
    90      *
       
    91      * If a particular character doesn't exist in this font, the special 'missing
       
    92      * character glyph' will be substituted.
       
    93      *
       
    94      * See also {@link glyphNumbersForCharacters()} which is optimized for bulk
       
    95      * operations.
       
    96      *
       
    97      * @param integer $characterCode Unicode character code (code point).
       
    98      * @return integer Glyph number.
       
    99      */
       
   100     public function glyphNumberForCharacter($characterCode)
       
   101     {
       
   102         if (! isset($this->_glyphIndexArray[$characterCode])) {
       
   103             return Zend_Pdf_Cmap::MISSING_CHARACTER_GLYPH;
       
   104         }
       
   105         return $this->_glyphIndexArray[$characterCode];
       
   106     }
       
   107 
       
   108     /**
       
   109      * Returns an array containing the Unicode characters that have entries in
       
   110      * this character map.
       
   111      *
       
   112      * @return array Unicode character codes.
       
   113      */
       
   114     public function getCoveredCharacters()
       
   115     {
       
   116         return array_keys($this->_glyphIndexArray);
       
   117     }
       
   118 
       
   119     /**
       
   120      * Returns an array containing the glyphs numbers that have entries in this character map.
       
   121      * Keys are Unicode character codes (integers)
       
   122      *
       
   123      * This functionality is partially covered by glyphNumbersForCharacters(getCoveredCharacters())
       
   124      * call, but this method do it in more effective way (prepare complete list instead of searching
       
   125      * glyph for each character code).
       
   126      *
       
   127      * @internal
       
   128      * @return array Array representing <Unicode character code> => <glyph number> pairs.
       
   129      */
       
   130     public function getCoveredCharactersGlyphs()
       
   131     {
       
   132         return $this->_glyphIndexArray;
       
   133     }
       
   134 
       
   135 
       
   136   /* Object Lifecycle */
       
   137 
       
   138     /**
       
   139      * Object constructor
       
   140      *
       
   141      * Parses the raw binary table data. Throws an exception if the table is
       
   142      * malformed.
       
   143      *
       
   144      * @param string $cmapData Raw binary cmap table data.
       
   145      * @throws Zend_Pdf_Exception
       
   146      */
       
   147     public function __construct($cmapData)
       
   148     {
       
   149         /* Sanity check: This table must be exactly 262 bytes long.
       
   150          */
       
   151         $actualLength = strlen($cmapData);
       
   152         if ($actualLength != 262) {
       
   153             require_once 'Zend/Pdf/Exception.php';
       
   154             throw new Zend_Pdf_Exception('Insufficient table data',
       
   155                                          Zend_Pdf_Exception::CMAP_TABLE_DATA_TOO_SMALL);
       
   156         }
       
   157 
       
   158         /* Sanity check: Make sure this is right data for this table type.
       
   159          */
       
   160         $type = $this->_extractUInt2($cmapData, 0);
       
   161         if ($type != Zend_Pdf_Cmap::TYPE_BYTE_ENCODING) {
       
   162             require_once 'Zend/Pdf/Exception.php';
       
   163             throw new Zend_Pdf_Exception('Wrong cmap table type',
       
   164                                          Zend_Pdf_Exception::CMAP_WRONG_TABLE_TYPE);
       
   165         }
       
   166 
       
   167         $length = $this->_extractUInt2($cmapData, 2);
       
   168         if ($length != $actualLength) {
       
   169             require_once 'Zend/Pdf/Exception.php';
       
   170             throw new Zend_Pdf_Exception("Table length ($length) does not match actual length ($actualLength)",
       
   171                                          Zend_Pdf_Exception::CMAP_WRONG_TABLE_LENGTH);
       
   172         }
       
   173 
       
   174         /* Mapping tables should be language-independent. The font may not work
       
   175          * as expected if they are not. Unfortunately, many font files in the
       
   176          * wild incorrectly record a language ID in this field, so we can't
       
   177          * call this a failure.
       
   178          */
       
   179         $language = $this->_extractUInt2($cmapData, 4);
       
   180         if ($language != 0) {
       
   181             // Record a warning here somehow?
       
   182         }
       
   183 
       
   184         /* The mapping between the Mac Roman and Unicode characters is static.
       
   185          * For simplicity, just put all 256 glyph indices into one array keyed
       
   186          * off the corresponding Unicode character.
       
   187          */
       
   188         $i = 6;
       
   189         $this->_glyphIndexArray[0x00]   = ord($cmapData[$i++]);
       
   190         $this->_glyphIndexArray[0x01]   = ord($cmapData[$i++]);
       
   191         $this->_glyphIndexArray[0x02]   = ord($cmapData[$i++]);
       
   192         $this->_glyphIndexArray[0x03]   = ord($cmapData[$i++]);
       
   193         $this->_glyphIndexArray[0x04]   = ord($cmapData[$i++]);
       
   194         $this->_glyphIndexArray[0x05]   = ord($cmapData[$i++]);
       
   195         $this->_glyphIndexArray[0x06]   = ord($cmapData[$i++]);
       
   196         $this->_glyphIndexArray[0x07]   = ord($cmapData[$i++]);
       
   197         $this->_glyphIndexArray[0x08]   = ord($cmapData[$i++]);
       
   198         $this->_glyphIndexArray[0x09]   = ord($cmapData[$i++]);
       
   199         $this->_glyphIndexArray[0x0a]   = ord($cmapData[$i++]);
       
   200         $this->_glyphIndexArray[0x0b]   = ord($cmapData[$i++]);
       
   201         $this->_glyphIndexArray[0x0c]   = ord($cmapData[$i++]);
       
   202         $this->_glyphIndexArray[0x0d]   = ord($cmapData[$i++]);
       
   203         $this->_glyphIndexArray[0x0e]   = ord($cmapData[$i++]);
       
   204         $this->_glyphIndexArray[0x0f]   = ord($cmapData[$i++]);
       
   205         $this->_glyphIndexArray[0x10]   = ord($cmapData[$i++]);
       
   206         $this->_glyphIndexArray[0x11]   = ord($cmapData[$i++]);
       
   207         $this->_glyphIndexArray[0x12]   = ord($cmapData[$i++]);
       
   208         $this->_glyphIndexArray[0x13]   = ord($cmapData[$i++]);
       
   209         $this->_glyphIndexArray[0x14]   = ord($cmapData[$i++]);
       
   210         $this->_glyphIndexArray[0x15]   = ord($cmapData[$i++]);
       
   211         $this->_glyphIndexArray[0x16]   = ord($cmapData[$i++]);
       
   212         $this->_glyphIndexArray[0x17]   = ord($cmapData[$i++]);
       
   213         $this->_glyphIndexArray[0x18]   = ord($cmapData[$i++]);
       
   214         $this->_glyphIndexArray[0x19]   = ord($cmapData[$i++]);
       
   215         $this->_glyphIndexArray[0x1a]   = ord($cmapData[$i++]);
       
   216         $this->_glyphIndexArray[0x1b]   = ord($cmapData[$i++]);
       
   217         $this->_glyphIndexArray[0x1c]   = ord($cmapData[$i++]);
       
   218         $this->_glyphIndexArray[0x1d]   = ord($cmapData[$i++]);
       
   219         $this->_glyphIndexArray[0x1e]   = ord($cmapData[$i++]);
       
   220         $this->_glyphIndexArray[0x1f]   = ord($cmapData[$i++]);
       
   221         $this->_glyphIndexArray[0x20]   = ord($cmapData[$i++]);
       
   222         $this->_glyphIndexArray[0x21]   = ord($cmapData[$i++]);
       
   223         $this->_glyphIndexArray[0x22]   = ord($cmapData[$i++]);
       
   224         $this->_glyphIndexArray[0x23]   = ord($cmapData[$i++]);
       
   225         $this->_glyphIndexArray[0x24]   = ord($cmapData[$i++]);
       
   226         $this->_glyphIndexArray[0x25]   = ord($cmapData[$i++]);
       
   227         $this->_glyphIndexArray[0x26]   = ord($cmapData[$i++]);
       
   228         $this->_glyphIndexArray[0x27]   = ord($cmapData[$i++]);
       
   229         $this->_glyphIndexArray[0x28]   = ord($cmapData[$i++]);
       
   230         $this->_glyphIndexArray[0x29]   = ord($cmapData[$i++]);
       
   231         $this->_glyphIndexArray[0x2a]   = ord($cmapData[$i++]);
       
   232         $this->_glyphIndexArray[0x2b]   = ord($cmapData[$i++]);
       
   233         $this->_glyphIndexArray[0x2c]   = ord($cmapData[$i++]);
       
   234         $this->_glyphIndexArray[0x2d]   = ord($cmapData[$i++]);
       
   235         $this->_glyphIndexArray[0x2e]   = ord($cmapData[$i++]);
       
   236         $this->_glyphIndexArray[0x2f]   = ord($cmapData[$i++]);
       
   237         $this->_glyphIndexArray[0x30]   = ord($cmapData[$i++]);
       
   238         $this->_glyphIndexArray[0x31]   = ord($cmapData[$i++]);
       
   239         $this->_glyphIndexArray[0x32]   = ord($cmapData[$i++]);
       
   240         $this->_glyphIndexArray[0x33]   = ord($cmapData[$i++]);
       
   241         $this->_glyphIndexArray[0x34]   = ord($cmapData[$i++]);
       
   242         $this->_glyphIndexArray[0x35]   = ord($cmapData[$i++]);
       
   243         $this->_glyphIndexArray[0x36]   = ord($cmapData[$i++]);
       
   244         $this->_glyphIndexArray[0x37]   = ord($cmapData[$i++]);
       
   245         $this->_glyphIndexArray[0x38]   = ord($cmapData[$i++]);
       
   246         $this->_glyphIndexArray[0x39]   = ord($cmapData[$i++]);
       
   247         $this->_glyphIndexArray[0x3a]   = ord($cmapData[$i++]);
       
   248         $this->_glyphIndexArray[0x3b]   = ord($cmapData[$i++]);
       
   249         $this->_glyphIndexArray[0x3c]   = ord($cmapData[$i++]);
       
   250         $this->_glyphIndexArray[0x3d]   = ord($cmapData[$i++]);
       
   251         $this->_glyphIndexArray[0x3e]   = ord($cmapData[$i++]);
       
   252         $this->_glyphIndexArray[0x3f]   = ord($cmapData[$i++]);
       
   253         $this->_glyphIndexArray[0x40]   = ord($cmapData[$i++]);
       
   254         $this->_glyphIndexArray[0x41]   = ord($cmapData[$i++]);
       
   255         $this->_glyphIndexArray[0x42]   = ord($cmapData[$i++]);
       
   256         $this->_glyphIndexArray[0x43]   = ord($cmapData[$i++]);
       
   257         $this->_glyphIndexArray[0x44]   = ord($cmapData[$i++]);
       
   258         $this->_glyphIndexArray[0x45]   = ord($cmapData[$i++]);
       
   259         $this->_glyphIndexArray[0x46]   = ord($cmapData[$i++]);
       
   260         $this->_glyphIndexArray[0x47]   = ord($cmapData[$i++]);
       
   261         $this->_glyphIndexArray[0x48]   = ord($cmapData[$i++]);
       
   262         $this->_glyphIndexArray[0x49]   = ord($cmapData[$i++]);
       
   263         $this->_glyphIndexArray[0x4a]   = ord($cmapData[$i++]);
       
   264         $this->_glyphIndexArray[0x4b]   = ord($cmapData[$i++]);
       
   265         $this->_glyphIndexArray[0x4c]   = ord($cmapData[$i++]);
       
   266         $this->_glyphIndexArray[0x4d]   = ord($cmapData[$i++]);
       
   267         $this->_glyphIndexArray[0x4e]   = ord($cmapData[$i++]);
       
   268         $this->_glyphIndexArray[0x4f]   = ord($cmapData[$i++]);
       
   269         $this->_glyphIndexArray[0x50]   = ord($cmapData[$i++]);
       
   270         $this->_glyphIndexArray[0x51]   = ord($cmapData[$i++]);
       
   271         $this->_glyphIndexArray[0x52]   = ord($cmapData[$i++]);
       
   272         $this->_glyphIndexArray[0x53]   = ord($cmapData[$i++]);
       
   273         $this->_glyphIndexArray[0x54]   = ord($cmapData[$i++]);
       
   274         $this->_glyphIndexArray[0x55]   = ord($cmapData[$i++]);
       
   275         $this->_glyphIndexArray[0x56]   = ord($cmapData[$i++]);
       
   276         $this->_glyphIndexArray[0x57]   = ord($cmapData[$i++]);
       
   277         $this->_glyphIndexArray[0x58]   = ord($cmapData[$i++]);
       
   278         $this->_glyphIndexArray[0x59]   = ord($cmapData[$i++]);
       
   279         $this->_glyphIndexArray[0x5a]   = ord($cmapData[$i++]);
       
   280         $this->_glyphIndexArray[0x5b]   = ord($cmapData[$i++]);
       
   281         $this->_glyphIndexArray[0x5c]   = ord($cmapData[$i++]);
       
   282         $this->_glyphIndexArray[0x5d]   = ord($cmapData[$i++]);
       
   283         $this->_glyphIndexArray[0x5e]   = ord($cmapData[$i++]);
       
   284         $this->_glyphIndexArray[0x5f]   = ord($cmapData[$i++]);
       
   285         $this->_glyphIndexArray[0x60]   = ord($cmapData[$i++]);
       
   286         $this->_glyphIndexArray[0x61]   = ord($cmapData[$i++]);
       
   287         $this->_glyphIndexArray[0x62]   = ord($cmapData[$i++]);
       
   288         $this->_glyphIndexArray[0x63]   = ord($cmapData[$i++]);
       
   289         $this->_glyphIndexArray[0x64]   = ord($cmapData[$i++]);
       
   290         $this->_glyphIndexArray[0x65]   = ord($cmapData[$i++]);
       
   291         $this->_glyphIndexArray[0x66]   = ord($cmapData[$i++]);
       
   292         $this->_glyphIndexArray[0x67]   = ord($cmapData[$i++]);
       
   293         $this->_glyphIndexArray[0x68]   = ord($cmapData[$i++]);
       
   294         $this->_glyphIndexArray[0x69]   = ord($cmapData[$i++]);
       
   295         $this->_glyphIndexArray[0x6a]   = ord($cmapData[$i++]);
       
   296         $this->_glyphIndexArray[0x6b]   = ord($cmapData[$i++]);
       
   297         $this->_glyphIndexArray[0x6c]   = ord($cmapData[$i++]);
       
   298         $this->_glyphIndexArray[0x6d]   = ord($cmapData[$i++]);
       
   299         $this->_glyphIndexArray[0x6e]   = ord($cmapData[$i++]);
       
   300         $this->_glyphIndexArray[0x6f]   = ord($cmapData[$i++]);
       
   301         $this->_glyphIndexArray[0x70]   = ord($cmapData[$i++]);
       
   302         $this->_glyphIndexArray[0x71]   = ord($cmapData[$i++]);
       
   303         $this->_glyphIndexArray[0x72]   = ord($cmapData[$i++]);
       
   304         $this->_glyphIndexArray[0x73]   = ord($cmapData[$i++]);
       
   305         $this->_glyphIndexArray[0x74]   = ord($cmapData[$i++]);
       
   306         $this->_glyphIndexArray[0x75]   = ord($cmapData[$i++]);
       
   307         $this->_glyphIndexArray[0x76]   = ord($cmapData[$i++]);
       
   308         $this->_glyphIndexArray[0x77]   = ord($cmapData[$i++]);
       
   309         $this->_glyphIndexArray[0x78]   = ord($cmapData[$i++]);
       
   310         $this->_glyphIndexArray[0x79]   = ord($cmapData[$i++]);
       
   311         $this->_glyphIndexArray[0x7a]   = ord($cmapData[$i++]);
       
   312         $this->_glyphIndexArray[0x7b]   = ord($cmapData[$i++]);
       
   313         $this->_glyphIndexArray[0x7c]   = ord($cmapData[$i++]);
       
   314         $this->_glyphIndexArray[0x7d]   = ord($cmapData[$i++]);
       
   315         $this->_glyphIndexArray[0x7e]   = ord($cmapData[$i++]);
       
   316         $this->_glyphIndexArray[0x7f]   = ord($cmapData[$i++]);
       
   317         $this->_glyphIndexArray[0xc4]   = ord($cmapData[$i++]);
       
   318         $this->_glyphIndexArray[0xc5]   = ord($cmapData[$i++]);
       
   319         $this->_glyphIndexArray[0xc7]   = ord($cmapData[$i++]);
       
   320         $this->_glyphIndexArray[0xc9]   = ord($cmapData[$i++]);
       
   321         $this->_glyphIndexArray[0xd1]   = ord($cmapData[$i++]);
       
   322         $this->_glyphIndexArray[0xd6]   = ord($cmapData[$i++]);
       
   323         $this->_glyphIndexArray[0xdc]   = ord($cmapData[$i++]);
       
   324         $this->_glyphIndexArray[0xe1]   = ord($cmapData[$i++]);
       
   325         $this->_glyphIndexArray[0xe0]   = ord($cmapData[$i++]);
       
   326         $this->_glyphIndexArray[0xe2]   = ord($cmapData[$i++]);
       
   327         $this->_glyphIndexArray[0xe4]   = ord($cmapData[$i++]);
       
   328         $this->_glyphIndexArray[0xe3]   = ord($cmapData[$i++]);
       
   329         $this->_glyphIndexArray[0xe5]   = ord($cmapData[$i++]);
       
   330         $this->_glyphIndexArray[0xe7]   = ord($cmapData[$i++]);
       
   331         $this->_glyphIndexArray[0xe9]   = ord($cmapData[$i++]);
       
   332         $this->_glyphIndexArray[0xe8]   = ord($cmapData[$i++]);
       
   333         $this->_glyphIndexArray[0xea]   = ord($cmapData[$i++]);
       
   334         $this->_glyphIndexArray[0xeb]   = ord($cmapData[$i++]);
       
   335         $this->_glyphIndexArray[0xed]   = ord($cmapData[$i++]);
       
   336         $this->_glyphIndexArray[0xec]   = ord($cmapData[$i++]);
       
   337         $this->_glyphIndexArray[0xee]   = ord($cmapData[$i++]);
       
   338         $this->_glyphIndexArray[0xef]   = ord($cmapData[$i++]);
       
   339         $this->_glyphIndexArray[0xf1]   = ord($cmapData[$i++]);
       
   340         $this->_glyphIndexArray[0xf3]   = ord($cmapData[$i++]);
       
   341         $this->_glyphIndexArray[0xf2]   = ord($cmapData[$i++]);
       
   342         $this->_glyphIndexArray[0xf4]   = ord($cmapData[$i++]);
       
   343         $this->_glyphIndexArray[0xf6]   = ord($cmapData[$i++]);
       
   344         $this->_glyphIndexArray[0xf5]   = ord($cmapData[$i++]);
       
   345         $this->_glyphIndexArray[0xfa]   = ord($cmapData[$i++]);
       
   346         $this->_glyphIndexArray[0xf9]   = ord($cmapData[$i++]);
       
   347         $this->_glyphIndexArray[0xfb]   = ord($cmapData[$i++]);
       
   348         $this->_glyphIndexArray[0xfc]   = ord($cmapData[$i++]);
       
   349         $this->_glyphIndexArray[0x2020] = ord($cmapData[$i++]);
       
   350         $this->_glyphIndexArray[0xb0]   = ord($cmapData[$i++]);
       
   351         $this->_glyphIndexArray[0xa2]   = ord($cmapData[$i++]);
       
   352         $this->_glyphIndexArray[0xa3]   = ord($cmapData[$i++]);
       
   353         $this->_glyphIndexArray[0xa7]   = ord($cmapData[$i++]);
       
   354         $this->_glyphIndexArray[0x2022] = ord($cmapData[$i++]);
       
   355         $this->_glyphIndexArray[0xb6]   = ord($cmapData[$i++]);
       
   356         $this->_glyphIndexArray[0xdf]   = ord($cmapData[$i++]);
       
   357         $this->_glyphIndexArray[0xae]   = ord($cmapData[$i++]);
       
   358         $this->_glyphIndexArray[0xa9]   = ord($cmapData[$i++]);
       
   359         $this->_glyphIndexArray[0x2122] = ord($cmapData[$i++]);
       
   360         $this->_glyphIndexArray[0xb4]   = ord($cmapData[$i++]);
       
   361         $this->_glyphIndexArray[0xa8]   = ord($cmapData[$i++]);
       
   362         $this->_glyphIndexArray[0x2260] = ord($cmapData[$i++]);
       
   363         $this->_glyphIndexArray[0xc6]   = ord($cmapData[$i++]);
       
   364         $this->_glyphIndexArray[0xd8]   = ord($cmapData[$i++]);
       
   365         $this->_glyphIndexArray[0x221e] = ord($cmapData[$i++]);
       
   366         $this->_glyphIndexArray[0xb1]   = ord($cmapData[$i++]);
       
   367         $this->_glyphIndexArray[0x2264] = ord($cmapData[$i++]);
       
   368         $this->_glyphIndexArray[0x2265] = ord($cmapData[$i++]);
       
   369         $this->_glyphIndexArray[0xa5]   = ord($cmapData[$i++]);
       
   370         $this->_glyphIndexArray[0xb5]   = ord($cmapData[$i++]);
       
   371         $this->_glyphIndexArray[0x2202] = ord($cmapData[$i++]);
       
   372         $this->_glyphIndexArray[0x2211] = ord($cmapData[$i++]);
       
   373         $this->_glyphIndexArray[0x220f] = ord($cmapData[$i++]);
       
   374         $this->_glyphIndexArray[0x03c0] = ord($cmapData[$i++]);
       
   375         $this->_glyphIndexArray[0x222b] = ord($cmapData[$i++]);
       
   376         $this->_glyphIndexArray[0xaa]   = ord($cmapData[$i++]);
       
   377         $this->_glyphIndexArray[0xba]   = ord($cmapData[$i++]);
       
   378         $this->_glyphIndexArray[0x03a9] = ord($cmapData[$i++]);
       
   379         $this->_glyphIndexArray[0xe6]   = ord($cmapData[$i++]);
       
   380         $this->_glyphIndexArray[0xf8]   = ord($cmapData[$i++]);
       
   381         $this->_glyphIndexArray[0xbf]   = ord($cmapData[$i++]);
       
   382         $this->_glyphIndexArray[0xa1]   = ord($cmapData[$i++]);
       
   383         $this->_glyphIndexArray[0xac]   = ord($cmapData[$i++]);
       
   384         $this->_glyphIndexArray[0x221a] = ord($cmapData[$i++]);
       
   385         $this->_glyphIndexArray[0x0192] = ord($cmapData[$i++]);
       
   386         $this->_glyphIndexArray[0x2248] = ord($cmapData[$i++]);
       
   387         $this->_glyphIndexArray[0x2206] = ord($cmapData[$i++]);
       
   388         $this->_glyphIndexArray[0xab]   = ord($cmapData[$i++]);
       
   389         $this->_glyphIndexArray[0xbb]   = ord($cmapData[$i++]);
       
   390         $this->_glyphIndexArray[0x2026] = ord($cmapData[$i++]);
       
   391         $this->_glyphIndexArray[0xa0]   = ord($cmapData[$i++]);
       
   392         $this->_glyphIndexArray[0xc0]   = ord($cmapData[$i++]);
       
   393         $this->_glyphIndexArray[0xc3]   = ord($cmapData[$i++]);
       
   394         $this->_glyphIndexArray[0xd5]   = ord($cmapData[$i++]);
       
   395         $this->_glyphIndexArray[0x0152] = ord($cmapData[$i++]);
       
   396         $this->_glyphIndexArray[0x0153] = ord($cmapData[$i++]);
       
   397         $this->_glyphIndexArray[0x2013] = ord($cmapData[$i++]);
       
   398         $this->_glyphIndexArray[0x2014] = ord($cmapData[$i++]);
       
   399         $this->_glyphIndexArray[0x201c] = ord($cmapData[$i++]);
       
   400         $this->_glyphIndexArray[0x201d] = ord($cmapData[$i++]);
       
   401         $this->_glyphIndexArray[0x2018] = ord($cmapData[$i++]);
       
   402         $this->_glyphIndexArray[0x2019] = ord($cmapData[$i++]);
       
   403         $this->_glyphIndexArray[0xf7]   = ord($cmapData[$i++]);
       
   404         $this->_glyphIndexArray[0x25ca] = ord($cmapData[$i++]);
       
   405         $this->_glyphIndexArray[0xff]   = ord($cmapData[$i++]);
       
   406         $this->_glyphIndexArray[0x0178] = ord($cmapData[$i++]);
       
   407         $this->_glyphIndexArray[0x2044] = ord($cmapData[$i++]);
       
   408         $this->_glyphIndexArray[0x20ac] = ord($cmapData[$i++]);
       
   409         $this->_glyphIndexArray[0x2039] = ord($cmapData[$i++]);
       
   410         $this->_glyphIndexArray[0x203a] = ord($cmapData[$i++]);
       
   411         $this->_glyphIndexArray[0xfb01] = ord($cmapData[$i++]);
       
   412         $this->_glyphIndexArray[0xfb02] = ord($cmapData[$i++]);
       
   413         $this->_glyphIndexArray[0x2021] = ord($cmapData[$i++]);
       
   414         $this->_glyphIndexArray[0xb7]   = ord($cmapData[$i++]);
       
   415         $this->_glyphIndexArray[0x201a] = ord($cmapData[$i++]);
       
   416         $this->_glyphIndexArray[0x201e] = ord($cmapData[$i++]);
       
   417         $this->_glyphIndexArray[0x2030] = ord($cmapData[$i++]);
       
   418         $this->_glyphIndexArray[0xc2]   = ord($cmapData[$i++]);
       
   419         $this->_glyphIndexArray[0xca]   = ord($cmapData[$i++]);
       
   420         $this->_glyphIndexArray[0xc1]   = ord($cmapData[$i++]);
       
   421         $this->_glyphIndexArray[0xcb]   = ord($cmapData[$i++]);
       
   422         $this->_glyphIndexArray[0xc8]   = ord($cmapData[$i++]);
       
   423         $this->_glyphIndexArray[0xcd]   = ord($cmapData[$i++]);
       
   424         $this->_glyphIndexArray[0xce]   = ord($cmapData[$i++]);
       
   425         $this->_glyphIndexArray[0xcf]   = ord($cmapData[$i++]);
       
   426         $this->_glyphIndexArray[0xcc]   = ord($cmapData[$i++]);
       
   427         $this->_glyphIndexArray[0xd3]   = ord($cmapData[$i++]);
       
   428         $this->_glyphIndexArray[0xd4]   = ord($cmapData[$i++]);
       
   429         $this->_glyphIndexArray[0xf8ff] = ord($cmapData[$i++]);
       
   430         $this->_glyphIndexArray[0xd2]   = ord($cmapData[$i++]);
       
   431         $this->_glyphIndexArray[0xda]   = ord($cmapData[$i++]);
       
   432         $this->_glyphIndexArray[0xdb]   = ord($cmapData[$i++]);
       
   433         $this->_glyphIndexArray[0xd9]   = ord($cmapData[$i++]);
       
   434         $this->_glyphIndexArray[0x0131] = ord($cmapData[$i++]);
       
   435         $this->_glyphIndexArray[0x02c6] = ord($cmapData[$i++]);
       
   436         $this->_glyphIndexArray[0x02dc] = ord($cmapData[$i++]);
       
   437         $this->_glyphIndexArray[0xaf]   = ord($cmapData[$i++]);
       
   438         $this->_glyphIndexArray[0x02d8] = ord($cmapData[$i++]);
       
   439         $this->_glyphIndexArray[0x02d9] = ord($cmapData[$i++]);
       
   440         $this->_glyphIndexArray[0x02da] = ord($cmapData[$i++]);
       
   441         $this->_glyphIndexArray[0xb8]   = ord($cmapData[$i++]);
       
   442         $this->_glyphIndexArray[0x02dd] = ord($cmapData[$i++]);
       
   443         $this->_glyphIndexArray[0x02db] = ord($cmapData[$i++]);
       
   444         $this->_glyphIndexArray[0x02c7] = ord($cmapData[$i]);
       
   445     }
       
   446 
       
   447 }