Browse Source

Fix a string replacement issue.

Contributes to #30
dev
Andy Meneely 11 years ago
parent
commit
874bdba8bc
  1. 3
      lib/squib/graphics/text.rb
  2. 31
      samples/embed_text.rb

3
lib/squib/graphics/text.rb

@ -119,12 +119,11 @@ module Squib
rule = embed.rules[key] rule = embed.rules[key]
spacing = rule[:width] * Pango::SCALE spacing = rule[:width] * Pango::SCALE
index = clean_str.index(key) index = clean_str.index(key)
str.sub!(key, "<span size=\"#{ZERO_WIDTH_CHAR_SIZE}\">a<span letter_spacing=\"#{spacing.to_i}\">a</span>a</span>") str = str.sub(key, "<span size=\"#{ZERO_WIDTH_CHAR_SIZE}\">a<span letter_spacing=\"#{spacing.to_i}\">a</span>a</span>")
layout.markup = str layout.markup = str
clean_str = layout.text clean_str = layout.text
searches << { index: index, rule: rule } searches << { index: index, rule: rule }
end end
# byebug
searches.each do |search| searches.each do |search|
rect = layout.index_to_pos(search[:index]) rect = layout.index_to_pos(search[:index])
x = Pango.pixels(rect.x) + search[:rule][:dx] x = Pango.pixels(rect.x) + search[:rule][:dx]

31
samples/embed_text.rb

@ -14,14 +14,14 @@ Squib::Deck.new do
# embed.png key: ':purse:', width: 28, height: 28, dx: 0, dy: 4, file: 'shiny-purse.png' # embed.png key: ':purse:', width: 28, height: 28, dx: 0, dy: 4, file: 'shiny-purse.png'
# end # end
embed_text = 'Middle align: Take 1 :tool: and gain 2 :health:. Take 2 :tool: and gain 3 :purse:' # embed_text = 'Middle align: Take 1 :tool: and gain 2 :health:. Take 2 :tool: and gain 3 :purse:'
text(str: embed_text, font: 'Sans 21', # text(str: embed_text, font: 'Sans 21',
x: 200, y: 0, width: 180, height: 300, valign: :middle, # x: 200, y: 0, width: 180, height: 300, valign: :middle,
align: :left, ellipsize: false, justify: false, hint: :cyan) do |embed| # align: :left, ellipsize: false, justify: false, hint: :cyan) do |embed|
embed.svg key: ':tool:', width: 28, height: 28, file: 'spanner.svg' # embed.svg key: ':tool:', width: 28, height: 28, file: 'spanner.svg'
embed.svg key: ':health:', width: 28, height: 28, file: 'glass-heart.svg' # embed.svg key: ':health:', width: 28, height: 28, file: 'glass-heart.svg'
embed.png key: ':purse:', width: 28, height: 28, file: 'shiny-purse.png' # embed.png key: ':purse:', width: 28, height: 28, file: 'shiny-purse.png'
end # end
# embed_text = 'This :tool: aligns on the bottom properly. :purse:' # embed_text = 'This :tool: aligns on the bottom properly. :purse:'
# text(str: embed_text, font: 'Sans 21', # text(str: embed_text, font: 'Sans 21',
@ -66,5 +66,18 @@ Squib::Deck.new do
# embed.png key: ':purse:', width: 28, height: 28, file: 'shiny-purse.png' # embed.png key: ':purse:', width: 28, height: 28, file: 'shiny-purse.png'
# end # end
save_png prefix: 'embed_' # save_png prefix: 'embed_'
end
Squib::Deck.new(cards: 3) do
embed_text = 'Take 1 :tool: and gain 2 :health:.'
text(str: embed_text, font: 'Sans', font_size: [18, 25, 32],
x: 0, y: 0, width: 180, height: 300, valign: :bottom,
align: :left, ellipsize: false, justify: false, hint: :cyan) do |embed|
embed.svg key: ':tool:', width: 28, height: 28, file: 'spanner.svg'
embed.svg key: ':health:', width: 28, height: 28, file: 'glass-heart.svg'
end
save_png prefix: 'embed_multi_'
# save_sheet prefix: 'embed_multisheet_', columns: 4
end end
Loading…
Cancel
Save