Blame view

public/vendor/phenx/php-font-lib/src/FontLib/Glyph/Outline.php 2.23 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
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
  <?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
   * @version $Id: Font_Table_glyf.php 46 2012-04-02 20:22:38Z fabien.menager $
   */
  namespace FontLib\Glyph;
  
  use FontLib\Table\Type\glyf;
  use FontLib\TrueType\File;
  use FontLib\BinaryStream;
  
  /**
   * `glyf` font table.
   *
   * @package php-font-lib
   */
  class Outline extends BinaryStream {
    /**
     * @var \FontLib\Table\Type\glyf
     */
    protected $table;
  
    protected $offset;
    protected $size;
  
    // Data
    public $numberOfContours;
    public $xMin;
    public $yMin;
    public $xMax;
    public $yMax;
  
    /**
     * @var string|null
     */
    public $raw;
  
    /**
     * @param glyf $table
     * @param                 $offset
     * @param                 $size
     *
     * @return Outline
     */
    static function init(glyf $table, $offset, $size, BinaryStream $font) {
      $font->seek($offset);
  
      if ($size === 0 || $font->readInt16() > -1) {
        /** @var OutlineSimple $glyph */
        $glyph = new OutlineSimple($table, $offset, $size);
      }
      else {
        /** @var OutlineComposite $glyph */
        $glyph = new OutlineComposite($table, $offset, $size);
      }
  
      $glyph->parse($font);
  
      return $glyph;
    }
  
    /**
     * @return File
     */
    function getFont() {
      return $this->table->getFont();
    }
  
    function __construct(glyf $table, $offset = null, $size = null) {
      $this->table  = $table;
      $this->offset = $offset;
      $this->size   = $size;
    }
  
    function parse(BinaryStream $font) {
      $font->seek($this->offset);
  
        $this->raw = $font->read($this->size);
    }
  
    function parseData() {
      $font = $this->getFont();
      $font->seek($this->offset);
  
      $this->numberOfContours = $font->readInt16();
      $this->xMin             = $font->readFWord();
      $this->yMin             = $font->readFWord();
      $this->xMax             = $font->readFWord();
      $this->yMax             = $font->readFWord();
    }
  
    function encode() {
      $font = $this->getFont();
  
      return $font->write($this->raw, mb_strlen((string) $this->raw, '8bit'));
    }
  
    function getSVGContours() {
      // Inherit
    }
  
    function getGlyphIDs() {
      return array();
    }
  }