diff -r 5b37998e522e -r 162c1de6545a web/lib/Zend/Pdf/Font.php --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/web/lib/Zend/Pdf/Font.php Fri Mar 11 15:05:35 2011 +0100 @@ -0,0 +1,732 @@ +getFontName(Zend_Pdf_Font::NAME_POSTSCRIPT, '', ''); + Zend_Pdf_Font::$_fontNames[$fontName] = $font; + $filePathKey = md5($filePath); + Zend_Pdf_Font::$_fontFilePaths[$filePathKey] = $font; + return $font; + + } else { + /* The type of font could not be determined. Give up. + */ + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception("Cannot determine font type: $filePath", + Zend_Pdf_Exception::CANT_DETERMINE_FONT_TYPE); + } + + } + + + + /**** Internal Methods ****/ + + + /* Font Extraction Methods */ + + /** + * Attempts to extract a TrueType font from the data source. + * + * If the font parser throws an exception that suggests the data source + * simply doesn't contain a TrueType font, catches it and returns null. If + * an exception is thrown that suggests the TrueType font is corrupt or + * otherwise unusable, throws that exception. If successful, returns the + * font object. + * + * @param Zend_Pdf_FileParserDataSource $dataSource + * @param integer $embeddingOptions Options for font embedding. + * @return Zend_Pdf_Resource_Font_OpenType_TrueType May also return null if + * the data source does not appear to contain a TrueType font. + * @throws Zend_Pdf_Exception + */ + protected static function _extractTrueTypeFont($dataSource, $embeddingOptions) + { + try { + require_once 'Zend/Pdf/FileParser/Font/OpenType/TrueType.php'; + $fontParser = new Zend_Pdf_FileParser_Font_OpenType_TrueType($dataSource); + + $fontParser->parse(); + if ($fontParser->isAdobeLatinSubset) { + require_once 'Zend/Pdf/Resource/Font/Simple/Parsed/TrueType.php'; + $font = new Zend_Pdf_Resource_Font_Simple_Parsed_TrueType($fontParser, $embeddingOptions); + } else { + require_once 'Zend/Pdf/Resource/Font/CidFont/TrueType.php'; + require_once 'Zend/Pdf/Resource/Font/Type0.php'; + /* Use Composite Type 0 font which supports Unicode character mapping */ + $cidFont = new Zend_Pdf_Resource_Font_CidFont_TrueType($fontParser, $embeddingOptions); + $font = new Zend_Pdf_Resource_Font_Type0($cidFont); + } + } catch (Zend_Pdf_Exception $e) { + /* The following exception codes suggest that this isn't really a + * TrueType font. If we caught such an exception, simply return + * null. For all other cases, it probably is a TrueType font but has + * a problem; throw the exception again. + */ + $fontParser = null; + require_once 'Zend/Pdf/Exception.php'; + switch ($e->getCode()) { + case Zend_Pdf_Exception::WRONG_FONT_TYPE: // break intentionally omitted + case Zend_Pdf_Exception::BAD_TABLE_COUNT: // break intentionally omitted + case Zend_Pdf_Exception::BAD_MAGIC_NUMBER: + return null; + + default: + throw new Zend_Pdf_Exception($e->getMessage(), $e->getCode(), $e); + } + } + return $font; + } +}