123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293 |
- <?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
- */
- namespace FontLib\Table;
-
- use FontLib\TrueType\File;
- use FontLib\Font;
- use FontLib\BinaryStream;
-
- /**
- * Generic font table.
- *
- * @package php-font-lib
- */
- class Table extends BinaryStream {
- /**
- * @var DirectoryEntry
- */
- protected $entry;
- protected $def = array();
-
- public $data;
-
- final public function __construct(DirectoryEntry $entry) {
- $this->entry = $entry;
- $entry->setTable($this);
- }
-
- /**
- * @return File
- */
- public function getFont() {
- return $this->entry->getFont();
- }
-
- protected function _encode() {
- if (empty($this->data)) {
- Font::d(" >> Table is empty");
-
- return 0;
- }
-
- return $this->getFont()->pack($this->def, $this->data);
- }
-
- protected function _parse() {
- $this->data = $this->getFont()->unpack($this->def);
- }
-
- protected function _parseRaw() {
- $this->data = $this->getFont()->read($this->entry->length);
- }
-
- protected function _encodeRaw() {
- return $this->getFont()->write($this->data, $this->entry->length);
- }
-
- public function toHTML() {
- return "<pre>" . var_export($this->data, true) . "</pre>";
- }
-
- final public function encode() {
- $this->entry->startWrite();
-
- if (false && empty($this->def)) {
- $length = $this->_encodeRaw();
- }
- else {
- $length = $this->_encode();
- }
-
- $this->entry->endWrite();
-
- return $length;
- }
-
- final public function parse() {
- $this->entry->startRead();
-
- if (false && empty($this->def)) {
- $this->_parseRaw();
- }
- else {
- $this->_parse();
- }
-
- $this->entry->endRead();
- }
- }
|