summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKhaled Hosny <khaledhosny@eglug.org>2017-08-15 20:41:53 +0000
committerKhaled Hosny <khaledhosny@eglug.org>2017-08-19 15:38:53 +0000
commitf7e6b3725686becd2b8d034cc572417e5a272cba (patch)
tree3847f638d00c86f6d2d3776dc2e02533d092ad23
parentFix inverted y sign for glyph positioning (diff)
downloadinkscape-f7e6b3725686becd2b8d034cc572417e5a272cba.tar.gz
inkscape-f7e6b3725686becd2b8d034cc572417e5a272cba.zip
Fix RTL glyph widths in vertical orientation
The vertical branch seems to be broken, removing it makes RTL text in vertical orientation work again.
-rw-r--r--src/libnrtype/Layout-TNG-Compute.cpp7
-rw-r--r--testfiles/rendering_tests/CMakeLists.txt1
-rw-r--r--testfiles/rendering_tests/expected_rendering/test-rtl-vertical-large.pngbin0 -> 50034 bytes
-rw-r--r--testfiles/rendering_tests/expected_rendering/test-rtl-vertical.pngbin0 -> 8677 bytes
-rw-r--r--testfiles/rendering_tests/test-rtl-vertical.svg25
5 files changed, 27 insertions, 6 deletions
diff --git a/src/libnrtype/Layout-TNG-Compute.cpp b/src/libnrtype/Layout-TNG-Compute.cpp
index 5d0c5c3ce..f812f0c41 100644
--- a/src/libnrtype/Layout-TNG-Compute.cpp
+++ b/src/libnrtype/Layout-TNG-Compute.cpp
@@ -818,12 +818,7 @@ void Layout::Calculator::_outputLine(ParagraphInfo const &para,
for (unsigned rtl_index = glyph_index; rtl_index < it_span->end_glyph_index ; rtl_index++) {
if (unbroken_span.glyph_string->glyphs[rtl_index].attr.is_cluster_start && rtl_index != glyph_index)
break;
- if (_block_progression == LEFT_TO_RIGHT || _block_progression == RIGHT_TO_LEFT)
- // Vertical text
- cluster_width += new_span.font_size * para.pango_items[unbroken_span.pango_item_index].font->Advance(unbroken_span.glyph_string->glyphs[rtl_index].glyph, true);
- else
- // Horizontal text
- cluster_width += font_size_multiplier * unbroken_span.glyph_string->glyphs[rtl_index].geometry.width;
+ cluster_width += font_size_multiplier * unbroken_span.glyph_string->glyphs[rtl_index].geometry.width;
}
new_glyph.x -= cluster_width;
}
diff --git a/testfiles/rendering_tests/CMakeLists.txt b/testfiles/rendering_tests/CMakeLists.txt
index 739f9789d..8b77927a0 100644
--- a/testfiles/rendering_tests/CMakeLists.txt
+++ b/testfiles/rendering_tests/CMakeLists.txt
@@ -3,6 +3,7 @@
set(RENDERING_TESTS
test-empty
test-glyph-y-pos
+ test-rtl-vertical
)
diff --git a/testfiles/rendering_tests/expected_rendering/test-rtl-vertical-large.png b/testfiles/rendering_tests/expected_rendering/test-rtl-vertical-large.png
new file mode 100644
index 000000000..a96c2bfdb
--- /dev/null
+++ b/testfiles/rendering_tests/expected_rendering/test-rtl-vertical-large.png
Binary files differ
diff --git a/testfiles/rendering_tests/expected_rendering/test-rtl-vertical.png b/testfiles/rendering_tests/expected_rendering/test-rtl-vertical.png
new file mode 100644
index 000000000..3dccfca78
--- /dev/null
+++ b/testfiles/rendering_tests/expected_rendering/test-rtl-vertical.png
Binary files differ
diff --git a/testfiles/rendering_tests/test-rtl-vertical.svg b/testfiles/rendering_tests/test-rtl-vertical.svg
new file mode 100644
index 000000000..feb454ed6
--- /dev/null
+++ b/testfiles/rendering_tests/test-rtl-vertical.svg
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+
+<svg width="600" height="600"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ version="1.1"
+ viewBox="0 0 600 600">
+ <style type="text/css">
+ text {
+ font-family: DejaVu Sans;
+ font-size: 36px;
+ }
+ .title {
+ text-anchor: middle;
+ }
+ </style>
+
+ <g>
+ <text x="50" y="200">أبجد</text>
+ <text x="300" y="200" style="writing-mode:vertical-lr;">أبجد</text>
+ </g>
+
+ <text class="title" x="50%" y="120">RTL text in vertical mode</text>
+
+</svg>