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