composer package updates
[openemr.git] / vendor / phenx / php-font-lib / src / FontLib / Table / Type / hmtx.php
blob76e3307e8dbe3fd08770efd181177e1e906cda21
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 */
9 namespace FontLib\Table\Type;
10 use FontLib\Table\Table;
12 /**
13 * `hmtx` font table.
15 * @package php-font-lib
17 class hmtx extends Table {
18 protected function _parse() {
19 $font = $this->getFont();
20 $offset = $font->pos();
22 $numOfLongHorMetrics = $font->getData("hhea", "numOfLongHorMetrics");
23 $numGlyphs = $font->getData("maxp", "numGlyphs");
25 $font->seek($offset);
27 $data = array();
28 $metrics = $font->readUInt16Many($numOfLongHorMetrics * 2);
29 for ($gid = 0, $mid = 0; $gid < $numOfLongHorMetrics; $gid++) {
30 $advanceWidth = isset($metrics[$mid]) ? $metrics[$mid] : 0;
31 $mid += 1;
32 $leftSideBearing = isset($metrics[$mid]) ? $metrics[$mid] : 0;
33 $mid += 1;
34 $data[$gid] = array($advanceWidth, $leftSideBearing);
37 if ($numOfLongHorMetrics < $numGlyphs) {
38 $lastWidth = end($data);
39 $data = array_pad($data, $numGlyphs, $lastWidth);
42 $this->data = $data;
45 protected function _encode() {
46 $font = $this->getFont();
47 $subset = $font->getSubset();
48 $data = $this->data;
50 $length = 0;
52 foreach ($subset as $gid) {
53 $length += $font->writeUInt16($data[$gid][0]);
54 $length += $font->writeUInt16($data[$gid][1]);
57 return $length;