mirror of
				https://github.com/Icinga/icingaweb2.git
				synced 2025-10-31 03:14:31 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			157 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			157 lines
		
	
	
		
			3.2 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
 | |
|  */
 | |
| 
 | |
| 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
 | |
|    */
 | |
|   public function read($n) {
 | |
|     if ($n < 1) {
 | |
|       return "";
 | |
|     }
 | |
| 
 | |
|     $string = fread($this->f, $n);
 | |
|     $chunks = str_split($string, 2);
 | |
|     $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;
 | |
|   }
 | |
| }
 |