Blame view

dompdf/lib/php-font-lib/src/FontLib/Font.php 1.98 KB
670b6d6f8   tuan   2016/09/22 - Copy...
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
91
92
93
94
95
  <?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;
  
  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, null, 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");
      }
  }