class TTFunk::Table::Cff::Path

Path. Mostly used for CFF glyph outlines.

def close_path

Returns:
  • (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

Returns:
  • (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)

Returns:
  • (void) -

Parameters:
  • y (Integer, Float) --
  • x (Integer, Float) --
def line_to(x, y)
  @commands << [:line, x, y]
end

def move_to(x, y)

Returns:
  • (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)

Returns:
  • (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