class Harfbuzz::Buffer

Attributes

hb_buffer[R]

Public Class Methods

new() click to toggle source
# File lib/harfbuzz/buffer.rb, line 88
def initialize
  @hb_buffer = Harfbuzz.hb_buffer_create
  define_finalizer(:hb_buffer_destroy, @hb_buffer)
end

Public Instance Methods

add_utf8(text, offset=0, length=-1) click to toggle source
# File lib/harfbuzz/buffer.rb, line 93
def add_utf8(text, offset=0, length=-1)
  raise "Expected text in UTF-8 encoding, but received #{text.encoding} (#{text.inspect})" unless text.encoding == Encoding::UTF_8
  text_ptr = FFI::MemoryPointer.new(:char, text.bytesize)
  text_ptr.put_bytes(0, text)
  Harfbuzz.hb_buffer_add_utf8(@hb_buffer, text_ptr, text.bytesize, offset, length)
end
get_glyph_infos() click to toggle source
# File lib/harfbuzz/buffer.rb, line 112
def get_glyph_infos
  length_ptr = FFI::MemoryPointer.new(:uint, 1)
  info_ptr = Harfbuzz.hb_buffer_get_glyph_infos(@hb_buffer, length_ptr)
  length = length_ptr.read_uint
  length.times.map do |i|
    GlyphInfo.new(info_ptr + (i * GlyphInfo.size))
  end
end
get_glyph_positions() click to toggle source
# File lib/harfbuzz/buffer.rb, line 121
def get_glyph_positions
  length_ptr = FFI::MemoryPointer.new(:uint, 1)
  positions_ptr = Harfbuzz.hb_buffer_get_glyph_positions(@hb_buffer, length_ptr)
  length = length_ptr.read_uint
  length.times.map do |i|
    GlyphPosition.new(positions_ptr + (i * GlyphPosition.size))
  end
end
guess_segment_properties() click to toggle source
# File lib/harfbuzz/buffer.rb, line 100
def guess_segment_properties
  Harfbuzz.hb_buffer_guess_segment_properties(@hb_buffer)
end
length() click to toggle source
# File lib/harfbuzz/buffer.rb, line 108
def length
  Harfbuzz.hb_buffer_get_length(@hb_buffer)
end
normalize_glyphs() click to toggle source
# File lib/harfbuzz/buffer.rb, line 104
def normalize_glyphs
  Harfbuzz.hb_buffer_normalize_glyphs(@hb_buffer)
end