40 lines
907 B
Ruby
40 lines
907 B
Ruby
--- philesight.rb.orig 2009-01-05 18:16:40.000000000 +0300
|
|
+++ philesight.rb 2009-02-11 22:38:03.000000000 +0300
|
|
@@ -5,6 +5,8 @@
|
|
require 'cgi'
|
|
require 'cairo'
|
|
require 'bdb'
|
|
+require 'locale'
|
|
+require 'iconv'
|
|
|
|
class PNGWriter
|
|
|
|
@@ -390,6 +392,7 @@
|
|
#
|
|
|
|
def draw_text(cr, x, y, text, size=11, bold=false)
|
|
+ conv = Iconv.new("UTF-8", Locale.charset)
|
|
|
|
lines = text.count("\n") + 1
|
|
y -= (lines-1) * (size+2) / 2.0
|
|
@@ -398,11 +401,18 @@
|
|
cr.set_font_size(size)
|
|
|
|
text.split("\n").each do |line|
|
|
- extents = cr.text_extents(line)
|
|
+ begin
|
|
+ newname = conv.iconv(line)
|
|
+ newname << conv.iconv(nil)
|
|
+ rescue Iconv::IllegalSequence => e
|
|
+ puts "Bad file name: #{line}"
|
|
+ next
|
|
+ end
|
|
+ extents = cr.text_extents(newname)
|
|
w = extents.width
|
|
h = extents.height
|
|
cr.move_to(x - w/2, y + h/2)
|
|
- cr.show_text(line)
|
|
+ cr.show_text(newname)
|
|
y += size+2
|
|
end
|
|
end
|