62 lines
1.4 KiB
Ruby
62 lines
1.4 KiB
Ruby
|
#!/usr/bin/env ruby
|
||
|
=begin
|
||
|
glyphstring.rb - Ruby/Pango sample script.
|
||
|
|
||
|
Copyright (c) 2002-2006 Ruby-GNOME2 Project Team
|
||
|
This program is licenced under the same licence as Ruby-GNOME2.
|
||
|
|
||
|
$Id: glyphstring.rb,v 1.3 2006/06/17 14:16:53 ktou Exp $
|
||
|
=end
|
||
|
|
||
|
require 'gtk2'
|
||
|
|
||
|
str = "Hello World"
|
||
|
|
||
|
lang = Pango::Language.new("ja_JP")
|
||
|
fd = Pango::FontDescription.new("Sans 18")
|
||
|
|
||
|
context = Gdk::Pango.context
|
||
|
context.language = lang
|
||
|
context.base_dir = Pango::DIRECTION_LTR
|
||
|
context.font_description = fd
|
||
|
|
||
|
p font = context.load_font(fd)
|
||
|
family = context.families[10]
|
||
|
puts "#{family.class}, #{family.name}"
|
||
|
|
||
|
family.faces.each do |face|
|
||
|
puts face.name
|
||
|
end
|
||
|
|
||
|
p fmap = font.font_map
|
||
|
|
||
|
p fset = fmap.load_fontset(context, fd, lang)
|
||
|
|
||
|
|
||
|
gs = Pango::GlyphString.new
|
||
|
|
||
|
ink_rect, logical_rect = gs.extents(font)
|
||
|
|
||
|
p ink_rect.to_a
|
||
|
p logical_rect.to_a
|
||
|
|
||
|
item = Pango::Item.new
|
||
|
item.analysis.font = font
|
||
|
item.analysis.shape_engine = font.find_shaper(lang, str.codepoints.first)
|
||
|
|
||
|
gs = Pango.shape(str, item.analysis)
|
||
|
|
||
|
ink_rect, logical_rect = gs.extents(font, 0, 11)
|
||
|
|
||
|
p ink_rect.to_a
|
||
|
p logical_rect.to_a
|
||
|
|
||
|
gs.glyphs.each do |info, log_clusters|
|
||
|
puts "Pango::GlyphInfo: log_clusters = #{log_clusters}, glyph = #{info.glyph}, geometry = #{info.geometry.inspect}, cluster_start? = #{info.cluster_start?}"
|
||
|
end
|
||
|
|
||
|
p gs.index_to_x(str, item.analysis, 3, false)
|
||
|
p gs.x_to_index(str, item.analysis, 103)
|
||
|
|
||
|
p logical_widths = gs.get_logical_widths(str, item.analysis.level)
|