class Magick::RVG::Utility::LRTextStrategy
Public Instance Methods
get_letter_spacing(glyph)
click to toggle source
# File lib/rvg/misc.rb, line 171 def get_letter_spacing(glyph) gx, gy = glyph_metrics(@ctx.text_attrs.glyph_orientation_horizontal, glyph) [gx+@ctx.text_attrs.letter_spacing, gy] end
get_word_spacing()
click to toggle source
# File lib/rvg/misc.rb, line 166 def get_word_spacing @word_space ||= glyph_metrics(@ctx.text_attrs.glyph_orientation_horizontal, ' ')[0] [@word_space + @ctx.text_attrs.word_spacing, 0] end
render(x, y, text)
click to toggle source
# File lib/rvg/misc.rb, line 176 def render(x, y, text) x_rel_coords, y_rel_coords = text_rel_coords(text) dx = x_rel_coords.inject(0) {|sum, a| sum + a} dy = y_rel_coords.max # We're handling the anchoring. @ctx.gc.push @ctx.gc.text_anchor(Magick::StartAnchor) if @ctx.text_attrs.text_anchor == :end x -= dx elsif @ctx.text_attrs.text_anchor == :middle x -= dx / 2 end # Align the first glyph case @ctx.text_attrs.glyph_orientation_horizontal when 0 when 90 y -= dy when 180 x += x_rel_coords.shift x_rel_coords << 0 y -= dy when 270 x += x_rel_coords[0] end y += shift_baseline(@ctx.text_attrs.glyph_orientation_horizontal, text[0,1]) first_word = true text.split(::Magick::RVG::WORD_SEP).each do |word| unless first_word x += x_rel_coords.shift end first_word = false word.split('').each do |glyph| render_glyph(@ctx.text_attrs.glyph_orientation_horizontal, x, y, glyph) x += x_rel_coords.shift end end @ctx.gc.pop [dx, 0] end