CC-2166: Packaging Improvements. Moved the Zend app into airtime_mvc. It is now installed to /var/www/airtime. Storage is now set to /srv/airtime/stor. Utils are now installed to /usr/lib/airtime/utils/. Added install/airtime-dircheck.php as a simple test to see if everything is install/uninstalled correctly.
This commit is contained in:
parent
514777e8d2
commit
b11cbd8159
4546 changed files with 138 additions and 51 deletions
530
airtime_mvc/library/Zend/Pdf/Resource/Font.php
Normal file
530
airtime_mvc/library/Zend/Pdf/Resource/Font.php
Normal file
|
@ -0,0 +1,530 @@
|
|||
<?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: Font.php 20096 2010-01-06 02:05:09Z bkarwin $
|
||||
*/
|
||||
|
||||
/** Zend_Pdf_Resource */
|
||||
require_once 'Zend/Pdf/Resource.php';
|
||||
|
||||
/**
|
||||
* Zend_Pdf_Font
|
||||
*
|
||||
* Zend_Pdf_Font class constants are used within Zend_Pdf_Resource_Font
|
||||
* and its subclusses.
|
||||
*/
|
||||
require_once 'Zend/Pdf/Font.php';
|
||||
|
||||
/**
|
||||
* Abstract class which manages PDF fonts.
|
||||
*
|
||||
* Defines the public interface and creates shared storage for concrete
|
||||
* subclasses which are responsible for generating the font's information
|
||||
* dictionaries, mapping characters to glyphs, and providing both overall font
|
||||
* and glyph-specific metric data.
|
||||
*
|
||||
* Font objects should be normally be obtained from the factory methods
|
||||
* {@link Zend_Pdf_Font::fontWithName} and {@link Zend_Pdf_Font::fontWithPath}.
|
||||
*
|
||||
* @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
|
||||
*/
|
||||
abstract class Zend_Pdf_Resource_Font extends Zend_Pdf_Resource
|
||||
{
|
||||
/**** Instance Variables ****/
|
||||
|
||||
|
||||
/**
|
||||
* The type of font. Use TYPE_ constants defined in {@link Zend_Pdf_Font}.
|
||||
* @var integer
|
||||
*/
|
||||
protected $_fontType = Zend_Pdf_Font::TYPE_UNKNOWN;
|
||||
|
||||
/**
|
||||
* Array containing descriptive names for the font. See {@link fontName()}.
|
||||
* @var array
|
||||
*/
|
||||
protected $_fontNames = array();
|
||||
|
||||
/**
|
||||
* Flag indicating whether or not this font is bold.
|
||||
* @var boolean
|
||||
*/
|
||||
protected $_isBold = false;
|
||||
|
||||
/**
|
||||
* Flag indicating whether or not this font is italic.
|
||||
* @var boolean
|
||||
*/
|
||||
protected $_isItalic = false;
|
||||
|
||||
/**
|
||||
* Flag indicating whether or not this font is monospaced.
|
||||
* @var boolean
|
||||
*/
|
||||
protected $_isMonospace = false;
|
||||
|
||||
/**
|
||||
* The position below the text baseline of the underline (in glyph units).
|
||||
* @var integer
|
||||
*/
|
||||
protected $_underlinePosition = 0;
|
||||
|
||||
/**
|
||||
* The thickness of the underline (in glyph units).
|
||||
* @var integer
|
||||
*/
|
||||
protected $_underlineThickness = 0;
|
||||
|
||||
/**
|
||||
* The position above the text baseline of the strikethrough (in glyph units).
|
||||
* @var integer
|
||||
*/
|
||||
protected $_strikePosition = 0;
|
||||
|
||||
/**
|
||||
* The thickness of the strikethrough (in glyph units).
|
||||
* @var integer
|
||||
*/
|
||||
protected $_strikeThickness = 0;
|
||||
|
||||
/**
|
||||
* Number of glyph units per em. See {@link getUnitsPerEm()}.
|
||||
* @var integer
|
||||
*/
|
||||
protected $_unitsPerEm = 0;
|
||||
|
||||
/**
|
||||
* Typographical ascent. See {@link getAscent()}.
|
||||
* @var integer
|
||||
*/
|
||||
protected $_ascent = 0;
|
||||
|
||||
/**
|
||||
* Typographical descent. See {@link getDescent()}.
|
||||
* @var integer
|
||||
*/
|
||||
protected $_descent = 0;
|
||||
|
||||
/**
|
||||
* Typographical line gap. See {@link getLineGap()}.
|
||||
* @var integer
|
||||
*/
|
||||
protected $_lineGap = 0;
|
||||
|
||||
|
||||
|
||||
/**** Public Interface ****/
|
||||
|
||||
|
||||
/* Object Lifecycle */
|
||||
|
||||
/**
|
||||
* Object constructor.
|
||||
*
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct(new Zend_Pdf_Element_Dictionary());
|
||||
$this->_resource->Type = new Zend_Pdf_Element_Name('Font');
|
||||
}
|
||||
|
||||
|
||||
/* Object Magic Methods */
|
||||
|
||||
/**
|
||||
* Returns the full name of the font in the encoding method of the current
|
||||
* locale. Transliterates any characters that cannot be naturally
|
||||
* represented in that character set.
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function __toString()
|
||||
{
|
||||
return $this->getFontName(Zend_Pdf_Font::NAME_FULL, '', '//TRANSLIT');
|
||||
}
|
||||
|
||||
|
||||
/* Accessors */
|
||||
|
||||
/**
|
||||
* Returns the type of font.
|
||||
*
|
||||
* @return integer One of the TYPE_ constants defined in
|
||||
* {@link Zend_Pdf_Font}.
|
||||
*/
|
||||
public function getFontType()
|
||||
{
|
||||
return $this->_fontType;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the specified descriptive name for the font.
|
||||
*
|
||||
* The font name type is usually one of the following:
|
||||
* <ul>
|
||||
* <li>{@link Zend_Pdf_Font::NAME_FULL}
|
||||
* <li>{@link Zend_Pdf_Font::NAME_FAMILY}
|
||||
* <li>{@link Zend_Pdf_Font::NAME_PREFERRED_FAMILY}
|
||||
* <li>{@link Zend_Pdf_Font::NAME_STYLE}
|
||||
* <li>{@link Zend_Pdf_Font::NAME_PREFERRED_STYLE}
|
||||
* <li>{@link Zend_Pdf_Font::NAME_DESCRIPTION}
|
||||
* <li>{@link Zend_Pdf_Font::NAME_SAMPLE_TEXT}
|
||||
* <li>{@link Zend_Pdf_Font::NAME_ID}
|
||||
* <li>{@link Zend_Pdf_Font::NAME_VERSION}
|
||||
* <li>{@link Zend_Pdf_Font::NAME_POSTSCRIPT}
|
||||
* <li>{@link Zend_Pdf_Font::NAME_CID_NAME}
|
||||
* <li>{@link Zend_Pdf_Font::NAME_DESIGNER}
|
||||
* <li>{@link Zend_Pdf_Font::NAME_DESIGNER_URL}
|
||||
* <li>{@link Zend_Pdf_Font::NAME_MANUFACTURER}
|
||||
* <li>{@link Zend_Pdf_Font::NAME_VENDOR_URL}
|
||||
* <li>{@link Zend_Pdf_Font::NAME_COPYRIGHT}
|
||||
* <li>{@link Zend_Pdf_Font::NAME_TRADEMARK}
|
||||
* <li>{@link Zend_Pdf_Font::NAME_LICENSE}
|
||||
* <li>{@link Zend_Pdf_Font::NAME_LICENSE_URL}
|
||||
* </ul>
|
||||
*
|
||||
* Note that not all names are available for all fonts. In addition, some
|
||||
* fonts may contain additional names, whose indicies are in the range
|
||||
* 256 to 32767 inclusive, which are used for certain font layout features.
|
||||
*
|
||||
* If the preferred language translation is not available, uses the first
|
||||
* available translation for the name, which is usually English.
|
||||
*
|
||||
* If the requested name does not exist, returns null.
|
||||
*
|
||||
* All names are stored internally as Unicode strings, using UTF-16BE
|
||||
* encoding. You may optionally supply a different resulting character set.
|
||||
*
|
||||
* @param integer $nameType Type of name requested.
|
||||
* @param mixed $language Preferred language (string) or array of languages
|
||||
* in preferred order. Use the ISO 639 standard 2-letter language codes.
|
||||
* @param string $characterSet (optional) Desired resulting character set.
|
||||
* You may use any character set supported by {@link iconv()};
|
||||
* @return string
|
||||
*/
|
||||
public function getFontName($nameType, $language, $characterSet = null)
|
||||
{
|
||||
if (! isset($this->_fontNames[$nameType])) {
|
||||
return null;
|
||||
}
|
||||
$name = null;
|
||||
if (is_array($language)) {
|
||||
foreach ($language as $code) {
|
||||
if (isset($this->_fontNames[$nameType][$code])) {
|
||||
$name = $this->_fontNames[$nameType][$code];
|
||||
break;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if (isset($this->_fontNames[$nameType][$language])) {
|
||||
$name = $this->_fontNames[$nameType][$language];
|
||||
}
|
||||
}
|
||||
/* If the preferred language could not be found, use whatever is first.
|
||||
*/
|
||||
if ($name === null) {
|
||||
$names = $this->_fontNames[$nameType];
|
||||
$name = reset($names);
|
||||
}
|
||||
/* Convert the character set if requested.
|
||||
*/
|
||||
if (($characterSet !== null) && ($characterSet != 'UTF-16BE') && PHP_OS != 'AIX') { // AIX knows not this charset
|
||||
$name = iconv('UTF-16BE', $characterSet, $name);
|
||||
}
|
||||
return $name;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns whole set of font names.
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function getFontNames()
|
||||
{
|
||||
return $this->_fontNames;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns true if font is bold.
|
||||
*
|
||||
* @return boolean
|
||||
*/
|
||||
public function isBold()
|
||||
{
|
||||
return $this->_isBold;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns true if font is italic.
|
||||
*
|
||||
* @return boolean
|
||||
*/
|
||||
public function isItalic()
|
||||
{
|
||||
return $this->_isItalic;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns true if font is monospace.
|
||||
*
|
||||
* @return boolean
|
||||
*/
|
||||
public function isMonospace()
|
||||
{
|
||||
return $this->_isMonospace;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the suggested position below the text baseline of the underline
|
||||
* in glyph units.
|
||||
*
|
||||
* This value is usually negative.
|
||||
*
|
||||
* @return integer
|
||||
*/
|
||||
public function getUnderlinePosition()
|
||||
{
|
||||
return $this->_underlinePosition;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the suggested line thickness of the underline in glyph units.
|
||||
*
|
||||
* @return integer
|
||||
*/
|
||||
public function getUnderlineThickness()
|
||||
{
|
||||
return $this->_underlineThickness;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the suggested position above the text baseline of the
|
||||
* strikethrough in glyph units.
|
||||
*
|
||||
* @return integer
|
||||
*/
|
||||
public function getStrikePosition()
|
||||
{
|
||||
return $this->_strikePosition;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the suggested line thickness of the strikethrough in glyph units.
|
||||
*
|
||||
* @return integer
|
||||
*/
|
||||
public function getStrikeThickness()
|
||||
{
|
||||
return $this->_strikeThickness;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the number of glyph units per em.
|
||||
*
|
||||
* Used to convert glyph space to user space. Frequently used in conjunction
|
||||
* with {@link widthsForGlyphs()} to calculate the with of a run of text.
|
||||
*
|
||||
* @return integer
|
||||
*/
|
||||
public function getUnitsPerEm()
|
||||
{
|
||||
return $this->_unitsPerEm;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the typographic ascent in font glyph units.
|
||||
*
|
||||
* The typographic ascent is the distance from the font's baseline to the
|
||||
* top of the text frame. It is frequently used to locate the initial
|
||||
* baseline for a paragraph of text inside a given rectangle.
|
||||
*
|
||||
* @return integer
|
||||
*/
|
||||
public function getAscent()
|
||||
{
|
||||
return $this->_ascent;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the typographic descent in font glyph units.
|
||||
*
|
||||
* The typographic descent is the distance below the font's baseline to the
|
||||
* bottom of the text frame. It is always negative.
|
||||
*
|
||||
* @return integer
|
||||
*/
|
||||
public function getDescent()
|
||||
{
|
||||
return $this->_descent;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the typographic line gap in font glyph units.
|
||||
*
|
||||
* The typographic line gap is the distance between the bottom of the text
|
||||
* frame of one line to the top of the text frame of the next. It is
|
||||
* typically combined with the typographical ascent and descent to determine
|
||||
* the font's total line height (or leading).
|
||||
*
|
||||
* @return integer
|
||||
*/
|
||||
public function getLineGap()
|
||||
{
|
||||
return $this->_lineGap;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the suggested line height (or leading) in font glyph units.
|
||||
*
|
||||
* This value is determined by adding together the values of the typographic
|
||||
* ascent, descent, and line gap. This value yields the suggested line
|
||||
* spacing as determined by the font developer.
|
||||
*
|
||||
* It should be noted that this is only a guideline; layout engines will
|
||||
* frequently modify this value to achieve special effects such as double-
|
||||
* spacing.
|
||||
*
|
||||
* @return integer
|
||||
*/
|
||||
public function getLineHeight()
|
||||
{
|
||||
return $this->_ascent - $this->_descent + $this->_lineGap;
|
||||
}
|
||||
|
||||
|
||||
/* Information and Conversion Methods */
|
||||
|
||||
/**
|
||||
* 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.
|
||||
*/
|
||||
abstract public function glyphNumbersForCharacters($characterCodes);
|
||||
|
||||
/**
|
||||
* 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.
|
||||
*/
|
||||
abstract public function glyphNumberForCharacter($characterCode);
|
||||
|
||||
/**
|
||||
* Returns a number between 0 and 1 inclusive that indicates the percentage
|
||||
* of characters in the string which are covered by glyphs in this font.
|
||||
*
|
||||
* Since no one font will contain glyphs for the entire Unicode character
|
||||
* range, this method can be used to help locate a suitable font when the
|
||||
* actual contents of the string are not known.
|
||||
*
|
||||
* Note that some fonts lie about the characters they support. Additionally,
|
||||
* fonts don't usually contain glyphs for control characters such as tabs
|
||||
* and line breaks, so it is rare that you will get back a full 1.0 score.
|
||||
* The resulting value should be considered informational only.
|
||||
*
|
||||
* @param string $string
|
||||
* @param string $charEncoding (optional) Character encoding of source text.
|
||||
* If omitted, uses 'current locale'.
|
||||
* @return float
|
||||
*/
|
||||
abstract public function getCoveredPercentage($string, $charEncoding = '');
|
||||
|
||||
/**
|
||||
* Returns the widths of the glyphs.
|
||||
*
|
||||
* The widths are expressed in the font's glyph space. You are responsible
|
||||
* for converting to user space as necessary. See {@link unitsPerEm()}.
|
||||
*
|
||||
* See also {@link widthForGlyph()}.
|
||||
*
|
||||
* @param array $glyphNumbers Array of glyph numbers.
|
||||
* @return array Array of glyph widths (integers).
|
||||
* @throws Zend_Pdf_Exception
|
||||
*/
|
||||
abstract public function widthsForGlyphs($glyphNumbers);
|
||||
|
||||
/**
|
||||
* Returns the width of the glyph.
|
||||
*
|
||||
* Like {@link widthsForGlyphs()} but used for one glyph at a time.
|
||||
*
|
||||
* @param integer $glyphNumber
|
||||
* @return integer
|
||||
* @throws Zend_Pdf_Exception
|
||||
*/
|
||||
abstract public function widthForGlyph($glyphNumber);
|
||||
|
||||
/**
|
||||
* Convert string to the font encoding.
|
||||
*
|
||||
* The method is used to prepare string for text drawing operators
|
||||
*
|
||||
* @param string $string
|
||||
* @param string $charEncoding Character encoding of source text.
|
||||
* @return string
|
||||
*/
|
||||
abstract public function encodeString($string, $charEncoding);
|
||||
|
||||
/**
|
||||
* Convert string from the font encoding.
|
||||
*
|
||||
* The method is used to convert strings retrieved from existing content streams
|
||||
*
|
||||
* @param string $string
|
||||
* @param string $charEncoding Character encoding of resulting text.
|
||||
* @return string
|
||||
*/
|
||||
abstract public function decodeString($string, $charEncoding);
|
||||
|
||||
|
||||
|
||||
/**** Internal Methods ****/
|
||||
|
||||
|
||||
/**
|
||||
* If the font's glyph space is not 1000 units per em, converts the value.
|
||||
*
|
||||
* @internal
|
||||
* @param integer $value
|
||||
* @return integer
|
||||
*/
|
||||
public function toEmSpace($value)
|
||||
{
|
||||
if ($this->_unitsPerEm == 1000) {
|
||||
return $value;
|
||||
}
|
||||
return ceil(($value / $this->_unitsPerEm) * 1000); // always round up
|
||||
}
|
||||
}
|
||||
|
490
airtime_mvc/library/Zend/Pdf/Resource/Font/CidFont.php
Normal file
490
airtime_mvc/library/Zend/Pdf/Resource/Font/CidFont.php
Normal file
|
@ -0,0 +1,490 @@
|
|||
<?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: CidFont.php 20096 2010-01-06 02:05:09Z bkarwin $
|
||||
*/
|
||||
|
||||
/** Internally used classes */
|
||||
require_once 'Zend/Pdf/Element/Array.php';
|
||||
require_once 'Zend/Pdf/Element/Dictionary.php';
|
||||
require_once 'Zend/Pdf/Element/Name.php';
|
||||
require_once 'Zend/Pdf/Element/Numeric.php';
|
||||
require_once 'Zend/Pdf/Element/String.php';
|
||||
|
||||
|
||||
/** Zend_Pdf_Resource_Font */
|
||||
require_once 'Zend/Pdf/Resource/Font.php';
|
||||
|
||||
/**
|
||||
* Adobe PDF CIDFont font object implementation
|
||||
*
|
||||
* A CIDFont program contains glyph descriptions that are accessed using a CID as
|
||||
* the character selector. There are two types of CIDFont. A Type 0 CIDFont contains
|
||||
* glyph descriptions based on Adobe’s Type 1 font format, whereas those in a
|
||||
* Type 2 CIDFont are based on the TrueType font format.
|
||||
*
|
||||
* A CIDFont dictionary is a PDF object that contains information about a CIDFont program.
|
||||
* Although its Type value is Font, a CIDFont is not actually a font. It does not have an Encoding
|
||||
* entry, it cannot be listed in the Font subdictionary of a resource dictionary, and it cannot be
|
||||
* used as the operand of the Tf operator. It is used only as a descendant of a Type 0 font.
|
||||
* The CMap in the Type 0 font is what defines the encoding that maps character codes to CIDs
|
||||
* in the CIDFont.
|
||||
*
|
||||
* Font objects should be normally be obtained from the factory methods
|
||||
* {@link Zend_Pdf_Font::fontWithName} and {@link Zend_Pdf_Font::fontWithPath}.
|
||||
*
|
||||
* @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
|
||||
*/
|
||||
abstract class Zend_Pdf_Resource_Font_CidFont extends Zend_Pdf_Resource_Font
|
||||
{
|
||||
/**
|
||||
* Object representing the font's cmap (character to glyph map).
|
||||
* @var Zend_Pdf_Cmap
|
||||
*/
|
||||
protected $_cmap = null;
|
||||
|
||||
/**
|
||||
* Array containing the widths of each character that have entries in used character map.
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
protected $_charWidths = null;
|
||||
|
||||
/**
|
||||
* Width for characters missed in the font
|
||||
*
|
||||
* @var integer
|
||||
*/
|
||||
protected $_missingCharWidth = 0;
|
||||
|
||||
|
||||
/**
|
||||
* Object constructor
|
||||
*
|
||||
* @param Zend_Pdf_FileParser_Font_OpenType $fontParser Font parser object
|
||||
* containing OpenType file.
|
||||
* @param integer $embeddingOptions Options for font embedding.
|
||||
* @throws Zend_Pdf_Exception
|
||||
*/
|
||||
public function __construct(Zend_Pdf_FileParser_Font_OpenType $fontParser)
|
||||
{
|
||||
parent::__construct();
|
||||
|
||||
$fontParser->parse();
|
||||
|
||||
|
||||
/* Object properties */
|
||||
|
||||
$this->_fontNames = $fontParser->names;
|
||||
|
||||
$this->_isBold = $fontParser->isBold;
|
||||
$this->_isItalic = $fontParser->isItalic;
|
||||
$this->_isMonospaced = $fontParser->isMonospaced;
|
||||
|
||||
$this->_underlinePosition = $fontParser->underlinePosition;
|
||||
$this->_underlineThickness = $fontParser->underlineThickness;
|
||||
$this->_strikePosition = $fontParser->strikePosition;
|
||||
$this->_strikeThickness = $fontParser->strikeThickness;
|
||||
|
||||
$this->_unitsPerEm = $fontParser->unitsPerEm;
|
||||
|
||||
$this->_ascent = $fontParser->ascent;
|
||||
$this->_descent = $fontParser->descent;
|
||||
$this->_lineGap = $fontParser->lineGap;
|
||||
|
||||
|
||||
$this->_cmap = $fontParser->cmap;
|
||||
|
||||
|
||||
/* Resource dictionary */
|
||||
|
||||
$baseFont = $this->getFontName(Zend_Pdf_Font::NAME_POSTSCRIPT, 'en', 'UTF-8');
|
||||
$this->_resource->BaseFont = new Zend_Pdf_Element_Name($baseFont);
|
||||
|
||||
|
||||
/**
|
||||
* Prepare widths array.
|
||||
*/
|
||||
/* Constract characters widths array using font CMap and glyphs widths array */
|
||||
$glyphWidths = $fontParser->glyphWidths;
|
||||
$charGlyphs = $this->_cmap->getCoveredCharactersGlyphs();
|
||||
$charWidths = array();
|
||||
foreach ($charGlyphs as $charCode => $glyph) {
|
||||
$charWidths[$charCode] = $glyphWidths[$glyph];
|
||||
}
|
||||
$this->_charWidths = $charWidths;
|
||||
$this->_missingCharWidth = $glyphWidths[0];
|
||||
|
||||
/* Width array optimization. Step1: extract default value */
|
||||
$widthFrequencies = array_count_values($charWidths);
|
||||
$defaultWidth = null;
|
||||
$defaultWidthFrequency = -1;
|
||||
foreach ($widthFrequencies as $width => $frequency) {
|
||||
if ($frequency > $defaultWidthFrequency) {
|
||||
$defaultWidth = $width;
|
||||
$defaultWidthFrequency = $frequency;
|
||||
}
|
||||
}
|
||||
|
||||
// Store default value in the font dictionary
|
||||
$this->_resource->DW = new Zend_Pdf_Element_Numeric($this->toEmSpace($defaultWidth));
|
||||
|
||||
// Remove characters which corresponds to default width from the widths array
|
||||
$defWidthChars = array_keys($charWidths, $defaultWidth);
|
||||
foreach ($defWidthChars as $charCode) {
|
||||
unset($charWidths[$charCode]);
|
||||
}
|
||||
|
||||
// Order cheracter widths aray by character codes
|
||||
ksort($charWidths, SORT_NUMERIC);
|
||||
|
||||
/* Width array optimization. Step2: Compact character codes sequences */
|
||||
$lastCharCode = -1;
|
||||
$widthsSequences = array();
|
||||
foreach ($charWidths as $charCode => $width) {
|
||||
if ($lastCharCode == -1) {
|
||||
$charCodesSequense = array();
|
||||
$sequenceStartCode = $charCode;
|
||||
} else if ($charCode != $lastCharCode + 1) {
|
||||
// New chracters sequence detected
|
||||
$widthsSequences[$sequenceStartCode] = $charCodesSequense;
|
||||
$charCodesSequense = array();
|
||||
$sequenceStartCode = $charCode;
|
||||
}
|
||||
$charCodesSequense[] = $width;
|
||||
$lastCharCode = $charCode;
|
||||
}
|
||||
// Save last sequence, if widths array is not empty (it may happens for monospaced fonts)
|
||||
if (count($charWidths) != 0) {
|
||||
$widthsSequences[$sequenceStartCode] = $charCodesSequense;
|
||||
}
|
||||
|
||||
$pdfCharsWidths = array();
|
||||
foreach ($widthsSequences as $startCode => $widthsSequence) {
|
||||
/* Width array optimization. Step3: Compact widths sequences */
|
||||
$pdfWidths = array();
|
||||
$lastWidth = -1;
|
||||
$widthsInSequence = 0;
|
||||
foreach ($widthsSequence as $width) {
|
||||
if ($lastWidth != $width) {
|
||||
// New width is detected
|
||||
if ($widthsInSequence != 0) {
|
||||
// Previous width value was a part of the widths sequence. Save it as 'c_1st c_last w'.
|
||||
$pdfCharsWidths[] = new Zend_Pdf_Element_Numeric($startCode); // First character code
|
||||
$pdfCharsWidths[] = new Zend_Pdf_Element_Numeric($startCode + $widthsInSequence - 1); // Last character code
|
||||
$pdfCharsWidths[] = new Zend_Pdf_Element_Numeric($this->toEmSpace($lastWidth)); // Width
|
||||
|
||||
// Reset widths sequence
|
||||
$startCode = $startCode + $widthsInSequence;
|
||||
$widthsInSequence = 0;
|
||||
}
|
||||
|
||||
// Collect new width
|
||||
$pdfWidths[] = new Zend_Pdf_Element_Numeric($this->toEmSpace($width));
|
||||
|
||||
$lastWidth = $width;
|
||||
} else {
|
||||
// Width is equal to previous
|
||||
if (count($pdfWidths) != 0) {
|
||||
// We already have some widths collected
|
||||
// So, we've just detected new widths sequence
|
||||
|
||||
// Remove last element from widths list, since it's a part of widths sequence
|
||||
array_pop($pdfWidths);
|
||||
|
||||
// and write the rest if it's not empty
|
||||
if (count($pdfWidths) != 0) {
|
||||
// Save it as 'c_1st [w1 w2 ... wn]'.
|
||||
$pdfCharsWidths[] = new Zend_Pdf_Element_Numeric($startCode); // First character code
|
||||
$pdfCharsWidths[] = new Zend_Pdf_Element_Array($pdfWidths); // Widths array
|
||||
|
||||
// Reset widths collection
|
||||
$startCode += count($pdfWidths);
|
||||
$pdfWidths = array();
|
||||
}
|
||||
|
||||
$widthsInSequence = 2;
|
||||
} else {
|
||||
// Continue widths sequence
|
||||
$widthsInSequence++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Check if we have widths collection or widths sequence to wite it down
|
||||
if (count($pdfWidths) != 0) {
|
||||
// We have some widths collected
|
||||
// Save it as 'c_1st [w1 w2 ... wn]'.
|
||||
$pdfCharsWidths[] = new Zend_Pdf_Element_Numeric($startCode); // First character code
|
||||
$pdfCharsWidths[] = new Zend_Pdf_Element_Array($pdfWidths); // Widths array
|
||||
} else if ($widthsInSequence != 0){
|
||||
// We have widths sequence
|
||||
// Save it as 'c_1st c_last w'.
|
||||
$pdfCharsWidths[] = new Zend_Pdf_Element_Numeric($startCode); // First character code
|
||||
$pdfCharsWidths[] = new Zend_Pdf_Element_Numeric($startCode + $widthsInSequence - 1); // Last character code
|
||||
$pdfCharsWidths[] = new Zend_Pdf_Element_Numeric($this->toEmSpace($lastWidth)); // Width
|
||||
}
|
||||
}
|
||||
|
||||
/* Create the Zend_Pdf_Element_Array object and add it to the font's
|
||||
* object factory and resource dictionary.
|
||||
*/
|
||||
$widthsArrayElement = new Zend_Pdf_Element_Array($pdfCharsWidths);
|
||||
$widthsObject = $this->_objectFactory->newObject($widthsArrayElement);
|
||||
$this->_resource->W = $widthsObject;
|
||||
|
||||
|
||||
/* CIDSystemInfo dictionary */
|
||||
$cidSystemInfo = new Zend_Pdf_Element_Dictionary();
|
||||
$cidSystemInfo->Registry = new Zend_Pdf_Element_String('Adobe');
|
||||
$cidSystemInfo->Ordering = new Zend_Pdf_Element_String('UCS');
|
||||
$cidSystemInfo->Supplement = new Zend_Pdf_Element_Numeric(0);
|
||||
$cidSystemInfoObject = $this->_objectFactory->newObject($cidSystemInfo);
|
||||
$this->_resource->CIDSystemInfo = $cidSystemInfoObject;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 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)
|
||||
{
|
||||
/**
|
||||
* CIDFont object is not actually a font. It does not have an Encoding entry,
|
||||
* it cannot be listed in the Font subdictionary of a resource dictionary, and
|
||||
* it cannot be used as the operand of the Tf operator.
|
||||
*
|
||||
* Throw an exception.
|
||||
*/
|
||||
require_once 'Zend/Pdf/Exception.php';
|
||||
throw new Zend_Pdf_Exception('CIDFont PDF objects could not be used as the operand of the text drawing operators');
|
||||
}
|
||||
|
||||
/**
|
||||
* 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)
|
||||
{
|
||||
/**
|
||||
* CIDFont object is not actually a font. It does not have an Encoding entry,
|
||||
* it cannot be listed in the Font subdictionary of a resource dictionary, and
|
||||
* it cannot be used as the operand of the Tf operator.
|
||||
*
|
||||
* Throw an exception.
|
||||
*/
|
||||
require_once 'Zend/Pdf/Exception.php';
|
||||
throw new Zend_Pdf_Exception('CIDFont PDF objects could not be used as the operand of the text drawing operators');
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Returns a number between 0 and 1 inclusive that indicates the percentage
|
||||
* of characters in the string which are covered by glyphs in this font.
|
||||
*
|
||||
* Since no one font will contain glyphs for the entire Unicode character
|
||||
* range, this method can be used to help locate a suitable font when the
|
||||
* actual contents of the string are not known.
|
||||
*
|
||||
* Note that some fonts lie about the characters they support. Additionally,
|
||||
* fonts don't usually contain glyphs for control characters such as tabs
|
||||
* and line breaks, so it is rare that you will get back a full 1.0 score.
|
||||
* The resulting value should be considered informational only.
|
||||
*
|
||||
* @param string $string
|
||||
* @param string $charEncoding (optional) Character encoding of source text.
|
||||
* If omitted, uses 'current locale'.
|
||||
* @return float
|
||||
*/
|
||||
public function getCoveredPercentage($string, $charEncoding = '')
|
||||
{
|
||||
/* Convert the string to UTF-16BE encoding so we can match the string's
|
||||
* character codes to those found in the cmap.
|
||||
*/
|
||||
if ($charEncoding != 'UTF-16BE') {
|
||||
$string = iconv($charEncoding, 'UTF-16BE', $string);
|
||||
}
|
||||
|
||||
$charCount = iconv_strlen($string, 'UTF-16BE');
|
||||
if ($charCount == 0) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* Calculate the score by doing a lookup for each character.
|
||||
*/
|
||||
$score = 0;
|
||||
$maxIndex = strlen($string);
|
||||
for ($i = 0; $i < $maxIndex; $i++) {
|
||||
/**
|
||||
* @todo Properly handle characters encoded as surrogate pairs.
|
||||
*/
|
||||
$charCode = (ord($string[$i]) << 8) | ord($string[++$i]);
|
||||
/* This could probably be optimized a bit with a binary search...
|
||||
*/
|
||||
if (isset($this->_charWidths[$charCode])) {
|
||||
$score++;
|
||||
}
|
||||
}
|
||||
return $score / $charCount;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the widths of the Chars.
|
||||
*
|
||||
* The widths are expressed in the font's glyph space. You are responsible
|
||||
* for converting to user space as necessary. See {@link unitsPerEm()}.
|
||||
*
|
||||
* See also {@link widthForChar()}.
|
||||
*
|
||||
* @param array &$glyphNumbers Array of glyph numbers.
|
||||
* @return array Array of glyph widths (integers).
|
||||
*/
|
||||
public function widthsForChars($charCodes)
|
||||
{
|
||||
$widths = array();
|
||||
foreach ($charCodes as $key => $charCode) {
|
||||
if (!isset($this->_charWidths[$charCode])) {
|
||||
$widths[$key] = $this->_missingCharWidth;
|
||||
} else {
|
||||
$widths[$key] = $this->_charWidths[$charCode];
|
||||
}
|
||||
}
|
||||
return $widths;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the width of the character.
|
||||
*
|
||||
* Like {@link widthsForChars()} but used for one char at a time.
|
||||
*
|
||||
* @param integer $charCode
|
||||
* @return integer
|
||||
*/
|
||||
public function widthForChar($charCode)
|
||||
{
|
||||
if (!isset($this->_charWidths[$charCode])) {
|
||||
return $this->_missingCharWidth;
|
||||
}
|
||||
return $this->_charWidths[$charCode];
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the widths of the glyphs.
|
||||
*
|
||||
* @param array &$glyphNumbers Array of glyph numbers.
|
||||
* @return array Array of glyph widths (integers).
|
||||
* @throws Zend_Pdf_Exception
|
||||
*/
|
||||
public function widthsForGlyphs($glyphNumbers)
|
||||
{
|
||||
/**
|
||||
* CIDFont object is not actually a font. It does not have an Encoding entry,
|
||||
* it cannot be listed in the Font subdictionary of a resource dictionary, and
|
||||
* it cannot be used as the operand of the Tf operator.
|
||||
*
|
||||
* Throw an exception.
|
||||
*/
|
||||
require_once 'Zend/Pdf/Exception.php';
|
||||
throw new Zend_Pdf_Exception('CIDFont PDF objects could not be used as the operand of the text drawing operators');
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the width of the glyph.
|
||||
*
|
||||
* Like {@link widthsForGlyphs()} but used for one glyph at a time.
|
||||
*
|
||||
* @param integer $glyphNumber
|
||||
* @return integer
|
||||
* @throws Zend_Pdf_Exception
|
||||
*/
|
||||
public function widthForGlyph($glyphNumber)
|
||||
{
|
||||
/**
|
||||
* CIDFont object is not actually a font. It does not have an Encoding entry,
|
||||
* it cannot be listed in the Font subdictionary of a resource dictionary, and
|
||||
* it cannot be used as the operand of the Tf operator.
|
||||
*
|
||||
* Throw an exception.
|
||||
*/
|
||||
require_once 'Zend/Pdf/Exception.php';
|
||||
throw new Zend_Pdf_Exception('CIDFont PDF objects could not be used as the operand of the text drawing operators');
|
||||
}
|
||||
|
||||
/**
|
||||
* Convert string to the font encoding.
|
||||
*
|
||||
* @param string $string
|
||||
* @param string $charEncoding Character encoding of source text.
|
||||
* @return string
|
||||
* @throws Zend_Pdf_Exception
|
||||
* */
|
||||
public function encodeString($string, $charEncoding)
|
||||
{
|
||||
/**
|
||||
* CIDFont object is not actually a font. It does not have an Encoding entry,
|
||||
* it cannot be listed in the Font subdictionary of a resource dictionary, and
|
||||
* it cannot be used as the operand of the Tf operator.
|
||||
*
|
||||
* Throw an exception.
|
||||
*/
|
||||
require_once 'Zend/Pdf/Exception.php';
|
||||
throw new Zend_Pdf_Exception('CIDFont PDF objects could not be used as the operand of the text drawing operators');
|
||||
}
|
||||
|
||||
/**
|
||||
* Convert string from the font encoding.
|
||||
*
|
||||
* @param string $string
|
||||
* @param string $charEncoding Character encoding of resulting text.
|
||||
* @return string
|
||||
* @throws Zend_Pdf_Exception
|
||||
*/
|
||||
public function decodeString($string, $charEncoding)
|
||||
{
|
||||
/**
|
||||
* CIDFont object is not actually a font. It does not have an Encoding entry,
|
||||
* it cannot be listed in the Font subdictionary of a resource dictionary, and
|
||||
* it cannot be used as the operand of the Tf operator.
|
||||
*
|
||||
* Throw an exception.
|
||||
*/
|
||||
require_once 'Zend/Pdf/Exception.php';
|
||||
throw new Zend_Pdf_Exception('CIDFont PDF objects could not be used as the operand of the text drawing operators');
|
||||
}
|
||||
}
|
|
@ -0,0 +1,88 @@
|
|||
<?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: TrueType.php 20096 2010-01-06 02:05:09Z bkarwin $
|
||||
*/
|
||||
|
||||
|
||||
/** Internally used classes */
|
||||
|
||||
require_once 'Zend/Pdf/Element/Name.php';
|
||||
|
||||
/** Zend_Pdf_Resource_Font_FontDescriptor */
|
||||
require_once 'Zend/Pdf/Resource/Font/FontDescriptor.php';
|
||||
|
||||
|
||||
/** Zend_Pdf_Resource_Font_CidFont */
|
||||
require_once 'Zend/Pdf/Resource/Font/CidFont.php';
|
||||
|
||||
/**
|
||||
* Type 2 CIDFonts implementation
|
||||
*
|
||||
* For Type 2, the CIDFont program is actually a TrueType font program, which has
|
||||
* no native notion of CIDs. In a TrueType font program, glyph descriptions are
|
||||
* identified by glyph index values. Glyph indices are internal to the font and are not
|
||||
* defined consistently from one font to another. Instead, a TrueType font program
|
||||
* contains a 'cmap' table that provides mappings directly from character codes to
|
||||
* glyph indices for one or more predefined encodings.
|
||||
*
|
||||
* @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_CidFont_TrueType extends Zend_Pdf_Resource_Font_CidFont
|
||||
{
|
||||
/**
|
||||
* Object constructor
|
||||
*
|
||||
* @todo Joing this class with Zend_Pdf_Resource_Font_Simple_Parsed_TrueType
|
||||
*
|
||||
* @param Zend_Pdf_FileParser_Font_OpenType_TrueType $fontParser Font parser
|
||||
* object containing parsed TrueType file.
|
||||
* @param integer $embeddingOptions Options for font embedding.
|
||||
* @throws Zend_Pdf_Exception
|
||||
*/
|
||||
public function __construct(Zend_Pdf_FileParser_Font_OpenType_TrueType $fontParser, $embeddingOptions)
|
||||
{
|
||||
parent::__construct($fontParser, $embeddingOptions);
|
||||
|
||||
$this->_fontType = Zend_Pdf_Font::TYPE_CIDFONT_TYPE_2;
|
||||
|
||||
$this->_resource->Subtype = new Zend_Pdf_Element_Name('CIDFontType2');
|
||||
|
||||
$fontDescriptor = Zend_Pdf_Resource_Font_FontDescriptor::factory($this, $fontParser, $embeddingOptions);
|
||||
$this->_resource->FontDescriptor = $this->_objectFactory->newObject($fontDescriptor);
|
||||
|
||||
/* Prepare CIDToGIDMap */
|
||||
// Initialize 128K string of null characters (65536 2 byte integers)
|
||||
$cidToGidMapData = str_repeat("\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", 8192);
|
||||
// Fill the index
|
||||
$charGlyphs = $this->_cmap->getCoveredCharactersGlyphs();
|
||||
foreach ($charGlyphs as $charCode => $glyph) {
|
||||
$cidToGidMapData[$charCode*2 ] = chr($glyph >> 8);
|
||||
$cidToGidMapData[$charCode*2 + 1] = chr($glyph & 0xFF);
|
||||
}
|
||||
// Store CIDToGIDMap within compressed stream object
|
||||
$cidToGidMap = $this->_objectFactory->newStreamObject($cidToGidMapData);
|
||||
$cidToGidMap->dictionary->Filter = new Zend_Pdf_Element_Name('FlateDecode');
|
||||
$this->_resource->CIDToGIDMap = $cidToGidMap;
|
||||
}
|
||||
|
||||
}
|
274
airtime_mvc/library/Zend/Pdf/Resource/Font/Extracted.php
Normal file
274
airtime_mvc/library/Zend/Pdf/Resource/Font/Extracted.php
Normal file
|
@ -0,0 +1,274 @@
|
|||
<?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: Extracted.php 20893 2010-02-03 22:59:25Z yoshida@zend.co.jp $
|
||||
*/
|
||||
|
||||
|
||||
/** @see Zend_Pdf_Resource_Font */
|
||||
require_once 'Zend/Pdf/Resource/Font.php';
|
||||
|
||||
/**
|
||||
* Extracted fonts implementation
|
||||
*
|
||||
* Thes class allows to extract fonts already mentioned within PDF document and use them
|
||||
* for text drawing.
|
||||
*
|
||||
* @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_Extracted extends Zend_Pdf_Resource_Font
|
||||
{
|
||||
/**
|
||||
* Messages
|
||||
*/
|
||||
const TYPE_NOT_SUPPORTED = 'Unsupported font type.';
|
||||
const ENCODING_NOT_SUPPORTED = 'Font encoding is not supported';
|
||||
const OPERATION_NOT_SUPPORTED = 'Operation is not supported for extracted fonts';
|
||||
|
||||
/**
|
||||
* Extracted font encoding
|
||||
*
|
||||
* Only 'Identity-H' and 'WinAnsiEncoding' encodings are supported now
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $_encoding = null;
|
||||
|
||||
/**
|
||||
* Object constructor
|
||||
*
|
||||
* $fontDictionary is a Zend_Pdf_Element_Reference or Zend_Pdf_Element_Object object
|
||||
*
|
||||
* @param mixed $fontDictionary
|
||||
* @throws Zend_Pdf_Exception
|
||||
*/
|
||||
public function __construct($fontDictionary)
|
||||
{
|
||||
// Extract object factory and resource object from font dirctionary object
|
||||
$this->_objectFactory = $fontDictionary->getFactory();
|
||||
$this->_resource = $fontDictionary;
|
||||
|
||||
if ($fontDictionary->Encoding !== null) {
|
||||
$this->_encoding = $fontDictionary->Encoding->value;
|
||||
}
|
||||
|
||||
switch ($fontDictionary->Subtype->value) {
|
||||
case 'Type0':
|
||||
// Composite type 0 font
|
||||
if (count($fontDictionary->DescendantFonts->items) != 1) {
|
||||
// Multiple descendant fonts are not supported
|
||||
require_once 'Zend/Pdf/Exception.php';
|
||||
throw new Zend_Pdf_Exception(self::TYPE_NOT_SUPPORTED);
|
||||
}
|
||||
|
||||
$fontDictionaryIterator = $fontDictionary->DescendantFonts->items->getIterator();
|
||||
$fontDictionaryIterator->rewind();
|
||||
$descendantFont = $fontDictionaryIterator->current();
|
||||
$fontDescriptor = $descendantFont->FontDescriptor;
|
||||
break;
|
||||
|
||||
case 'Type1':
|
||||
if ($fontDictionary->FontDescriptor === null) {
|
||||
// That's one of the standard fonts
|
||||
$standardFont = Zend_Pdf_Font::fontWithName($fontDictionary->BaseFont->value);
|
||||
|
||||
$this->_fontNames = $standardFont->getFontNames();
|
||||
$this->_isBold = $standardFont->isBold();
|
||||
$this->_isItalic = $standardFont->isItalic();
|
||||
$this->_isMonospace = $standardFont->isMonospace();
|
||||
$this->_underlinePosition = $standardFont->getUnderlinePosition();
|
||||
$this->_underlineThickness = $standardFont->getUnderlineThickness();
|
||||
$this->_strikePosition = $standardFont->getStrikePosition();
|
||||
$this->_strikeThickness = $standardFont->getStrikeThickness();
|
||||
$this->_unitsPerEm = $standardFont->getUnitsPerEm();
|
||||
$this->_ascent = $standardFont->getAscent();
|
||||
$this->_descent = $standardFont->getDescent();
|
||||
$this->_lineGap = $standardFont->getLineGap();
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
$fontDescriptor = $fontDictionary->FontDescriptor;
|
||||
break;
|
||||
|
||||
case 'TrueType':
|
||||
$fontDescriptor = $fontDictionary->FontDescriptor;
|
||||
break;
|
||||
|
||||
default:
|
||||
require_once 'Zend/Pdf/Exception.php';
|
||||
throw new Zend_Pdf_Exception(self::TYPE_NOT_SUPPORTED);
|
||||
}
|
||||
|
||||
$this->_fontNames[Zend_Pdf_Font::NAME_POSTSCRIPT]['en'] = iconv('UTF-8', 'UTF-16BE', $fontDictionary->BaseFont->value);
|
||||
|
||||
$this->_isBold = false; // this property is actually not used anywhere
|
||||
$this->_isItalic = ( ($fontDescriptor->Flags->value & (1 << 6)) != 0 ); // Bit-7 is set
|
||||
$this->_isMonospace = ( ($fontDescriptor->Flags->value & (1 << 0)) != 0 ); // Bit-1 is set
|
||||
$this->_underlinePosition = null; // Can't be extracted
|
||||
$this->_underlineThickness = null; // Can't be extracted
|
||||
$this->_strikePosition = null; // Can't be extracted
|
||||
$this->_strikeThickness = null; // Can't be extracted
|
||||
$this->_unitsPerEm = null; // Can't be extracted
|
||||
$this->_ascent = $fontDescriptor->Ascent->value;
|
||||
$this->_descent = $fontDescriptor->Descent->value;
|
||||
$this->_lineGap = null; // Can't be extracted
|
||||
}
|
||||
|
||||
/**
|
||||
* 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)
|
||||
{
|
||||
require_once 'Zend/Pdf/Exception.php';
|
||||
throw new Zend_Pdf_Exception(self::OPERATION_NOT_SUPPORTED);
|
||||
}
|
||||
|
||||
/**
|
||||
* 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)
|
||||
{
|
||||
require_once 'Zend/Pdf/Exception.php';
|
||||
throw new Zend_Pdf_Exception(self::OPERATION_NOT_SUPPORTED);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a number between 0 and 1 inclusive that indicates the percentage
|
||||
* of characters in the string which are covered by glyphs in this font.
|
||||
*
|
||||
* Since no one font will contain glyphs for the entire Unicode character
|
||||
* range, this method can be used to help locate a suitable font when the
|
||||
* actual contents of the string are not known.
|
||||
*
|
||||
* Note that some fonts lie about the characters they support. Additionally,
|
||||
* fonts don't usually contain glyphs for control characters such as tabs
|
||||
* and line breaks, so it is rare that you will get back a full 1.0 score.
|
||||
* The resulting value should be considered informational only.
|
||||
*
|
||||
* @param string $string
|
||||
* @param string $charEncoding (optional) Character encoding of source text.
|
||||
* If omitted, uses 'current locale'.
|
||||
* @return float
|
||||
*/
|
||||
public function getCoveredPercentage($string, $charEncoding = '')
|
||||
{
|
||||
require_once 'Zend/Pdf/Exception.php';
|
||||
throw new Zend_Pdf_Exception(self::OPERATION_NOT_SUPPORTED);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the widths of the glyphs.
|
||||
*
|
||||
* The widths are expressed in the font's glyph space. You are responsible
|
||||
* for converting to user space as necessary. See {@link unitsPerEm()}.
|
||||
*
|
||||
* See also {@link widthForGlyph()}.
|
||||
*
|
||||
* @param array $glyphNumbers Array of glyph numbers.
|
||||
* @return array Array of glyph widths (integers).
|
||||
* @throws Zend_Pdf_Exception
|
||||
*/
|
||||
public function widthsForGlyphs($glyphNumbers)
|
||||
{
|
||||
require_once 'Zend/Pdf/Exception.php';
|
||||
throw new Zend_Pdf_Exception(self::OPERATION_NOT_SUPPORTED);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the width of the glyph.
|
||||
*
|
||||
* Like {@link widthsForGlyphs()} but used for one glyph at a time.
|
||||
*
|
||||
* @param integer $glyphNumber
|
||||
* @return integer
|
||||
* @throws Zend_Pdf_Exception
|
||||
*/
|
||||
public function widthForGlyph($glyphNumber)
|
||||
{
|
||||
require_once 'Zend/Pdf/Exception.php';
|
||||
throw new Zend_Pdf_Exception(self::OPERATION_NOT_SUPPORTED);
|
||||
}
|
||||
|
||||
/**
|
||||
* Convert string to the font encoding.
|
||||
*
|
||||
* The method is used to prepare string for text drawing operators
|
||||
*
|
||||
* @param string $string
|
||||
* @param string $charEncoding Character encoding of source text.
|
||||
* @return string
|
||||
*/
|
||||
public function encodeString($string, $charEncoding)
|
||||
{
|
||||
if ($this->_encoding == 'Identity-H') {
|
||||
return iconv($charEncoding, 'UTF-16BE', $string);
|
||||
}
|
||||
|
||||
if ($this->_encoding == 'WinAnsiEncoding') {
|
||||
return iconv($charEncoding, 'CP1252//IGNORE', $string);
|
||||
}
|
||||
|
||||
require_once 'Zend/Pdf/Exception.php';
|
||||
throw new Zend_Pdf_Exception(self::ENCODING_NOT_SUPPORTED);
|
||||
}
|
||||
|
||||
/**
|
||||
* Convert string from the font encoding.
|
||||
*
|
||||
* The method is used to convert strings retrieved from existing content streams
|
||||
*
|
||||
* @param string $string
|
||||
* @param string $charEncoding Character encoding of resulting text.
|
||||
* @return string
|
||||
*/
|
||||
public function decodeString($string, $charEncoding)
|
||||
{
|
||||
if ($this->_encoding == 'Identity-H') {
|
||||
return iconv('UTF-16BE', $charEncoding, $string);
|
||||
}
|
||||
|
||||
if ($this->_encoding == 'WinAnsiEncoding') {
|
||||
return iconv('CP1252', $charEncoding, $string);
|
||||
}
|
||||
|
||||
require_once 'Zend/Pdf/Exception.php';
|
||||
throw new Zend_Pdf_Exception(self::ENCODING_NOT_SUPPORTED);
|
||||
}
|
||||
}
|
204
airtime_mvc/library/Zend/Pdf/Resource/Font/FontDescriptor.php
Normal file
204
airtime_mvc/library/Zend/Pdf/Resource/Font/FontDescriptor.php
Normal file
|
@ -0,0 +1,204 @@
|
|||
<?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: FontDescriptor.php 20096 2010-01-06 02:05:09Z bkarwin $
|
||||
*/
|
||||
|
||||
|
||||
/** Internally used classes */
|
||||
require_once 'Zend/Pdf/Element/Array.php';
|
||||
require_once 'Zend/Pdf/Element/Dictionary.php';
|
||||
require_once 'Zend/Pdf/Element/Name.php';
|
||||
require_once 'Zend/Pdf/Element/Numeric.php';
|
||||
|
||||
/** Zend_Pdf_Font */
|
||||
require_once 'Zend/Pdf/Font.php';
|
||||
|
||||
|
||||
/**
|
||||
* FontDescriptor implementation
|
||||
*
|
||||
* A font descriptor specifies metrics and other attributes of a simple font or a
|
||||
* CIDFont as a whole, as distinct from the metrics of individual glyphs. These font
|
||||
* metrics provide information that enables a viewer application to synthesize a
|
||||
* substitute font or select a similar font when the font program is unavailable. The
|
||||
* font descriptor may also be used to embed the font program in the PDF file.
|
||||
*
|
||||
* @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_FontDescriptor
|
||||
{
|
||||
/**
|
||||
* Object constructor
|
||||
* @throws Zend_Pdf_Exception
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
require_once 'Zend/Pdf/Exception.php';
|
||||
throw new Zend_Pdf_Exception('Zend_Pdf_Resource_Font_FontDescriptor is not intended to be instantiated');
|
||||
}
|
||||
|
||||
/**
|
||||
* Object constructor
|
||||
*
|
||||
* The $embeddingOptions parameter allows you to set certain flags related
|
||||
* to font embedding. You may combine options by OR-ing them together. See
|
||||
* the EMBED_ constants defined in {@link Zend_Pdf_Font} for the list of
|
||||
* available options and their descriptions.
|
||||
*
|
||||
* Note that it is not requried that fonts be embedded within the PDF file
|
||||
* to use them. If the recipient of the PDF has the font installed on their
|
||||
* computer, they will see the correct fonts in the document. If they don't,
|
||||
* the PDF viewer will substitute or synthesize a replacement.
|
||||
*
|
||||
*
|
||||
* @param Zend_Pdf_Resource_Font $font Font
|
||||
* @param Zend_Pdf_FileParser_Font_OpenType $fontParser Font parser object containing parsed TrueType file.
|
||||
* @param integer $embeddingOptions Options for font embedding.
|
||||
* @return Zend_Pdf_Element_Dictionary
|
||||
* @throws Zend_Pdf_Exception
|
||||
*/
|
||||
static public function factory(Zend_Pdf_Resource_Font $font, Zend_Pdf_FileParser_Font_OpenType $fontParser, $embeddingOptions)
|
||||
{
|
||||
/* The font descriptor object contains the rest of the font metrics and
|
||||
* the information about the embedded font program (if applicible).
|
||||
*/
|
||||
$fontDescriptor = new Zend_Pdf_Element_Dictionary();
|
||||
|
||||
$fontDescriptor->Type = new Zend_Pdf_Element_Name('FontDescriptor');
|
||||
$fontDescriptor->FontName = new Zend_Pdf_Element_Name($font->getResource()->BaseFont->value);
|
||||
|
||||
/* The font flags value is a bitfield that describes the stylistic
|
||||
* attributes of the font. We will set as many of the bits as can be
|
||||
* determined from the font parser.
|
||||
*/
|
||||
$flags = 0;
|
||||
if ($fontParser->isMonospaced) { // bit 1: FixedPitch
|
||||
$flags |= 1 << 0;
|
||||
}
|
||||
if ($fontParser->isSerifFont) { // bit 2: Serif
|
||||
$flags |= 1 << 1;
|
||||
}
|
||||
if (! $fontParser->isAdobeLatinSubset) { // bit 3: Symbolic
|
||||
$flags |= 1 << 2;
|
||||
}
|
||||
if ($fontParser->isScriptFont) { // bit 4: Script
|
||||
$flags |= 1 << 3;
|
||||
}
|
||||
if ($fontParser->isAdobeLatinSubset) { // bit 6: Nonsymbolic
|
||||
$flags |= 1 << 5;
|
||||
}
|
||||
if ($fontParser->isItalic) { // bit 7: Italic
|
||||
$flags |= 1 << 6;
|
||||
}
|
||||
// bits 17-19: AllCap, SmallCap, ForceBold; not available
|
||||
$fontDescriptor->Flags = new Zend_Pdf_Element_Numeric($flags);
|
||||
|
||||
$fontBBox = array(new Zend_Pdf_Element_Numeric($font->toEmSpace($fontParser->xMin)),
|
||||
new Zend_Pdf_Element_Numeric($font->toEmSpace($fontParser->yMin)),
|
||||
new Zend_Pdf_Element_Numeric($font->toEmSpace($fontParser->xMax)),
|
||||
new Zend_Pdf_Element_Numeric($font->toEmSpace($fontParser->yMax)));
|
||||
$fontDescriptor->FontBBox = new Zend_Pdf_Element_Array($fontBBox);
|
||||
|
||||
$fontDescriptor->ItalicAngle = new Zend_Pdf_Element_Numeric($fontParser->italicAngle);
|
||||
|
||||
$fontDescriptor->Ascent = new Zend_Pdf_Element_Numeric($font->toEmSpace($fontParser->ascent));
|
||||
$fontDescriptor->Descent = new Zend_Pdf_Element_Numeric($font->toEmSpace($fontParser->descent));
|
||||
|
||||
$fontDescriptor->CapHeight = new Zend_Pdf_Element_Numeric($fontParser->capitalHeight);
|
||||
/**
|
||||
* The vertical stem width is not yet extracted from the OpenType font
|
||||
* file. For now, record zero which is interpreted as 'unknown'.
|
||||
* @todo Calculate value for StemV.
|
||||
*/
|
||||
$fontDescriptor->StemV = new Zend_Pdf_Element_Numeric(0);
|
||||
|
||||
$fontDescriptor->MissingWidth = new Zend_Pdf_Element_Numeric($fontParser->glyphWidths[0]);
|
||||
|
||||
/* Set up font embedding. This is where the actual font program itself
|
||||
* is embedded within the PDF document.
|
||||
*
|
||||
* Note that it is not requried that fonts be embedded within the PDF
|
||||
* document to use them. If the recipient of the PDF has the font
|
||||
* installed on their computer, they will see the correct fonts in the
|
||||
* document. If they don't, the PDF viewer will substitute or synthesize
|
||||
* a replacement.
|
||||
*
|
||||
* There are several guidelines for font embedding:
|
||||
*
|
||||
* First, the developer might specifically request not to embed the font.
|
||||
*/
|
||||
if (!($embeddingOptions & Zend_Pdf_Font::EMBED_DONT_EMBED)) {
|
||||
|
||||
/* Second, the font author may have set copyright bits that prohibit
|
||||
* the font program from being embedded. Yes this is controversial,
|
||||
* but it's the rules:
|
||||
* http://partners.adobe.com/public/developer/en/acrobat/sdk/FontPolicies.pdf
|
||||
*
|
||||
* To keep the developer in the loop, and to prevent surprising bug
|
||||
* reports of "your PDF doesn't have the right fonts," throw an
|
||||
* exception if the font cannot be embedded.
|
||||
*/
|
||||
if (! $fontParser->isEmbeddable) {
|
||||
/* This exception may be suppressed if the developer decides that
|
||||
* it's not a big deal that the font program can't be embedded.
|
||||
*/
|
||||
if (!($embeddingOptions & Zend_Pdf_Font::EMBED_SUPPRESS_EMBED_EXCEPTION)) {
|
||||
$message = 'This font cannot be embedded in the PDF document. If you would like to use '
|
||||
. 'it anyway, you must pass Zend_Pdf_Font::EMBED_SUPPRESS_EMBED_EXCEPTION '
|
||||
. 'in the $options parameter of the font constructor.';
|
||||
require_once 'Zend/Pdf/Exception.php';
|
||||
throw new Zend_Pdf_Exception($message, Zend_Pdf_Exception::FONT_CANT_BE_EMBEDDED);
|
||||
}
|
||||
|
||||
} else {
|
||||
/* Otherwise, the default behavior is to embed all custom fonts.
|
||||
*/
|
||||
/* This section will change soon to a stream object data
|
||||
* provider model so that we don't have to keep a copy of the
|
||||
* entire font in memory.
|
||||
*
|
||||
* We also cannot build font subsetting until the data provider
|
||||
* model is in place.
|
||||
*/
|
||||
$fontFile = $fontParser->getDataSource()->readAllBytes();
|
||||
$fontFileObject = $font->getFactory()->newStreamObject($fontFile);
|
||||
$fontFileObject->dictionary->Length1 = new Zend_Pdf_Element_Numeric(strlen($fontFile));
|
||||
if (!($embeddingOptions & Zend_Pdf_Font::EMBED_DONT_COMPRESS)) {
|
||||
/* Compress the font file using Flate. This generally cuts file
|
||||
* sizes by about half!
|
||||
*/
|
||||
$fontFileObject->dictionary->Filter = new Zend_Pdf_Element_Name('FlateDecode');
|
||||
}
|
||||
if ($fontParser instanceof Zend_Pdf_FileParser_Font_OpenType_Type1 /* not implemented now */) {
|
||||
$fontDescriptor->FontFile = $fontFileObject;
|
||||
} else if ($fontParser instanceof Zend_Pdf_FileParser_Font_OpenType_TrueType) {
|
||||
$fontDescriptor->FontFile2 = $fontFileObject;
|
||||
} else {
|
||||
$fontDescriptor->FontFile3 = $fontFileObject;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return $fontDescriptor;
|
||||
}
|
||||
}
|
283
airtime_mvc/library/Zend/Pdf/Resource/Font/Simple.php
Normal file
283
airtime_mvc/library/Zend/Pdf/Resource/Font/Simple.php
Normal file
|
@ -0,0 +1,283 @@
|
|||
<?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: Simple.php 20096 2010-01-06 02:05:09Z bkarwin $
|
||||
*/
|
||||
|
||||
|
||||
/** Internally used classes */
|
||||
require_once 'Zend/Pdf/Element/Name.php';
|
||||
|
||||
|
||||
/** Zend_Pdf_Resource_Font */
|
||||
require_once 'Zend/Pdf/Resource/Font.php';
|
||||
|
||||
/**
|
||||
* Adobe PDF Simple fonts implementation
|
||||
*
|
||||
* PDF simple fonts functionality is presented by Adobe Type 1
|
||||
* (including standard PDF Type1 built-in fonts) and TrueType fonts support.
|
||||
*
|
||||
* Both fonts have the following properties:
|
||||
* - Glyphs in the font are selected by single-byte character codes obtained from a
|
||||
* string that is shown by the text-showing operators. Logically, these codes index
|
||||
* into a table of 256 glyphs; the mapping from codes to glyphs is called the font’s
|
||||
* encoding.
|
||||
* PDF specification provides a possibility to specify any user defined encoding in addition
|
||||
* to the standard built-in encodings: Standard-Encoding, MacRomanEncoding, WinAnsiEncoding,
|
||||
* and PDFDocEncoding, but Zend_Pdf simple fonts implementation operates only with
|
||||
* Windows ANSI encoding (except Symbol and ZapfDingbats built-in fonts).
|
||||
*
|
||||
* - Each glyph has a single set of metrics, including a horizontal displacement or
|
||||
* width. That is, simple fonts support only horizontal writing mode.
|
||||
*
|
||||
*
|
||||
* The code in this class is common to both types. However, you will only deal
|
||||
* directly with subclasses.
|
||||
*
|
||||
* Font objects should be normally be obtained from the factory methods
|
||||
* {@link Zend_Pdf_Font::fontWithName} and {@link Zend_Pdf_Font::fontWithPath}.
|
||||
*
|
||||
* @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
|
||||
*/
|
||||
abstract class Zend_Pdf_Resource_Font_Simple extends Zend_Pdf_Resource_Font
|
||||
{
|
||||
/**
|
||||
* Object representing the font's cmap (character to glyph map).
|
||||
* @var Zend_Pdf_Cmap
|
||||
*/
|
||||
protected $_cmap = null;
|
||||
|
||||
/**
|
||||
* Array containing the widths of each of the glyphs contained in the font.
|
||||
*
|
||||
* Keys are integers starting from 0, which coresponds to Zend_Pdf_Cmap::MISSING_CHARACTER_GLYPH.
|
||||
*
|
||||
* Font character map may contain gaps for actually used glyphs, nevertheless glyphWidths array
|
||||
* contains widths for all glyphs even they are unused.
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
protected $_glyphWidths = null;
|
||||
|
||||
/**
|
||||
* Width for glyphs missed in the font
|
||||
*
|
||||
* Note: Adobe PDF specfication (V1.4 - V1.6) doesn't define behavior for rendering
|
||||
* characters missed in the standard PDF fonts (such us 0x7F (DEL) Windows ANSI code)
|
||||
* Adobe Font Metrics files doesn't also define metrics for "missed glyph".
|
||||
* We provide character width as "0" for this case, but actually it depends on PDF viewer
|
||||
* implementation.
|
||||
*
|
||||
* @var integer
|
||||
*/
|
||||
protected $_missingGlyphWidth = 0;
|
||||
|
||||
|
||||
/**** Public Interface ****/
|
||||
|
||||
|
||||
/* Object Lifecycle */
|
||||
|
||||
/**
|
||||
* Object constructor
|
||||
*
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
|
||||
/**
|
||||
* @todo
|
||||
* It's easy to add other encodings support now (Standard-Encoding, MacRomanEncoding,
|
||||
* PDFDocEncoding, MacExpertEncoding, Symbol, and ZapfDingbats).
|
||||
* Steps for the implementation:
|
||||
* - completely describe all PDF single byte encodings in the documentation
|
||||
* - implement non-WinAnsi encodings processing into encodeString()/decodeString() methods
|
||||
*
|
||||
* These encodings will be automatically supported for standard builtin PDF fonts as well
|
||||
* as for external fonts.
|
||||
*/
|
||||
$this->_resource->Encoding = new Zend_Pdf_Element_Name('WinAnsiEncoding');
|
||||
}
|
||||
|
||||
/**
|
||||
* 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)
|
||||
{
|
||||
return $this->_cmap->glyphNumbersForCharacters($characterCodes);
|
||||
}
|
||||
|
||||
/**
|
||||
* 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)
|
||||
{
|
||||
return $this->_cmap->glyphNumberForCharacter($characterCode);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a number between 0 and 1 inclusive that indicates the percentage
|
||||
* of characters in the string which are covered by glyphs in this font.
|
||||
*
|
||||
* Since no one font will contain glyphs for the entire Unicode character
|
||||
* range, this method can be used to help locate a suitable font when the
|
||||
* actual contents of the string are not known.
|
||||
*
|
||||
* Note that some fonts lie about the characters they support. Additionally,
|
||||
* fonts don't usually contain glyphs for control characters such as tabs
|
||||
* and line breaks, so it is rare that you will get back a full 1.0 score.
|
||||
* The resulting value should be considered informational only.
|
||||
*
|
||||
* @param string $string
|
||||
* @param string $charEncoding (optional) Character encoding of source text.
|
||||
* If omitted, uses 'current locale'.
|
||||
* @return float
|
||||
*/
|
||||
public function getCoveredPercentage($string, $charEncoding = '')
|
||||
{
|
||||
/* Convert the string to UTF-16BE encoding so we can match the string's
|
||||
* character codes to those found in the cmap.
|
||||
*/
|
||||
if ($charEncoding != 'UTF-16BE') {
|
||||
if (PHP_OS != 'AIX') { // AIX doesnt know what UTF-16BE is
|
||||
$string = iconv($charEncoding, 'UTF-16BE', $string);
|
||||
}
|
||||
}
|
||||
|
||||
$charCount = (PHP_OS != 'AIX') ? iconv_strlen($string, 'UTF-16BE') : strlen($string);
|
||||
if ($charCount == 0) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* Fetch the covered character code list from the font's cmap.
|
||||
*/
|
||||
$coveredCharacters = $this->_cmap->getCoveredCharacters();
|
||||
|
||||
/* Calculate the score by doing a lookup for each character.
|
||||
*/
|
||||
$score = 0;
|
||||
$maxIndex = strlen($string);
|
||||
for ($i = 0; $i < $maxIndex; $i++) {
|
||||
/**
|
||||
* @todo Properly handle characters encoded as surrogate pairs.
|
||||
*/
|
||||
$charCode = (ord($string[$i]) << 8) | ord($string[++$i]);
|
||||
/* This could probably be optimized a bit with a binary search...
|
||||
*/
|
||||
if (in_array($charCode, $coveredCharacters)) {
|
||||
$score++;
|
||||
}
|
||||
}
|
||||
return $score / $charCount;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the widths of the glyphs.
|
||||
*
|
||||
* The widths are expressed in the font's glyph space. You are responsible
|
||||
* for converting to user space as necessary. See {@link unitsPerEm()}.
|
||||
*
|
||||
* See also {@link widthForGlyph()}.
|
||||
*
|
||||
* @param array &$glyphNumbers Array of glyph numbers.
|
||||
* @return array Array of glyph widths (integers).
|
||||
*/
|
||||
public function widthsForGlyphs($glyphNumbers)
|
||||
{
|
||||
$widths = array();
|
||||
foreach ($glyphNumbers as $key => $glyphNumber) {
|
||||
if (!isset($this->_glyphWidths[$glyphNumber])) {
|
||||
$widths[$key] = $this->_missingGlyphWidth;
|
||||
} else {
|
||||
$widths[$key] = $this->_glyphWidths[$glyphNumber];
|
||||
}
|
||||
}
|
||||
return $widths;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the width of the glyph.
|
||||
*
|
||||
* Like {@link widthsForGlyphs()} but used for one glyph at a time.
|
||||
*
|
||||
* @param integer $glyphNumber
|
||||
* @return integer
|
||||
*/
|
||||
public function widthForGlyph($glyphNumber)
|
||||
{
|
||||
if (!isset($this->_glyphWidths[$glyphNumber])) {
|
||||
return $this->_missingGlyphWidth;
|
||||
}
|
||||
return $this->_glyphWidths[$glyphNumber];
|
||||
}
|
||||
|
||||
/**
|
||||
* Convert string to the font encoding.
|
||||
*
|
||||
* The method is used to prepare string for text drawing operators
|
||||
*
|
||||
* @param string $string
|
||||
* @param string $charEncoding Character encoding of source text.
|
||||
* @return string
|
||||
*/
|
||||
public function encodeString($string, $charEncoding)
|
||||
{
|
||||
if (PHP_OS == 'AIX') {
|
||||
return $string; // returning here b/c AIX doesnt know what CP1252 is
|
||||
}
|
||||
|
||||
return iconv($charEncoding, 'CP1252//IGNORE', $string);
|
||||
}
|
||||
|
||||
/**
|
||||
* Convert string from the font encoding.
|
||||
*
|
||||
* The method is used to convert strings retrieved from existing content streams
|
||||
*
|
||||
* @param string $string
|
||||
* @param string $charEncoding Character encoding of resulting text.
|
||||
* @return string
|
||||
*/
|
||||
public function decodeString($string, $charEncoding)
|
||||
{
|
||||
return iconv('CP1252', $charEncoding, $string);
|
||||
}
|
||||
}
|
105
airtime_mvc/library/Zend/Pdf/Resource/Font/Simple/Parsed.php
Normal file
105
airtime_mvc/library/Zend/Pdf/Resource/Font/Simple/Parsed.php
Normal file
|
@ -0,0 +1,105 @@
|
|||
<?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: Parsed.php 20096 2010-01-06 02:05:09Z bkarwin $
|
||||
*/
|
||||
|
||||
|
||||
/** Internally used classes */
|
||||
require_once 'Zend/Pdf/Element/Array.php';
|
||||
require_once 'Zend/Pdf/Element/Name.php';
|
||||
require_once 'Zend/Pdf/Element/Numeric.php';
|
||||
|
||||
|
||||
/** Zend_Pdf_Resource_Font_Simple */
|
||||
require_once 'Zend/Pdf/Resource/Font/Simple.php';
|
||||
|
||||
/**
|
||||
* Parsed and (optionaly) embedded fonts implementation
|
||||
*
|
||||
* OpenType fonts can contain either TrueType or PostScript Type 1 outlines.
|
||||
*
|
||||
* @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
|
||||
*/
|
||||
abstract class Zend_Pdf_Resource_Font_Simple_Parsed extends Zend_Pdf_Resource_Font_Simple
|
||||
{
|
||||
/**
|
||||
* Object constructor
|
||||
*
|
||||
* @param Zend_Pdf_FileParser_Font_OpenType $fontParser Font parser object containing OpenType file.
|
||||
* @throws Zend_Pdf_Exception
|
||||
*/
|
||||
public function __construct(Zend_Pdf_FileParser_Font_OpenType $fontParser)
|
||||
{
|
||||
parent::__construct();
|
||||
|
||||
|
||||
$fontParser->parse();
|
||||
|
||||
/* Object properties */
|
||||
|
||||
$this->_fontNames = $fontParser->names;
|
||||
|
||||
$this->_isBold = $fontParser->isBold;
|
||||
$this->_isItalic = $fontParser->isItalic;
|
||||
$this->_isMonospaced = $fontParser->isMonospaced;
|
||||
|
||||
$this->_underlinePosition = $fontParser->underlinePosition;
|
||||
$this->_underlineThickness = $fontParser->underlineThickness;
|
||||
$this->_strikePosition = $fontParser->strikePosition;
|
||||
$this->_strikeThickness = $fontParser->strikeThickness;
|
||||
|
||||
$this->_unitsPerEm = $fontParser->unitsPerEm;
|
||||
|
||||
$this->_ascent = $fontParser->ascent;
|
||||
$this->_descent = $fontParser->descent;
|
||||
$this->_lineGap = $fontParser->lineGap;
|
||||
|
||||
$this->_glyphWidths = $fontParser->glyphWidths;
|
||||
$this->_missingGlyphWidth = $this->_glyphWidths[0];
|
||||
|
||||
|
||||
$this->_cmap = $fontParser->cmap;
|
||||
|
||||
|
||||
/* Resource dictionary */
|
||||
|
||||
$baseFont = $this->getFontName(Zend_Pdf_Font::NAME_POSTSCRIPT, 'en', 'UTF-8');
|
||||
$this->_resource->BaseFont = new Zend_Pdf_Element_Name($baseFont);
|
||||
|
||||
$this->_resource->FirstChar = new Zend_Pdf_Element_Numeric(0);
|
||||
$this->_resource->LastChar = new Zend_Pdf_Element_Numeric(count($this->_glyphWidths) - 1);
|
||||
|
||||
/* Now convert the scalar glyph widths to Zend_Pdf_Element_Numeric objects.
|
||||
*/
|
||||
$pdfWidths = array();
|
||||
foreach ($this->_glyphWidths as $width) {
|
||||
$pdfWidths[] = new Zend_Pdf_Element_Numeric($this->toEmSpace($width));
|
||||
}
|
||||
/* Create the Zend_Pdf_Element_Array object and add it to the font's
|
||||
* object factory and resource dictionary.
|
||||
*/
|
||||
$widthsArrayElement = new Zend_Pdf_Element_Array($pdfWidths);
|
||||
$widthsObject = $this->_objectFactory->newObject($widthsArrayElement);
|
||||
$this->_resource->Widths = $widthsObject;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,67 @@
|
|||
<?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: TrueType.php 20096 2010-01-06 02:05:09Z bkarwin $
|
||||
*/
|
||||
|
||||
|
||||
/** Internally used classes */
|
||||
require_once 'Zend/Pdf/Element/Name.php';
|
||||
|
||||
/** Zend_Pdf_Resource_Font_FontDescriptor */
|
||||
require_once 'Zend/Pdf/Resource/Font/FontDescriptor.php';
|
||||
|
||||
|
||||
/** Zend_Pdf_Resource_Font_Simple_Parsed */
|
||||
require_once 'Zend/Pdf/Resource/Font/Simple/Parsed.php';
|
||||
|
||||
/**
|
||||
* TrueType fonts implementation
|
||||
*
|
||||
* Font objects should be normally be obtained from the factory methods
|
||||
* {@link Zend_Pdf_Font::fontWithName} and {@link Zend_Pdf_Font::fontWithPath}.
|
||||
*
|
||||
* @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_Parsed_TrueType extends Zend_Pdf_Resource_Font_Simple_Parsed
|
||||
{
|
||||
/**
|
||||
* Object constructor
|
||||
*
|
||||
* @param Zend_Pdf_FileParser_Font_OpenType_TrueType $fontParser Font parser
|
||||
* object containing parsed TrueType file.
|
||||
* @param integer $embeddingOptions Options for font embedding.
|
||||
* @throws Zend_Pdf_Exception
|
||||
*/
|
||||
public function __construct(Zend_Pdf_FileParser_Font_OpenType_TrueType $fontParser, $embeddingOptions)
|
||||
{
|
||||
parent::__construct($fontParser, $embeddingOptions);
|
||||
|
||||
$this->_fontType = Zend_Pdf_Font::TYPE_TRUETYPE;
|
||||
|
||||
$this->_resource->Subtype = new Zend_Pdf_Element_Name('TrueType');
|
||||
|
||||
$fontDescriptor = Zend_Pdf_Resource_Font_FontDescriptor::factory($this, $fontParser, $embeddingOptions);
|
||||
$this->_resource->FontDescriptor = $this->_objectFactory->newObject($fontDescriptor);
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,82 @@
|
|||
<?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: Standard.php 20096 2010-01-06 02:05:09Z bkarwin $
|
||||
*/
|
||||
|
||||
|
||||
/** Internally used classes */
|
||||
require_once 'Zend/Pdf/Element/Name.php';
|
||||
|
||||
|
||||
/** Zend_Pdf_Resource_Font_Simple */
|
||||
require_once 'Zend/Pdf/Resource/Font/Simple.php';
|
||||
|
||||
/**
|
||||
* Abstract class definition for the standard 14 Type 1 PDF fonts.
|
||||
*
|
||||
* The standard 14 PDF fonts are guaranteed to be availble in any PDF viewer
|
||||
* implementation. As such, they do not require much data for the font's
|
||||
* resource dictionary. The majority of the data provided by subclasses is for
|
||||
* the benefit of our own layout code.
|
||||
*
|
||||
* The standard fonts and the corresponding subclasses that manage them:
|
||||
* <ul>
|
||||
* <li>Courier - {@link Zend_Pdf_Resource_Font_Simple_Standard_Courier}
|
||||
* <li>Courier-Bold - {@link Zend_Pdf_Resource_Font_Simple_Standard_CourierBold}
|
||||
* <li>Courier-Oblique - {@link Zend_Pdf_Resource_Font_Simple_Standard_CourierOblique}
|
||||
* <li>Courier-BoldOblique - {@link Zend_Pdf_Resource_Font_Simple_Standard_CourierBoldOblique}
|
||||
* <li>Helvetica - {@link Zend_Pdf_Resource_Font_Simple_Standard_Helvetica}
|
||||
* <li>Helvetica-Bold - {@link Zend_Pdf_Resource_Font_Simple_Standard_HelveticaBold}
|
||||
* <li>Helvetica-Oblique - {@link Zend_Pdf_Resource_Font_Simple_Standard_HelveticaOblique}
|
||||
* <li>Helvetica-BoldOblique - {@link Zend_Pdf_Resource_Font_Simple_Standard_HelveticaBoldOblique}
|
||||
* <li>Symbol - {@link Zend_Pdf_Resource_Font_Simple_Standard_Symbol}
|
||||
* <li>Times - {@link Zend_Pdf_Resource_Font_Simple_Standard_Times}
|
||||
* <li>Times-Bold - {@link Zend_Pdf_Resource_Font_Simple_Standard_TimesBold}
|
||||
* <li>Times-Italic - {@link Zend_Pdf_Resource_Font_Simple_Standard_TimesItalic}
|
||||
* <li>Times-BoldItalic - {@link Zend_Pdf_Resource_Font_Simple_Standard_TimesBoldItalic}
|
||||
* <li>ZapfDingbats - {@link Zend_Pdf_Resource_Font_Simple_Standard_ZapfDingbats}
|
||||
* </ul>
|
||||
*
|
||||
* Font objects should be normally be obtained from the factory methods
|
||||
* {@link Zend_Pdf_Font::fontWithName} and {@link Zend_Pdf_Font::fontWithPath}.
|
||||
*
|
||||
* @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
|
||||
*/
|
||||
abstract class Zend_Pdf_Resource_Font_Simple_Standard extends Zend_Pdf_Resource_Font_Simple
|
||||
{
|
||||
/**** Public Interface ****/
|
||||
|
||||
|
||||
/* Object Lifecycle */
|
||||
|
||||
/**
|
||||
* Object constructor
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
$this->_fontType = Zend_Pdf_Font::TYPE_STANDARD;
|
||||
|
||||
parent::__construct();
|
||||
$this->_resource->Subtype = new Zend_Pdf_Element_Name('Type1');
|
||||
}
|
||||
}
|
|
@ -0,0 +1,295 @@
|
|||
<?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: Courier.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 Courier.
|
||||
*
|
||||
* 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_Courier extends Zend_Pdf_Resource_Font_Simple_Standard
|
||||
{
|
||||
/**** 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'] =
|
||||
"\x00\x43\x00\x6f\x00\x70\x00\x79\x00\x72\x00\x69\x00\x67\x00\x68\x00"
|
||||
. "\x74\x00\x20\x00\x28\x00\x63\x00\x29\x00\x20\x00\x31\x00\x39\x00"
|
||||
. "\x38\x00\x39\x00\x2c\x00\x20\x00\x31\x00\x39\x00\x39\x00\x30\x00"
|
||||
. "\x2c\x00\x20\x00\x31\x00\x39\x00\x39\x00\x31\x00\x2c\x00\x20\x00"
|
||||
. "\x31\x00\x39\x00\x39\x00\x32\x00\x2c\x00\x20\x00\x31\x00\x39\x00"
|
||||
. "\x39\x00\x33\x00\x2c\x00\x20\x00\x31\x00\x39\x00\x39\x00\x37\x00"
|
||||
. "\x20\x00\x41\x00\x64\x00\x6f\x00\x62\x00\x65\x00\x20\x00\x53\x00"
|
||||
. "\x79\x00\x73\x00\x74\x00\x65\x00\x6d\x00\x73\x00\x20\x00\x49\x00"
|
||||
. "\x6e\x00\x63\x00\x6f\x00\x72\x00\x70\x00\x6f\x00\x72\x00\x61\x00"
|
||||
. "\x74\x00\x65\x00\x64\x00\x2e\x00\x20\x00\x20\x00\x41\x00\x6c\x00"
|
||||
. "\x6c\x00\x20\x00\x52\x00\x69\x00\x67\x00\x68\x00\x74\x00\x73\x00"
|
||||
. "\x20\x00\x52\x00\x65\x00\x73\x00\x65\x00\x72\x00\x76\x00\x65\x00"
|
||||
. "\x64\x00\x2e";
|
||||
$this->_fontNames[Zend_Pdf_Font::NAME_FAMILY]['en'] =
|
||||
"\x00\x43\x00\x6f\x00\x75\x00\x72\x00\x69\x00\x65\x00\x72";
|
||||
$this->_fontNames[Zend_Pdf_Font::NAME_STYLE]['en'] =
|
||||
"\x00\x4d\x00\x65\x00\x64\x00\x69\x00\x75\x00\x6d";
|
||||
$this->_fontNames[Zend_Pdf_Font::NAME_ID]['en'] =
|
||||
"\x00\x34\x00\x33\x00\x30\x00\x35\x00\x30";
|
||||
$this->_fontNames[Zend_Pdf_Font::NAME_FULL]['en'] =
|
||||
"\x00\x43\x00\x6f\x00\x75\x00\x72\x00\x69\x00\x65\x00\x72\x00\x20\x00"
|
||||
. "\x4d\x00\x65\x00\x64\x00\x69\x00\x75\x00\x6d";
|
||||
$this->_fontNames[Zend_Pdf_Font::NAME_VERSION]['en'] =
|
||||
"\x00\x30\x00\x30\x00\x33\x00\x2e\x00\x30\x00\x30\x00\x30";
|
||||
$this->_fontNames[Zend_Pdf_Font::NAME_POSTSCRIPT]['en'] =
|
||||
"\x00\x43\x00\x6f\x00\x75\x00\x72\x00\x69\x00\x65\x00\x72";
|
||||
|
||||
$this->_isBold = false;
|
||||
$this->_isItalic = false;
|
||||
$this->_isMonospaced = true;
|
||||
|
||||
$this->_underlinePosition = -100;
|
||||
$this->_underlineThickness = 50;
|
||||
$this->_strikePosition = 225;
|
||||
$this->_strikeThickness = 50;
|
||||
|
||||
$this->_unitsPerEm = 1000;
|
||||
|
||||
$this->_ascent = 629;
|
||||
$this->_descent = -157;
|
||||
$this->_lineGap = 414;
|
||||
|
||||
/* 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 => 0x0258, 0x02 => 0x0258, 0x03 => 0x0258,
|
||||
0x04 => 0x0258, 0x05 => 0x0258, 0x06 => 0x0258, 0x07 => 0x0258,
|
||||
0x08 => 0x0258, 0x09 => 0x0258, 0x0a => 0x0258, 0x0b => 0x0258,
|
||||
0x0c => 0x0258, 0x0d => 0x0258, 0x0e => 0x0258, 0x0f => 0x0258,
|
||||
0x10 => 0x0258, 0x11 => 0x0258, 0x12 => 0x0258, 0x13 => 0x0258,
|
||||
0x14 => 0x0258, 0x15 => 0x0258, 0x16 => 0x0258, 0x17 => 0x0258,
|
||||
0x18 => 0x0258, 0x19 => 0x0258, 0x1a => 0x0258, 0x1b => 0x0258,
|
||||
0x1c => 0x0258, 0x1d => 0x0258, 0x1e => 0x0258, 0x1f => 0x0258,
|
||||
0x20 => 0x0258, 0x21 => 0x0258, 0x22 => 0x0258, 0x23 => 0x0258,
|
||||
0x24 => 0x0258, 0x25 => 0x0258, 0x26 => 0x0258, 0x27 => 0x0258,
|
||||
0x28 => 0x0258, 0x29 => 0x0258, 0x2a => 0x0258, 0x2b => 0x0258,
|
||||
0x2c => 0x0258, 0x2d => 0x0258, 0x2e => 0x0258, 0x2f => 0x0258,
|
||||
0x30 => 0x0258, 0x31 => 0x0258, 0x32 => 0x0258, 0x33 => 0x0258,
|
||||
0x34 => 0x0258, 0x35 => 0x0258, 0x36 => 0x0258, 0x37 => 0x0258,
|
||||
0x38 => 0x0258, 0x39 => 0x0258, 0x3a => 0x0258, 0x3b => 0x0258,
|
||||
0x3c => 0x0258, 0x3d => 0x0258, 0x3e => 0x0258, 0x3f => 0x0258,
|
||||
0x40 => 0x0258, 0x41 => 0x0258, 0x42 => 0x0258, 0x43 => 0x0258,
|
||||
0x44 => 0x0258, 0x45 => 0x0258, 0x46 => 0x0258, 0x47 => 0x0258,
|
||||
0x48 => 0x0258, 0x49 => 0x0258, 0x4a => 0x0258, 0x4b => 0x0258,
|
||||
0x4c => 0x0258, 0x4d => 0x0258, 0x4e => 0x0258, 0x4f => 0x0258,
|
||||
0x50 => 0x0258, 0x51 => 0x0258, 0x52 => 0x0258, 0x53 => 0x0258,
|
||||
0x54 => 0x0258, 0x55 => 0x0258, 0x56 => 0x0258, 0x57 => 0x0258,
|
||||
0x58 => 0x0258, 0x59 => 0x0258, 0x5a => 0x0258, 0x5b => 0x0258,
|
||||
0x5c => 0x0258, 0x5d => 0x0258, 0x5e => 0x0258, 0x5f => 0x0258,
|
||||
0x60 => 0x0258, 0x61 => 0x0258, 0x62 => 0x0258, 0x63 => 0x0258,
|
||||
0x64 => 0x0258, 0x65 => 0x0258, 0x66 => 0x0258, 0x67 => 0x0258,
|
||||
0x68 => 0x0258, 0x69 => 0x0258, 0x6a => 0x0258, 0x6b => 0x0258,
|
||||
0x6c => 0x0258, 0x6d => 0x0258, 0x6e => 0x0258, 0x6f => 0x0258,
|
||||
0x70 => 0x0258, 0x71 => 0x0258, 0x72 => 0x0258, 0x73 => 0x0258,
|
||||
0x74 => 0x0258, 0x75 => 0x0258, 0x76 => 0x0258, 0x77 => 0x0258,
|
||||
0x78 => 0x0258, 0x79 => 0x0258, 0x7a => 0x0258, 0x7b => 0x0258,
|
||||
0x7c => 0x0258, 0x7d => 0x0258, 0x7e => 0x0258, 0x7f => 0x0258,
|
||||
0x80 => 0x0258, 0x81 => 0x0258, 0x82 => 0x0258, 0x83 => 0x0258,
|
||||
0x84 => 0x0258, 0x85 => 0x0258, 0x86 => 0x0258, 0x87 => 0x0258,
|
||||
0x88 => 0x0258, 0x89 => 0x0258, 0x8a => 0x0258, 0x8b => 0x0258,
|
||||
0x8c => 0x0258, 0x8d => 0x0258, 0x8e => 0x0258, 0x8f => 0x0258,
|
||||
0x90 => 0x0258, 0x91 => 0x0258, 0x92 => 0x0258, 0x93 => 0x0258,
|
||||
0x94 => 0x0258, 0x95 => 0x0258, 0x96 => 0x0258, 0x97 => 0x0258,
|
||||
0x98 => 0x0258, 0x99 => 0x0258, 0x9a => 0x0258, 0x9b => 0x0258,
|
||||
0x9c => 0x0258, 0x9d => 0x0258, 0x9e => 0x0258, 0x9f => 0x0258,
|
||||
0xa0 => 0x0258, 0xa1 => 0x0258, 0xa2 => 0x0258, 0xa3 => 0x0258,
|
||||
0xa4 => 0x0258, 0xa5 => 0x0258, 0xa6 => 0x0258, 0xa7 => 0x0258,
|
||||
0xa8 => 0x0258, 0xa9 => 0x0258, 0xaa => 0x0258, 0xab => 0x0258,
|
||||
0xac => 0x0258, 0xad => 0x0258, 0xae => 0x0258, 0xaf => 0x0258,
|
||||
0xb0 => 0x0258, 0xb1 => 0x0258, 0xb2 => 0x0258, 0xb3 => 0x0258,
|
||||
0xb4 => 0x0258, 0xb5 => 0x0258, 0xb6 => 0x0258, 0xb7 => 0x0258,
|
||||
0xb8 => 0x0258, 0xb9 => 0x0258, 0xba => 0x0258, 0xbb => 0x0258,
|
||||
0xbc => 0x0258, 0xbd => 0x0258, 0xbe => 0x0258, 0xbf => 0x0258,
|
||||
0xc0 => 0x0258, 0xc1 => 0x0258, 0xc2 => 0x0258, 0xc3 => 0x0258,
|
||||
0xc4 => 0x0258, 0xc5 => 0x0258, 0xc6 => 0x0258, 0xc7 => 0x0258,
|
||||
0xc8 => 0x0258, 0xc9 => 0x0258, 0xca => 0x0258, 0xcb => 0x0258,
|
||||
0xcc => 0x0258, 0xcd => 0x0258, 0xce => 0x0258, 0xcf => 0x0258,
|
||||
0xd0 => 0x0258, 0xd1 => 0x0258, 0xd2 => 0x0258, 0xd3 => 0x0258,
|
||||
0xd4 => 0x0258, 0xd5 => 0x0258, 0xd6 => 0x0258, 0xd7 => 0x0258,
|
||||
0xd8 => 0x0258, 0xd9 => 0x0258, 0xda => 0x0258, 0xdb => 0x0258,
|
||||
0xdc => 0x0258, 0xdd => 0x0258, 0xde => 0x0258, 0xdf => 0x0258,
|
||||
0xe0 => 0x0258, 0xe1 => 0x0258, 0xe2 => 0x0258, 0xe3 => 0x0258,
|
||||
0xe4 => 0x0258, 0xe5 => 0x0258, 0xe6 => 0x0258, 0xe7 => 0x0258,
|
||||
0xe8 => 0x0258, 0xe9 => 0x0258, 0xea => 0x0258, 0xeb => 0x0258,
|
||||
0xec => 0x0258, 0xed => 0x0258, 0xee => 0x0258, 0xef => 0x0258,
|
||||
0xf0 => 0x0258, 0xf1 => 0x0258, 0xf2 => 0x0258, 0xf3 => 0x0258,
|
||||
0xf4 => 0x0258, 0xf5 => 0x0258, 0xf6 => 0x0258, 0xf7 => 0x0258,
|
||||
0xf8 => 0x0258, 0xf9 => 0x0258, 0xfa => 0x0258, 0xfb => 0x0258,
|
||||
0xfc => 0x0258, 0xfd => 0x0258, 0xfe => 0x0258, 0xff => 0x0258,
|
||||
0x0100 => 0x0258, 0x0101 => 0x0258, 0x0102 => 0x0258, 0x0103 => 0x0258,
|
||||
0x0104 => 0x0258, 0x0105 => 0x0258, 0x0106 => 0x0258, 0x0107 => 0x0258,
|
||||
0x0108 => 0x0258, 0x0109 => 0x0258, 0x010a => 0x0258, 0x010b => 0x0258,
|
||||
0x010c => 0x0258, 0x010d => 0x0258, 0x010e => 0x0258, 0x010f => 0x0258,
|
||||
0x0110 => 0x0258, 0x0111 => 0x0258, 0x0112 => 0x0258, 0x0113 => 0x0258,
|
||||
0x0114 => 0x0258, 0x0115 => 0x0258, 0x0116 => 0x0258, 0x0117 => 0x0258,
|
||||
0x0118 => 0x0258, 0x0119 => 0x0258, 0x011a => 0x0258, 0x011b => 0x0258,
|
||||
0x011c => 0x0258, 0x011d => 0x0258, 0x011e => 0x0258, 0x011f => 0x0258,
|
||||
0x0120 => 0x0258, 0x0121 => 0x0258, 0x0122 => 0x0258, 0x0123 => 0x0258,
|
||||
0x0124 => 0x0258, 0x0125 => 0x0258, 0x0126 => 0x0258, 0x0127 => 0x0258,
|
||||
0x0128 => 0x0258, 0x0129 => 0x0258, 0x012a => 0x0258, 0x012b => 0x0258,
|
||||
0x012c => 0x0258, 0x012d => 0x0258, 0x012e => 0x0258, 0x012f => 0x0258,
|
||||
0x0130 => 0x0258, 0x0131 => 0x0258, 0x0132 => 0x0258, 0x0133 => 0x0258,
|
||||
0x0134 => 0x0258, 0x0135 => 0x0258, 0x0136 => 0x0258, 0x0137 => 0x0258,
|
||||
0x0138 => 0x0258, 0x0139 => 0x0258, 0x013a => 0x0258, 0x013b => 0x0258,
|
||||
);
|
||||
|
||||
/* The cmap table is similarly synthesized.
|
||||
*/
|
||||
$cmapData = array(
|
||||
0x20 => 0x01, 0x21 => 0x02, 0x22 => 0x03, 0x23 => 0x04,
|
||||
0x24 => 0x05, 0x25 => 0x06, 0x26 => 0x07, 0x2019 => 0x08,
|
||||
0x28 => 0x09, 0x29 => 0x0a, 0x2a => 0x0b, 0x2b => 0x0c,
|
||||
0x2c => 0x0d, 0x2d => 0x0e, 0x2e => 0x0f, 0x2f => 0x10,
|
||||
0x30 => 0x11, 0x31 => 0x12, 0x32 => 0x13, 0x33 => 0x14,
|
||||
0x34 => 0x15, 0x35 => 0x16, 0x36 => 0x17, 0x37 => 0x18,
|
||||
0x38 => 0x19, 0x39 => 0x1a, 0x3a => 0x1b, 0x3b => 0x1c,
|
||||
0x3c => 0x1d, 0x3d => 0x1e, 0x3e => 0x1f, 0x3f => 0x20,
|
||||
0x40 => 0x21, 0x41 => 0x22, 0x42 => 0x23, 0x43 => 0x24,
|
||||
0x44 => 0x25, 0x45 => 0x26, 0x46 => 0x27, 0x47 => 0x28,
|
||||
0x48 => 0x29, 0x49 => 0x2a, 0x4a => 0x2b, 0x4b => 0x2c,
|
||||
0x4c => 0x2d, 0x4d => 0x2e, 0x4e => 0x2f, 0x4f => 0x30,
|
||||
0x50 => 0x31, 0x51 => 0x32, 0x52 => 0x33, 0x53 => 0x34,
|
||||
0x54 => 0x35, 0x55 => 0x36, 0x56 => 0x37, 0x57 => 0x38,
|
||||
0x58 => 0x39, 0x59 => 0x3a, 0x5a => 0x3b, 0x5b => 0x3c,
|
||||
0x5c => 0x3d, 0x5d => 0x3e, 0x5e => 0x3f, 0x5f => 0x40,
|
||||
0x2018 => 0x41, 0x61 => 0x42, 0x62 => 0x43, 0x63 => 0x44,
|
||||
0x64 => 0x45, 0x65 => 0x46, 0x66 => 0x47, 0x67 => 0x48,
|
||||
0x68 => 0x49, 0x69 => 0x4a, 0x6a => 0x4b, 0x6b => 0x4c,
|
||||
0x6c => 0x4d, 0x6d => 0x4e, 0x6e => 0x4f, 0x6f => 0x50,
|
||||
0x70 => 0x51, 0x71 => 0x52, 0x72 => 0x53, 0x73 => 0x54,
|
||||
0x74 => 0x55, 0x75 => 0x56, 0x76 => 0x57, 0x77 => 0x58,
|
||||
0x78 => 0x59, 0x79 => 0x5a, 0x7a => 0x5b, 0x7b => 0x5c,
|
||||
0x7c => 0x5d, 0x7d => 0x5e, 0x7e => 0x5f, 0xa1 => 0x60,
|
||||
0xa2 => 0x61, 0xa3 => 0x62, 0x2044 => 0x63, 0xa5 => 0x64,
|
||||
0x0192 => 0x65, 0xa7 => 0x66, 0xa4 => 0x67, 0x27 => 0x68,
|
||||
0x201c => 0x69, 0xab => 0x6a, 0x2039 => 0x6b, 0x203a => 0x6c,
|
||||
0xfb01 => 0x6d, 0xfb02 => 0x6e, 0x2013 => 0x6f, 0x2020 => 0x70,
|
||||
0x2021 => 0x71, 0xb7 => 0x72, 0xb6 => 0x73, 0x2022 => 0x74,
|
||||
0x201a => 0x75, 0x201e => 0x76, 0x201d => 0x77, 0xbb => 0x78,
|
||||
0x2026 => 0x79, 0x2030 => 0x7a, 0xbf => 0x7b, 0x60 => 0x7c,
|
||||
0xb4 => 0x7d, 0x02c6 => 0x7e, 0x02dc => 0x7f, 0xaf => 0x80,
|
||||
0x02d8 => 0x81, 0x02d9 => 0x82, 0xa8 => 0x83, 0x02da => 0x84,
|
||||
0xb8 => 0x85, 0x02dd => 0x86, 0x02db => 0x87, 0x02c7 => 0x88,
|
||||
0x2014 => 0x89, 0xc6 => 0x8a, 0xaa => 0x8b, 0x0141 => 0x8c,
|
||||
0xd8 => 0x8d, 0x0152 => 0x8e, 0xba => 0x8f, 0xe6 => 0x90,
|
||||
0x0131 => 0x91, 0x0142 => 0x92, 0xf8 => 0x93, 0x0153 => 0x94,
|
||||
0xdf => 0x95, 0xcf => 0x96, 0xe9 => 0x97, 0x0103 => 0x98,
|
||||
0x0171 => 0x99, 0x011b => 0x9a, 0x0178 => 0x9b, 0xf7 => 0x9c,
|
||||
0xdd => 0x9d, 0xc2 => 0x9e, 0xe1 => 0x9f, 0xdb => 0xa0,
|
||||
0xfd => 0xa1, 0x0219 => 0xa2, 0xea => 0xa3, 0x016e => 0xa4,
|
||||
0xdc => 0xa5, 0x0105 => 0xa6, 0xda => 0xa7, 0x0173 => 0xa8,
|
||||
0xcb => 0xa9, 0x0110 => 0xaa, 0xf6c3 => 0xab, 0xa9 => 0xac,
|
||||
0x0112 => 0xad, 0x010d => 0xae, 0xe5 => 0xaf, 0x0145 => 0xb0,
|
||||
0x013a => 0xb1, 0xe0 => 0xb2, 0x0162 => 0xb3, 0x0106 => 0xb4,
|
||||
0xe3 => 0xb5, 0x0116 => 0xb6, 0x0161 => 0xb7, 0x015f => 0xb8,
|
||||
0xed => 0xb9, 0x25ca => 0xba, 0x0158 => 0xbb, 0x0122 => 0xbc,
|
||||
0xfb => 0xbd, 0xe2 => 0xbe, 0x0100 => 0xbf, 0x0159 => 0xc0,
|
||||
0xe7 => 0xc1, 0x017b => 0xc2, 0xde => 0xc3, 0x014c => 0xc4,
|
||||
0x0154 => 0xc5, 0x015a => 0xc6, 0x010f => 0xc7, 0x016a => 0xc8,
|
||||
0x016f => 0xc9, 0xb3 => 0xca, 0xd2 => 0xcb, 0xc0 => 0xcc,
|
||||
0x0102 => 0xcd, 0xd7 => 0xce, 0xfa => 0xcf, 0x0164 => 0xd0,
|
||||
0x2202 => 0xd1, 0xff => 0xd2, 0x0143 => 0xd3, 0xee => 0xd4,
|
||||
0xca => 0xd5, 0xe4 => 0xd6, 0xeb => 0xd7, 0x0107 => 0xd8,
|
||||
0x0144 => 0xd9, 0x016b => 0xda, 0x0147 => 0xdb, 0xcd => 0xdc,
|
||||
0xb1 => 0xdd, 0xa6 => 0xde, 0xae => 0xdf, 0x011e => 0xe0,
|
||||
0x0130 => 0xe1, 0x2211 => 0xe2, 0xc8 => 0xe3, 0x0155 => 0xe4,
|
||||
0x014d => 0xe5, 0x0179 => 0xe6, 0x017d => 0xe7, 0x2265 => 0xe8,
|
||||
0xd0 => 0xe9, 0xc7 => 0xea, 0x013c => 0xeb, 0x0165 => 0xec,
|
||||
0x0119 => 0xed, 0x0172 => 0xee, 0xc1 => 0xef, 0xc4 => 0xf0,
|
||||
0xe8 => 0xf1, 0x017a => 0xf2, 0x012f => 0xf3, 0xd3 => 0xf4,
|
||||
0xf3 => 0xf5, 0x0101 => 0xf6, 0x015b => 0xf7, 0xef => 0xf8,
|
||||
0xd4 => 0xf9, 0xd9 => 0xfa, 0x2206 => 0xfb, 0xfe => 0xfc,
|
||||
0xb2 => 0xfd, 0xd6 => 0xfe, 0xb5 => 0xff, 0xec => 0x0100,
|
||||
0x0151 => 0x0101, 0x0118 => 0x0102, 0x0111 => 0x0103, 0xbe => 0x0104,
|
||||
0x015e => 0x0105, 0x013e => 0x0106, 0x0136 => 0x0107, 0x0139 => 0x0108,
|
||||
0x2122 => 0x0109, 0x0117 => 0x010a, 0xcc => 0x010b, 0x012a => 0x010c,
|
||||
0x013d => 0x010d, 0xbd => 0x010e, 0x2264 => 0x010f, 0xf4 => 0x0110,
|
||||
0xf1 => 0x0111, 0x0170 => 0x0112, 0xc9 => 0x0113, 0x0113 => 0x0114,
|
||||
0x011f => 0x0115, 0xbc => 0x0116, 0x0160 => 0x0117, 0x0218 => 0x0118,
|
||||
0x0150 => 0x0119, 0xb0 => 0x011a, 0xf2 => 0x011b, 0x010c => 0x011c,
|
||||
0xf9 => 0x011d, 0x221a => 0x011e, 0x010e => 0x011f, 0x0157 => 0x0120,
|
||||
0xd1 => 0x0121, 0xf5 => 0x0122, 0x0156 => 0x0123, 0x013b => 0x0124,
|
||||
0xc3 => 0x0125, 0x0104 => 0x0126, 0xc5 => 0x0127, 0xd5 => 0x0128,
|
||||
0x017c => 0x0129, 0x011a => 0x012a, 0x012e => 0x012b, 0x0137 => 0x012c,
|
||||
0x2212 => 0x012d, 0xce => 0x012e, 0x0148 => 0x012f, 0x0163 => 0x0130,
|
||||
0xac => 0x0131, 0xf6 => 0x0132, 0xfc => 0x0133, 0x2260 => 0x0134,
|
||||
0x0123 => 0x0135, 0xf0 => 0x0136, 0x017e => 0x0137, 0x0146 => 0x0138,
|
||||
0xb9 => 0x0139, 0x012b => 0x013a, 0x20ac => 0x013b);
|
||||
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('Courier');
|
||||
}
|
||||
}
|
|
@ -0,0 +1,296 @@
|
|||
<?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: CourierBold.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 Courier-Bold.
|
||||
*
|
||||
* 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_CourierBold extends Zend_Pdf_Resource_Font_Simple_Standard
|
||||
{
|
||||
/**** 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'] =
|
||||
"\x00\x43\x00\x6f\x00\x70\x00\x79\x00\x72\x00\x69\x00\x67\x00\x68\x00"
|
||||
. "\x74\x00\x20\x00\x28\x00\x63\x00\x29\x00\x20\x00\x31\x00\x39\x00"
|
||||
. "\x38\x00\x39\x00\x2c\x00\x20\x00\x31\x00\x39\x00\x39\x00\x30\x00"
|
||||
. "\x2c\x00\x20\x00\x31\x00\x39\x00\x39\x00\x31\x00\x2c\x00\x20\x00"
|
||||
. "\x31\x00\x39\x00\x39\x00\x33\x00\x2c\x00\x20\x00\x31\x00\x39\x00"
|
||||
. "\x39\x00\x37\x00\x20\x00\x41\x00\x64\x00\x6f\x00\x62\x00\x65\x00"
|
||||
. "\x20\x00\x53\x00\x79\x00\x73\x00\x74\x00\x65\x00\x6d\x00\x73\x00"
|
||||
. "\x20\x00\x49\x00\x6e\x00\x63\x00\x6f\x00\x72\x00\x70\x00\x6f\x00"
|
||||
. "\x72\x00\x61\x00\x74\x00\x65\x00\x64\x00\x2e\x00\x20\x00\x20\x00"
|
||||
. "\x41\x00\x6c\x00\x6c\x00\x20\x00\x52\x00\x69\x00\x67\x00\x68\x00"
|
||||
. "\x74\x00\x73\x00\x20\x00\x52\x00\x65\x00\x73\x00\x65\x00\x72\x00"
|
||||
. "\x76\x00\x65\x00\x64\x00\x2e";
|
||||
$this->_fontNames[Zend_Pdf_Font::NAME_FAMILY]['en'] =
|
||||
"\x00\x43\x00\x6f\x00\x75\x00\x72\x00\x69\x00\x65\x00\x72";
|
||||
$this->_fontNames[Zend_Pdf_Font::NAME_STYLE]['en'] =
|
||||
"\x00\x42\x00\x6f\x00\x6c\x00\x64";
|
||||
$this->_fontNames[Zend_Pdf_Font::NAME_ID]['en'] =
|
||||
"\x00\x34\x00\x33\x00\x30\x00\x34\x00\x38";
|
||||
$this->_fontNames[Zend_Pdf_Font::NAME_FULL]['en'] =
|
||||
"\x00\x43\x00\x6f\x00\x75\x00\x72\x00\x69\x00\x65\x00\x72\x00\x2d\x00"
|
||||
. "\x42\x00\x6f\x00\x6c\x00\x64\x00\x20\x00\x42\x00\x6f\x00\x6c\x00"
|
||||
. "\x64";
|
||||
$this->_fontNames[Zend_Pdf_Font::NAME_VERSION]['en'] =
|
||||
"\x00\x30\x00\x30\x00\x33\x00\x2e\x00\x30\x00\x30\x00\x30";
|
||||
$this->_fontNames[Zend_Pdf_Font::NAME_POSTSCRIPT]['en'] =
|
||||
"\x00\x43\x00\x6f\x00\x75\x00\x72\x00\x69\x00\x65\x00\x72\x00\x2d\x00"
|
||||
. "\x42\x00\x6f\x00\x6c\x00\x64";
|
||||
|
||||
$this->_isBold = true;
|
||||
$this->_isItalic = false;
|
||||
$this->_isMonospaced = true;
|
||||
|
||||
$this->_underlinePosition = -100;
|
||||
$this->_underlineThickness = 50;
|
||||
$this->_strikePosition = 225;
|
||||
$this->_strikeThickness = 50;
|
||||
|
||||
$this->_unitsPerEm = 1000;
|
||||
|
||||
$this->_ascent = 629;
|
||||
$this->_descent = -157;
|
||||
$this->_lineGap = 414;
|
||||
|
||||
/* 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 => 0x0258, 0x02 => 0x0258, 0x03 => 0x0258,
|
||||
0x04 => 0x0258, 0x05 => 0x0258, 0x06 => 0x0258, 0x07 => 0x0258,
|
||||
0x08 => 0x0258, 0x09 => 0x0258, 0x0a => 0x0258, 0x0b => 0x0258,
|
||||
0x0c => 0x0258, 0x0d => 0x0258, 0x0e => 0x0258, 0x0f => 0x0258,
|
||||
0x10 => 0x0258, 0x11 => 0x0258, 0x12 => 0x0258, 0x13 => 0x0258,
|
||||
0x14 => 0x0258, 0x15 => 0x0258, 0x16 => 0x0258, 0x17 => 0x0258,
|
||||
0x18 => 0x0258, 0x19 => 0x0258, 0x1a => 0x0258, 0x1b => 0x0258,
|
||||
0x1c => 0x0258, 0x1d => 0x0258, 0x1e => 0x0258, 0x1f => 0x0258,
|
||||
0x20 => 0x0258, 0x21 => 0x0258, 0x22 => 0x0258, 0x23 => 0x0258,
|
||||
0x24 => 0x0258, 0x25 => 0x0258, 0x26 => 0x0258, 0x27 => 0x0258,
|
||||
0x28 => 0x0258, 0x29 => 0x0258, 0x2a => 0x0258, 0x2b => 0x0258,
|
||||
0x2c => 0x0258, 0x2d => 0x0258, 0x2e => 0x0258, 0x2f => 0x0258,
|
||||
0x30 => 0x0258, 0x31 => 0x0258, 0x32 => 0x0258, 0x33 => 0x0258,
|
||||
0x34 => 0x0258, 0x35 => 0x0258, 0x36 => 0x0258, 0x37 => 0x0258,
|
||||
0x38 => 0x0258, 0x39 => 0x0258, 0x3a => 0x0258, 0x3b => 0x0258,
|
||||
0x3c => 0x0258, 0x3d => 0x0258, 0x3e => 0x0258, 0x3f => 0x0258,
|
||||
0x40 => 0x0258, 0x41 => 0x0258, 0x42 => 0x0258, 0x43 => 0x0258,
|
||||
0x44 => 0x0258, 0x45 => 0x0258, 0x46 => 0x0258, 0x47 => 0x0258,
|
||||
0x48 => 0x0258, 0x49 => 0x0258, 0x4a => 0x0258, 0x4b => 0x0258,
|
||||
0x4c => 0x0258, 0x4d => 0x0258, 0x4e => 0x0258, 0x4f => 0x0258,
|
||||
0x50 => 0x0258, 0x51 => 0x0258, 0x52 => 0x0258, 0x53 => 0x0258,
|
||||
0x54 => 0x0258, 0x55 => 0x0258, 0x56 => 0x0258, 0x57 => 0x0258,
|
||||
0x58 => 0x0258, 0x59 => 0x0258, 0x5a => 0x0258, 0x5b => 0x0258,
|
||||
0x5c => 0x0258, 0x5d => 0x0258, 0x5e => 0x0258, 0x5f => 0x0258,
|
||||
0x60 => 0x0258, 0x61 => 0x0258, 0x62 => 0x0258, 0x63 => 0x0258,
|
||||
0x64 => 0x0258, 0x65 => 0x0258, 0x66 => 0x0258, 0x67 => 0x0258,
|
||||
0x68 => 0x0258, 0x69 => 0x0258, 0x6a => 0x0258, 0x6b => 0x0258,
|
||||
0x6c => 0x0258, 0x6d => 0x0258, 0x6e => 0x0258, 0x6f => 0x0258,
|
||||
0x70 => 0x0258, 0x71 => 0x0258, 0x72 => 0x0258, 0x73 => 0x0258,
|
||||
0x74 => 0x0258, 0x75 => 0x0258, 0x76 => 0x0258, 0x77 => 0x0258,
|
||||
0x78 => 0x0258, 0x79 => 0x0258, 0x7a => 0x0258, 0x7b => 0x0258,
|
||||
0x7c => 0x0258, 0x7d => 0x0258, 0x7e => 0x0258, 0x7f => 0x0258,
|
||||
0x80 => 0x0258, 0x81 => 0x0258, 0x82 => 0x0258, 0x83 => 0x0258,
|
||||
0x84 => 0x0258, 0x85 => 0x0258, 0x86 => 0x0258, 0x87 => 0x0258,
|
||||
0x88 => 0x0258, 0x89 => 0x0258, 0x8a => 0x0258, 0x8b => 0x0258,
|
||||
0x8c => 0x0258, 0x8d => 0x0258, 0x8e => 0x0258, 0x8f => 0x0258,
|
||||
0x90 => 0x0258, 0x91 => 0x0258, 0x92 => 0x0258, 0x93 => 0x0258,
|
||||
0x94 => 0x0258, 0x95 => 0x0258, 0x96 => 0x0258, 0x97 => 0x0258,
|
||||
0x98 => 0x0258, 0x99 => 0x0258, 0x9a => 0x0258, 0x9b => 0x0258,
|
||||
0x9c => 0x0258, 0x9d => 0x0258, 0x9e => 0x0258, 0x9f => 0x0258,
|
||||
0xa0 => 0x0258, 0xa1 => 0x0258, 0xa2 => 0x0258, 0xa3 => 0x0258,
|
||||
0xa4 => 0x0258, 0xa5 => 0x0258, 0xa6 => 0x0258, 0xa7 => 0x0258,
|
||||
0xa8 => 0x0258, 0xa9 => 0x0258, 0xaa => 0x0258, 0xab => 0x0258,
|
||||
0xac => 0x0258, 0xad => 0x0258, 0xae => 0x0258, 0xaf => 0x0258,
|
||||
0xb0 => 0x0258, 0xb1 => 0x0258, 0xb2 => 0x0258, 0xb3 => 0x0258,
|
||||
0xb4 => 0x0258, 0xb5 => 0x0258, 0xb6 => 0x0258, 0xb7 => 0x0258,
|
||||
0xb8 => 0x0258, 0xb9 => 0x0258, 0xba => 0x0258, 0xbb => 0x0258,
|
||||
0xbc => 0x0258, 0xbd => 0x0258, 0xbe => 0x0258, 0xbf => 0x0258,
|
||||
0xc0 => 0x0258, 0xc1 => 0x0258, 0xc2 => 0x0258, 0xc3 => 0x0258,
|
||||
0xc4 => 0x0258, 0xc5 => 0x0258, 0xc6 => 0x0258, 0xc7 => 0x0258,
|
||||
0xc8 => 0x0258, 0xc9 => 0x0258, 0xca => 0x0258, 0xcb => 0x0258,
|
||||
0xcc => 0x0258, 0xcd => 0x0258, 0xce => 0x0258, 0xcf => 0x0258,
|
||||
0xd0 => 0x0258, 0xd1 => 0x0258, 0xd2 => 0x0258, 0xd3 => 0x0258,
|
||||
0xd4 => 0x0258, 0xd5 => 0x0258, 0xd6 => 0x0258, 0xd7 => 0x0258,
|
||||
0xd8 => 0x0258, 0xd9 => 0x0258, 0xda => 0x0258, 0xdb => 0x0258,
|
||||
0xdc => 0x0258, 0xdd => 0x0258, 0xde => 0x0258, 0xdf => 0x0258,
|
||||
0xe0 => 0x0258, 0xe1 => 0x0258, 0xe2 => 0x0258, 0xe3 => 0x0258,
|
||||
0xe4 => 0x0258, 0xe5 => 0x0258, 0xe6 => 0x0258, 0xe7 => 0x0258,
|
||||
0xe8 => 0x0258, 0xe9 => 0x0258, 0xea => 0x0258, 0xeb => 0x0258,
|
||||
0xec => 0x0258, 0xed => 0x0258, 0xee => 0x0258, 0xef => 0x0258,
|
||||
0xf0 => 0x0258, 0xf1 => 0x0258, 0xf2 => 0x0258, 0xf3 => 0x0258,
|
||||
0xf4 => 0x0258, 0xf5 => 0x0258, 0xf6 => 0x0258, 0xf7 => 0x0258,
|
||||
0xf8 => 0x0258, 0xf9 => 0x0258, 0xfa => 0x0258, 0xfb => 0x0258,
|
||||
0xfc => 0x0258, 0xfd => 0x0258, 0xfe => 0x0258, 0xff => 0x0258,
|
||||
0x0100 => 0x0258, 0x0101 => 0x0258, 0x0102 => 0x0258, 0x0103 => 0x0258,
|
||||
0x0104 => 0x0258, 0x0105 => 0x0258, 0x0106 => 0x0258, 0x0107 => 0x0258,
|
||||
0x0108 => 0x0258, 0x0109 => 0x0258, 0x010a => 0x0258, 0x010b => 0x0258,
|
||||
0x010c => 0x0258, 0x010d => 0x0258, 0x010e => 0x0258, 0x010f => 0x0258,
|
||||
0x0110 => 0x0258, 0x0111 => 0x0258, 0x0112 => 0x0258, 0x0113 => 0x0258,
|
||||
0x0114 => 0x0258, 0x0115 => 0x0258, 0x0116 => 0x0258, 0x0117 => 0x0258,
|
||||
0x0118 => 0x0258, 0x0119 => 0x0258, 0x011a => 0x0258, 0x011b => 0x0258,
|
||||
0x011c => 0x0258, 0x011d => 0x0258, 0x011e => 0x0258, 0x011f => 0x0258,
|
||||
0x0120 => 0x0258, 0x0121 => 0x0258, 0x0122 => 0x0258, 0x0123 => 0x0258,
|
||||
0x0124 => 0x0258, 0x0125 => 0x0258, 0x0126 => 0x0258, 0x0127 => 0x0258,
|
||||
0x0128 => 0x0258, 0x0129 => 0x0258, 0x012a => 0x0258, 0x012b => 0x0258,
|
||||
0x012c => 0x0258, 0x012d => 0x0258, 0x012e => 0x0258, 0x012f => 0x0258,
|
||||
0x0130 => 0x0258, 0x0131 => 0x0258, 0x0132 => 0x0258, 0x0133 => 0x0258,
|
||||
0x0134 => 0x0258, 0x0135 => 0x0258, 0x0136 => 0x0258, 0x0137 => 0x0258,
|
||||
0x0138 => 0x0258, 0x0139 => 0x0258, 0x013a => 0x0258, 0x013b => 0x0258,
|
||||
);
|
||||
|
||||
/* The cmap table is similarly synthesized.
|
||||
*/
|
||||
$cmapData = array(
|
||||
0x20 => 0x01, 0x21 => 0x02, 0x22 => 0x03, 0x23 => 0x04,
|
||||
0x24 => 0x05, 0x25 => 0x06, 0x26 => 0x07, 0x2019 => 0x08,
|
||||
0x28 => 0x09, 0x29 => 0x0a, 0x2a => 0x0b, 0x2b => 0x0c,
|
||||
0x2c => 0x0d, 0x2d => 0x0e, 0x2e => 0x0f, 0x2f => 0x10,
|
||||
0x30 => 0x11, 0x31 => 0x12, 0x32 => 0x13, 0x33 => 0x14,
|
||||
0x34 => 0x15, 0x35 => 0x16, 0x36 => 0x17, 0x37 => 0x18,
|
||||
0x38 => 0x19, 0x39 => 0x1a, 0x3a => 0x1b, 0x3b => 0x1c,
|
||||
0x3c => 0x1d, 0x3d => 0x1e, 0x3e => 0x1f, 0x3f => 0x20,
|
||||
0x40 => 0x21, 0x41 => 0x22, 0x42 => 0x23, 0x43 => 0x24,
|
||||
0x44 => 0x25, 0x45 => 0x26, 0x46 => 0x27, 0x47 => 0x28,
|
||||
0x48 => 0x29, 0x49 => 0x2a, 0x4a => 0x2b, 0x4b => 0x2c,
|
||||
0x4c => 0x2d, 0x4d => 0x2e, 0x4e => 0x2f, 0x4f => 0x30,
|
||||
0x50 => 0x31, 0x51 => 0x32, 0x52 => 0x33, 0x53 => 0x34,
|
||||
0x54 => 0x35, 0x55 => 0x36, 0x56 => 0x37, 0x57 => 0x38,
|
||||
0x58 => 0x39, 0x59 => 0x3a, 0x5a => 0x3b, 0x5b => 0x3c,
|
||||
0x5c => 0x3d, 0x5d => 0x3e, 0x5e => 0x3f, 0x5f => 0x40,
|
||||
0x2018 => 0x41, 0x61 => 0x42, 0x62 => 0x43, 0x63 => 0x44,
|
||||
0x64 => 0x45, 0x65 => 0x46, 0x66 => 0x47, 0x67 => 0x48,
|
||||
0x68 => 0x49, 0x69 => 0x4a, 0x6a => 0x4b, 0x6b => 0x4c,
|
||||
0x6c => 0x4d, 0x6d => 0x4e, 0x6e => 0x4f, 0x6f => 0x50,
|
||||
0x70 => 0x51, 0x71 => 0x52, 0x72 => 0x53, 0x73 => 0x54,
|
||||
0x74 => 0x55, 0x75 => 0x56, 0x76 => 0x57, 0x77 => 0x58,
|
||||
0x78 => 0x59, 0x79 => 0x5a, 0x7a => 0x5b, 0x7b => 0x5c,
|
||||
0x7c => 0x5d, 0x7d => 0x5e, 0x7e => 0x5f, 0xa1 => 0x60,
|
||||
0xa2 => 0x61, 0xa3 => 0x62, 0x2044 => 0x63, 0xa5 => 0x64,
|
||||
0x0192 => 0x65, 0xa7 => 0x66, 0xa4 => 0x67, 0x27 => 0x68,
|
||||
0x201c => 0x69, 0xab => 0x6a, 0x2039 => 0x6b, 0x203a => 0x6c,
|
||||
0xfb01 => 0x6d, 0xfb02 => 0x6e, 0x2013 => 0x6f, 0x2020 => 0x70,
|
||||
0x2021 => 0x71, 0xb7 => 0x72, 0xb6 => 0x73, 0x2022 => 0x74,
|
||||
0x201a => 0x75, 0x201e => 0x76, 0x201d => 0x77, 0xbb => 0x78,
|
||||
0x2026 => 0x79, 0x2030 => 0x7a, 0xbf => 0x7b, 0x60 => 0x7c,
|
||||
0xb4 => 0x7d, 0x02c6 => 0x7e, 0x02dc => 0x7f, 0xaf => 0x80,
|
||||
0x02d8 => 0x81, 0x02d9 => 0x82, 0xa8 => 0x83, 0x02da => 0x84,
|
||||
0xb8 => 0x85, 0x02dd => 0x86, 0x02db => 0x87, 0x02c7 => 0x88,
|
||||
0x2014 => 0x89, 0xc6 => 0x8a, 0xaa => 0x8b, 0x0141 => 0x8c,
|
||||
0xd8 => 0x8d, 0x0152 => 0x8e, 0xba => 0x8f, 0xe6 => 0x90,
|
||||
0x0131 => 0x91, 0x0142 => 0x92, 0xf8 => 0x93, 0x0153 => 0x94,
|
||||
0xdf => 0x95, 0xcf => 0x96, 0xe9 => 0x97, 0x0103 => 0x98,
|
||||
0x0171 => 0x99, 0x011b => 0x9a, 0x0178 => 0x9b, 0xf7 => 0x9c,
|
||||
0xdd => 0x9d, 0xc2 => 0x9e, 0xe1 => 0x9f, 0xdb => 0xa0,
|
||||
0xfd => 0xa1, 0x0219 => 0xa2, 0xea => 0xa3, 0x016e => 0xa4,
|
||||
0xdc => 0xa5, 0x0105 => 0xa6, 0xda => 0xa7, 0x0173 => 0xa8,
|
||||
0xcb => 0xa9, 0x0110 => 0xaa, 0xf6c3 => 0xab, 0xa9 => 0xac,
|
||||
0x0112 => 0xad, 0x010d => 0xae, 0xe5 => 0xaf, 0x0145 => 0xb0,
|
||||
0x013a => 0xb1, 0xe0 => 0xb2, 0x0162 => 0xb3, 0x0106 => 0xb4,
|
||||
0xe3 => 0xb5, 0x0116 => 0xb6, 0x0161 => 0xb7, 0x015f => 0xb8,
|
||||
0xed => 0xb9, 0x25ca => 0xba, 0x0158 => 0xbb, 0x0122 => 0xbc,
|
||||
0xfb => 0xbd, 0xe2 => 0xbe, 0x0100 => 0xbf, 0x0159 => 0xc0,
|
||||
0xe7 => 0xc1, 0x017b => 0xc2, 0xde => 0xc3, 0x014c => 0xc4,
|
||||
0x0154 => 0xc5, 0x015a => 0xc6, 0x010f => 0xc7, 0x016a => 0xc8,
|
||||
0x016f => 0xc9, 0xb3 => 0xca, 0xd2 => 0xcb, 0xc0 => 0xcc,
|
||||
0x0102 => 0xcd, 0xd7 => 0xce, 0xfa => 0xcf, 0x0164 => 0xd0,
|
||||
0x2202 => 0xd1, 0xff => 0xd2, 0x0143 => 0xd3, 0xee => 0xd4,
|
||||
0xca => 0xd5, 0xe4 => 0xd6, 0xeb => 0xd7, 0x0107 => 0xd8,
|
||||
0x0144 => 0xd9, 0x016b => 0xda, 0x0147 => 0xdb, 0xcd => 0xdc,
|
||||
0xb1 => 0xdd, 0xa6 => 0xde, 0xae => 0xdf, 0x011e => 0xe0,
|
||||
0x0130 => 0xe1, 0x2211 => 0xe2, 0xc8 => 0xe3, 0x0155 => 0xe4,
|
||||
0x014d => 0xe5, 0x0179 => 0xe6, 0x017d => 0xe7, 0x2265 => 0xe8,
|
||||
0xd0 => 0xe9, 0xc7 => 0xea, 0x013c => 0xeb, 0x0165 => 0xec,
|
||||
0x0119 => 0xed, 0x0172 => 0xee, 0xc1 => 0xef, 0xc4 => 0xf0,
|
||||
0xe8 => 0xf1, 0x017a => 0xf2, 0x012f => 0xf3, 0xd3 => 0xf4,
|
||||
0xf3 => 0xf5, 0x0101 => 0xf6, 0x015b => 0xf7, 0xef => 0xf8,
|
||||
0xd4 => 0xf9, 0xd9 => 0xfa, 0x2206 => 0xfb, 0xfe => 0xfc,
|
||||
0xb2 => 0xfd, 0xd6 => 0xfe, 0xb5 => 0xff, 0xec => 0x0100,
|
||||
0x0151 => 0x0101, 0x0118 => 0x0102, 0x0111 => 0x0103, 0xbe => 0x0104,
|
||||
0x015e => 0x0105, 0x013e => 0x0106, 0x0136 => 0x0107, 0x0139 => 0x0108,
|
||||
0x2122 => 0x0109, 0x0117 => 0x010a, 0xcc => 0x010b, 0x012a => 0x010c,
|
||||
0x013d => 0x010d, 0xbd => 0x010e, 0x2264 => 0x010f, 0xf4 => 0x0110,
|
||||
0xf1 => 0x0111, 0x0170 => 0x0112, 0xc9 => 0x0113, 0x0113 => 0x0114,
|
||||
0x011f => 0x0115, 0xbc => 0x0116, 0x0160 => 0x0117, 0x0218 => 0x0118,
|
||||
0x0150 => 0x0119, 0xb0 => 0x011a, 0xf2 => 0x011b, 0x010c => 0x011c,
|
||||
0xf9 => 0x011d, 0x221a => 0x011e, 0x010e => 0x011f, 0x0157 => 0x0120,
|
||||
0xd1 => 0x0121, 0xf5 => 0x0122, 0x0156 => 0x0123, 0x013b => 0x0124,
|
||||
0xc3 => 0x0125, 0x0104 => 0x0126, 0xc5 => 0x0127, 0xd5 => 0x0128,
|
||||
0x017c => 0x0129, 0x011a => 0x012a, 0x012e => 0x012b, 0x0137 => 0x012c,
|
||||
0x2212 => 0x012d, 0xce => 0x012e, 0x0148 => 0x012f, 0x0163 => 0x0130,
|
||||
0xac => 0x0131, 0xf6 => 0x0132, 0xfc => 0x0133, 0x2260 => 0x0134,
|
||||
0x0123 => 0x0135, 0xf0 => 0x0136, 0x017e => 0x0137, 0x0146 => 0x0138,
|
||||
0xb9 => 0x0139, 0x012b => 0x013a, 0x20ac => 0x013b);
|
||||
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('Courier-Bold');
|
||||
}
|
||||
}
|
|
@ -0,0 +1,297 @@
|
|||
<?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: CourierBoldOblique.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 Courier-BoldOblique.
|
||||
*
|
||||
* 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_CourierBoldOblique extends Zend_Pdf_Resource_Font_Simple_Standard
|
||||
{
|
||||
/**** 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'] =
|
||||
"\x00\x43\x00\x6f\x00\x70\x00\x79\x00\x72\x00\x69\x00\x67\x00\x68\x00"
|
||||
. "\x74\x00\x20\x00\x28\x00\x63\x00\x29\x00\x20\x00\x31\x00\x39\x00"
|
||||
. "\x38\x00\x39\x00\x2c\x00\x20\x00\x31\x00\x39\x00\x39\x00\x30\x00"
|
||||
. "\x2c\x00\x20\x00\x31\x00\x39\x00\x39\x00\x31\x00\x2c\x00\x20\x00"
|
||||
. "\x31\x00\x39\x00\x39\x00\x33\x00\x2c\x00\x20\x00\x31\x00\x39\x00"
|
||||
. "\x39\x00\x37\x00\x20\x00\x41\x00\x64\x00\x6f\x00\x62\x00\x65\x00"
|
||||
. "\x20\x00\x53\x00\x79\x00\x73\x00\x74\x00\x65\x00\x6d\x00\x73\x00"
|
||||
. "\x20\x00\x49\x00\x6e\x00\x63\x00\x6f\x00\x72\x00\x70\x00\x6f\x00"
|
||||
. "\x72\x00\x61\x00\x74\x00\x65\x00\x64\x00\x2e\x00\x20\x00\x20\x00"
|
||||
. "\x41\x00\x6c\x00\x6c\x00\x20\x00\x52\x00\x69\x00\x67\x00\x68\x00"
|
||||
. "\x74\x00\x73\x00\x20\x00\x52\x00\x65\x00\x73\x00\x65\x00\x72\x00"
|
||||
. "\x76\x00\x65\x00\x64\x00\x2e";
|
||||
$this->_fontNames[Zend_Pdf_Font::NAME_FAMILY]['en'] =
|
||||
"\x00\x43\x00\x6f\x00\x75\x00\x72\x00\x69\x00\x65\x00\x72";
|
||||
$this->_fontNames[Zend_Pdf_Font::NAME_STYLE]['en'] =
|
||||
"\x00\x42\x00\x6f\x00\x6c\x00\x64";
|
||||
$this->_fontNames[Zend_Pdf_Font::NAME_ID]['en'] =
|
||||
"\x00\x34\x00\x33\x00\x30\x00\x34\x00\x39";
|
||||
$this->_fontNames[Zend_Pdf_Font::NAME_FULL]['en'] =
|
||||
"\x00\x43\x00\x6f\x00\x75\x00\x72\x00\x69\x00\x65\x00\x72\x00\x2d\x00"
|
||||
. "\x42\x00\x6f\x00\x6c\x00\x64\x00\x4f\x00\x62\x00\x6c\x00\x69\x00"
|
||||
. "\x71\x00\x75\x00\x65\x00\x20\x00\x42\x00\x6f\x00\x6c\x00\x64";
|
||||
$this->_fontNames[Zend_Pdf_Font::NAME_VERSION]['en'] =
|
||||
"\x00\x30\x00\x30\x00\x33\x00\x2e\x00\x30\x00\x30\x00\x30";
|
||||
$this->_fontNames[Zend_Pdf_Font::NAME_POSTSCRIPT]['en'] =
|
||||
"\x00\x43\x00\x6f\x00\x75\x00\x72\x00\x69\x00\x65\x00\x72\x00\x2d\x00"
|
||||
. "\x42\x00\x6f\x00\x6c\x00\x64\x00\x4f\x00\x62\x00\x6c\x00\x69\x00"
|
||||
. "\x71\x00\x75\x00\x65";
|
||||
|
||||
$this->_isBold = true;
|
||||
$this->_isItalic = true;
|
||||
$this->_isMonospaced = true;
|
||||
|
||||
$this->_underlinePosition = -100;
|
||||
$this->_underlineThickness = 50;
|
||||
$this->_strikePosition = 225;
|
||||
$this->_strikeThickness = 50;
|
||||
|
||||
$this->_unitsPerEm = 1000;
|
||||
|
||||
$this->_ascent = 629;
|
||||
$this->_descent = -157;
|
||||
$this->_lineGap = 414;
|
||||
|
||||
/* 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 => 0x0258, 0x02 => 0x0258, 0x03 => 0x0258,
|
||||
0x04 => 0x0258, 0x05 => 0x0258, 0x06 => 0x0258, 0x07 => 0x0258,
|
||||
0x08 => 0x0258, 0x09 => 0x0258, 0x0a => 0x0258, 0x0b => 0x0258,
|
||||
0x0c => 0x0258, 0x0d => 0x0258, 0x0e => 0x0258, 0x0f => 0x0258,
|
||||
0x10 => 0x0258, 0x11 => 0x0258, 0x12 => 0x0258, 0x13 => 0x0258,
|
||||
0x14 => 0x0258, 0x15 => 0x0258, 0x16 => 0x0258, 0x17 => 0x0258,
|
||||
0x18 => 0x0258, 0x19 => 0x0258, 0x1a => 0x0258, 0x1b => 0x0258,
|
||||
0x1c => 0x0258, 0x1d => 0x0258, 0x1e => 0x0258, 0x1f => 0x0258,
|
||||
0x20 => 0x0258, 0x21 => 0x0258, 0x22 => 0x0258, 0x23 => 0x0258,
|
||||
0x24 => 0x0258, 0x25 => 0x0258, 0x26 => 0x0258, 0x27 => 0x0258,
|
||||
0x28 => 0x0258, 0x29 => 0x0258, 0x2a => 0x0258, 0x2b => 0x0258,
|
||||
0x2c => 0x0258, 0x2d => 0x0258, 0x2e => 0x0258, 0x2f => 0x0258,
|
||||
0x30 => 0x0258, 0x31 => 0x0258, 0x32 => 0x0258, 0x33 => 0x0258,
|
||||
0x34 => 0x0258, 0x35 => 0x0258, 0x36 => 0x0258, 0x37 => 0x0258,
|
||||
0x38 => 0x0258, 0x39 => 0x0258, 0x3a => 0x0258, 0x3b => 0x0258,
|
||||
0x3c => 0x0258, 0x3d => 0x0258, 0x3e => 0x0258, 0x3f => 0x0258,
|
||||
0x40 => 0x0258, 0x41 => 0x0258, 0x42 => 0x0258, 0x43 => 0x0258,
|
||||
0x44 => 0x0258, 0x45 => 0x0258, 0x46 => 0x0258, 0x47 => 0x0258,
|
||||
0x48 => 0x0258, 0x49 => 0x0258, 0x4a => 0x0258, 0x4b => 0x0258,
|
||||
0x4c => 0x0258, 0x4d => 0x0258, 0x4e => 0x0258, 0x4f => 0x0258,
|
||||
0x50 => 0x0258, 0x51 => 0x0258, 0x52 => 0x0258, 0x53 => 0x0258,
|
||||
0x54 => 0x0258, 0x55 => 0x0258, 0x56 => 0x0258, 0x57 => 0x0258,
|
||||
0x58 => 0x0258, 0x59 => 0x0258, 0x5a => 0x0258, 0x5b => 0x0258,
|
||||
0x5c => 0x0258, 0x5d => 0x0258, 0x5e => 0x0258, 0x5f => 0x0258,
|
||||
0x60 => 0x0258, 0x61 => 0x0258, 0x62 => 0x0258, 0x63 => 0x0258,
|
||||
0x64 => 0x0258, 0x65 => 0x0258, 0x66 => 0x0258, 0x67 => 0x0258,
|
||||
0x68 => 0x0258, 0x69 => 0x0258, 0x6a => 0x0258, 0x6b => 0x0258,
|
||||
0x6c => 0x0258, 0x6d => 0x0258, 0x6e => 0x0258, 0x6f => 0x0258,
|
||||
0x70 => 0x0258, 0x71 => 0x0258, 0x72 => 0x0258, 0x73 => 0x0258,
|
||||
0x74 => 0x0258, 0x75 => 0x0258, 0x76 => 0x0258, 0x77 => 0x0258,
|
||||
0x78 => 0x0258, 0x79 => 0x0258, 0x7a => 0x0258, 0x7b => 0x0258,
|
||||
0x7c => 0x0258, 0x7d => 0x0258, 0x7e => 0x0258, 0x7f => 0x0258,
|
||||
0x80 => 0x0258, 0x81 => 0x0258, 0x82 => 0x0258, 0x83 => 0x0258,
|
||||
0x84 => 0x0258, 0x85 => 0x0258, 0x86 => 0x0258, 0x87 => 0x0258,
|
||||
0x88 => 0x0258, 0x89 => 0x0258, 0x8a => 0x0258, 0x8b => 0x0258,
|
||||
0x8c => 0x0258, 0x8d => 0x0258, 0x8e => 0x0258, 0x8f => 0x0258,
|
||||
0x90 => 0x0258, 0x91 => 0x0258, 0x92 => 0x0258, 0x93 => 0x0258,
|
||||
0x94 => 0x0258, 0x95 => 0x0258, 0x96 => 0x0258, 0x97 => 0x0258,
|
||||
0x98 => 0x0258, 0x99 => 0x0258, 0x9a => 0x0258, 0x9b => 0x0258,
|
||||
0x9c => 0x0258, 0x9d => 0x0258, 0x9e => 0x0258, 0x9f => 0x0258,
|
||||
0xa0 => 0x0258, 0xa1 => 0x0258, 0xa2 => 0x0258, 0xa3 => 0x0258,
|
||||
0xa4 => 0x0258, 0xa5 => 0x0258, 0xa6 => 0x0258, 0xa7 => 0x0258,
|
||||
0xa8 => 0x0258, 0xa9 => 0x0258, 0xaa => 0x0258, 0xab => 0x0258,
|
||||
0xac => 0x0258, 0xad => 0x0258, 0xae => 0x0258, 0xaf => 0x0258,
|
||||
0xb0 => 0x0258, 0xb1 => 0x0258, 0xb2 => 0x0258, 0xb3 => 0x0258,
|
||||
0xb4 => 0x0258, 0xb5 => 0x0258, 0xb6 => 0x0258, 0xb7 => 0x0258,
|
||||
0xb8 => 0x0258, 0xb9 => 0x0258, 0xba => 0x0258, 0xbb => 0x0258,
|
||||
0xbc => 0x0258, 0xbd => 0x0258, 0xbe => 0x0258, 0xbf => 0x0258,
|
||||
0xc0 => 0x0258, 0xc1 => 0x0258, 0xc2 => 0x0258, 0xc3 => 0x0258,
|
||||
0xc4 => 0x0258, 0xc5 => 0x0258, 0xc6 => 0x0258, 0xc7 => 0x0258,
|
||||
0xc8 => 0x0258, 0xc9 => 0x0258, 0xca => 0x0258, 0xcb => 0x0258,
|
||||
0xcc => 0x0258, 0xcd => 0x0258, 0xce => 0x0258, 0xcf => 0x0258,
|
||||
0xd0 => 0x0258, 0xd1 => 0x0258, 0xd2 => 0x0258, 0xd3 => 0x0258,
|
||||
0xd4 => 0x0258, 0xd5 => 0x0258, 0xd6 => 0x0258, 0xd7 => 0x0258,
|
||||
0xd8 => 0x0258, 0xd9 => 0x0258, 0xda => 0x0258, 0xdb => 0x0258,
|
||||
0xdc => 0x0258, 0xdd => 0x0258, 0xde => 0x0258, 0xdf => 0x0258,
|
||||
0xe0 => 0x0258, 0xe1 => 0x0258, 0xe2 => 0x0258, 0xe3 => 0x0258,
|
||||
0xe4 => 0x0258, 0xe5 => 0x0258, 0xe6 => 0x0258, 0xe7 => 0x0258,
|
||||
0xe8 => 0x0258, 0xe9 => 0x0258, 0xea => 0x0258, 0xeb => 0x0258,
|
||||
0xec => 0x0258, 0xed => 0x0258, 0xee => 0x0258, 0xef => 0x0258,
|
||||
0xf0 => 0x0258, 0xf1 => 0x0258, 0xf2 => 0x0258, 0xf3 => 0x0258,
|
||||
0xf4 => 0x0258, 0xf5 => 0x0258, 0xf6 => 0x0258, 0xf7 => 0x0258,
|
||||
0xf8 => 0x0258, 0xf9 => 0x0258, 0xfa => 0x0258, 0xfb => 0x0258,
|
||||
0xfc => 0x0258, 0xfd => 0x0258, 0xfe => 0x0258, 0xff => 0x0258,
|
||||
0x0100 => 0x0258, 0x0101 => 0x0258, 0x0102 => 0x0258, 0x0103 => 0x0258,
|
||||
0x0104 => 0x0258, 0x0105 => 0x0258, 0x0106 => 0x0258, 0x0107 => 0x0258,
|
||||
0x0108 => 0x0258, 0x0109 => 0x0258, 0x010a => 0x0258, 0x010b => 0x0258,
|
||||
0x010c => 0x0258, 0x010d => 0x0258, 0x010e => 0x0258, 0x010f => 0x0258,
|
||||
0x0110 => 0x0258, 0x0111 => 0x0258, 0x0112 => 0x0258, 0x0113 => 0x0258,
|
||||
0x0114 => 0x0258, 0x0115 => 0x0258, 0x0116 => 0x0258, 0x0117 => 0x0258,
|
||||
0x0118 => 0x0258, 0x0119 => 0x0258, 0x011a => 0x0258, 0x011b => 0x0258,
|
||||
0x011c => 0x0258, 0x011d => 0x0258, 0x011e => 0x0258, 0x011f => 0x0258,
|
||||
0x0120 => 0x0258, 0x0121 => 0x0258, 0x0122 => 0x0258, 0x0123 => 0x0258,
|
||||
0x0124 => 0x0258, 0x0125 => 0x0258, 0x0126 => 0x0258, 0x0127 => 0x0258,
|
||||
0x0128 => 0x0258, 0x0129 => 0x0258, 0x012a => 0x0258, 0x012b => 0x0258,
|
||||
0x012c => 0x0258, 0x012d => 0x0258, 0x012e => 0x0258, 0x012f => 0x0258,
|
||||
0x0130 => 0x0258, 0x0131 => 0x0258, 0x0132 => 0x0258, 0x0133 => 0x0258,
|
||||
0x0134 => 0x0258, 0x0135 => 0x0258, 0x0136 => 0x0258, 0x0137 => 0x0258,
|
||||
0x0138 => 0x0258, 0x0139 => 0x0258, 0x013a => 0x0258, 0x013b => 0x0258,
|
||||
);
|
||||
|
||||
/* The cmap table is similarly synthesized.
|
||||
*/
|
||||
$cmapData = array(
|
||||
0x20 => 0x01, 0x21 => 0x02, 0x22 => 0x03, 0x23 => 0x04,
|
||||
0x24 => 0x05, 0x25 => 0x06, 0x26 => 0x07, 0x2019 => 0x08,
|
||||
0x28 => 0x09, 0x29 => 0x0a, 0x2a => 0x0b, 0x2b => 0x0c,
|
||||
0x2c => 0x0d, 0x2d => 0x0e, 0x2e => 0x0f, 0x2f => 0x10,
|
||||
0x30 => 0x11, 0x31 => 0x12, 0x32 => 0x13, 0x33 => 0x14,
|
||||
0x34 => 0x15, 0x35 => 0x16, 0x36 => 0x17, 0x37 => 0x18,
|
||||
0x38 => 0x19, 0x39 => 0x1a, 0x3a => 0x1b, 0x3b => 0x1c,
|
||||
0x3c => 0x1d, 0x3d => 0x1e, 0x3e => 0x1f, 0x3f => 0x20,
|
||||
0x40 => 0x21, 0x41 => 0x22, 0x42 => 0x23, 0x43 => 0x24,
|
||||
0x44 => 0x25, 0x45 => 0x26, 0x46 => 0x27, 0x47 => 0x28,
|
||||
0x48 => 0x29, 0x49 => 0x2a, 0x4a => 0x2b, 0x4b => 0x2c,
|
||||
0x4c => 0x2d, 0x4d => 0x2e, 0x4e => 0x2f, 0x4f => 0x30,
|
||||
0x50 => 0x31, 0x51 => 0x32, 0x52 => 0x33, 0x53 => 0x34,
|
||||
0x54 => 0x35, 0x55 => 0x36, 0x56 => 0x37, 0x57 => 0x38,
|
||||
0x58 => 0x39, 0x59 => 0x3a, 0x5a => 0x3b, 0x5b => 0x3c,
|
||||
0x5c => 0x3d, 0x5d => 0x3e, 0x5e => 0x3f, 0x5f => 0x40,
|
||||
0x2018 => 0x41, 0x61 => 0x42, 0x62 => 0x43, 0x63 => 0x44,
|
||||
0x64 => 0x45, 0x65 => 0x46, 0x66 => 0x47, 0x67 => 0x48,
|
||||
0x68 => 0x49, 0x69 => 0x4a, 0x6a => 0x4b, 0x6b => 0x4c,
|
||||
0x6c => 0x4d, 0x6d => 0x4e, 0x6e => 0x4f, 0x6f => 0x50,
|
||||
0x70 => 0x51, 0x71 => 0x52, 0x72 => 0x53, 0x73 => 0x54,
|
||||
0x74 => 0x55, 0x75 => 0x56, 0x76 => 0x57, 0x77 => 0x58,
|
||||
0x78 => 0x59, 0x79 => 0x5a, 0x7a => 0x5b, 0x7b => 0x5c,
|
||||
0x7c => 0x5d, 0x7d => 0x5e, 0x7e => 0x5f, 0xa1 => 0x60,
|
||||
0xa2 => 0x61, 0xa3 => 0x62, 0x2044 => 0x63, 0xa5 => 0x64,
|
||||
0x0192 => 0x65, 0xa7 => 0x66, 0xa4 => 0x67, 0x27 => 0x68,
|
||||
0x201c => 0x69, 0xab => 0x6a, 0x2039 => 0x6b, 0x203a => 0x6c,
|
||||
0xfb01 => 0x6d, 0xfb02 => 0x6e, 0x2013 => 0x6f, 0x2020 => 0x70,
|
||||
0x2021 => 0x71, 0xb7 => 0x72, 0xb6 => 0x73, 0x2022 => 0x74,
|
||||
0x201a => 0x75, 0x201e => 0x76, 0x201d => 0x77, 0xbb => 0x78,
|
||||
0x2026 => 0x79, 0x2030 => 0x7a, 0xbf => 0x7b, 0x60 => 0x7c,
|
||||
0xb4 => 0x7d, 0x02c6 => 0x7e, 0x02dc => 0x7f, 0xaf => 0x80,
|
||||
0x02d8 => 0x81, 0x02d9 => 0x82, 0xa8 => 0x83, 0x02da => 0x84,
|
||||
0xb8 => 0x85, 0x02dd => 0x86, 0x02db => 0x87, 0x02c7 => 0x88,
|
||||
0x2014 => 0x89, 0xc6 => 0x8a, 0xaa => 0x8b, 0x0141 => 0x8c,
|
||||
0xd8 => 0x8d, 0x0152 => 0x8e, 0xba => 0x8f, 0xe6 => 0x90,
|
||||
0x0131 => 0x91, 0x0142 => 0x92, 0xf8 => 0x93, 0x0153 => 0x94,
|
||||
0xdf => 0x95, 0xcf => 0x96, 0xe9 => 0x97, 0x0103 => 0x98,
|
||||
0x0171 => 0x99, 0x011b => 0x9a, 0x0178 => 0x9b, 0xf7 => 0x9c,
|
||||
0xdd => 0x9d, 0xc2 => 0x9e, 0xe1 => 0x9f, 0xdb => 0xa0,
|
||||
0xfd => 0xa1, 0x0219 => 0xa2, 0xea => 0xa3, 0x016e => 0xa4,
|
||||
0xdc => 0xa5, 0x0105 => 0xa6, 0xda => 0xa7, 0x0173 => 0xa8,
|
||||
0xcb => 0xa9, 0x0110 => 0xaa, 0xf6c3 => 0xab, 0xa9 => 0xac,
|
||||
0x0112 => 0xad, 0x010d => 0xae, 0xe5 => 0xaf, 0x0145 => 0xb0,
|
||||
0x013a => 0xb1, 0xe0 => 0xb2, 0x0162 => 0xb3, 0x0106 => 0xb4,
|
||||
0xe3 => 0xb5, 0x0116 => 0xb6, 0x0161 => 0xb7, 0x015f => 0xb8,
|
||||
0xed => 0xb9, 0x25ca => 0xba, 0x0158 => 0xbb, 0x0122 => 0xbc,
|
||||
0xfb => 0xbd, 0xe2 => 0xbe, 0x0100 => 0xbf, 0x0159 => 0xc0,
|
||||
0xe7 => 0xc1, 0x017b => 0xc2, 0xde => 0xc3, 0x014c => 0xc4,
|
||||
0x0154 => 0xc5, 0x015a => 0xc6, 0x010f => 0xc7, 0x016a => 0xc8,
|
||||
0x016f => 0xc9, 0xb3 => 0xca, 0xd2 => 0xcb, 0xc0 => 0xcc,
|
||||
0x0102 => 0xcd, 0xd7 => 0xce, 0xfa => 0xcf, 0x0164 => 0xd0,
|
||||
0x2202 => 0xd1, 0xff => 0xd2, 0x0143 => 0xd3, 0xee => 0xd4,
|
||||
0xca => 0xd5, 0xe4 => 0xd6, 0xeb => 0xd7, 0x0107 => 0xd8,
|
||||
0x0144 => 0xd9, 0x016b => 0xda, 0x0147 => 0xdb, 0xcd => 0xdc,
|
||||
0xb1 => 0xdd, 0xa6 => 0xde, 0xae => 0xdf, 0x011e => 0xe0,
|
||||
0x0130 => 0xe1, 0x2211 => 0xe2, 0xc8 => 0xe3, 0x0155 => 0xe4,
|
||||
0x014d => 0xe5, 0x0179 => 0xe6, 0x017d => 0xe7, 0x2265 => 0xe8,
|
||||
0xd0 => 0xe9, 0xc7 => 0xea, 0x013c => 0xeb, 0x0165 => 0xec,
|
||||
0x0119 => 0xed, 0x0172 => 0xee, 0xc1 => 0xef, 0xc4 => 0xf0,
|
||||
0xe8 => 0xf1, 0x017a => 0xf2, 0x012f => 0xf3, 0xd3 => 0xf4,
|
||||
0xf3 => 0xf5, 0x0101 => 0xf6, 0x015b => 0xf7, 0xef => 0xf8,
|
||||
0xd4 => 0xf9, 0xd9 => 0xfa, 0x2206 => 0xfb, 0xfe => 0xfc,
|
||||
0xb2 => 0xfd, 0xd6 => 0xfe, 0xb5 => 0xff, 0xec => 0x0100,
|
||||
0x0151 => 0x0101, 0x0118 => 0x0102, 0x0111 => 0x0103, 0xbe => 0x0104,
|
||||
0x015e => 0x0105, 0x013e => 0x0106, 0x0136 => 0x0107, 0x0139 => 0x0108,
|
||||
0x2122 => 0x0109, 0x0117 => 0x010a, 0xcc => 0x010b, 0x012a => 0x010c,
|
||||
0x013d => 0x010d, 0xbd => 0x010e, 0x2264 => 0x010f, 0xf4 => 0x0110,
|
||||
0xf1 => 0x0111, 0x0170 => 0x0112, 0xc9 => 0x0113, 0x0113 => 0x0114,
|
||||
0x011f => 0x0115, 0xbc => 0x0116, 0x0160 => 0x0117, 0x0218 => 0x0118,
|
||||
0x0150 => 0x0119, 0xb0 => 0x011a, 0xf2 => 0x011b, 0x010c => 0x011c,
|
||||
0xf9 => 0x011d, 0x221a => 0x011e, 0x010e => 0x011f, 0x0157 => 0x0120,
|
||||
0xd1 => 0x0121, 0xf5 => 0x0122, 0x0156 => 0x0123, 0x013b => 0x0124,
|
||||
0xc3 => 0x0125, 0x0104 => 0x0126, 0xc5 => 0x0127, 0xd5 => 0x0128,
|
||||
0x017c => 0x0129, 0x011a => 0x012a, 0x012e => 0x012b, 0x0137 => 0x012c,
|
||||
0x2212 => 0x012d, 0xce => 0x012e, 0x0148 => 0x012f, 0x0163 => 0x0130,
|
||||
0xac => 0x0131, 0xf6 => 0x0132, 0xfc => 0x0133, 0x2260 => 0x0134,
|
||||
0x0123 => 0x0135, 0xf0 => 0x0136, 0x017e => 0x0137, 0x0146 => 0x0138,
|
||||
0xb9 => 0x0139, 0x012b => 0x013a, 0x20ac => 0x013b);
|
||||
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('Courier-BoldOblique');
|
||||
}
|
||||
}
|
|
@ -0,0 +1,297 @@
|
|||
<?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: CourierOblique.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 Courier-Oblique.
|
||||
*
|
||||
* 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_CourierOblique extends Zend_Pdf_Resource_Font_Simple_Standard
|
||||
{
|
||||
/**** 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'] =
|
||||
"\x00\x43\x00\x6f\x00\x70\x00\x79\x00\x72\x00\x69\x00\x67\x00\x68\x00"
|
||||
. "\x74\x00\x20\x00\x28\x00\x63\x00\x29\x00\x20\x00\x31\x00\x39\x00"
|
||||
. "\x38\x00\x39\x00\x2c\x00\x20\x00\x31\x00\x39\x00\x39\x00\x30\x00"
|
||||
. "\x2c\x00\x20\x00\x31\x00\x39\x00\x39\x00\x31\x00\x2c\x00\x20\x00"
|
||||
. "\x31\x00\x39\x00\x39\x00\x32\x00\x2c\x00\x20\x00\x31\x00\x39\x00"
|
||||
. "\x39\x00\x33\x00\x2c\x00\x20\x00\x31\x00\x39\x00\x39\x00\x37\x00"
|
||||
. "\x20\x00\x41\x00\x64\x00\x6f\x00\x62\x00\x65\x00\x20\x00\x53\x00"
|
||||
. "\x79\x00\x73\x00\x74\x00\x65\x00\x6d\x00\x73\x00\x20\x00\x49\x00"
|
||||
. "\x6e\x00\x63\x00\x6f\x00\x72\x00\x70\x00\x6f\x00\x72\x00\x61\x00"
|
||||
. "\x74\x00\x65\x00\x64\x00\x2e\x00\x20\x00\x20\x00\x41\x00\x6c\x00"
|
||||
. "\x6c\x00\x20\x00\x52\x00\x69\x00\x67\x00\x68\x00\x74\x00\x73\x00"
|
||||
. "\x20\x00\x52\x00\x65\x00\x73\x00\x65\x00\x72\x00\x76\x00\x65\x00"
|
||||
. "\x64\x00\x2e";
|
||||
$this->_fontNames[Zend_Pdf_Font::NAME_FAMILY]['en'] =
|
||||
"\x00\x43\x00\x6f\x00\x75\x00\x72\x00\x69\x00\x65\x00\x72";
|
||||
$this->_fontNames[Zend_Pdf_Font::NAME_STYLE]['en'] =
|
||||
"\x00\x4d\x00\x65\x00\x64\x00\x69\x00\x75\x00\x6d";
|
||||
$this->_fontNames[Zend_Pdf_Font::NAME_ID]['en'] =
|
||||
"\x00\x34\x00\x33\x00\x30\x00\x35\x00\x31";
|
||||
$this->_fontNames[Zend_Pdf_Font::NAME_FULL]['en'] =
|
||||
"\x00\x43\x00\x6f\x00\x75\x00\x72\x00\x69\x00\x65\x00\x72\x00\x2d\x00"
|
||||
. "\x4f\x00\x62\x00\x6c\x00\x69\x00\x71\x00\x75\x00\x65\x00\x20\x00"
|
||||
. "\x4d\x00\x65\x00\x64\x00\x69\x00\x75\x00\x6d";
|
||||
$this->_fontNames[Zend_Pdf_Font::NAME_VERSION]['en'] =
|
||||
"\x00\x30\x00\x30\x00\x33\x00\x2e\x00\x30\x00\x30\x00\x30";
|
||||
$this->_fontNames[Zend_Pdf_Font::NAME_POSTSCRIPT]['en'] =
|
||||
"\x00\x43\x00\x6f\x00\x75\x00\x72\x00\x69\x00\x65\x00\x72\x00\x2d\x00"
|
||||
. "\x4f\x00\x62\x00\x6c\x00\x69\x00\x71\x00\x75\x00\x65";
|
||||
|
||||
$this->_isBold = false;
|
||||
$this->_isItalic = true;
|
||||
$this->_isMonospaced = true;
|
||||
|
||||
$this->_underlinePosition = -100;
|
||||
$this->_underlineThickness = 50;
|
||||
$this->_strikePosition = 225;
|
||||
$this->_strikeThickness = 50;
|
||||
|
||||
$this->_unitsPerEm = 1000;
|
||||
|
||||
$this->_ascent = 629;
|
||||
$this->_descent = -157;
|
||||
$this->_lineGap = 414;
|
||||
|
||||
/* 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 => 0x0258, 0x02 => 0x0258, 0x03 => 0x0258,
|
||||
0x04 => 0x0258, 0x05 => 0x0258, 0x06 => 0x0258, 0x07 => 0x0258,
|
||||
0x08 => 0x0258, 0x09 => 0x0258, 0x0a => 0x0258, 0x0b => 0x0258,
|
||||
0x0c => 0x0258, 0x0d => 0x0258, 0x0e => 0x0258, 0x0f => 0x0258,
|
||||
0x10 => 0x0258, 0x11 => 0x0258, 0x12 => 0x0258, 0x13 => 0x0258,
|
||||
0x14 => 0x0258, 0x15 => 0x0258, 0x16 => 0x0258, 0x17 => 0x0258,
|
||||
0x18 => 0x0258, 0x19 => 0x0258, 0x1a => 0x0258, 0x1b => 0x0258,
|
||||
0x1c => 0x0258, 0x1d => 0x0258, 0x1e => 0x0258, 0x1f => 0x0258,
|
||||
0x20 => 0x0258, 0x21 => 0x0258, 0x22 => 0x0258, 0x23 => 0x0258,
|
||||
0x24 => 0x0258, 0x25 => 0x0258, 0x26 => 0x0258, 0x27 => 0x0258,
|
||||
0x28 => 0x0258, 0x29 => 0x0258, 0x2a => 0x0258, 0x2b => 0x0258,
|
||||
0x2c => 0x0258, 0x2d => 0x0258, 0x2e => 0x0258, 0x2f => 0x0258,
|
||||
0x30 => 0x0258, 0x31 => 0x0258, 0x32 => 0x0258, 0x33 => 0x0258,
|
||||
0x34 => 0x0258, 0x35 => 0x0258, 0x36 => 0x0258, 0x37 => 0x0258,
|
||||
0x38 => 0x0258, 0x39 => 0x0258, 0x3a => 0x0258, 0x3b => 0x0258,
|
||||
0x3c => 0x0258, 0x3d => 0x0258, 0x3e => 0x0258, 0x3f => 0x0258,
|
||||
0x40 => 0x0258, 0x41 => 0x0258, 0x42 => 0x0258, 0x43 => 0x0258,
|
||||
0x44 => 0x0258, 0x45 => 0x0258, 0x46 => 0x0258, 0x47 => 0x0258,
|
||||
0x48 => 0x0258, 0x49 => 0x0258, 0x4a => 0x0258, 0x4b => 0x0258,
|
||||
0x4c => 0x0258, 0x4d => 0x0258, 0x4e => 0x0258, 0x4f => 0x0258,
|
||||
0x50 => 0x0258, 0x51 => 0x0258, 0x52 => 0x0258, 0x53 => 0x0258,
|
||||
0x54 => 0x0258, 0x55 => 0x0258, 0x56 => 0x0258, 0x57 => 0x0258,
|
||||
0x58 => 0x0258, 0x59 => 0x0258, 0x5a => 0x0258, 0x5b => 0x0258,
|
||||
0x5c => 0x0258, 0x5d => 0x0258, 0x5e => 0x0258, 0x5f => 0x0258,
|
||||
0x60 => 0x0258, 0x61 => 0x0258, 0x62 => 0x0258, 0x63 => 0x0258,
|
||||
0x64 => 0x0258, 0x65 => 0x0258, 0x66 => 0x0258, 0x67 => 0x0258,
|
||||
0x68 => 0x0258, 0x69 => 0x0258, 0x6a => 0x0258, 0x6b => 0x0258,
|
||||
0x6c => 0x0258, 0x6d => 0x0258, 0x6e => 0x0258, 0x6f => 0x0258,
|
||||
0x70 => 0x0258, 0x71 => 0x0258, 0x72 => 0x0258, 0x73 => 0x0258,
|
||||
0x74 => 0x0258, 0x75 => 0x0258, 0x76 => 0x0258, 0x77 => 0x0258,
|
||||
0x78 => 0x0258, 0x79 => 0x0258, 0x7a => 0x0258, 0x7b => 0x0258,
|
||||
0x7c => 0x0258, 0x7d => 0x0258, 0x7e => 0x0258, 0x7f => 0x0258,
|
||||
0x80 => 0x0258, 0x81 => 0x0258, 0x82 => 0x0258, 0x83 => 0x0258,
|
||||
0x84 => 0x0258, 0x85 => 0x0258, 0x86 => 0x0258, 0x87 => 0x0258,
|
||||
0x88 => 0x0258, 0x89 => 0x0258, 0x8a => 0x0258, 0x8b => 0x0258,
|
||||
0x8c => 0x0258, 0x8d => 0x0258, 0x8e => 0x0258, 0x8f => 0x0258,
|
||||
0x90 => 0x0258, 0x91 => 0x0258, 0x92 => 0x0258, 0x93 => 0x0258,
|
||||
0x94 => 0x0258, 0x95 => 0x0258, 0x96 => 0x0258, 0x97 => 0x0258,
|
||||
0x98 => 0x0258, 0x99 => 0x0258, 0x9a => 0x0258, 0x9b => 0x0258,
|
||||
0x9c => 0x0258, 0x9d => 0x0258, 0x9e => 0x0258, 0x9f => 0x0258,
|
||||
0xa0 => 0x0258, 0xa1 => 0x0258, 0xa2 => 0x0258, 0xa3 => 0x0258,
|
||||
0xa4 => 0x0258, 0xa5 => 0x0258, 0xa6 => 0x0258, 0xa7 => 0x0258,
|
||||
0xa8 => 0x0258, 0xa9 => 0x0258, 0xaa => 0x0258, 0xab => 0x0258,
|
||||
0xac => 0x0258, 0xad => 0x0258, 0xae => 0x0258, 0xaf => 0x0258,
|
||||
0xb0 => 0x0258, 0xb1 => 0x0258, 0xb2 => 0x0258, 0xb3 => 0x0258,
|
||||
0xb4 => 0x0258, 0xb5 => 0x0258, 0xb6 => 0x0258, 0xb7 => 0x0258,
|
||||
0xb8 => 0x0258, 0xb9 => 0x0258, 0xba => 0x0258, 0xbb => 0x0258,
|
||||
0xbc => 0x0258, 0xbd => 0x0258, 0xbe => 0x0258, 0xbf => 0x0258,
|
||||
0xc0 => 0x0258, 0xc1 => 0x0258, 0xc2 => 0x0258, 0xc3 => 0x0258,
|
||||
0xc4 => 0x0258, 0xc5 => 0x0258, 0xc6 => 0x0258, 0xc7 => 0x0258,
|
||||
0xc8 => 0x0258, 0xc9 => 0x0258, 0xca => 0x0258, 0xcb => 0x0258,
|
||||
0xcc => 0x0258, 0xcd => 0x0258, 0xce => 0x0258, 0xcf => 0x0258,
|
||||
0xd0 => 0x0258, 0xd1 => 0x0258, 0xd2 => 0x0258, 0xd3 => 0x0258,
|
||||
0xd4 => 0x0258, 0xd5 => 0x0258, 0xd6 => 0x0258, 0xd7 => 0x0258,
|
||||
0xd8 => 0x0258, 0xd9 => 0x0258, 0xda => 0x0258, 0xdb => 0x0258,
|
||||
0xdc => 0x0258, 0xdd => 0x0258, 0xde => 0x0258, 0xdf => 0x0258,
|
||||
0xe0 => 0x0258, 0xe1 => 0x0258, 0xe2 => 0x0258, 0xe3 => 0x0258,
|
||||
0xe4 => 0x0258, 0xe5 => 0x0258, 0xe6 => 0x0258, 0xe7 => 0x0258,
|
||||
0xe8 => 0x0258, 0xe9 => 0x0258, 0xea => 0x0258, 0xeb => 0x0258,
|
||||
0xec => 0x0258, 0xed => 0x0258, 0xee => 0x0258, 0xef => 0x0258,
|
||||
0xf0 => 0x0258, 0xf1 => 0x0258, 0xf2 => 0x0258, 0xf3 => 0x0258,
|
||||
0xf4 => 0x0258, 0xf5 => 0x0258, 0xf6 => 0x0258, 0xf7 => 0x0258,
|
||||
0xf8 => 0x0258, 0xf9 => 0x0258, 0xfa => 0x0258, 0xfb => 0x0258,
|
||||
0xfc => 0x0258, 0xfd => 0x0258, 0xfe => 0x0258, 0xff => 0x0258,
|
||||
0x0100 => 0x0258, 0x0101 => 0x0258, 0x0102 => 0x0258, 0x0103 => 0x0258,
|
||||
0x0104 => 0x0258, 0x0105 => 0x0258, 0x0106 => 0x0258, 0x0107 => 0x0258,
|
||||
0x0108 => 0x0258, 0x0109 => 0x0258, 0x010a => 0x0258, 0x010b => 0x0258,
|
||||
0x010c => 0x0258, 0x010d => 0x0258, 0x010e => 0x0258, 0x010f => 0x0258,
|
||||
0x0110 => 0x0258, 0x0111 => 0x0258, 0x0112 => 0x0258, 0x0113 => 0x0258,
|
||||
0x0114 => 0x0258, 0x0115 => 0x0258, 0x0116 => 0x0258, 0x0117 => 0x0258,
|
||||
0x0118 => 0x0258, 0x0119 => 0x0258, 0x011a => 0x0258, 0x011b => 0x0258,
|
||||
0x011c => 0x0258, 0x011d => 0x0258, 0x011e => 0x0258, 0x011f => 0x0258,
|
||||
0x0120 => 0x0258, 0x0121 => 0x0258, 0x0122 => 0x0258, 0x0123 => 0x0258,
|
||||
0x0124 => 0x0258, 0x0125 => 0x0258, 0x0126 => 0x0258, 0x0127 => 0x0258,
|
||||
0x0128 => 0x0258, 0x0129 => 0x0258, 0x012a => 0x0258, 0x012b => 0x0258,
|
||||
0x012c => 0x0258, 0x012d => 0x0258, 0x012e => 0x0258, 0x012f => 0x0258,
|
||||
0x0130 => 0x0258, 0x0131 => 0x0258, 0x0132 => 0x0258, 0x0133 => 0x0258,
|
||||
0x0134 => 0x0258, 0x0135 => 0x0258, 0x0136 => 0x0258, 0x0137 => 0x0258,
|
||||
0x0138 => 0x0258, 0x0139 => 0x0258, 0x013a => 0x0258, 0x013b => 0x0258,
|
||||
);
|
||||
|
||||
/* The cmap table is similarly synthesized.
|
||||
*/
|
||||
$cmapData = array(
|
||||
0x20 => 0x01, 0x21 => 0x02, 0x22 => 0x03, 0x23 => 0x04,
|
||||
0x24 => 0x05, 0x25 => 0x06, 0x26 => 0x07, 0x2019 => 0x08,
|
||||
0x28 => 0x09, 0x29 => 0x0a, 0x2a => 0x0b, 0x2b => 0x0c,
|
||||
0x2c => 0x0d, 0x2d => 0x0e, 0x2e => 0x0f, 0x2f => 0x10,
|
||||
0x30 => 0x11, 0x31 => 0x12, 0x32 => 0x13, 0x33 => 0x14,
|
||||
0x34 => 0x15, 0x35 => 0x16, 0x36 => 0x17, 0x37 => 0x18,
|
||||
0x38 => 0x19, 0x39 => 0x1a, 0x3a => 0x1b, 0x3b => 0x1c,
|
||||
0x3c => 0x1d, 0x3d => 0x1e, 0x3e => 0x1f, 0x3f => 0x20,
|
||||
0x40 => 0x21, 0x41 => 0x22, 0x42 => 0x23, 0x43 => 0x24,
|
||||
0x44 => 0x25, 0x45 => 0x26, 0x46 => 0x27, 0x47 => 0x28,
|
||||
0x48 => 0x29, 0x49 => 0x2a, 0x4a => 0x2b, 0x4b => 0x2c,
|
||||
0x4c => 0x2d, 0x4d => 0x2e, 0x4e => 0x2f, 0x4f => 0x30,
|
||||
0x50 => 0x31, 0x51 => 0x32, 0x52 => 0x33, 0x53 => 0x34,
|
||||
0x54 => 0x35, 0x55 => 0x36, 0x56 => 0x37, 0x57 => 0x38,
|
||||
0x58 => 0x39, 0x59 => 0x3a, 0x5a => 0x3b, 0x5b => 0x3c,
|
||||
0x5c => 0x3d, 0x5d => 0x3e, 0x5e => 0x3f, 0x5f => 0x40,
|
||||
0x2018 => 0x41, 0x61 => 0x42, 0x62 => 0x43, 0x63 => 0x44,
|
||||
0x64 => 0x45, 0x65 => 0x46, 0x66 => 0x47, 0x67 => 0x48,
|
||||
0x68 => 0x49, 0x69 => 0x4a, 0x6a => 0x4b, 0x6b => 0x4c,
|
||||
0x6c => 0x4d, 0x6d => 0x4e, 0x6e => 0x4f, 0x6f => 0x50,
|
||||
0x70 => 0x51, 0x71 => 0x52, 0x72 => 0x53, 0x73 => 0x54,
|
||||
0x74 => 0x55, 0x75 => 0x56, 0x76 => 0x57, 0x77 => 0x58,
|
||||
0x78 => 0x59, 0x79 => 0x5a, 0x7a => 0x5b, 0x7b => 0x5c,
|
||||
0x7c => 0x5d, 0x7d => 0x5e, 0x7e => 0x5f, 0xa1 => 0x60,
|
||||
0xa2 => 0x61, 0xa3 => 0x62, 0x2044 => 0x63, 0xa5 => 0x64,
|
||||
0x0192 => 0x65, 0xa7 => 0x66, 0xa4 => 0x67, 0x27 => 0x68,
|
||||
0x201c => 0x69, 0xab => 0x6a, 0x2039 => 0x6b, 0x203a => 0x6c,
|
||||
0xfb01 => 0x6d, 0xfb02 => 0x6e, 0x2013 => 0x6f, 0x2020 => 0x70,
|
||||
0x2021 => 0x71, 0xb7 => 0x72, 0xb6 => 0x73, 0x2022 => 0x74,
|
||||
0x201a => 0x75, 0x201e => 0x76, 0x201d => 0x77, 0xbb => 0x78,
|
||||
0x2026 => 0x79, 0x2030 => 0x7a, 0xbf => 0x7b, 0x60 => 0x7c,
|
||||
0xb4 => 0x7d, 0x02c6 => 0x7e, 0x02dc => 0x7f, 0xaf => 0x80,
|
||||
0x02d8 => 0x81, 0x02d9 => 0x82, 0xa8 => 0x83, 0x02da => 0x84,
|
||||
0xb8 => 0x85, 0x02dd => 0x86, 0x02db => 0x87, 0x02c7 => 0x88,
|
||||
0x2014 => 0x89, 0xc6 => 0x8a, 0xaa => 0x8b, 0x0141 => 0x8c,
|
||||
0xd8 => 0x8d, 0x0152 => 0x8e, 0xba => 0x8f, 0xe6 => 0x90,
|
||||
0x0131 => 0x91, 0x0142 => 0x92, 0xf8 => 0x93, 0x0153 => 0x94,
|
||||
0xdf => 0x95, 0xcf => 0x96, 0xe9 => 0x97, 0x0103 => 0x98,
|
||||
0x0171 => 0x99, 0x011b => 0x9a, 0x0178 => 0x9b, 0xf7 => 0x9c,
|
||||
0xdd => 0x9d, 0xc2 => 0x9e, 0xe1 => 0x9f, 0xdb => 0xa0,
|
||||
0xfd => 0xa1, 0x0219 => 0xa2, 0xea => 0xa3, 0x016e => 0xa4,
|
||||
0xdc => 0xa5, 0x0105 => 0xa6, 0xda => 0xa7, 0x0173 => 0xa8,
|
||||
0xcb => 0xa9, 0x0110 => 0xaa, 0xf6c3 => 0xab, 0xa9 => 0xac,
|
||||
0x0112 => 0xad, 0x010d => 0xae, 0xe5 => 0xaf, 0x0145 => 0xb0,
|
||||
0x013a => 0xb1, 0xe0 => 0xb2, 0x0162 => 0xb3, 0x0106 => 0xb4,
|
||||
0xe3 => 0xb5, 0x0116 => 0xb6, 0x0161 => 0xb7, 0x015f => 0xb8,
|
||||
0xed => 0xb9, 0x25ca => 0xba, 0x0158 => 0xbb, 0x0122 => 0xbc,
|
||||
0xfb => 0xbd, 0xe2 => 0xbe, 0x0100 => 0xbf, 0x0159 => 0xc0,
|
||||
0xe7 => 0xc1, 0x017b => 0xc2, 0xde => 0xc3, 0x014c => 0xc4,
|
||||
0x0154 => 0xc5, 0x015a => 0xc6, 0x010f => 0xc7, 0x016a => 0xc8,
|
||||
0x016f => 0xc9, 0xb3 => 0xca, 0xd2 => 0xcb, 0xc0 => 0xcc,
|
||||
0x0102 => 0xcd, 0xd7 => 0xce, 0xfa => 0xcf, 0x0164 => 0xd0,
|
||||
0x2202 => 0xd1, 0xff => 0xd2, 0x0143 => 0xd3, 0xee => 0xd4,
|
||||
0xca => 0xd5, 0xe4 => 0xd6, 0xeb => 0xd7, 0x0107 => 0xd8,
|
||||
0x0144 => 0xd9, 0x016b => 0xda, 0x0147 => 0xdb, 0xcd => 0xdc,
|
||||
0xb1 => 0xdd, 0xa6 => 0xde, 0xae => 0xdf, 0x011e => 0xe0,
|
||||
0x0130 => 0xe1, 0x2211 => 0xe2, 0xc8 => 0xe3, 0x0155 => 0xe4,
|
||||
0x014d => 0xe5, 0x0179 => 0xe6, 0x017d => 0xe7, 0x2265 => 0xe8,
|
||||
0xd0 => 0xe9, 0xc7 => 0xea, 0x013c => 0xeb, 0x0165 => 0xec,
|
||||
0x0119 => 0xed, 0x0172 => 0xee, 0xc1 => 0xef, 0xc4 => 0xf0,
|
||||
0xe8 => 0xf1, 0x017a => 0xf2, 0x012f => 0xf3, 0xd3 => 0xf4,
|
||||
0xf3 => 0xf5, 0x0101 => 0xf6, 0x015b => 0xf7, 0xef => 0xf8,
|
||||
0xd4 => 0xf9, 0xd9 => 0xfa, 0x2206 => 0xfb, 0xfe => 0xfc,
|
||||
0xb2 => 0xfd, 0xd6 => 0xfe, 0xb5 => 0xff, 0xec => 0x0100,
|
||||
0x0151 => 0x0101, 0x0118 => 0x0102, 0x0111 => 0x0103, 0xbe => 0x0104,
|
||||
0x015e => 0x0105, 0x013e => 0x0106, 0x0136 => 0x0107, 0x0139 => 0x0108,
|
||||
0x2122 => 0x0109, 0x0117 => 0x010a, 0xcc => 0x010b, 0x012a => 0x010c,
|
||||
0x013d => 0x010d, 0xbd => 0x010e, 0x2264 => 0x010f, 0xf4 => 0x0110,
|
||||
0xf1 => 0x0111, 0x0170 => 0x0112, 0xc9 => 0x0113, 0x0113 => 0x0114,
|
||||
0x011f => 0x0115, 0xbc => 0x0116, 0x0160 => 0x0117, 0x0218 => 0x0118,
|
||||
0x0150 => 0x0119, 0xb0 => 0x011a, 0xf2 => 0x011b, 0x010c => 0x011c,
|
||||
0xf9 => 0x011d, 0x221a => 0x011e, 0x010e => 0x011f, 0x0157 => 0x0120,
|
||||
0xd1 => 0x0121, 0xf5 => 0x0122, 0x0156 => 0x0123, 0x013b => 0x0124,
|
||||
0xc3 => 0x0125, 0x0104 => 0x0126, 0xc5 => 0x0127, 0xd5 => 0x0128,
|
||||
0x017c => 0x0129, 0x011a => 0x012a, 0x012e => 0x012b, 0x0137 => 0x012c,
|
||||
0x2212 => 0x012d, 0xce => 0x012e, 0x0148 => 0x012f, 0x0163 => 0x0130,
|
||||
0xac => 0x0131, 0xf6 => 0x0132, 0xfc => 0x0133, 0x2260 => 0x0134,
|
||||
0x0123 => 0x0135, 0xf0 => 0x0136, 0x017e => 0x0137, 0x0146 => 0x0138,
|
||||
0xb9 => 0x0139, 0x012b => 0x013a, 0x20ac => 0x013b);
|
||||
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('Courier-Oblique');
|
||||
}
|
||||
}
|
|
@ -0,0 +1,305 @@
|
|||
<?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: Helvetica.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 Helvetica.
|
||||
*
|
||||
* 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_Helvetica extends Zend_Pdf_Resource_Font_Simple_Standard
|
||||
{
|
||||
/**** 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'] =
|
||||
"\x00\x43\x00\x6f\x00\x70\x00\x79\x00\x72\x00\x69\x00\x67\x00\x68\x00"
|
||||
. "\x74\x00\x20\x00\x28\x00\x63\x00\x29\x00\x20\x00\x31\x00\x39\x00"
|
||||
. "\x38\x00\x35\x00\x2c\x00\x20\x00\x31\x00\x39\x00\x38\x00\x37\x00"
|
||||
. "\x2c\x00\x20\x00\x31\x00\x39\x00\x38\x00\x39\x00\x2c\x00\x20\x00"
|
||||
. "\x31\x00\x39\x00\x39\x00\x30\x00\x2c\x00\x20\x00\x31\x00\x39\x00"
|
||||
. "\x39\x00\x37\x00\x20\x00\x41\x00\x64\x00\x6f\x00\x62\x00\x65\x00"
|
||||
. "\x20\x00\x53\x00\x79\x00\x73\x00\x74\x00\x65\x00\x6d\x00\x73\x00"
|
||||
. "\x20\x00\x49\x00\x6e\x00\x63\x00\x6f\x00\x72\x00\x70\x00\x6f\x00"
|
||||
. "\x72\x00\x61\x00\x74\x00\x65\x00\x64\x00\x2e\x00\x20\x00\x20\x00"
|
||||
. "\x41\x00\x6c\x00\x6c\x00\x20\x00\x52\x00\x69\x00\x67\x00\x68\x00"
|
||||
. "\x74\x00\x73\x00\x20\x00\x52\x00\x65\x00\x73\x00\x65\x00\x72\x00"
|
||||
. "\x76\x00\x65\x00\x64\x00\x2e\x00\x48\x00\x65\x00\x6c\x00\x76\x00"
|
||||
. "\x65\x00\x74\x00\x69\x00\x63\x00\x61\x00\x20\x00\x69\x00\x73\x00"
|
||||
. "\x20\x00\x61\x00\x20\x00\x74\x00\x72\x00\x61\x00\x64\x00\x65\x00"
|
||||
. "\x6d\x00\x61\x00\x72\x00\x6b\x00\x20\x00\x6f\x00\x66\x00\x20\x00"
|
||||
. "\x4c\x00\x69\x00\x6e\x00\x6f\x00\x74\x00\x79\x00\x70\x00\x65\x00"
|
||||
. "\x2d\x00\x48\x00\x65\x00\x6c\x00\x6c\x00\x20\x00\x41\x00\x47\x00"
|
||||
. "\x20\x00\x61\x00\x6e\x00\x64\x00\x2f\x00\x6f\x00\x72\x00\x20\x00"
|
||||
. "\x69\x00\x74\x00\x73\x00\x20\x00\x73\x00\x75\x00\x62\x00\x73\x00"
|
||||
. "\x69\x00\x64\x00\x69\x00\x61\x00\x72\x00\x69\x00\x65\x00\x73\x00"
|
||||
. "\x2e";
|
||||
$this->_fontNames[Zend_Pdf_Font::NAME_FAMILY]['en'] =
|
||||
"\x00\x48\x00\x65\x00\x6c\x00\x76\x00\x65\x00\x74\x00\x69\x00\x63\x00"
|
||||
. "\x61";
|
||||
$this->_fontNames[Zend_Pdf_Font::NAME_STYLE]['en'] =
|
||||
"\x00\x4d\x00\x65\x00\x64\x00\x69\x00\x75\x00\x6d";
|
||||
$this->_fontNames[Zend_Pdf_Font::NAME_ID]['en'] =
|
||||
"\x00\x34\x00\x33\x00\x30\x00\x35\x00\x34";
|
||||
$this->_fontNames[Zend_Pdf_Font::NAME_FULL]['en'] =
|
||||
"\x00\x48\x00\x65\x00\x6c\x00\x76\x00\x65\x00\x74\x00\x69\x00\x63\x00"
|
||||
. "\x61\x00\x20\x00\x4d\x00\x65\x00\x64\x00\x69\x00\x75\x00\x6d";
|
||||
$this->_fontNames[Zend_Pdf_Font::NAME_VERSION]['en'] =
|
||||
"\x00\x30\x00\x30\x00\x32\x00\x2e\x00\x30\x00\x30\x00\x30";
|
||||
$this->_fontNames[Zend_Pdf_Font::NAME_POSTSCRIPT]['en'] =
|
||||
"\x00\x48\x00\x65\x00\x6c\x00\x76\x00\x65\x00\x74\x00\x69\x00\x63\x00"
|
||||
. "\x61";
|
||||
|
||||
$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 = 718;
|
||||
$this->_descent = -207;
|
||||
$this->_lineGap = 275;
|
||||
|
||||
/* 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 => 0x0116, 0x03 => 0x0163,
|
||||
0x04 => 0x022c, 0x05 => 0x022c, 0x06 => 0x0379, 0x07 => 0x029b,
|
||||
0x08 => 0xde, 0x09 => 0x014d, 0x0a => 0x014d, 0x0b => 0x0185,
|
||||
0x0c => 0x0248, 0x0d => 0x0116, 0x0e => 0x014d, 0x0f => 0x0116,
|
||||
0x10 => 0x0116, 0x11 => 0x022c, 0x12 => 0x022c, 0x13 => 0x022c,
|
||||
0x14 => 0x022c, 0x15 => 0x022c, 0x16 => 0x022c, 0x17 => 0x022c,
|
||||
0x18 => 0x022c, 0x19 => 0x022c, 0x1a => 0x022c, 0x1b => 0x0116,
|
||||
0x1c => 0x0116, 0x1d => 0x0248, 0x1e => 0x0248, 0x1f => 0x0248,
|
||||
0x20 => 0x022c, 0x21 => 0x03f7, 0x22 => 0x029b, 0x23 => 0x029b,
|
||||
0x24 => 0x02d2, 0x25 => 0x02d2, 0x26 => 0x029b, 0x27 => 0x0263,
|
||||
0x28 => 0x030a, 0x29 => 0x02d2, 0x2a => 0x0116, 0x2b => 0x01f4,
|
||||
0x2c => 0x029b, 0x2d => 0x022c, 0x2e => 0x0341, 0x2f => 0x02d2,
|
||||
0x30 => 0x030a, 0x31 => 0x029b, 0x32 => 0x030a, 0x33 => 0x02d2,
|
||||
0x34 => 0x029b, 0x35 => 0x0263, 0x36 => 0x02d2, 0x37 => 0x029b,
|
||||
0x38 => 0x03b0, 0x39 => 0x029b, 0x3a => 0x029b, 0x3b => 0x0263,
|
||||
0x3c => 0x0116, 0x3d => 0x0116, 0x3e => 0x0116, 0x3f => 0x01d5,
|
||||
0x40 => 0x022c, 0x41 => 0xde, 0x42 => 0x022c, 0x43 => 0x022c,
|
||||
0x44 => 0x01f4, 0x45 => 0x022c, 0x46 => 0x022c, 0x47 => 0x0116,
|
||||
0x48 => 0x022c, 0x49 => 0x022c, 0x4a => 0xde, 0x4b => 0xde,
|
||||
0x4c => 0x01f4, 0x4d => 0xde, 0x4e => 0x0341, 0x4f => 0x022c,
|
||||
0x50 => 0x022c, 0x51 => 0x022c, 0x52 => 0x022c, 0x53 => 0x014d,
|
||||
0x54 => 0x01f4, 0x55 => 0x0116, 0x56 => 0x022c, 0x57 => 0x01f4,
|
||||
0x58 => 0x02d2, 0x59 => 0x01f4, 0x5a => 0x01f4, 0x5b => 0x01f4,
|
||||
0x5c => 0x014e, 0x5d => 0x0104, 0x5e => 0x014e, 0x5f => 0x0248,
|
||||
0x60 => 0x014d, 0x61 => 0x022c, 0x62 => 0x022c, 0x63 => 0xa7,
|
||||
0x64 => 0x022c, 0x65 => 0x022c, 0x66 => 0x022c, 0x67 => 0x022c,
|
||||
0x68 => 0xbf, 0x69 => 0x014d, 0x6a => 0x022c, 0x6b => 0x014d,
|
||||
0x6c => 0x014d, 0x6d => 0x01f4, 0x6e => 0x01f4, 0x6f => 0x022c,
|
||||
0x70 => 0x022c, 0x71 => 0x022c, 0x72 => 0x0116, 0x73 => 0x0219,
|
||||
0x74 => 0x015e, 0x75 => 0xde, 0x76 => 0x014d, 0x77 => 0x014d,
|
||||
0x78 => 0x022c, 0x79 => 0x03e8, 0x7a => 0x03e8, 0x7b => 0x0263,
|
||||
0x7c => 0x014d, 0x7d => 0x014d, 0x7e => 0x014d, 0x7f => 0x014d,
|
||||
0x80 => 0x014d, 0x81 => 0x014d, 0x82 => 0x014d, 0x83 => 0x014d,
|
||||
0x84 => 0x014d, 0x85 => 0x014d, 0x86 => 0x014d, 0x87 => 0x014d,
|
||||
0x88 => 0x014d, 0x89 => 0x03e8, 0x8a => 0x03e8, 0x8b => 0x0172,
|
||||
0x8c => 0x022c, 0x8d => 0x030a, 0x8e => 0x03e8, 0x8f => 0x016d,
|
||||
0x90 => 0x0379, 0x91 => 0x0116, 0x92 => 0xde, 0x93 => 0x0263,
|
||||
0x94 => 0x03b0, 0x95 => 0x0263, 0x96 => 0x0116, 0x97 => 0x022c,
|
||||
0x98 => 0x022c, 0x99 => 0x022c, 0x9a => 0x022c, 0x9b => 0x029b,
|
||||
0x9c => 0x0248, 0x9d => 0x029b, 0x9e => 0x029b, 0x9f => 0x022c,
|
||||
0xa0 => 0x02d2, 0xa1 => 0x01f4, 0xa2 => 0x01f4, 0xa3 => 0x022c,
|
||||
0xa4 => 0x02d2, 0xa5 => 0x02d2, 0xa6 => 0x022c, 0xa7 => 0x02d2,
|
||||
0xa8 => 0x022c, 0xa9 => 0x029b, 0xaa => 0x02d2, 0xab => 0xfa,
|
||||
0xac => 0x02e1, 0xad => 0x029b, 0xae => 0x01f4, 0xaf => 0x022c,
|
||||
0xb0 => 0x02d2, 0xb1 => 0xde, 0xb2 => 0x022c, 0xb3 => 0x0263,
|
||||
0xb4 => 0x02d2, 0xb5 => 0x022c, 0xb6 => 0x029b, 0xb7 => 0x01f4,
|
||||
0xb8 => 0x01f4, 0xb9 => 0x0116, 0xba => 0x01d7, 0xbb => 0x02d2,
|
||||
0xbc => 0x030a, 0xbd => 0x022c, 0xbe => 0x022c, 0xbf => 0x029b,
|
||||
0xc0 => 0x014d, 0xc1 => 0x01f4, 0xc2 => 0x0263, 0xc3 => 0x029b,
|
||||
0xc4 => 0x030a, 0xc5 => 0x02d2, 0xc6 => 0x029b, 0xc7 => 0x0283,
|
||||
0xc8 => 0x02d2, 0xc9 => 0x022c, 0xca => 0x014d, 0xcb => 0x030a,
|
||||
0xcc => 0x029b, 0xcd => 0x029b, 0xce => 0x0248, 0xcf => 0x022c,
|
||||
0xd0 => 0x0263, 0xd1 => 0x01dc, 0xd2 => 0x01f4, 0xd3 => 0x02d2,
|
||||
0xd4 => 0x0116, 0xd5 => 0x029b, 0xd6 => 0x022c, 0xd7 => 0x022c,
|
||||
0xd8 => 0x01f4, 0xd9 => 0x022c, 0xda => 0x022c, 0xdb => 0x02d2,
|
||||
0xdc => 0x0116, 0xdd => 0x0248, 0xde => 0x0104, 0xdf => 0x02e1,
|
||||
0xe0 => 0x030a, 0xe1 => 0x0116, 0xe2 => 0x0258, 0xe3 => 0x029b,
|
||||
0xe4 => 0x014d, 0xe5 => 0x022c, 0xe6 => 0x0263, 0xe7 => 0x0263,
|
||||
0xe8 => 0x0225, 0xe9 => 0x02d2, 0xea => 0x02d2, 0xeb => 0xde,
|
||||
0xec => 0x013d, 0xed => 0x022c, 0xee => 0x02d2, 0xef => 0x029b,
|
||||
0xf0 => 0x029b, 0xf1 => 0x022c, 0xf2 => 0x01f4, 0xf3 => 0xde,
|
||||
0xf4 => 0x030a, 0xf5 => 0x022c, 0xf6 => 0x022c, 0xf7 => 0x01f4,
|
||||
0xf8 => 0x0116, 0xf9 => 0x030a, 0xfa => 0x02d2, 0xfb => 0x0264,
|
||||
0xfc => 0x022c, 0xfd => 0x014d, 0xfe => 0x030a, 0xff => 0x022c,
|
||||
0x0100 => 0x0116, 0x0101 => 0x022c, 0x0102 => 0x029b, 0x0103 => 0x022c,
|
||||
0x0104 => 0x0342, 0x0105 => 0x029b, 0x0106 => 0x012b, 0x0107 => 0x029b,
|
||||
0x0108 => 0x022c, 0x0109 => 0x03e8, 0x010a => 0x022c, 0x010b => 0x0116,
|
||||
0x010c => 0x0116, 0x010d => 0x022c, 0x010e => 0x0342, 0x010f => 0x0225,
|
||||
0x0110 => 0x022c, 0x0111 => 0x022c, 0x0112 => 0x02d2, 0x0113 => 0x029b,
|
||||
0x0114 => 0x022c, 0x0115 => 0x022c, 0x0116 => 0x0342, 0x0117 => 0x029b,
|
||||
0x0118 => 0x029b, 0x0119 => 0x030a, 0x011a => 0x0190, 0x011b => 0x022c,
|
||||
0x011c => 0x02d2, 0x011d => 0x022c, 0x011e => 0x01c5, 0x011f => 0x02d2,
|
||||
0x0120 => 0x014d, 0x0121 => 0x02d2, 0x0122 => 0x022c, 0x0123 => 0x02d2,
|
||||
0x0124 => 0x022c, 0x0125 => 0x029b, 0x0126 => 0x029b, 0x0127 => 0x029b,
|
||||
0x0128 => 0x030a, 0x0129 => 0x01f4, 0x012a => 0x029b, 0x012b => 0x0116,
|
||||
0x012c => 0x01f4, 0x012d => 0x0248, 0x012e => 0x0116, 0x012f => 0x022c,
|
||||
0x0130 => 0x0116, 0x0131 => 0x0248, 0x0132 => 0x022c, 0x0133 => 0x022c,
|
||||
0x0134 => 0x0225, 0x0135 => 0x022c, 0x0136 => 0x022c, 0x0137 => 0x01f4,
|
||||
0x0138 => 0x022c, 0x0139 => 0x014d, 0x013a => 0x0116, 0x013b => 0x022c,
|
||||
);
|
||||
|
||||
/* The cmap table is similarly synthesized.
|
||||
*/
|
||||
$cmapData = array(
|
||||
0x20 => 0x01, 0x21 => 0x02, 0x22 => 0x03, 0x23 => 0x04,
|
||||
0x24 => 0x05, 0x25 => 0x06, 0x26 => 0x07, 0x2019 => 0x08,
|
||||
0x28 => 0x09, 0x29 => 0x0a, 0x2a => 0x0b, 0x2b => 0x0c,
|
||||
0x2c => 0x0d, 0x2d => 0x0e, 0x2e => 0x0f, 0x2f => 0x10,
|
||||
0x30 => 0x11, 0x31 => 0x12, 0x32 => 0x13, 0x33 => 0x14,
|
||||
0x34 => 0x15, 0x35 => 0x16, 0x36 => 0x17, 0x37 => 0x18,
|
||||
0x38 => 0x19, 0x39 => 0x1a, 0x3a => 0x1b, 0x3b => 0x1c,
|
||||
0x3c => 0x1d, 0x3d => 0x1e, 0x3e => 0x1f, 0x3f => 0x20,
|
||||
0x40 => 0x21, 0x41 => 0x22, 0x42 => 0x23, 0x43 => 0x24,
|
||||
0x44 => 0x25, 0x45 => 0x26, 0x46 => 0x27, 0x47 => 0x28,
|
||||
0x48 => 0x29, 0x49 => 0x2a, 0x4a => 0x2b, 0x4b => 0x2c,
|
||||
0x4c => 0x2d, 0x4d => 0x2e, 0x4e => 0x2f, 0x4f => 0x30,
|
||||
0x50 => 0x31, 0x51 => 0x32, 0x52 => 0x33, 0x53 => 0x34,
|
||||
0x54 => 0x35, 0x55 => 0x36, 0x56 => 0x37, 0x57 => 0x38,
|
||||
0x58 => 0x39, 0x59 => 0x3a, 0x5a => 0x3b, 0x5b => 0x3c,
|
||||
0x5c => 0x3d, 0x5d => 0x3e, 0x5e => 0x3f, 0x5f => 0x40,
|
||||
0x2018 => 0x41, 0x61 => 0x42, 0x62 => 0x43, 0x63 => 0x44,
|
||||
0x64 => 0x45, 0x65 => 0x46, 0x66 => 0x47, 0x67 => 0x48,
|
||||
0x68 => 0x49, 0x69 => 0x4a, 0x6a => 0x4b, 0x6b => 0x4c,
|
||||
0x6c => 0x4d, 0x6d => 0x4e, 0x6e => 0x4f, 0x6f => 0x50,
|
||||
0x70 => 0x51, 0x71 => 0x52, 0x72 => 0x53, 0x73 => 0x54,
|
||||
0x74 => 0x55, 0x75 => 0x56, 0x76 => 0x57, 0x77 => 0x58,
|
||||
0x78 => 0x59, 0x79 => 0x5a, 0x7a => 0x5b, 0x7b => 0x5c,
|
||||
0x7c => 0x5d, 0x7d => 0x5e, 0x7e => 0x5f, 0xa1 => 0x60,
|
||||
0xa2 => 0x61, 0xa3 => 0x62, 0x2044 => 0x63, 0xa5 => 0x64,
|
||||
0x0192 => 0x65, 0xa7 => 0x66, 0xa4 => 0x67, 0x27 => 0x68,
|
||||
0x201c => 0x69, 0xab => 0x6a, 0x2039 => 0x6b, 0x203a => 0x6c,
|
||||
0xfb01 => 0x6d, 0xfb02 => 0x6e, 0x2013 => 0x6f, 0x2020 => 0x70,
|
||||
0x2021 => 0x71, 0xb7 => 0x72, 0xb6 => 0x73, 0x2022 => 0x74,
|
||||
0x201a => 0x75, 0x201e => 0x76, 0x201d => 0x77, 0xbb => 0x78,
|
||||
0x2026 => 0x79, 0x2030 => 0x7a, 0xbf => 0x7b, 0x60 => 0x7c,
|
||||
0xb4 => 0x7d, 0x02c6 => 0x7e, 0x02dc => 0x7f, 0xaf => 0x80,
|
||||
0x02d8 => 0x81, 0x02d9 => 0x82, 0xa8 => 0x83, 0x02da => 0x84,
|
||||
0xb8 => 0x85, 0x02dd => 0x86, 0x02db => 0x87, 0x02c7 => 0x88,
|
||||
0x2014 => 0x89, 0xc6 => 0x8a, 0xaa => 0x8b, 0x0141 => 0x8c,
|
||||
0xd8 => 0x8d, 0x0152 => 0x8e, 0xba => 0x8f, 0xe6 => 0x90,
|
||||
0x0131 => 0x91, 0x0142 => 0x92, 0xf8 => 0x93, 0x0153 => 0x94,
|
||||
0xdf => 0x95, 0xcf => 0x96, 0xe9 => 0x97, 0x0103 => 0x98,
|
||||
0x0171 => 0x99, 0x011b => 0x9a, 0x0178 => 0x9b, 0xf7 => 0x9c,
|
||||
0xdd => 0x9d, 0xc2 => 0x9e, 0xe1 => 0x9f, 0xdb => 0xa0,
|
||||
0xfd => 0xa1, 0x0219 => 0xa2, 0xea => 0xa3, 0x016e => 0xa4,
|
||||
0xdc => 0xa5, 0x0105 => 0xa6, 0xda => 0xa7, 0x0173 => 0xa8,
|
||||
0xcb => 0xa9, 0x0110 => 0xaa, 0xf6c3 => 0xab, 0xa9 => 0xac,
|
||||
0x0112 => 0xad, 0x010d => 0xae, 0xe5 => 0xaf, 0x0145 => 0xb0,
|
||||
0x013a => 0xb1, 0xe0 => 0xb2, 0x0162 => 0xb3, 0x0106 => 0xb4,
|
||||
0xe3 => 0xb5, 0x0116 => 0xb6, 0x0161 => 0xb7, 0x015f => 0xb8,
|
||||
0xed => 0xb9, 0x25ca => 0xba, 0x0158 => 0xbb, 0x0122 => 0xbc,
|
||||
0xfb => 0xbd, 0xe2 => 0xbe, 0x0100 => 0xbf, 0x0159 => 0xc0,
|
||||
0xe7 => 0xc1, 0x017b => 0xc2, 0xde => 0xc3, 0x014c => 0xc4,
|
||||
0x0154 => 0xc5, 0x015a => 0xc6, 0x010f => 0xc7, 0x016a => 0xc8,
|
||||
0x016f => 0xc9, 0xb3 => 0xca, 0xd2 => 0xcb, 0xc0 => 0xcc,
|
||||
0x0102 => 0xcd, 0xd7 => 0xce, 0xfa => 0xcf, 0x0164 => 0xd0,
|
||||
0x2202 => 0xd1, 0xff => 0xd2, 0x0143 => 0xd3, 0xee => 0xd4,
|
||||
0xca => 0xd5, 0xe4 => 0xd6, 0xeb => 0xd7, 0x0107 => 0xd8,
|
||||
0x0144 => 0xd9, 0x016b => 0xda, 0x0147 => 0xdb, 0xcd => 0xdc,
|
||||
0xb1 => 0xdd, 0xa6 => 0xde, 0xae => 0xdf, 0x011e => 0xe0,
|
||||
0x0130 => 0xe1, 0x2211 => 0xe2, 0xc8 => 0xe3, 0x0155 => 0xe4,
|
||||
0x014d => 0xe5, 0x0179 => 0xe6, 0x017d => 0xe7, 0x2265 => 0xe8,
|
||||
0xd0 => 0xe9, 0xc7 => 0xea, 0x013c => 0xeb, 0x0165 => 0xec,
|
||||
0x0119 => 0xed, 0x0172 => 0xee, 0xc1 => 0xef, 0xc4 => 0xf0,
|
||||
0xe8 => 0xf1, 0x017a => 0xf2, 0x012f => 0xf3, 0xd3 => 0xf4,
|
||||
0xf3 => 0xf5, 0x0101 => 0xf6, 0x015b => 0xf7, 0xef => 0xf8,
|
||||
0xd4 => 0xf9, 0xd9 => 0xfa, 0x2206 => 0xfb, 0xfe => 0xfc,
|
||||
0xb2 => 0xfd, 0xd6 => 0xfe, 0xb5 => 0xff, 0xec => 0x0100,
|
||||
0x0151 => 0x0101, 0x0118 => 0x0102, 0x0111 => 0x0103, 0xbe => 0x0104,
|
||||
0x015e => 0x0105, 0x013e => 0x0106, 0x0136 => 0x0107, 0x0139 => 0x0108,
|
||||
0x2122 => 0x0109, 0x0117 => 0x010a, 0xcc => 0x010b, 0x012a => 0x010c,
|
||||
0x013d => 0x010d, 0xbd => 0x010e, 0x2264 => 0x010f, 0xf4 => 0x0110,
|
||||
0xf1 => 0x0111, 0x0170 => 0x0112, 0xc9 => 0x0113, 0x0113 => 0x0114,
|
||||
0x011f => 0x0115, 0xbc => 0x0116, 0x0160 => 0x0117, 0x0218 => 0x0118,
|
||||
0x0150 => 0x0119, 0xb0 => 0x011a, 0xf2 => 0x011b, 0x010c => 0x011c,
|
||||
0xf9 => 0x011d, 0x221a => 0x011e, 0x010e => 0x011f, 0x0157 => 0x0120,
|
||||
0xd1 => 0x0121, 0xf5 => 0x0122, 0x0156 => 0x0123, 0x013b => 0x0124,
|
||||
0xc3 => 0x0125, 0x0104 => 0x0126, 0xc5 => 0x0127, 0xd5 => 0x0128,
|
||||
0x017c => 0x0129, 0x011a => 0x012a, 0x012e => 0x012b, 0x0137 => 0x012c,
|
||||
0x2212 => 0x012d, 0xce => 0x012e, 0x0148 => 0x012f, 0x0163 => 0x0130,
|
||||
0xac => 0x0131, 0xf6 => 0x0132, 0xfc => 0x0133, 0x2260 => 0x0134,
|
||||
0x0123 => 0x0135, 0xf0 => 0x0136, 0x017e => 0x0137, 0x0146 => 0x0138,
|
||||
0xb9 => 0x0139, 0x012b => 0x013a, 0x20ac => 0x013b);
|
||||
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('Helvetica');
|
||||
}
|
||||
}
|
|
@ -0,0 +1,305 @@
|
|||
<?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: HelveticaBold.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 Helvetica-Bold.
|
||||
*
|
||||
* 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_HelveticaBold extends Zend_Pdf_Resource_Font_Simple_Standard
|
||||
{
|
||||
/**** 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'] =
|
||||
"\x00\x43\x00\x6f\x00\x70\x00\x79\x00\x72\x00\x69\x00\x67\x00\x68\x00"
|
||||
. "\x74\x00\x20\x00\x28\x00\x63\x00\x29\x00\x20\x00\x31\x00\x39\x00"
|
||||
. "\x38\x00\x35\x00\x2c\x00\x20\x00\x31\x00\x39\x00\x38\x00\x37\x00"
|
||||
. "\x2c\x00\x20\x00\x31\x00\x39\x00\x38\x00\x39\x00\x2c\x00\x20\x00"
|
||||
. "\x31\x00\x39\x00\x39\x00\x30\x00\x2c\x00\x20\x00\x31\x00\x39\x00"
|
||||
. "\x39\x00\x37\x00\x20\x00\x41\x00\x64\x00\x6f\x00\x62\x00\x65\x00"
|
||||
. "\x20\x00\x53\x00\x79\x00\x73\x00\x74\x00\x65\x00\x6d\x00\x73\x00"
|
||||
. "\x20\x00\x49\x00\x6e\x00\x63\x00\x6f\x00\x72\x00\x70\x00\x6f\x00"
|
||||
. "\x72\x00\x61\x00\x74\x00\x65\x00\x64\x00\x2e\x00\x20\x00\x20\x00"
|
||||
. "\x41\x00\x6c\x00\x6c\x00\x20\x00\x52\x00\x69\x00\x67\x00\x68\x00"
|
||||
. "\x74\x00\x73\x00\x20\x00\x52\x00\x65\x00\x73\x00\x65\x00\x72\x00"
|
||||
. "\x76\x00\x65\x00\x64\x00\x2e\x00\x48\x00\x65\x00\x6c\x00\x76\x00"
|
||||
. "\x65\x00\x74\x00\x69\x00\x63\x00\x61\x00\x20\x00\x69\x00\x73\x00"
|
||||
. "\x20\x00\x61\x00\x20\x00\x74\x00\x72\x00\x61\x00\x64\x00\x65\x00"
|
||||
. "\x6d\x00\x61\x00\x72\x00\x6b\x00\x20\x00\x6f\x00\x66\x00\x20\x00"
|
||||
. "\x4c\x00\x69\x00\x6e\x00\x6f\x00\x74\x00\x79\x00\x70\x00\x65\x00"
|
||||
. "\x2d\x00\x48\x00\x65\x00\x6c\x00\x6c\x00\x20\x00\x41\x00\x47\x00"
|
||||
. "\x20\x00\x61\x00\x6e\x00\x64\x00\x2f\x00\x6f\x00\x72\x00\x20\x00"
|
||||
. "\x69\x00\x74\x00\x73\x00\x20\x00\x73\x00\x75\x00\x62\x00\x73\x00"
|
||||
. "\x69\x00\x64\x00\x69\x00\x61\x00\x72\x00\x69\x00\x65\x00\x73\x00"
|
||||
. "\x2e";
|
||||
$this->_fontNames[Zend_Pdf_Font::NAME_FAMILY]['en'] =
|
||||
"\x00\x48\x00\x65\x00\x6c\x00\x76\x00\x65\x00\x74\x00\x69\x00\x63\x00"
|
||||
. "\x61";
|
||||
$this->_fontNames[Zend_Pdf_Font::NAME_STYLE]['en'] =
|
||||
"\x00\x42\x00\x6f\x00\x6c\x00\x64";
|
||||
$this->_fontNames[Zend_Pdf_Font::NAME_ID]['en'] =
|
||||
"\x00\x34\x00\x33\x00\x30\x00\x35\x00\x32";
|
||||
$this->_fontNames[Zend_Pdf_Font::NAME_FULL]['en'] =
|
||||
"\x00\x48\x00\x65\x00\x6c\x00\x76\x00\x65\x00\x74\x00\x69\x00\x63\x00"
|
||||
. "\x61\x00\x2d\x00\x42\x00\x6f\x00\x6c\x00\x64\x00\x20\x00\x42\x00"
|
||||
. "\x6f\x00\x6c\x00\x64";
|
||||
$this->_fontNames[Zend_Pdf_Font::NAME_VERSION]['en'] =
|
||||
"\x00\x30\x00\x30\x00\x32\x00\x2e\x00\x30\x00\x30\x00\x30";
|
||||
$this->_fontNames[Zend_Pdf_Font::NAME_POSTSCRIPT]['en'] =
|
||||
"\x00\x48\x00\x65\x00\x6c\x00\x76\x00\x65\x00\x74\x00\x69\x00\x63\x00"
|
||||
. "\x61\x00\x2d\x00\x42\x00\x6f\x00\x6c\x00\x64";
|
||||
|
||||
$this->_isBold = true;
|
||||
$this->_isItalic = false;
|
||||
$this->_isMonospaced = false;
|
||||
|
||||
$this->_underlinePosition = -100;
|
||||
$this->_underlineThickness = 50;
|
||||
$this->_strikePosition = 225;
|
||||
$this->_strikeThickness = 50;
|
||||
|
||||
$this->_unitsPerEm = 1000;
|
||||
|
||||
$this->_ascent = 718;
|
||||
$this->_descent = -207;
|
||||
$this->_lineGap = 275;
|
||||
|
||||
/* 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 => 0x014d, 0x03 => 0x01da,
|
||||
0x04 => 0x022c, 0x05 => 0x022c, 0x06 => 0x0379, 0x07 => 0x02d2,
|
||||
0x08 => 0x0116, 0x09 => 0x014d, 0x0a => 0x014d, 0x0b => 0x0185,
|
||||
0x0c => 0x0248, 0x0d => 0x0116, 0x0e => 0x014d, 0x0f => 0x0116,
|
||||
0x10 => 0x0116, 0x11 => 0x022c, 0x12 => 0x022c, 0x13 => 0x022c,
|
||||
0x14 => 0x022c, 0x15 => 0x022c, 0x16 => 0x022c, 0x17 => 0x022c,
|
||||
0x18 => 0x022c, 0x19 => 0x022c, 0x1a => 0x022c, 0x1b => 0x014d,
|
||||
0x1c => 0x014d, 0x1d => 0x0248, 0x1e => 0x0248, 0x1f => 0x0248,
|
||||
0x20 => 0x0263, 0x21 => 0x03cf, 0x22 => 0x02d2, 0x23 => 0x02d2,
|
||||
0x24 => 0x02d2, 0x25 => 0x02d2, 0x26 => 0x029b, 0x27 => 0x0263,
|
||||
0x28 => 0x030a, 0x29 => 0x02d2, 0x2a => 0x0116, 0x2b => 0x022c,
|
||||
0x2c => 0x02d2, 0x2d => 0x0263, 0x2e => 0x0341, 0x2f => 0x02d2,
|
||||
0x30 => 0x030a, 0x31 => 0x029b, 0x32 => 0x030a, 0x33 => 0x02d2,
|
||||
0x34 => 0x029b, 0x35 => 0x0263, 0x36 => 0x02d2, 0x37 => 0x029b,
|
||||
0x38 => 0x03b0, 0x39 => 0x029b, 0x3a => 0x029b, 0x3b => 0x0263,
|
||||
0x3c => 0x014d, 0x3d => 0x0116, 0x3e => 0x014d, 0x3f => 0x0248,
|
||||
0x40 => 0x022c, 0x41 => 0x0116, 0x42 => 0x022c, 0x43 => 0x0263,
|
||||
0x44 => 0x022c, 0x45 => 0x0263, 0x46 => 0x022c, 0x47 => 0x014d,
|
||||
0x48 => 0x0263, 0x49 => 0x0263, 0x4a => 0x0116, 0x4b => 0x0116,
|
||||
0x4c => 0x022c, 0x4d => 0x0116, 0x4e => 0x0379, 0x4f => 0x0263,
|
||||
0x50 => 0x0263, 0x51 => 0x0263, 0x52 => 0x0263, 0x53 => 0x0185,
|
||||
0x54 => 0x022c, 0x55 => 0x014d, 0x56 => 0x0263, 0x57 => 0x022c,
|
||||
0x58 => 0x030a, 0x59 => 0x022c, 0x5a => 0x022c, 0x5b => 0x01f4,
|
||||
0x5c => 0x0185, 0x5d => 0x0118, 0x5e => 0x0185, 0x5f => 0x0248,
|
||||
0x60 => 0x014d, 0x61 => 0x022c, 0x62 => 0x022c, 0x63 => 0xa7,
|
||||
0x64 => 0x022c, 0x65 => 0x022c, 0x66 => 0x022c, 0x67 => 0x022c,
|
||||
0x68 => 0xee, 0x69 => 0x01f4, 0x6a => 0x022c, 0x6b => 0x014d,
|
||||
0x6c => 0x014d, 0x6d => 0x0263, 0x6e => 0x0263, 0x6f => 0x022c,
|
||||
0x70 => 0x022c, 0x71 => 0x022c, 0x72 => 0x0116, 0x73 => 0x022c,
|
||||
0x74 => 0x015e, 0x75 => 0x0116, 0x76 => 0x01f4, 0x77 => 0x01f4,
|
||||
0x78 => 0x022c, 0x79 => 0x03e8, 0x7a => 0x03e8, 0x7b => 0x0263,
|
||||
0x7c => 0x014d, 0x7d => 0x014d, 0x7e => 0x014d, 0x7f => 0x014d,
|
||||
0x80 => 0x014d, 0x81 => 0x014d, 0x82 => 0x014d, 0x83 => 0x014d,
|
||||
0x84 => 0x014d, 0x85 => 0x014d, 0x86 => 0x014d, 0x87 => 0x014d,
|
||||
0x88 => 0x014d, 0x89 => 0x03e8, 0x8a => 0x03e8, 0x8b => 0x0172,
|
||||
0x8c => 0x0263, 0x8d => 0x030a, 0x8e => 0x03e8, 0x8f => 0x016d,
|
||||
0x90 => 0x0379, 0x91 => 0x0116, 0x92 => 0x0116, 0x93 => 0x0263,
|
||||
0x94 => 0x03b0, 0x95 => 0x0263, 0x96 => 0x0116, 0x97 => 0x022c,
|
||||
0x98 => 0x022c, 0x99 => 0x0263, 0x9a => 0x022c, 0x9b => 0x029b,
|
||||
0x9c => 0x0248, 0x9d => 0x029b, 0x9e => 0x02d2, 0x9f => 0x022c,
|
||||
0xa0 => 0x02d2, 0xa1 => 0x022c, 0xa2 => 0x022c, 0xa3 => 0x022c,
|
||||
0xa4 => 0x02d2, 0xa5 => 0x02d2, 0xa6 => 0x022c, 0xa7 => 0x02d2,
|
||||
0xa8 => 0x0263, 0xa9 => 0x029b, 0xaa => 0x02d2, 0xab => 0xfa,
|
||||
0xac => 0x02e1, 0xad => 0x029b, 0xae => 0x022c, 0xaf => 0x022c,
|
||||
0xb0 => 0x02d2, 0xb1 => 0x0116, 0xb2 => 0x022c, 0xb3 => 0x0263,
|
||||
0xb4 => 0x02d2, 0xb5 => 0x022c, 0xb6 => 0x029b, 0xb7 => 0x022c,
|
||||
0xb8 => 0x022c, 0xb9 => 0x0116, 0xba => 0x01ee, 0xbb => 0x02d2,
|
||||
0xbc => 0x030a, 0xbd => 0x0263, 0xbe => 0x022c, 0xbf => 0x02d2,
|
||||
0xc0 => 0x0185, 0xc1 => 0x022c, 0xc2 => 0x0263, 0xc3 => 0x029b,
|
||||
0xc4 => 0x030a, 0xc5 => 0x02d2, 0xc6 => 0x029b, 0xc7 => 0x02e7,
|
||||
0xc8 => 0x02d2, 0xc9 => 0x0263, 0xca => 0x014d, 0xcb => 0x030a,
|
||||
0xcc => 0x02d2, 0xcd => 0x02d2, 0xce => 0x0248, 0xcf => 0x0263,
|
||||
0xd0 => 0x0263, 0xd1 => 0x01ee, 0xd2 => 0x022c, 0xd3 => 0x02d2,
|
||||
0xd4 => 0x0116, 0xd5 => 0x029b, 0xd6 => 0x022c, 0xd7 => 0x022c,
|
||||
0xd8 => 0x022c, 0xd9 => 0x0263, 0xda => 0x0263, 0xdb => 0x02d2,
|
||||
0xdc => 0x0116, 0xdd => 0x0248, 0xde => 0x0118, 0xdf => 0x02e1,
|
||||
0xe0 => 0x030a, 0xe1 => 0x0116, 0xe2 => 0x0258, 0xe3 => 0x029b,
|
||||
0xe4 => 0x0185, 0xe5 => 0x0263, 0xe6 => 0x0263, 0xe7 => 0x0263,
|
||||
0xe8 => 0x0225, 0xe9 => 0x02d2, 0xea => 0x02d2, 0xeb => 0x0116,
|
||||
0xec => 0x0185, 0xed => 0x022c, 0xee => 0x02d2, 0xef => 0x02d2,
|
||||
0xf0 => 0x02d2, 0xf1 => 0x022c, 0xf2 => 0x01f4, 0xf3 => 0x0116,
|
||||
0xf4 => 0x030a, 0xf5 => 0x0263, 0xf6 => 0x022c, 0xf7 => 0x022c,
|
||||
0xf8 => 0x0116, 0xf9 => 0x030a, 0xfa => 0x02d2, 0xfb => 0x0264,
|
||||
0xfc => 0x0263, 0xfd => 0x014d, 0xfe => 0x030a, 0xff => 0x0263,
|
||||
0x0100 => 0x0116, 0x0101 => 0x0263, 0x0102 => 0x029b, 0x0103 => 0x0263,
|
||||
0x0104 => 0x0342, 0x0105 => 0x029b, 0x0106 => 0x0190, 0x0107 => 0x02d2,
|
||||
0x0108 => 0x0263, 0x0109 => 0x03e8, 0x010a => 0x022c, 0x010b => 0x0116,
|
||||
0x010c => 0x0116, 0x010d => 0x0263, 0x010e => 0x0342, 0x010f => 0x0225,
|
||||
0x0110 => 0x0263, 0x0111 => 0x0263, 0x0112 => 0x02d2, 0x0113 => 0x029b,
|
||||
0x0114 => 0x022c, 0x0115 => 0x0263, 0x0116 => 0x0342, 0x0117 => 0x029b,
|
||||
0x0118 => 0x029b, 0x0119 => 0x030a, 0x011a => 0x0190, 0x011b => 0x0263,
|
||||
0x011c => 0x02d2, 0x011d => 0x0263, 0x011e => 0x0225, 0x011f => 0x02d2,
|
||||
0x0120 => 0x0185, 0x0121 => 0x02d2, 0x0122 => 0x0263, 0x0123 => 0x02d2,
|
||||
0x0124 => 0x0263, 0x0125 => 0x02d2, 0x0126 => 0x02d2, 0x0127 => 0x02d2,
|
||||
0x0128 => 0x030a, 0x0129 => 0x01f4, 0x012a => 0x029b, 0x012b => 0x0116,
|
||||
0x012c => 0x022c, 0x012d => 0x0248, 0x012e => 0x0116, 0x012f => 0x0263,
|
||||
0x0130 => 0x014d, 0x0131 => 0x0248, 0x0132 => 0x0263, 0x0133 => 0x0263,
|
||||
0x0134 => 0x0225, 0x0135 => 0x0263, 0x0136 => 0x0263, 0x0137 => 0x01f4,
|
||||
0x0138 => 0x0263, 0x0139 => 0x014d, 0x013a => 0x0116, 0x013b => 0x022c,
|
||||
);
|
||||
|
||||
/* The cmap table is similarly synthesized.
|
||||
*/
|
||||
$cmapData = array(
|
||||
0x20 => 0x01, 0x21 => 0x02, 0x22 => 0x03, 0x23 => 0x04,
|
||||
0x24 => 0x05, 0x25 => 0x06, 0x26 => 0x07, 0x2019 => 0x08,
|
||||
0x28 => 0x09, 0x29 => 0x0a, 0x2a => 0x0b, 0x2b => 0x0c,
|
||||
0x2c => 0x0d, 0x2d => 0x0e, 0x2e => 0x0f, 0x2f => 0x10,
|
||||
0x30 => 0x11, 0x31 => 0x12, 0x32 => 0x13, 0x33 => 0x14,
|
||||
0x34 => 0x15, 0x35 => 0x16, 0x36 => 0x17, 0x37 => 0x18,
|
||||
0x38 => 0x19, 0x39 => 0x1a, 0x3a => 0x1b, 0x3b => 0x1c,
|
||||
0x3c => 0x1d, 0x3d => 0x1e, 0x3e => 0x1f, 0x3f => 0x20,
|
||||
0x40 => 0x21, 0x41 => 0x22, 0x42 => 0x23, 0x43 => 0x24,
|
||||
0x44 => 0x25, 0x45 => 0x26, 0x46 => 0x27, 0x47 => 0x28,
|
||||
0x48 => 0x29, 0x49 => 0x2a, 0x4a => 0x2b, 0x4b => 0x2c,
|
||||
0x4c => 0x2d, 0x4d => 0x2e, 0x4e => 0x2f, 0x4f => 0x30,
|
||||
0x50 => 0x31, 0x51 => 0x32, 0x52 => 0x33, 0x53 => 0x34,
|
||||
0x54 => 0x35, 0x55 => 0x36, 0x56 => 0x37, 0x57 => 0x38,
|
||||
0x58 => 0x39, 0x59 => 0x3a, 0x5a => 0x3b, 0x5b => 0x3c,
|
||||
0x5c => 0x3d, 0x5d => 0x3e, 0x5e => 0x3f, 0x5f => 0x40,
|
||||
0x2018 => 0x41, 0x61 => 0x42, 0x62 => 0x43, 0x63 => 0x44,
|
||||
0x64 => 0x45, 0x65 => 0x46, 0x66 => 0x47, 0x67 => 0x48,
|
||||
0x68 => 0x49, 0x69 => 0x4a, 0x6a => 0x4b, 0x6b => 0x4c,
|
||||
0x6c => 0x4d, 0x6d => 0x4e, 0x6e => 0x4f, 0x6f => 0x50,
|
||||
0x70 => 0x51, 0x71 => 0x52, 0x72 => 0x53, 0x73 => 0x54,
|
||||
0x74 => 0x55, 0x75 => 0x56, 0x76 => 0x57, 0x77 => 0x58,
|
||||
0x78 => 0x59, 0x79 => 0x5a, 0x7a => 0x5b, 0x7b => 0x5c,
|
||||
0x7c => 0x5d, 0x7d => 0x5e, 0x7e => 0x5f, 0xa1 => 0x60,
|
||||
0xa2 => 0x61, 0xa3 => 0x62, 0x2044 => 0x63, 0xa5 => 0x64,
|
||||
0x0192 => 0x65, 0xa7 => 0x66, 0xa4 => 0x67, 0x27 => 0x68,
|
||||
0x201c => 0x69, 0xab => 0x6a, 0x2039 => 0x6b, 0x203a => 0x6c,
|
||||
0xfb01 => 0x6d, 0xfb02 => 0x6e, 0x2013 => 0x6f, 0x2020 => 0x70,
|
||||
0x2021 => 0x71, 0xb7 => 0x72, 0xb6 => 0x73, 0x2022 => 0x74,
|
||||
0x201a => 0x75, 0x201e => 0x76, 0x201d => 0x77, 0xbb => 0x78,
|
||||
0x2026 => 0x79, 0x2030 => 0x7a, 0xbf => 0x7b, 0x60 => 0x7c,
|
||||
0xb4 => 0x7d, 0x02c6 => 0x7e, 0x02dc => 0x7f, 0xaf => 0x80,
|
||||
0x02d8 => 0x81, 0x02d9 => 0x82, 0xa8 => 0x83, 0x02da => 0x84,
|
||||
0xb8 => 0x85, 0x02dd => 0x86, 0x02db => 0x87, 0x02c7 => 0x88,
|
||||
0x2014 => 0x89, 0xc6 => 0x8a, 0xaa => 0x8b, 0x0141 => 0x8c,
|
||||
0xd8 => 0x8d, 0x0152 => 0x8e, 0xba => 0x8f, 0xe6 => 0x90,
|
||||
0x0131 => 0x91, 0x0142 => 0x92, 0xf8 => 0x93, 0x0153 => 0x94,
|
||||
0xdf => 0x95, 0xcf => 0x96, 0xe9 => 0x97, 0x0103 => 0x98,
|
||||
0x0171 => 0x99, 0x011b => 0x9a, 0x0178 => 0x9b, 0xf7 => 0x9c,
|
||||
0xdd => 0x9d, 0xc2 => 0x9e, 0xe1 => 0x9f, 0xdb => 0xa0,
|
||||
0xfd => 0xa1, 0x0219 => 0xa2, 0xea => 0xa3, 0x016e => 0xa4,
|
||||
0xdc => 0xa5, 0x0105 => 0xa6, 0xda => 0xa7, 0x0173 => 0xa8,
|
||||
0xcb => 0xa9, 0x0110 => 0xaa, 0xf6c3 => 0xab, 0xa9 => 0xac,
|
||||
0x0112 => 0xad, 0x010d => 0xae, 0xe5 => 0xaf, 0x0145 => 0xb0,
|
||||
0x013a => 0xb1, 0xe0 => 0xb2, 0x0162 => 0xb3, 0x0106 => 0xb4,
|
||||
0xe3 => 0xb5, 0x0116 => 0xb6, 0x0161 => 0xb7, 0x015f => 0xb8,
|
||||
0xed => 0xb9, 0x25ca => 0xba, 0x0158 => 0xbb, 0x0122 => 0xbc,
|
||||
0xfb => 0xbd, 0xe2 => 0xbe, 0x0100 => 0xbf, 0x0159 => 0xc0,
|
||||
0xe7 => 0xc1, 0x017b => 0xc2, 0xde => 0xc3, 0x014c => 0xc4,
|
||||
0x0154 => 0xc5, 0x015a => 0xc6, 0x010f => 0xc7, 0x016a => 0xc8,
|
||||
0x016f => 0xc9, 0xb3 => 0xca, 0xd2 => 0xcb, 0xc0 => 0xcc,
|
||||
0x0102 => 0xcd, 0xd7 => 0xce, 0xfa => 0xcf, 0x0164 => 0xd0,
|
||||
0x2202 => 0xd1, 0xff => 0xd2, 0x0143 => 0xd3, 0xee => 0xd4,
|
||||
0xca => 0xd5, 0xe4 => 0xd6, 0xeb => 0xd7, 0x0107 => 0xd8,
|
||||
0x0144 => 0xd9, 0x016b => 0xda, 0x0147 => 0xdb, 0xcd => 0xdc,
|
||||
0xb1 => 0xdd, 0xa6 => 0xde, 0xae => 0xdf, 0x011e => 0xe0,
|
||||
0x0130 => 0xe1, 0x2211 => 0xe2, 0xc8 => 0xe3, 0x0155 => 0xe4,
|
||||
0x014d => 0xe5, 0x0179 => 0xe6, 0x017d => 0xe7, 0x2265 => 0xe8,
|
||||
0xd0 => 0xe9, 0xc7 => 0xea, 0x013c => 0xeb, 0x0165 => 0xec,
|
||||
0x0119 => 0xed, 0x0172 => 0xee, 0xc1 => 0xef, 0xc4 => 0xf0,
|
||||
0xe8 => 0xf1, 0x017a => 0xf2, 0x012f => 0xf3, 0xd3 => 0xf4,
|
||||
0xf3 => 0xf5, 0x0101 => 0xf6, 0x015b => 0xf7, 0xef => 0xf8,
|
||||
0xd4 => 0xf9, 0xd9 => 0xfa, 0x2206 => 0xfb, 0xfe => 0xfc,
|
||||
0xb2 => 0xfd, 0xd6 => 0xfe, 0xb5 => 0xff, 0xec => 0x0100,
|
||||
0x0151 => 0x0101, 0x0118 => 0x0102, 0x0111 => 0x0103, 0xbe => 0x0104,
|
||||
0x015e => 0x0105, 0x013e => 0x0106, 0x0136 => 0x0107, 0x0139 => 0x0108,
|
||||
0x2122 => 0x0109, 0x0117 => 0x010a, 0xcc => 0x010b, 0x012a => 0x010c,
|
||||
0x013d => 0x010d, 0xbd => 0x010e, 0x2264 => 0x010f, 0xf4 => 0x0110,
|
||||
0xf1 => 0x0111, 0x0170 => 0x0112, 0xc9 => 0x0113, 0x0113 => 0x0114,
|
||||
0x011f => 0x0115, 0xbc => 0x0116, 0x0160 => 0x0117, 0x0218 => 0x0118,
|
||||
0x0150 => 0x0119, 0xb0 => 0x011a, 0xf2 => 0x011b, 0x010c => 0x011c,
|
||||
0xf9 => 0x011d, 0x221a => 0x011e, 0x010e => 0x011f, 0x0157 => 0x0120,
|
||||
0xd1 => 0x0121, 0xf5 => 0x0122, 0x0156 => 0x0123, 0x013b => 0x0124,
|
||||
0xc3 => 0x0125, 0x0104 => 0x0126, 0xc5 => 0x0127, 0xd5 => 0x0128,
|
||||
0x017c => 0x0129, 0x011a => 0x012a, 0x012e => 0x012b, 0x0137 => 0x012c,
|
||||
0x2212 => 0x012d, 0xce => 0x012e, 0x0148 => 0x012f, 0x0163 => 0x0130,
|
||||
0xac => 0x0131, 0xf6 => 0x0132, 0xfc => 0x0133, 0x2260 => 0x0134,
|
||||
0x0123 => 0x0135, 0xf0 => 0x0136, 0x017e => 0x0137, 0x0146 => 0x0138,
|
||||
0xb9 => 0x0139, 0x012b => 0x013a, 0x20ac => 0x013b);
|
||||
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('Helvetica-Bold');
|
||||
}
|
||||
}
|
|
@ -0,0 +1,308 @@
|
|||
<?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: HelveticaBoldOblique.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 Helvetica-BoldOblique.
|
||||
*
|
||||
* 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_HelveticaBoldOblique extends Zend_Pdf_Resource_Font_Simple_Standard
|
||||
{
|
||||
/**** 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'] =
|
||||
"\x00\x43\x00\x6f\x00\x70\x00\x79\x00\x72\x00\x69\x00\x67\x00\x68\x00"
|
||||
. "\x74\x00\x20\x00\x28\x00\x63\x00\x29\x00\x20\x00\x31\x00\x39\x00"
|
||||
. "\x38\x00\x35\x00\x2c\x00\x20\x00\x31\x00\x39\x00\x38\x00\x37\x00"
|
||||
. "\x2c\x00\x20\x00\x31\x00\x39\x00\x38\x00\x39\x00\x2c\x00\x20\x00"
|
||||
. "\x31\x00\x39\x00\x39\x00\x30\x00\x2c\x00\x20\x00\x31\x00\x39\x00"
|
||||
. "\x39\x00\x37\x00\x20\x00\x41\x00\x64\x00\x6f\x00\x62\x00\x65\x00"
|
||||
. "\x20\x00\x53\x00\x79\x00\x73\x00\x74\x00\x65\x00\x6d\x00\x73\x00"
|
||||
. "\x20\x00\x49\x00\x6e\x00\x63\x00\x6f\x00\x72\x00\x70\x00\x6f\x00"
|
||||
. "\x72\x00\x61\x00\x74\x00\x65\x00\x64\x00\x2e\x00\x20\x00\x20\x00"
|
||||
. "\x41\x00\x6c\x00\x6c\x00\x20\x00\x52\x00\x69\x00\x67\x00\x68\x00"
|
||||
. "\x74\x00\x73\x00\x20\x00\x52\x00\x65\x00\x73\x00\x65\x00\x72\x00"
|
||||
. "\x76\x00\x65\x00\x64\x00\x2e\x00\x48\x00\x65\x00\x6c\x00\x76\x00"
|
||||
. "\x65\x00\x74\x00\x69\x00\x63\x00\x61\x00\x20\x00\x69\x00\x73\x00"
|
||||
. "\x20\x00\x61\x00\x20\x00\x74\x00\x72\x00\x61\x00\x64\x00\x65\x00"
|
||||
. "\x6d\x00\x61\x00\x72\x00\x6b\x00\x20\x00\x6f\x00\x66\x00\x20\x00"
|
||||
. "\x4c\x00\x69\x00\x6e\x00\x6f\x00\x74\x00\x79\x00\x70\x00\x65\x00"
|
||||
. "\x2d\x00\x48\x00\x65\x00\x6c\x00\x6c\x00\x20\x00\x41\x00\x47\x00"
|
||||
. "\x20\x00\x61\x00\x6e\x00\x64\x00\x2f\x00\x6f\x00\x72\x00\x20\x00"
|
||||
. "\x69\x00\x74\x00\x73\x00\x20\x00\x73\x00\x75\x00\x62\x00\x73\x00"
|
||||
. "\x69\x00\x64\x00\x69\x00\x61\x00\x72\x00\x69\x00\x65\x00\x73\x00"
|
||||
. "\x2e";
|
||||
$this->_fontNames[Zend_Pdf_Font::NAME_FAMILY]['en'] =
|
||||
"\x00\x48\x00\x65\x00\x6c\x00\x76\x00\x65\x00\x74\x00\x69\x00\x63\x00"
|
||||
. "\x61";
|
||||
$this->_fontNames[Zend_Pdf_Font::NAME_STYLE]['en'] =
|
||||
"\x00\x42\x00\x6f\x00\x6c\x00\x64";
|
||||
$this->_fontNames[Zend_Pdf_Font::NAME_ID]['en'] =
|
||||
"\x00\x34\x00\x33\x00\x30\x00\x35\x00\x33";
|
||||
$this->_fontNames[Zend_Pdf_Font::NAME_FULL]['en'] =
|
||||
"\x00\x48\x00\x65\x00\x6c\x00\x76\x00\x65\x00\x74\x00\x69\x00\x63\x00"
|
||||
. "\x61\x00\x2d\x00\x42\x00\x6f\x00\x6c\x00\x64\x00\x4f\x00\x62\x00"
|
||||
. "\x6c\x00\x69\x00\x71\x00\x75\x00\x65\x00\x20\x00\x42\x00\x6f\x00"
|
||||
. "\x6c\x00\x64";
|
||||
$this->_fontNames[Zend_Pdf_Font::NAME_VERSION]['en'] =
|
||||
"\x00\x30\x00\x30\x00\x32\x00\x2e\x00\x30\x00\x30\x00\x30";
|
||||
$this->_fontNames[Zend_Pdf_Font::NAME_POSTSCRIPT]['en'] =
|
||||
"\x00\x48\x00\x65\x00\x6c\x00\x76\x00\x65\x00\x74\x00\x69\x00\x63\x00"
|
||||
. "\x61\x00\x2d\x00\x42\x00\x6f\x00\x6c\x00\x64\x00\x4f\x00\x62\x00"
|
||||
. "\x6c\x00\x69\x00\x71\x00\x75\x00\x65";
|
||||
|
||||
$this->_isBold = true;
|
||||
$this->_isItalic = true;
|
||||
$this->_isMonospaced = false;
|
||||
|
||||
$this->_underlinePosition = -100;
|
||||
$this->_underlineThickness = 50;
|
||||
$this->_strikePosition = 225;
|
||||
$this->_strikeThickness = 50;
|
||||
|
||||
$this->_unitsPerEm = 1000;
|
||||
|
||||
$this->_ascent = 718;
|
||||
$this->_descent = -207;
|
||||
$this->_lineGap = 275;
|
||||
|
||||
/* 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 => 0x014d, 0x03 => 0x01da,
|
||||
0x04 => 0x022c, 0x05 => 0x022c, 0x06 => 0x0379, 0x07 => 0x02d2,
|
||||
0x08 => 0x0116, 0x09 => 0x014d, 0x0a => 0x014d, 0x0b => 0x0185,
|
||||
0x0c => 0x0248, 0x0d => 0x0116, 0x0e => 0x014d, 0x0f => 0x0116,
|
||||
0x10 => 0x0116, 0x11 => 0x022c, 0x12 => 0x022c, 0x13 => 0x022c,
|
||||
0x14 => 0x022c, 0x15 => 0x022c, 0x16 => 0x022c, 0x17 => 0x022c,
|
||||
0x18 => 0x022c, 0x19 => 0x022c, 0x1a => 0x022c, 0x1b => 0x014d,
|
||||
0x1c => 0x014d, 0x1d => 0x0248, 0x1e => 0x0248, 0x1f => 0x0248,
|
||||
0x20 => 0x0263, 0x21 => 0x03cf, 0x22 => 0x02d2, 0x23 => 0x02d2,
|
||||
0x24 => 0x02d2, 0x25 => 0x02d2, 0x26 => 0x029b, 0x27 => 0x0263,
|
||||
0x28 => 0x030a, 0x29 => 0x02d2, 0x2a => 0x0116, 0x2b => 0x022c,
|
||||
0x2c => 0x02d2, 0x2d => 0x0263, 0x2e => 0x0341, 0x2f => 0x02d2,
|
||||
0x30 => 0x030a, 0x31 => 0x029b, 0x32 => 0x030a, 0x33 => 0x02d2,
|
||||
0x34 => 0x029b, 0x35 => 0x0263, 0x36 => 0x02d2, 0x37 => 0x029b,
|
||||
0x38 => 0x03b0, 0x39 => 0x029b, 0x3a => 0x029b, 0x3b => 0x0263,
|
||||
0x3c => 0x014d, 0x3d => 0x0116, 0x3e => 0x014d, 0x3f => 0x0248,
|
||||
0x40 => 0x022c, 0x41 => 0x0116, 0x42 => 0x022c, 0x43 => 0x0263,
|
||||
0x44 => 0x022c, 0x45 => 0x0263, 0x46 => 0x022c, 0x47 => 0x014d,
|
||||
0x48 => 0x0263, 0x49 => 0x0263, 0x4a => 0x0116, 0x4b => 0x0116,
|
||||
0x4c => 0x022c, 0x4d => 0x0116, 0x4e => 0x0379, 0x4f => 0x0263,
|
||||
0x50 => 0x0263, 0x51 => 0x0263, 0x52 => 0x0263, 0x53 => 0x0185,
|
||||
0x54 => 0x022c, 0x55 => 0x014d, 0x56 => 0x0263, 0x57 => 0x022c,
|
||||
0x58 => 0x030a, 0x59 => 0x022c, 0x5a => 0x022c, 0x5b => 0x01f4,
|
||||
0x5c => 0x0185, 0x5d => 0x0118, 0x5e => 0x0185, 0x5f => 0x0248,
|
||||
0x60 => 0x014d, 0x61 => 0x022c, 0x62 => 0x022c, 0x63 => 0xa7,
|
||||
0x64 => 0x022c, 0x65 => 0x022c, 0x66 => 0x022c, 0x67 => 0x022c,
|
||||
0x68 => 0xee, 0x69 => 0x01f4, 0x6a => 0x022c, 0x6b => 0x014d,
|
||||
0x6c => 0x014d, 0x6d => 0x0263, 0x6e => 0x0263, 0x6f => 0x022c,
|
||||
0x70 => 0x022c, 0x71 => 0x022c, 0x72 => 0x0116, 0x73 => 0x022c,
|
||||
0x74 => 0x015e, 0x75 => 0x0116, 0x76 => 0x01f4, 0x77 => 0x01f4,
|
||||
0x78 => 0x022c, 0x79 => 0x03e8, 0x7a => 0x03e8, 0x7b => 0x0263,
|
||||
0x7c => 0x014d, 0x7d => 0x014d, 0x7e => 0x014d, 0x7f => 0x014d,
|
||||
0x80 => 0x014d, 0x81 => 0x014d, 0x82 => 0x014d, 0x83 => 0x014d,
|
||||
0x84 => 0x014d, 0x85 => 0x014d, 0x86 => 0x014d, 0x87 => 0x014d,
|
||||
0x88 => 0x014d, 0x89 => 0x03e8, 0x8a => 0x03e8, 0x8b => 0x0172,
|
||||
0x8c => 0x0263, 0x8d => 0x030a, 0x8e => 0x03e8, 0x8f => 0x016d,
|
||||
0x90 => 0x0379, 0x91 => 0x0116, 0x92 => 0x0116, 0x93 => 0x0263,
|
||||
0x94 => 0x03b0, 0x95 => 0x0263, 0x96 => 0x0116, 0x97 => 0x022c,
|
||||
0x98 => 0x022c, 0x99 => 0x0263, 0x9a => 0x022c, 0x9b => 0x029b,
|
||||
0x9c => 0x0248, 0x9d => 0x029b, 0x9e => 0x02d2, 0x9f => 0x022c,
|
||||
0xa0 => 0x02d2, 0xa1 => 0x022c, 0xa2 => 0x022c, 0xa3 => 0x022c,
|
||||
0xa4 => 0x02d2, 0xa5 => 0x02d2, 0xa6 => 0x022c, 0xa7 => 0x02d2,
|
||||
0xa8 => 0x0263, 0xa9 => 0x029b, 0xaa => 0x02d2, 0xab => 0xfa,
|
||||
0xac => 0x02e1, 0xad => 0x029b, 0xae => 0x022c, 0xaf => 0x022c,
|
||||
0xb0 => 0x02d2, 0xb1 => 0x0116, 0xb2 => 0x022c, 0xb3 => 0x0263,
|
||||
0xb4 => 0x02d2, 0xb5 => 0x022c, 0xb6 => 0x029b, 0xb7 => 0x022c,
|
||||
0xb8 => 0x022c, 0xb9 => 0x0116, 0xba => 0x01ee, 0xbb => 0x02d2,
|
||||
0xbc => 0x030a, 0xbd => 0x0263, 0xbe => 0x022c, 0xbf => 0x02d2,
|
||||
0xc0 => 0x0185, 0xc1 => 0x022c, 0xc2 => 0x0263, 0xc3 => 0x029b,
|
||||
0xc4 => 0x030a, 0xc5 => 0x02d2, 0xc6 => 0x029b, 0xc7 => 0x02e7,
|
||||
0xc8 => 0x02d2, 0xc9 => 0x0263, 0xca => 0x014d, 0xcb => 0x030a,
|
||||
0xcc => 0x02d2, 0xcd => 0x02d2, 0xce => 0x0248, 0xcf => 0x0263,
|
||||
0xd0 => 0x0263, 0xd1 => 0x01ee, 0xd2 => 0x022c, 0xd3 => 0x02d2,
|
||||
0xd4 => 0x0116, 0xd5 => 0x029b, 0xd6 => 0x022c, 0xd7 => 0x022c,
|
||||
0xd8 => 0x022c, 0xd9 => 0x0263, 0xda => 0x0263, 0xdb => 0x02d2,
|
||||
0xdc => 0x0116, 0xdd => 0x0248, 0xde => 0x0118, 0xdf => 0x02e1,
|
||||
0xe0 => 0x030a, 0xe1 => 0x0116, 0xe2 => 0x0258, 0xe3 => 0x029b,
|
||||
0xe4 => 0x0185, 0xe5 => 0x0263, 0xe6 => 0x0263, 0xe7 => 0x0263,
|
||||
0xe8 => 0x0225, 0xe9 => 0x02d2, 0xea => 0x02d2, 0xeb => 0x0116,
|
||||
0xec => 0x0185, 0xed => 0x022c, 0xee => 0x02d2, 0xef => 0x02d2,
|
||||
0xf0 => 0x02d2, 0xf1 => 0x022c, 0xf2 => 0x01f4, 0xf3 => 0x0116,
|
||||
0xf4 => 0x030a, 0xf5 => 0x0263, 0xf6 => 0x022c, 0xf7 => 0x022c,
|
||||
0xf8 => 0x0116, 0xf9 => 0x030a, 0xfa => 0x02d2, 0xfb => 0x0264,
|
||||
0xfc => 0x0263, 0xfd => 0x014d, 0xfe => 0x030a, 0xff => 0x0263,
|
||||
0x0100 => 0x0116, 0x0101 => 0x0263, 0x0102 => 0x029b, 0x0103 => 0x0263,
|
||||
0x0104 => 0x0342, 0x0105 => 0x029b, 0x0106 => 0x0190, 0x0107 => 0x02d2,
|
||||
0x0108 => 0x0263, 0x0109 => 0x03e8, 0x010a => 0x022c, 0x010b => 0x0116,
|
||||
0x010c => 0x0116, 0x010d => 0x0263, 0x010e => 0x0342, 0x010f => 0x0225,
|
||||
0x0110 => 0x0263, 0x0111 => 0x0263, 0x0112 => 0x02d2, 0x0113 => 0x029b,
|
||||
0x0114 => 0x022c, 0x0115 => 0x0263, 0x0116 => 0x0342, 0x0117 => 0x029b,
|
||||
0x0118 => 0x029b, 0x0119 => 0x030a, 0x011a => 0x0190, 0x011b => 0x0263,
|
||||
0x011c => 0x02d2, 0x011d => 0x0263, 0x011e => 0x0225, 0x011f => 0x02d2,
|
||||
0x0120 => 0x0185, 0x0121 => 0x02d2, 0x0122 => 0x0263, 0x0123 => 0x02d2,
|
||||
0x0124 => 0x0263, 0x0125 => 0x02d2, 0x0126 => 0x02d2, 0x0127 => 0x02d2,
|
||||
0x0128 => 0x030a, 0x0129 => 0x01f4, 0x012a => 0x029b, 0x012b => 0x0116,
|
||||
0x012c => 0x022c, 0x012d => 0x0248, 0x012e => 0x0116, 0x012f => 0x0263,
|
||||
0x0130 => 0x014d, 0x0131 => 0x0248, 0x0132 => 0x0263, 0x0133 => 0x0263,
|
||||
0x0134 => 0x0225, 0x0135 => 0x0263, 0x0136 => 0x0263, 0x0137 => 0x01f4,
|
||||
0x0138 => 0x0263, 0x0139 => 0x014d, 0x013a => 0x0116, 0x013b => 0x022c,
|
||||
);
|
||||
|
||||
/* The cmap table is similarly synthesized.
|
||||
*/
|
||||
$cmapData = array(
|
||||
0x20 => 0x01, 0x21 => 0x02, 0x22 => 0x03, 0x23 => 0x04,
|
||||
0x24 => 0x05, 0x25 => 0x06, 0x26 => 0x07, 0x2019 => 0x08,
|
||||
0x28 => 0x09, 0x29 => 0x0a, 0x2a => 0x0b, 0x2b => 0x0c,
|
||||
0x2c => 0x0d, 0x2d => 0x0e, 0x2e => 0x0f, 0x2f => 0x10,
|
||||
0x30 => 0x11, 0x31 => 0x12, 0x32 => 0x13, 0x33 => 0x14,
|
||||
0x34 => 0x15, 0x35 => 0x16, 0x36 => 0x17, 0x37 => 0x18,
|
||||
0x38 => 0x19, 0x39 => 0x1a, 0x3a => 0x1b, 0x3b => 0x1c,
|
||||
0x3c => 0x1d, 0x3d => 0x1e, 0x3e => 0x1f, 0x3f => 0x20,
|
||||
0x40 => 0x21, 0x41 => 0x22, 0x42 => 0x23, 0x43 => 0x24,
|
||||
0x44 => 0x25, 0x45 => 0x26, 0x46 => 0x27, 0x47 => 0x28,
|
||||
0x48 => 0x29, 0x49 => 0x2a, 0x4a => 0x2b, 0x4b => 0x2c,
|
||||
0x4c => 0x2d, 0x4d => 0x2e, 0x4e => 0x2f, 0x4f => 0x30,
|
||||
0x50 => 0x31, 0x51 => 0x32, 0x52 => 0x33, 0x53 => 0x34,
|
||||
0x54 => 0x35, 0x55 => 0x36, 0x56 => 0x37, 0x57 => 0x38,
|
||||
0x58 => 0x39, 0x59 => 0x3a, 0x5a => 0x3b, 0x5b => 0x3c,
|
||||
0x5c => 0x3d, 0x5d => 0x3e, 0x5e => 0x3f, 0x5f => 0x40,
|
||||
0x2018 => 0x41, 0x61 => 0x42, 0x62 => 0x43, 0x63 => 0x44,
|
||||
0x64 => 0x45, 0x65 => 0x46, 0x66 => 0x47, 0x67 => 0x48,
|
||||
0x68 => 0x49, 0x69 => 0x4a, 0x6a => 0x4b, 0x6b => 0x4c,
|
||||
0x6c => 0x4d, 0x6d => 0x4e, 0x6e => 0x4f, 0x6f => 0x50,
|
||||
0x70 => 0x51, 0x71 => 0x52, 0x72 => 0x53, 0x73 => 0x54,
|
||||
0x74 => 0x55, 0x75 => 0x56, 0x76 => 0x57, 0x77 => 0x58,
|
||||
0x78 => 0x59, 0x79 => 0x5a, 0x7a => 0x5b, 0x7b => 0x5c,
|
||||
0x7c => 0x5d, 0x7d => 0x5e, 0x7e => 0x5f, 0xa1 => 0x60,
|
||||
0xa2 => 0x61, 0xa3 => 0x62, 0x2044 => 0x63, 0xa5 => 0x64,
|
||||
0x0192 => 0x65, 0xa7 => 0x66, 0xa4 => 0x67, 0x27 => 0x68,
|
||||
0x201c => 0x69, 0xab => 0x6a, 0x2039 => 0x6b, 0x203a => 0x6c,
|
||||
0xfb01 => 0x6d, 0xfb02 => 0x6e, 0x2013 => 0x6f, 0x2020 => 0x70,
|
||||
0x2021 => 0x71, 0xb7 => 0x72, 0xb6 => 0x73, 0x2022 => 0x74,
|
||||
0x201a => 0x75, 0x201e => 0x76, 0x201d => 0x77, 0xbb => 0x78,
|
||||
0x2026 => 0x79, 0x2030 => 0x7a, 0xbf => 0x7b, 0x60 => 0x7c,
|
||||
0xb4 => 0x7d, 0x02c6 => 0x7e, 0x02dc => 0x7f, 0xaf => 0x80,
|
||||
0x02d8 => 0x81, 0x02d9 => 0x82, 0xa8 => 0x83, 0x02da => 0x84,
|
||||
0xb8 => 0x85, 0x02dd => 0x86, 0x02db => 0x87, 0x02c7 => 0x88,
|
||||
0x2014 => 0x89, 0xc6 => 0x8a, 0xaa => 0x8b, 0x0141 => 0x8c,
|
||||
0xd8 => 0x8d, 0x0152 => 0x8e, 0xba => 0x8f, 0xe6 => 0x90,
|
||||
0x0131 => 0x91, 0x0142 => 0x92, 0xf8 => 0x93, 0x0153 => 0x94,
|
||||
0xdf => 0x95, 0xcf => 0x96, 0xe9 => 0x97, 0x0103 => 0x98,
|
||||
0x0171 => 0x99, 0x011b => 0x9a, 0x0178 => 0x9b, 0xf7 => 0x9c,
|
||||
0xdd => 0x9d, 0xc2 => 0x9e, 0xe1 => 0x9f, 0xdb => 0xa0,
|
||||
0xfd => 0xa1, 0x0219 => 0xa2, 0xea => 0xa3, 0x016e => 0xa4,
|
||||
0xdc => 0xa5, 0x0105 => 0xa6, 0xda => 0xa7, 0x0173 => 0xa8,
|
||||
0xcb => 0xa9, 0x0110 => 0xaa, 0xf6c3 => 0xab, 0xa9 => 0xac,
|
||||
0x0112 => 0xad, 0x010d => 0xae, 0xe5 => 0xaf, 0x0145 => 0xb0,
|
||||
0x013a => 0xb1, 0xe0 => 0xb2, 0x0162 => 0xb3, 0x0106 => 0xb4,
|
||||
0xe3 => 0xb5, 0x0116 => 0xb6, 0x0161 => 0xb7, 0x015f => 0xb8,
|
||||
0xed => 0xb9, 0x25ca => 0xba, 0x0158 => 0xbb, 0x0122 => 0xbc,
|
||||
0xfb => 0xbd, 0xe2 => 0xbe, 0x0100 => 0xbf, 0x0159 => 0xc0,
|
||||
0xe7 => 0xc1, 0x017b => 0xc2, 0xde => 0xc3, 0x014c => 0xc4,
|
||||
0x0154 => 0xc5, 0x015a => 0xc6, 0x010f => 0xc7, 0x016a => 0xc8,
|
||||
0x016f => 0xc9, 0xb3 => 0xca, 0xd2 => 0xcb, 0xc0 => 0xcc,
|
||||
0x0102 => 0xcd, 0xd7 => 0xce, 0xfa => 0xcf, 0x0164 => 0xd0,
|
||||
0x2202 => 0xd1, 0xff => 0xd2, 0x0143 => 0xd3, 0xee => 0xd4,
|
||||
0xca => 0xd5, 0xe4 => 0xd6, 0xeb => 0xd7, 0x0107 => 0xd8,
|
||||
0x0144 => 0xd9, 0x016b => 0xda, 0x0147 => 0xdb, 0xcd => 0xdc,
|
||||
0xb1 => 0xdd, 0xa6 => 0xde, 0xae => 0xdf, 0x011e => 0xe0,
|
||||
0x0130 => 0xe1, 0x2211 => 0xe2, 0xc8 => 0xe3, 0x0155 => 0xe4,
|
||||
0x014d => 0xe5, 0x0179 => 0xe6, 0x017d => 0xe7, 0x2265 => 0xe8,
|
||||
0xd0 => 0xe9, 0xc7 => 0xea, 0x013c => 0xeb, 0x0165 => 0xec,
|
||||
0x0119 => 0xed, 0x0172 => 0xee, 0xc1 => 0xef, 0xc4 => 0xf0,
|
||||
0xe8 => 0xf1, 0x017a => 0xf2, 0x012f => 0xf3, 0xd3 => 0xf4,
|
||||
0xf3 => 0xf5, 0x0101 => 0xf6, 0x015b => 0xf7, 0xef => 0xf8,
|
||||
0xd4 => 0xf9, 0xd9 => 0xfa, 0x2206 => 0xfb, 0xfe => 0xfc,
|
||||
0xb2 => 0xfd, 0xd6 => 0xfe, 0xb5 => 0xff, 0xec => 0x0100,
|
||||
0x0151 => 0x0101, 0x0118 => 0x0102, 0x0111 => 0x0103, 0xbe => 0x0104,
|
||||
0x015e => 0x0105, 0x013e => 0x0106, 0x0136 => 0x0107, 0x0139 => 0x0108,
|
||||
0x2122 => 0x0109, 0x0117 => 0x010a, 0xcc => 0x010b, 0x012a => 0x010c,
|
||||
0x013d => 0x010d, 0xbd => 0x010e, 0x2264 => 0x010f, 0xf4 => 0x0110,
|
||||
0xf1 => 0x0111, 0x0170 => 0x0112, 0xc9 => 0x0113, 0x0113 => 0x0114,
|
||||
0x011f => 0x0115, 0xbc => 0x0116, 0x0160 => 0x0117, 0x0218 => 0x0118,
|
||||
0x0150 => 0x0119, 0xb0 => 0x011a, 0xf2 => 0x011b, 0x010c => 0x011c,
|
||||
0xf9 => 0x011d, 0x221a => 0x011e, 0x010e => 0x011f, 0x0157 => 0x0120,
|
||||
0xd1 => 0x0121, 0xf5 => 0x0122, 0x0156 => 0x0123, 0x013b => 0x0124,
|
||||
0xc3 => 0x0125, 0x0104 => 0x0126, 0xc5 => 0x0127, 0xd5 => 0x0128,
|
||||
0x017c => 0x0129, 0x011a => 0x012a, 0x012e => 0x012b, 0x0137 => 0x012c,
|
||||
0x2212 => 0x012d, 0xce => 0x012e, 0x0148 => 0x012f, 0x0163 => 0x0130,
|
||||
0xac => 0x0131, 0xf6 => 0x0132, 0xfc => 0x0133, 0x2260 => 0x0134,
|
||||
0x0123 => 0x0135, 0xf0 => 0x0136, 0x017e => 0x0137, 0x0146 => 0x0138,
|
||||
0xb9 => 0x0139, 0x012b => 0x013a, 0x20ac => 0x013b);
|
||||
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('Helvetica-BoldOblique');
|
||||
}
|
||||
}
|
|
@ -0,0 +1,307 @@
|
|||
<?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: HelveticaOblique.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 Helvetica-Oblique.
|
||||
*
|
||||
* 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_HelveticaOblique extends Zend_Pdf_Resource_Font_Simple_Standard
|
||||
{
|
||||
/**** 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'] =
|
||||
"\x00\x43\x00\x6f\x00\x70\x00\x79\x00\x72\x00\x69\x00\x67\x00\x68\x00"
|
||||
. "\x74\x00\x20\x00\x28\x00\x63\x00\x29\x00\x20\x00\x31\x00\x39\x00"
|
||||
. "\x38\x00\x35\x00\x2c\x00\x20\x00\x31\x00\x39\x00\x38\x00\x37\x00"
|
||||
. "\x2c\x00\x20\x00\x31\x00\x39\x00\x38\x00\x39\x00\x2c\x00\x20\x00"
|
||||
. "\x31\x00\x39\x00\x39\x00\x30\x00\x2c\x00\x20\x00\x31\x00\x39\x00"
|
||||
. "\x39\x00\x37\x00\x20\x00\x41\x00\x64\x00\x6f\x00\x62\x00\x65\x00"
|
||||
. "\x20\x00\x53\x00\x79\x00\x73\x00\x74\x00\x65\x00\x6d\x00\x73\x00"
|
||||
. "\x20\x00\x49\x00\x6e\x00\x63\x00\x6f\x00\x72\x00\x70\x00\x6f\x00"
|
||||
. "\x72\x00\x61\x00\x74\x00\x65\x00\x64\x00\x2e\x00\x20\x00\x20\x00"
|
||||
. "\x41\x00\x6c\x00\x6c\x00\x20\x00\x52\x00\x69\x00\x67\x00\x68\x00"
|
||||
. "\x74\x00\x73\x00\x20\x00\x52\x00\x65\x00\x73\x00\x65\x00\x72\x00"
|
||||
. "\x76\x00\x65\x00\x64\x00\x2e\x00\x48\x00\x65\x00\x6c\x00\x76\x00"
|
||||
. "\x65\x00\x74\x00\x69\x00\x63\x00\x61\x00\x20\x00\x69\x00\x73\x00"
|
||||
. "\x20\x00\x61\x00\x20\x00\x74\x00\x72\x00\x61\x00\x64\x00\x65\x00"
|
||||
. "\x6d\x00\x61\x00\x72\x00\x6b\x00\x20\x00\x6f\x00\x66\x00\x20\x00"
|
||||
. "\x4c\x00\x69\x00\x6e\x00\x6f\x00\x74\x00\x79\x00\x70\x00\x65\x00"
|
||||
. "\x2d\x00\x48\x00\x65\x00\x6c\x00\x6c\x00\x20\x00\x41\x00\x47\x00"
|
||||
. "\x20\x00\x61\x00\x6e\x00\x64\x00\x2f\x00\x6f\x00\x72\x00\x20\x00"
|
||||
. "\x69\x00\x74\x00\x73\x00\x20\x00\x73\x00\x75\x00\x62\x00\x73\x00"
|
||||
. "\x69\x00\x64\x00\x69\x00\x61\x00\x72\x00\x69\x00\x65\x00\x73\x00"
|
||||
. "\x2e";
|
||||
$this->_fontNames[Zend_Pdf_Font::NAME_FAMILY]['en'] =
|
||||
"\x00\x48\x00\x65\x00\x6c\x00\x76\x00\x65\x00\x74\x00\x69\x00\x63\x00"
|
||||
. "\x61";
|
||||
$this->_fontNames[Zend_Pdf_Font::NAME_STYLE]['en'] =
|
||||
"\x00\x4d\x00\x65\x00\x64\x00\x69\x00\x75\x00\x6d";
|
||||
$this->_fontNames[Zend_Pdf_Font::NAME_ID]['en'] =
|
||||
"\x00\x34\x00\x33\x00\x30\x00\x35\x00\x35";
|
||||
$this->_fontNames[Zend_Pdf_Font::NAME_FULL]['en'] =
|
||||
"\x00\x48\x00\x65\x00\x6c\x00\x76\x00\x65\x00\x74\x00\x69\x00\x63\x00"
|
||||
. "\x61\x00\x2d\x00\x4f\x00\x62\x00\x6c\x00\x69\x00\x71\x00\x75\x00"
|
||||
. "\x65\x00\x20\x00\x4d\x00\x65\x00\x64\x00\x69\x00\x75\x00\x6d";
|
||||
$this->_fontNames[Zend_Pdf_Font::NAME_VERSION]['en'] =
|
||||
"\x00\x30\x00\x30\x00\x32\x00\x2e\x00\x30\x00\x30\x00\x30";
|
||||
$this->_fontNames[Zend_Pdf_Font::NAME_POSTSCRIPT]['en'] =
|
||||
"\x00\x48\x00\x65\x00\x6c\x00\x76\x00\x65\x00\x74\x00\x69\x00\x63\x00"
|
||||
. "\x61\x00\x2d\x00\x4f\x00\x62\x00\x6c\x00\x69\x00\x71\x00\x75\x00"
|
||||
. "\x65";
|
||||
|
||||
$this->_isBold = false;
|
||||
$this->_isItalic = true;
|
||||
$this->_isMonospaced = false;
|
||||
|
||||
$this->_underlinePosition = -100;
|
||||
$this->_underlineThickness = 50;
|
||||
$this->_strikePosition = 225;
|
||||
$this->_strikeThickness = 50;
|
||||
|
||||
$this->_unitsPerEm = 1000;
|
||||
|
||||
$this->_ascent = 718;
|
||||
$this->_descent = -207;
|
||||
$this->_lineGap = 275;
|
||||
|
||||
/* 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 => 0x0116, 0x03 => 0x0163,
|
||||
0x04 => 0x022c, 0x05 => 0x022c, 0x06 => 0x0379, 0x07 => 0x029b,
|
||||
0x08 => 0xde, 0x09 => 0x014d, 0x0a => 0x014d, 0x0b => 0x0185,
|
||||
0x0c => 0x0248, 0x0d => 0x0116, 0x0e => 0x014d, 0x0f => 0x0116,
|
||||
0x10 => 0x0116, 0x11 => 0x022c, 0x12 => 0x022c, 0x13 => 0x022c,
|
||||
0x14 => 0x022c, 0x15 => 0x022c, 0x16 => 0x022c, 0x17 => 0x022c,
|
||||
0x18 => 0x022c, 0x19 => 0x022c, 0x1a => 0x022c, 0x1b => 0x0116,
|
||||
0x1c => 0x0116, 0x1d => 0x0248, 0x1e => 0x0248, 0x1f => 0x0248,
|
||||
0x20 => 0x022c, 0x21 => 0x03f7, 0x22 => 0x029b, 0x23 => 0x029b,
|
||||
0x24 => 0x02d2, 0x25 => 0x02d2, 0x26 => 0x029b, 0x27 => 0x0263,
|
||||
0x28 => 0x030a, 0x29 => 0x02d2, 0x2a => 0x0116, 0x2b => 0x01f4,
|
||||
0x2c => 0x029b, 0x2d => 0x022c, 0x2e => 0x0341, 0x2f => 0x02d2,
|
||||
0x30 => 0x030a, 0x31 => 0x029b, 0x32 => 0x030a, 0x33 => 0x02d2,
|
||||
0x34 => 0x029b, 0x35 => 0x0263, 0x36 => 0x02d2, 0x37 => 0x029b,
|
||||
0x38 => 0x03b0, 0x39 => 0x029b, 0x3a => 0x029b, 0x3b => 0x0263,
|
||||
0x3c => 0x0116, 0x3d => 0x0116, 0x3e => 0x0116, 0x3f => 0x01d5,
|
||||
0x40 => 0x022c, 0x41 => 0xde, 0x42 => 0x022c, 0x43 => 0x022c,
|
||||
0x44 => 0x01f4, 0x45 => 0x022c, 0x46 => 0x022c, 0x47 => 0x0116,
|
||||
0x48 => 0x022c, 0x49 => 0x022c, 0x4a => 0xde, 0x4b => 0xde,
|
||||
0x4c => 0x01f4, 0x4d => 0xde, 0x4e => 0x0341, 0x4f => 0x022c,
|
||||
0x50 => 0x022c, 0x51 => 0x022c, 0x52 => 0x022c, 0x53 => 0x014d,
|
||||
0x54 => 0x01f4, 0x55 => 0x0116, 0x56 => 0x022c, 0x57 => 0x01f4,
|
||||
0x58 => 0x02d2, 0x59 => 0x01f4, 0x5a => 0x01f4, 0x5b => 0x01f4,
|
||||
0x5c => 0x014e, 0x5d => 0x0104, 0x5e => 0x014e, 0x5f => 0x0248,
|
||||
0x60 => 0x014d, 0x61 => 0x022c, 0x62 => 0x022c, 0x63 => 0xa7,
|
||||
0x64 => 0x022c, 0x65 => 0x022c, 0x66 => 0x022c, 0x67 => 0x022c,
|
||||
0x68 => 0xbf, 0x69 => 0x014d, 0x6a => 0x022c, 0x6b => 0x014d,
|
||||
0x6c => 0x014d, 0x6d => 0x01f4, 0x6e => 0x01f4, 0x6f => 0x022c,
|
||||
0x70 => 0x022c, 0x71 => 0x022c, 0x72 => 0x0116, 0x73 => 0x0219,
|
||||
0x74 => 0x015e, 0x75 => 0xde, 0x76 => 0x014d, 0x77 => 0x014d,
|
||||
0x78 => 0x022c, 0x79 => 0x03e8, 0x7a => 0x03e8, 0x7b => 0x0263,
|
||||
0x7c => 0x014d, 0x7d => 0x014d, 0x7e => 0x014d, 0x7f => 0x014d,
|
||||
0x80 => 0x014d, 0x81 => 0x014d, 0x82 => 0x014d, 0x83 => 0x014d,
|
||||
0x84 => 0x014d, 0x85 => 0x014d, 0x86 => 0x014d, 0x87 => 0x014d,
|
||||
0x88 => 0x014d, 0x89 => 0x03e8, 0x8a => 0x03e8, 0x8b => 0x0172,
|
||||
0x8c => 0x022c, 0x8d => 0x030a, 0x8e => 0x03e8, 0x8f => 0x016d,
|
||||
0x90 => 0x0379, 0x91 => 0x0116, 0x92 => 0xde, 0x93 => 0x0263,
|
||||
0x94 => 0x03b0, 0x95 => 0x0263, 0x96 => 0x0116, 0x97 => 0x022c,
|
||||
0x98 => 0x022c, 0x99 => 0x022c, 0x9a => 0x022c, 0x9b => 0x029b,
|
||||
0x9c => 0x0248, 0x9d => 0x029b, 0x9e => 0x029b, 0x9f => 0x022c,
|
||||
0xa0 => 0x02d2, 0xa1 => 0x01f4, 0xa2 => 0x01f4, 0xa3 => 0x022c,
|
||||
0xa4 => 0x02d2, 0xa5 => 0x02d2, 0xa6 => 0x022c, 0xa7 => 0x02d2,
|
||||
0xa8 => 0x022c, 0xa9 => 0x029b, 0xaa => 0x02d2, 0xab => 0xfa,
|
||||
0xac => 0x02e1, 0xad => 0x029b, 0xae => 0x01f4, 0xaf => 0x022c,
|
||||
0xb0 => 0x02d2, 0xb1 => 0xde, 0xb2 => 0x022c, 0xb3 => 0x0263,
|
||||
0xb4 => 0x02d2, 0xb5 => 0x022c, 0xb6 => 0x029b, 0xb7 => 0x01f4,
|
||||
0xb8 => 0x01f4, 0xb9 => 0x0116, 0xba => 0x01d7, 0xbb => 0x02d2,
|
||||
0xbc => 0x030a, 0xbd => 0x022c, 0xbe => 0x022c, 0xbf => 0x029b,
|
||||
0xc0 => 0x014d, 0xc1 => 0x01f4, 0xc2 => 0x0263, 0xc3 => 0x029b,
|
||||
0xc4 => 0x030a, 0xc5 => 0x02d2, 0xc6 => 0x029b, 0xc7 => 0x0283,
|
||||
0xc8 => 0x02d2, 0xc9 => 0x022c, 0xca => 0x014d, 0xcb => 0x030a,
|
||||
0xcc => 0x029b, 0xcd => 0x029b, 0xce => 0x0248, 0xcf => 0x022c,
|
||||
0xd0 => 0x0263, 0xd1 => 0x01dc, 0xd2 => 0x01f4, 0xd3 => 0x02d2,
|
||||
0xd4 => 0x0116, 0xd5 => 0x029b, 0xd6 => 0x022c, 0xd7 => 0x022c,
|
||||
0xd8 => 0x01f4, 0xd9 => 0x022c, 0xda => 0x022c, 0xdb => 0x02d2,
|
||||
0xdc => 0x0116, 0xdd => 0x0248, 0xde => 0x0104, 0xdf => 0x02e1,
|
||||
0xe0 => 0x030a, 0xe1 => 0x0116, 0xe2 => 0x0258, 0xe3 => 0x029b,
|
||||
0xe4 => 0x014d, 0xe5 => 0x022c, 0xe6 => 0x0263, 0xe7 => 0x0263,
|
||||
0xe8 => 0x0225, 0xe9 => 0x02d2, 0xea => 0x02d2, 0xeb => 0xde,
|
||||
0xec => 0x013d, 0xed => 0x022c, 0xee => 0x02d2, 0xef => 0x029b,
|
||||
0xf0 => 0x029b, 0xf1 => 0x022c, 0xf2 => 0x01f4, 0xf3 => 0xde,
|
||||
0xf4 => 0x030a, 0xf5 => 0x022c, 0xf6 => 0x022c, 0xf7 => 0x01f4,
|
||||
0xf8 => 0x0116, 0xf9 => 0x030a, 0xfa => 0x02d2, 0xfb => 0x0264,
|
||||
0xfc => 0x022c, 0xfd => 0x014d, 0xfe => 0x030a, 0xff => 0x022c,
|
||||
0x0100 => 0x0116, 0x0101 => 0x022c, 0x0102 => 0x029b, 0x0103 => 0x022c,
|
||||
0x0104 => 0x0342, 0x0105 => 0x029b, 0x0106 => 0x012b, 0x0107 => 0x029b,
|
||||
0x0108 => 0x022c, 0x0109 => 0x03e8, 0x010a => 0x022c, 0x010b => 0x0116,
|
||||
0x010c => 0x0116, 0x010d => 0x022c, 0x010e => 0x0342, 0x010f => 0x0225,
|
||||
0x0110 => 0x022c, 0x0111 => 0x022c, 0x0112 => 0x02d2, 0x0113 => 0x029b,
|
||||
0x0114 => 0x022c, 0x0115 => 0x022c, 0x0116 => 0x0342, 0x0117 => 0x029b,
|
||||
0x0118 => 0x029b, 0x0119 => 0x030a, 0x011a => 0x0190, 0x011b => 0x022c,
|
||||
0x011c => 0x02d2, 0x011d => 0x022c, 0x011e => 0x01c5, 0x011f => 0x02d2,
|
||||
0x0120 => 0x014d, 0x0121 => 0x02d2, 0x0122 => 0x022c, 0x0123 => 0x02d2,
|
||||
0x0124 => 0x022c, 0x0125 => 0x029b, 0x0126 => 0x029b, 0x0127 => 0x029b,
|
||||
0x0128 => 0x030a, 0x0129 => 0x01f4, 0x012a => 0x029b, 0x012b => 0x0116,
|
||||
0x012c => 0x01f4, 0x012d => 0x0248, 0x012e => 0x0116, 0x012f => 0x022c,
|
||||
0x0130 => 0x0116, 0x0131 => 0x0248, 0x0132 => 0x022c, 0x0133 => 0x022c,
|
||||
0x0134 => 0x0225, 0x0135 => 0x022c, 0x0136 => 0x022c, 0x0137 => 0x01f4,
|
||||
0x0138 => 0x022c, 0x0139 => 0x014d, 0x013a => 0x0116, 0x013b => 0x022c,
|
||||
);
|
||||
|
||||
/* The cmap table is similarly synthesized.
|
||||
*/
|
||||
$cmapData = array(
|
||||
0x20 => 0x01, 0x21 => 0x02, 0x22 => 0x03, 0x23 => 0x04,
|
||||
0x24 => 0x05, 0x25 => 0x06, 0x26 => 0x07, 0x2019 => 0x08,
|
||||
0x28 => 0x09, 0x29 => 0x0a, 0x2a => 0x0b, 0x2b => 0x0c,
|
||||
0x2c => 0x0d, 0x2d => 0x0e, 0x2e => 0x0f, 0x2f => 0x10,
|
||||
0x30 => 0x11, 0x31 => 0x12, 0x32 => 0x13, 0x33 => 0x14,
|
||||
0x34 => 0x15, 0x35 => 0x16, 0x36 => 0x17, 0x37 => 0x18,
|
||||
0x38 => 0x19, 0x39 => 0x1a, 0x3a => 0x1b, 0x3b => 0x1c,
|
||||
0x3c => 0x1d, 0x3d => 0x1e, 0x3e => 0x1f, 0x3f => 0x20,
|
||||
0x40 => 0x21, 0x41 => 0x22, 0x42 => 0x23, 0x43 => 0x24,
|
||||
0x44 => 0x25, 0x45 => 0x26, 0x46 => 0x27, 0x47 => 0x28,
|
||||
0x48 => 0x29, 0x49 => 0x2a, 0x4a => 0x2b, 0x4b => 0x2c,
|
||||
0x4c => 0x2d, 0x4d => 0x2e, 0x4e => 0x2f, 0x4f => 0x30,
|
||||
0x50 => 0x31, 0x51 => 0x32, 0x52 => 0x33, 0x53 => 0x34,
|
||||
0x54 => 0x35, 0x55 => 0x36, 0x56 => 0x37, 0x57 => 0x38,
|
||||
0x58 => 0x39, 0x59 => 0x3a, 0x5a => 0x3b, 0x5b => 0x3c,
|
||||
0x5c => 0x3d, 0x5d => 0x3e, 0x5e => 0x3f, 0x5f => 0x40,
|
||||
0x2018 => 0x41, 0x61 => 0x42, 0x62 => 0x43, 0x63 => 0x44,
|
||||
0x64 => 0x45, 0x65 => 0x46, 0x66 => 0x47, 0x67 => 0x48,
|
||||
0x68 => 0x49, 0x69 => 0x4a, 0x6a => 0x4b, 0x6b => 0x4c,
|
||||
0x6c => 0x4d, 0x6d => 0x4e, 0x6e => 0x4f, 0x6f => 0x50,
|
||||
0x70 => 0x51, 0x71 => 0x52, 0x72 => 0x53, 0x73 => 0x54,
|
||||
0x74 => 0x55, 0x75 => 0x56, 0x76 => 0x57, 0x77 => 0x58,
|
||||
0x78 => 0x59, 0x79 => 0x5a, 0x7a => 0x5b, 0x7b => 0x5c,
|
||||
0x7c => 0x5d, 0x7d => 0x5e, 0x7e => 0x5f, 0xa1 => 0x60,
|
||||
0xa2 => 0x61, 0xa3 => 0x62, 0x2044 => 0x63, 0xa5 => 0x64,
|
||||
0x0192 => 0x65, 0xa7 => 0x66, 0xa4 => 0x67, 0x27 => 0x68,
|
||||
0x201c => 0x69, 0xab => 0x6a, 0x2039 => 0x6b, 0x203a => 0x6c,
|
||||
0xfb01 => 0x6d, 0xfb02 => 0x6e, 0x2013 => 0x6f, 0x2020 => 0x70,
|
||||
0x2021 => 0x71, 0xb7 => 0x72, 0xb6 => 0x73, 0x2022 => 0x74,
|
||||
0x201a => 0x75, 0x201e => 0x76, 0x201d => 0x77, 0xbb => 0x78,
|
||||
0x2026 => 0x79, 0x2030 => 0x7a, 0xbf => 0x7b, 0x60 => 0x7c,
|
||||
0xb4 => 0x7d, 0x02c6 => 0x7e, 0x02dc => 0x7f, 0xaf => 0x80,
|
||||
0x02d8 => 0x81, 0x02d9 => 0x82, 0xa8 => 0x83, 0x02da => 0x84,
|
||||
0xb8 => 0x85, 0x02dd => 0x86, 0x02db => 0x87, 0x02c7 => 0x88,
|
||||
0x2014 => 0x89, 0xc6 => 0x8a, 0xaa => 0x8b, 0x0141 => 0x8c,
|
||||
0xd8 => 0x8d, 0x0152 => 0x8e, 0xba => 0x8f, 0xe6 => 0x90,
|
||||
0x0131 => 0x91, 0x0142 => 0x92, 0xf8 => 0x93, 0x0153 => 0x94,
|
||||
0xdf => 0x95, 0xcf => 0x96, 0xe9 => 0x97, 0x0103 => 0x98,
|
||||
0x0171 => 0x99, 0x011b => 0x9a, 0x0178 => 0x9b, 0xf7 => 0x9c,
|
||||
0xdd => 0x9d, 0xc2 => 0x9e, 0xe1 => 0x9f, 0xdb => 0xa0,
|
||||
0xfd => 0xa1, 0x0219 => 0xa2, 0xea => 0xa3, 0x016e => 0xa4,
|
||||
0xdc => 0xa5, 0x0105 => 0xa6, 0xda => 0xa7, 0x0173 => 0xa8,
|
||||
0xcb => 0xa9, 0x0110 => 0xaa, 0xf6c3 => 0xab, 0xa9 => 0xac,
|
||||
0x0112 => 0xad, 0x010d => 0xae, 0xe5 => 0xaf, 0x0145 => 0xb0,
|
||||
0x013a => 0xb1, 0xe0 => 0xb2, 0x0162 => 0xb3, 0x0106 => 0xb4,
|
||||
0xe3 => 0xb5, 0x0116 => 0xb6, 0x0161 => 0xb7, 0x015f => 0xb8,
|
||||
0xed => 0xb9, 0x25ca => 0xba, 0x0158 => 0xbb, 0x0122 => 0xbc,
|
||||
0xfb => 0xbd, 0xe2 => 0xbe, 0x0100 => 0xbf, 0x0159 => 0xc0,
|
||||
0xe7 => 0xc1, 0x017b => 0xc2, 0xde => 0xc3, 0x014c => 0xc4,
|
||||
0x0154 => 0xc5, 0x015a => 0xc6, 0x010f => 0xc7, 0x016a => 0xc8,
|
||||
0x016f => 0xc9, 0xb3 => 0xca, 0xd2 => 0xcb, 0xc0 => 0xcc,
|
||||
0x0102 => 0xcd, 0xd7 => 0xce, 0xfa => 0xcf, 0x0164 => 0xd0,
|
||||
0x2202 => 0xd1, 0xff => 0xd2, 0x0143 => 0xd3, 0xee => 0xd4,
|
||||
0xca => 0xd5, 0xe4 => 0xd6, 0xeb => 0xd7, 0x0107 => 0xd8,
|
||||
0x0144 => 0xd9, 0x016b => 0xda, 0x0147 => 0xdb, 0xcd => 0xdc,
|
||||
0xb1 => 0xdd, 0xa6 => 0xde, 0xae => 0xdf, 0x011e => 0xe0,
|
||||
0x0130 => 0xe1, 0x2211 => 0xe2, 0xc8 => 0xe3, 0x0155 => 0xe4,
|
||||
0x014d => 0xe5, 0x0179 => 0xe6, 0x017d => 0xe7, 0x2265 => 0xe8,
|
||||
0xd0 => 0xe9, 0xc7 => 0xea, 0x013c => 0xeb, 0x0165 => 0xec,
|
||||
0x0119 => 0xed, 0x0172 => 0xee, 0xc1 => 0xef, 0xc4 => 0xf0,
|
||||
0xe8 => 0xf1, 0x017a => 0xf2, 0x012f => 0xf3, 0xd3 => 0xf4,
|
||||
0xf3 => 0xf5, 0x0101 => 0xf6, 0x015b => 0xf7, 0xef => 0xf8,
|
||||
0xd4 => 0xf9, 0xd9 => 0xfa, 0x2206 => 0xfb, 0xfe => 0xfc,
|
||||
0xb2 => 0xfd, 0xd6 => 0xfe, 0xb5 => 0xff, 0xec => 0x0100,
|
||||
0x0151 => 0x0101, 0x0118 => 0x0102, 0x0111 => 0x0103, 0xbe => 0x0104,
|
||||
0x015e => 0x0105, 0x013e => 0x0106, 0x0136 => 0x0107, 0x0139 => 0x0108,
|
||||
0x2122 => 0x0109, 0x0117 => 0x010a, 0xcc => 0x010b, 0x012a => 0x010c,
|
||||
0x013d => 0x010d, 0xbd => 0x010e, 0x2264 => 0x010f, 0xf4 => 0x0110,
|
||||
0xf1 => 0x0111, 0x0170 => 0x0112, 0xc9 => 0x0113, 0x0113 => 0x0114,
|
||||
0x011f => 0x0115, 0xbc => 0x0116, 0x0160 => 0x0117, 0x0218 => 0x0118,
|
||||
0x0150 => 0x0119, 0xb0 => 0x011a, 0xf2 => 0x011b, 0x010c => 0x011c,
|
||||
0xf9 => 0x011d, 0x221a => 0x011e, 0x010e => 0x011f, 0x0157 => 0x0120,
|
||||
0xd1 => 0x0121, 0xf5 => 0x0122, 0x0156 => 0x0123, 0x013b => 0x0124,
|
||||
0xc3 => 0x0125, 0x0104 => 0x0126, 0xc5 => 0x0127, 0xd5 => 0x0128,
|
||||
0x017c => 0x0129, 0x011a => 0x012a, 0x012e => 0x012b, 0x0137 => 0x012c,
|
||||
0x2212 => 0x012d, 0xce => 0x012e, 0x0148 => 0x012f, 0x0163 => 0x0130,
|
||||
0xac => 0x0131, 0xf6 => 0x0132, 0xfc => 0x0133, 0x2260 => 0x0134,
|
||||
0x0123 => 0x0135, 0xf0 => 0x0136, 0x017e => 0x0137, 0x0146 => 0x0138,
|
||||
0xb9 => 0x0139, 0x012b => 0x013a, 0x20ac => 0x013b);
|
||||
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('Helvetica-Oblique');
|
||||
}
|
||||
}
|
|
@ -0,0 +1,465 @@
|
|||
<?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: Symbol.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 Symbol.
|
||||
*
|
||||
* 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_Symbol 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", 0x21 => "\x21", 0x2200 => "\x22", 0x23 => "\x23",
|
||||
0x2203 => "\x24", 0x25 => "\x25", 0x26 => "\x26", 0x220b => "\x27",
|
||||
0x28 => "\x28", 0x29 => "\x29", 0x2217 => "\x2a", 0x2b => "\x2b",
|
||||
0x2c => "\x2c", 0x2212 => "\x2d", 0x2e => "\x2e", 0x2f => "\x2f",
|
||||
0x30 => "\x30", 0x31 => "\x31", 0x32 => "\x32", 0x33 => "\x33",
|
||||
0x34 => "\x34", 0x35 => "\x35", 0x36 => "\x36", 0x37 => "\x37",
|
||||
0x38 => "\x38", 0x39 => "\x39", 0x3a => "\x3a", 0x3b => "\x3b",
|
||||
0x3c => "\x3c", 0x3d => "\x3d", 0x3e => "\x3e", 0x3f => "\x3f",
|
||||
0x2245 => "\x40", 0x0391 => "\x41", 0x0392 => "\x42", 0x03a7 => "\x43",
|
||||
0x2206 => "\x44", 0x0395 => "\x45", 0x03a6 => "\x46", 0x0393 => "\x47",
|
||||
0x0397 => "\x48", 0x0399 => "\x49", 0x03d1 => "\x4a", 0x039a => "\x4b",
|
||||
0x039b => "\x4c", 0x039c => "\x4d", 0x039d => "\x4e", 0x039f => "\x4f",
|
||||
0x03a0 => "\x50", 0x0398 => "\x51", 0x03a1 => "\x52", 0x03a3 => "\x53",
|
||||
0x03a4 => "\x54", 0x03a5 => "\x55", 0x03c2 => "\x56", 0x2126 => "\x57",
|
||||
0x039e => "\x58", 0x03a8 => "\x59", 0x0396 => "\x5a", 0x5b => "\x5b",
|
||||
0x2234 => "\x5c", 0x5d => "\x5d", 0x22a5 => "\x5e", 0x5f => "\x5f",
|
||||
0xf8e5 => "\x60", 0x03b1 => "\x61", 0x03b2 => "\x62", 0x03c7 => "\x63",
|
||||
0x03b4 => "\x64", 0x03b5 => "\x65", 0x03c6 => "\x66", 0x03b3 => "\x67",
|
||||
0x03b7 => "\x68", 0x03b9 => "\x69", 0x03d5 => "\x6a", 0x03ba => "\x6b",
|
||||
0x03bb => "\x6c", 0xb5 => "\x6d", 0x03bd => "\x6e", 0x03bf => "\x6f",
|
||||
0x03c0 => "\x70", 0x03b8 => "\x71", 0x03c1 => "\x72", 0x03c3 => "\x73",
|
||||
0x03c4 => "\x74", 0x03c5 => "\x75", 0x03d6 => "\x76", 0x03c9 => "\x77",
|
||||
0x03be => "\x78", 0x03c8 => "\x79", 0x03b6 => "\x7a", 0x7b => "\x7b",
|
||||
0x7c => "\x7c", 0x7d => "\x7d", 0x223c => "\x7e", 0x20ac => "\xa0",
|
||||
0x03d2 => "\xa1", 0x2032 => "\xa2", 0x2264 => "\xa3", 0x2044 => "\xa4",
|
||||
0x221e => "\xa5", 0x0192 => "\xa6", 0x2663 => "\xa7", 0x2666 => "\xa8",
|
||||
0x2665 => "\xa9", 0x2660 => "\xaa", 0x2194 => "\xab", 0x2190 => "\xac",
|
||||
0x2191 => "\xad", 0x2192 => "\xae", 0x2193 => "\xaf", 0xb0 => "\xb0",
|
||||
0xb1 => "\xb1", 0x2033 => "\xb2", 0x2265 => "\xb3", 0xd7 => "\xb4",
|
||||
0x221d => "\xb5", 0x2202 => "\xb6", 0x2022 => "\xb7", 0xf7 => "\xb8",
|
||||
0x2260 => "\xb9", 0x2261 => "\xba", 0x2248 => "\xbb", 0x2026 => "\xbc",
|
||||
0xf8e6 => "\xbd", 0xf8e7 => "\xbe", 0x21b5 => "\xbf", 0x2135 => "\xc0",
|
||||
0x2111 => "\xc1", 0x211c => "\xc2", 0x2118 => "\xc3", 0x2297 => "\xc4",
|
||||
0x2295 => "\xc5", 0x2205 => "\xc6", 0x2229 => "\xc7", 0x222a => "\xc8",
|
||||
0x2283 => "\xc9", 0x2287 => "\xca", 0x2284 => "\xcb", 0x2282 => "\xcc",
|
||||
0x2286 => "\xcd", 0x2208 => "\xce", 0x2209 => "\xcf", 0x2220 => "\xd0",
|
||||
0x2207 => "\xd1", 0xf6da => "\xd2", 0xf6d9 => "\xd3", 0xf6db => "\xd4",
|
||||
0x220f => "\xd5", 0x221a => "\xd6", 0x22c5 => "\xd7", 0xac => "\xd8",
|
||||
0x2227 => "\xd9", 0x2228 => "\xda", 0x21d4 => "\xdb", 0x21d0 => "\xdc",
|
||||
0x21d1 => "\xdd", 0x21d2 => "\xde", 0x21d3 => "\xdf", 0x25ca => "\xe0",
|
||||
0x2329 => "\xe1", 0xf8e8 => "\xe2", 0xf8e9 => "\xe3", 0xf8ea => "\xe4",
|
||||
0x2211 => "\xe5", 0xf8eb => "\xe6", 0xf8ec => "\xe7", 0xf8ed => "\xe8",
|
||||
0xf8ee => "\xe9", 0xf8ef => "\xea", 0xf8f0 => "\xeb", 0xf8f1 => "\xec",
|
||||
0xf8f2 => "\xed", 0xf8f3 => "\xee", 0xf8f4 => "\xef", 0x232a => "\xf1",
|
||||
0x222b => "\xf2", 0x2320 => "\xf3", 0xf8f5 => "\xf4", 0x2321 => "\xf5",
|
||||
0xf8f6 => "\xf6", 0xf8f7 => "\xf7", 0xf8f8 => "\xf8", 0xf8f9 => "\xf9",
|
||||
0xf8fa => "\xfa", 0xf8fb => "\xfb", 0xf8fc => "\xfc", 0xf8fd => "\xfd",
|
||||
0xf8fe => "\xfe");
|
||||
|
||||
/**
|
||||
* Array for conversion from special font encoding to local encoding.
|
||||
* See {@link decodeString()}.
|
||||
* @var array
|
||||
*/
|
||||
protected $_fromFontEncoding = array(
|
||||
0x20 => "\x00\x20", 0x21 => "\x00\x21", 0x22 => "\x22\x00",
|
||||
0x23 => "\x00\x23", 0x24 => "\x22\x03", 0x25 => "\x00\x25",
|
||||
0x26 => "\x00\x26", 0x27 => "\x22\x0b", 0x28 => "\x00\x28",
|
||||
0x29 => "\x00\x29", 0x2a => "\x22\x17", 0x2b => "\x00\x2b",
|
||||
0x2c => "\x00\x2c", 0x2d => "\x22\x12", 0x2e => "\x00\x2e",
|
||||
0x2f => "\x00\x2f", 0x30 => "\x00\x30", 0x31 => "\x00\x31",
|
||||
0x32 => "\x00\x32", 0x33 => "\x00\x33", 0x34 => "\x00\x34",
|
||||
0x35 => "\x00\x35", 0x36 => "\x00\x36", 0x37 => "\x00\x37",
|
||||
0x38 => "\x00\x38", 0x39 => "\x00\x39", 0x3a => "\x00\x3a",
|
||||
0x3b => "\x00\x3b", 0x3c => "\x00\x3c", 0x3d => "\x00\x3d",
|
||||
0x3e => "\x00\x3e", 0x3f => "\x00\x3f", 0x40 => "\x22\x45",
|
||||
0x41 => "\x03\x91", 0x42 => "\x03\x92", 0x43 => "\x03\xa7",
|
||||
0x44 => "\x22\x06", 0x45 => "\x03\x95", 0x46 => "\x03\xa6",
|
||||
0x47 => "\x03\x93", 0x48 => "\x03\x97", 0x49 => "\x03\x99",
|
||||
0x4a => "\x03\xd1", 0x4b => "\x03\x9a", 0x4c => "\x03\x9b",
|
||||
0x4d => "\x03\x9c", 0x4e => "\x03\x9d", 0x4f => "\x03\x9f",
|
||||
0x50 => "\x03\xa0", 0x51 => "\x03\x98", 0x52 => "\x03\xa1",
|
||||
0x53 => "\x03\xa3", 0x54 => "\x03\xa4", 0x55 => "\x03\xa5",
|
||||
0x56 => "\x03\xc2", 0x57 => "\x21\x26", 0x58 => "\x03\x9e",
|
||||
0x59 => "\x03\xa8", 0x5a => "\x03\x96", 0x5b => "\x00\x5b",
|
||||
0x5c => "\x22\x34", 0x5d => "\x00\x5d", 0x5e => "\x22\xa5",
|
||||
0x5f => "\x00\x5f", 0x60 => "\xf8\xe5", 0x61 => "\x03\xb1",
|
||||
0x62 => "\x03\xb2", 0x63 => "\x03\xc7", 0x64 => "\x03\xb4",
|
||||
0x65 => "\x03\xb5", 0x66 => "\x03\xc6", 0x67 => "\x03\xb3",
|
||||
0x68 => "\x03\xb7", 0x69 => "\x03\xb9", 0x6a => "\x03\xd5",
|
||||
0x6b => "\x03\xba", 0x6c => "\x03\xbb", 0x6d => "\x00\xb5",
|
||||
0x6e => "\x03\xbd", 0x6f => "\x03\xbf", 0x70 => "\x03\xc0",
|
||||
0x71 => "\x03\xb8", 0x72 => "\x03\xc1", 0x73 => "\x03\xc3",
|
||||
0x74 => "\x03\xc4", 0x75 => "\x03\xc5", 0x76 => "\x03\xd6",
|
||||
0x77 => "\x03\xc9", 0x78 => "\x03\xbe", 0x79 => "\x03\xc8",
|
||||
0x7a => "\x03\xb6", 0x7b => "\x00\x7b", 0x7c => "\x00\x7c",
|
||||
0x7d => "\x00\x7d", 0x7e => "\x22\x3c", 0xa0 => "\x20\xac",
|
||||
0xa1 => "\x03\xd2", 0xa2 => "\x20\x32", 0xa3 => "\x22\x64",
|
||||
0xa4 => "\x20\x44", 0xa5 => "\x22\x1e", 0xa6 => "\x01\x92",
|
||||
0xa7 => "\x26\x63", 0xa8 => "\x26\x66", 0xa9 => "\x26\x65",
|
||||
0xaa => "\x26\x60", 0xab => "\x21\x94", 0xac => "\x21\x90",
|
||||
0xad => "\x21\x91", 0xae => "\x21\x92", 0xaf => "\x21\x93",
|
||||
0xb0 => "\x00\xb0", 0xb1 => "\x00\xb1", 0xb2 => "\x20\x33",
|
||||
0xb3 => "\x22\x65", 0xb4 => "\x00\xd7", 0xb5 => "\x22\x1d",
|
||||
0xb6 => "\x22\x02", 0xb7 => "\x20\x22", 0xb8 => "\x00\xf7",
|
||||
0xb9 => "\x22\x60", 0xba => "\x22\x61", 0xbb => "\x22\x48",
|
||||
0xbc => "\x20\x26", 0xbd => "\xf8\xe6", 0xbe => "\xf8\xe7",
|
||||
0xbf => "\x21\xb5", 0xc0 => "\x21\x35", 0xc1 => "\x21\x11",
|
||||
0xc2 => "\x21\x1c", 0xc3 => "\x21\x18", 0xc4 => "\x22\x97",
|
||||
0xc5 => "\x22\x95", 0xc6 => "\x22\x05", 0xc7 => "\x22\x29",
|
||||
0xc8 => "\x22\x2a", 0xc9 => "\x22\x83", 0xca => "\x22\x87",
|
||||
0xcb => "\x22\x84", 0xcc => "\x22\x82", 0xcd => "\x22\x86",
|
||||
0xce => "\x22\x08", 0xcf => "\x22\x09", 0xd0 => "\x22\x20",
|
||||
0xd1 => "\x22\x07", 0xd2 => "\xf6\xda", 0xd3 => "\xf6\xd9",
|
||||
0xd4 => "\xf6\xdb", 0xd5 => "\x22\x0f", 0xd6 => "\x22\x1a",
|
||||
0xd7 => "\x22\xc5", 0xd8 => "\x00\xac", 0xd9 => "\x22\x27",
|
||||
0xda => "\x22\x28", 0xdb => "\x21\xd4", 0xdc => "\x21\xd0",
|
||||
0xdd => "\x21\xd1", 0xde => "\x21\xd2", 0xdf => "\x21\xd3",
|
||||
0xe0 => "\x25\xca", 0xe1 => "\x23\x29", 0xe2 => "\xf8\xe8",
|
||||
0xe3 => "\xf8\xe9", 0xe4 => "\xf8\xea", 0xe5 => "\x22\x11",
|
||||
0xe6 => "\xf8\xeb", 0xe7 => "\xf8\xec", 0xe8 => "\xf8\xed",
|
||||
0xe9 => "\xf8\xee", 0xea => "\xf8\xef", 0xeb => "\xf8\xf0",
|
||||
0xec => "\xf8\xf1", 0xed => "\xf8\xf2", 0xee => "\xf8\xf3",
|
||||
0xef => "\xf8\xf4", 0xf1 => "\x23\x2a", 0xf2 => "\x22\x2b",
|
||||
0xf3 => "\x23\x20", 0xf4 => "\xf8\xf5", 0xf5 => "\x23\x21",
|
||||
0xf6 => "\xf8\xf6", 0xf7 => "\xf8\xf7", 0xf8 => "\xf8\xf8",
|
||||
0xf9 => "\xf8\xf9", 0xfa => "\xf8\xfa", 0xfb => "\xf8\xfb",
|
||||
0xfc => "\xf8\xfc", 0xfd => "\xf8\xfd", 0xfe => "\xf8\xfe",
|
||||
);
|
||||
|
||||
|
||||
|
||||
/**** 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'] =
|
||||
"\x00\x43\x00\x6f\x00\x70\x00\x79\x00\x72\x00\x69\x00\x67\x00\x68\x00"
|
||||
. "\x74\x00\x20\x00\x28\x00\x63\x00\x29\x00\x20\x00\x31\x00\x39\x00"
|
||||
. "\x38\x00\x35\x00\x2c\x00\x20\x00\x31\x00\x39\x00\x38\x00\x37\x00"
|
||||
. "\x2c\x00\x20\x00\x31\x00\x39\x00\x38\x00\x39\x00\x2c\x00\x20\x00"
|
||||
. "\x31\x00\x39\x00\x39\x00\x30\x00\x2c\x00\x20\x00\x31\x00\x39\x00"
|
||||
. "\x39\x00\x37\x00\x20\x00\x41\x00\x64\x00\x6f\x00\x62\x00\x65\x00"
|
||||
. "\x20\x00\x53\x00\x79\x00\x73\x00\x74\x00\x65\x00\x6d\x00\x73\x00"
|
||||
. "\x20\x00\x49\x00\x6e\x00\x63\x00\x6f\x00\x72\x00\x70\x00\x6f\x00"
|
||||
. "\x72\x00\x61\x00\x74\x00\x65\x00\x64\x00\x2e\x00\x20\x00\x41\x00"
|
||||
. "\x6c\x00\x6c\x00\x20\x00\x72\x00\x69\x00\x67\x00\x68\x00\x74\x00"
|
||||
. "\x73\x00\x20\x00\x72\x00\x65\x00\x73\x00\x65\x00\x72\x00\x76\x00"
|
||||
. "\x65\x00\x64\x00\x2e";
|
||||
$this->_fontNames[Zend_Pdf_Font::NAME_FAMILY]['en'] =
|
||||
"\x00\x53\x00\x79\x00\x6d\x00\x62\x00\x6f\x00\x6c";
|
||||
$this->_fontNames[Zend_Pdf_Font::NAME_STYLE]['en'] =
|
||||
"\x00\x4d\x00\x65\x00\x64\x00\x69\x00\x75\x00\x6d";
|
||||
$this->_fontNames[Zend_Pdf_Font::NAME_ID]['en'] =
|
||||
"\x00\x34\x00\x33\x00\x30\x00\x36\x00\x34";
|
||||
$this->_fontNames[Zend_Pdf_Font::NAME_FULL]['en'] =
|
||||
"\x00\x53\x00\x79\x00\x6d\x00\x62\x00\x6f\x00\x6c\x00\x20\x00\x4d\x00"
|
||||
. "\x65\x00\x64\x00\x69\x00\x75\x00\x6d";
|
||||
$this->_fontNames[Zend_Pdf_Font::NAME_VERSION]['en'] =
|
||||
"\x00\x30\x00\x30\x00\x31\x00\x2e\x00\x30\x00\x30\x00\x38";
|
||||
$this->_fontNames[Zend_Pdf_Font::NAME_POSTSCRIPT]['en'] =
|
||||
"\x00\x53\x00\x79\x00\x6d\x00\x62\x00\x6f\x00\x6c";
|
||||
|
||||
$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 => 0xfa, 0x02 => 0x014d, 0x03 => 0x02c9,
|
||||
0x04 => 0x01f4, 0x05 => 0x0225, 0x06 => 0x0341, 0x07 => 0x030a,
|
||||
0x08 => 0x01b7, 0x09 => 0x014d, 0x0a => 0x014d, 0x0b => 0x01f4,
|
||||
0x0c => 0x0225, 0x0d => 0xfa, 0x0e => 0x0225, 0x0f => 0xfa,
|
||||
0x10 => 0x0116, 0x11 => 0x01f4, 0x12 => 0x01f4, 0x13 => 0x01f4,
|
||||
0x14 => 0x01f4, 0x15 => 0x01f4, 0x16 => 0x01f4, 0x17 => 0x01f4,
|
||||
0x18 => 0x01f4, 0x19 => 0x01f4, 0x1a => 0x01f4, 0x1b => 0x0116,
|
||||
0x1c => 0x0116, 0x1d => 0x0225, 0x1e => 0x0225, 0x1f => 0x0225,
|
||||
0x20 => 0x01bc, 0x21 => 0x0225, 0x22 => 0x02d2, 0x23 => 0x029b,
|
||||
0x24 => 0x02d2, 0x25 => 0x0264, 0x26 => 0x0263, 0x27 => 0x02fb,
|
||||
0x28 => 0x025b, 0x29 => 0x02d2, 0x2a => 0x014d, 0x2b => 0x0277,
|
||||
0x2c => 0x02d2, 0x2d => 0x02ae, 0x2e => 0x0379, 0x2f => 0x02d2,
|
||||
0x30 => 0x02d2, 0x31 => 0x0300, 0x32 => 0x02e5, 0x33 => 0x022c,
|
||||
0x34 => 0x0250, 0x35 => 0x0263, 0x36 => 0x02b2, 0x37 => 0x01b7,
|
||||
0x38 => 0x0300, 0x39 => 0x0285, 0x3a => 0x031b, 0x3b => 0x0263,
|
||||
0x3c => 0x014d, 0x3d => 0x035f, 0x3e => 0x014d, 0x3f => 0x0292,
|
||||
0x40 => 0x01f4, 0x41 => 0x01f4, 0x42 => 0x0277, 0x43 => 0x0225,
|
||||
0x44 => 0x0225, 0x45 => 0x01ee, 0x46 => 0x01b7, 0x47 => 0x0209,
|
||||
0x48 => 0x019b, 0x49 => 0x025b, 0x4a => 0x0149, 0x4b => 0x025b,
|
||||
0x4c => 0x0225, 0x4d => 0x0225, 0x4e => 0x0240, 0x4f => 0x0209,
|
||||
0x50 => 0x0225, 0x51 => 0x0225, 0x52 => 0x0209, 0x53 => 0x0225,
|
||||
0x54 => 0x025b, 0x55 => 0x01b7, 0x56 => 0x0240, 0x57 => 0x02c9,
|
||||
0x58 => 0x02ae, 0x59 => 0x01ed, 0x5a => 0x02ae, 0x5b => 0x01ee,
|
||||
0x5c => 0x01e0, 0x5d => 0xc8, 0x5e => 0x01e0, 0x5f => 0x0225,
|
||||
0x60 => 0x02ee, 0x61 => 0x026c, 0x62 => 0xf7, 0x63 => 0x0225,
|
||||
0x64 => 0xa7, 0x65 => 0x02c9, 0x66 => 0x01f4, 0x67 => 0x02f1,
|
||||
0x68 => 0x02f1, 0x69 => 0x02f1, 0x6a => 0x02f1, 0x6b => 0x0412,
|
||||
0x6c => 0x03db, 0x6d => 0x025b, 0x6e => 0x03db, 0x6f => 0x025b,
|
||||
0x70 => 0x0190, 0x71 => 0x0225, 0x72 => 0x019b, 0x73 => 0x0225,
|
||||
0x74 => 0x0225, 0x75 => 0x02c9, 0x76 => 0x01ee, 0x77 => 0x01cc,
|
||||
0x78 => 0x0225, 0x79 => 0x0225, 0x7a => 0x0225, 0x7b => 0x0225,
|
||||
0x7c => 0x03e8, 0x7d => 0x025b, 0x7e => 0x03e8, 0x7f => 0x0292,
|
||||
0x80 => 0x0337, 0x81 => 0x02ae, 0x82 => 0x031b, 0x83 => 0x03db,
|
||||
0x84 => 0x0300, 0x85 => 0x0300, 0x86 => 0x0337, 0x87 => 0x0300,
|
||||
0x88 => 0x0300, 0x89 => 0x02c9, 0x8a => 0x02c9, 0x8b => 0x02c9,
|
||||
0x8c => 0x02c9, 0x8d => 0x02c9, 0x8e => 0x02c9, 0x8f => 0x02c9,
|
||||
0x90 => 0x0300, 0x91 => 0x02c9, 0x92 => 0x0316, 0x93 => 0x0316,
|
||||
0x94 => 0x037a, 0x95 => 0x0337, 0x96 => 0x0225, 0x97 => 0xfa,
|
||||
0x98 => 0x02c9, 0x99 => 0x025b, 0x9a => 0x025b, 0x9b => 0x0412,
|
||||
0x9c => 0x03db, 0x9d => 0x025b, 0x9e => 0x03db, 0x9f => 0x025b,
|
||||
0xa0 => 0x01ee, 0xa1 => 0x0149, 0xa2 => 0x0316, 0xa3 => 0x0316,
|
||||
0xa4 => 0x0312, 0xa5 => 0x02c9, 0xa6 => 0x0180, 0xa7 => 0x0180,
|
||||
0xa8 => 0x0180, 0xa9 => 0x0180, 0xaa => 0x0180, 0xab => 0x0180,
|
||||
0xac => 0x01ee, 0xad => 0x01ee, 0xae => 0x01ee, 0xaf => 0x01ee,
|
||||
0xb0 => 0x0149, 0xb1 => 0x0112, 0xb2 => 0x02ae, 0xb3 => 0x02ae,
|
||||
0xb4 => 0x02ae, 0xb5 => 0x0180, 0xb6 => 0x0180, 0xb7 => 0x0180,
|
||||
0xb8 => 0x0180, 0xb9 => 0x0180, 0xba => 0x0180, 0xbb => 0x01ee,
|
||||
0xbc => 0x01ee, 0xbd => 0x01ee, 0xbe => 0x0316);
|
||||
|
||||
/* The cmap table is similarly synthesized.
|
||||
*/
|
||||
$cmapData = array(
|
||||
0x20 => 0x01, 0x21 => 0x02, 0x2200 => 0x03, 0x23 => 0x04,
|
||||
0x2203 => 0x05, 0x25 => 0x06, 0x26 => 0x07, 0x220b => 0x08,
|
||||
0x28 => 0x09, 0x29 => 0x0a, 0x2217 => 0x0b, 0x2b => 0x0c,
|
||||
0x2c => 0x0d, 0x2212 => 0x0e, 0x2e => 0x0f, 0x2f => 0x10,
|
||||
0x30 => 0x11, 0x31 => 0x12, 0x32 => 0x13, 0x33 => 0x14,
|
||||
0x34 => 0x15, 0x35 => 0x16, 0x36 => 0x17, 0x37 => 0x18,
|
||||
0x38 => 0x19, 0x39 => 0x1a, 0x3a => 0x1b, 0x3b => 0x1c,
|
||||
0x3c => 0x1d, 0x3d => 0x1e, 0x3e => 0x1f, 0x3f => 0x20,
|
||||
0x2245 => 0x21, 0x0391 => 0x22, 0x0392 => 0x23, 0x03a7 => 0x24,
|
||||
0x2206 => 0x25, 0x0395 => 0x26, 0x03a6 => 0x27, 0x0393 => 0x28,
|
||||
0x0397 => 0x29, 0x0399 => 0x2a, 0x03d1 => 0x2b, 0x039a => 0x2c,
|
||||
0x039b => 0x2d, 0x039c => 0x2e, 0x039d => 0x2f, 0x039f => 0x30,
|
||||
0x03a0 => 0x31, 0x0398 => 0x32, 0x03a1 => 0x33, 0x03a3 => 0x34,
|
||||
0x03a4 => 0x35, 0x03a5 => 0x36, 0x03c2 => 0x37, 0x2126 => 0x38,
|
||||
0x039e => 0x39, 0x03a8 => 0x3a, 0x0396 => 0x3b, 0x5b => 0x3c,
|
||||
0x2234 => 0x3d, 0x5d => 0x3e, 0x22a5 => 0x3f, 0x5f => 0x40,
|
||||
0xf8e5 => 0x41, 0x03b1 => 0x42, 0x03b2 => 0x43, 0x03c7 => 0x44,
|
||||
0x03b4 => 0x45, 0x03b5 => 0x46, 0x03c6 => 0x47, 0x03b3 => 0x48,
|
||||
0x03b7 => 0x49, 0x03b9 => 0x4a, 0x03d5 => 0x4b, 0x03ba => 0x4c,
|
||||
0x03bb => 0x4d, 0xb5 => 0x4e, 0x03bd => 0x4f, 0x03bf => 0x50,
|
||||
0x03c0 => 0x51, 0x03b8 => 0x52, 0x03c1 => 0x53, 0x03c3 => 0x54,
|
||||
0x03c4 => 0x55, 0x03c5 => 0x56, 0x03d6 => 0x57, 0x03c9 => 0x58,
|
||||
0x03be => 0x59, 0x03c8 => 0x5a, 0x03b6 => 0x5b, 0x7b => 0x5c,
|
||||
0x7c => 0x5d, 0x7d => 0x5e, 0x223c => 0x5f, 0x20ac => 0x60,
|
||||
0x03d2 => 0x61, 0x2032 => 0x62, 0x2264 => 0x63, 0x2044 => 0x64,
|
||||
0x221e => 0x65, 0x0192 => 0x66, 0x2663 => 0x67, 0x2666 => 0x68,
|
||||
0x2665 => 0x69, 0x2660 => 0x6a, 0x2194 => 0x6b, 0x2190 => 0x6c,
|
||||
0x2191 => 0x6d, 0x2192 => 0x6e, 0x2193 => 0x6f, 0xb0 => 0x70,
|
||||
0xb1 => 0x71, 0x2033 => 0x72, 0x2265 => 0x73, 0xd7 => 0x74,
|
||||
0x221d => 0x75, 0x2202 => 0x76, 0x2022 => 0x77, 0xf7 => 0x78,
|
||||
0x2260 => 0x79, 0x2261 => 0x7a, 0x2248 => 0x7b, 0x2026 => 0x7c,
|
||||
0xf8e6 => 0x7d, 0xf8e7 => 0x7e, 0x21b5 => 0x7f, 0x2135 => 0x80,
|
||||
0x2111 => 0x81, 0x211c => 0x82, 0x2118 => 0x83, 0x2297 => 0x84,
|
||||
0x2295 => 0x85, 0x2205 => 0x86, 0x2229 => 0x87, 0x222a => 0x88,
|
||||
0x2283 => 0x89, 0x2287 => 0x8a, 0x2284 => 0x8b, 0x2282 => 0x8c,
|
||||
0x2286 => 0x8d, 0x2208 => 0x8e, 0x2209 => 0x8f, 0x2220 => 0x90,
|
||||
0x2207 => 0x91, 0xf6da => 0x92, 0xf6d9 => 0x93, 0xf6db => 0x94,
|
||||
0x220f => 0x95, 0x221a => 0x96, 0x22c5 => 0x97, 0xac => 0x98,
|
||||
0x2227 => 0x99, 0x2228 => 0x9a, 0x21d4 => 0x9b, 0x21d0 => 0x9c,
|
||||
0x21d1 => 0x9d, 0x21d2 => 0x9e, 0x21d3 => 0x9f, 0x25ca => 0xa0,
|
||||
0x2329 => 0xa1, 0xf8e8 => 0xa2, 0xf8e9 => 0xa3, 0xf8ea => 0xa4,
|
||||
0x2211 => 0xa5, 0xf8eb => 0xa6, 0xf8ec => 0xa7, 0xf8ed => 0xa8,
|
||||
0xf8ee => 0xa9, 0xf8ef => 0xaa, 0xf8f0 => 0xab, 0xf8f1 => 0xac,
|
||||
0xf8f2 => 0xad, 0xf8f3 => 0xae, 0xf8f4 => 0xaf, 0x232a => 0xb0,
|
||||
0x222b => 0xb1, 0x2320 => 0xb2, 0xf8f5 => 0xb3, 0x2321 => 0xb4,
|
||||
0xf8f6 => 0xb5, 0xf8f7 => 0xb6, 0xf8f8 => 0xb7, 0xf8f9 => 0xb8,
|
||||
0xf8fa => 0xb9, 0xf8fb => 0xba, 0xf8fc => 0xbb, 0xf8fd => 0xbc,
|
||||
0xf8fe => 0xbd, 0xf8ff => 0xbe);
|
||||
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('Symbol');
|
||||
|
||||
/* 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');
|
||||
}
|
||||
}
|
|
@ -0,0 +1,304 @@
|
|||
<?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: TimesBold.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 Times-Bold.
|
||||
*
|
||||
* 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_TimesBold extends Zend_Pdf_Resource_Font_Simple_Standard
|
||||
{
|
||||
/**** 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'] =
|
||||
"\x00\x43\x00\x6f\x00\x70\x00\x79\x00\x72\x00\x69\x00\x67\x00\x68\x00"
|
||||
. "\x74\x00\x20\x00\x28\x00\x63\x00\x29\x00\x20\x00\x31\x00\x39\x00"
|
||||
. "\x38\x00\x35\x00\x2c\x00\x20\x00\x31\x00\x39\x00\x38\x00\x37\x00"
|
||||
. "\x2c\x00\x20\x00\x31\x00\x39\x00\x38\x00\x39\x00\x2c\x00\x20\x00"
|
||||
. "\x31\x00\x39\x00\x39\x00\x30\x00\x2c\x00\x20\x00\x31\x00\x39\x00"
|
||||
. "\x39\x00\x33\x00\x2c\x00\x20\x00\x31\x00\x39\x00\x39\x00\x37\x00"
|
||||
. "\x20\x00\x41\x00\x64\x00\x6f\x00\x62\x00\x65\x00\x20\x00\x53\x00"
|
||||
. "\x79\x00\x73\x00\x74\x00\x65\x00\x6d\x00\x73\x00\x20\x00\x49\x00"
|
||||
. "\x6e\x00\x63\x00\x6f\x00\x72\x00\x70\x00\x6f\x00\x72\x00\x61\x00"
|
||||
. "\x74\x00\x65\x00\x64\x00\x2e\x00\x20\x00\x20\x00\x41\x00\x6c\x00"
|
||||
. "\x6c\x00\x20\x00\x52\x00\x69\x00\x67\x00\x68\x00\x74\x00\x73\x00"
|
||||
. "\x20\x00\x52\x00\x65\x00\x73\x00\x65\x00\x72\x00\x76\x00\x65\x00"
|
||||
. "\x64\x00\x2e\x00\x54\x00\x69\x00\x6d\x00\x65\x00\x73\x00\x20\x00"
|
||||
. "\x69\x00\x73\x00\x20\x00\x61\x00\x20\x00\x74\x00\x72\x00\x61\x00"
|
||||
. "\x64\x00\x65\x00\x6d\x00\x61\x00\x72\x00\x6b\x00\x20\x00\x6f\x00"
|
||||
. "\x66\x00\x20\x00\x4c\x00\x69\x00\x6e\x00\x6f\x00\x74\x00\x79\x00"
|
||||
. "\x70\x00\x65\x00\x2d\x00\x48\x00\x65\x00\x6c\x00\x6c\x00\x20\x00"
|
||||
. "\x41\x00\x47\x00\x20\x00\x61\x00\x6e\x00\x64\x00\x2f\x00\x6f\x00"
|
||||
. "\x72\x00\x20\x00\x69\x00\x74\x00\x73\x00\x20\x00\x73\x00\x75\x00"
|
||||
. "\x62\x00\x73\x00\x69\x00\x64\x00\x69\x00\x61\x00\x72\x00\x69\x00"
|
||||
. "\x65\x00\x73\x00\x2e";
|
||||
$this->_fontNames[Zend_Pdf_Font::NAME_FAMILY]['en'] =
|
||||
"\x00\x54\x00\x69\x00\x6d\x00\x65\x00\x73";
|
||||
$this->_fontNames[Zend_Pdf_Font::NAME_STYLE]['en'] =
|
||||
"\x00\x42\x00\x6f\x00\x6c\x00\x64";
|
||||
$this->_fontNames[Zend_Pdf_Font::NAME_ID]['en'] =
|
||||
"\x00\x34\x00\x33\x00\x30\x00\x36\x00\x35";
|
||||
$this->_fontNames[Zend_Pdf_Font::NAME_FULL]['en'] =
|
||||
"\x00\x54\x00\x69\x00\x6d\x00\x65\x00\x73\x00\x2d\x00\x42\x00\x6f\x00"
|
||||
. "\x6c\x00\x64\x00\x20\x00\x42\x00\x6f\x00\x6c\x00\x64";
|
||||
$this->_fontNames[Zend_Pdf_Font::NAME_VERSION]['en'] =
|
||||
"\x00\x30\x00\x30\x00\x32\x00\x2e\x00\x30\x00\x30\x00\x30";
|
||||
$this->_fontNames[Zend_Pdf_Font::NAME_POSTSCRIPT]['en'] =
|
||||
"\x00\x54\x00\x69\x00\x6d\x00\x65\x00\x73\x00\x2d\x00\x42\x00\x6f\x00"
|
||||
. "\x6c\x00\x64";
|
||||
|
||||
$this->_isBold = true;
|
||||
$this->_isItalic = false;
|
||||
$this->_isMonospaced = false;
|
||||
|
||||
$this->_underlinePosition = -100;
|
||||
$this->_underlineThickness = 50;
|
||||
$this->_strikePosition = 225;
|
||||
$this->_strikeThickness = 50;
|
||||
|
||||
$this->_unitsPerEm = 1000;
|
||||
|
||||
$this->_ascent = 683;
|
||||
$this->_descent = -217;
|
||||
$this->_lineGap = 300;
|
||||
|
||||
/* 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 => 0xfa, 0x02 => 0x014d, 0x03 => 0x022b,
|
||||
0x04 => 0x01f4, 0x05 => 0x01f4, 0x06 => 0x03e8, 0x07 => 0x0341,
|
||||
0x08 => 0x014d, 0x09 => 0x014d, 0x0a => 0x014d, 0x0b => 0x01f4,
|
||||
0x0c => 0x023a, 0x0d => 0xfa, 0x0e => 0x014d, 0x0f => 0xfa,
|
||||
0x10 => 0x0116, 0x11 => 0x01f4, 0x12 => 0x01f4, 0x13 => 0x01f4,
|
||||
0x14 => 0x01f4, 0x15 => 0x01f4, 0x16 => 0x01f4, 0x17 => 0x01f4,
|
||||
0x18 => 0x01f4, 0x19 => 0x01f4, 0x1a => 0x01f4, 0x1b => 0x014d,
|
||||
0x1c => 0x014d, 0x1d => 0x023a, 0x1e => 0x023a, 0x1f => 0x023a,
|
||||
0x20 => 0x01f4, 0x21 => 0x03a2, 0x22 => 0x02d2, 0x23 => 0x029b,
|
||||
0x24 => 0x02d2, 0x25 => 0x02d2, 0x26 => 0x029b, 0x27 => 0x0263,
|
||||
0x28 => 0x030a, 0x29 => 0x030a, 0x2a => 0x0185, 0x2b => 0x01f4,
|
||||
0x2c => 0x030a, 0x2d => 0x029b, 0x2e => 0x03b0, 0x2f => 0x02d2,
|
||||
0x30 => 0x030a, 0x31 => 0x0263, 0x32 => 0x030a, 0x33 => 0x02d2,
|
||||
0x34 => 0x022c, 0x35 => 0x029b, 0x36 => 0x02d2, 0x37 => 0x02d2,
|
||||
0x38 => 0x03e8, 0x39 => 0x02d2, 0x3a => 0x02d2, 0x3b => 0x029b,
|
||||
0x3c => 0x014d, 0x3d => 0x0116, 0x3e => 0x014d, 0x3f => 0x0245,
|
||||
0x40 => 0x01f4, 0x41 => 0x014d, 0x42 => 0x01f4, 0x43 => 0x022c,
|
||||
0x44 => 0x01bc, 0x45 => 0x022c, 0x46 => 0x01bc, 0x47 => 0x014d,
|
||||
0x48 => 0x01f4, 0x49 => 0x022c, 0x4a => 0x0116, 0x4b => 0x014d,
|
||||
0x4c => 0x022c, 0x4d => 0x0116, 0x4e => 0x0341, 0x4f => 0x022c,
|
||||
0x50 => 0x01f4, 0x51 => 0x022c, 0x52 => 0x022c, 0x53 => 0x01bc,
|
||||
0x54 => 0x0185, 0x55 => 0x014d, 0x56 => 0x022c, 0x57 => 0x01f4,
|
||||
0x58 => 0x02d2, 0x59 => 0x01f4, 0x5a => 0x01f4, 0x5b => 0x01bc,
|
||||
0x5c => 0x018a, 0x5d => 0xdc, 0x5e => 0x018a, 0x5f => 0x0208,
|
||||
0x60 => 0x014d, 0x61 => 0x01f4, 0x62 => 0x01f4, 0x63 => 0xa7,
|
||||
0x64 => 0x01f4, 0x65 => 0x01f4, 0x66 => 0x01f4, 0x67 => 0x01f4,
|
||||
0x68 => 0x0116, 0x69 => 0x01f4, 0x6a => 0x01f4, 0x6b => 0x014d,
|
||||
0x6c => 0x014d, 0x6d => 0x022c, 0x6e => 0x022c, 0x6f => 0x01f4,
|
||||
0x70 => 0x01f4, 0x71 => 0x01f4, 0x72 => 0xfa, 0x73 => 0x021c,
|
||||
0x74 => 0x015e, 0x75 => 0x014d, 0x76 => 0x01f4, 0x77 => 0x01f4,
|
||||
0x78 => 0x01f4, 0x79 => 0x03e8, 0x7a => 0x03e8, 0x7b => 0x01f4,
|
||||
0x7c => 0x014d, 0x7d => 0x014d, 0x7e => 0x014d, 0x7f => 0x014d,
|
||||
0x80 => 0x014d, 0x81 => 0x014d, 0x82 => 0x014d, 0x83 => 0x014d,
|
||||
0x84 => 0x014d, 0x85 => 0x014d, 0x86 => 0x014d, 0x87 => 0x014d,
|
||||
0x88 => 0x014d, 0x89 => 0x03e8, 0x8a => 0x03e8, 0x8b => 0x012c,
|
||||
0x8c => 0x029b, 0x8d => 0x030a, 0x8e => 0x03e8, 0x8f => 0x014a,
|
||||
0x90 => 0x02d2, 0x91 => 0x0116, 0x92 => 0x0116, 0x93 => 0x01f4,
|
||||
0x94 => 0x02d2, 0x95 => 0x022c, 0x96 => 0x0185, 0x97 => 0x01bc,
|
||||
0x98 => 0x01f4, 0x99 => 0x022c, 0x9a => 0x01bc, 0x9b => 0x02d2,
|
||||
0x9c => 0x023a, 0x9d => 0x02d2, 0x9e => 0x02d2, 0x9f => 0x01f4,
|
||||
0xa0 => 0x02d2, 0xa1 => 0x01f4, 0xa2 => 0x0185, 0xa3 => 0x01bc,
|
||||
0xa4 => 0x02d2, 0xa5 => 0x02d2, 0xa6 => 0x01f4, 0xa7 => 0x02d2,
|
||||
0xa8 => 0x022c, 0xa9 => 0x029b, 0xaa => 0x02d2, 0xab => 0xfa,
|
||||
0xac => 0x02eb, 0xad => 0x029b, 0xae => 0x01bc, 0xaf => 0x01f4,
|
||||
0xb0 => 0x02d2, 0xb1 => 0x0116, 0xb2 => 0x01f4, 0xb3 => 0x029b,
|
||||
0xb4 => 0x02d2, 0xb5 => 0x01f4, 0xb6 => 0x029b, 0xb7 => 0x0185,
|
||||
0xb8 => 0x0185, 0xb9 => 0x0116, 0xba => 0x01ee, 0xbb => 0x02d2,
|
||||
0xbc => 0x030a, 0xbd => 0x022c, 0xbe => 0x01f4, 0xbf => 0x02d2,
|
||||
0xc0 => 0x01bc, 0xc1 => 0x01bc, 0xc2 => 0x029b, 0xc3 => 0x0263,
|
||||
0xc4 => 0x030a, 0xc5 => 0x02d2, 0xc6 => 0x022c, 0xc7 => 0x02a0,
|
||||
0xc8 => 0x02d2, 0xc9 => 0x022c, 0xca => 0x012c, 0xcb => 0x030a,
|
||||
0xcc => 0x02d2, 0xcd => 0x02d2, 0xce => 0x023a, 0xcf => 0x022c,
|
||||
0xd0 => 0x029b, 0xd1 => 0x01ee, 0xd2 => 0x01f4, 0xd3 => 0x02d2,
|
||||
0xd4 => 0x0116, 0xd5 => 0x029b, 0xd6 => 0x01f4, 0xd7 => 0x01bc,
|
||||
0xd8 => 0x01bc, 0xd9 => 0x022c, 0xda => 0x022c, 0xdb => 0x02d2,
|
||||
0xdc => 0x0185, 0xdd => 0x023a, 0xde => 0xdc, 0xdf => 0x02eb,
|
||||
0xe0 => 0x030a, 0xe1 => 0x0185, 0xe2 => 0x0258, 0xe3 => 0x029b,
|
||||
0xe4 => 0x01bc, 0xe5 => 0x01f4, 0xe6 => 0x029b, 0xe7 => 0x029b,
|
||||
0xe8 => 0x0225, 0xe9 => 0x02d2, 0xea => 0x02d2, 0xeb => 0x0116,
|
||||
0xec => 0x01a0, 0xed => 0x01bc, 0xee => 0x02d2, 0xef => 0x02d2,
|
||||
0xf0 => 0x02d2, 0xf1 => 0x01bc, 0xf2 => 0x01bc, 0xf3 => 0x0116,
|
||||
0xf4 => 0x030a, 0xf5 => 0x01f4, 0xf6 => 0x01f4, 0xf7 => 0x0185,
|
||||
0xf8 => 0x0116, 0xf9 => 0x030a, 0xfa => 0x02d2, 0xfb => 0x0264,
|
||||
0xfc => 0x022c, 0xfd => 0x012c, 0xfe => 0x030a, 0xff => 0x022c,
|
||||
0x0100 => 0x0116, 0x0101 => 0x01f4, 0x0102 => 0x029b, 0x0103 => 0x022c,
|
||||
0x0104 => 0x02ee, 0x0105 => 0x022c, 0x0106 => 0x018a, 0x0107 => 0x030a,
|
||||
0x0108 => 0x029b, 0x0109 => 0x03e8, 0x010a => 0x01bc, 0x010b => 0x0185,
|
||||
0x010c => 0x0185, 0x010d => 0x029b, 0x010e => 0x02ee, 0x010f => 0x0225,
|
||||
0x0110 => 0x01f4, 0x0111 => 0x022c, 0x0112 => 0x02d2, 0x0113 => 0x029b,
|
||||
0x0114 => 0x01bc, 0x0115 => 0x01f4, 0x0116 => 0x02ee, 0x0117 => 0x022c,
|
||||
0x0118 => 0x022c, 0x0119 => 0x030a, 0x011a => 0x0190, 0x011b => 0x01f4,
|
||||
0x011c => 0x02d2, 0x011d => 0x022c, 0x011e => 0x0225, 0x011f => 0x02d2,
|
||||
0x0120 => 0x01bc, 0x0121 => 0x02d2, 0x0122 => 0x01f4, 0x0123 => 0x02d2,
|
||||
0x0124 => 0x029b, 0x0125 => 0x02d2, 0x0126 => 0x02d2, 0x0127 => 0x02d2,
|
||||
0x0128 => 0x030a, 0x0129 => 0x01bc, 0x012a => 0x029b, 0x012b => 0x0185,
|
||||
0x012c => 0x022c, 0x012d => 0x023a, 0x012e => 0x0185, 0x012f => 0x022c,
|
||||
0x0130 => 0x014d, 0x0131 => 0x023a, 0x0132 => 0x01f4, 0x0133 => 0x022c,
|
||||
0x0134 => 0x0225, 0x0135 => 0x01f4, 0x0136 => 0x01f4, 0x0137 => 0x01bc,
|
||||
0x0138 => 0x022c, 0x0139 => 0x012c, 0x013a => 0x0116, 0x013b => 0x01f4,
|
||||
);
|
||||
|
||||
/* The cmap table is similarly synthesized.
|
||||
*/
|
||||
$cmapData = array(
|
||||
0x20 => 0x01, 0x21 => 0x02, 0x22 => 0x03, 0x23 => 0x04,
|
||||
0x24 => 0x05, 0x25 => 0x06, 0x26 => 0x07, 0x2019 => 0x08,
|
||||
0x28 => 0x09, 0x29 => 0x0a, 0x2a => 0x0b, 0x2b => 0x0c,
|
||||
0x2c => 0x0d, 0x2d => 0x0e, 0x2e => 0x0f, 0x2f => 0x10,
|
||||
0x30 => 0x11, 0x31 => 0x12, 0x32 => 0x13, 0x33 => 0x14,
|
||||
0x34 => 0x15, 0x35 => 0x16, 0x36 => 0x17, 0x37 => 0x18,
|
||||
0x38 => 0x19, 0x39 => 0x1a, 0x3a => 0x1b, 0x3b => 0x1c,
|
||||
0x3c => 0x1d, 0x3d => 0x1e, 0x3e => 0x1f, 0x3f => 0x20,
|
||||
0x40 => 0x21, 0x41 => 0x22, 0x42 => 0x23, 0x43 => 0x24,
|
||||
0x44 => 0x25, 0x45 => 0x26, 0x46 => 0x27, 0x47 => 0x28,
|
||||
0x48 => 0x29, 0x49 => 0x2a, 0x4a => 0x2b, 0x4b => 0x2c,
|
||||
0x4c => 0x2d, 0x4d => 0x2e, 0x4e => 0x2f, 0x4f => 0x30,
|
||||
0x50 => 0x31, 0x51 => 0x32, 0x52 => 0x33, 0x53 => 0x34,
|
||||
0x54 => 0x35, 0x55 => 0x36, 0x56 => 0x37, 0x57 => 0x38,
|
||||
0x58 => 0x39, 0x59 => 0x3a, 0x5a => 0x3b, 0x5b => 0x3c,
|
||||
0x5c => 0x3d, 0x5d => 0x3e, 0x5e => 0x3f, 0x5f => 0x40,
|
||||
0x2018 => 0x41, 0x61 => 0x42, 0x62 => 0x43, 0x63 => 0x44,
|
||||
0x64 => 0x45, 0x65 => 0x46, 0x66 => 0x47, 0x67 => 0x48,
|
||||
0x68 => 0x49, 0x69 => 0x4a, 0x6a => 0x4b, 0x6b => 0x4c,
|
||||
0x6c => 0x4d, 0x6d => 0x4e, 0x6e => 0x4f, 0x6f => 0x50,
|
||||
0x70 => 0x51, 0x71 => 0x52, 0x72 => 0x53, 0x73 => 0x54,
|
||||
0x74 => 0x55, 0x75 => 0x56, 0x76 => 0x57, 0x77 => 0x58,
|
||||
0x78 => 0x59, 0x79 => 0x5a, 0x7a => 0x5b, 0x7b => 0x5c,
|
||||
0x7c => 0x5d, 0x7d => 0x5e, 0x7e => 0x5f, 0xa1 => 0x60,
|
||||
0xa2 => 0x61, 0xa3 => 0x62, 0x2044 => 0x63, 0xa5 => 0x64,
|
||||
0x0192 => 0x65, 0xa7 => 0x66, 0xa4 => 0x67, 0x27 => 0x68,
|
||||
0x201c => 0x69, 0xab => 0x6a, 0x2039 => 0x6b, 0x203a => 0x6c,
|
||||
0xfb01 => 0x6d, 0xfb02 => 0x6e, 0x2013 => 0x6f, 0x2020 => 0x70,
|
||||
0x2021 => 0x71, 0xb7 => 0x72, 0xb6 => 0x73, 0x2022 => 0x74,
|
||||
0x201a => 0x75, 0x201e => 0x76, 0x201d => 0x77, 0xbb => 0x78,
|
||||
0x2026 => 0x79, 0x2030 => 0x7a, 0xbf => 0x7b, 0x60 => 0x7c,
|
||||
0xb4 => 0x7d, 0x02c6 => 0x7e, 0x02dc => 0x7f, 0xaf => 0x80,
|
||||
0x02d8 => 0x81, 0x02d9 => 0x82, 0xa8 => 0x83, 0x02da => 0x84,
|
||||
0xb8 => 0x85, 0x02dd => 0x86, 0x02db => 0x87, 0x02c7 => 0x88,
|
||||
0x2014 => 0x89, 0xc6 => 0x8a, 0xaa => 0x8b, 0x0141 => 0x8c,
|
||||
0xd8 => 0x8d, 0x0152 => 0x8e, 0xba => 0x8f, 0xe6 => 0x90,
|
||||
0x0131 => 0x91, 0x0142 => 0x92, 0xf8 => 0x93, 0x0153 => 0x94,
|
||||
0xdf => 0x95, 0xcf => 0x96, 0xe9 => 0x97, 0x0103 => 0x98,
|
||||
0x0171 => 0x99, 0x011b => 0x9a, 0x0178 => 0x9b, 0xf7 => 0x9c,
|
||||
0xdd => 0x9d, 0xc2 => 0x9e, 0xe1 => 0x9f, 0xdb => 0xa0,
|
||||
0xfd => 0xa1, 0x0219 => 0xa2, 0xea => 0xa3, 0x016e => 0xa4,
|
||||
0xdc => 0xa5, 0x0105 => 0xa6, 0xda => 0xa7, 0x0173 => 0xa8,
|
||||
0xcb => 0xa9, 0x0110 => 0xaa, 0xf6c3 => 0xab, 0xa9 => 0xac,
|
||||
0x0112 => 0xad, 0x010d => 0xae, 0xe5 => 0xaf, 0x0145 => 0xb0,
|
||||
0x013a => 0xb1, 0xe0 => 0xb2, 0x0162 => 0xb3, 0x0106 => 0xb4,
|
||||
0xe3 => 0xb5, 0x0116 => 0xb6, 0x0161 => 0xb7, 0x015f => 0xb8,
|
||||
0xed => 0xb9, 0x25ca => 0xba, 0x0158 => 0xbb, 0x0122 => 0xbc,
|
||||
0xfb => 0xbd, 0xe2 => 0xbe, 0x0100 => 0xbf, 0x0159 => 0xc0,
|
||||
0xe7 => 0xc1, 0x017b => 0xc2, 0xde => 0xc3, 0x014c => 0xc4,
|
||||
0x0154 => 0xc5, 0x015a => 0xc6, 0x010f => 0xc7, 0x016a => 0xc8,
|
||||
0x016f => 0xc9, 0xb3 => 0xca, 0xd2 => 0xcb, 0xc0 => 0xcc,
|
||||
0x0102 => 0xcd, 0xd7 => 0xce, 0xfa => 0xcf, 0x0164 => 0xd0,
|
||||
0x2202 => 0xd1, 0xff => 0xd2, 0x0143 => 0xd3, 0xee => 0xd4,
|
||||
0xca => 0xd5, 0xe4 => 0xd6, 0xeb => 0xd7, 0x0107 => 0xd8,
|
||||
0x0144 => 0xd9, 0x016b => 0xda, 0x0147 => 0xdb, 0xcd => 0xdc,
|
||||
0xb1 => 0xdd, 0xa6 => 0xde, 0xae => 0xdf, 0x011e => 0xe0,
|
||||
0x0130 => 0xe1, 0x2211 => 0xe2, 0xc8 => 0xe3, 0x0155 => 0xe4,
|
||||
0x014d => 0xe5, 0x0179 => 0xe6, 0x017d => 0xe7, 0x2265 => 0xe8,
|
||||
0xd0 => 0xe9, 0xc7 => 0xea, 0x013c => 0xeb, 0x0165 => 0xec,
|
||||
0x0119 => 0xed, 0x0172 => 0xee, 0xc1 => 0xef, 0xc4 => 0xf0,
|
||||
0xe8 => 0xf1, 0x017a => 0xf2, 0x012f => 0xf3, 0xd3 => 0xf4,
|
||||
0xf3 => 0xf5, 0x0101 => 0xf6, 0x015b => 0xf7, 0xef => 0xf8,
|
||||
0xd4 => 0xf9, 0xd9 => 0xfa, 0x2206 => 0xfb, 0xfe => 0xfc,
|
||||
0xb2 => 0xfd, 0xd6 => 0xfe, 0xb5 => 0xff, 0xec => 0x0100,
|
||||
0x0151 => 0x0101, 0x0118 => 0x0102, 0x0111 => 0x0103, 0xbe => 0x0104,
|
||||
0x015e => 0x0105, 0x013e => 0x0106, 0x0136 => 0x0107, 0x0139 => 0x0108,
|
||||
0x2122 => 0x0109, 0x0117 => 0x010a, 0xcc => 0x010b, 0x012a => 0x010c,
|
||||
0x013d => 0x010d, 0xbd => 0x010e, 0x2264 => 0x010f, 0xf4 => 0x0110,
|
||||
0xf1 => 0x0111, 0x0170 => 0x0112, 0xc9 => 0x0113, 0x0113 => 0x0114,
|
||||
0x011f => 0x0115, 0xbc => 0x0116, 0x0160 => 0x0117, 0x0218 => 0x0118,
|
||||
0x0150 => 0x0119, 0xb0 => 0x011a, 0xf2 => 0x011b, 0x010c => 0x011c,
|
||||
0xf9 => 0x011d, 0x221a => 0x011e, 0x010e => 0x011f, 0x0157 => 0x0120,
|
||||
0xd1 => 0x0121, 0xf5 => 0x0122, 0x0156 => 0x0123, 0x013b => 0x0124,
|
||||
0xc3 => 0x0125, 0x0104 => 0x0126, 0xc5 => 0x0127, 0xd5 => 0x0128,
|
||||
0x017c => 0x0129, 0x011a => 0x012a, 0x012e => 0x012b, 0x0137 => 0x012c,
|
||||
0x2212 => 0x012d, 0xce => 0x012e, 0x0148 => 0x012f, 0x0163 => 0x0130,
|
||||
0xac => 0x0131, 0xf6 => 0x0132, 0xfc => 0x0133, 0x2260 => 0x0134,
|
||||
0x0123 => 0x0135, 0xf0 => 0x0136, 0x017e => 0x0137, 0x0146 => 0x0138,
|
||||
0xb9 => 0x0139, 0x012b => 0x013a, 0x20ac => 0x013b);
|
||||
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('Times-Bold');
|
||||
}
|
||||
}
|
|
@ -0,0 +1,305 @@
|
|||
<?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: TimesBoldItalic.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 Times-BoldItalic.
|
||||
*
|
||||
* 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_TimesBoldItalic extends Zend_Pdf_Resource_Font_Simple_Standard
|
||||
{
|
||||
/**** 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'] =
|
||||
"\x00\x43\x00\x6f\x00\x70\x00\x79\x00\x72\x00\x69\x00\x67\x00\x68\x00"
|
||||
. "\x74\x00\x20\x00\x28\x00\x63\x00\x29\x00\x20\x00\x31\x00\x39\x00"
|
||||
. "\x38\x00\x35\x00\x2c\x00\x20\x00\x31\x00\x39\x00\x38\x00\x37\x00"
|
||||
. "\x2c\x00\x20\x00\x31\x00\x39\x00\x38\x00\x39\x00\x2c\x00\x20\x00"
|
||||
. "\x31\x00\x39\x00\x39\x00\x30\x00\x2c\x00\x20\x00\x31\x00\x39\x00"
|
||||
. "\x39\x00\x33\x00\x2c\x00\x20\x00\x31\x00\x39\x00\x39\x00\x37\x00"
|
||||
. "\x20\x00\x41\x00\x64\x00\x6f\x00\x62\x00\x65\x00\x20\x00\x53\x00"
|
||||
. "\x79\x00\x73\x00\x74\x00\x65\x00\x6d\x00\x73\x00\x20\x00\x49\x00"
|
||||
. "\x6e\x00\x63\x00\x6f\x00\x72\x00\x70\x00\x6f\x00\x72\x00\x61\x00"
|
||||
. "\x74\x00\x65\x00\x64\x00\x2e\x00\x20\x00\x20\x00\x41\x00\x6c\x00"
|
||||
. "\x6c\x00\x20\x00\x52\x00\x69\x00\x67\x00\x68\x00\x74\x00\x73\x00"
|
||||
. "\x20\x00\x52\x00\x65\x00\x73\x00\x65\x00\x72\x00\x76\x00\x65\x00"
|
||||
. "\x64\x00\x2e\x00\x54\x00\x69\x00\x6d\x00\x65\x00\x73\x00\x20\x00"
|
||||
. "\x69\x00\x73\x00\x20\x00\x61\x00\x20\x00\x74\x00\x72\x00\x61\x00"
|
||||
. "\x64\x00\x65\x00\x6d\x00\x61\x00\x72\x00\x6b\x00\x20\x00\x6f\x00"
|
||||
. "\x66\x00\x20\x00\x4c\x00\x69\x00\x6e\x00\x6f\x00\x74\x00\x79\x00"
|
||||
. "\x70\x00\x65\x00\x2d\x00\x48\x00\x65\x00\x6c\x00\x6c\x00\x20\x00"
|
||||
. "\x41\x00\x47\x00\x20\x00\x61\x00\x6e\x00\x64\x00\x2f\x00\x6f\x00"
|
||||
. "\x72\x00\x20\x00\x69\x00\x74\x00\x73\x00\x20\x00\x73\x00\x75\x00"
|
||||
. "\x62\x00\x73\x00\x69\x00\x64\x00\x69\x00\x61\x00\x72\x00\x69\x00"
|
||||
. "\x65\x00\x73\x00\x2e";
|
||||
$this->_fontNames[Zend_Pdf_Font::NAME_FAMILY]['en'] =
|
||||
"\x00\x54\x00\x69\x00\x6d\x00\x65\x00\x73";
|
||||
$this->_fontNames[Zend_Pdf_Font::NAME_STYLE]['en'] =
|
||||
"\x00\x42\x00\x6f\x00\x6c\x00\x64";
|
||||
$this->_fontNames[Zend_Pdf_Font::NAME_ID]['en'] =
|
||||
"\x00\x34\x00\x33\x00\x30\x00\x36\x00\x36";
|
||||
$this->_fontNames[Zend_Pdf_Font::NAME_FULL]['en'] =
|
||||
"\x00\x54\x00\x69\x00\x6d\x00\x65\x00\x73\x00\x2d\x00\x42\x00\x6f\x00"
|
||||
. "\x6c\x00\x64\x00\x49\x00\x74\x00\x61\x00\x6c\x00\x69\x00\x63\x00"
|
||||
. "\x20\x00\x42\x00\x6f\x00\x6c\x00\x64";
|
||||
$this->_fontNames[Zend_Pdf_Font::NAME_VERSION]['en'] =
|
||||
"\x00\x30\x00\x30\x00\x32\x00\x2e\x00\x30\x00\x30\x00\x30";
|
||||
$this->_fontNames[Zend_Pdf_Font::NAME_POSTSCRIPT]['en'] =
|
||||
"\x00\x54\x00\x69\x00\x6d\x00\x65\x00\x73\x00\x2d\x00\x42\x00\x6f\x00"
|
||||
. "\x6c\x00\x64\x00\x49\x00\x74\x00\x61\x00\x6c\x00\x69\x00\x63";
|
||||
|
||||
$this->_isBold = true;
|
||||
$this->_isItalic = true;
|
||||
$this->_isMonospaced = false;
|
||||
|
||||
$this->_underlinePosition = -100;
|
||||
$this->_underlineThickness = 50;
|
||||
$this->_strikePosition = 225;
|
||||
$this->_strikeThickness = 50;
|
||||
|
||||
$this->_unitsPerEm = 1000;
|
||||
|
||||
$this->_ascent = 683;
|
||||
$this->_descent = -217;
|
||||
$this->_lineGap = 300;
|
||||
|
||||
/* 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 => 0xfa, 0x02 => 0x0185, 0x03 => 0x022b,
|
||||
0x04 => 0x01f4, 0x05 => 0x01f4, 0x06 => 0x0341, 0x07 => 0x030a,
|
||||
0x08 => 0x014d, 0x09 => 0x014d, 0x0a => 0x014d, 0x0b => 0x01f4,
|
||||
0x0c => 0x023a, 0x0d => 0xfa, 0x0e => 0x014d, 0x0f => 0xfa,
|
||||
0x10 => 0x0116, 0x11 => 0x01f4, 0x12 => 0x01f4, 0x13 => 0x01f4,
|
||||
0x14 => 0x01f4, 0x15 => 0x01f4, 0x16 => 0x01f4, 0x17 => 0x01f4,
|
||||
0x18 => 0x01f4, 0x19 => 0x01f4, 0x1a => 0x01f4, 0x1b => 0x014d,
|
||||
0x1c => 0x014d, 0x1d => 0x023a, 0x1e => 0x023a, 0x1f => 0x023a,
|
||||
0x20 => 0x01f4, 0x21 => 0x0340, 0x22 => 0x029b, 0x23 => 0x029b,
|
||||
0x24 => 0x029b, 0x25 => 0x02d2, 0x26 => 0x029b, 0x27 => 0x029b,
|
||||
0x28 => 0x02d2, 0x29 => 0x030a, 0x2a => 0x0185, 0x2b => 0x01f4,
|
||||
0x2c => 0x029b, 0x2d => 0x0263, 0x2e => 0x0379, 0x2f => 0x02d2,
|
||||
0x30 => 0x02d2, 0x31 => 0x0263, 0x32 => 0x02d2, 0x33 => 0x029b,
|
||||
0x34 => 0x022c, 0x35 => 0x0263, 0x36 => 0x02d2, 0x37 => 0x029b,
|
||||
0x38 => 0x0379, 0x39 => 0x029b, 0x3a => 0x0263, 0x3b => 0x0263,
|
||||
0x3c => 0x014d, 0x3d => 0x0116, 0x3e => 0x014d, 0x3f => 0x023a,
|
||||
0x40 => 0x01f4, 0x41 => 0x014d, 0x42 => 0x01f4, 0x43 => 0x01f4,
|
||||
0x44 => 0x01bc, 0x45 => 0x01f4, 0x46 => 0x01bc, 0x47 => 0x014d,
|
||||
0x48 => 0x01f4, 0x49 => 0x022c, 0x4a => 0x0116, 0x4b => 0x0116,
|
||||
0x4c => 0x01f4, 0x4d => 0x0116, 0x4e => 0x030a, 0x4f => 0x022c,
|
||||
0x50 => 0x01f4, 0x51 => 0x01f4, 0x52 => 0x01f4, 0x53 => 0x0185,
|
||||
0x54 => 0x0185, 0x55 => 0x0116, 0x56 => 0x022c, 0x57 => 0x01bc,
|
||||
0x58 => 0x029b, 0x59 => 0x01f4, 0x5a => 0x01bc, 0x5b => 0x0185,
|
||||
0x5c => 0x015c, 0x5d => 0xdc, 0x5e => 0x015c, 0x5f => 0x023a,
|
||||
0x60 => 0x0185, 0x61 => 0x01f4, 0x62 => 0x01f4, 0x63 => 0xa7,
|
||||
0x64 => 0x01f4, 0x65 => 0x01f4, 0x66 => 0x01f4, 0x67 => 0x01f4,
|
||||
0x68 => 0x0116, 0x69 => 0x01f4, 0x6a => 0x01f4, 0x6b => 0x014d,
|
||||
0x6c => 0x014d, 0x6d => 0x022c, 0x6e => 0x022c, 0x6f => 0x01f4,
|
||||
0x70 => 0x01f4, 0x71 => 0x01f4, 0x72 => 0xfa, 0x73 => 0x01f4,
|
||||
0x74 => 0x015e, 0x75 => 0x014d, 0x76 => 0x01f4, 0x77 => 0x01f4,
|
||||
0x78 => 0x01f4, 0x79 => 0x03e8, 0x7a => 0x03e8, 0x7b => 0x01f4,
|
||||
0x7c => 0x014d, 0x7d => 0x014d, 0x7e => 0x014d, 0x7f => 0x014d,
|
||||
0x80 => 0x014d, 0x81 => 0x014d, 0x82 => 0x014d, 0x83 => 0x014d,
|
||||
0x84 => 0x014d, 0x85 => 0x014d, 0x86 => 0x014d, 0x87 => 0x014d,
|
||||
0x88 => 0x014d, 0x89 => 0x03e8, 0x8a => 0x03b0, 0x8b => 0x010a,
|
||||
0x8c => 0x0263, 0x8d => 0x02d2, 0x8e => 0x03b0, 0x8f => 0x012c,
|
||||
0x90 => 0x02d2, 0x91 => 0x0116, 0x92 => 0x0116, 0x93 => 0x01f4,
|
||||
0x94 => 0x02d2, 0x95 => 0x01f4, 0x96 => 0x0185, 0x97 => 0x01bc,
|
||||
0x98 => 0x01f4, 0x99 => 0x022c, 0x9a => 0x01bc, 0x9b => 0x0263,
|
||||
0x9c => 0x023a, 0x9d => 0x0263, 0x9e => 0x029b, 0x9f => 0x01f4,
|
||||
0xa0 => 0x02d2, 0xa1 => 0x01bc, 0xa2 => 0x0185, 0xa3 => 0x01bc,
|
||||
0xa4 => 0x02d2, 0xa5 => 0x02d2, 0xa6 => 0x01f4, 0xa7 => 0x02d2,
|
||||
0xa8 => 0x022c, 0xa9 => 0x029b, 0xaa => 0x02d2, 0xab => 0xfa,
|
||||
0xac => 0x02eb, 0xad => 0x029b, 0xae => 0x01bc, 0xaf => 0x01f4,
|
||||
0xb0 => 0x02d2, 0xb1 => 0x0116, 0xb2 => 0x01f4, 0xb3 => 0x0263,
|
||||
0xb4 => 0x029b, 0xb5 => 0x01f4, 0xb6 => 0x029b, 0xb7 => 0x0185,
|
||||
0xb8 => 0x0185, 0xb9 => 0x0116, 0xba => 0x01ee, 0xbb => 0x029b,
|
||||
0xbc => 0x02d2, 0xbd => 0x022c, 0xbe => 0x01f4, 0xbf => 0x029b,
|
||||
0xc0 => 0x0185, 0xc1 => 0x01bc, 0xc2 => 0x0263, 0xc3 => 0x0263,
|
||||
0xc4 => 0x02d2, 0xc5 => 0x029b, 0xc6 => 0x022c, 0xc7 => 0x0260,
|
||||
0xc8 => 0x02d2, 0xc9 => 0x022c, 0xca => 0x012c, 0xcb => 0x02d2,
|
||||
0xcc => 0x029b, 0xcd => 0x029b, 0xce => 0x023a, 0xcf => 0x022c,
|
||||
0xd0 => 0x0263, 0xd1 => 0x01ee, 0xd2 => 0x01bc, 0xd3 => 0x02d2,
|
||||
0xd4 => 0x0116, 0xd5 => 0x029b, 0xd6 => 0x01f4, 0xd7 => 0x01bc,
|
||||
0xd8 => 0x01bc, 0xd9 => 0x022c, 0xda => 0x022c, 0xdb => 0x02d2,
|
||||
0xdc => 0x0185, 0xdd => 0x023a, 0xde => 0xdc, 0xdf => 0x02eb,
|
||||
0xe0 => 0x02d2, 0xe1 => 0x0185, 0xe2 => 0x0258, 0xe3 => 0x029b,
|
||||
0xe4 => 0x0185, 0xe5 => 0x01f4, 0xe6 => 0x0263, 0xe7 => 0x0263,
|
||||
0xe8 => 0x0225, 0xe9 => 0x02d2, 0xea => 0x029b, 0xeb => 0x0116,
|
||||
0xec => 0x016e, 0xed => 0x01bc, 0xee => 0x02d2, 0xef => 0x029b,
|
||||
0xf0 => 0x029b, 0xf1 => 0x01bc, 0xf2 => 0x0185, 0xf3 => 0x0116,
|
||||
0xf4 => 0x02d2, 0xf5 => 0x01f4, 0xf6 => 0x01f4, 0xf7 => 0x0185,
|
||||
0xf8 => 0x0116, 0xf9 => 0x02d2, 0xfa => 0x02d2, 0xfb => 0x0264,
|
||||
0xfc => 0x01f4, 0xfd => 0x012c, 0xfe => 0x02d2, 0xff => 0x0240,
|
||||
0x0100 => 0x0116, 0x0101 => 0x01f4, 0x0102 => 0x029b, 0x0103 => 0x01f4,
|
||||
0x0104 => 0x02ee, 0x0105 => 0x022c, 0x0106 => 0x017e, 0x0107 => 0x029b,
|
||||
0x0108 => 0x0263, 0x0109 => 0x03e8, 0x010a => 0x01bc, 0x010b => 0x0185,
|
||||
0x010c => 0x0185, 0x010d => 0x0263, 0x010e => 0x02ee, 0x010f => 0x0225,
|
||||
0x0110 => 0x01f4, 0x0111 => 0x022c, 0x0112 => 0x02d2, 0x0113 => 0x029b,
|
||||
0x0114 => 0x01bc, 0x0115 => 0x01f4, 0x0116 => 0x02ee, 0x0117 => 0x022c,
|
||||
0x0118 => 0x022c, 0x0119 => 0x02d2, 0x011a => 0x0190, 0x011b => 0x01f4,
|
||||
0x011c => 0x029b, 0x011d => 0x022c, 0x011e => 0x0225, 0x011f => 0x02d2,
|
||||
0x0120 => 0x0185, 0x0121 => 0x02d2, 0x0122 => 0x01f4, 0x0123 => 0x029b,
|
||||
0x0124 => 0x0263, 0x0125 => 0x029b, 0x0126 => 0x029b, 0x0127 => 0x029b,
|
||||
0x0128 => 0x02d2, 0x0129 => 0x0185, 0x012a => 0x029b, 0x012b => 0x0185,
|
||||
0x012c => 0x01f4, 0x012d => 0x025e, 0x012e => 0x0185, 0x012f => 0x022c,
|
||||
0x0130 => 0x0116, 0x0131 => 0x025e, 0x0132 => 0x01f4, 0x0133 => 0x022c,
|
||||
0x0134 => 0x0225, 0x0135 => 0x01f4, 0x0136 => 0x01f4, 0x0137 => 0x0185,
|
||||
0x0138 => 0x022c, 0x0139 => 0x012c, 0x013a => 0x0116, 0x013b => 0x01f4,
|
||||
);
|
||||
|
||||
/* The cmap table is similarly synthesized.
|
||||
*/
|
||||
$cmapData = array(
|
||||
0x20 => 0x01, 0x21 => 0x02, 0x22 => 0x03, 0x23 => 0x04,
|
||||
0x24 => 0x05, 0x25 => 0x06, 0x26 => 0x07, 0x2019 => 0x08,
|
||||
0x28 => 0x09, 0x29 => 0x0a, 0x2a => 0x0b, 0x2b => 0x0c,
|
||||
0x2c => 0x0d, 0x2d => 0x0e, 0x2e => 0x0f, 0x2f => 0x10,
|
||||
0x30 => 0x11, 0x31 => 0x12, 0x32 => 0x13, 0x33 => 0x14,
|
||||
0x34 => 0x15, 0x35 => 0x16, 0x36 => 0x17, 0x37 => 0x18,
|
||||
0x38 => 0x19, 0x39 => 0x1a, 0x3a => 0x1b, 0x3b => 0x1c,
|
||||
0x3c => 0x1d, 0x3d => 0x1e, 0x3e => 0x1f, 0x3f => 0x20,
|
||||
0x40 => 0x21, 0x41 => 0x22, 0x42 => 0x23, 0x43 => 0x24,
|
||||
0x44 => 0x25, 0x45 => 0x26, 0x46 => 0x27, 0x47 => 0x28,
|
||||
0x48 => 0x29, 0x49 => 0x2a, 0x4a => 0x2b, 0x4b => 0x2c,
|
||||
0x4c => 0x2d, 0x4d => 0x2e, 0x4e => 0x2f, 0x4f => 0x30,
|
||||
0x50 => 0x31, 0x51 => 0x32, 0x52 => 0x33, 0x53 => 0x34,
|
||||
0x54 => 0x35, 0x55 => 0x36, 0x56 => 0x37, 0x57 => 0x38,
|
||||
0x58 => 0x39, 0x59 => 0x3a, 0x5a => 0x3b, 0x5b => 0x3c,
|
||||
0x5c => 0x3d, 0x5d => 0x3e, 0x5e => 0x3f, 0x5f => 0x40,
|
||||
0x2018 => 0x41, 0x61 => 0x42, 0x62 => 0x43, 0x63 => 0x44,
|
||||
0x64 => 0x45, 0x65 => 0x46, 0x66 => 0x47, 0x67 => 0x48,
|
||||
0x68 => 0x49, 0x69 => 0x4a, 0x6a => 0x4b, 0x6b => 0x4c,
|
||||
0x6c => 0x4d, 0x6d => 0x4e, 0x6e => 0x4f, 0x6f => 0x50,
|
||||
0x70 => 0x51, 0x71 => 0x52, 0x72 => 0x53, 0x73 => 0x54,
|
||||
0x74 => 0x55, 0x75 => 0x56, 0x76 => 0x57, 0x77 => 0x58,
|
||||
0x78 => 0x59, 0x79 => 0x5a, 0x7a => 0x5b, 0x7b => 0x5c,
|
||||
0x7c => 0x5d, 0x7d => 0x5e, 0x7e => 0x5f, 0xa1 => 0x60,
|
||||
0xa2 => 0x61, 0xa3 => 0x62, 0x2044 => 0x63, 0xa5 => 0x64,
|
||||
0x0192 => 0x65, 0xa7 => 0x66, 0xa4 => 0x67, 0x27 => 0x68,
|
||||
0x201c => 0x69, 0xab => 0x6a, 0x2039 => 0x6b, 0x203a => 0x6c,
|
||||
0xfb01 => 0x6d, 0xfb02 => 0x6e, 0x2013 => 0x6f, 0x2020 => 0x70,
|
||||
0x2021 => 0x71, 0xb7 => 0x72, 0xb6 => 0x73, 0x2022 => 0x74,
|
||||
0x201a => 0x75, 0x201e => 0x76, 0x201d => 0x77, 0xbb => 0x78,
|
||||
0x2026 => 0x79, 0x2030 => 0x7a, 0xbf => 0x7b, 0x60 => 0x7c,
|
||||
0xb4 => 0x7d, 0x02c6 => 0x7e, 0x02dc => 0x7f, 0xaf => 0x80,
|
||||
0x02d8 => 0x81, 0x02d9 => 0x82, 0xa8 => 0x83, 0x02da => 0x84,
|
||||
0xb8 => 0x85, 0x02dd => 0x86, 0x02db => 0x87, 0x02c7 => 0x88,
|
||||
0x2014 => 0x89, 0xc6 => 0x8a, 0xaa => 0x8b, 0x0141 => 0x8c,
|
||||
0xd8 => 0x8d, 0x0152 => 0x8e, 0xba => 0x8f, 0xe6 => 0x90,
|
||||
0x0131 => 0x91, 0x0142 => 0x92, 0xf8 => 0x93, 0x0153 => 0x94,
|
||||
0xdf => 0x95, 0xcf => 0x96, 0xe9 => 0x97, 0x0103 => 0x98,
|
||||
0x0171 => 0x99, 0x011b => 0x9a, 0x0178 => 0x9b, 0xf7 => 0x9c,
|
||||
0xdd => 0x9d, 0xc2 => 0x9e, 0xe1 => 0x9f, 0xdb => 0xa0,
|
||||
0xfd => 0xa1, 0x0219 => 0xa2, 0xea => 0xa3, 0x016e => 0xa4,
|
||||
0xdc => 0xa5, 0x0105 => 0xa6, 0xda => 0xa7, 0x0173 => 0xa8,
|
||||
0xcb => 0xa9, 0x0110 => 0xaa, 0xf6c3 => 0xab, 0xa9 => 0xac,
|
||||
0x0112 => 0xad, 0x010d => 0xae, 0xe5 => 0xaf, 0x0145 => 0xb0,
|
||||
0x013a => 0xb1, 0xe0 => 0xb2, 0x0162 => 0xb3, 0x0106 => 0xb4,
|
||||
0xe3 => 0xb5, 0x0116 => 0xb6, 0x0161 => 0xb7, 0x015f => 0xb8,
|
||||
0xed => 0xb9, 0x25ca => 0xba, 0x0158 => 0xbb, 0x0122 => 0xbc,
|
||||
0xfb => 0xbd, 0xe2 => 0xbe, 0x0100 => 0xbf, 0x0159 => 0xc0,
|
||||
0xe7 => 0xc1, 0x017b => 0xc2, 0xde => 0xc3, 0x014c => 0xc4,
|
||||
0x0154 => 0xc5, 0x015a => 0xc6, 0x010f => 0xc7, 0x016a => 0xc8,
|
||||
0x016f => 0xc9, 0xb3 => 0xca, 0xd2 => 0xcb, 0xc0 => 0xcc,
|
||||
0x0102 => 0xcd, 0xd7 => 0xce, 0xfa => 0xcf, 0x0164 => 0xd0,
|
||||
0x2202 => 0xd1, 0xff => 0xd2, 0x0143 => 0xd3, 0xee => 0xd4,
|
||||
0xca => 0xd5, 0xe4 => 0xd6, 0xeb => 0xd7, 0x0107 => 0xd8,
|
||||
0x0144 => 0xd9, 0x016b => 0xda, 0x0147 => 0xdb, 0xcd => 0xdc,
|
||||
0xb1 => 0xdd, 0xa6 => 0xde, 0xae => 0xdf, 0x011e => 0xe0,
|
||||
0x0130 => 0xe1, 0x2211 => 0xe2, 0xc8 => 0xe3, 0x0155 => 0xe4,
|
||||
0x014d => 0xe5, 0x0179 => 0xe6, 0x017d => 0xe7, 0x2265 => 0xe8,
|
||||
0xd0 => 0xe9, 0xc7 => 0xea, 0x013c => 0xeb, 0x0165 => 0xec,
|
||||
0x0119 => 0xed, 0x0172 => 0xee, 0xc1 => 0xef, 0xc4 => 0xf0,
|
||||
0xe8 => 0xf1, 0x017a => 0xf2, 0x012f => 0xf3, 0xd3 => 0xf4,
|
||||
0xf3 => 0xf5, 0x0101 => 0xf6, 0x015b => 0xf7, 0xef => 0xf8,
|
||||
0xd4 => 0xf9, 0xd9 => 0xfa, 0x2206 => 0xfb, 0xfe => 0xfc,
|
||||
0xb2 => 0xfd, 0xd6 => 0xfe, 0xb5 => 0xff, 0xec => 0x0100,
|
||||
0x0151 => 0x0101, 0x0118 => 0x0102, 0x0111 => 0x0103, 0xbe => 0x0104,
|
||||
0x015e => 0x0105, 0x013e => 0x0106, 0x0136 => 0x0107, 0x0139 => 0x0108,
|
||||
0x2122 => 0x0109, 0x0117 => 0x010a, 0xcc => 0x010b, 0x012a => 0x010c,
|
||||
0x013d => 0x010d, 0xbd => 0x010e, 0x2264 => 0x010f, 0xf4 => 0x0110,
|
||||
0xf1 => 0x0111, 0x0170 => 0x0112, 0xc9 => 0x0113, 0x0113 => 0x0114,
|
||||
0x011f => 0x0115, 0xbc => 0x0116, 0x0160 => 0x0117, 0x0218 => 0x0118,
|
||||
0x0150 => 0x0119, 0xb0 => 0x011a, 0xf2 => 0x011b, 0x010c => 0x011c,
|
||||
0xf9 => 0x011d, 0x221a => 0x011e, 0x010e => 0x011f, 0x0157 => 0x0120,
|
||||
0xd1 => 0x0121, 0xf5 => 0x0122, 0x0156 => 0x0123, 0x013b => 0x0124,
|
||||
0xc3 => 0x0125, 0x0104 => 0x0126, 0xc5 => 0x0127, 0xd5 => 0x0128,
|
||||
0x017c => 0x0129, 0x011a => 0x012a, 0x012e => 0x012b, 0x0137 => 0x012c,
|
||||
0x2212 => 0x012d, 0xce => 0x012e, 0x0148 => 0x012f, 0x0163 => 0x0130,
|
||||
0xac => 0x0131, 0xf6 => 0x0132, 0xfc => 0x0133, 0x2260 => 0x0134,
|
||||
0x0123 => 0x0135, 0xf0 => 0x0136, 0x017e => 0x0137, 0x0146 => 0x0138,
|
||||
0xb9 => 0x0139, 0x012b => 0x013a, 0x20ac => 0x013b);
|
||||
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('Times-BoldItalic');
|
||||
}
|
||||
}
|
|
@ -0,0 +1,305 @@
|
|||
<?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: TimesItalic.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 Times-Italic.
|
||||
*
|
||||
* 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_TimesItalic extends Zend_Pdf_Resource_Font_Simple_Standard
|
||||
{
|
||||
/**** 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'] =
|
||||
"\x00\x43\x00\x6f\x00\x70\x00\x79\x00\x72\x00\x69\x00\x67\x00\x68\x00"
|
||||
. "\x74\x00\x20\x00\x28\x00\x63\x00\x29\x00\x20\x00\x31\x00\x39\x00"
|
||||
. "\x38\x00\x35\x00\x2c\x00\x20\x00\x31\x00\x39\x00\x38\x00\x37\x00"
|
||||
. "\x2c\x00\x20\x00\x31\x00\x39\x00\x38\x00\x39\x00\x2c\x00\x20\x00"
|
||||
. "\x31\x00\x39\x00\x39\x00\x30\x00\x2c\x00\x20\x00\x31\x00\x39\x00"
|
||||
. "\x39\x00\x33\x00\x2c\x00\x20\x00\x31\x00\x39\x00\x39\x00\x37\x00"
|
||||
. "\x20\x00\x41\x00\x64\x00\x6f\x00\x62\x00\x65\x00\x20\x00\x53\x00"
|
||||
. "\x79\x00\x73\x00\x74\x00\x65\x00\x6d\x00\x73\x00\x20\x00\x49\x00"
|
||||
. "\x6e\x00\x63\x00\x6f\x00\x72\x00\x70\x00\x6f\x00\x72\x00\x61\x00"
|
||||
. "\x74\x00\x65\x00\x64\x00\x2e\x00\x20\x00\x20\x00\x41\x00\x6c\x00"
|
||||
. "\x6c\x00\x20\x00\x52\x00\x69\x00\x67\x00\x68\x00\x74\x00\x73\x00"
|
||||
. "\x20\x00\x52\x00\x65\x00\x73\x00\x65\x00\x72\x00\x76\x00\x65\x00"
|
||||
. "\x64\x00\x2e\x00\x54\x00\x69\x00\x6d\x00\x65\x00\x73\x00\x20\x00"
|
||||
. "\x69\x00\x73\x00\x20\x00\x61\x00\x20\x00\x74\x00\x72\x00\x61\x00"
|
||||
. "\x64\x00\x65\x00\x6d\x00\x61\x00\x72\x00\x6b\x00\x20\x00\x6f\x00"
|
||||
. "\x66\x00\x20\x00\x4c\x00\x69\x00\x6e\x00\x6f\x00\x74\x00\x79\x00"
|
||||
. "\x70\x00\x65\x00\x2d\x00\x48\x00\x65\x00\x6c\x00\x6c\x00\x20\x00"
|
||||
. "\x41\x00\x47\x00\x20\x00\x61\x00\x6e\x00\x64\x00\x2f\x00\x6f\x00"
|
||||
. "\x72\x00\x20\x00\x69\x00\x74\x00\x73\x00\x20\x00\x73\x00\x75\x00"
|
||||
. "\x62\x00\x73\x00\x69\x00\x64\x00\x69\x00\x61\x00\x72\x00\x69\x00"
|
||||
. "\x65\x00\x73\x00\x2e";
|
||||
$this->_fontNames[Zend_Pdf_Font::NAME_FAMILY]['en'] =
|
||||
"\x00\x54\x00\x69\x00\x6d\x00\x65\x00\x73";
|
||||
$this->_fontNames[Zend_Pdf_Font::NAME_STYLE]['en'] =
|
||||
"\x00\x4d\x00\x65\x00\x64\x00\x69\x00\x75\x00\x6d";
|
||||
$this->_fontNames[Zend_Pdf_Font::NAME_ID]['en'] =
|
||||
"\x00\x34\x00\x33\x00\x30\x00\x36\x00\x37";
|
||||
$this->_fontNames[Zend_Pdf_Font::NAME_FULL]['en'] =
|
||||
"\x00\x54\x00\x69\x00\x6d\x00\x65\x00\x73\x00\x2d\x00\x49\x00\x74\x00"
|
||||
. "\x61\x00\x6c\x00\x69\x00\x63\x00\x20\x00\x4d\x00\x65\x00\x64\x00"
|
||||
. "\x69\x00\x75\x00\x6d";
|
||||
$this->_fontNames[Zend_Pdf_Font::NAME_VERSION]['en'] =
|
||||
"\x00\x30\x00\x30\x00\x32\x00\x2e\x00\x30\x00\x30\x00\x30";
|
||||
$this->_fontNames[Zend_Pdf_Font::NAME_POSTSCRIPT]['en'] =
|
||||
"\x00\x54\x00\x69\x00\x6d\x00\x65\x00\x73\x00\x2d\x00\x49\x00\x74\x00"
|
||||
. "\x61\x00\x6c\x00\x69\x00\x63";
|
||||
|
||||
$this->_isBold = false;
|
||||
$this->_isItalic = true;
|
||||
$this->_isMonospaced = false;
|
||||
|
||||
$this->_underlinePosition = -100;
|
||||
$this->_underlineThickness = 50;
|
||||
$this->_strikePosition = 225;
|
||||
$this->_strikeThickness = 50;
|
||||
|
||||
$this->_unitsPerEm = 1000;
|
||||
|
||||
$this->_ascent = 683;
|
||||
$this->_descent = -217;
|
||||
$this->_lineGap = 300;
|
||||
|
||||
/* 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 => 0xfa, 0x02 => 0x014d, 0x03 => 0x01a4,
|
||||
0x04 => 0x01f4, 0x05 => 0x01f4, 0x06 => 0x0341, 0x07 => 0x030a,
|
||||
0x08 => 0x014d, 0x09 => 0x014d, 0x0a => 0x014d, 0x0b => 0x01f4,
|
||||
0x0c => 0x02a3, 0x0d => 0xfa, 0x0e => 0x014d, 0x0f => 0xfa,
|
||||
0x10 => 0x0116, 0x11 => 0x01f4, 0x12 => 0x01f4, 0x13 => 0x01f4,
|
||||
0x14 => 0x01f4, 0x15 => 0x01f4, 0x16 => 0x01f4, 0x17 => 0x01f4,
|
||||
0x18 => 0x01f4, 0x19 => 0x01f4, 0x1a => 0x01f4, 0x1b => 0x014d,
|
||||
0x1c => 0x014d, 0x1d => 0x02a3, 0x1e => 0x02a3, 0x1f => 0x02a3,
|
||||
0x20 => 0x01f4, 0x21 => 0x0398, 0x22 => 0x0263, 0x23 => 0x0263,
|
||||
0x24 => 0x029b, 0x25 => 0x02d2, 0x26 => 0x0263, 0x27 => 0x0263,
|
||||
0x28 => 0x02d2, 0x29 => 0x02d2, 0x2a => 0x014d, 0x2b => 0x01bc,
|
||||
0x2c => 0x029b, 0x2d => 0x022c, 0x2e => 0x0341, 0x2f => 0x029b,
|
||||
0x30 => 0x02d2, 0x31 => 0x0263, 0x32 => 0x02d2, 0x33 => 0x0263,
|
||||
0x34 => 0x01f4, 0x35 => 0x022c, 0x36 => 0x02d2, 0x37 => 0x0263,
|
||||
0x38 => 0x0341, 0x39 => 0x0263, 0x3a => 0x022c, 0x3b => 0x022c,
|
||||
0x3c => 0x0185, 0x3d => 0x0116, 0x3e => 0x0185, 0x3f => 0x01a6,
|
||||
0x40 => 0x01f4, 0x41 => 0x014d, 0x42 => 0x01f4, 0x43 => 0x01f4,
|
||||
0x44 => 0x01bc, 0x45 => 0x01f4, 0x46 => 0x01bc, 0x47 => 0x0116,
|
||||
0x48 => 0x01f4, 0x49 => 0x01f4, 0x4a => 0x0116, 0x4b => 0x0116,
|
||||
0x4c => 0x01bc, 0x4d => 0x0116, 0x4e => 0x02d2, 0x4f => 0x01f4,
|
||||
0x50 => 0x01f4, 0x51 => 0x01f4, 0x52 => 0x01f4, 0x53 => 0x0185,
|
||||
0x54 => 0x0185, 0x55 => 0x0116, 0x56 => 0x01f4, 0x57 => 0x01bc,
|
||||
0x58 => 0x029b, 0x59 => 0x01bc, 0x5a => 0x01bc, 0x5b => 0x0185,
|
||||
0x5c => 0x0190, 0x5d => 0x0113, 0x5e => 0x0190, 0x5f => 0x021d,
|
||||
0x60 => 0x0185, 0x61 => 0x01f4, 0x62 => 0x01f4, 0x63 => 0xa7,
|
||||
0x64 => 0x01f4, 0x65 => 0x01f4, 0x66 => 0x01f4, 0x67 => 0x01f4,
|
||||
0x68 => 0xd6, 0x69 => 0x022c, 0x6a => 0x01f4, 0x6b => 0x014d,
|
||||
0x6c => 0x014d, 0x6d => 0x01f4, 0x6e => 0x01f4, 0x6f => 0x01f4,
|
||||
0x70 => 0x01f4, 0x71 => 0x01f4, 0x72 => 0xfa, 0x73 => 0x020b,
|
||||
0x74 => 0x015e, 0x75 => 0x014d, 0x76 => 0x022c, 0x77 => 0x022c,
|
||||
0x78 => 0x01f4, 0x79 => 0x0379, 0x7a => 0x03e8, 0x7b => 0x01f4,
|
||||
0x7c => 0x014d, 0x7d => 0x014d, 0x7e => 0x014d, 0x7f => 0x014d,
|
||||
0x80 => 0x014d, 0x81 => 0x014d, 0x82 => 0x014d, 0x83 => 0x014d,
|
||||
0x84 => 0x014d, 0x85 => 0x014d, 0x86 => 0x014d, 0x87 => 0x014d,
|
||||
0x88 => 0x014d, 0x89 => 0x0379, 0x8a => 0x0379, 0x8b => 0x0114,
|
||||
0x8c => 0x022c, 0x8d => 0x02d2, 0x8e => 0x03b0, 0x8f => 0x0136,
|
||||
0x90 => 0x029b, 0x91 => 0x0116, 0x92 => 0x0116, 0x93 => 0x01f4,
|
||||
0x94 => 0x029b, 0x95 => 0x01f4, 0x96 => 0x014d, 0x97 => 0x01bc,
|
||||
0x98 => 0x01f4, 0x99 => 0x01f4, 0x9a => 0x01bc, 0x9b => 0x022c,
|
||||
0x9c => 0x02a3, 0x9d => 0x022c, 0x9e => 0x0263, 0x9f => 0x01f4,
|
||||
0xa0 => 0x02d2, 0xa1 => 0x01bc, 0xa2 => 0x0185, 0xa3 => 0x01bc,
|
||||
0xa4 => 0x02d2, 0xa5 => 0x02d2, 0xa6 => 0x01f4, 0xa7 => 0x02d2,
|
||||
0xa8 => 0x01f4, 0xa9 => 0x0263, 0xaa => 0x02d2, 0xab => 0xfa,
|
||||
0xac => 0x02f8, 0xad => 0x0263, 0xae => 0x01bc, 0xaf => 0x01f4,
|
||||
0xb0 => 0x029b, 0xb1 => 0x0116, 0xb2 => 0x01f4, 0xb3 => 0x022c,
|
||||
0xb4 => 0x029b, 0xb5 => 0x01f4, 0xb6 => 0x0263, 0xb7 => 0x0185,
|
||||
0xb8 => 0x0185, 0xb9 => 0x0116, 0xba => 0x01d7, 0xbb => 0x0263,
|
||||
0xbc => 0x02d2, 0xbd => 0x01f4, 0xbe => 0x01f4, 0xbf => 0x0263,
|
||||
0xc0 => 0x0185, 0xc1 => 0x01bc, 0xc2 => 0x022c, 0xc3 => 0x0263,
|
||||
0xc4 => 0x02d2, 0xc5 => 0x0263, 0xc6 => 0x01f4, 0xc7 => 0x0220,
|
||||
0xc8 => 0x02d2, 0xc9 => 0x01f4, 0xca => 0x012c, 0xcb => 0x02d2,
|
||||
0xcc => 0x0263, 0xcd => 0x0263, 0xce => 0x02a3, 0xcf => 0x01f4,
|
||||
0xd0 => 0x022c, 0xd1 => 0x01dc, 0xd2 => 0x01bc, 0xd3 => 0x029b,
|
||||
0xd4 => 0x0116, 0xd5 => 0x0263, 0xd6 => 0x01f4, 0xd7 => 0x01bc,
|
||||
0xd8 => 0x01bc, 0xd9 => 0x01f4, 0xda => 0x01f4, 0xdb => 0x029b,
|
||||
0xdc => 0x014d, 0xdd => 0x02a3, 0xde => 0x0113, 0xdf => 0x02f8,
|
||||
0xe0 => 0x02d2, 0xe1 => 0x014d, 0xe2 => 0x0258, 0xe3 => 0x0263,
|
||||
0xe4 => 0x0185, 0xe5 => 0x01f4, 0xe6 => 0x022c, 0xe7 => 0x022c,
|
||||
0xe8 => 0x0225, 0xe9 => 0x02d2, 0xea => 0x029b, 0xeb => 0x0116,
|
||||
0xec => 0x012c, 0xed => 0x01bc, 0xee => 0x02d2, 0xef => 0x0263,
|
||||
0xf0 => 0x0263, 0xf1 => 0x01bc, 0xf2 => 0x0185, 0xf3 => 0x0116,
|
||||
0xf4 => 0x02d2, 0xf5 => 0x01f4, 0xf6 => 0x01f4, 0xf7 => 0x0185,
|
||||
0xf8 => 0x0116, 0xf9 => 0x02d2, 0xfa => 0x02d2, 0xfb => 0x0264,
|
||||
0xfc => 0x01f4, 0xfd => 0x012c, 0xfe => 0x02d2, 0xff => 0x01f4,
|
||||
0x0100 => 0x0116, 0x0101 => 0x01f4, 0x0102 => 0x0263, 0x0103 => 0x01f4,
|
||||
0x0104 => 0x02ee, 0x0105 => 0x01f4, 0x0106 => 0x012c, 0x0107 => 0x029b,
|
||||
0x0108 => 0x022c, 0x0109 => 0x03d4, 0x010a => 0x01bc, 0x010b => 0x014d,
|
||||
0x010c => 0x014d, 0x010d => 0x0263, 0x010e => 0x02ee, 0x010f => 0x0225,
|
||||
0x0110 => 0x01f4, 0x0111 => 0x01f4, 0x0112 => 0x02d2, 0x0113 => 0x0263,
|
||||
0x0114 => 0x01bc, 0x0115 => 0x01f4, 0x0116 => 0x02ee, 0x0117 => 0x01f4,
|
||||
0x0118 => 0x01f4, 0x0119 => 0x02d2, 0x011a => 0x0190, 0x011b => 0x01f4,
|
||||
0x011c => 0x029b, 0x011d => 0x01f4, 0x011e => 0x01c5, 0x011f => 0x02d2,
|
||||
0x0120 => 0x0185, 0x0121 => 0x029b, 0x0122 => 0x01f4, 0x0123 => 0x0263,
|
||||
0x0124 => 0x022c, 0x0125 => 0x0263, 0x0126 => 0x0263, 0x0127 => 0x0263,
|
||||
0x0128 => 0x02d2, 0x0129 => 0x0185, 0x012a => 0x0263, 0x012b => 0x014d,
|
||||
0x012c => 0x01bc, 0x012d => 0x02a3, 0x012e => 0x014d, 0x012f => 0x01f4,
|
||||
0x0130 => 0x0116, 0x0131 => 0x02a3, 0x0132 => 0x01f4, 0x0133 => 0x01f4,
|
||||
0x0134 => 0x0225, 0x0135 => 0x01f4, 0x0136 => 0x01f4, 0x0137 => 0x0185,
|
||||
0x0138 => 0x01f4, 0x0139 => 0x012c, 0x013a => 0x0116, 0x013b => 0x01f4,
|
||||
);
|
||||
|
||||
/* The cmap table is similarly synthesized.
|
||||
*/
|
||||
$cmapData = array(
|
||||
0x20 => 0x01, 0x21 => 0x02, 0x22 => 0x03, 0x23 => 0x04,
|
||||
0x24 => 0x05, 0x25 => 0x06, 0x26 => 0x07, 0x2019 => 0x08,
|
||||
0x28 => 0x09, 0x29 => 0x0a, 0x2a => 0x0b, 0x2b => 0x0c,
|
||||
0x2c => 0x0d, 0x2d => 0x0e, 0x2e => 0x0f, 0x2f => 0x10,
|
||||
0x30 => 0x11, 0x31 => 0x12, 0x32 => 0x13, 0x33 => 0x14,
|
||||
0x34 => 0x15, 0x35 => 0x16, 0x36 => 0x17, 0x37 => 0x18,
|
||||
0x38 => 0x19, 0x39 => 0x1a, 0x3a => 0x1b, 0x3b => 0x1c,
|
||||
0x3c => 0x1d, 0x3d => 0x1e, 0x3e => 0x1f, 0x3f => 0x20,
|
||||
0x40 => 0x21, 0x41 => 0x22, 0x42 => 0x23, 0x43 => 0x24,
|
||||
0x44 => 0x25, 0x45 => 0x26, 0x46 => 0x27, 0x47 => 0x28,
|
||||
0x48 => 0x29, 0x49 => 0x2a, 0x4a => 0x2b, 0x4b => 0x2c,
|
||||
0x4c => 0x2d, 0x4d => 0x2e, 0x4e => 0x2f, 0x4f => 0x30,
|
||||
0x50 => 0x31, 0x51 => 0x32, 0x52 => 0x33, 0x53 => 0x34,
|
||||
0x54 => 0x35, 0x55 => 0x36, 0x56 => 0x37, 0x57 => 0x38,
|
||||
0x58 => 0x39, 0x59 => 0x3a, 0x5a => 0x3b, 0x5b => 0x3c,
|
||||
0x5c => 0x3d, 0x5d => 0x3e, 0x5e => 0x3f, 0x5f => 0x40,
|
||||
0x2018 => 0x41, 0x61 => 0x42, 0x62 => 0x43, 0x63 => 0x44,
|
||||
0x64 => 0x45, 0x65 => 0x46, 0x66 => 0x47, 0x67 => 0x48,
|
||||
0x68 => 0x49, 0x69 => 0x4a, 0x6a => 0x4b, 0x6b => 0x4c,
|
||||
0x6c => 0x4d, 0x6d => 0x4e, 0x6e => 0x4f, 0x6f => 0x50,
|
||||
0x70 => 0x51, 0x71 => 0x52, 0x72 => 0x53, 0x73 => 0x54,
|
||||
0x74 => 0x55, 0x75 => 0x56, 0x76 => 0x57, 0x77 => 0x58,
|
||||
0x78 => 0x59, 0x79 => 0x5a, 0x7a => 0x5b, 0x7b => 0x5c,
|
||||
0x7c => 0x5d, 0x7d => 0x5e, 0x7e => 0x5f, 0xa1 => 0x60,
|
||||
0xa2 => 0x61, 0xa3 => 0x62, 0x2044 => 0x63, 0xa5 => 0x64,
|
||||
0x0192 => 0x65, 0xa7 => 0x66, 0xa4 => 0x67, 0x27 => 0x68,
|
||||
0x201c => 0x69, 0xab => 0x6a, 0x2039 => 0x6b, 0x203a => 0x6c,
|
||||
0xfb01 => 0x6d, 0xfb02 => 0x6e, 0x2013 => 0x6f, 0x2020 => 0x70,
|
||||
0x2021 => 0x71, 0xb7 => 0x72, 0xb6 => 0x73, 0x2022 => 0x74,
|
||||
0x201a => 0x75, 0x201e => 0x76, 0x201d => 0x77, 0xbb => 0x78,
|
||||
0x2026 => 0x79, 0x2030 => 0x7a, 0xbf => 0x7b, 0x60 => 0x7c,
|
||||
0xb4 => 0x7d, 0x02c6 => 0x7e, 0x02dc => 0x7f, 0xaf => 0x80,
|
||||
0x02d8 => 0x81, 0x02d9 => 0x82, 0xa8 => 0x83, 0x02da => 0x84,
|
||||
0xb8 => 0x85, 0x02dd => 0x86, 0x02db => 0x87, 0x02c7 => 0x88,
|
||||
0x2014 => 0x89, 0xc6 => 0x8a, 0xaa => 0x8b, 0x0141 => 0x8c,
|
||||
0xd8 => 0x8d, 0x0152 => 0x8e, 0xba => 0x8f, 0xe6 => 0x90,
|
||||
0x0131 => 0x91, 0x0142 => 0x92, 0xf8 => 0x93, 0x0153 => 0x94,
|
||||
0xdf => 0x95, 0xcf => 0x96, 0xe9 => 0x97, 0x0103 => 0x98,
|
||||
0x0171 => 0x99, 0x011b => 0x9a, 0x0178 => 0x9b, 0xf7 => 0x9c,
|
||||
0xdd => 0x9d, 0xc2 => 0x9e, 0xe1 => 0x9f, 0xdb => 0xa0,
|
||||
0xfd => 0xa1, 0x0219 => 0xa2, 0xea => 0xa3, 0x016e => 0xa4,
|
||||
0xdc => 0xa5, 0x0105 => 0xa6, 0xda => 0xa7, 0x0173 => 0xa8,
|
||||
0xcb => 0xa9, 0x0110 => 0xaa, 0xf6c3 => 0xab, 0xa9 => 0xac,
|
||||
0x0112 => 0xad, 0x010d => 0xae, 0xe5 => 0xaf, 0x0145 => 0xb0,
|
||||
0x013a => 0xb1, 0xe0 => 0xb2, 0x0162 => 0xb3, 0x0106 => 0xb4,
|
||||
0xe3 => 0xb5, 0x0116 => 0xb6, 0x0161 => 0xb7, 0x015f => 0xb8,
|
||||
0xed => 0xb9, 0x25ca => 0xba, 0x0158 => 0xbb, 0x0122 => 0xbc,
|
||||
0xfb => 0xbd, 0xe2 => 0xbe, 0x0100 => 0xbf, 0x0159 => 0xc0,
|
||||
0xe7 => 0xc1, 0x017b => 0xc2, 0xde => 0xc3, 0x014c => 0xc4,
|
||||
0x0154 => 0xc5, 0x015a => 0xc6, 0x010f => 0xc7, 0x016a => 0xc8,
|
||||
0x016f => 0xc9, 0xb3 => 0xca, 0xd2 => 0xcb, 0xc0 => 0xcc,
|
||||
0x0102 => 0xcd, 0xd7 => 0xce, 0xfa => 0xcf, 0x0164 => 0xd0,
|
||||
0x2202 => 0xd1, 0xff => 0xd2, 0x0143 => 0xd3, 0xee => 0xd4,
|
||||
0xca => 0xd5, 0xe4 => 0xd6, 0xeb => 0xd7, 0x0107 => 0xd8,
|
||||
0x0144 => 0xd9, 0x016b => 0xda, 0x0147 => 0xdb, 0xcd => 0xdc,
|
||||
0xb1 => 0xdd, 0xa6 => 0xde, 0xae => 0xdf, 0x011e => 0xe0,
|
||||
0x0130 => 0xe1, 0x2211 => 0xe2, 0xc8 => 0xe3, 0x0155 => 0xe4,
|
||||
0x014d => 0xe5, 0x0179 => 0xe6, 0x017d => 0xe7, 0x2265 => 0xe8,
|
||||
0xd0 => 0xe9, 0xc7 => 0xea, 0x013c => 0xeb, 0x0165 => 0xec,
|
||||
0x0119 => 0xed, 0x0172 => 0xee, 0xc1 => 0xef, 0xc4 => 0xf0,
|
||||
0xe8 => 0xf1, 0x017a => 0xf2, 0x012f => 0xf3, 0xd3 => 0xf4,
|
||||
0xf3 => 0xf5, 0x0101 => 0xf6, 0x015b => 0xf7, 0xef => 0xf8,
|
||||
0xd4 => 0xf9, 0xd9 => 0xfa, 0x2206 => 0xfb, 0xfe => 0xfc,
|
||||
0xb2 => 0xfd, 0xd6 => 0xfe, 0xb5 => 0xff, 0xec => 0x0100,
|
||||
0x0151 => 0x0101, 0x0118 => 0x0102, 0x0111 => 0x0103, 0xbe => 0x0104,
|
||||
0x015e => 0x0105, 0x013e => 0x0106, 0x0136 => 0x0107, 0x0139 => 0x0108,
|
||||
0x2122 => 0x0109, 0x0117 => 0x010a, 0xcc => 0x010b, 0x012a => 0x010c,
|
||||
0x013d => 0x010d, 0xbd => 0x010e, 0x2264 => 0x010f, 0xf4 => 0x0110,
|
||||
0xf1 => 0x0111, 0x0170 => 0x0112, 0xc9 => 0x0113, 0x0113 => 0x0114,
|
||||
0x011f => 0x0115, 0xbc => 0x0116, 0x0160 => 0x0117, 0x0218 => 0x0118,
|
||||
0x0150 => 0x0119, 0xb0 => 0x011a, 0xf2 => 0x011b, 0x010c => 0x011c,
|
||||
0xf9 => 0x011d, 0x221a => 0x011e, 0x010e => 0x011f, 0x0157 => 0x0120,
|
||||
0xd1 => 0x0121, 0xf5 => 0x0122, 0x0156 => 0x0123, 0x013b => 0x0124,
|
||||
0xc3 => 0x0125, 0x0104 => 0x0126, 0xc5 => 0x0127, 0xd5 => 0x0128,
|
||||
0x017c => 0x0129, 0x011a => 0x012a, 0x012e => 0x012b, 0x0137 => 0x012c,
|
||||
0x2212 => 0x012d, 0xce => 0x012e, 0x0148 => 0x012f, 0x0163 => 0x0130,
|
||||
0xac => 0x0131, 0xf6 => 0x0132, 0xfc => 0x0133, 0x2260 => 0x0134,
|
||||
0x0123 => 0x0135, 0xf0 => 0x0136, 0x017e => 0x0137, 0x0146 => 0x0138,
|
||||
0xb9 => 0x0139, 0x012b => 0x013a, 0x20ac => 0x013b);
|
||||
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('Times-Italic');
|
||||
}
|
||||
}
|
|
@ -0,0 +1,305 @@
|
|||
<?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: TimesRoman.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 Times-Roman.
|
||||
*
|
||||
* 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_TimesRoman extends Zend_Pdf_Resource_Font_Simple_Standard
|
||||
{
|
||||
/**** 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'] =
|
||||
"\x00\x43\x00\x6f\x00\x70\x00\x79\x00\x72\x00\x69\x00\x67\x00\x68\x00"
|
||||
. "\x74\x00\x20\x00\x28\x00\x63\x00\x29\x00\x20\x00\x31\x00\x39\x00"
|
||||
. "\x38\x00\x35\x00\x2c\x00\x20\x00\x31\x00\x39\x00\x38\x00\x37\x00"
|
||||
. "\x2c\x00\x20\x00\x31\x00\x39\x00\x38\x00\x39\x00\x2c\x00\x20\x00"
|
||||
. "\x31\x00\x39\x00\x39\x00\x30\x00\x2c\x00\x20\x00\x31\x00\x39\x00"
|
||||
. "\x39\x00\x33\x00\x2c\x00\x20\x00\x31\x00\x39\x00\x39\x00\x37\x00"
|
||||
. "\x20\x00\x41\x00\x64\x00\x6f\x00\x62\x00\x65\x00\x20\x00\x53\x00"
|
||||
. "\x79\x00\x73\x00\x74\x00\x65\x00\x6d\x00\x73\x00\x20\x00\x49\x00"
|
||||
. "\x6e\x00\x63\x00\x6f\x00\x72\x00\x70\x00\x6f\x00\x72\x00\x61\x00"
|
||||
. "\x74\x00\x65\x00\x64\x00\x2e\x00\x20\x00\x20\x00\x41\x00\x6c\x00"
|
||||
. "\x6c\x00\x20\x00\x52\x00\x69\x00\x67\x00\x68\x00\x74\x00\x73\x00"
|
||||
. "\x20\x00\x52\x00\x65\x00\x73\x00\x65\x00\x72\x00\x76\x00\x65\x00"
|
||||
. "\x64\x00\x2e\x00\x54\x00\x69\x00\x6d\x00\x65\x00\x73\x00\x20\x00"
|
||||
. "\x69\x00\x73\x00\x20\x00\x61\x00\x20\x00\x74\x00\x72\x00\x61\x00"
|
||||
. "\x64\x00\x65\x00\x6d\x00\x61\x00\x72\x00\x6b\x00\x20\x00\x6f\x00"
|
||||
. "\x66\x00\x20\x00\x4c\x00\x69\x00\x6e\x00\x6f\x00\x74\x00\x79\x00"
|
||||
. "\x70\x00\x65\x00\x2d\x00\x48\x00\x65\x00\x6c\x00\x6c\x00\x20\x00"
|
||||
. "\x41\x00\x47\x00\x20\x00\x61\x00\x6e\x00\x64\x00\x2f\x00\x6f\x00"
|
||||
. "\x72\x00\x20\x00\x69\x00\x74\x00\x73\x00\x20\x00\x73\x00\x75\x00"
|
||||
. "\x62\x00\x73\x00\x69\x00\x64\x00\x69\x00\x61\x00\x72\x00\x69\x00"
|
||||
. "\x65\x00\x73\x00\x2e";
|
||||
$this->_fontNames[Zend_Pdf_Font::NAME_FAMILY]['en'] =
|
||||
"\x00\x54\x00\x69\x00\x6d\x00\x65\x00\x73";
|
||||
$this->_fontNames[Zend_Pdf_Font::NAME_STYLE]['en'] =
|
||||
"\x00\x52\x00\x6f\x00\x6d\x00\x61\x00\x6e";
|
||||
$this->_fontNames[Zend_Pdf_Font::NAME_ID]['en'] =
|
||||
"\x00\x34\x00\x33\x00\x30\x00\x36\x00\x38";
|
||||
$this->_fontNames[Zend_Pdf_Font::NAME_FULL]['en'] =
|
||||
"\x00\x54\x00\x69\x00\x6d\x00\x65\x00\x73\x00\x2d\x00\x52\x00\x6f\x00"
|
||||
. "\x6d\x00\x61\x00\x6e\x00\x20\x00\x52\x00\x6f\x00\x6d\x00\x61\x00"
|
||||
. "\x6e";
|
||||
$this->_fontNames[Zend_Pdf_Font::NAME_VERSION]['en'] =
|
||||
"\x00\x30\x00\x30\x00\x32\x00\x2e\x00\x30\x00\x30\x00\x30";
|
||||
$this->_fontNames[Zend_Pdf_Font::NAME_POSTSCRIPT]['en'] =
|
||||
"\x00\x54\x00\x69\x00\x6d\x00\x65\x00\x73\x00\x2d\x00\x52\x00\x6f\x00"
|
||||
. "\x6d\x00\x61\x00\x6e";
|
||||
|
||||
$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 = 683;
|
||||
$this->_descent = -217;
|
||||
$this->_lineGap = 300;
|
||||
|
||||
/* 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 => 0xfa, 0x02 => 0x014d, 0x03 => 0x0198,
|
||||
0x04 => 0x01f4, 0x05 => 0x01f4, 0x06 => 0x0341, 0x07 => 0x030a,
|
||||
0x08 => 0x014d, 0x09 => 0x014d, 0x0a => 0x014d, 0x0b => 0x01f4,
|
||||
0x0c => 0x0234, 0x0d => 0xfa, 0x0e => 0x014d, 0x0f => 0xfa,
|
||||
0x10 => 0x0116, 0x11 => 0x01f4, 0x12 => 0x01f4, 0x13 => 0x01f4,
|
||||
0x14 => 0x01f4, 0x15 => 0x01f4, 0x16 => 0x01f4, 0x17 => 0x01f4,
|
||||
0x18 => 0x01f4, 0x19 => 0x01f4, 0x1a => 0x01f4, 0x1b => 0x0116,
|
||||
0x1c => 0x0116, 0x1d => 0x0234, 0x1e => 0x0234, 0x1f => 0x0234,
|
||||
0x20 => 0x01bc, 0x21 => 0x0399, 0x22 => 0x02d2, 0x23 => 0x029b,
|
||||
0x24 => 0x029b, 0x25 => 0x02d2, 0x26 => 0x0263, 0x27 => 0x022c,
|
||||
0x28 => 0x02d2, 0x29 => 0x02d2, 0x2a => 0x014d, 0x2b => 0x0185,
|
||||
0x2c => 0x02d2, 0x2d => 0x0263, 0x2e => 0x0379, 0x2f => 0x02d2,
|
||||
0x30 => 0x02d2, 0x31 => 0x022c, 0x32 => 0x02d2, 0x33 => 0x029b,
|
||||
0x34 => 0x022c, 0x35 => 0x0263, 0x36 => 0x02d2, 0x37 => 0x02d2,
|
||||
0x38 => 0x03b0, 0x39 => 0x02d2, 0x3a => 0x02d2, 0x3b => 0x0263,
|
||||
0x3c => 0x014d, 0x3d => 0x0116, 0x3e => 0x014d, 0x3f => 0x01d5,
|
||||
0x40 => 0x01f4, 0x41 => 0x014d, 0x42 => 0x01bc, 0x43 => 0x01f4,
|
||||
0x44 => 0x01bc, 0x45 => 0x01f4, 0x46 => 0x01bc, 0x47 => 0x014d,
|
||||
0x48 => 0x01f4, 0x49 => 0x01f4, 0x4a => 0x0116, 0x4b => 0x0116,
|
||||
0x4c => 0x01f4, 0x4d => 0x0116, 0x4e => 0x030a, 0x4f => 0x01f4,
|
||||
0x50 => 0x01f4, 0x51 => 0x01f4, 0x52 => 0x01f4, 0x53 => 0x014d,
|
||||
0x54 => 0x0185, 0x55 => 0x0116, 0x56 => 0x01f4, 0x57 => 0x01f4,
|
||||
0x58 => 0x02d2, 0x59 => 0x01f4, 0x5a => 0x01f4, 0x5b => 0x01bc,
|
||||
0x5c => 0x01e0, 0x5d => 0xc8, 0x5e => 0x01e0, 0x5f => 0x021d,
|
||||
0x60 => 0x014d, 0x61 => 0x01f4, 0x62 => 0x01f4, 0x63 => 0xa7,
|
||||
0x64 => 0x01f4, 0x65 => 0x01f4, 0x66 => 0x01f4, 0x67 => 0x01f4,
|
||||
0x68 => 0xb4, 0x69 => 0x01bc, 0x6a => 0x01f4, 0x6b => 0x014d,
|
||||
0x6c => 0x014d, 0x6d => 0x022c, 0x6e => 0x022c, 0x6f => 0x01f4,
|
||||
0x70 => 0x01f4, 0x71 => 0x01f4, 0x72 => 0xfa, 0x73 => 0x01c5,
|
||||
0x74 => 0x015e, 0x75 => 0x014d, 0x76 => 0x01bc, 0x77 => 0x01bc,
|
||||
0x78 => 0x01f4, 0x79 => 0x03e8, 0x7a => 0x03e8, 0x7b => 0x01bc,
|
||||
0x7c => 0x014d, 0x7d => 0x014d, 0x7e => 0x014d, 0x7f => 0x014d,
|
||||
0x80 => 0x014d, 0x81 => 0x014d, 0x82 => 0x014d, 0x83 => 0x014d,
|
||||
0x84 => 0x014d, 0x85 => 0x014d, 0x86 => 0x014d, 0x87 => 0x014d,
|
||||
0x88 => 0x014d, 0x89 => 0x03e8, 0x8a => 0x0379, 0x8b => 0x0114,
|
||||
0x8c => 0x0263, 0x8d => 0x02d2, 0x8e => 0x0379, 0x8f => 0x0136,
|
||||
0x90 => 0x029b, 0x91 => 0x0116, 0x92 => 0x0116, 0x93 => 0x01f4,
|
||||
0x94 => 0x02d2, 0x95 => 0x01f4, 0x96 => 0x014d, 0x97 => 0x01bc,
|
||||
0x98 => 0x01bc, 0x99 => 0x01f4, 0x9a => 0x01bc, 0x9b => 0x02d2,
|
||||
0x9c => 0x0234, 0x9d => 0x02d2, 0x9e => 0x02d2, 0x9f => 0x01bc,
|
||||
0xa0 => 0x02d2, 0xa1 => 0x01f4, 0xa2 => 0x0185, 0xa3 => 0x01bc,
|
||||
0xa4 => 0x02d2, 0xa5 => 0x02d2, 0xa6 => 0x01bc, 0xa7 => 0x02d2,
|
||||
0xa8 => 0x01f4, 0xa9 => 0x0263, 0xaa => 0x02d2, 0xab => 0xfa,
|
||||
0xac => 0x02f8, 0xad => 0x0263, 0xae => 0x01bc, 0xaf => 0x01bc,
|
||||
0xb0 => 0x02d2, 0xb1 => 0x0116, 0xb2 => 0x01bc, 0xb3 => 0x0263,
|
||||
0xb4 => 0x029b, 0xb5 => 0x01bc, 0xb6 => 0x0263, 0xb7 => 0x0185,
|
||||
0xb8 => 0x0185, 0xb9 => 0x0116, 0xba => 0x01d7, 0xbb => 0x029b,
|
||||
0xbc => 0x02d2, 0xbd => 0x01f4, 0xbe => 0x01bc, 0xbf => 0x02d2,
|
||||
0xc0 => 0x014d, 0xc1 => 0x01bc, 0xc2 => 0x0263, 0xc3 => 0x022c,
|
||||
0xc4 => 0x02d2, 0xc5 => 0x029b, 0xc6 => 0x022c, 0xc7 => 0x024c,
|
||||
0xc8 => 0x02d2, 0xc9 => 0x01f4, 0xca => 0x012c, 0xcb => 0x02d2,
|
||||
0xcc => 0x02d2, 0xcd => 0x02d2, 0xce => 0x0234, 0xcf => 0x01f4,
|
||||
0xd0 => 0x0263, 0xd1 => 0x01dc, 0xd2 => 0x01f4, 0xd3 => 0x02d2,
|
||||
0xd4 => 0x0116, 0xd5 => 0x0263, 0xd6 => 0x01bc, 0xd7 => 0x01bc,
|
||||
0xd8 => 0x01bc, 0xd9 => 0x01f4, 0xda => 0x01f4, 0xdb => 0x02d2,
|
||||
0xdc => 0x014d, 0xdd => 0x0234, 0xde => 0xc8, 0xdf => 0x02f8,
|
||||
0xe0 => 0x02d2, 0xe1 => 0x014d, 0xe2 => 0x0258, 0xe3 => 0x0263,
|
||||
0xe4 => 0x014d, 0xe5 => 0x01f4, 0xe6 => 0x0263, 0xe7 => 0x0263,
|
||||
0xe8 => 0x0225, 0xe9 => 0x02d2, 0xea => 0x029b, 0xeb => 0x0116,
|
||||
0xec => 0x0146, 0xed => 0x01bc, 0xee => 0x02d2, 0xef => 0x02d2,
|
||||
0xf0 => 0x02d2, 0xf1 => 0x01bc, 0xf2 => 0x01bc, 0xf3 => 0x0116,
|
||||
0xf4 => 0x02d2, 0xf5 => 0x01f4, 0xf6 => 0x01bc, 0xf7 => 0x0185,
|
||||
0xf8 => 0x0116, 0xf9 => 0x02d2, 0xfa => 0x02d2, 0xfb => 0x0264,
|
||||
0xfc => 0x01f4, 0xfd => 0x012c, 0xfe => 0x02d2, 0xff => 0x01f4,
|
||||
0x0100 => 0x0116, 0x0101 => 0x01f4, 0x0102 => 0x0263, 0x0103 => 0x01f4,
|
||||
0x0104 => 0x02ee, 0x0105 => 0x022c, 0x0106 => 0x0158, 0x0107 => 0x02d2,
|
||||
0x0108 => 0x0263, 0x0109 => 0x03d4, 0x010a => 0x01bc, 0x010b => 0x014d,
|
||||
0x010c => 0x014d, 0x010d => 0x0263, 0x010e => 0x02ee, 0x010f => 0x0225,
|
||||
0x0110 => 0x01f4, 0x0111 => 0x01f4, 0x0112 => 0x02d2, 0x0113 => 0x0263,
|
||||
0x0114 => 0x01bc, 0x0115 => 0x01f4, 0x0116 => 0x02ee, 0x0117 => 0x022c,
|
||||
0x0118 => 0x022c, 0x0119 => 0x02d2, 0x011a => 0x0190, 0x011b => 0x01f4,
|
||||
0x011c => 0x029b, 0x011d => 0x01f4, 0x011e => 0x01c5, 0x011f => 0x02d2,
|
||||
0x0120 => 0x014d, 0x0121 => 0x02d2, 0x0122 => 0x01f4, 0x0123 => 0x029b,
|
||||
0x0124 => 0x0263, 0x0125 => 0x02d2, 0x0126 => 0x02d2, 0x0127 => 0x02d2,
|
||||
0x0128 => 0x02d2, 0x0129 => 0x01bc, 0x012a => 0x0263, 0x012b => 0x014d,
|
||||
0x012c => 0x01f4, 0x012d => 0x0234, 0x012e => 0x014d, 0x012f => 0x01f4,
|
||||
0x0130 => 0x0116, 0x0131 => 0x0234, 0x0132 => 0x01f4, 0x0133 => 0x01f4,
|
||||
0x0134 => 0x0225, 0x0135 => 0x01f4, 0x0136 => 0x01f4, 0x0137 => 0x01bc,
|
||||
0x0138 => 0x01f4, 0x0139 => 0x012c, 0x013a => 0x0116, 0x013b => 0x01f4,
|
||||
);
|
||||
|
||||
/* The cmap table is similarly synthesized.
|
||||
*/
|
||||
$cmapData = array(
|
||||
0x20 => 0x01, 0x21 => 0x02, 0x22 => 0x03, 0x23 => 0x04,
|
||||
0x24 => 0x05, 0x25 => 0x06, 0x26 => 0x07, 0x2019 => 0x08,
|
||||
0x28 => 0x09, 0x29 => 0x0a, 0x2a => 0x0b, 0x2b => 0x0c,
|
||||
0x2c => 0x0d, 0x2d => 0x0e, 0x2e => 0x0f, 0x2f => 0x10,
|
||||
0x30 => 0x11, 0x31 => 0x12, 0x32 => 0x13, 0x33 => 0x14,
|
||||
0x34 => 0x15, 0x35 => 0x16, 0x36 => 0x17, 0x37 => 0x18,
|
||||
0x38 => 0x19, 0x39 => 0x1a, 0x3a => 0x1b, 0x3b => 0x1c,
|
||||
0x3c => 0x1d, 0x3d => 0x1e, 0x3e => 0x1f, 0x3f => 0x20,
|
||||
0x40 => 0x21, 0x41 => 0x22, 0x42 => 0x23, 0x43 => 0x24,
|
||||
0x44 => 0x25, 0x45 => 0x26, 0x46 => 0x27, 0x47 => 0x28,
|
||||
0x48 => 0x29, 0x49 => 0x2a, 0x4a => 0x2b, 0x4b => 0x2c,
|
||||
0x4c => 0x2d, 0x4d => 0x2e, 0x4e => 0x2f, 0x4f => 0x30,
|
||||
0x50 => 0x31, 0x51 => 0x32, 0x52 => 0x33, 0x53 => 0x34,
|
||||
0x54 => 0x35, 0x55 => 0x36, 0x56 => 0x37, 0x57 => 0x38,
|
||||
0x58 => 0x39, 0x59 => 0x3a, 0x5a => 0x3b, 0x5b => 0x3c,
|
||||
0x5c => 0x3d, 0x5d => 0x3e, 0x5e => 0x3f, 0x5f => 0x40,
|
||||
0x2018 => 0x41, 0x61 => 0x42, 0x62 => 0x43, 0x63 => 0x44,
|
||||
0x64 => 0x45, 0x65 => 0x46, 0x66 => 0x47, 0x67 => 0x48,
|
||||
0x68 => 0x49, 0x69 => 0x4a, 0x6a => 0x4b, 0x6b => 0x4c,
|
||||
0x6c => 0x4d, 0x6d => 0x4e, 0x6e => 0x4f, 0x6f => 0x50,
|
||||
0x70 => 0x51, 0x71 => 0x52, 0x72 => 0x53, 0x73 => 0x54,
|
||||
0x74 => 0x55, 0x75 => 0x56, 0x76 => 0x57, 0x77 => 0x58,
|
||||
0x78 => 0x59, 0x79 => 0x5a, 0x7a => 0x5b, 0x7b => 0x5c,
|
||||
0x7c => 0x5d, 0x7d => 0x5e, 0x7e => 0x5f, 0xa1 => 0x60,
|
||||
0xa2 => 0x61, 0xa3 => 0x62, 0x2044 => 0x63, 0xa5 => 0x64,
|
||||
0x0192 => 0x65, 0xa7 => 0x66, 0xa4 => 0x67, 0x27 => 0x68,
|
||||
0x201c => 0x69, 0xab => 0x6a, 0x2039 => 0x6b, 0x203a => 0x6c,
|
||||
0xfb01 => 0x6d, 0xfb02 => 0x6e, 0x2013 => 0x6f, 0x2020 => 0x70,
|
||||
0x2021 => 0x71, 0xb7 => 0x72, 0xb6 => 0x73, 0x2022 => 0x74,
|
||||
0x201a => 0x75, 0x201e => 0x76, 0x201d => 0x77, 0xbb => 0x78,
|
||||
0x2026 => 0x79, 0x2030 => 0x7a, 0xbf => 0x7b, 0x60 => 0x7c,
|
||||
0xb4 => 0x7d, 0x02c6 => 0x7e, 0x02dc => 0x7f, 0xaf => 0x80,
|
||||
0x02d8 => 0x81, 0x02d9 => 0x82, 0xa8 => 0x83, 0x02da => 0x84,
|
||||
0xb8 => 0x85, 0x02dd => 0x86, 0x02db => 0x87, 0x02c7 => 0x88,
|
||||
0x2014 => 0x89, 0xc6 => 0x8a, 0xaa => 0x8b, 0x0141 => 0x8c,
|
||||
0xd8 => 0x8d, 0x0152 => 0x8e, 0xba => 0x8f, 0xe6 => 0x90,
|
||||
0x0131 => 0x91, 0x0142 => 0x92, 0xf8 => 0x93, 0x0153 => 0x94,
|
||||
0xdf => 0x95, 0xcf => 0x96, 0xe9 => 0x97, 0x0103 => 0x98,
|
||||
0x0171 => 0x99, 0x011b => 0x9a, 0x0178 => 0x9b, 0xf7 => 0x9c,
|
||||
0xdd => 0x9d, 0xc2 => 0x9e, 0xe1 => 0x9f, 0xdb => 0xa0,
|
||||
0xfd => 0xa1, 0x0219 => 0xa2, 0xea => 0xa3, 0x016e => 0xa4,
|
||||
0xdc => 0xa5, 0x0105 => 0xa6, 0xda => 0xa7, 0x0173 => 0xa8,
|
||||
0xcb => 0xa9, 0x0110 => 0xaa, 0xf6c3 => 0xab, 0xa9 => 0xac,
|
||||
0x0112 => 0xad, 0x010d => 0xae, 0xe5 => 0xaf, 0x0145 => 0xb0,
|
||||
0x013a => 0xb1, 0xe0 => 0xb2, 0x0162 => 0xb3, 0x0106 => 0xb4,
|
||||
0xe3 => 0xb5, 0x0116 => 0xb6, 0x0161 => 0xb7, 0x015f => 0xb8,
|
||||
0xed => 0xb9, 0x25ca => 0xba, 0x0158 => 0xbb, 0x0122 => 0xbc,
|
||||
0xfb => 0xbd, 0xe2 => 0xbe, 0x0100 => 0xbf, 0x0159 => 0xc0,
|
||||
0xe7 => 0xc1, 0x017b => 0xc2, 0xde => 0xc3, 0x014c => 0xc4,
|
||||
0x0154 => 0xc5, 0x015a => 0xc6, 0x010f => 0xc7, 0x016a => 0xc8,
|
||||
0x016f => 0xc9, 0xb3 => 0xca, 0xd2 => 0xcb, 0xc0 => 0xcc,
|
||||
0x0102 => 0xcd, 0xd7 => 0xce, 0xfa => 0xcf, 0x0164 => 0xd0,
|
||||
0x2202 => 0xd1, 0xff => 0xd2, 0x0143 => 0xd3, 0xee => 0xd4,
|
||||
0xca => 0xd5, 0xe4 => 0xd6, 0xeb => 0xd7, 0x0107 => 0xd8,
|
||||
0x0144 => 0xd9, 0x016b => 0xda, 0x0147 => 0xdb, 0xcd => 0xdc,
|
||||
0xb1 => 0xdd, 0xa6 => 0xde, 0xae => 0xdf, 0x011e => 0xe0,
|
||||
0x0130 => 0xe1, 0x2211 => 0xe2, 0xc8 => 0xe3, 0x0155 => 0xe4,
|
||||
0x014d => 0xe5, 0x0179 => 0xe6, 0x017d => 0xe7, 0x2265 => 0xe8,
|
||||
0xd0 => 0xe9, 0xc7 => 0xea, 0x013c => 0xeb, 0x0165 => 0xec,
|
||||
0x0119 => 0xed, 0x0172 => 0xee, 0xc1 => 0xef, 0xc4 => 0xf0,
|
||||
0xe8 => 0xf1, 0x017a => 0xf2, 0x012f => 0xf3, 0xd3 => 0xf4,
|
||||
0xf3 => 0xf5, 0x0101 => 0xf6, 0x015b => 0xf7, 0xef => 0xf8,
|
||||
0xd4 => 0xf9, 0xd9 => 0xfa, 0x2206 => 0xfb, 0xfe => 0xfc,
|
||||
0xb2 => 0xfd, 0xd6 => 0xfe, 0xb5 => 0xff, 0xec => 0x0100,
|
||||
0x0151 => 0x0101, 0x0118 => 0x0102, 0x0111 => 0x0103, 0xbe => 0x0104,
|
||||
0x015e => 0x0105, 0x013e => 0x0106, 0x0136 => 0x0107, 0x0139 => 0x0108,
|
||||
0x2122 => 0x0109, 0x0117 => 0x010a, 0xcc => 0x010b, 0x012a => 0x010c,
|
||||
0x013d => 0x010d, 0xbd => 0x010e, 0x2264 => 0x010f, 0xf4 => 0x0110,
|
||||
0xf1 => 0x0111, 0x0170 => 0x0112, 0xc9 => 0x0113, 0x0113 => 0x0114,
|
||||
0x011f => 0x0115, 0xbc => 0x0116, 0x0160 => 0x0117, 0x0218 => 0x0118,
|
||||
0x0150 => 0x0119, 0xb0 => 0x011a, 0xf2 => 0x011b, 0x010c => 0x011c,
|
||||
0xf9 => 0x011d, 0x221a => 0x011e, 0x010e => 0x011f, 0x0157 => 0x0120,
|
||||
0xd1 => 0x0121, 0xf5 => 0x0122, 0x0156 => 0x0123, 0x013b => 0x0124,
|
||||
0xc3 => 0x0125, 0x0104 => 0x0126, 0xc5 => 0x0127, 0xd5 => 0x0128,
|
||||
0x017c => 0x0129, 0x011a => 0x012a, 0x012e => 0x012b, 0x0137 => 0x012c,
|
||||
0x2212 => 0x012d, 0xce => 0x012e, 0x0148 => 0x012f, 0x0163 => 0x0130,
|
||||
0xac => 0x0131, 0xf6 => 0x0132, 0xfc => 0x0133, 0x2260 => 0x0134,
|
||||
0x0123 => 0x0135, 0xf0 => 0x0136, 0x017e => 0x0137, 0x0146 => 0x0138,
|
||||
0xb9 => 0x0139, 0x012b => 0x013a, 0x20ac => 0x013b);
|
||||
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('Times-Roman');
|
||||
}
|
||||
}
|
|
@ -0,0 +1,491 @@
|
|||
<?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 => "\x00\x20", 0x21 => "\x27\x01", 0x22 => "\x27\x02",
|
||||
0x23 => "\x27\x03", 0x24 => "\x27\x04", 0x25 => "\x26\x0e",
|
||||
0x26 => "\x27\x06", 0x27 => "\x27\x07", 0x28 => "\x27\x08",
|
||||
0x29 => "\x27\x09", 0x2a => "\x26\x1b", 0x2b => "\x26\x1e",
|
||||
0x2c => "\x27\x0c", 0x2d => "\x27\x0d", 0x2e => "\x27\x0e",
|
||||
0x2f => "\x27\x0f", 0x30 => "\x27\x10", 0x31 => "\x27\x11",
|
||||
0x32 => "\x27\x12", 0x33 => "\x27\x13", 0x34 => "\x27\x14",
|
||||
0x35 => "\x27\x15", 0x36 => "\x27\x16", 0x37 => "\x27\x17",
|
||||
0x38 => "\x27\x18", 0x39 => "\x27\x19", 0x3a => "\x27\x1a",
|
||||
0x3b => "\x27\x1b", 0x3c => "\x27\x1c", 0x3d => "\x27\x1d",
|
||||
0x3e => "\x27\x1e", 0x3f => "\x27\x1f", 0x40 => "\x27\x20",
|
||||
0x41 => "\x27\x21", 0x42 => "\x27\x22", 0x43 => "\x27\x23",
|
||||
0x44 => "\x27\x24", 0x45 => "\x27\x25", 0x46 => "\x27\x26",
|
||||
0x47 => "\x27\x27", 0x48 => "\x26\x05", 0x49 => "\x27\x29",
|
||||
0x4a => "\x27\x2a", 0x4b => "\x27\x2b", 0x4c => "\x27\x2c",
|
||||
0x4d => "\x27\x2d", 0x4e => "\x27\x2e", 0x4f => "\x27\x2f",
|
||||
0x50 => "\x27\x30", 0x51 => "\x27\x31", 0x52 => "\x27\x32",
|
||||
0x53 => "\x27\x33", 0x54 => "\x27\x34", 0x55 => "\x27\x35",
|
||||
0x56 => "\x27\x36", 0x57 => "\x27\x37", 0x58 => "\x27\x38",
|
||||
0x59 => "\x27\x39", 0x5a => "\x27\x3a", 0x5b => "\x27\x3b",
|
||||
0x5c => "\x27\x3c", 0x5d => "\x27\x3d", 0x5e => "\x27\x3e",
|
||||
0x5f => "\x27\x3f", 0x60 => "\x27\x40", 0x61 => "\x27\x41",
|
||||
0x62 => "\x27\x42", 0x63 => "\x27\x43", 0x64 => "\x27\x44",
|
||||
0x65 => "\x27\x45", 0x66 => "\x27\x46", 0x67 => "\x27\x47",
|
||||
0x68 => "\x27\x48", 0x69 => "\x27\x49", 0x6a => "\x27\x4a",
|
||||
0x6b => "\x27\x4b", 0x6c => "\x25\xcf", 0x6d => "\x27\x4d",
|
||||
0x6e => "\x25\xa0", 0x6f => "\x27\x4f", 0x70 => "\x27\x50",
|
||||
0x71 => "\x27\x51", 0x72 => "\x27\x52", 0x73 => "\x25\xb2",
|
||||
0x74 => "\x25\xbc", 0x75 => "\x25\xc6", 0x76 => "\x27\x56",
|
||||
0x77 => "\x25\xd7", 0x78 => "\x27\x58", 0x79 => "\x27\x59",
|
||||
0x7a => "\x27\x5a", 0x7b => "\x27\x5b", 0x7c => "\x27\x5c",
|
||||
0x7d => "\x27\x5d", 0x7e => "\x27\x5e", 0x80 => "\x27\x68",
|
||||
0x81 => "\x27\x69", 0x82 => "\x27\x6a", 0x83 => "\x27\x6b",
|
||||
0x84 => "\x27\x6c", 0x85 => "\x27\x6d", 0x86 => "\x27\x6e",
|
||||
0x87 => "\x27\x6f", 0x88 => "\x27\x70", 0x89 => "\x27\x71",
|
||||
0x8a => "\x27\x72", 0x8b => "\x27\x73", 0x8c => "\x27\x74",
|
||||
0x8d => "\x27\x75", 0xa1 => "\x27\x61", 0xa2 => "\x27\x62",
|
||||
0xa3 => "\x27\x63", 0xa4 => "\x27\x64", 0xa5 => "\x27\x65",
|
||||
0xa6 => "\x27\x66", 0xa7 => "\x27\x67", 0xa8 => "\x26\x63",
|
||||
0xa9 => "\x26\x66", 0xaa => "\x26\x65", 0xab => "\x26\x60",
|
||||
0xac => "\x24\x60", 0xad => "\x24\x61", 0xae => "\x24\x62",
|
||||
0xaf => "\x24\x63", 0xb0 => "\x24\x64", 0xb1 => "\x24\x65",
|
||||
0xb2 => "\x24\x66", 0xb3 => "\x24\x67", 0xb4 => "\x24\x68",
|
||||
0xb5 => "\x24\x69", 0xb6 => "\x27\x76", 0xb7 => "\x27\x77",
|
||||
0xb8 => "\x27\x78", 0xb9 => "\x27\x79", 0xba => "\x27\x7a",
|
||||
0xbb => "\x27\x7b", 0xbc => "\x27\x7c", 0xbd => "\x27\x7d",
|
||||
0xbe => "\x27\x7e", 0xbf => "\x27\x7f", 0xc0 => "\x27\x80",
|
||||
0xc1 => "\x27\x81", 0xc2 => "\x27\x82", 0xc3 => "\x27\x83",
|
||||
0xc4 => "\x27\x84", 0xc5 => "\x27\x85", 0xc6 => "\x27\x86",
|
||||
0xc7 => "\x27\x87", 0xc8 => "\x27\x88", 0xc9 => "\x27\x89",
|
||||
0xca => "\x27\x8a", 0xcb => "\x27\x8b", 0xcc => "\x27\x8c",
|
||||
0xcd => "\x27\x8d", 0xce => "\x27\x8e", 0xcf => "\x27\x8f",
|
||||
0xd0 => "\x27\x90", 0xd1 => "\x27\x91", 0xd2 => "\x27\x92",
|
||||
0xd3 => "\x27\x93", 0xd4 => "\x27\x94", 0xd5 => "\x21\x92",
|
||||
0xd6 => "\x21\x94", 0xd7 => "\x21\x95", 0xd8 => "\x27\x98",
|
||||
0xd9 => "\x27\x99", 0xda => "\x27\x9a", 0xdb => "\x27\x9b",
|
||||
0xdc => "\x27\x9c", 0xdd => "\x27\x9d", 0xde => "\x27\x9e",
|
||||
0xdf => "\x27\x9f", 0xe0 => "\x27\xa0", 0xe1 => "\x27\xa1",
|
||||
0xe2 => "\x27\xa2", 0xe3 => "\x27\xa3", 0xe4 => "\x27\xa4",
|
||||
0xe5 => "\x27\xa5", 0xe6 => "\x27\xa6", 0xe7 => "\x27\xa7",
|
||||
0xe8 => "\x27\xa8", 0xe9 => "\x27\xa9", 0xea => "\x27\xaa",
|
||||
0xeb => "\x27\xab", 0xec => "\x27\xac", 0xed => "\x27\xad",
|
||||
0xee => "\x27\xae", 0xef => "\x27\xaf", 0xf1 => "\x27\xb1",
|
||||
0xf2 => "\x27\xb2", 0xf3 => "\x27\xb3", 0xf4 => "\x27\xb4",
|
||||
0xf5 => "\x27\xb5", 0xf6 => "\x27\xb6", 0xf7 => "\x27\xb7",
|
||||
0xf8 => "\x27\xb8", 0xf9 => "\x27\xb9", 0xfa => "\x27\xba",
|
||||
0xfb => "\x27\xbb", 0xfc => "\x27\xbc", 0xfd => "\x27\xbd",
|
||||
0xfe => "\x27\xbe");
|
||||
|
||||
|
||||
|
||||
/**** 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'] =
|
||||
"\x00\x43\x00\x6f\x00\x70\x00\x79\x00\x72\x00\x69\x00\x67\x00\x68\x00"
|
||||
. "\x74\x00\x20\x00\x28\x00\x63\x00\x29\x00\x20\x00\x31\x00\x39\x00"
|
||||
. "\x38\x00\x35\x00\x2c\x00\x20\x00\x31\x00\x39\x00\x38\x00\x37\x00"
|
||||
. "\x2c\x00\x20\x00\x31\x00\x39\x00\x38\x00\x38\x00\x2c\x00\x20\x00"
|
||||
. "\x31\x00\x39\x00\x38\x00\x39\x00\x2c\x00\x20\x00\x31\x00\x39\x00"
|
||||
. "\x39\x00\x37\x00\x20\x00\x41\x00\x64\x00\x6f\x00\x62\x00\x65\x00"
|
||||
. "\x20\x00\x53\x00\x79\x00\x73\x00\x74\x00\x65\x00\x6d\x00\x73\x00"
|
||||
. "\x20\x00\x49\x00\x6e\x00\x63\x00\x6f\x00\x72\x00\x70\x00\x6f\x00"
|
||||
. "\x72\x00\x61\x00\x74\x00\x65\x00\x64\x00\x2e\x00\x20\x00\x41\x00"
|
||||
. "\x6c\x00\x6c\x00\x20\x00\x52\x00\x69\x00\x67\x00\x68\x00\x74\x00"
|
||||
. "\x73\x00\x20\x00\x52\x00\x65\x00\x73\x00\x65\x00\x72\x00\x76\x00"
|
||||
. "\x65\x00\x64\x00\x2e\x00\x49\x00\x54\x00\x43\x00\x20\x00\x5a\x00"
|
||||
. "\x61\x00\x70\x00\x66\x00\x20\x00\x44\x00\x69\x00\x6e\x00\x67\x00"
|
||||
. "\x62\x00\x61\x00\x74\x00\x73\x00\x20\x00\x69\x00\x73\x00\x20\x00"
|
||||
. "\x61\x00\x20\x00\x72\x00\x65\x00\x67\x00\x69\x00\x73\x00\x74\x00"
|
||||
. "\x65\x00\x72\x00\x65\x00\x64\x00\x20\x00\x74\x00\x72\x00\x61\x00"
|
||||
. "\x64\x00\x65\x00\x6d\x00\x61\x00\x72\x00\x6b\x00\x20\x00\x6f\x00"
|
||||
. "\x66\x00\x20\x00\x49\x00\x6e\x00\x74\x00\x65\x00\x72\x00\x6e\x00"
|
||||
. "\x61\x00\x74\x00\x69\x00\x6f\x00\x6e\x00\x61\x00\x6c\x00\x20\x00"
|
||||
. "\x54\x00\x79\x00\x70\x00\x65\x00\x66\x00\x61\x00\x63\x00\x65\x00"
|
||||
. "\x20\x00\x43\x00\x6f\x00\x72\x00\x70\x00\x6f\x00\x72\x00\x61\x00"
|
||||
. "\x74\x00\x69\x00\x6f\x00\x6e\x00\x2e";
|
||||
$this->_fontNames[Zend_Pdf_Font::NAME_FAMILY]['en'] =
|
||||
"\x00\x5a\x00\x61\x00\x70\x00\x66\x00\x44\x00\x69\x00\x6e\x00\x67\x00"
|
||||
. "\x62\x00\x61\x00\x74\x00\x73";
|
||||
$this->_fontNames[Zend_Pdf_Font::NAME_STYLE]['en'] =
|
||||
"\x00\x4d\x00\x65\x00\x64\x00\x69\x00\x75\x00\x6d";
|
||||
$this->_fontNames[Zend_Pdf_Font::NAME_ID]['en'] =
|
||||
"\x00\x34\x00\x33\x00\x30\x00\x38\x00\x32";
|
||||
$this->_fontNames[Zend_Pdf_Font::NAME_FULL]['en'] =
|
||||
"\x00\x5a\x00\x61\x00\x70\x00\x66\x00\x44\x00\x69\x00\x6e\x00\x67\x00"
|
||||
. "\x62\x00\x61\x00\x74\x00\x73\x00\x20\x00\x4d\x00\x65\x00\x64\x00"
|
||||
. "\x69\x00\x75\x00\x6d";
|
||||
$this->_fontNames[Zend_Pdf_Font::NAME_VERSION]['en'] =
|
||||
"\x00\x30\x00\x30\x00\x32\x00\x2e\x00\x30\x00\x30\x00\x30";
|
||||
$this->_fontNames[Zend_Pdf_Font::NAME_POSTSCRIPT]['en'] =
|
||||
"\x00\x5a\x00\x61\x00\x70\x00\x66\x00\x44\x00\x69\x00\x6e\x00\x67\x00"
|
||||
. "\x62\x00\x61\x00\x74\x00\x73";
|
||||
|
||||
$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 => 0x01, 0x2701 => 0x02, 0x2702 => 0x03, 0x2703 => 0x04,
|
||||
0x2704 => 0x05, 0x260e => 0x06, 0x2706 => 0x07, 0x2707 => 0x08,
|
||||
0x2708 => 0x09, 0x2709 => 0x0a, 0x261b => 0x0b, 0x261e => 0x0c,
|
||||
0x270c => 0x0d, 0x270d => 0x0e, 0x270e => 0x0f, 0x270f => 0x10,
|
||||
0x2710 => 0x11, 0x2711 => 0x12, 0x2712 => 0x13, 0x2713 => 0x14,
|
||||
0x2714 => 0x15, 0x2715 => 0x16, 0x2716 => 0x17, 0x2717 => 0x18,
|
||||
0x2718 => 0x19, 0x2719 => 0x1a, 0x271a => 0x1b, 0x271b => 0x1c,
|
||||
0x271c => 0x1d, 0x271d => 0x1e, 0x271e => 0x1f, 0x271f => 0x20,
|
||||
0x2720 => 0x21, 0x2721 => 0x22, 0x2722 => 0x23, 0x2723 => 0x24,
|
||||
0x2724 => 0x25, 0x2725 => 0x26, 0x2726 => 0x27, 0x2727 => 0x28,
|
||||
0x2605 => 0x29, 0x2729 => 0x2a, 0x272a => 0x2b, 0x272b => 0x2c,
|
||||
0x272c => 0x2d, 0x272d => 0x2e, 0x272e => 0x2f, 0x272f => 0x30,
|
||||
0x2730 => 0x31, 0x2731 => 0x32, 0x2732 => 0x33, 0x2733 => 0x34,
|
||||
0x2734 => 0x35, 0x2735 => 0x36, 0x2736 => 0x37, 0x2737 => 0x38,
|
||||
0x2738 => 0x39, 0x2739 => 0x3a, 0x273a => 0x3b, 0x273b => 0x3c,
|
||||
0x273c => 0x3d, 0x273d => 0x3e, 0x273e => 0x3f, 0x273f => 0x40,
|
||||
0x2740 => 0x41, 0x2741 => 0x42, 0x2742 => 0x43, 0x2743 => 0x44,
|
||||
0x2744 => 0x45, 0x2745 => 0x46, 0x2746 => 0x47, 0x2747 => 0x48,
|
||||
0x2748 => 0x49, 0x2749 => 0x4a, 0x274a => 0x4b, 0x274b => 0x4c,
|
||||
0x25cf => 0x4d, 0x274d => 0x4e, 0x25a0 => 0x4f, 0x274f => 0x50,
|
||||
0x2750 => 0x51, 0x2751 => 0x52, 0x2752 => 0x53, 0x25b2 => 0x54,
|
||||
0x25bc => 0x55, 0x25c6 => 0x56, 0x2756 => 0x57, 0x25d7 => 0x58,
|
||||
0x2758 => 0x59, 0x2759 => 0x5a, 0x275a => 0x5b, 0x275b => 0x5c,
|
||||
0x275c => 0x5d, 0x275d => 0x5e, 0x275e => 0x5f, 0x2768 => 0x60,
|
||||
0x2769 => 0x61, 0x276a => 0x62, 0x276b => 0x63, 0x276c => 0x64,
|
||||
0x276d => 0x65, 0x276e => 0x66, 0x276f => 0x67, 0x2770 => 0x68,
|
||||
0x2771 => 0x69, 0x2772 => 0x6a, 0x2773 => 0x6b, 0x2774 => 0x6c,
|
||||
0x2775 => 0x6d, 0x2761 => 0x6e, 0x2762 => 0x6f, 0x2763 => 0x70,
|
||||
0x2764 => 0x71, 0x2765 => 0x72, 0x2766 => 0x73, 0x2767 => 0x74,
|
||||
0x2663 => 0x75, 0x2666 => 0x76, 0x2665 => 0x77, 0x2660 => 0x78,
|
||||
0x2460 => 0x79, 0x2461 => 0x7a, 0x2462 => 0x7b, 0x2463 => 0x7c,
|
||||
0x2464 => 0x7d, 0x2465 => 0x7e, 0x2466 => 0x7f, 0x2467 => 0x80,
|
||||
0x2468 => 0x81, 0x2469 => 0x82, 0x2776 => 0x83, 0x2777 => 0x84,
|
||||
0x2778 => 0x85, 0x2779 => 0x86, 0x277a => 0x87, 0x277b => 0x88,
|
||||
0x277c => 0x89, 0x277d => 0x8a, 0x277e => 0x8b, 0x277f => 0x8c,
|
||||
0x2780 => 0x8d, 0x2781 => 0x8e, 0x2782 => 0x8f, 0x2783 => 0x90,
|
||||
0x2784 => 0x91, 0x2785 => 0x92, 0x2786 => 0x93, 0x2787 => 0x94,
|
||||
0x2788 => 0x95, 0x2789 => 0x96, 0x278a => 0x97, 0x278b => 0x98,
|
||||
0x278c => 0x99, 0x278d => 0x9a, 0x278e => 0x9b, 0x278f => 0x9c,
|
||||
0x2790 => 0x9d, 0x2791 => 0x9e, 0x2792 => 0x9f, 0x2793 => 0xa0,
|
||||
0x2794 => 0xa1, 0x2192 => 0xa2, 0x2194 => 0xa3, 0x2195 => 0xa4,
|
||||
0x2798 => 0xa5, 0x2799 => 0xa6, 0x279a => 0xa7, 0x279b => 0xa8,
|
||||
0x279c => 0xa9, 0x279d => 0xaa, 0x279e => 0xab, 0x279f => 0xac,
|
||||
0x27a0 => 0xad, 0x27a1 => 0xae, 0x27a2 => 0xaf, 0x27a3 => 0xb0,
|
||||
0x27a4 => 0xb1, 0x27a5 => 0xb2, 0x27a6 => 0xb3, 0x27a7 => 0xb4,
|
||||
0x27a8 => 0xb5, 0x27a9 => 0xb6, 0x27aa => 0xb7, 0x27ab => 0xb8,
|
||||
0x27ac => 0xb9, 0x27ad => 0xba, 0x27ae => 0xbb, 0x27af => 0xbc,
|
||||
0x27b1 => 0xbd, 0x27b2 => 0xbe, 0x27b3 => 0xbf, 0x27b4 => 0xc0,
|
||||
0x27b5 => 0xc1, 0x27b6 => 0xc2, 0x27b7 => 0xc3, 0x27b8 => 0xc4,
|
||||
0x27b9 => 0xc5, 0x27ba => 0xc6, 0x27bb => 0xc7, 0x27bc => 0xc8,
|
||||
0x27bd => 0xc9, 0x27be => 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');
|
||||
}
|
||||
}
|
257
airtime_mvc/library/Zend/Pdf/Resource/Font/Type0.php
Normal file
257
airtime_mvc/library/Zend/Pdf/Resource/Font/Type0.php
Normal file
|
@ -0,0 +1,257 @@
|
|||
<?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: Type0.php 20096 2010-01-06 02:05:09Z bkarwin $
|
||||
*/
|
||||
|
||||
|
||||
/** Internally used classes */
|
||||
require_once 'Zend/Pdf/Element/Array.php';
|
||||
require_once 'Zend/Pdf/Element/Name.php';
|
||||
|
||||
|
||||
/** Zend_Pdf_Resource_Font */
|
||||
require_once 'Zend/Pdf/Resource/Font.php';
|
||||
|
||||
/**
|
||||
* Adobe PDF composite fonts implementation
|
||||
*
|
||||
* A composite font is one whose glyphs are obtained from other fonts or from fontlike
|
||||
* objects called CIDFonts ({@link Zend_Pdf_Resource_Font_CidFont}), organized hierarchically.
|
||||
* In PDF, a composite font is represented by a font dictionary whose Subtype value is Type0;
|
||||
* this is also called a Type 0 font (the Type 0 font at the top level of the hierarchy is the
|
||||
* root font).
|
||||
*
|
||||
* In PDF, a Type 0 font is a CID-keyed font.
|
||||
*
|
||||
* CID-keyed fonts provide effective method to operate with multi-byte character encodings.
|
||||
*
|
||||
* The CID-keyed font architecture specifies the external representation of certain font programs,
|
||||
* called CMap and CIDFont files, along with some conventions for combining and using those files.
|
||||
*
|
||||
* A CID-keyed font is the combination of a CMap with one or more CIDFonts, simple fonts,
|
||||
* or composite fonts containing glyph descriptions.
|
||||
*
|
||||
* The term 'CID-keyed font' reflects the fact that CID (character identifier) numbers
|
||||
* are used to index and access the glyph descriptions in the font.
|
||||
*
|
||||
*
|
||||
* Font objects should be normally be obtained from the factory methods
|
||||
* {@link Zend_Pdf_Font::fontWithName} and {@link Zend_Pdf_Font::fontWithPath}.
|
||||
*
|
||||
* @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_Type0 extends Zend_Pdf_Resource_Font
|
||||
{
|
||||
/**
|
||||
* Descendant CIDFont
|
||||
*
|
||||
* @var Zend_Pdf_Resource_Font_CidFont
|
||||
*/
|
||||
private $_descendantFont;
|
||||
|
||||
|
||||
/**
|
||||
* Generate ToUnicode character map data
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
static private function getToUnicodeCMapData()
|
||||
{
|
||||
return '/CIDInit /ProcSet findresource begin ' . "\n"
|
||||
. '12 dict begin ' . "\n"
|
||||
. 'begincmap ' . "\n"
|
||||
. '/CIDSystemInfo ' . "\n"
|
||||
. '<</Registry (Adobe) ' . "\n"
|
||||
. '/Ordering (UCS) ' . "\n"
|
||||
. '/Supplement 0' . "\n"
|
||||
. '>> def' . "\n"
|
||||
. '/CMapName /Adobe-Identity-UCS def ' . "\n"
|
||||
. '/CMapType 2 def ' . "\n"
|
||||
. '1 begincodespacerange' . "\n"
|
||||
. '<0000> <FFFF> ' . "\n"
|
||||
. 'endcodespacerange ' . "\n"
|
||||
. '1 beginbfrange ' . "\n"
|
||||
. '<0000> <FFFF> <0000> ' . "\n"
|
||||
. 'endbfrange ' . "\n"
|
||||
. 'endcmap ' . "\n"
|
||||
. 'CMapName currentdict /CMap defineresource pop ' . "\n"
|
||||
. 'end '
|
||||
. 'end ';
|
||||
}
|
||||
|
||||
/**
|
||||
* Object constructor
|
||||
*
|
||||
*/
|
||||
public function __construct(Zend_Pdf_Resource_Font_CidFont $descendantFont)
|
||||
{
|
||||
parent::__construct();
|
||||
|
||||
$this->_objectFactory->attach($descendantFont->getFactory());
|
||||
|
||||
$this->_fontType = Zend_Pdf_Font::TYPE_TYPE_0;
|
||||
$this->_descendantFont = $descendantFont;
|
||||
|
||||
|
||||
$this->_fontNames = $descendantFont->getFontNames();
|
||||
|
||||
$this->_isBold = $descendantFont->isBold();
|
||||
$this->_isItalic = $descendantFont->isItalic();
|
||||
$this->_isMonospaced = $descendantFont->isMonospace();
|
||||
|
||||
$this->_underlinePosition = $descendantFont->getUnderlinePosition();
|
||||
$this->_underlineThickness = $descendantFont->getUnderlineThickness();
|
||||
$this->_strikePosition = $descendantFont->getStrikePosition();
|
||||
$this->_strikeThickness = $descendantFont->getStrikeThickness();
|
||||
|
||||
$this->_unitsPerEm = $descendantFont->getUnitsPerEm();
|
||||
|
||||
$this->_ascent = $descendantFont->getAscent();
|
||||
$this->_descent = $descendantFont->getDescent();
|
||||
$this->_lineGap = $descendantFont->getLineGap();
|
||||
|
||||
|
||||
$this->_resource->Subtype = new Zend_Pdf_Element_Name('Type0');
|
||||
$this->_resource->BaseFont = new Zend_Pdf_Element_Name($descendantFont->getResource()->BaseFont->value);
|
||||
$this->_resource->DescendantFonts = new Zend_Pdf_Element_Array(array( $descendantFont->getResource() ));
|
||||
$this->_resource->Encoding = new Zend_Pdf_Element_Name('Identity-H');
|
||||
|
||||
$toUnicode = $this->_objectFactory->newStreamObject(self::getToUnicodeCMapData());
|
||||
$this->_resource->ToUnicode = $toUnicode;
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns an array of glyph numbers corresponding to the Unicode characters.
|
||||
*
|
||||
* Zend_Pdf uses 'Identity-H' encoding for Type 0 fonts.
|
||||
* So we don't need to perform any conversion
|
||||
*
|
||||
* See also {@link glyphNumberForCharacter()}.
|
||||
*
|
||||
* @param array $characterCodes Array of Unicode character codes (code points).
|
||||
* @return array Array of glyph numbers.
|
||||
*/
|
||||
public function glyphNumbersForCharacters($characterCodes)
|
||||
{
|
||||
return $characterCodes;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the glyph number corresponding to the Unicode character.
|
||||
*
|
||||
* Zend_Pdf uses 'Identity-H' encoding for Type 0 fonts.
|
||||
* So we don't need to perform any conversion
|
||||
*
|
||||
* @param integer $characterCode Unicode character code (code point).
|
||||
* @return integer Glyph number.
|
||||
*/
|
||||
public function glyphNumberForCharacter($characterCode)
|
||||
{
|
||||
return $characterCode;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a number between 0 and 1 inclusive that indicates the percentage
|
||||
* of characters in the string which are covered by glyphs in this font.
|
||||
*
|
||||
* Since no one font will contain glyphs for the entire Unicode character
|
||||
* range, this method can be used to help locate a suitable font when the
|
||||
* actual contents of the string are not known.
|
||||
*
|
||||
* Note that some fonts lie about the characters they support. Additionally,
|
||||
* fonts don't usually contain glyphs for control characters such as tabs
|
||||
* and line breaks, so it is rare that you will get back a full 1.0 score.
|
||||
* The resulting value should be considered informational only.
|
||||
*
|
||||
* @param string $string
|
||||
* @param string $charEncoding (optional) Character encoding of source text.
|
||||
* If omitted, uses 'current locale'.
|
||||
* @return float
|
||||
*/
|
||||
public function getCoveredPercentage($string, $charEncoding = '')
|
||||
{
|
||||
return $this->_descendantFont->getCoveredPercentage($string, $charEncoding);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the widths of the glyphs.
|
||||
*
|
||||
* The widths are expressed in the font's glyph space. You are responsible
|
||||
* for converting to user space as necessary. See {@link unitsPerEm()}.
|
||||
*
|
||||
* Throws an exception if the glyph number is out of range.
|
||||
*
|
||||
* See also {@link widthForGlyph()}.
|
||||
*
|
||||
* @param array &$glyphNumbers Array of glyph numbers.
|
||||
* @return array Array of glyph widths (integers).
|
||||
* @throws Zend_Pdf_Exception
|
||||
*/
|
||||
public function widthsForGlyphs($glyphNumbers)
|
||||
{
|
||||
return $this->_descendantFont->widthsForChars($glyphNumbers);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the width of the glyph.
|
||||
*
|
||||
* Like {@link widthsForGlyphs()} but used for one glyph at a time.
|
||||
*
|
||||
* @param integer $glyphNumber
|
||||
* @return integer
|
||||
* @throws Zend_Pdf_Exception
|
||||
*/
|
||||
public function widthForGlyph($glyphNumber)
|
||||
{
|
||||
return $this->_descendantFont->widthForChar($glyphNumber);
|
||||
}
|
||||
|
||||
/**
|
||||
* Convert string to the font encoding.
|
||||
*
|
||||
* The method is used to prepare string for text drawing operators
|
||||
*
|
||||
* @param string $string
|
||||
* @param string $charEncoding Character encoding of source text.
|
||||
* @return string
|
||||
*/
|
||||
public function encodeString($string, $charEncoding)
|
||||
{
|
||||
return iconv($charEncoding, 'UTF-16BE', $string);
|
||||
}
|
||||
|
||||
/**
|
||||
* Convert string from the font encoding.
|
||||
*
|
||||
* The method is used to convert strings retrieved from existing content streams
|
||||
*
|
||||
* @param string $string
|
||||
* @param string $charEncoding Character encoding of resulting text.
|
||||
* @return string
|
||||
*/
|
||||
public function decodeString($string, $charEncoding)
|
||||
{
|
||||
return iconv('UTF-16BE', $charEncoding, $string);
|
||||
}
|
||||
}
|
77
airtime_mvc/library/Zend/Pdf/Resource/Image.php
Normal file
77
airtime_mvc/library/Zend/Pdf/Resource/Image.php
Normal file
|
@ -0,0 +1,77 @@
|
|||
<?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
|
||||
* @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: Image.php 20096 2010-01-06 02:05:09Z bkarwin $
|
||||
*/
|
||||
|
||||
|
||||
/** Internally used classes */
|
||||
|
||||
/** Zend_Pdf_Element_Name */
|
||||
require_once 'Zend/Pdf/Element/Name.php';
|
||||
|
||||
|
||||
/** Zend_Pdf_Resource */
|
||||
require_once 'Zend/Pdf/Resource.php';
|
||||
|
||||
|
||||
/**
|
||||
* Image abstraction.
|
||||
*
|
||||
* Class is named not in accordance to the name convention.
|
||||
* It's "end-user" class, but its ancestor is not.
|
||||
* Thus part of the common class name is removed.
|
||||
*
|
||||
* @package Zend_Pdf
|
||||
* @copyright Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
*/
|
||||
abstract class Zend_Pdf_Resource_Image extends Zend_Pdf_Resource
|
||||
{
|
||||
/**
|
||||
* Object constructor.
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct('');
|
||||
|
||||
$this->_resource->dictionary->Type = new Zend_Pdf_Element_Name('XObject');
|
||||
$this->_resource->dictionary->Subtype = new Zend_Pdf_Element_Name('Image');
|
||||
}
|
||||
/**
|
||||
* get the height in pixels of the image
|
||||
*
|
||||
* @return integer
|
||||
*/
|
||||
abstract public function getPixelHeight();
|
||||
|
||||
/**
|
||||
* get the width in pixels of the image
|
||||
*
|
||||
* @return integer
|
||||
*/
|
||||
abstract public function getPixelWidth();
|
||||
|
||||
/**
|
||||
* gets an associative array of information about an image
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
abstract public function getProperties();
|
||||
}
|
||||
|
141
airtime_mvc/library/Zend/Pdf/Resource/Image/Jpeg.php
Normal file
141
airtime_mvc/library/Zend/Pdf/Resource/Image/Jpeg.php
Normal file
|
@ -0,0 +1,141 @@
|
|||
<?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
|
||||
* @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: Jpeg.php 20096 2010-01-06 02:05:09Z bkarwin $
|
||||
*/
|
||||
|
||||
|
||||
/** Internally used classes */
|
||||
require_once 'Zend/Pdf/Element/Name.php';
|
||||
require_once 'Zend/Pdf/Element/Numeric.php';
|
||||
|
||||
|
||||
/** Zend_Pdf_Resource_Image */
|
||||
require_once 'Zend/Pdf/Resource/Image.php';
|
||||
|
||||
/**
|
||||
* JPEG image
|
||||
*
|
||||
* @package Zend_Pdf
|
||||
* @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_Image_Jpeg extends Zend_Pdf_Resource_Image
|
||||
{
|
||||
|
||||
protected $_width;
|
||||
protected $_height;
|
||||
protected $_imageProperties;
|
||||
|
||||
/**
|
||||
* Object constructor
|
||||
*
|
||||
* @param string $imageFileName
|
||||
* @throws Zend_Pdf_Exception
|
||||
*/
|
||||
public function __construct($imageFileName)
|
||||
{
|
||||
if (!function_exists('gd_info')) {
|
||||
require_once 'Zend/Pdf/Exception.php';
|
||||
throw new Zend_Pdf_Exception('Image extension is not installed.');
|
||||
}
|
||||
|
||||
$gd_options = gd_info();
|
||||
if ( (!isset($gd_options['JPG Support']) || $gd_options['JPG Support'] != true) &&
|
||||
(!isset($gd_options['JPEG Support']) || $gd_options['JPEG Support'] != true) ) {
|
||||
require_once 'Zend/Pdf/Exception.php';
|
||||
throw new Zend_Pdf_Exception('JPG support is not configured properly.');
|
||||
}
|
||||
|
||||
if (($imageInfo = getimagesize($imageFileName)) === false) {
|
||||
require_once 'Zend/Pdf/Exception.php';
|
||||
throw new Zend_Pdf_Exception('Corrupted image or image doesn\'t exist.');
|
||||
}
|
||||
if ($imageInfo[2] != IMAGETYPE_JPEG && $imageInfo[2] != IMAGETYPE_JPEG2000) {
|
||||
require_once 'Zend/Pdf/Exception.php';
|
||||
throw new Zend_Pdf_Exception('ImageType is not JPG');
|
||||
}
|
||||
|
||||
parent::__construct();
|
||||
|
||||
switch ($imageInfo['channels']) {
|
||||
case 3:
|
||||
$colorSpace = 'DeviceRGB';
|
||||
break;
|
||||
case 4:
|
||||
$colorSpace = 'DeviceCMYK';
|
||||
break;
|
||||
default:
|
||||
$colorSpace = 'DeviceGray';
|
||||
break;
|
||||
}
|
||||
|
||||
$imageDictionary = $this->_resource->dictionary;
|
||||
$imageDictionary->Width = new Zend_Pdf_Element_Numeric($imageInfo[0]);
|
||||
$imageDictionary->Height = new Zend_Pdf_Element_Numeric($imageInfo[1]);
|
||||
$imageDictionary->ColorSpace = new Zend_Pdf_Element_Name($colorSpace);
|
||||
$imageDictionary->BitsPerComponent = new Zend_Pdf_Element_Numeric($imageInfo['bits']);
|
||||
if ($imageInfo[2] == IMAGETYPE_JPEG) {
|
||||
$imageDictionary->Filter = new Zend_Pdf_Element_Name('DCTDecode');
|
||||
} else if ($imageInfo[2] == IMAGETYPE_JPEG2000){
|
||||
$imageDictionary->Filter = new Zend_Pdf_Element_Name('JPXDecode');
|
||||
}
|
||||
|
||||
if (($imageFile = @fopen($imageFileName, 'rb')) === false ) {
|
||||
require_once 'Zend/Pdf/Exception.php';
|
||||
throw new Zend_Pdf_Exception( "Can not open '$imageFileName' file for reading." );
|
||||
}
|
||||
$byteCount = filesize($imageFileName);
|
||||
$this->_resource->value = '';
|
||||
while ( $byteCount > 0 && ($nextBlock = fread($imageFile, $byteCount)) != false ) {
|
||||
$this->_resource->value .= $nextBlock;
|
||||
$byteCount -= strlen($nextBlock);
|
||||
}
|
||||
fclose($imageFile);
|
||||
$this->_resource->skipFilters();
|
||||
|
||||
$this->_width = $imageInfo[0];
|
||||
$this->_height = $imageInfo[1];
|
||||
$this->_imageProperties = array();
|
||||
$this->_imageProperties['bitDepth'] = $imageInfo['bits'];
|
||||
$this->_imageProperties['jpegImageType'] = $imageInfo[2];
|
||||
$this->_imageProperties['jpegColorType'] = $imageInfo['channels'];
|
||||
}
|
||||
|
||||
/**
|
||||
* Image width
|
||||
*/
|
||||
public function getPixelWidth() {
|
||||
return $this->_width;
|
||||
}
|
||||
|
||||
/**
|
||||
* Image height
|
||||
*/
|
||||
public function getPixelHeight() {
|
||||
return $this->_height;
|
||||
}
|
||||
|
||||
/**
|
||||
* Image properties
|
||||
*/
|
||||
public function getProperties() {
|
||||
return $this->_imageProperties;
|
||||
}
|
||||
}
|
||||
|
374
airtime_mvc/library/Zend/Pdf/Resource/Image/Png.php
Normal file
374
airtime_mvc/library/Zend/Pdf/Resource/Image/Png.php
Normal file
|
@ -0,0 +1,374 @@
|
|||
<?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
|
||||
* @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: Png.php 20096 2010-01-06 02:05:09Z bkarwin $
|
||||
*/
|
||||
|
||||
|
||||
/** Internally used classes */
|
||||
require_once 'Zend/Pdf/Element/Array.php';
|
||||
require_once 'Zend/Pdf/Element/Dictionary.php';
|
||||
require_once 'Zend/Pdf/Element/Name.php';
|
||||
require_once 'Zend/Pdf/Element/Numeric.php';
|
||||
require_once 'Zend/Pdf/Element/String/Binary.php';
|
||||
|
||||
|
||||
/** Zend_Pdf_Resource_Image */
|
||||
require_once 'Zend/Pdf/Resource/Image.php';
|
||||
|
||||
/**
|
||||
* PNG image
|
||||
*
|
||||
* @package Zend_Pdf
|
||||
* @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_Image_Png extends Zend_Pdf_Resource_Image
|
||||
{
|
||||
const PNG_COMPRESSION_DEFAULT_STRATEGY = 0;
|
||||
const PNG_COMPRESSION_FILTERED = 1;
|
||||
const PNG_COMPRESSION_HUFFMAN_ONLY = 2;
|
||||
const PNG_COMPRESSION_RLE = 3;
|
||||
|
||||
const PNG_FILTER_NONE = 0;
|
||||
const PNG_FILTER_SUB = 1;
|
||||
const PNG_FILTER_UP = 2;
|
||||
const PNG_FILTER_AVERAGE = 3;
|
||||
const PNG_FILTER_PAETH = 4;
|
||||
|
||||
const PNG_INTERLACING_DISABLED = 0;
|
||||
const PNG_INTERLACING_ENABLED = 1;
|
||||
|
||||
const PNG_CHANNEL_GRAY = 0;
|
||||
const PNG_CHANNEL_RGB = 2;
|
||||
const PNG_CHANNEL_INDEXED = 3;
|
||||
const PNG_CHANNEL_GRAY_ALPHA = 4;
|
||||
const PNG_CHANNEL_RGB_ALPHA = 6;
|
||||
|
||||
protected $_width;
|
||||
protected $_height;
|
||||
protected $_imageProperties;
|
||||
|
||||
/**
|
||||
* Object constructor
|
||||
*
|
||||
* @param string $imageFileName
|
||||
* @throws Zend_Pdf_Exception
|
||||
* @todo Add compression conversions to support compression strategys other than PNG_COMPRESSION_DEFAULT_STRATEGY.
|
||||
* @todo Add pre-compression filtering.
|
||||
* @todo Add interlaced image handling.
|
||||
* @todo Add support for 16-bit images. Requires PDF version bump to 1.5 at least.
|
||||
* @todo Add processing for all PNG chunks defined in the spec. gAMA etc.
|
||||
* @todo Fix tRNS chunk support for Indexed Images to a SMask.
|
||||
*/
|
||||
public function __construct($imageFileName)
|
||||
{
|
||||
if (($imageFile = @fopen($imageFileName, 'rb')) === false ) {
|
||||
require_once 'Zend/Pdf/Exception.php';
|
||||
throw new Zend_Pdf_Exception( "Can not open '$imageFileName' file for reading." );
|
||||
}
|
||||
|
||||
parent::__construct();
|
||||
|
||||
//Check if the file is a PNG
|
||||
fseek($imageFile, 1, SEEK_CUR); //First signature byte (%)
|
||||
if ('PNG' != fread($imageFile, 3)) {
|
||||
require_once 'Zend/Pdf/Exception.php';
|
||||
throw new Zend_Pdf_Exception('Image is not a PNG');
|
||||
}
|
||||
fseek($imageFile, 12, SEEK_CUR); //Signature bytes (Includes the IHDR chunk) IHDR processed linerarly because it doesnt contain a variable chunk length
|
||||
$wtmp = unpack('Ni',fread($imageFile, 4)); //Unpack a 4-Byte Long
|
||||
$width = $wtmp['i'];
|
||||
$htmp = unpack('Ni',fread($imageFile, 4));
|
||||
$height = $htmp['i'];
|
||||
$bits = ord(fread($imageFile, 1)); //Higher than 8 bit depths are only supported in later versions of PDF.
|
||||
$color = ord(fread($imageFile, 1));
|
||||
|
||||
$compression = ord(fread($imageFile, 1));
|
||||
$prefilter = ord(fread($imageFile,1));
|
||||
|
||||
if (($interlacing = ord(fread($imageFile,1))) != Zend_Pdf_Resource_Image_Png::PNG_INTERLACING_DISABLED) {
|
||||
require_once 'Zend/Pdf/Exception.php';
|
||||
throw new Zend_Pdf_Exception( "Only non-interlaced images are currently supported." );
|
||||
}
|
||||
|
||||
$this->_width = $width;
|
||||
$this->_height = $height;
|
||||
$this->_imageProperties = array();
|
||||
$this->_imageProperties['bitDepth'] = $bits;
|
||||
$this->_imageProperties['pngColorType'] = $color;
|
||||
$this->_imageProperties['pngFilterType'] = $prefilter;
|
||||
$this->_imageProperties['pngCompressionType'] = $compression;
|
||||
$this->_imageProperties['pngInterlacingType'] = $interlacing;
|
||||
|
||||
fseek($imageFile, 4, SEEK_CUR); //4 Byte Ending Sequence
|
||||
$imageData = '';
|
||||
|
||||
/*
|
||||
* The following loop processes PNG chunks. 4 Byte Longs are packed first give the chunk length
|
||||
* followed by the chunk signature, a four byte code. IDAT and IEND are manditory in any PNG.
|
||||
*/
|
||||
while(($chunkLengthBytes = fread($imageFile, 4)) !== false) {
|
||||
$chunkLengthtmp = unpack('Ni', $chunkLengthBytes);
|
||||
$chunkLength = $chunkLengthtmp['i'];
|
||||
$chunkType = fread($imageFile, 4);
|
||||
switch($chunkType) {
|
||||
case 'IDAT': //Image Data
|
||||
/*
|
||||
* Reads the actual image data from the PNG file. Since we know at this point that the compression
|
||||
* strategy is the default strategy, we also know that this data is Zip compressed. We will either copy
|
||||
* the data directly to the PDF and provide the correct FlateDecode predictor, or decompress the data
|
||||
* decode the filters and output the data as a raw pixel map.
|
||||
*/
|
||||
$imageData .= fread($imageFile, $chunkLength);
|
||||
fseek($imageFile, 4, SEEK_CUR);
|
||||
break;
|
||||
|
||||
case 'PLTE': //Palette
|
||||
$paletteData = fread($imageFile, $chunkLength);
|
||||
fseek($imageFile, 4, SEEK_CUR);
|
||||
break;
|
||||
|
||||
case 'tRNS': //Basic (non-alpha channel) transparency.
|
||||
$trnsData = fread($imageFile, $chunkLength);
|
||||
switch ($color) {
|
||||
case Zend_Pdf_Resource_Image_Png::PNG_CHANNEL_GRAY:
|
||||
$baseColor = ord(substr($trnsData, 1, 1));
|
||||
$transparencyData = array(new Zend_Pdf_Element_Numeric($baseColor),
|
||||
new Zend_Pdf_Element_Numeric($baseColor));
|
||||
break;
|
||||
|
||||
case Zend_Pdf_Resource_Image_Png::PNG_CHANNEL_RGB:
|
||||
$red = ord(substr($trnsData,1,1));
|
||||
$green = ord(substr($trnsData,3,1));
|
||||
$blue = ord(substr($trnsData,5,1));
|
||||
$transparencyData = array(new Zend_Pdf_Element_Numeric($red),
|
||||
new Zend_Pdf_Element_Numeric($red),
|
||||
new Zend_Pdf_Element_Numeric($green),
|
||||
new Zend_Pdf_Element_Numeric($green),
|
||||
new Zend_Pdf_Element_Numeric($blue),
|
||||
new Zend_Pdf_Element_Numeric($blue));
|
||||
break;
|
||||
|
||||
case Zend_Pdf_Resource_Image_Png::PNG_CHANNEL_INDEXED:
|
||||
//Find the first transparent color in the index, we will mask that. (This is a bit of a hack. This should be a SMask and mask all entries values).
|
||||
if(($trnsIdx = strpos($trnsData, chr(0))) !== false) {
|
||||
$transparencyData = array(new Zend_Pdf_Element_Numeric($trnsIdx),
|
||||
new Zend_Pdf_Element_Numeric($trnsIdx));
|
||||
}
|
||||
break;
|
||||
|
||||
case Zend_Pdf_Resource_Image_Png::PNG_CHANNEL_GRAY_ALPHA:
|
||||
// Fall through to the next case
|
||||
|
||||
case Zend_Pdf_Resource_Image_Png::PNG_CHANNEL_RGB_ALPHA:
|
||||
require_once 'Zend/Pdf/Exception.php';
|
||||
throw new Zend_Pdf_Exception( "tRNS chunk illegal for Alpha Channel Images" );
|
||||
break;
|
||||
}
|
||||
fseek($imageFile, 4, SEEK_CUR); //4 Byte Ending Sequence
|
||||
break;
|
||||
|
||||
case 'IEND';
|
||||
break 2; //End the loop too
|
||||
|
||||
default:
|
||||
fseek($imageFile, $chunkLength + 4, SEEK_CUR); //Skip the section
|
||||
break;
|
||||
}
|
||||
}
|
||||
fclose($imageFile);
|
||||
|
||||
$compressed = true;
|
||||
$imageDataTmp = '';
|
||||
$smaskData = '';
|
||||
switch ($color) {
|
||||
case Zend_Pdf_Resource_Image_Png::PNG_CHANNEL_RGB:
|
||||
$colorSpace = new Zend_Pdf_Element_Name('DeviceRGB');
|
||||
break;
|
||||
|
||||
case Zend_Pdf_Resource_Image_Png::PNG_CHANNEL_GRAY:
|
||||
$colorSpace = new Zend_Pdf_Element_Name('DeviceGray');
|
||||
break;
|
||||
|
||||
case Zend_Pdf_Resource_Image_Png::PNG_CHANNEL_INDEXED:
|
||||
if(empty($paletteData)) {
|
||||
require_once 'Zend/Pdf/Exception.php';
|
||||
throw new Zend_Pdf_Exception( "PNG Corruption: No palette data read for indexed type PNG." );
|
||||
}
|
||||
$colorSpace = new Zend_Pdf_Element_Array();
|
||||
$colorSpace->items[] = new Zend_Pdf_Element_Name('Indexed');
|
||||
$colorSpace->items[] = new Zend_Pdf_Element_Name('DeviceRGB');
|
||||
$colorSpace->items[] = new Zend_Pdf_Element_Numeric((strlen($paletteData)/3-1));
|
||||
$paletteObject = $this->_objectFactory->newObject(new Zend_Pdf_Element_String_Binary($paletteData));
|
||||
$colorSpace->items[] = $paletteObject;
|
||||
break;
|
||||
|
||||
case Zend_Pdf_Resource_Image_Png::PNG_CHANNEL_GRAY_ALPHA:
|
||||
/*
|
||||
* To decode PNG's with alpha data we must create two images from one. One image will contain the Gray data
|
||||
* the other will contain the Gray transparency overlay data. The former will become the object data and the latter
|
||||
* will become the Shadow Mask (SMask).
|
||||
*/
|
||||
if($bits > 8) {
|
||||
require_once 'Zend/Pdf/Exception.php';
|
||||
throw new Zend_Pdf_Exception("Alpha PNGs with bit depth > 8 are not yet supported");
|
||||
}
|
||||
|
||||
$colorSpace = new Zend_Pdf_Element_Name('DeviceGray');
|
||||
|
||||
require_once 'Zend/Pdf/ElementFactory.php';
|
||||
$decodingObjFactory = Zend_Pdf_ElementFactory::createFactory(1);
|
||||
$decodingStream = $decodingObjFactory->newStreamObject($imageData);
|
||||
$decodingStream->dictionary->Filter = new Zend_Pdf_Element_Name('FlateDecode');
|
||||
$decodingStream->dictionary->DecodeParms = new Zend_Pdf_Element_Dictionary();
|
||||
$decodingStream->dictionary->DecodeParms->Predictor = new Zend_Pdf_Element_Numeric(15);
|
||||
$decodingStream->dictionary->DecodeParms->Columns = new Zend_Pdf_Element_Numeric($width);
|
||||
$decodingStream->dictionary->DecodeParms->Colors = new Zend_Pdf_Element_Numeric(2); //GreyAlpha
|
||||
$decodingStream->dictionary->DecodeParms->BitsPerComponent = new Zend_Pdf_Element_Numeric($bits);
|
||||
$decodingStream->skipFilters();
|
||||
|
||||
$pngDataRawDecoded = $decodingStream->value;
|
||||
|
||||
//Iterate every pixel and copy out gray data and alpha channel (this will be slow)
|
||||
for($pixel = 0, $pixelcount = ($width * $height); $pixel < $pixelcount; $pixel++) {
|
||||
$imageDataTmp .= $pngDataRawDecoded[($pixel*2)];
|
||||
$smaskData .= $pngDataRawDecoded[($pixel*2)+1];
|
||||
}
|
||||
$compressed = false;
|
||||
$imageData = $imageDataTmp; //Overwrite image data with the gray channel without alpha
|
||||
break;
|
||||
|
||||
case Zend_Pdf_Resource_Image_Png::PNG_CHANNEL_RGB_ALPHA:
|
||||
/*
|
||||
* To decode PNG's with alpha data we must create two images from one. One image will contain the RGB data
|
||||
* the other will contain the Gray transparency overlay data. The former will become the object data and the latter
|
||||
* will become the Shadow Mask (SMask).
|
||||
*/
|
||||
if($bits > 8) {
|
||||
require_once 'Zend/Pdf/Exception.php';
|
||||
throw new Zend_Pdf_Exception("Alpha PNGs with bit depth > 8 are not yet supported");
|
||||
}
|
||||
|
||||
$colorSpace = new Zend_Pdf_Element_Name('DeviceRGB');
|
||||
|
||||
require_once 'Zend/Pdf/ElementFactory.php';
|
||||
$decodingObjFactory = Zend_Pdf_ElementFactory::createFactory(1);
|
||||
$decodingStream = $decodingObjFactory->newStreamObject($imageData);
|
||||
$decodingStream->dictionary->Filter = new Zend_Pdf_Element_Name('FlateDecode');
|
||||
$decodingStream->dictionary->DecodeParms = new Zend_Pdf_Element_Dictionary();
|
||||
$decodingStream->dictionary->DecodeParms->Predictor = new Zend_Pdf_Element_Numeric(15);
|
||||
$decodingStream->dictionary->DecodeParms->Columns = new Zend_Pdf_Element_Numeric($width);
|
||||
$decodingStream->dictionary->DecodeParms->Colors = new Zend_Pdf_Element_Numeric(4); //RGBA
|
||||
$decodingStream->dictionary->DecodeParms->BitsPerComponent = new Zend_Pdf_Element_Numeric($bits);
|
||||
$decodingStream->skipFilters();
|
||||
|
||||
$pngDataRawDecoded = $decodingStream->value;
|
||||
|
||||
//Iterate every pixel and copy out rgb data and alpha channel (this will be slow)
|
||||
for($pixel = 0, $pixelcount = ($width * $height); $pixel < $pixelcount; $pixel++) {
|
||||
$imageDataTmp .= $pngDataRawDecoded[($pixel*4)+0] . $pngDataRawDecoded[($pixel*4)+1] . $pngDataRawDecoded[($pixel*4)+2];
|
||||
$smaskData .= $pngDataRawDecoded[($pixel*4)+3];
|
||||
}
|
||||
|
||||
$compressed = false;
|
||||
$imageData = $imageDataTmp; //Overwrite image data with the RGB channel without alpha
|
||||
break;
|
||||
|
||||
default:
|
||||
require_once 'Zend/Pdf/Exception.php';
|
||||
throw new Zend_Pdf_Exception( "PNG Corruption: Invalid color space." );
|
||||
}
|
||||
|
||||
if(empty($imageData)) {
|
||||
require_once 'Zend/Pdf/Exception.php';
|
||||
throw new Zend_Pdf_Exception( "Corrupt PNG Image. Mandatory IDAT chunk not found." );
|
||||
}
|
||||
|
||||
$imageDictionary = $this->_resource->dictionary;
|
||||
if(!empty($smaskData)) {
|
||||
/*
|
||||
* Includes the Alpha transparency data as a Gray Image, then assigns the image as the Shadow Mask for the main image data.
|
||||
*/
|
||||
$smaskStream = $this->_objectFactory->newStreamObject($smaskData);
|
||||
$smaskStream->dictionary->Type = new Zend_Pdf_Element_Name('XObject');
|
||||
$smaskStream->dictionary->Subtype = new Zend_Pdf_Element_Name('Image');
|
||||
$smaskStream->dictionary->Width = new Zend_Pdf_Element_Numeric($width);
|
||||
$smaskStream->dictionary->Height = new Zend_Pdf_Element_Numeric($height);
|
||||
$smaskStream->dictionary->ColorSpace = new Zend_Pdf_Element_Name('DeviceGray');
|
||||
$smaskStream->dictionary->BitsPerComponent = new Zend_Pdf_Element_Numeric($bits);
|
||||
$imageDictionary->SMask = $smaskStream;
|
||||
|
||||
// Encode stream with FlateDecode filter
|
||||
$smaskStreamDecodeParms = array();
|
||||
$smaskStreamDecodeParms['Predictor'] = new Zend_Pdf_Element_Numeric(15);
|
||||
$smaskStreamDecodeParms['Columns'] = new Zend_Pdf_Element_Numeric($width);
|
||||
$smaskStreamDecodeParms['Colors'] = new Zend_Pdf_Element_Numeric(1);
|
||||
$smaskStreamDecodeParms['BitsPerComponent'] = new Zend_Pdf_Element_Numeric(8);
|
||||
$smaskStream->dictionary->DecodeParms = new Zend_Pdf_Element_Dictionary($smaskStreamDecodeParms);
|
||||
$smaskStream->dictionary->Filter = new Zend_Pdf_Element_Name('FlateDecode');
|
||||
}
|
||||
|
||||
if(!empty($transparencyData)) {
|
||||
//This is experimental and not properly tested.
|
||||
$imageDictionary->Mask = new Zend_Pdf_Element_Array($transparencyData);
|
||||
}
|
||||
|
||||
$imageDictionary->Width = new Zend_Pdf_Element_Numeric($width);
|
||||
$imageDictionary->Height = new Zend_Pdf_Element_Numeric($height);
|
||||
$imageDictionary->ColorSpace = $colorSpace;
|
||||
$imageDictionary->BitsPerComponent = new Zend_Pdf_Element_Numeric($bits);
|
||||
$imageDictionary->Filter = new Zend_Pdf_Element_Name('FlateDecode');
|
||||
|
||||
$decodeParms = array();
|
||||
$decodeParms['Predictor'] = new Zend_Pdf_Element_Numeric(15); // Optimal prediction
|
||||
$decodeParms['Columns'] = new Zend_Pdf_Element_Numeric($width);
|
||||
$decodeParms['Colors'] = new Zend_Pdf_Element_Numeric((($color==Zend_Pdf_Resource_Image_Png::PNG_CHANNEL_RGB || $color==Zend_Pdf_Resource_Image_Png::PNG_CHANNEL_RGB_ALPHA)?(3):(1)));
|
||||
$decodeParms['BitsPerComponent'] = new Zend_Pdf_Element_Numeric($bits);
|
||||
$imageDictionary->DecodeParms = new Zend_Pdf_Element_Dictionary($decodeParms);
|
||||
|
||||
//Include only the image IDAT section data.
|
||||
$this->_resource->value = $imageData;
|
||||
|
||||
//Skip double compression
|
||||
if ($compressed) {
|
||||
$this->_resource->skipFilters();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Image width
|
||||
*/
|
||||
public function getPixelWidth() {
|
||||
return $this->_width;
|
||||
}
|
||||
|
||||
/**
|
||||
* Image height
|
||||
*/
|
||||
public function getPixelHeight() {
|
||||
return $this->_height;
|
||||
}
|
||||
|
||||
/**
|
||||
* Image properties
|
||||
*/
|
||||
public function getProperties() {
|
||||
return $this->_imageProperties;
|
||||
}
|
||||
}
|
442
airtime_mvc/library/Zend/Pdf/Resource/Image/Tiff.php
Normal file
442
airtime_mvc/library/Zend/Pdf/Resource/Image/Tiff.php
Normal file
|
@ -0,0 +1,442 @@
|
|||
<?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
|
||||
* @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: Tiff.php 20096 2010-01-06 02:05:09Z bkarwin $
|
||||
*/
|
||||
|
||||
/** Internally used classes */
|
||||
require_once 'Zend/Pdf/Element/Array.php';
|
||||
require_once 'Zend/Pdf/Element/Name.php';
|
||||
require_once 'Zend/Pdf/Element/Numeric.php';
|
||||
|
||||
|
||||
/** Zend_Pdf_Resource_Image */
|
||||
require_once 'Zend/Pdf/Resource/Image.php';
|
||||
|
||||
/**
|
||||
* TIFF image
|
||||
*
|
||||
* @package Zend_Pdf
|
||||
* @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_Image_Tiff extends Zend_Pdf_Resource_Image
|
||||
{
|
||||
const TIFF_FIELD_TYPE_BYTE=1;
|
||||
const TIFF_FIELD_TYPE_ASCII=2;
|
||||
const TIFF_FIELD_TYPE_SHORT=3;
|
||||
const TIFF_FIELD_TYPE_LONG=4;
|
||||
const TIFF_FIELD_TYPE_RATIONAL=5;
|
||||
|
||||
const TIFF_TAG_IMAGE_WIDTH=256;
|
||||
const TIFF_TAG_IMAGE_LENGTH=257; //Height
|
||||
const TIFF_TAG_BITS_PER_SAMPLE=258;
|
||||
const TIFF_TAG_COMPRESSION=259;
|
||||
const TIFF_TAG_PHOTOMETRIC_INTERPRETATION=262;
|
||||
const TIFF_TAG_STRIP_OFFSETS=273;
|
||||
const TIFF_TAG_SAMPLES_PER_PIXEL=277;
|
||||
const TIFF_TAG_STRIP_BYTE_COUNTS=279;
|
||||
|
||||
const TIFF_COMPRESSION_UNCOMPRESSED = 1;
|
||||
const TIFF_COMPRESSION_CCITT1D = 2;
|
||||
const TIFF_COMPRESSION_GROUP_3_FAX = 3;
|
||||
const TIFF_COMPRESSION_GROUP_4_FAX = 4;
|
||||
const TIFF_COMPRESSION_LZW = 5;
|
||||
const TIFF_COMPRESSION_JPEG = 6;
|
||||
const TIFF_COMPRESSION_FLATE = 8;
|
||||
const TIFF_COMPRESSION_FLATE_OBSOLETE_CODE = 32946;
|
||||
const TIFF_COMPRESSION_PACKBITS = 32773;
|
||||
|
||||
const TIFF_PHOTOMETRIC_INTERPRETATION_WHITE_IS_ZERO=0;
|
||||
const TIFF_PHOTOMETRIC_INTERPRETATION_BLACK_IS_ZERO=1;
|
||||
const TIFF_PHOTOMETRIC_INTERPRETATION_RGB=2;
|
||||
const TIFF_PHOTOMETRIC_INTERPRETATION_RGB_INDEXED=3;
|
||||
const TIFF_PHOTOMETRIC_INTERPRETATION_CMYK=5;
|
||||
const TIFF_PHOTOMETRIC_INTERPRETATION_YCBCR=6;
|
||||
const TIFF_PHOTOMETRIC_INTERPRETATION_CIELAB=8;
|
||||
|
||||
protected $_width;
|
||||
protected $_height;
|
||||
protected $_imageProperties;
|
||||
protected $_endianType;
|
||||
protected $_fileSize;
|
||||
protected $_bitsPerSample;
|
||||
protected $_compression;
|
||||
protected $_filter;
|
||||
protected $_colorCode;
|
||||
protected $_whiteIsZero;
|
||||
protected $_blackIsZero;
|
||||
protected $_colorSpace;
|
||||
protected $_imageDataOffset;
|
||||
protected $_imageDataLength;
|
||||
|
||||
const TIFF_ENDIAN_BIG=0;
|
||||
const TIFF_ENDIAN_LITTLE=1;
|
||||
|
||||
const UNPACK_TYPE_BYTE=0;
|
||||
const UNPACK_TYPE_SHORT=1;
|
||||
const UNPACK_TYPE_LONG=2;
|
||||
const UNPACK_TYPE_RATIONAL=3;
|
||||
|
||||
/**
|
||||
* Byte unpacking function
|
||||
*
|
||||
* Makes it possible to unpack bytes in one statement for enhanced logic readability.
|
||||
*
|
||||
* @param int $type
|
||||
* @param string $bytes
|
||||
* @throws Zend_Pdf_Exception
|
||||
*/
|
||||
protected function unpackBytes($type, $bytes) {
|
||||
if(!isset($this->_endianType)) {
|
||||
require_once 'Zend/Pdf/Exception.php';
|
||||
throw new Zend_Pdf_Exception("The unpackBytes function can only be used after the endianness of the file is known");
|
||||
}
|
||||
switch($type) {
|
||||
case Zend_Pdf_Resource_Image_Tiff::UNPACK_TYPE_BYTE:
|
||||
$format = 'C';
|
||||
$unpacked = unpack($format, $bytes);
|
||||
return $unpacked[1];
|
||||
break;
|
||||
case Zend_Pdf_Resource_Image_Tiff::UNPACK_TYPE_SHORT:
|
||||
$format = ($this->_endianType == Zend_Pdf_Resource_Image_Tiff::TIFF_ENDIAN_LITTLE)?'v':'n';
|
||||
$unpacked = unpack($format, $bytes);
|
||||
return $unpacked[1];
|
||||
break;
|
||||
case Zend_Pdf_Resource_Image_Tiff::UNPACK_TYPE_LONG:
|
||||
$format = ($this->_endianType == Zend_Pdf_Resource_Image_Tiff::TIFF_ENDIAN_LITTLE)?'V':'N';
|
||||
$unpacked = unpack($format, $bytes);
|
||||
return $unpacked[1];
|
||||
break;
|
||||
case Zend_Pdf_Resource_Image_Tiff::UNPACK_TYPE_RATIONAL:
|
||||
$format = ($this->_endianType == Zend_Pdf_Resource_Image_Tiff::TIFF_ENDIAN_LITTLE)?'V2':'N2';
|
||||
$unpacked = unpack($format, $bytes);
|
||||
return ($unpacked[1]/$unpacked[2]);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Object constructor
|
||||
*
|
||||
* @param string $imageFileName
|
||||
* @throws Zend_Pdf_Exception
|
||||
*/
|
||||
public function __construct($imageFileName)
|
||||
{
|
||||
if (($imageFile = @fopen($imageFileName, 'rb')) === false ) {
|
||||
require_once 'Zend/Pdf/Exception.php';
|
||||
throw new Zend_Pdf_Exception( "Can not open '$imageFileName' file for reading." );
|
||||
}
|
||||
|
||||
$byteOrderIndicator = fread($imageFile, 2);
|
||||
if($byteOrderIndicator == 'II') {
|
||||
$this->_endianType = Zend_Pdf_Resource_Image_Tiff::TIFF_ENDIAN_LITTLE;
|
||||
} else if($byteOrderIndicator == 'MM') {
|
||||
$this->_endianType = Zend_Pdf_Resource_Image_Tiff::TIFF_ENDIAN_BIG;
|
||||
} else {
|
||||
require_once 'Zend/Pdf/Exception.php';
|
||||
throw new Zend_Pdf_Exception( "Not a tiff file or Tiff corrupt. No byte order indication found" );
|
||||
}
|
||||
|
||||
$version = $this->unpackBytes(Zend_Pdf_Resource_Image_Tiff::UNPACK_TYPE_SHORT, fread($imageFile, 2));
|
||||
|
||||
if($version != 42) {
|
||||
require_once 'Zend/Pdf/Exception.php';
|
||||
throw new Zend_Pdf_Exception( "Not a tiff file or Tiff corrupt. Incorrect version number." );
|
||||
}
|
||||
$ifdOffset = $this->unpackBytes(Zend_Pdf_Resource_Image_Tiff::UNPACK_TYPE_LONG, fread($imageFile, 4));
|
||||
|
||||
$fileStats = fstat($imageFile);
|
||||
$this->_fileSize = $fileStats['size'];
|
||||
|
||||
/*
|
||||
* Tiff files are stored as a series of Image File Directories (IFD) each direcctory
|
||||
* has a specific number of entries each 12 bytes in length. At the end of the directories
|
||||
* is four bytes pointing to the offset of the next IFD.
|
||||
*/
|
||||
|
||||
while($ifdOffset > 0) {
|
||||
if(fseek($imageFile, $ifdOffset, SEEK_SET) == -1 || $ifdOffset+2 >= $this->_fileSize) {
|
||||
require_once 'Zend/Pdf/Exception.php';
|
||||
throw new Zend_Pdf_Exception("Could not seek to the image file directory as indexed by the file. Likely cause is TIFF corruption. Offset: ". $ifdOffset);
|
||||
}
|
||||
|
||||
$numDirEntries = $this->unpackBytes(Zend_Pdf_Resource_Image_Tiff::UNPACK_TYPE_SHORT, fread($imageFile, 2));
|
||||
|
||||
/*
|
||||
* Since we now know how many entries are in this (IFD) we can extract the data.
|
||||
* The format of a TIFF directory entry is:
|
||||
*
|
||||
* 2 bytes (short) tag code; See TIFF_TAG constants at the top for supported values. (There are many more in the spec)
|
||||
* 2 bytes (short) field type
|
||||
* 4 bytes (long) number of values, or value count.
|
||||
* 4 bytes (mixed) data if the data will fit into 4 bytes or an offset if the data is too large.
|
||||
*/
|
||||
for($dirEntryIdx = 1; $dirEntryIdx <= $numDirEntries; $dirEntryIdx++) {
|
||||
$tag = $this->unpackBytes(Zend_Pdf_Resource_Image_Tiff::UNPACK_TYPE_SHORT, fread($imageFile, 2));
|
||||
$fieldType = $this->unpackBytes(Zend_Pdf_Resource_Image_Tiff::UNPACK_TYPE_SHORT, fread($imageFile, 2));
|
||||
$valueCount = $this->unpackBytes(Zend_Pdf_Resource_Image_Tiff::UNPACK_TYPE_LONG, fread($imageFile, 4));
|
||||
|
||||
switch($fieldType) {
|
||||
case Zend_Pdf_Resource_Image_Tiff::TIFF_FIELD_TYPE_BYTE:
|
||||
$fieldLength = $valueCount;
|
||||
break;
|
||||
case Zend_Pdf_Resource_Image_Tiff::TIFF_FIELD_TYPE_ASCII:
|
||||
$fieldLength = $valueCount;
|
||||
break;
|
||||
case Zend_Pdf_Resource_Image_Tiff::TIFF_FIELD_TYPE_SHORT:
|
||||
$fieldLength = $valueCount * 2;
|
||||
break;
|
||||
case Zend_Pdf_Resource_Image_Tiff::TIFF_FIELD_TYPE_LONG:
|
||||
$fieldLength = $valueCount * 4;
|
||||
break;
|
||||
case Zend_Pdf_Resource_Image_Tiff::TIFF_FIELD_TYPE_RATIONAL:
|
||||
$fieldLength = $valueCount * 8;
|
||||
break;
|
||||
default:
|
||||
$fieldLength = $valueCount;
|
||||
}
|
||||
|
||||
$offsetBytes = fread($imageFile, 4);
|
||||
|
||||
if($fieldLength <= 4) {
|
||||
switch($fieldType) {
|
||||
case Zend_Pdf_Resource_Image_Tiff::TIFF_FIELD_TYPE_BYTE:
|
||||
$value = $this->unpackBytes(Zend_Pdf_Resource_Image_Tiff::UNPACK_TYPE_BYTE, $offsetBytes);
|
||||
break;
|
||||
case Zend_Pdf_Resource_Image_Tiff::TIFF_FIELD_TYPE_ASCII:
|
||||
//Fall through to next case
|
||||
case Zend_Pdf_Resource_Image_Tiff::TIFF_FIELD_TYPE_LONG:
|
||||
$value = $this->unpackBytes(Zend_Pdf_Resource_Image_Tiff::UNPACK_TYPE_LONG, $offsetBytes);
|
||||
break;
|
||||
case Zend_Pdf_Resource_Image_Tiff::TIFF_FIELD_TYPE_SHORT:
|
||||
//Fall through to next case
|
||||
default:
|
||||
$value = $this->unpackBytes(Zend_Pdf_Resource_Image_Tiff::UNPACK_TYPE_SHORT, $offsetBytes);
|
||||
}
|
||||
} else {
|
||||
$refOffset = $this->unpackBytes(Zend_Pdf_Resource_Image_Tiff::UNPACK_TYPE_LONG, $offsetBytes);
|
||||
}
|
||||
/*
|
||||
* Linear tag processing is probably not the best way to do this. I've processed the tags according to the
|
||||
* Tiff 6 specification and make some assumptions about when tags will be < 4 bytes and fit into $value and when
|
||||
* they will be > 4 bytes and require seek/extraction of the offset. Same goes for extracting arrays of data, like
|
||||
* the data offsets and length. This should be fixed in the future.
|
||||
*/
|
||||
switch($tag) {
|
||||
case Zend_Pdf_Resource_Image_Tiff::TIFF_TAG_IMAGE_WIDTH:
|
||||
$this->_width = $value;
|
||||
break;
|
||||
case Zend_Pdf_Resource_Image_Tiff::TIFF_TAG_IMAGE_LENGTH:
|
||||
$this->_height = $value;
|
||||
break;
|
||||
case Zend_Pdf_Resource_Image_Tiff::TIFF_TAG_BITS_PER_SAMPLE:
|
||||
if($valueCount>1) {
|
||||
$fp = ftell($imageFile);
|
||||
fseek($imageFile, $refOffset, SEEK_SET);
|
||||
$this->_bitsPerSample = $this->unpackBytes(Zend_Pdf_Resource_Image_Tiff::UNPACK_TYPE_SHORT, fread($imageFile, 2));
|
||||
fseek($imageFile, $fp, SEEK_SET);
|
||||
} else {
|
||||
$this->_bitsPerSample = $value;
|
||||
}
|
||||
break;
|
||||
case Zend_Pdf_Resource_Image_Tiff::TIFF_TAG_COMPRESSION:
|
||||
$this->_compression = $value;
|
||||
switch($value) {
|
||||
case Zend_Pdf_Resource_Image_Tiff::TIFF_COMPRESSION_UNCOMPRESSED:
|
||||
$this->_filter = 'None';
|
||||
break;
|
||||
case Zend_Pdf_Resource_Image_Tiff::TIFF_COMPRESSION_CCITT1D:
|
||||
//Fall through to next case
|
||||
case Zend_Pdf_Resource_Image_Tiff::TIFF_COMPRESSION_GROUP_3_FAX:
|
||||
//Fall through to next case
|
||||
case Zend_Pdf_Resource_Image_Tiff::TIFF_COMPRESSION_GROUP_4_FAX:
|
||||
$this->_filter = 'CCITTFaxDecode';
|
||||
require_once 'Zend/Pdf/Exception.php';
|
||||
throw new Zend_Pdf_Exception("CCITTFaxDecode Compression Mode Not Currently Supported");
|
||||
break;
|
||||
case Zend_Pdf_Resource_Image_Tiff::TIFF_COMPRESSION_LZW:
|
||||
$this->_filter = 'LZWDecode';
|
||||
require_once 'Zend/Pdf/Exception.php';
|
||||
throw new Zend_Pdf_Exception("LZWDecode Compression Mode Not Currently Supported");
|
||||
break;
|
||||
case Zend_Pdf_Resource_Image_Tiff::TIFF_COMPRESSION_JPEG:
|
||||
$this->_filter = 'DCTDecode'; //Should work, doesnt...
|
||||
require_once 'Zend/Pdf/Exception.php';
|
||||
throw new Zend_Pdf_Exception("JPEG Compression Mode Not Currently Supported");
|
||||
break;
|
||||
case Zend_Pdf_Resource_Image_Tiff::TIFF_COMPRESSION_FLATE:
|
||||
//fall through to next case
|
||||
case Zend_Pdf_Resource_Image_Tiff::TIFF_COMPRESSION_FLATE_OBSOLETE_CODE:
|
||||
$this->_filter = 'FlateDecode';
|
||||
require_once 'Zend/Pdf/Exception.php';
|
||||
throw new Zend_Pdf_Exception("ZIP/Flate Compression Mode Not Currently Supported");
|
||||
break;
|
||||
case Zend_Pdf_Resource_Image_Tiff::TIFF_COMPRESSION_PACKBITS:
|
||||
$this->_filter = 'RunLengthDecode';
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case Zend_Pdf_Resource_Image_Tiff::TIFF_TAG_PHOTOMETRIC_INTERPRETATION:
|
||||
$this->_colorCode = $value;
|
||||
$this->_whiteIsZero = false;
|
||||
$this->_blackIsZero = false;
|
||||
switch($value) {
|
||||
case Zend_Pdf_Resource_Image_Tiff::TIFF_PHOTOMETRIC_INTERPRETATION_WHITE_IS_ZERO:
|
||||
$this->_whiteIsZero = true;
|
||||
$this->_colorSpace = 'DeviceGray';
|
||||
break;
|
||||
case Zend_Pdf_Resource_Image_Tiff::TIFF_PHOTOMETRIC_INTERPRETATION_BLACK_IS_ZERO:
|
||||
$this->_blackIsZero = true;
|
||||
$this->_colorSpace = 'DeviceGray';
|
||||
break;
|
||||
case Zend_Pdf_Resource_Image_Tiff::TIFF_PHOTOMETRIC_INTERPRETATION_YCBCR:
|
||||
//fall through to next case
|
||||
case Zend_Pdf_Resource_Image_Tiff::TIFF_PHOTOMETRIC_INTERPRETATION_RGB:
|
||||
$this->_colorSpace = 'DeviceRGB';
|
||||
break;
|
||||
case Zend_Pdf_Resource_Image_Tiff::TIFF_PHOTOMETRIC_INTERPRETATION_RGB_INDEXED:
|
||||
$this->_colorSpace = 'Indexed';
|
||||
break;
|
||||
case Zend_Pdf_Resource_Image_Tiff::TIFF_PHOTOMETRIC_INTERPRETATION_CMYK:
|
||||
$this->_colorSpace = 'DeviceCMYK';
|
||||
break;
|
||||
case Zend_Pdf_Resource_Image_Tiff::TIFF_PHOTOMETRIC_INTERPRETATION_CIELAB:
|
||||
$this->_colorSpace = 'Lab';
|
||||
break;
|
||||
default:
|
||||
require_once 'Zend/Pdf/Exception.php';
|
||||
throw new Zend_Pdf_Exception('TIFF: Unknown or Unsupported Color Type: '. $value);
|
||||
}
|
||||
break;
|
||||
case Zend_Pdf_Resource_Image_Tiff::TIFF_TAG_STRIP_OFFSETS:
|
||||
if($valueCount>1) {
|
||||
$format = ($this->_endianType == Zend_Pdf_Resource_Image_Tiff::TIFF_ENDIAN_LITTLE)?'V*':'N*';
|
||||
$fp = ftell($imageFile);
|
||||
fseek($imageFile, $refOffset, SEEK_SET);
|
||||
$stripOffsetsBytes = fread($imageFile, $fieldLength);
|
||||
$this->_imageDataOffset = unpack($format, $stripOffsetsBytes);
|
||||
fseek($imageFile, $fp, SEEK_SET);
|
||||
} else {
|
||||
$this->_imageDataOffset = $value;
|
||||
}
|
||||
break;
|
||||
case Zend_Pdf_Resource_Image_Tiff::TIFF_TAG_STRIP_BYTE_COUNTS:
|
||||
if($valueCount>1) {
|
||||
$format = ($this->_endianType == Zend_Pdf_Resource_Image_Tiff::TIFF_ENDIAN_LITTLE)?'V*':'N*';
|
||||
$fp = ftell($imageFile);
|
||||
fseek($imageFile, $refOffset, SEEK_SET);
|
||||
$stripByteCountsBytes = fread($imageFile, $fieldLength);
|
||||
$this->_imageDataLength = unpack($format, $stripByteCountsBytes);
|
||||
fseek($imageFile, $fp, SEEK_SET);
|
||||
} else {
|
||||
$this->_imageDataLength = $value;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
//For debugging. It should be harmless to ignore unknown tags, though there is some good info in them.
|
||||
//echo "Unknown tag detected: ". $tag . " value: ". $value;
|
||||
}
|
||||
}
|
||||
$ifdOffset = $this->unpackBytes(Zend_Pdf_Resource_Image_Tiff::UNPACK_TYPE_LONG, fread($imageFile, 4));
|
||||
}
|
||||
|
||||
if(!isset($this->_imageDataOffset) || !isset($this->_imageDataLength)) {
|
||||
require_once 'Zend/Pdf/Exception.php';
|
||||
throw new Zend_Pdf_Exception("TIFF: The image processed did not contain image data as expected.");
|
||||
}
|
||||
|
||||
$imageDataBytes = '';
|
||||
if(is_array($this->_imageDataOffset)) {
|
||||
if(!is_array($this->_imageDataLength)) {
|
||||
require_once 'Zend/Pdf/Exception.php';
|
||||
throw new Zend_Pdf_Exception("TIFF: The image contained multiple data offsets but not multiple data lengths. Tiff may be corrupt.");
|
||||
}
|
||||
foreach($this->_imageDataOffset as $idx => $offset) {
|
||||
fseek($imageFile, $this->_imageDataOffset[$idx], SEEK_SET);
|
||||
$imageDataBytes .= fread($imageFile, $this->_imageDataLength[$idx]);
|
||||
}
|
||||
} else {
|
||||
fseek($imageFile, $this->_imageDataOffset, SEEK_SET);
|
||||
$imageDataBytes = fread($imageFile, $this->_imageDataLength);
|
||||
}
|
||||
if($imageDataBytes === '') {
|
||||
require_once 'Zend/Pdf/Exception.php';
|
||||
throw new Zend_Pdf_Exception("TIFF: No data. Image Corruption");
|
||||
}
|
||||
|
||||
fclose($imageFile);
|
||||
|
||||
parent::__construct();
|
||||
|
||||
$imageDictionary = $this->_resource->dictionary;
|
||||
if(!isset($this->_width) || !isset($this->_width)) {
|
||||
require_once 'Zend/Pdf/Exception.php';
|
||||
throw new Zend_Pdf_Exception("Problem reading tiff file. Tiff is probably corrupt.");
|
||||
}
|
||||
|
||||
$this->_imageProperties = array();
|
||||
$this->_imageProperties['bitDepth'] = $this->_bitsPerSample;
|
||||
$this->_imageProperties['fileSize'] = $this->_fileSize;
|
||||
$this->_imageProperties['TIFFendianType'] = $this->_endianType;
|
||||
$this->_imageProperties['TIFFcompressionType'] = $this->_compression;
|
||||
$this->_imageProperties['TIFFwhiteIsZero'] = $this->_whiteIsZero;
|
||||
$this->_imageProperties['TIFFblackIsZero'] = $this->_blackIsZero;
|
||||
$this->_imageProperties['TIFFcolorCode'] = $this->_colorCode;
|
||||
$this->_imageProperties['TIFFimageDataOffset'] = $this->_imageDataOffset;
|
||||
$this->_imageProperties['TIFFimageDataLength'] = $this->_imageDataLength;
|
||||
$this->_imageProperties['PDFfilter'] = $this->_filter;
|
||||
$this->_imageProperties['PDFcolorSpace'] = $this->_colorSpace;
|
||||
|
||||
$imageDictionary->Width = new Zend_Pdf_Element_Numeric($this->_width);
|
||||
if($this->_whiteIsZero === true) {
|
||||
$imageDictionary->Decode = new Zend_Pdf_Element_Array(array(new Zend_Pdf_Element_Numeric(1), new Zend_Pdf_Element_Numeric(0)));
|
||||
}
|
||||
$imageDictionary->Height = new Zend_Pdf_Element_Numeric($this->_height);
|
||||
$imageDictionary->ColorSpace = new Zend_Pdf_Element_Name($this->_colorSpace);
|
||||
$imageDictionary->BitsPerComponent = new Zend_Pdf_Element_Numeric($this->_bitsPerSample);
|
||||
if(isset($this->_filter) && $this->_filter != 'None') {
|
||||
$imageDictionary->Filter = new Zend_Pdf_Element_Name($this->_filter);
|
||||
}
|
||||
|
||||
$this->_resource->value = $imageDataBytes;
|
||||
$this->_resource->skipFilters();
|
||||
}
|
||||
/**
|
||||
* Image width (defined in Zend_Pdf_Resource_Image_Interface)
|
||||
*/
|
||||
public function getPixelWidth() {
|
||||
return $this->_width;
|
||||
}
|
||||
|
||||
/**
|
||||
* Image height (defined in Zend_Pdf_Resource_Image_Interface)
|
||||
*/
|
||||
public function getPixelHeight() {
|
||||
return $this->_height;
|
||||
}
|
||||
|
||||
/**
|
||||
* Image properties (defined in Zend_Pdf_Resource_Image_Interface)
|
||||
*/
|
||||
public function getProperties() {
|
||||
return $this->_imageProperties;
|
||||
}
|
||||
}
|
||||
|
71
airtime_mvc/library/Zend/Pdf/Resource/ImageFactory.php
Normal file
71
airtime_mvc/library/Zend/Pdf/Resource/ImageFactory.php
Normal file
|
@ -0,0 +1,71 @@
|
|||
<?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
|
||||
* @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: ImageFactory.php 20096 2010-01-06 02:05:09Z bkarwin $
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
* Zend_Pdf_ImageFactory
|
||||
*
|
||||
* Helps manage the diverse set of supported image file types.
|
||||
*
|
||||
* @package Zend_Pdf
|
||||
* @copyright Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
* @todo Use Zend_Mime not file extension for type determination.
|
||||
*/
|
||||
class Zend_Pdf_Resource_ImageFactory
|
||||
{
|
||||
public static function factory($filename) {
|
||||
if(!is_file($filename)) {
|
||||
require_once 'Zend/Pdf/Exception.php';
|
||||
throw new Zend_Pdf_Exception("Cannot create image resource. File not found.");
|
||||
}
|
||||
$extension = pathinfo($filename, PATHINFO_EXTENSION);
|
||||
/*
|
||||
* There are plans to use Zend_Mime and not file extension. In the mean time, if you need to
|
||||
* use an alternate file extension just spin up the right processor directly.
|
||||
*/
|
||||
switch (strtolower($extension)) {
|
||||
case 'tif':
|
||||
//Fall through to next case;
|
||||
case 'tiff':
|
||||
require_once 'Zend/Pdf/Resource/Image/Tiff.php';
|
||||
return new Zend_Pdf_Resource_Image_Tiff($filename);
|
||||
break;
|
||||
case 'png':
|
||||
require_once 'Zend/Pdf/Resource/Image/Png.php';
|
||||
return new Zend_Pdf_Resource_Image_Png($filename);
|
||||
break;
|
||||
case 'jpg':
|
||||
//Fall through to next case;
|
||||
case 'jpe':
|
||||
//Fall through to next case;
|
||||
case 'jpeg':
|
||||
require_once 'Zend/Pdf/Resource/Image/Jpeg.php';
|
||||
return new Zend_Pdf_Resource_Image_Jpeg($filename);
|
||||
break;
|
||||
default:
|
||||
require_once 'Zend/Pdf/Exception.php';
|
||||
throw new Zend_Pdf_Exception("Cannot create image resource. File extension not known or unsupported type.");
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
Add table
Add a link
Reference in a new issue