Вход Регистрация
Файл: library/Zend/Pdf/Resource/Font/Simple/Standard/ZapfDingbats.php
Строк: 459
<?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-2010 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: ZapfDingbats.php 20096 2010-01-06 02:05:09Z bkarwin $
 */


/** Internally used classes */
require_once 'Zend/Pdf/Element/Name.php';


/** Zend_Pdf_Resource_Font_Simple_Standard */
require_once 'Zend/Pdf/Resource/Font/Simple/Standard.php';

/**
 * Implementation for the standard PDF font ZapfDingbats.
 *
 * This class was generated automatically using the font information and metric
 * data contained in the Adobe Font Metric (AFM) files, available here:
 * {@link http://partners.adobe.com/public/developer/en/pdf/Core14_AFMs.zip}
 *
 * The PHP script used to generate this class can be found in the /tools
 * directory of the framework distribution. If you need to make modifications to
 * this class, chances are the same modifications are needed for the rest of the
 * standard fonts. You should modify the script and regenerate the classes
 * instead of changing this class file by hand.
 *
 * @package    Zend_Pdf
 * @subpackage Fonts
 * @copyright  Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Pdf_Resource_Font_Simple_Standard_ZapfDingbats extends Zend_Pdf_Resource_Font_Simple_Standard
{
  
/**** Instance Variables ****/


    /**
     * Array for conversion from local encoding to special font encoding.
     * See {@link encodeString()}.
     * @var array
     */
    
protected $_toFontEncoding = array(
            
0x20 => "x20"0x2701 => "x21"0x2702 => "x22"0x2703 => "x23",
          
0x2704 => "x24"0x260e => "x25"0x2706 => "x26"0x2707 => "x27",
          
0x2708 => "x28"0x2709 => "x29"0x261b => "x2a"0x261e => "x2b",
          
0x270c => "x2c"0x270d => "x2d"0x270e => "x2e"0x270f => "x2f",
          
0x2710 => "x30"0x2711 => "x31"0x2712 => "x32"0x2713 => "x33",
          
0x2714 => "x34"0x2715 => "x35"0x2716 => "x36"0x2717 => "x37",
          
0x2718 => "x38"0x2719 => "x39"0x271a => "x3a"0x271b => "x3b",
          
0x271c => "x3c"0x271d => "x3d"0x271e => "x3e"0x271f => "x3f",
          
0x2720 => "x40"0x2721 => "x41"0x2722 => "x42"0x2723 => "x43",
          
0x2724 => "x44"0x2725 => "x45"0x2726 => "x46"0x2727 => "x47",
          
0x2605 => "x48"0x2729 => "x49"0x272a => "x4a"0x272b => "x4b",
          
0x272c => "x4c"0x272d => "x4d"0x272e => "x4e"0x272f => "x4f",
          
0x2730 => "x50"0x2731 => "x51"0x2732 => "x52"0x2733 => "x53",
          
0x2734 => "x54"0x2735 => "x55"0x2736 => "x56"0x2737 => "x57",
          
0x2738 => "x58"0x2739 => "x59"0x273a => "x5a"0x273b => "x5b",
          
0x273c => "x5c"0x273d => "x5d"0x273e => "x5e"0x273f => "x5f",
          
0x2740 => "x60"0x2741 => "x61"0x2742 => "x62"0x2743 => "x63",
          
0x2744 => "x64"0x2745 => "x65"0x2746 => "x66"0x2747 => "x67",
          
0x2748 => "x68"0x2749 => "x69"0x274a => "x6a"0x274b => "x6b",
          
0x25cf => "x6c"0x274d => "x6d"0x25a0 => "x6e"0x274f => "x6f",
          
0x2750 => "x70"0x2751 => "x71"0x2752 => "x72"0x25b2 => "x73",
          
0x25bc => "x74"0x25c6 => "x75"0x2756 => "x76"0x25d7 => "x77",
          
0x2758 => "x78"0x2759 => "x79"0x275a => "x7a"0x275b => "x7b",
          
0x275c => "x7c"0x275d => "x7d"0x275e => "x7e"0x2768 => "x80",
          
0x2769 => "x81"0x276a => "x82"0x276b => "x83"0x276c => "x84",
          
0x276d => "x85"0x276e => "x86"0x276f => "x87"0x2770 => "x88",
          
0x2771 => "x89"0x2772 => "x8a"0x2773 => "x8b"0x2774 => "x8c",
          
0x2775 => "x8d"0x2761 => "xa1"0x2762 => "xa2"0x2763 => "xa3",
          
0x2764 => "xa4"0x2765 => "xa5"0x2766 => "xa6"0x2767 => "xa7",
          
0x2663 => "xa8"0x2666 => "xa9"0x2665 => "xaa"0x2660 => "xab",
          
0x2460 => "xac"0x2461 => "xad"0x2462 => "xae"0x2463 => "xaf",
          
0x2464 => "xb0"0x2465 => "xb1"0x2466 => "xb2"0x2467 => "xb3",
          
0x2468 => "xb4"0x2469 => "xb5"0x2776 => "xb6"0x2777 => "xb7",
          
0x2778 => "xb8"0x2779 => "xb9"0x277a => "xba"0x277b => "xbb",
          
0x277c => "xbc"0x277d => "xbd"0x277e => "xbe"0x277f => "xbf",
          
0x2780 => "xc0"0x2781 => "xc1"0x2782 => "xc2"0x2783 => "xc3",
          
0x2784 => "xc4"0x2785 => "xc5"0x2786 => "xc6"0x2787 => "xc7",
          
0x2788 => "xc8"0x2789 => "xc9"0x278a => "xca"0x278b => "xcb",
          
0x278c => "xcc"0x278d => "xcd"0x278e => "xce"0x278f => "xcf",
          
0x2790 => "xd0"0x2791 => "xd1"0x2792 => "xd2"0x2793 => "xd3",
          
0x2794 => "xd4"0x2192 => "xd5"0x2194 => "xd6"0x2195 => "xd7",
          
0x2798 => "xd8"0x2799 => "xd9"0x279a => "xda"0x279b => "xdb",
          
0x279c => "xdc"0x279d => "xdd"0x279e => "xde"0x279f => "xdf",
          
0x27a0 => "xe0"0x27a1 => "xe1"0x27a2 => "xe2"0x27a3 => "xe3",
          
0x27a4 => "xe4"0x27a5 => "xe5"0x27a6 => "xe6"0x27a7 => "xe7",
          
0x27a8 => "xe8"0x27a9 => "xe9"0x27aa => "xea"0x27ab => "xeb",
          
0x27ac => "xec"0x27ad => "xed"0x27ae => "xee"0x27af => "xef",
          
0x27b1 => "xf1"0x27b2 => "xf2"0x27b3 => "xf3"0x27b4 => "xf4",
          
0x27b5 => "xf5"0x27b6 => "xf6"0x27b7 => "xf7"0x27b8 => "xf8",
          
0x27b9 => "xf9"0x27ba => "xfa"0x27bb => "xfb"0x27bc => "xfc",
          
0x27bd => "xfd"0x27be => "xfe");

    
/**
     * Array for conversion from special font encoding to local encoding.
     * See {@link decodeString()}.
     * @var array
     */
    
protected $_fromFontEncoding = array(
            
0x20 => "x00x20",   0x21 => "x27x01",   0x22 => "x27x02",
            
0x23 => "x27x03",   0x24 => "x27x04",   0x25 => "x26x0e",
            
0x26 => "x27x06",   0x27 => "x27x07",   0x28 => "x27x08",
            
0x29 => "x27x09",   0x2a => "x26x1b",   0x2b => "x26x1e",
            
0x2c => "x27x0c",   0x2d => "x27x0d",   0x2e => "x27x0e",
            
0x2f => "x27x0f",   0x30 => "x27x10",   0x31 => "x27x11",
            
0x32 => "x27x12",   0x33 => "x27x13",   0x34 => "x27x14",
            
0x35 => "x27x15",   0x36 => "x27x16",   0x37 => "x27x17",
            
0x38 => "x27x18",   0x39 => "x27x19",   0x3a => "x27x1a",
            
0x3b => "x27x1b",   0x3c => "x27x1c",   0x3d => "x27x1d",
            
0x3e => "x27x1e",   0x3f => "x27x1f",   0x40 => "x27x20",
            
0x41 => "x27x21",   0x42 => "x27x22",   0x43 => "x27x23",
            
0x44 => "x27x24",   0x45 => "x27x25",   0x46 => "x27x26",
            
0x47 => "x27x27",   0x48 => "x26x05",   0x49 => "x27x29",
            
0x4a => "x27x2a",   0x4b => "x27x2b",   0x4c => "x27x2c",
            
0x4d => "x27x2d",   0x4e => "x27x2e",   0x4f => "x27x2f",
            
0x50 => "x27x30",   0x51 => "x27x31",   0x52 => "x27x32",
            
0x53 => "x27x33",   0x54 => "x27x34",   0x55 => "x27x35",
            
0x56 => "x27x36",   0x57 => "x27x37",   0x58 => "x27x38",
            
0x59 => "x27x39",   0x5a => "x27x3a",   0x5b => "x27x3b",
            
0x5c => "x27x3c",   0x5d => "x27x3d",   0x5e => "x27x3e",
            
0x5f => "x27x3f",   0x60 => "x27x40",   0x61 => "x27x41",
            
0x62 => "x27x42",   0x63 => "x27x43",   0x64 => "x27x44",
            
0x65 => "x27x45",   0x66 => "x27x46",   0x67 => "x27x47",
            
0x68 => "x27x48",   0x69 => "x27x49",   0x6a => "x27x4a",
            
0x6b => "x27x4b",   0x6c => "x25xcf",   0x6d => "x27x4d",
            
0x6e => "x25xa0",   0x6f => "x27x4f",   0x70 => "x27x50",
            
0x71 => "x27x51",   0x72 => "x27x52",   0x73 => "x25xb2",
            
0x74 => "x25xbc",   0x75 => "x25xc6",   0x76 => "x27x56",
            
0x77 => "x25xd7",   0x78 => "x27x58",   0x79 => "x27x59",
            
0x7a => "x27x5a",   0x7b => "x27x5b",   0x7c => "x27x5c",
            
0x7d => "x27x5d",   0x7e => "x27x5e",   0x80 => "x27x68",
            
0x81 => "x27x69",   0x82 => "x27x6a",   0x83 => "x27x6b",
            
0x84 => "x27x6c",   0x85 => "x27x6d",   0x86 => "x27x6e",
            
0x87 => "x27x6f",   0x88 => "x27x70",   0x89 => "x27x71",
            
0x8a => "x27x72",   0x8b => "x27x73",   0x8c => "x27x74",
            
0x8d => "x27x75",   0xa1 => "x27x61",   0xa2 => "x27x62",
            
0xa3 => "x27x63",   0xa4 => "x27x64",   0xa5 => "x27x65",
            
0xa6 => "x27x66",   0xa7 => "x27x67",   0xa8 => "x26x63",
            
0xa9 => "x26x66",   0xaa => "x26x65",   0xab => "x26x60",
            
0xac => "x24x60",   0xad => "x24x61",   0xae => "x24x62",
            
0xaf => "x24x63",   0xb0 => "x24x64",   0xb1 => "x24x65",
            
0xb2 => "x24x66",   0xb3 => "x24x67",   0xb4 => "x24x68",
            
0xb5 => "x24x69",   0xb6 => "x27x76",   0xb7 => "x27x77",
            
0xb8 => "x27x78",   0xb9 => "x27x79",   0xba => "x27x7a",
            
0xbb => "x27x7b",   0xbc => "x27x7c",   0xbd => "x27x7d",
            
0xbe => "x27x7e",   0xbf => "x27x7f",   0xc0 => "x27x80",
            
0xc1 => "x27x81",   0xc2 => "x27x82",   0xc3 => "x27x83",
            
0xc4 => "x27x84",   0xc5 => "x27x85",   0xc6 => "x27x86",
            
0xc7 => "x27x87",   0xc8 => "x27x88",   0xc9 => "x27x89",
            
0xca => "x27x8a",   0xcb => "x27x8b",   0xcc => "x27x8c",
            
0xcd => "x27x8d",   0xce => "x27x8e",   0xcf => "x27x8f",
            
0xd0 => "x27x90",   0xd1 => "x27x91",   0xd2 => "x27x92",
            
0xd3 => "x27x93",   0xd4 => "x27x94",   0xd5 => "x21x92",
            
0xd6 => "x21x94",   0xd7 => "x21x95",   0xd8 => "x27x98",
            
0xd9 => "x27x99",   0xda => "x27x9a",   0xdb => "x27x9b",
            
0xdc => "x27x9c",   0xdd => "x27x9d",   0xde => "x27x9e",
            
0xdf => "x27x9f",   0xe0 => "x27xa0",   0xe1 => "x27xa1",
            
0xe2 => "x27xa2",   0xe3 => "x27xa3",   0xe4 => "x27xa4",
            
0xe5 => "x27xa5",   0xe6 => "x27xa6",   0xe7 => "x27xa7",
            
0xe8 => "x27xa8",   0xe9 => "x27xa9",   0xea => "x27xaa",
            
0xeb => "x27xab",   0xec => "x27xac",   0xed => "x27xad",
            
0xee => "x27xae",   0xef => "x27xaf",   0xf1 => "x27xb1",
            
0xf2 => "x27xb2",   0xf3 => "x27xb3",   0xf4 => "x27xb4",
            
0xf5 => "x27xb5",   0xf6 => "x27xb6",   0xf7 => "x27xb7",
            
0xf8 => "x27xb8",   0xf9 => "x27xb9",   0xfa => "x27xba",
            
0xfb => "x27xbb",   0xfc => "x27xbc",   0xfd => "x27xbd",
            
0xfe => "x27xbe");



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


  /* Object Lifecycle */

    /**
     * Object constructor
     */
    
public function __construct()
    {
        
parent::__construct();


        
/* Object properties */

        /* The font names are stored internally as Unicode UTF-16BE-encoded
         * strings. Since this information is static, save unnecessary trips
         * through iconv() and just use pre-encoded hexidecimal strings.
         */
        
$this->_fontNames[Zend_Pdf_Font::NAME_COPYRIGHT]['en'] =
          
"x00x43x00x6fx00x70x00x79x00x72x00x69x00x67x00x68x00"
          
"x74x00x20x00x28x00x63x00x29x00x20x00x31x00x39x00"
          
"x38x00x35x00x2cx00x20x00x31x00x39x00x38x00x37x00"
          
"x2cx00x20x00x31x00x39x00x38x00x38x00x2cx00x20x00"
          
"x31x00x39x00x38x00x39x00x2cx00x20x00x31x00x39x00"
          
"x39x00x37x00x20x00x41x00x64x00x6fx00x62x00x65x00"
          
"x20x00x53x00x79x00x73x00x74x00x65x00x6dx00x73x00"
          
"x20x00x49x00x6ex00x63x00x6fx00x72x00x70x00x6fx00"
          
"x72x00x61x00x74x00x65x00x64x00x2ex00x20x00x41x00"
          
"x6cx00x6cx00x20x00x52x00x69x00x67x00x68x00x74x00"
          
"x73x00x20x00x52x00x65x00x73x00x65x00x72x00x76x00"
          
"x65x00x64x00x2ex00x49x00x54x00x43x00x20x00x5ax00"
          
"x61x00x70x00x66x00x20x00x44x00x69x00x6ex00x67x00"
          
"x62x00x61x00x74x00x73x00x20x00x69x00x73x00x20x00"
          
"x61x00x20x00x72x00x65x00x67x00x69x00x73x00x74x00"
          
"x65x00x72x00x65x00x64x00x20x00x74x00x72x00x61x00"
          
"x64x00x65x00x6dx00x61x00x72x00x6bx00x20x00x6fx00"
          
"x66x00x20x00x49x00x6ex00x74x00x65x00x72x00x6ex00"
          
"x61x00x74x00x69x00x6fx00x6ex00x61x00x6cx00x20x00"
          
"x54x00x79x00x70x00x65x00x66x00x61x00x63x00x65x00"
          
"x20x00x43x00x6fx00x72x00x70x00x6fx00x72x00x61x00"
          
"x74x00x69x00x6fx00x6ex00x2e";
        
$this->_fontNames[Zend_Pdf_Font::NAME_FAMILY]['en'] =
          
"x00x5ax00x61x00x70x00x66x00x44x00x69x00x6ex00x67x00"
          
"x62x00x61x00x74x00x73";
        
$this->_fontNames[Zend_Pdf_Font::NAME_STYLE]['en'] =
          
"x00x4dx00x65x00x64x00x69x00x75x00x6d";
        
$this->_fontNames[Zend_Pdf_Font::NAME_ID]['en'] =
          
"x00x34x00x33x00x30x00x38x00x32";
        
$this->_fontNames[Zend_Pdf_Font::NAME_FULL]['en'] =
          
"x00x5ax00x61x00x70x00x66x00x44x00x69x00x6ex00x67x00"
          
"x62x00x61x00x74x00x73x00x20x00x4dx00x65x00x64x00"
          
"x69x00x75x00x6d";
        
$this->_fontNames[Zend_Pdf_Font::NAME_VERSION]['en'] =
          
"x00x30x00x30x00x32x00x2ex00x30x00x30x00x30";
        
$this->_fontNames[Zend_Pdf_Font::NAME_POSTSCRIPT]['en'] =
          
"x00x5ax00x61x00x70x00x66x00x44x00x69x00x6ex00x67x00"
          
"x62x00x61x00x74x00x73";

        
$this->_isBold false;
        
$this->_isItalic false;
        
$this->_isMonospaced false;

        
$this->_underlinePosition = -100;
        
$this->_underlineThickness 50;
        
$this->_strikePosition 225;
        
$this->_strikeThickness 50;

        
$this->_unitsPerEm 1000;

        
$this->_ascent  1000;
        
$this->_descent 0;
        
$this->_lineGap 200;

        
/* The glyph numbers assigned here are synthetic; they do not match the
         * actual glyph numbers used by the font. This is not a big deal though
         * since this data never makes it to the PDF file. It is only used
         * internally for layout calculations.
         */
        
$this->_glyphWidths = array(
            
0x00 => 0x01f4,   0x01 => 0x0116,   0x02 => 0x03ce,   0x03 => 0x03c1,
            
0x04 => 0x03ce,   0x05 => 0x03d4,   0x06 => 0x02cf,   0x07 => 0x0315,
            
0x08 => 0x0316,   0x09 => 0x0317,   0x0a => 0x02b2,   0x0b => 0x03c0,
            
0x0c => 0x03ab,   0x0d => 0x0225,   0x0e => 0x0357,   0x0f => 0x038f,
            
0x10 => 0x03a5,   0x11 => 0x038f,   0x12 => 0x03b1,   0x13 => 0x03ce,
            
0x14 => 0x02f3,   0x15 => 0x034e,   0x16 => 0x02fa,   0x17 => 0x02f9,
            
0x18 => 0x023b,   0x19 => 0x02a5,   0x1a => 0x02fb,   0x1b => 0x02f8,
            
0x1c => 0x02f7,   0x1d => 0x02f2,   0x1e => 0x01ee,   0x1f => 0x0228,
            
0x20 => 0x0219,   0x21 => 0x0241,   0x22 => 0x02b4,   0x23 => 0x0312,
            
0x24 => 0x0314,   0x25 => 0x0314,   0x26 => 0x0316,   0x27 => 0x0319,
            
0x28 => 0x031a,   0x29 => 0x0330,   0x2a => 0x0337,   0x2b => 0x0315,
            
0x2c => 0x0349,   0x2d => 0x0337,   0x2e => 0x0341,   0x2f => 0x0330,
            
0x30 => 0x033f,   0x31 => 0x039b,   0x32 => 0x02e8,   0x33 => 0x02d3,
            
0x34 => 0x02ed,   0x35 => 0x0316,   0x36 => 0x0318,   0x37 => 0x02b7,
            
0x38 => 0x0308,   0x39 => 0x0300,   0x3a => 0x0318,   0x3b => 0x02f7,
            
0x3c => 0x02c3,   0x3d => 0x02c4,   0x3e => 0x02aa,   0x3f => 0x02bd,
            
0x40 => 0x033a,   0x41 => 0x032f,   0x42 => 0x0315,   0x43 => 0x0315,
            
0x44 => 0x02c3,   0x45 => 0x02af,   0x46 => 0x02b8,   0x47 => 0x02b1,
            
0x48 => 0x0312,   0x49 => 0x0313,   0x4a => 0x02c9,   0x4b => 0x0317,
            
0x4c => 0x0311,   0x4d => 0x0317,   0x4e => 0x0369,   0x4f => 0x02f9,
            
0x50 => 0x02fa,   0x51 => 0x02fa,   0x52 => 0x02f7,   0x53 => 0x02f7,
            
0x54 => 0x037c,   0x55 => 0x037c,   0x56 => 0x0314,   0x57 => 0x0310,
            
0x58 => 0x01b6,   0x59 =>   0x8a,   0x5a => 0x0115,   0x5b => 0x019f,
            
0x5c => 0x0188,   0x5d => 0x0188,   0x5e => 0x029c,   0x5f => 0x029c,
            
0x60 => 0x0186,   0x61 => 0x0186,   0x62 => 0x013d,   0x63 => 0x013d,
            
0x64 => 0x0114,   0x65 => 0x0114,   0x66 => 0x01fd,   0x67 => 0x01fd,
            
0x68 => 0x019a,   0x69 => 0x019a,   0x6a =>   0xea,   0x6b =>   0xea,
            
0x6c => 0x014e,   0x6d => 0x014e,   0x6e => 0x02dc,   0x6f => 0x0220,
            
0x70 => 0x0220,   0x71 => 0x038e,   0x72 => 0x029b,   0x73 => 0x02f8,
            
0x74 => 0x02f8,   0x75 => 0x0308,   0x76 => 0x0253,   0x77 => 0x02b6,
            
0x78 => 0x0272,   0x79 => 0x0314,   0x7a => 0x0314,   0x7b => 0x0314,
            
0x7c => 0x0314,   0x7d => 0x0314,   0x7e => 0x0314,   0x7f => 0x0314,
            
0x80 => 0x0314,   0x81 => 0x0314,   0x82 => 0x0314,   0x83 => 0x0314,
            
0x84 => 0x0314,   0x85 => 0x0314,   0x86 => 0x0314,   0x87 => 0x0314,
            
0x88 => 0x0314,   0x89 => 0x0314,   0x8a => 0x0314,   0x8b => 0x0314,
            
0x8c => 0x0314,   0x8d => 0x0314,   0x8e => 0x0314,   0x8f => 0x0314,
            
0x90 => 0x0314,   0x91 => 0x0314,   0x92 => 0x0314,   0x93 => 0x0314,
            
0x94 => 0x0314,   0x95 => 0x0314,   0x96 => 0x0314,   0x97 => 0x0314,
            
0x98 => 0x0314,   0x99 => 0x0314,   0x9a => 0x0314,   0x9b => 0x0314,
            
0x9c => 0x0314,   0x9d => 0x0314,   0x9e => 0x0314,   0x9f => 0x0314,
            
0xa0 => 0x0314,   0xa1 => 0x037e,   0xa2 => 0x0346,   0xa3 => 0x03f8,
            
0xa4 => 0x01ca,   0xa5 => 0x02ec,   0xa6 => 0x039c,   0xa7 => 0x02ec,
            
0xa8 => 0x0396,   0xa9 => 0x039f,   0xaa => 0x03a0,   0xab => 0x03a0,
            
0xac => 0x0342,   0xad => 0x0369,   0xae => 0x033c,   0xaf => 0x039c,
            
0xb0 => 0x039c,   0xb1 => 0x0395,   0xb2 => 0x03a2,   0xb3 => 0x03a3,
            
0xb4 => 0x01cf,   0xb5 => 0x0373,   0xb6 => 0x0344,   0xb7 => 0x0344,
            
0xb8 => 0x0363,   0xb9 => 0x0363,   0xba => 0x02b8,   0xbb => 0x02b8,
            
0xbc => 0x036a,   0xbd => 0x036a,   0xbe => 0x02f8,   0xbf => 0x03b2,
            
0xc0 => 0x0303,   0xc1 => 0x0361,   0xc2 => 0x0303,   0xc3 => 0x0378,
            
0xc4 => 0x03c7,   0xc5 => 0x0378,   0xc6 => 0x033f,   0xc7 => 0x0369,
            
0xc8 => 0x039f,   0xc9 => 0x03ca,   0xca => 0x0396);

        
/* The cmap table is similarly synthesized.
         */
        
$cmapData = array(
            
0x20 =>   0x010x2701 =>   0x020x2702 =>   0x030x2703 =>   0x04,
          
0x2704 =>   0x050x260e =>   0x060x2706 =>   0x070x2707 =>   0x08,
          
0x2708 =>   0x090x2709 =>   0x0a0x261b =>   0x0b0x261e =>   0x0c,
          
0x270c =>   0x0d0x270d =>   0x0e0x270e =>   0x0f0x270f =>   0x10,
          
0x2710 =>   0x110x2711 =>   0x120x2712 =>   0x130x2713 =>   0x14,
          
0x2714 =>   0x150x2715 =>   0x160x2716 =>   0x170x2717 =>   0x18,
          
0x2718 =>   0x190x2719 =>   0x1a0x271a =>   0x1b0x271b =>   0x1c,
          
0x271c =>   0x1d0x271d =>   0x1e0x271e =>   0x1f0x271f =>   0x20,
          
0x2720 =>   0x210x2721 =>   0x220x2722 =>   0x230x2723 =>   0x24,
          
0x2724 =>   0x250x2725 =>   0x260x2726 =>   0x270x2727 =>   0x28,
          
0x2605 =>   0x290x2729 =>   0x2a0x272a =>   0x2b0x272b =>   0x2c,
          
0x272c =>   0x2d0x272d =>   0x2e0x272e =>   0x2f0x272f =>   0x30,
          
0x2730 =>   0x310x2731 =>   0x320x2732 =>   0x330x2733 =>   0x34,
          
0x2734 =>   0x350x2735 =>   0x360x2736 =>   0x370x2737 =>   0x38,
          
0x2738 =>   0x390x2739 =>   0x3a0x273a =>   0x3b0x273b =>   0x3c,
          
0x273c =>   0x3d0x273d =>   0x3e0x273e =>   0x3f0x273f =>   0x40,
          
0x2740 =>   0x410x2741 =>   0x420x2742 =>   0x430x2743 =>   0x44,
          
0x2744 =>   0x450x2745 =>   0x460x2746 =>   0x470x2747 =>   0x48,
          
0x2748 =>   0x490x2749 =>   0x4a0x274a =>   0x4b0x274b =>   0x4c,
          
0x25cf =>   0x4d0x274d =>   0x4e0x25a0 =>   0x4f0x274f =>   0x50,
          
0x2750 =>   0x510x2751 =>   0x520x2752 =>   0x530x25b2 =>   0x54,
          
0x25bc =>   0x550x25c6 =>   0x560x2756 =>   0x570x25d7 =>   0x58,
          
0x2758 =>   0x590x2759 =>   0x5a0x275a =>   0x5b0x275b =>   0x5c,
          
0x275c =>   0x5d0x275d =>   0x5e0x275e =>   0x5f0x2768 =>   0x60,
          
0x2769 =>   0x610x276a =>   0x620x276b =>   0x630x276c =>   0x64,
          
0x276d =>   0x650x276e =>   0x660x276f =>   0x670x2770 =>   0x68,
          
0x2771 =>   0x690x2772 =>   0x6a0x2773 =>   0x6b0x2774 =>   0x6c,
          
0x2775 =>   0x6d0x2761 =>   0x6e0x2762 =>   0x6f0x2763 =>   0x70,
          
0x2764 =>   0x710x2765 =>   0x720x2766 =>   0x730x2767 =>   0x74,
          
0x2663 =>   0x750x2666 =>   0x760x2665 =>   0x770x2660 =>   0x78,
          
0x2460 =>   0x790x2461 =>   0x7a0x2462 =>   0x7b0x2463 =>   0x7c,
          
0x2464 =>   0x7d0x2465 =>   0x7e0x2466 =>   0x7f0x2467 =>   0x80,
          
0x2468 =>   0x810x2469 =>   0x820x2776 =>   0x830x2777 =>   0x84,
          
0x2778 =>   0x850x2779 =>   0x860x277a =>   0x870x277b =>   0x88,
          
0x277c =>   0x890x277d =>   0x8a0x277e =>   0x8b0x277f =>   0x8c,
          
0x2780 =>   0x8d0x2781 =>   0x8e0x2782 =>   0x8f0x2783 =>   0x90,
          
0x2784 =>   0x910x2785 =>   0x920x2786 =>   0x930x2787 =>   0x94,
          
0x2788 =>   0x950x2789 =>   0x960x278a =>   0x970x278b =>   0x98,
          
0x278c =>   0x990x278d =>   0x9a0x278e =>   0x9b0x278f =>   0x9c,
          
0x2790 =>   0x9d0x2791 =>   0x9e0x2792 =>   0x9f0x2793 =>   0xa0,
          
0x2794 =>   0xa10x2192 =>   0xa20x2194 =>   0xa30x2195 =>   0xa4,
          
0x2798 =>   0xa50x2799 =>   0xa60x279a =>   0xa70x279b =>   0xa8,
          
0x279c =>   0xa90x279d =>   0xaa0x279e =>   0xab0x279f =>   0xac,
          
0x27a0 =>   0xad0x27a1 =>   0xae0x27a2 =>   0xaf0x27a3 =>   0xb0,
          
0x27a4 =>   0xb10x27a5 =>   0xb20x27a6 =>   0xb30x27a7 =>   0xb4,
          
0x27a8 =>   0xb50x27a9 =>   0xb60x27aa =>   0xb70x27ab =>   0xb8,
          
0x27ac =>   0xb90x27ad =>   0xba0x27ae =>   0xbb0x27af =>   0xbc,
          
0x27b1 =>   0xbd0x27b2 =>   0xbe0x27b3 =>   0xbf0x27b4 =>   0xc0,
          
0x27b5 =>   0xc10x27b6 =>   0xc20x27b7 =>   0xc30x27b8 =>   0xc4,
          
0x27b9 =>   0xc50x27ba =>   0xc60x27bb =>   0xc70x27bc =>   0xc8,
          
0x27bd =>   0xc90x27be =>   0xca);
        require_once 
'Zend/Pdf/Cmap.php';
        
$this->_cmap Zend_Pdf_Cmap::cmapWithTypeData(
            
Zend_Pdf_Cmap::TYPE_BYTE_ENCODING_STATIC$cmapData);


        
/* Resource dictionary */

        /* The resource dictionary for the standard fonts is sparse because PDF
         * viewers already have all of the metrics data. We only need to provide
         * the font name and encoding method.
         */
        
$this->_resource->BaseFont = new Zend_Pdf_Element_Name('ZapfDingbats');

        
/* This font has a built-in custom character encoding method. Don't
         * override with WinAnsi like the other built-in fonts or else it will
         * not work as expected.
         */
        
$this->_resource->Encoding null;
    }


  
/* Information and Conversion Methods */

    /**
     * Convert string encoding from local encoding to font encoding. Overridden
     * to defeat the conversion behavior for this ornamental font.
     *
     * @param string $string
     * @param string $charEncoding Character encoding of source text.
     * @return string
     */
    
public function encodeString($string$charEncoding)
    {
        
/* This isn't the optimal time to perform this conversion, but it must
         * live here until the remainder of the layout code is completed. This,
         * and the $charEncoding parameter, will go away soon...
         */
        
if ($charEncoding != 'UTF-16BE') {
            
$string iconv($charEncoding'UTF-16BE'$string);
        }
        
/**
         * @todo Properly handle characters encoded as surrogate pairs.
         */
        
$encodedString '';
        for (
$i 0$i strlen($string); $i++) {
            
$characterCode = (ord($string[$i++]) << 8) | ord($string[$i]);
            if (isset(
$this->_toFontEncoding[$characterCode])) {
                
$encodedString .= $this->_toFontEncoding[$characterCode];
            } else {
                
/* For now, mimic the behavior in Zend_Pdf_Font::encodeString()
                 * where unknown characters are removed completely. This is not
                 * perfect, but we should be consistent. In a future revision,
                 * we will use the well-known substitution character 0x1a
                 * (Control-Z).
                 */
            
}
        }
        return 
$encodedString;
    }

    
/**
     * Convert string encoding from font encoding to local encoding. Overridden
     * to defeat the conversion behavior for this ornamental font.
     *
     * @param string $string
     * @param string $charEncoding Character encoding of resulting text.
     * @return string
     */
    
public function decodeString($string$charEncoding)
    {
        
$decodedString '';
        for (
$i 0$i strlen($string); $i++) {
            
$characterCode ord($string[$i]);
            if (isset(
$this->_fromFontEncoding[$characterCode])) {
                
$decodedString .= $this->_fromFontEncoding[$characterCode];
            } else {
                
/* For now, mimic the behavior in Zend_Pdf_Font::encodeString()
                 * where unknown characters are removed completely. This is not
                 * perfect, but we should be consistent. In a future revision,
                 * we will use the Unicode substitution character (U+FFFD).
                 */
            
}
        }
        if (
$charEncoding != 'UTF-16BE') {
            
$decodedString iconv('UTF-16BE'$charEncoding$decodedString);
        }
        return 
$decodedString;
    }

    
/**
     * Converts a Latin-encoded string that fakes the font's internal encoding
     * to the proper Unicode characters, in UTF-16BE encoding.
     *
     * Used to maintain backwards compatibility with the 20 year-old legacy
     * method of using this font, which is still employed by recent versions of
     * some popular word processors.
     *
     * Note that using this method adds overhead due to the additional
     * character conversion. Don't use this for new code; it is more efficient
     * to use the appropriate Unicode characters directly.
     *
     * @param string $string
     * @param string $charEncoding (optional) Character encoding of source
     *   string. Defaults to current locale.
     * @return string
     */
    
public function toUnicode($string$charEncoding '')
    {
        
/* When using these faked strings, the closest match to the font's
         * internal encoding is ISO-8859-1.
         */
        
if ($charEncoding != 'ISO-8859-1') {
            
$string iconv($charEncoding'ISO-8859-1'$string);
        }
        return 
$this->decodeString($string'UTF-16BE');
    }
}
Онлайн: 1
Реклама