summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorDan Allen <dan.j.allen@gmail.com>2022-10-22 02:28:03 -0600
committerDan Allen <dan.j.allen@gmail.com>2022-10-22 02:28:03 -0600
commit153c2862dd9a80daad31dc2242ceca6828fbbf68 (patch)
tree5a11f42bc805f97584471a143f979d74e5701de5 /lib
parent09f8c3a8d7a19f3ca2f0f4cdb14a00e746cbd9fa (diff)
fix regression that prevented trailing hard break from being removed
Diffstat (limited to 'lib')
-rw-r--r--lib/asciidoctor/pdf/formatted_text/transform.rb7
1 files changed, 5 insertions, 2 deletions
diff --git a/lib/asciidoctor/pdf/formatted_text/transform.rb b/lib/asciidoctor/pdf/formatted_text/transform.rb
index 6e4e8ef7..bc5db0c9 100644
--- a/lib/asciidoctor/pdf/formatted_text/transform.rb
+++ b/lib/asciidoctor/pdf/formatted_text/transform.rb
@@ -8,8 +8,9 @@ module Asciidoctor
DummyText = ?\u0000
ZeroWidthSpace = ?\u200b
+ LF = ?\n
+ InnerLF = LF + ZeroWidthSpace # without trailing character, use of fallback font can change line height
DoubleSpace = ' '
- LF = ?\n + ZeroWidthSpace # without trailing character, use of fallback font can change line height
CharEntityTable = { amp: '&', apos: ?', gt: '>', lt: '<', nbsp: ?\u00a0, quot: '"' }
CharRefRx = /&(?:(#{CharEntityTable.keys.join '|'})|#(?:(\d\d\d{0,4})|x(\h\h\h{0,3})));/
HexColorRx = /^#\h\h\h\h{0,3}$/
@@ -156,6 +157,7 @@ module Asciidoctor
def apply parsed, fragments = [], inherited = nil, normalize_space: nil
previous_fragment_is_text = false
previous_fragment_end_with_space = false
+ last_node = parsed[-1]
# NOTE: we use each since using inject is slower than a manual loop
parsed.each do |node|
case node[:type]
@@ -223,7 +225,8 @@ module Asciidoctor
fragments << fragment
previous_fragment_is_text = previous_fragment_end_with_space = false
else # :br
- text = @merge_adjacent_text_nodes && previous_fragment_is_text ? %(#{fragments.pop[:text]}#{LF}) : LF
+ lf = node == last_node ? LF : InnerLF
+ text = @merge_adjacent_text_nodes && previous_fragment_is_text ? %(#{fragments.pop[:text]}#{lf}) : lf
fragments << (clone_fragment inherited, text: text)
previous_fragment_is_text = previous_fragment_end_with_space = true
end