Module: HarfBuzz::OT::Name
- Defined in:
- lib/harfbuzz/ot/name.rb
Overview
OpenType Name table API
Class Method Summary collapse
-
.get_utf16(face, name_id, language = nil) ⇒ String?
Returns a name as a UTF-16 encoded string.
-
.get_utf32(face, name_id, language = nil) ⇒ String?
Returns a name as a UTF-32 encoded string.
-
.get_utf8(face, name_id, language = nil) ⇒ String?
Returns a name as a UTF-8 string.
-
.list(face) ⇒ Array<C::HbOtNameEntryT>
Returns all name entries from the name table.
Class Method Details
.get_utf16(face, name_id, language = nil) ⇒ String?
Returns a name as a UTF-16 encoded string
45 46 47 48 49 50 51 52 53 54 55 56 57 58 |
# File 'lib/harfbuzz/ot/name.rb', line 45 def get_utf16(face, name_id, language = nil) lang = language || C.hb_language_get_default buf_size = FFI::MemoryPointer.new(:uint) buf_size.write_uint(0) C.hb_ot_name_get_utf16(face.ptr, name_id, lang, buf_size, nil) size = buf_size.read_uint return nil if size.zero? buf = FFI::MemoryPointer.new(:uint16, size + 1) buf_size.write_uint(size + 1) C.hb_ot_name_get_utf16(face.ptr, name_id, lang, buf_size, buf) actual = buf_size.read_uint buf.read_bytes(actual * 2).force_encoding("UTF-16LE") end |
.get_utf32(face, name_id, language = nil) ⇒ String?
Returns a name as a UTF-32 encoded string
65 66 67 68 69 70 71 72 73 74 75 76 77 78 |
# File 'lib/harfbuzz/ot/name.rb', line 65 def get_utf32(face, name_id, language = nil) lang = language || C.hb_language_get_default buf_size = FFI::MemoryPointer.new(:uint) buf_size.write_uint(0) C.hb_ot_name_get_utf32(face.ptr, name_id, lang, buf_size, nil) size = buf_size.read_uint return nil if size.zero? buf = FFI::MemoryPointer.new(:uint32, size + 1) buf_size.write_uint(size + 1) C.hb_ot_name_get_utf32(face.ptr, name_id, lang, buf_size, buf) actual = buf_size.read_uint buf.read_bytes(actual * 4).force_encoding("UTF-32LE") end |
.get_utf8(face, name_id, language = nil) ⇒ String?
Returns a name as a UTF-8 string
26 27 28 29 30 31 32 33 34 35 36 37 38 |
# File 'lib/harfbuzz/ot/name.rb', line 26 def get_utf8(face, name_id, language = nil) lang = language || C.hb_language_get_default buf_size = FFI::MemoryPointer.new(:uint) buf_size.write_uint(0) C.hb_ot_name_get_utf8(face.ptr, name_id, lang, buf_size, nil) size = buf_size.read_uint return nil if size.zero? buf = FFI::MemoryPointer.new(:char, size + 1) buf_size.write_uint(size + 1) C.hb_ot_name_get_utf8(face.ptr, name_id, lang, buf_size, buf) buf.read_string(size) end |
.list(face) ⇒ Array<C::HbOtNameEntryT>
Returns all name entries from the name table
12 13 14 15 16 17 18 19 |
# File 'lib/harfbuzz/ot/name.rb', line 12 def list(face) count_ptr = FFI::MemoryPointer.new(:uint) entries_ptr = C.hb_ot_name_list_names(face.ptr, count_ptr) count = count_ptr.read_uint return [] if count.zero? || entries_ptr.null? count.times.map { |i| C::HbOtNameEntryT.new(entries_ptr + i * C::HbOtNameEntryT.size) } end |