summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorDan Allen <dan.j.allen@gmail.com>2022-08-27 23:49:00 -0600
committerDan Allen <dan.j.allen@gmail.com>2022-08-28 00:49:19 -0600
commit603dd2d46cb744adbdfd1326c13a7cb6b9b4ffa5 (patch)
tree4595f21c496316744ea353efef3f25fcb7e7532c /lib
parent2c2e6652fdcb16e26f52ea565bddd93cb2a82040 (diff)
don't force justify first line of abstract if it ends with a hard break
Diffstat (limited to 'lib')
-rw-r--r--lib/asciidoctor/pdf/ext/prawn/extensions.rb15
1 files changed, 10 insertions, 5 deletions
diff --git a/lib/asciidoctor/pdf/ext/prawn/extensions.rb b/lib/asciidoctor/pdf/ext/prawn/extensions.rb
index 646ad814..c8190fe8 100644
--- a/lib/asciidoctor/pdf/ext/prawn/extensions.rb
+++ b/lib/asciidoctor/pdf/ext/prawn/extensions.rb
@@ -500,14 +500,14 @@ module Asciidoctor
end
if first_line_text_transform
# NOTE: applying text transform here could alter the wrapping, so isolate first line and shrink it to fit
- first_line_text = (box.instance_variable_get :@printed_lines)[0]
- unless first_line_text == fragments[0][:text]
+ first_printed_line = (box.instance_variable_get :@printed_lines)[0]
+ unless first_printed_line == fragments[0][:text]
original_fragments, fragments = fragments, []
original_fragments.reduce '' do |traced, fragment|
fragments << fragment
# NOTE: we could just do a length comparison here
- if (traced += fragment[:text]).start_with? first_line_text
- fragment[:text] = fragment[:text][0...-(traced.length - first_line_text.length)]
+ if (traced += fragment[:text]).start_with? first_printed_line
+ fragment[:text] = fragment[:text][0...-(traced.length - first_printed_line.length)]
break
end
traced
@@ -515,7 +515,12 @@ module Asciidoctor
end
fragments.each {|fragment| fragment[:text] = transform_text fragment[:text], first_line_text_transform }
first_line_options[:overflow] = :shrink_to_fit
- @final_gap = first_line_options[:force_justify] = true if remaining_fragments
+ if remaining_fragments
+ @final_gap = true
+ if first_line_options[:align] == :justify && (box.instance_variable_get :@arranger).consumed[-1]&.[](:text) != ?\n
+ first_line_options[:force_justify] = true
+ end
+ end
end
if text_indent
indent(text_indent) { fill_formatted_text_box fragments, first_line_options }