class TTFunk::Table::Cff::FontDict

CFF Font dict.

def encode

Returns:
  • (TTFunk::EncodedString) -
def encode
  EncodedString.new do |result|
    each do |operator, operands|
      case OPERATOR_CODES[operator]
      when :private
        result << encode_private
      else
        operands.each { |operand| result << encode_operand(operand) }
      end
      result << encode_operator(operator)
    end
  end
end

def encode_private

def encode_private
  EncodedString.new do |result|
    result << Placeholder.new(:"private_length_#{@table_offset}", length: PLACEHOLDER_LENGTH)
    result << Placeholder.new(:"private_offset_#{@table_offset}", length: PLACEHOLDER_LENGTH)
  end
end

def finalize(new_cff_data)

Returns:
  • (void) -

Parameters:
  • new_cff_data (TTFunk::EncodedString) --
def finalize(new_cff_data)
  encoded_private_dict = private_dict.encode
  encoded_offset = encode_integer32(new_cff_data.length)
  encoded_length = encode_integer32(encoded_private_dict.length)
  new_cff_data.resolve_placeholder(:"private_length_#{@table_offset}", encoded_length)
  new_cff_data.resolve_placeholder(:"private_offset_#{@table_offset}", encoded_offset)
  private_dict.finalize(encoded_private_dict)
  new_cff_data << encoded_private_dict
end

def initialize(top_dict, file, offset, length = nil)

Parameters:
  • length (Integer) --
  • offset (Integer) --
  • file (TTFunk::File) --
  • top_dict (TTFunk::Table:Cff::TopDict) --
def initialize(top_dict, file, offset, length = nil)
  @top_dict = top_dict
  super(file, offset, length)
end

def private_dict

Returns:
  • (TTFunk::Table::Cff::PrivateDict, nil) -
def private_dict
  @private_dict ||=
    if (info = self[OPERATORS[:private]])
      private_dict_length, private_dict_offset = info
      PrivateDict.new(
        file,
        top_dict.cff_offset + private_dict_offset,
        private_dict_length,
      )
    end
end