123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159 |
- <?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\EOT;
-
- /**
- * EOT font file.
- *
- * @package php-font-lib
- */
- class File extends \FontLib\TrueType\File {
- const TTEMBED_SUBSET = 0x00000001;
- const TTEMBED_TTCOMPRESSED = 0x00000004;
- const TTEMBED_FAILIFVARIATIONSIMULATED = 0x00000010;
- const TTMBED_EMBEDEUDC = 0x00000020;
- const TTEMBED_VALIDATIONTESTS = 0x00000040; // Deprecated
- const TTEMBED_WEBOBJECT = 0x00000080;
- const TTEMBED_XORENCRYPTDATA = 0x10000000;
-
- /**
- * @var Header
- */
- public $header;
-
- function parseHeader() {
- if (!empty($this->header)) {
- return;
- }
-
- $this->header = new Header($this);
- $this->header->parse();
- }
-
- function parse() {
- $this->parseHeader();
-
- $flags = $this->header->data["Flags"];
-
- if ($flags & self::TTEMBED_TTCOMPRESSED) {
- $mtx_version = $this->readUInt8();
- $mtx_copy_limit = $this->readUInt8() << 16 | $this->readUInt8() << 8 | $this->readUInt8();
- $mtx_offset_1 = $this->readUInt8() << 16 | $this->readUInt8() << 8 | $this->readUInt8();
- $mtx_offset_2 = $this->readUInt8() << 16 | $this->readUInt8() << 8 | $this->readUInt8();
- /*
- var_dump("$mtx_version $mtx_copy_limit $mtx_offset_1 $mtx_offset_2");
-
- $pos = $this->pos();
- $size = $mtx_offset_1 - $pos;
- var_dump("pos: $pos");
- var_dump("size: $size");*/
- }
-
- if ($flags & self::TTEMBED_XORENCRYPTDATA) {
- // Process XOR
- }
- // TODO Read font data ...
- }
-
- /**
- * Little endian version of the read method
- *
- * @param int $n The number of bytes to read
- *
- * @return string
- */
- public function read($n) {
- if ($n < 1) {
- return "";
- }
-
- $string = (string) fread($this->f, $n);
- $chunks = mb_str_split($string, 2, '8bit');
- $chunks = array_map("strrev", $chunks);
- return implode("", $chunks);
- }
-
- public function readUInt32() {
- $uint32 = parent::readUInt32();
-
- return $uint32 >> 16 & 0x0000FFFF | $uint32 << 16 & 0xFFFF0000;
- }
-
- /**
- * Get font copyright
- *
- * @return string|null
- */
- function getFontCopyright() {
- return null;
- }
-
- /**
- * Get font name
- *
- * @return string|null
- */
- function getFontName() {
- return $this->header->data["FamilyName"];
- }
-
- /**
- * Get font subfamily
- *
- * @return string|null
- */
- function getFontSubfamily() {
- return $this->header->data["StyleName"];
- }
-
- /**
- * Get font subfamily ID
- *
- * @return string|null
- */
- function getFontSubfamilyID() {
- return $this->header->data["StyleName"];
- }
-
- /**
- * Get font full name
- *
- * @return string|null
- */
- function getFontFullName() {
- return $this->header->data["FullName"];
- }
-
- /**
- * Get font version
- *
- * @return string|null
- */
- function getFontVersion() {
- return $this->header->data["VersionName"];
- }
-
- /**
- * Get font weight
- *
- * @return string|null
- */
- function getFontWeight() {
- return $this->header->data["Weight"];
- }
-
- /**
- * Get font Postscript name
- *
- * @return string|null
- */
- function getFontPostscriptName() {
- return null;
- }
- }
|