class TTFunk::Table::Cff::Path
Path. Mostly used for CFF glyph outlines.
def close_path
-
(void)
-
def close_path @commands << CLOSE_PATH_CMD @number_of_contours += 1 end
def curve_to(x1, y1, x2, y2, x, y) # rubocop: disable Metrics/ParameterLists
-
(void)
-
Parameters:
-
y
(Integer, Float
) -- -
x
(Integer, Float
) -- -
y2
(Integer, Float
) -- -
x2
(Integer, Float
) -- -
y1
(Integer, Float
) -- -
x1
(Integer, Float
) --
def curve_to(x1, y1, x2, y2, x, y) # rubocop: disable Metrics/ParameterLists @commands << [:curve, x1, y1, x2, y2, x, y] end
def format_values(command)
def format_values(command) command[1..].map { |k| format('%.2f', k) }.join(' ') end
def initialize
def initialize @commands = [] @number_of_contours = 0 end
def line_to(x, y)
-
(void)
-
Parameters:
-
y
(Integer, Float
) -- -
x
(Integer, Float
) --
def line_to(x, y) @commands << [:line, x, y] end
def move_to(x, y)
-
(void)
-
Parameters:
-
y
(Integer, Float
) -- -
x
(Integer, Float
) --
def move_to(x, y) @commands << [:move, x, y] end
def render(x: 0, y: 0, font_size: 72, units_per_em: 1000)
-
(TTFunk::Table::Cff::Path)
-
Parameters:
-
units_per_em
(Integer
) -- units per Em as defined in the font. -
font_size
(Integer, Float
) -- font size. -
y
(Integer, Float
) -- new vertical position. -
x
(Integer, Float
) -- new horizontal position.
def render(x: 0, y: 0, font_size: 72, units_per_em: 1000) new_path = self.class.new scale = 1.0 / units_per_em * font_size commands.each do |cmd| case cmd[:type] when :move new_path.move_to(x + (cmd[1] * scale), y + (-cmd[2] * scale)) when :line new_path.line_to(x + (cmd[1] * scale), y + (-cmd[2] * scale)) when :curve new_path.curve_to( x + (cmd[1] * scale), y + (-cmd[2] * scale), x + (cmd[3] * scale), y + (-cmd[4] * scale), x + (cmd[5] * scale), y + (-cmd[6] * scale), ) when :close new_path.close_path end end new_path end