Server : Apache/2.4.18 (Ubuntu) System : Linux canvaswebdesign 3.13.0-71-generic #114-Ubuntu SMP Tue Dec 1 02:34:22 UTC 2015 x86_64 User : oppastar ( 1041) PHP Version : 7.0.33-0ubuntu0.16.04.15 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority, Directory : /var/www/symphony-solusi.co.id/public_html/application/third_party/dompdf/include/ |
Upload File : |
<?php /** * ttfInfo class * Retrieve data stored in a TTF files 'name' table * * @original author Unknown * found at http://www.phpclasses.org/browse/package/2144.html * * @ported for used on http://www.nufont.com * @author Jason Arencibia * @version 0.2 * @copyright (c) 2006 GrayTap Media * @website http://www.graytap.com * @license GPL 2.0 * @access public * * @todo: Make it Retrieve additional information from other tables * */ class TTF_Info { /** * variable $_dirRestriction * Restrict the resource pointer to this directory and above. * Change to 1 for to allow the class to look outside of it current directory * @protected * @var int */ protected $_dirRestriction = true; /** * variable $_dirRestriction * Restrict the resource pointer to this directory and above. * Change to 1 for nested directories * @protected * @var int */ protected $_recursive = true; /** * variable $fontsdir * This is to declare this variable as protected * don't edit this!!! * @protected */ protected $fontsdir; /** * variable $filename * This is to declare this varable as protected * don't edit this!!! * @protected */ protected $filename; /** * function setFontFile() * set the filename * @public * @param string $data the new value * @return object reference to this */ public function setFontFile($data) { if ($this->_dirRestriction && preg_match('[\.\/|\.\.\/]', $data)) { $this->exitClass('Error: Directory restriction is enforced!'); } $this->filename = $data; return $this; } // public function setFontFile /** * function setFontsDir() * set the Font Directory * @public * @param string $data the new value * @return object referrence to this */ public function setFontsDir($data) { if ($this->_dirRestriction && preg_match('[\.\/|\.\.\/]', $data)) { $this->exitClass('Error: Directory restriction is enforced!'); } $this->fontsdir = $data; return $this; } // public function setFontsDir /** * function readFontsDir() * @public * @return information contained in the TTF 'name' table of all fonts in a directory. */ public function readFontsDir() { if (empty($this->fontsdir)) { $this->exitClass('Error: Fonts Directory has not been set with setFontsDir().'); } if (empty($this->backupDir)){ $this->backupDir = $this->fontsdir; } //$this->array = array(); $d = dir($this->fontsdir); while (false !== ($e = $d->read())) { if($e != '.' && $e != '..') { $e = $this->fontsdir . $e; if($this->_recursive && is_dir($e)) { $this->setFontsDir($e); $this->readFontsDir(); } else if ($this->is_ttf($e) === true) { $this->setFontFile($e); $this->array[] = $this->getFontInfo(); } } } if (!empty($this->backupDir)){ $this->fontsdir = $this->backupDir; } $d->close(); return $this; } // public function readFontsDir /** * function setProtectedVar() * @public * @param string $var the new variable * @param string $data the new value * @return object reference to this * DISABLED, NO REAL USE YET public function setProtectedVar($var, $data) { if ($var == 'filename') { $this->setFontFile($data); } else { //if (isset($var) && !empty($data)) $this->$var = $data; } return $this; } */ /** * function getFontInfo() * @public * @return information contained in the TTF 'name' table. */ public function getFontInfo() { $fd = fopen ($this->filename, "r"); $this->text = fread ($fd, filesize($this->filename)); fclose ($fd); $number_of_tables = hexdec($this->dec2ord($this->text[4]).$this->dec2ord($this->text[5])); for ($i=0;$i<$number_of_tables;$i++) { $tag = $this->text[12+$i*16].$this->text[12+$i*16+1].$this->text[12+$i*16+2].$this->text[12+$i*16+3]; if ($tag == 'name') { $this->ntOffset = hexdec( $this->dec2ord($this->text[12+$i*16+8]).$this->dec2ord($this->text[12+$i*16+8+1]). $this->dec2ord($this->text[12+$i*16+8+2]).$this->dec2ord($this->text[12+$i*16+8+3])); $offset_storage_dec = hexdec($this->dec2ord($this->text[$this->ntOffset+4]).$this->dec2ord($this->text[$this->ntOffset+5])); $number_name_records_dec = hexdec($this->dec2ord($this->text[$this->ntOffset+2]).$this->dec2ord($this->text[$this->ntOffset+3])); } } $storage_dec = $offset_storage_dec + $this->ntOffset; $storage_hex = strtoupper(dechex($storage_dec)); for ($j=0;$j<$number_name_records_dec;$j++) { $platform_id_dec = hexdec($this->dec2ord($this->text[$this->ntOffset+6+$j*12+0]).$this->dec2ord($this->text[$this->ntOffset+6+$j*12+1])); $name_id_dec = hexdec($this->dec2ord($this->text[$this->ntOffset+6+$j*12+6]).$this->dec2ord($this->text[$this->ntOffset+6+$j*12+7])); $string_length_dec = hexdec($this->dec2ord($this->text[$this->ntOffset+6+$j*12+8]).$this->dec2ord($this->text[$this->ntOffset+6+$j*12+9])); $string_offset_dec = hexdec($this->dec2ord($this->text[$this->ntOffset+6+$j*12+10]).$this->dec2ord($this->text[$this->ntOffset+6+$j*12+11])); if (!empty($name_id_dec) and empty($font_tags[$name_id_dec])) { for($l=0;$l<$string_length_dec;$l++) { if (ord($this->text[$storage_dec+$string_offset_dec+$l]) == '0') { continue; } else { $font_tags[$name_id_dec] .= ($this->text[$storage_dec+$string_offset_dec+$l]); } } } } return $font_tags; } // public function getFontInfo /** * function getCopyright() * @public * @return 'Copyright notice' contained in the TTF 'name' table at index 0 */ public function getCopyright() { $this->info = $this->getFontInfo(); return $this->info[0]; } // public function getCopyright /** * function getFontFamily() * @public * @return 'Font Family name' contained in the TTF 'name' table at index 1 */ public function getFontFamily() { $this->info = $this->getFontInfo(); return $this->info[1]; } // public function getFontFamily /** * function getFontSubFamily() * @public * @return 'Font Subfamily name' contained in the TTF 'name' table at index 2 */ public function getFontSubFamily() { $this->info = $this->getFontInfo(); return $this->info[2]; } // public function getFontSubFamily /** * function getFontId() * @public * @return 'Unique font identifier' contained in the TTF 'name' table at index 3 */ public function getFontId() { $this->info = $this->getFontInfo(); return $this->info[3]; } // public function getFontId /** * function getFullFontName() * @public * @return 'Full font name' contained in the TTF 'name' table at index 4 */ public function getFullFontName() { $this->info = $this->getFontInfo(); return $this->info[4]; } // public function getFullFontName /** * function dec2ord() * Used to lessen redundant calls to multiple functions. * @protected * @return object */ protected function dec2ord($dec) { return $this->dec2hex(ord($dec)); } // protected function dec2ord /** * function dec2hex() * private function to perform Hexadecimal to decimal with proper padding. * @protected * @return object */ protected function dec2hex($dec) { return str_repeat('0', 2-strlen(($hex=strtoupper(dechex($dec))))) . $hex; } // protected function dec2hex /** * function dec2hex() * private function to perform Hexadecimal to decimal with proper padding. * @protected * @return object */ protected function exitClass($message) { echo $message; exit; } // protected function dec2hex /** * function dec2hex() * private helper function to test in the file in question is a ttf. * @protected * @return object */ protected function is_ttf($file) { $ext = explode('.', $file); $ext = $ext[count($ext)-1]; return preg_match("/ttf$/i",$ext) ? true : false; } // protected function is_ttf } // class ttfInfo function getFontInfo($resource) { $ttfInfo = new TTF_Info; $ttfInfo->setFontFile($resource); return $ttfInfo->getFontInfo(); } ?>