Blame view

public/vendor/phenx/php-font-lib/src/FontLib/Font.php 1.7 KB
86143e36f   Андрей Ларионов   Коммит вторник
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
  <?php
  /**
   * @package php-font-lib
   * @link    https://github.com/dompdf/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;
  
  use FontLib\Exception\FontNotFoundException;
  
  /**
   * Generic font file.
   *
   * @package php-font-lib
   */
  class Font {
    static $debug = false;
  
    /**
     * @param string $file The font file
     *
     * @return TrueType\File|null $file
     */
    public static function load($file) {
        if(!file_exists($file)){
            throw new FontNotFoundException($file);
        }
  
      $header = file_get_contents($file, false, null, 0, 4);
      $class  = null;
  
      switch ($header) {
        case "\x00\x01\x00\x00":
        case "true":
        case "typ1":
          $class = "TrueType\\File";
          break;
  
        case "OTTO":
          $class = "OpenType\\File";
          break;
  
        case "wOFF":
          $class = "WOFF\\File";
          break;
  
        case "ttcf":
          $class = "TrueType\\Collection";
          break;
  
        // Unknown type or EOT
        default:
          $magicNumber = file_get_contents($file, false, null, 34, 2);
  
          if ($magicNumber === "LP") {
            $class = "EOT\\File";
          }
      }
  
      if ($class) {
        $class = "FontLib\\$class";
  
        /** @var TrueType\File $obj */
        $obj = new $class;
        $obj->load($file);
  
        return $obj;
      }
  
      return null;
    }
  
    static function d($str) {
      if (!self::$debug) {
        return;
      }
      echo "$str
  ";
    }
  
    static function UTF16ToUTF8($str) {
      return mb_convert_encoding($str, "utf-8", "utf-16");
    }
  
    static function UTF8ToUTF16($str) {
      return mb_convert_encoding($str, "utf-16", "utf-8");
    }
  }