lib/ttfunk/table/glyf/simple.rb in ttfunk-1.7.0 vs lib/ttfunk/table/glyf/simple.rb in ttfunk-1.8.0

- old
+ new

@@ -3,39 +3,84 @@ require_relative '../../reader' module TTFunk class Table class Glyf + # Simple TrueType glyph class Simple - attr_reader :id, :raw + # Glyph ID. + # @return [Integer] + attr_reader :id + + # Binary serialization of this glyph. + # @return [String] + attr_reader :raw + + # Number of contours in this glyph. + # @return [Integer] attr_reader :number_of_contours - attr_reader :x_min, :y_min, :x_max, :y_max + + # Minimum x for coordinate. + # @return [Integer] + attr_reader :x_min + + # Minimum y for coordinate. + # @return [Integer] + attr_reader :y_min + + # Maximum x for coordinate. + # @return [Integer] + attr_reader :x_max + + # Maximum y for coordinate. + # @return [Integer] + attr_reader :y_max + + # Point indices for the last point of each contour. + # @return [Array<Integer>] attr_reader :end_points_of_contours - attr_reader :instruction_length, :instructions + # Total number of bytes for instructions. + # @return [Integer] + attr_reader :instruction_length + + # Instruction byte code. + # @return [Array<Integer>] + attr_reader :instructions + + # @param id [Integer] glyph ID. + # @param raw [String] def initialize(id, raw) @id = id @raw = raw io = StringIO.new(raw) @number_of_contours, @x_min, @y_min, @x_max, @y_max = - io.read(10).unpack('n*').map do |i| + io.read(10).unpack('n*').map { |i| BinUtils.twos_comp_to_int(i, bit_width: 16) - end + } @end_points_of_contours = io.read(number_of_contours * 2).unpack('n*') @instruction_length = io.read(2).unpack1('n') @instructions = io.read(instruction_length).unpack('C*') end + # Is this glyph compound? + # @return [false] def compound? false end + # Recode glyph. + # + # @param _mapping Unused, here for API compatibility. + # @return [String] def recode(_mapping) raw end + # End point index of last contour. + # @return [Integer] def end_point_of_last_contour end_points_of_contours.last + 1 end end end