Updated Drupal to 8.6. This goes with the following updates because it's possible...
[yaffs-website] / vendor / phenx / php-font-lib / src / FontLib / Table / Type / post.php
1 <?php
2 /**
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
7  */
8
9 namespace FontLib\Table\Type;
10 use FontLib\Table\Table;
11 use FontLib\TrueType\File;
12
13 /**
14  * `post` font table.
15  *
16  * @package php-font-lib
17  */
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,
29   );
30
31   protected function _parse() {
32     $font = $this->getFont();
33     $data = $font->unpack($this->def);
34
35     $names = array();
36
37     switch ($data["format"]) {
38       case 1:
39         $names = File::$macCharNames;
40         break;
41
42       case 2:
43         $data["numberOfGlyphs"] = $font->readUInt16();
44
45         $glyphNameIndex = $font->readUInt16Many($data["numberOfGlyphs"]);
46
47         $data["glyphNameIndex"] = $glyphNameIndex;
48
49         $namesPascal = array();
50         for ($i = 0; $i < $data["numberOfGlyphs"]; $i++) {
51           $len           = $font->readUInt8();
52           $namesPascal[] = $font->read($len);
53         }
54
55         foreach ($glyphNameIndex as $g => $index) {
56           if ($index < 258) {
57             $names[$g] = File::$macCharNames[$index];
58           }
59           else {
60             $names[$g] = $namesPascal[$index - 258];
61           }
62         }
63
64         break;
65
66       case 2.5:
67         // TODO
68         break;
69
70       case 3:
71         // nothing
72         break;
73
74       case 4:
75         // TODO
76         break;
77     }
78
79     $data["names"] = $names;
80
81     $this->data = $data;
82   }
83
84   function _encode() {
85     $font           = $this->getFont();
86     $data           = $this->data;
87     $data["format"] = 3;
88
89     $length = $font->pack($this->def, $data);
90
91     return $length;
92     /*
93     $subset = $font->getSubset();
94
95     switch($data["format"]) {
96       case 1:
97         // nothing to do
98       break;
99
100       case 2:
101         $old_names = $data["names"];
102
103         $glyphNameIndex = range(0, count($subset));
104
105         $names = array();
106         foreach($subset as $gid) {
107           $names[] = $data["names"][$data["glyphNameIndex"][$gid]];
108         }
109
110         $numberOfGlyphs = count($names);
111         $length += $font->writeUInt16($numberOfGlyphs);
112
113         foreach($glyphNameIndex as $gni) {
114           $length += $font->writeUInt16($gni);
115         }
116
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);
122         }
123
124       break;
125
126       case 2.5:
127         // TODO
128       break;
129
130       case 3:
131         // nothing
132       break;
133
134       case 4:
135         // TODO
136       break;
137     }
138
139     return $length;*/
140   }
141 }