3 * @package php-font-lib
4 * @link https://github.com/PhenX/php-font-lib
5 * @author Fabien Ménager <fabien.menager@gmail.com>
6 * @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
9 namespace FontLib\Table\Type;
10 use FontLib\Table\Table;
11 use FontLib\TrueType\File;
16 * @package php-font-lib
18 class post extends Table {
19 protected $def = array(
20 "format" => self::Fixed,
21 "italicAngle" => self::Fixed,
22 "underlinePosition" => self::FWord,
23 "underlineThickness" => self::FWord,
24 "isFixedPitch" => self::uint32,
25 "minMemType42" => self::uint32,
26 "maxMemType42" => self::uint32,
27 "minMemType1" => self::uint32,
28 "maxMemType1" => self::uint32,
31 protected function _parse() {
32 $font = $this->getFont();
33 $data = $font->unpack($this->def);
37 switch ($data["format"]) {
39 $names = File::$macCharNames;
43 $data["numberOfGlyphs"] = $font->readUInt16();
45 $glyphNameIndex = $font->readUInt16Many($data["numberOfGlyphs"]);
47 $data["glyphNameIndex"] = $glyphNameIndex;
49 $namesPascal = array();
50 for ($i = 0; $i < $data["numberOfGlyphs"]; $i++) {
51 $len = $font->readUInt8();
52 $namesPascal[] = $font->read($len);
55 foreach ($glyphNameIndex as $g => $index) {
57 $names[$g] = File::$macCharNames[$index];
60 $names[$g] = $namesPascal[$index - 258];
79 $data["names"] = $names;
85 $font = $this->getFont();
89 $length = $font->pack($this->def, $data);
93 $subset = $font->getSubset();
95 switch($data["format"]) {
101 $old_names = $data["names"];
103 $glyphNameIndex = range(0, count($subset));
106 foreach($subset as $gid) {
107 $names[] = $data["names"][$data["glyphNameIndex"][$gid]];
110 $numberOfGlyphs = count($names);
111 $length += $font->writeUInt16($numberOfGlyphs);
113 foreach($glyphNameIndex as $gni) {
114 $length += $font->writeUInt16($gni);
117 //$names = array_slice($names, 257);
118 foreach($names as $name) {
119 $len = strlen($name);
120 $length += $font->writeUInt8($len);
121 $length += $font->write($name, $len);