summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDan Allen <dan.j.allen@gmail.com>2016-09-10 18:20:14 -0600
committerDan Allen <dan.j.allen@gmail.com>2016-09-10 18:54:09 -0600
commit2521a45f5fdb0345b3572d8753c1640ad2487af7 (patch)
treeed0c9473746547d71dc2ef3d922d2fc84f14d00d
parent8570cf978e69e6972837c39d10fa3f9fef5f26a4 (diff)
tighten prawn-svg version range; allow prawn-svg to restore font
Avoid using the following versions of prawn-svg: * 0.24.0 * 0.25.0 * 0.25.1 These versions did not properly restore the font after drawing the SVG. As a result, an SVG containing text objects could alter the document font.
-rw-r--r--asciidoctor-pdf.gemspec2
-rw-r--r--lib/asciidoctor-pdf/converter.rb4
-rw-r--r--lib/asciidoctor-pdf/formatted_text/inline_image_renderer.rb9
3 files changed, 6 insertions, 9 deletions
diff --git a/asciidoctor-pdf.gemspec b/asciidoctor-pdf.gemspec
index 211810b4..2012011b 100644
--- a/asciidoctor-pdf.gemspec
+++ b/asciidoctor-pdf.gemspec
@@ -44,7 +44,7 @@ An extension for Asciidoctor that converts AsciiDoc documents to PDF using the P
s.add_runtime_dependency 'prawn-table', '0.2.2'
s.add_runtime_dependency 'prawn-templates', '0.0.3'
# Prawn SVG >= 0.22.1 requires Ruby >= 2.0.0, so we must cast a wider net to support Ruby 1.9.3
- s.add_runtime_dependency 'prawn-svg', '>= 0.21.0'
+ s.add_runtime_dependency 'prawn-svg', '>= 0.21.0', '< 0.26.0'
s.add_runtime_dependency 'prawn-icon', '1.1.0'
s.add_runtime_dependency 'safe_yaml', '~> 1.0.4'
s.add_runtime_dependency 'thread_safe', '~> 0.3.5'
diff --git a/lib/asciidoctor-pdf/converter.rb b/lib/asciidoctor-pdf/converter.rb
index bd168ed3..42146f45 100644
--- a/lib/asciidoctor-pdf/converter.rb
+++ b/lib/asciidoctor-pdf/converter.rb
@@ -873,8 +873,8 @@ class Converter < ::Prawn::Document
# TODO layout SVG without using keep_together (since we know the dimensions already); always render caption
keep_together do |box_height = nil|
svg_obj.instance_variable_set :@prawn, self
- # NOTE wrap call to draw in save_font to workaround mogest/prawn-svg#80 (fixed in prawn-svg > 0.25.1)
- save_font { svg_obj.draw }
+ # NOTE prawn-svg 0.24.0, 0.25.0, & 0.25.1 didn't restore font after call to draw (see mogest/prawn-svg#80)
+ svg_obj.draw
if box_height && (link = node.attr 'link', nil, false)
link_annotation [(abs_left = svg_obj.position[0] + bounds.absolute_left), y, (abs_left + rendered_w), (y + rendered_h)],
Border: [0, 0, 0],
diff --git a/lib/asciidoctor-pdf/formatted_text/inline_image_renderer.rb b/lib/asciidoctor-pdf/formatted_text/inline_image_renderer.rb
index 65916e7b..8683ea60 100644
--- a/lib/asciidoctor-pdf/formatted_text/inline_image_renderer.rb
+++ b/lib/asciidoctor-pdf/formatted_text/inline_image_renderer.rb
@@ -26,13 +26,10 @@ module InlineImageRenderer
image_left = fragment.left + ((fragment.width - data[:image_width]) / 2.0)
case data[:image_format]
when 'svg'
+ (image_obj = data[:image_obj]).options[:at] = [image_left, image_top]
# NOTE prawn-svg messes with the cursor; use float to workaround
- # NOTE wrap call to draw in save_font to workaround mogest/prawn-svg#80 (fixed in prawn-svg > 0.25.1)
- pdf.save_font do
- pdf.float do
- data[:image_obj].tap {|obj| obj.options[:at] = [image_left, image_top] }.draw
- end
- end
+ # NOTE prawn-svg 0.24.0, 0.25.0, & 0.25.1 didn't restore font after call to draw (see mogest/prawn-svg#80)
+ pdf.float { image_obj.draw }
else
pdf.embed_image data[:image_obj], data[:image_info], at: [image_left, image_top], width: data[:image_width]
end