%PDF- <> %âãÏÓ endobj 2 0 obj <> endobj 3 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/Annots[ 28 0 R 29 0 R] /MediaBox[ 0 0 595.5 842.25] /Contents 4 0 R/Group<>/Tabs/S>> endobj ºaâÚÎΞ-ÌE1ÍØÄ÷{òò2ÿ ÛÖ^ÔÀá TÎ{¦?§®¥kuµùÕ5sLOšuY>endobj 2 0 obj<>endobj 2 0 obj<>endobj 2 0 obj<>endobj 2 0 obj<> endobj 2 0 obj<>endobj 2 0 obj<>es 3 0 R>> endobj 2 0 obj<> ox[ 0.000000 0.000000 609.600000 935.600000]/Fi endobj 3 0 obj<> endobj 7 1 obj<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI]>>/Subtype/Form>> stream
<?php /** * @package php-font-lib * @link https://github.com/PhenX/php-font-lib * @author Fabien Ménager <fabien.menager@gmail.com> * @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License */ /** * `post` font table. * * @package php-font-lib */ class Font_Table_post extends Font_Table { protected $def = array( "format" => self::Fixed, "italicAngle" => self::Fixed, "underlinePosition" => self::FWord, "underlineThickness" => self::FWord, "isFixedPitch" => self::uint32, "minMemType42" => self::uint32, "maxMemType42" => self::uint32, "minMemType1" => self::uint32, "maxMemType1" => self::uint32, ); protected function _parse(){ $font = $this->getFont(); $data = $font->unpack($this->def); $names = array(); switch($data["format"]) { case 1: $names = Font_TrueType::$macCharNames; break; case 2: $data["numberOfGlyphs"] = $font->readUInt16(); $glyphNameIndex = array(); for($i = 0; $i < $data["numberOfGlyphs"]; $i++) { $glyphNameIndex[] = $font->readUInt16(); } $data["glyphNameIndex"] = $glyphNameIndex; $namesPascal = array(); for($i = 0; $i < $data["numberOfGlyphs"]; $i++) { $len = $font->readUInt8(); $namesPascal[] = $font->read($len); } foreach($glyphNameIndex as $g => $index) { if ($index < 258) { $names[$g] = Font_TrueType::$macCharNames[$index]; } else { $names[$g] = $namesPascal[$index - 258]; } } break; case 2.5: // TODO break; case 3: // nothing break; case 4: // TODO break; } $data["names"] = $names; $this->data = $data; } function _encode(){ $font = $this->getFont(); $data = $this->data; $data["format"] = 3; $length = $font->pack($this->def, $data); return $length; /* $subset = $font->getSubset(); switch($data["format"]) { case 1: // nothing to do break; case 2: $old_names = $data["names"]; $glyphNameIndex = range(0, count($subset)); $names = array(); foreach($subset as $gid) { $names[] = $data["names"][$data["glyphNameIndex"][$gid]]; } $numberOfGlyphs = count($names); $length += $font->writeUInt16($numberOfGlyphs); foreach($glyphNameIndex as $gni) { $length += $font->writeUInt16($gni); } //$names = array_slice($names, 257); foreach($names as $name) { $len = strlen($name); $length += $font->writeUInt8($len); $length += $font->write($name, $len); } break; case 2.5: // TODO break; case 3: // nothing break; case 4: // TODO break; } return $length;*/ } }