72 lines
1.6 KiB
PHP
72 lines
1.6 KiB
PHP
<?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
|
|
*/
|
|
|
|
/**
|
|
* `kern` font table.
|
|
*
|
|
* @package php-font-lib
|
|
*/
|
|
class Font_Table_kern extends Font_Table {
|
|
protected function _parse(){
|
|
$font = $this->getFont();
|
|
|
|
$data = $font->unpack(array(
|
|
"version" => self::uint16,
|
|
"nTables" => self::uint16,
|
|
|
|
// only the first subtable will be parsed
|
|
"subtableVersion" => self::uint16,
|
|
"length" => self::uint16,
|
|
"coverage" => self::uint16,
|
|
));
|
|
|
|
$data["format"] = ($data["coverage"] >> 8);
|
|
|
|
$subtable = array();
|
|
|
|
switch($data["format"]) {
|
|
case 0:
|
|
$subtable = $font->unpack(array(
|
|
"nPairs" => self::uint16,
|
|
"searchRange" => self::uint16,
|
|
"entrySelector" => self::uint16,
|
|
"rangeShift" => self::uint16,
|
|
));
|
|
|
|
$pairs = array();
|
|
$tree = array();
|
|
|
|
for ($i = 0; $i < $subtable["nPairs"]; $i++) {
|
|
$left = $font->readUInt16();
|
|
$right = $font->readUInt16();
|
|
$value = $font->readInt16();
|
|
|
|
$pairs[] = array(
|
|
"left" => $left,
|
|
"right" => $right,
|
|
"value" => $value,
|
|
);
|
|
|
|
$tree[$left][$right] = $value;
|
|
}
|
|
|
|
//$subtable["pairs"] = $pairs;
|
|
$subtable["tree"] = $tree;
|
|
break;
|
|
|
|
case 1:
|
|
case 2:
|
|
case 3:
|
|
break;
|
|
}
|
|
|
|
$data["subtable"] = $subtable;
|
|
|
|
$this->data = $data;
|
|
}
|
|
} |