commiting uncommited changes on live site
[weblabels.fsf.org.git] / crm.fsf.org / 20131203 / files / sites / all / modules-new / civicrm / 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 = array();
46 for ($i = 0; $i < $data["numberOfGlyphs"]; $i++) {
47 $glyphNameIndex[] = $font->readUInt16();
48 }
49
50 $data["glyphNameIndex"] = $glyphNameIndex;
51
52 $namesPascal = array();
53 for ($i = 0; $i < $data["numberOfGlyphs"]; $i++) {
54 $len = $font->readUInt8();
55 $namesPascal[] = $font->read($len);
56 }
57
58 foreach ($glyphNameIndex as $g => $index) {
59 if ($index < 258) {
60 $names[$g] = File::$macCharNames[$index];
61 }
62 else {
63 $names[$g] = $namesPascal[$index - 258];
64 }
65 }
66
67 break;
68
69 case 2.5:
70 // TODO
71 break;
72
73 case 3:
74 // nothing
75 break;
76
77 case 4:
78 // TODO
79 break;
80 }
81
82 $data["names"] = $names;
83
84 $this->data = $data;
85 }
86
87 function _encode() {
88 $font = $this->getFont();
89 $data = $this->data;
90 $data["format"] = 3;
91
92 $length = $font->pack($this->def, $data);
93
94 return $length;
95 /*
96 $subset = $font->getSubset();
97
98 switch($data["format"]) {
99 case 1:
100 // nothing to do
101 break;
102
103 case 2:
104 $old_names = $data["names"];
105
106 $glyphNameIndex = range(0, count($subset));
107
108 $names = array();
109 foreach($subset as $gid) {
110 $names[] = $data["names"][$data["glyphNameIndex"][$gid]];
111 }
112
113 $numberOfGlyphs = count($names);
114 $length += $font->writeUInt16($numberOfGlyphs);
115
116 foreach($glyphNameIndex as $gni) {
117 $length += $font->writeUInt16($gni);
118 }
119
120 //$names = array_slice($names, 257);
121 foreach($names as $name) {
122 $len = strlen($name);
123 $length += $font->writeUInt8($len);
124 $length += $font->write($name, $len);
125 }
126
127 break;
128
129 case 2.5:
130 // TODO
131 break;
132
133 case 3:
134 // nothing
135 break;
136
137 case 4:
138 // TODO
139 break;
140 }
141
142 return $length;*/
143 }
144 }