Commit 1795391d authored by mario@webkit.org's avatar mario@webkit.org

[GTK] Glyphs in vertical text tests are rotated 90 degrees clockwise

https://bugs.webkit.org/show_bug.cgi?id=50619

Patch by Denis Nomiyama <d.nomiyama@samsung.com> on 2013-11-07
Reviewed by Martin Robinson.

Source/WebCore:

Implemented the OPENTYPE_VERTICAL feature for the GTK+ port. It resolves
the 90 degrees rotation problem of CJK characters when displaying
vertical text.

New tests are not required as the existing tests for vertical text will
work properly now.

* GNUmakefile.list.am: Added OpenTypeVerticalData.cpp and
OpenTypeVerticalData.h to platformgtk_sources.
* PlatformEfl.cmake: Added OpenTypeVerticalData.cpp.
* PlatformGTK.cmake: Added OpenTypeVerticalData.cpp.
* platform/graphics/FontCache.cpp: Originally the HashMap for
OpenTypeVerticalData was designed with FontFileKey as integer in the
Chromium port, which was an unique number provided by Skia. Since other
ports use FontFileKey as string, new generic hash functions had to be
implemented instead of using the specific ones for integers.
(WebCore::FontVerticalDataCacheKeyHash::hash): New hash function for
HashMap of OpenTypeVerticalData.
(WebCore::FontVerticalDataCacheKeyHash::equal): New function for
comparing hash indexes in the HashMap of OpenTypeVerticalData.
(WebCore::FontVerticalDataCacheKeyTraits::emptyValue): New function for
giving an empty FontFileKey.
(WebCore::FontVerticalDataCacheKeyTraits::constructDeletedValue): New
function to create a FontFileKey for deleted values.
(WebCore::FontVerticalDataCacheKeyTraits::isDeletedValue): New function
to check if a HashMap entry is available.
* platform/graphics/freetype/FontCustomPlatformDataFreeType.cpp:
(WebCore::FontCustomPlatformData::fontPlatformData): Added font
orientation as a parameter to the FontPlatformData constructor.
* platform/graphics/freetype/FontPlatformData.h: Added m_orientation to
store the font orientation and m_horizontalOrientationMatrix to store
the Cairo matrix for horizontal orientation, which can be restored in
setOrientation().
(WebCore::FontPlatformData::FontPlatformData): Added font orientation as
a parameter.
(WebCore::FontPlatformData::orientation): Implemented this function
based on m_orientation.
* platform/graphics/freetype/FontPlatformDataFreeType.cpp: Added new
helper function rotateCairoMatrixForVerticalOrientation() to rotate the
Cairo matrix in case of vertical orientation.
(WebCore::FontPlatformData::FontPlatformData): Initialized
m_orientation.
(WebCore::FontPlatformData::operator=): Added m_orientation and
m_horizontalOrientationMatrix to the assignment operator.
(WebCore::FontPlatformData::operator==): Added m_orientation to the
equal operator.
(WebCore::FontPlatformData::initializeWithFontFace): Rotated and
translated fonts if orientation is vertical. Also stored the horizontal
Cairo matrix.
(WebCore::FontPlatformData::verticalData): Returned the vertical data
from the font cache.
(WebCore::FontPlatformData::openTypeTable): Loaded the font table into
a shared buffer.
(WebCore::FontPlatformData::setOrientation): Replaced the scaled font
data by rotating fonts according to the new orientation.
* platform/graphics/freetype/SimpleFontDataFreeType.cpp:
(WebCore::SimpleFontData::platformInit): Set the glyph's height and
width according to the font orientation. It also sets EM.
(WebCore::SimpleFontData::platformCreateScaledFontData): Added
orientation to the FontPlatformData constructor.
(WebCore::SimpleFontData::platformWidthForGlyph): Returned the glyph's
width according the orientation.
* platform/graphics/harfbuzz/HarfBuzzFaceCairo.cpp:
(WebCore::CairoGetGlyphWidthAndExtents): Obtained the character advance
and extents according to the font orientation.

Source/Platform:

Added WebCore/platform/graphics/opentype to the include path.

* GNUmakefile.am:

Source/WTF:

Enabled OPENTYPE_VERTICAL by default on GTK+ and EFL ports, which are
currently using Freetype.

* wtf/Platform.h:

Source/WebKit:

Added WebCore/platform/graphics/opentype to the include path.

* PlatformEfl.cmake:

Source/WebKit2:

Added WebCore/platform/graphics/opentype to the include path.

* PlatformEfl.cmake:
* PlatformGTK.cmake:

LayoutTests:

Updated existing test results that uses vertical texts.

* platform/gtk-wk1/fast/writing-mode/Kusa-Makura-background-canvas-expected.png: Added.
* platform/gtk-wk1/fast/writing-mode/Kusa-Makura-background-canvas-expected.txt: Updated.
* platform/gtk/editing/selection/vertical-lr-ltr-extend-line-backward-br-expected.png: Updated.
* platform/gtk/editing/selection/vertical-lr-ltr-extend-line-backward-br-expected.txt: Updated.
* platform/gtk/editing/selection/vertical-lr-ltr-extend-line-forward-br-expected.png: Updated.
* platform/gtk/editing/selection/vertical-lr-ltr-extend-line-forward-br-expected.txt: Updated.
* platform/gtk/editing/selection/vertical-rl-ltr-extend-line-backward-br-expected.png: Updated.
* platform/gtk/editing/selection/vertical-rl-ltr-extend-line-backward-br-expected.txt: Updated.
* platform/gtk/editing/selection/vertical-rl-ltr-extend-line-backward-p-expected.png: Updated.
* platform/gtk/editing/selection/vertical-rl-ltr-extend-line-backward-p-expected.txt: Updated.
* platform/gtk/editing/selection/vertical-rl-ltr-extend-line-backward-wrap-expected.png: Updated.
* platform/gtk/editing/selection/vertical-rl-ltr-extend-line-backward-wrap-expected.txt: Updated.
* platform/gtk/editing/selection/vertical-rl-ltr-extend-line-forward-br-expected.png: Updated.
* platform/gtk/editing/selection/vertical-rl-ltr-extend-line-forward-br-expected.txt: Updated.
* platform/gtk/editing/selection/vertical-rl-ltr-extend-line-forward-p-expected.png: Updated.
* platform/gtk/editing/selection/vertical-rl-ltr-extend-line-forward-p-expected.txt: Updated.
* platform/gtk/editing/selection/vertical-rl-ltr-extend-line-forward-wrap-expected.png: Updated.
* platform/gtk/editing/selection/vertical-rl-ltr-extend-line-forward-wrap-expected.txt: Updated.
* platform/gtk/fast/block/lineboxcontain/block-with-ideographs-expected.png: Updated.
* platform/gtk/fast/block/lineboxcontain/block-with-ideographs-expected.txt: Updated.
* platform/gtk/fast/css/relative-positioned-block-with-inline-ancestor-and-parent-dynamic-expected.png: Updated.
* platform/gtk/fast/dynamic/text-combine-expected.png: Updated.
* platform/gtk/fast/dynamic/text-combine-expected.txt: Updated.
* platform/gtk/fast/html/details-writing-mode-expected.png: Updated.
* platform/gtk/fast/repaint/japanese-rl-selection-clear-expected.png: Updated.
* platform/gtk/fast/repaint/japanese-rl-selection-clear-expected.txt: Added.
* platform/gtk/fast/repaint/japanese-rl-selection-repaint-expected.png: Updated.
* platform/gtk/fast/repaint/japanese-rl-selection-repaint-expected.txt: Added.
* platform/gtk/fast/repaint/japanese-rl-selection-repaint-in-regions-expected.png: Updated.
* platform/gtk/fast/repaint/japanese-rl-selection-repaint-in-regions-expected.txt: Updated.
* platform/gtk/fast/repaint/repaint-across-writing-mode-boundary-expected.png: Updated.
* platform/gtk/fast/repaint/repaint-across-writing-mode-boundary-expected.txt: Updated.
* platform/gtk/fast/ruby/base-shorter-than-text-expected.png: Updated.
* platform/gtk/fast/ruby/base-shorter-than-text-expected.txt: Updated.
* platform/gtk/fast/text/decorations-with-text-combine-expected.png: Updated.
* platform/gtk/fast/text/decorations-with-text-combine-expected.txt: Updated.
* platform/gtk/fast/text/emphasis-combined-text-expected.png: Updated.
* platform/gtk/fast/text/emphasis-combined-text-expected.txt: Updated.
* platform/gtk/fast/text/emphasis-vertical-expected.png: Updated.
* platform/gtk/fast/text/emphasis-vertical-expected.txt: Updated.
* platform/gtk/fast/text/international/text-combine-image-test-expected.png: Updated.
* platform/gtk/fast/text/international/text-combine-image-test-expected.txt: Updated.
* platform/gtk/fast/text/international/text-spliced-font-expected.png: Updated.
* platform/gtk/fast/text/international/text-spliced-font-expected.txt: Updated.
* platform/gtk/fast/text/international/vertical-text-glyph-test-expected.png: Updated.
* platform/gtk/fast/text/international/vertical-text-glyph-test-expected.txt: Added.
* platform/gtk/fast/text/justify-ideograph-vertical-expected.png: Updated.
* platform/gtk/fast/text/justify-ideograph-vertical-expected.txt: Added.
* platform/gtk/fast/text/orientation-sideways-expected.png: Updated.
* platform/gtk/fast/text/orientation-sideways-expected.txt: Updated.
* platform/gtk/fast/writing-mode/Kusa-Makura-background-canvas-expected.png: Updated.
* platform/gtk/fast/writing-mode/Kusa-Makura-background-canvas-expected.txt: Updated.
* platform/gtk/fast/writing-mode/border-vertical-lr-expected.png: Updated.
* platform/gtk/fast/writing-mode/border-vertical-lr-expected.txt: Updated.
* platform/gtk/fast/writing-mode/broken-ideograph-small-caps-expected.png: Updated.
* platform/gtk/fast/writing-mode/broken-ideograph-small-caps-expected.txt: Updated.
* platform/gtk/fast/writing-mode/broken-ideographic-font-expected.png: Updated.
* platform/gtk/fast/writing-mode/broken-ideographic-font-expected.txt: Updated.
* platform/gtk/fast/writing-mode/fallback-orientation-expected.png: Updated.
* platform/gtk/fast/writing-mode/fallback-orientation-expected.txt: Updated.
* platform/gtk/fast/writing-mode/japanese-lr-selection-expected.png: Updated.
* platform/gtk/fast/writing-mode/japanese-lr-selection-expected.txt: Updated.
* platform/gtk/fast/writing-mode/japanese-lr-text-expected.png: Updated.
* platform/gtk/fast/writing-mode/japanese-lr-text-expected.txt: Updated.
* platform/gtk/fast/writing-mode/japanese-rl-selection-expected.png: Updated.
* platform/gtk/fast/writing-mode/japanese-rl-selection-expected.txt: Updated.
* platform/gtk/fast/writing-mode/japanese-rl-text-expected.png: Updated.
* platform/gtk/fast/writing-mode/japanese-rl-text-expected.txt: Updated.
* platform/gtk/fast/writing-mode/japanese-rl-text-with-broken-font-expected.png: Updated.
* platform/gtk/fast/writing-mode/japanese-rl-text-with-broken-font-expected.txt: Updated.
* platform/gtk/fast/writing-mode/japanese-ruby-vertical-lr-expected.png: Updated.
* platform/gtk/fast/writing-mode/japanese-ruby-vertical-lr-expected.txt: Updated.
* platform/gtk/fast/writing-mode/japanese-ruby-vertical-rl-expected.png: Updated.
* platform/gtk/fast/writing-mode/japanese-ruby-vertical-rl-expected.txt: Updated.
* platform/gtk/fast/writing-mode/text-orientation-basic-expected.png: Updated.
* platform/gtk/fast/writing-mode/text-orientation-basic-expected.txt:
* platform/gtk/fast/writing-mode/vertical-align-table-baseline-expected.png: Updated.
* platform/gtk/fast/writing-mode/vertical-align-table-baseline-expected.txt: Updated.
* platform/gtk/fast/writing-mode/vertical-baseline-alignment-expected.png: Updated.
* platform/gtk/fast/writing-mode/vertical-baseline-alignment-expected.txt: Updated.
* platform/gtk/fast/writing-mode/vertical-font-fallback-expected.png: Updated.
* platform/gtk/fast/writing-mode/vertical-font-fallback-expected.txt: Updated.

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@158848 268f45cc-cd09-0410-ab3c-d52691b4dbfc
parent c94ba8cf
2013-11-07 Denis Nomiyama <d.nomiyama@samsung.com>
[GTK] Glyphs in vertical text tests are rotated 90 degrees clockwise
https://bugs.webkit.org/show_bug.cgi?id=50619
Reviewed by Martin Robinson.
Updated existing test results that uses vertical texts.
* platform/gtk-wk1/fast/writing-mode/Kusa-Makura-background-canvas-expected.png: Added.
* platform/gtk-wk1/fast/writing-mode/Kusa-Makura-background-canvas-expected.txt: Updated.
* platform/gtk/editing/selection/vertical-lr-ltr-extend-line-backward-br-expected.png: Updated.
* platform/gtk/editing/selection/vertical-lr-ltr-extend-line-backward-br-expected.txt: Updated.
* platform/gtk/editing/selection/vertical-lr-ltr-extend-line-forward-br-expected.png: Updated.
* platform/gtk/editing/selection/vertical-lr-ltr-extend-line-forward-br-expected.txt: Updated.
* platform/gtk/editing/selection/vertical-rl-ltr-extend-line-backward-br-expected.png: Updated.
* platform/gtk/editing/selection/vertical-rl-ltr-extend-line-backward-br-expected.txt: Updated.
* platform/gtk/editing/selection/vertical-rl-ltr-extend-line-backward-p-expected.png: Updated.
* platform/gtk/editing/selection/vertical-rl-ltr-extend-line-backward-p-expected.txt: Updated.
* platform/gtk/editing/selection/vertical-rl-ltr-extend-line-backward-wrap-expected.png: Updated.
* platform/gtk/editing/selection/vertical-rl-ltr-extend-line-backward-wrap-expected.txt: Updated.
* platform/gtk/editing/selection/vertical-rl-ltr-extend-line-forward-br-expected.png: Updated.
* platform/gtk/editing/selection/vertical-rl-ltr-extend-line-forward-br-expected.txt: Updated.
* platform/gtk/editing/selection/vertical-rl-ltr-extend-line-forward-p-expected.png: Updated.
* platform/gtk/editing/selection/vertical-rl-ltr-extend-line-forward-p-expected.txt: Updated.
* platform/gtk/editing/selection/vertical-rl-ltr-extend-line-forward-wrap-expected.png: Updated.
* platform/gtk/editing/selection/vertical-rl-ltr-extend-line-forward-wrap-expected.txt: Updated.
* platform/gtk/fast/block/lineboxcontain/block-with-ideographs-expected.png: Updated.
* platform/gtk/fast/block/lineboxcontain/block-with-ideographs-expected.txt: Updated.
* platform/gtk/fast/css/relative-positioned-block-with-inline-ancestor-and-parent-dynamic-expected.png: Updated.
* platform/gtk/fast/dynamic/text-combine-expected.png: Updated.
* platform/gtk/fast/dynamic/text-combine-expected.txt: Updated.
* platform/gtk/fast/html/details-writing-mode-expected.png: Updated.
* platform/gtk/fast/repaint/japanese-rl-selection-clear-expected.png: Updated.
* platform/gtk/fast/repaint/japanese-rl-selection-clear-expected.txt: Added.
* platform/gtk/fast/repaint/japanese-rl-selection-repaint-expected.png: Updated.
* platform/gtk/fast/repaint/japanese-rl-selection-repaint-expected.txt: Added.
* platform/gtk/fast/repaint/japanese-rl-selection-repaint-in-regions-expected.png: Updated.
* platform/gtk/fast/repaint/japanese-rl-selection-repaint-in-regions-expected.txt: Updated.
* platform/gtk/fast/repaint/repaint-across-writing-mode-boundary-expected.png: Updated.
* platform/gtk/fast/repaint/repaint-across-writing-mode-boundary-expected.txt: Updated.
* platform/gtk/fast/ruby/base-shorter-than-text-expected.png: Updated.
* platform/gtk/fast/ruby/base-shorter-than-text-expected.txt: Updated.
* platform/gtk/fast/text/decorations-with-text-combine-expected.png: Updated.
* platform/gtk/fast/text/decorations-with-text-combine-expected.txt: Updated.
* platform/gtk/fast/text/emphasis-combined-text-expected.png: Updated.
* platform/gtk/fast/text/emphasis-combined-text-expected.txt: Updated.
* platform/gtk/fast/text/emphasis-vertical-expected.png: Updated.
* platform/gtk/fast/text/emphasis-vertical-expected.txt: Updated.
* platform/gtk/fast/text/international/text-combine-image-test-expected.png: Updated.
* platform/gtk/fast/text/international/text-combine-image-test-expected.txt: Updated.
* platform/gtk/fast/text/international/text-spliced-font-expected.png: Updated.
* platform/gtk/fast/text/international/text-spliced-font-expected.txt: Updated.
* platform/gtk/fast/text/international/vertical-text-glyph-test-expected.png: Updated.
* platform/gtk/fast/text/international/vertical-text-glyph-test-expected.txt: Added.
* platform/gtk/fast/text/justify-ideograph-vertical-expected.png: Updated.
* platform/gtk/fast/text/justify-ideograph-vertical-expected.txt: Added.
* platform/gtk/fast/text/orientation-sideways-expected.png: Updated.
* platform/gtk/fast/text/orientation-sideways-expected.txt: Updated.
* platform/gtk/fast/writing-mode/Kusa-Makura-background-canvas-expected.png: Updated.
* platform/gtk/fast/writing-mode/Kusa-Makura-background-canvas-expected.txt: Updated.
* platform/gtk/fast/writing-mode/border-vertical-lr-expected.png: Updated.
* platform/gtk/fast/writing-mode/border-vertical-lr-expected.txt: Updated.
* platform/gtk/fast/writing-mode/broken-ideograph-small-caps-expected.png: Updated.
* platform/gtk/fast/writing-mode/broken-ideograph-small-caps-expected.txt: Updated.
* platform/gtk/fast/writing-mode/broken-ideographic-font-expected.png: Updated.
* platform/gtk/fast/writing-mode/broken-ideographic-font-expected.txt: Updated.
* platform/gtk/fast/writing-mode/fallback-orientation-expected.png: Updated.
* platform/gtk/fast/writing-mode/fallback-orientation-expected.txt: Updated.
* platform/gtk/fast/writing-mode/japanese-lr-selection-expected.png: Updated.
* platform/gtk/fast/writing-mode/japanese-lr-selection-expected.txt: Updated.
* platform/gtk/fast/writing-mode/japanese-lr-text-expected.png: Updated.
* platform/gtk/fast/writing-mode/japanese-lr-text-expected.txt: Updated.
* platform/gtk/fast/writing-mode/japanese-rl-selection-expected.png: Updated.
* platform/gtk/fast/writing-mode/japanese-rl-selection-expected.txt: Updated.
* platform/gtk/fast/writing-mode/japanese-rl-text-expected.png: Updated.
* platform/gtk/fast/writing-mode/japanese-rl-text-expected.txt: Updated.
* platform/gtk/fast/writing-mode/japanese-rl-text-with-broken-font-expected.png: Updated.
* platform/gtk/fast/writing-mode/japanese-rl-text-with-broken-font-expected.txt: Updated.
* platform/gtk/fast/writing-mode/japanese-ruby-vertical-lr-expected.png: Updated.
* platform/gtk/fast/writing-mode/japanese-ruby-vertical-lr-expected.txt: Updated.
* platform/gtk/fast/writing-mode/japanese-ruby-vertical-rl-expected.png: Updated.
* platform/gtk/fast/writing-mode/japanese-ruby-vertical-rl-expected.txt: Updated.
* platform/gtk/fast/writing-mode/text-orientation-basic-expected.png: Updated.
* platform/gtk/fast/writing-mode/text-orientation-basic-expected.txt:
* platform/gtk/fast/writing-mode/vertical-align-table-baseline-expected.png: Updated.
* platform/gtk/fast/writing-mode/vertical-align-table-baseline-expected.txt: Updated.
* platform/gtk/fast/writing-mode/vertical-baseline-alignment-expected.png: Updated.
* platform/gtk/fast/writing-mode/vertical-baseline-alignment-expected.txt: Updated.
* platform/gtk/fast/writing-mode/vertical-font-fallback-expected.png: Updated.
* platform/gtk/fast/writing-mode/vertical-font-fallback-expected.txt: Updated.
2013-11-07 Mario Sanchez Prada <mario.prada@samsung.com>
Unreviewed GTK gardening. Expectations are finally the same for
......
......@@ -8,11 +8,11 @@ layer at (0,0) size 800x302
text run at (0,0) width 690: "This tests horizontal caret movement in vertical writing mode. \"\x{3042}\x{308B}\x{3002}\" and \"\x{540D}\x{524D}\x{306F}\x{307E}\x{3060}\" must be selected."
RenderBlock {DIV} at (0,33) size 66x240
RenderBlock {P} at (16,0) size 34x240
RenderText {#text} at (0,0) size 17x128
text run at (0,0) width 128: "\x{543E}\x{8F29}\x{306F}\x{732B}\x{3067}\x{3042}\x{308B}\x{3002}"
RenderBR {BR} at (0,128) size 17x0
RenderText {#text} at (17,0) size 17x128
text run at (17,0) width 128: "\x{540D}\x{524D}\x{306F}\x{307E}\x{3060}\x{7121}\x{3044}\x{3002}"
RenderText {#text} at (0,0) size 17x136
text run at (0,0) width 136: "\x{543E}\x{8F29}\x{306F}\x{732B}\x{3067}\x{3042}\x{308B}\x{3002}"
RenderBR {BR} at (0,136) size 17x0
RenderText {#text} at (17,0) size 17x136
text run at (17,0) width 136: "\x{540D}\x{524D}\x{306F}\x{307E}\x{3060}\x{7121}\x{3044}\x{3002}"
RenderBlock {PRE} at (0,286) size 784x0
selection start: position 5 of child 0 {#text} of child 1 {P} of child 3 {DIV} of body
selection end: position 5 of child 2 {#text} of child 1 {P} of child 3 {DIV} of body
......@@ -8,11 +8,11 @@ layer at (0,0) size 800x302
text run at (0,0) width 690: "This tests horizontal caret movement in vertical writing mode. \"\x{306F}\x{732B}\x{3067}\x{3042}\x{308B}\x{3002}\" and \"\x{540D}\x{524D}\" must be selected."
RenderBlock {DIV} at (0,33) size 66x240
RenderBlock {P} at (16,0) size 34x240
RenderText {#text} at (0,0) size 17x128
text run at (0,0) width 128: "\x{543E}\x{8F29}\x{306F}\x{732B}\x{3067}\x{3042}\x{308B}\x{3002}"
RenderBR {BR} at (0,128) size 17x0
RenderText {#text} at (17,0) size 17x128
text run at (17,0) width 128: "\x{540D}\x{524D}\x{306F}\x{307E}\x{3060}\x{7121}\x{3044}\x{3002}"
RenderText {#text} at (0,0) size 17x136
text run at (0,0) width 136: "\x{543E}\x{8F29}\x{306F}\x{732B}\x{3067}\x{3042}\x{308B}\x{3002}"
RenderBR {BR} at (0,136) size 17x0
RenderText {#text} at (17,0) size 17x136
text run at (17,0) width 136: "\x{540D}\x{524D}\x{306F}\x{307E}\x{3060}\x{7121}\x{3044}\x{3002}"
RenderBlock {PRE} at (0,286) size 784x0
selection start: position 2 of child 0 {#text} of child 1 {P} of child 3 {DIV} of body
selection end: position 2 of child 2 {#text} of child 1 {P} of child 3 {DIV} of body
......@@ -8,11 +8,11 @@ layer at (0,0) size 800x302
text run at (0,0) width 690: "This tests horizontal caret movement in vertical writing mode. \"\x{3042}\x{308B}\x{3002}\" and \"\x{540D}\x{524D}\x{306F}\x{307E}\x{3060}\" must be selected."
RenderBlock {DIV} at (0,33) size 66x240
RenderBlock {P} at (16,0) size 34x240
RenderText {#text} at (0,0) size 17x128
text run at (0,0) width 128: "\x{543E}\x{8F29}\x{306F}\x{732B}\x{3067}\x{3042}\x{308B}\x{3002}"
RenderBR {BR} at (0,128) size 17x0
RenderText {#text} at (17,0) size 17x128
text run at (17,0) width 128: "\x{540D}\x{524D}\x{306F}\x{307E}\x{3060}\x{7121}\x{3044}\x{3002}"
RenderText {#text} at (0,0) size 17x136
text run at (0,0) width 136: "\x{543E}\x{8F29}\x{306F}\x{732B}\x{3067}\x{3042}\x{308B}\x{3002}"
RenderBR {BR} at (0,136) size 17x0
RenderText {#text} at (17,0) size 17x136
text run at (17,0) width 136: "\x{540D}\x{524D}\x{306F}\x{307E}\x{3060}\x{7121}\x{3044}\x{3002}"
RenderBlock {PRE} at (0,286) size 784x0
selection start: position 5 of child 0 {#text} of child 1 {P} of child 3 {DIV} of body
selection end: position 5 of child 2 {#text} of child 1 {P} of child 3 {DIV} of body
......@@ -8,11 +8,11 @@ layer at (0,0) size 800x302
text run at (0,0) width 690: "This tests horizontal caret movement in vertical writing mode. \"\x{3042}\x{308B}\x{3002}\" and \"\x{540D}\x{524D}\x{306F}\x{307E}\x{3060}\" must be selected."
RenderBlock {DIV} at (0,33) size 82x240
RenderBlock {P} at (16,0) size 17x240
RenderText {#text} at (0,0) size 17x128
text run at (0,0) width 128: "\x{543E}\x{8F29}\x{306F}\x{732B}\x{3067}\x{3042}\x{308B}\x{3002}"
RenderText {#text} at (0,0) size 17x136
text run at (0,0) width 136: "\x{543E}\x{8F29}\x{306F}\x{732B}\x{3067}\x{3042}\x{308B}\x{3002}"
RenderBlock {P} at (49,0) size 17x240
RenderText {#text} at (0,0) size 17x128
text run at (0,0) width 128: "\x{540D}\x{524D}\x{306F}\x{307E}\x{3060}\x{7121}\x{3044}\x{3002}"
RenderText {#text} at (0,0) size 17x136
text run at (0,0) width 136: "\x{540D}\x{524D}\x{306F}\x{307E}\x{3060}\x{7121}\x{3044}\x{3002}"
RenderBlock {PRE} at (0,286) size 784x0
selection start: position 5 of child 0 {#text} of child 1 {P} of child 3 {DIV} of body
selection end: position 5 of child 0 {#text} of child 3 {P} of child 3 {DIV} of body
layer at (0,0) size 800x600
RenderView at (0,0) size 800x600
layer at (0,0) size 800x192
RenderBlock {HTML} at (0,0) size 800x192
RenderBody {BODY} at (8,16) size 784x163
layer at (0,0) size 800x200
RenderBlock {HTML} at (0,0) size 800x200
RenderBody {BODY} at (8,16) size 784x171
RenderBlock {P} at (0,0) size 784x17
RenderText {#text} at (0,0) size 690x17
text run at (0,0) width 690: "This tests horizontal caret movement in vertical writing mode. \"\x{3042}\x{308B}\x{3002}\" and \"\x{540D}\x{524D}\x{306F}\x{307E}\x{3060}\" must be selected."
RenderBlock {DIV} at (0,33) size 66x130
RenderBlock {P} at (16,0) size 34x130
RenderText {#text} at (0,0) size 34x128
text run at (0,0) width 128: "\x{543E}\x{8F29}\x{306F}\x{732B}\x{3067}\x{3042}\x{308B}\x{3002}"
text run at (17,0) width 128: "\x{540D}\x{524D}\x{306F}\x{307E}\x{3060}\x{7121}\x{3044}\x{3002}"
RenderBlock (anonymous) at (0,163) size 784x0
RenderBlock {PRE} at (0,176) size 784x0
RenderBlock {DIV} at (0,33) size 66x138
RenderBlock {P} at (16,0) size 34x138
RenderText {#text} at (0,0) size 34x136
text run at (0,0) width 136: "\x{543E}\x{8F29}\x{306F}\x{732B}\x{3067}\x{3042}\x{308B}\x{3002}"
text run at (17,0) width 136: "\x{540D}\x{524D}\x{306F}\x{307E}\x{3060}\x{7121}\x{3044}\x{3002}"
RenderBlock (anonymous) at (0,171) size 784x0
RenderBlock {PRE} at (0,184) size 784x0
selection start: position 5 of child 0 {#text} of child 1 {P} of child 3 {DIV} of body
selection end: position 13 of child 0 {#text} of child 1 {P} of child 3 {DIV} of body
......@@ -8,11 +8,11 @@ layer at (0,0) size 800x302
text run at (0,0) width 690: "This tests horizontal caret movement in vertical writing mode. \"\x{306F}\x{732B}\x{3067}\x{3042}\x{308B}\x{3002}\" and \"\x{540D}\x{524D}\" must be selected."
RenderBlock {DIV} at (0,33) size 66x240
RenderBlock {P} at (16,0) size 34x240
RenderText {#text} at (0,0) size 17x128
text run at (0,0) width 128: "\x{543E}\x{8F29}\x{306F}\x{732B}\x{3067}\x{3042}\x{308B}\x{3002}"
RenderBR {BR} at (0,128) size 17x0
RenderText {#text} at (17,0) size 17x128
text run at (17,0) width 128: "\x{540D}\x{524D}\x{306F}\x{307E}\x{3060}\x{7121}\x{3044}\x{3002}"
RenderText {#text} at (0,0) size 17x136
text run at (0,0) width 136: "\x{543E}\x{8F29}\x{306F}\x{732B}\x{3067}\x{3042}\x{308B}\x{3002}"
RenderBR {BR} at (0,136) size 17x0
RenderText {#text} at (17,0) size 17x136
text run at (17,0) width 136: "\x{540D}\x{524D}\x{306F}\x{307E}\x{3060}\x{7121}\x{3044}\x{3002}"
RenderBlock {PRE} at (0,286) size 784x0
selection start: position 2 of child 0 {#text} of child 1 {P} of child 3 {DIV} of body
selection end: position 2 of child 2 {#text} of child 1 {P} of child 3 {DIV} of body
......@@ -8,11 +8,11 @@ layer at (0,0) size 800x302
text run at (0,0) width 690: "This tests horizontal caret movement in vertical writing mode. \"\x{306F}\x{732B}\x{3067}\x{3042}\x{308B}\x{3002}\" and \"\x{540D}\x{524D}\" must be selected."
RenderBlock {DIV} at (0,33) size 82x240
RenderBlock {P} at (16,0) size 17x240
RenderText {#text} at (0,0) size 17x128
text run at (0,0) width 128: "\x{543E}\x{8F29}\x{306F}\x{732B}\x{3067}\x{3042}\x{308B}\x{3002}"
RenderText {#text} at (0,0) size 17x136
text run at (0,0) width 136: "\x{543E}\x{8F29}\x{306F}\x{732B}\x{3067}\x{3042}\x{308B}\x{3002}"
RenderBlock {P} at (49,0) size 17x240
RenderText {#text} at (0,0) size 17x128
text run at (0,0) width 128: "\x{540D}\x{524D}\x{306F}\x{307E}\x{3060}\x{7121}\x{3044}\x{3002}"
RenderText {#text} at (0,0) size 17x136
text run at (0,0) width 136: "\x{540D}\x{524D}\x{306F}\x{307E}\x{3060}\x{7121}\x{3044}\x{3002}"
RenderBlock {PRE} at (0,286) size 784x0
selection start: position 2 of child 0 {#text} of child 1 {P} of child 3 {DIV} of body
selection end: position 2 of child 0 {#text} of child 3 {P} of child 3 {DIV} of body
layer at (0,0) size 800x600
RenderView at (0,0) size 800x600
layer at (0,0) size 800x192
RenderBlock {HTML} at (0,0) size 800x192
RenderBody {BODY} at (8,16) size 784x163
layer at (0,0) size 800x200
RenderBlock {HTML} at (0,0) size 800x200
RenderBody {BODY} at (8,16) size 784x171
RenderBlock {P} at (0,0) size 784x17
RenderText {#text} at (0,0) size 690x17
text run at (0,0) width 690: "This tests horizontal caret movement in vertical writing mode. \"\x{306F}\x{732B}\x{3067}\x{3042}\x{308B}\x{3002}\" and \"\x{540D}\x{524D}\" must be selected."
RenderBlock {DIV} at (0,33) size 66x130
RenderBlock {P} at (16,0) size 34x130
RenderText {#text} at (0,0) size 34x128
text run at (0,0) width 128: "\x{543E}\x{8F29}\x{306F}\x{732B}\x{3067}\x{3042}\x{308B}\x{3002}"
text run at (17,0) width 128: "\x{540D}\x{524D}\x{306F}\x{307E}\x{3060}\x{7121}\x{3044}\x{3002}"
RenderBlock (anonymous) at (0,163) size 784x0
RenderBlock {PRE} at (0,176) size 784x0
RenderBlock {DIV} at (0,33) size 66x138
RenderBlock {P} at (16,0) size 34x138
RenderText {#text} at (0,0) size 34x136
text run at (0,0) width 136: "\x{543E}\x{8F29}\x{306F}\x{732B}\x{3067}\x{3042}\x{308B}\x{3002}"
text run at (17,0) width 136: "\x{540D}\x{524D}\x{306F}\x{307E}\x{3060}\x{7121}\x{3044}\x{3002}"
RenderBlock (anonymous) at (0,171) size 784x0
RenderBlock {PRE} at (0,184) size 784x0
selection start: position 2 of child 0 {#text} of child 1 {P} of child 3 {DIV} of body
selection end: position 10 of child 0 {#text} of child 1 {P} of child 3 {DIV} of body
......@@ -7,18 +7,18 @@ layer at (0,0) size 800x600
RenderText {#text} at (0,0) size 17x225
text run at (0,0) width 225: "These two lines should be identical:"
RenderBlock {DIV} at (33,0) size 26x584
RenderText {#text} at (0,0) size 26x274
text run at (0,0) width 274: "\x{5E0C}\x{8584}\x{5316}\x{5F8C}\x{306E}1\x{682A}\x{5F53}\x{308A}\x{5229}\x{76CA}\x{304C}"
RenderText {#text} at (0,0) size 26x299
text run at (0,0) width 299: "\x{5E0C}\x{8584}\x{5316}\x{5F8C}\x{306E}1\x{682A}\x{5F53}\x{308A}\x{5229}\x{76CA}\x{304C}"
RenderInline {SPAN} at (0,0) size 26x54
RenderCombineText {#text} at (0,274) size 26x54
text run at (0,274) width 54: "3.667"
RenderText {#text} at (0,328) size 26x144
text run at (0,328) width 144: "\x{30C9}\x{30EB}\x{3067}\x{3057}\x{305F}\x{3002}"
RenderCombineText {#text} at (0,299) size 26x54
text run at (0,299) width 54: "3.667"
RenderText {#text} at (0,353) size 26x150
text run at (0,353) width 150: "\x{30C9}\x{30EB}\x{3067}\x{3057}\x{305F}\x{3002}"
RenderBlock {DIV} at (59,0) size 26x584
RenderText {#text} at (0,0) size 26x274
text run at (0,0) width 274: "\x{5E0C}\x{8584}\x{5316}\x{5F8C}\x{306E}1\x{682A}\x{5F53}\x{308A}\x{5229}\x{76CA}\x{304C}"
RenderText {#text} at (0,0) size 26x299
text run at (0,0) width 299: "\x{5E0C}\x{8584}\x{5316}\x{5F8C}\x{306E}1\x{682A}\x{5F53}\x{308A}\x{5229}\x{76CA}\x{304C}"
RenderInline {SPAN} at (0,0) size 26x54
RenderText {#text} at (0,274) size 26x54
text run at (0,274) width 54: "3.667"
RenderText {#text} at (0,328) size 26x144
text run at (0,328) width 144: "\x{30C9}\x{30EB}\x{3067}\x{3057}\x{305F}\x{3002}"
RenderText {#text} at (0,299) size 26x54
text run at (0,299) width 54: "3.667"
RenderText {#text} at (0,353) size 26x150
text run at (0,353) width 150: "\x{30C9}\x{30EB}\x{3067}\x{3057}\x{305F}\x{3002}"
......@@ -25,22 +25,22 @@ layer at (0,0) size 800x600
RenderText {#text} at (0,0) size 0x0
RenderBlock {DIV} at (0,190) size 206x292
RenderBlock {P} at (16,0) size 79x292
RenderRuby (inline) {RUBY} at (0,0) size 53x144
RenderRubyRun (anonymous) at (26,0) size 53x144
RenderRubyText {RT} at (-26,0) size 26x144
RenderText {#text} at (0,0) size 26x144
text run at (0,0) width 144: "\x{304D}\x{3069}\x{3046}\x{305F}\x{3044}\x{304D}"
RenderRubyBase (anonymous) at (0,0) size 53x144
RenderText {#text} at (0,24) size 53x96
text run at (0,24) width 96: "\x{653B}\x{6BBB}"
RenderRuby (inline) {RUBY} at (0,0) size 53x150
RenderRubyRun (anonymous) at (26,0) size 53x150
RenderRubyText {RT} at (-26,0) size 26x150
RenderText {#text} at (0,0) size 26x150
text run at (0,0) width 150: "\x{304D}\x{3069}\x{3046}\x{305F}\x{3044}\x{304D}"
RenderRubyBase (anonymous) at (0,0) size 53x150
RenderText {#text} at (0,26) size 53x98
text run at (0,26) width 98: "\x{653B}\x{6BBB}"
RenderText {#text} at (0,0) size 0x0
RenderBlock {P} at (111,0) size 79x292
RenderRuby (inline) {RUBY} at (0,0) size 53x192
RenderRubyRun (anonymous) at (26,0) size 53x192
RenderRubyText {RT} at (-26,0) size 26x192
RenderText {#text} at (0,0) size 26x192
text run at (0,0) width 192: "\x{304D}\x{3069}\x{3046}\x{305F}\x{3044}\x{304D}\x{3069}\x{3046}"
RenderRubyBase (anonymous) at (0,0) size 53x192
RenderText {#text} at (0,24) size 53x144
text run at (0,24) width 144: "\x{6A5F}\x{52D5}\x{968A}"
RenderRuby (inline) {RUBY} at (0,0) size 53x200
RenderRubyRun (anonymous) at (26,0) size 53x200
RenderRubyText {RT} at (-26,0) size 26x200
RenderText {#text} at (0,0) size 26x200
text run at (0,0) width 200: "\x{304D}\x{3069}\x{3046}\x{305F}\x{3044}\x{304D}\x{3069}\x{3046}"
RenderRubyBase (anonymous) at (0,0) size 53x200
RenderText {#text} at (0,26) size 53x148
text run at (0,26) width 147: "\x{6A5F}\x{52D5}\x{968A}"
RenderText {#text} at (0,0) size 0x0
......@@ -3,33 +3,33 @@ layer at (0,0) size 800x600
layer at (0,0) size 800x600
RenderBlock {HTML} at (0,0) size 800x600
RenderBody {BODY} at (8,8) size 744x584
RenderBlock {P} at (0,0) size 81x584
RenderInline {SPAN} at (0,0) size 53x216
RenderText {#text} at (28,0) size 53x96
text run at (28,0) width 96: "\x{6587}\x{5B57}"
RenderBlock {P} at (0,0) size 109x584
RenderInline {SPAN} at (0,0) size 53x219
RenderText {#text} at (56,0) size 53x98
text run at (56,0) width 98: "\x{6587}\x{5B57}"
RenderInline {SPAN} at (0,0) size 53x72
RenderCombineText {#text} at (28,96) size 53x72
text run at (28,96) width 72: "900"
RenderText {#text} at (28,168) size 53x48
text run at (28,168) width 48: "\x{5E74}"
RenderCombineText {#text} at (56,98) size 53x72
text run at (56,98) width 72: "900"
RenderText {#text} at (56,170) size 53x49
text run at (56,170) width 49: "\x{5E74}"
RenderText {#text} at (0,0) size 0x0
RenderBlock {P} at (129,0) size 79x584
RenderInline {SPAN} at (0,0) size 53x216
RenderText {#text} at (26,0) size 53x96
text run at (26,0) width 96: "\x{6587}\x{5B57}"
RenderBlock {P} at (157,0) size 79x584
RenderInline {SPAN} at (0,0) size 53x219
RenderText {#text} at (26,0) size 53x98
text run at (26,0) width 98: "\x{6587}\x{5B57}"
RenderInline {SPAN} at (0,0) size 53x72
RenderCombineText {#text} at (26,96) size 53x72
text run at (26,96) width 72: "900"
RenderText {#text} at (26,168) size 53x48
text run at (26,168) width 48: "\x{5E74}"
RenderCombineText {#text} at (26,98) size 53x72
text run at (26,98) width 72: "900"
RenderText {#text} at (26,170) size 53x49
text run at (26,170) width 49: "\x{5E74}"
RenderText {#text} at (0,0) size 0x0
RenderBlock {P} at (256,0) size 78x584
RenderInline {SPAN} at (0,0) size 53x216
RenderText {#text} at (25,0) size 53x96
text run at (25,0) width 96: "\x{6587}\x{5B57}"
RenderBlock {P} at (284,0) size 102x584
RenderInline {SPAN} at (0,0) size 53x219
RenderText {#text} at (49,0) size 53x98
text run at (49,0) width 98: "\x{6587}\x{5B57}"
RenderInline {SPAN} at (0,0) size 53x72
RenderCombineText {#text} at (25,96) size 53x72
text run at (25,96) width 72: "900"
RenderText {#text} at (25,168) size 53x48
text run at (25,168) width 48: "\x{5E74}"
RenderCombineText {#text} at (49,98) size 53x72
text run at (49,98) width 72: "900"
RenderText {#text} at (49,170) size 53x49
text run at (49,170) width 49: "\x{5E74}"
RenderText {#text} at (0,0) size 0x0
layer at (0,0) size 800x600
RenderView at (0,0) size 800x600
layer at (0,0) size 800x516
RenderBlock {HTML} at (0,0) size 800x516
RenderBody {BODY} at (8,16) size 784x492
layer at (0,0) size 800x524
RenderBlock {HTML} at (0,0) size 800x524
RenderBody {BODY} at (8,16) size 784x500
RenderBlock {P} at (0,0) size 784x17
RenderText {#text} at (0,0) size 110x17
text run at (0,0) width 110: "Simple text path: "
RenderInline {SPAN} at (0,0) size 163x17
RenderText {#text} at (110,0) size 163x17
text run at (110,0) width 163: "string\x{300C}\x{3042}\x{3001}\x{5909}\x{3063}\x{FF01}\x{300D}\x{3002}"
RenderBlock (anonymous) at (0,33) size 784x200
RenderBlock {SPAN} at (0,0) size 17x163
RenderText {#text} at (0,0) size 17x163
text run at (0,0) width 163: "string\x{300C}\x{3042}\x{3001}\x{5909}\x{3063}\x{FF01}\x{300D}\x{3002}"
RenderBR {BR} at (17,149) size 0x17
RenderBlock (anonymous) at (0,33) size 784x208
RenderBlock {SPAN} at (0,0) size 17x171
RenderText {#text} at (0,0) size 17x171
text run at (0,0) width 171: "string\x{300C}\x{3042}\x{3001}\x{5909}\x{3063}\x{FF01}\x{300D}\x{3002}"
RenderBR {BR} at (17,157) size 0x17
RenderInline {SPAN} at (0,0) size 220x17
RenderText {#text} at (0,166) size 220x17
text run at (0,166) width 220: "\x{90CA}\x{5916}\x{306E}\x{304E}\x{3089}\x{304E}\x{3089}\x{3072}\x{304B}\x{308B}\x{8349}\x{306E}\x{6CE2}\x{3002}"
RenderBR {BR} at (220,166) size 0x17
RenderText {#text} at (0,174) size 220x17
text run at (0,174) width 220: "\x{90CA}\x{5916}\x{306E}\x{304E}\x{3089}\x{304E}\x{3089}\x{3072}\x{304B}\x{308B}\x{8349}\x{306E}\x{6CE2}\x{3002}"
RenderBR {BR} at (220,174) size 0x17
RenderInline {SPAN} at (0,0) size 314x17
RenderText {#text} at (0,183) size 314x17
text run at (0,183) width 314: "ABCDEFGHIJKLM abcdefghijklm 1234567890"
RenderBR {BR} at (314,183) size 0x17
RenderBlock {HR} at (0,241) size 784x2 [border: (1px inset #000000)]
RenderBlock {P} at (0,259) size 784x17
RenderText {#text} at (0,191) size 314x17
text run at (0,191) width 314: "ABCDEFGHIJKLM abcdefghijklm 1234567890"
RenderBR {BR} at (314,191) size 0x17
RenderBlock {HR} at (0,249) size 784x2 [border: (1px inset #000000)]
RenderBlock {P} at (0,267) size 784x17
RenderText {#text} at (0,0) size 124x17
text run at (0,0) width 124: "Complex text path: "
RenderInline {SPAN} at (0,0) size 163x17
RenderText {#text} at (124,0) size 163x17
text run at (124,0) width 163: "string\x{300C}\x{3042}\x{3001}\x{5909}\x{3063}\x{FF01}\x{300D}\x{3002}"
RenderBlock (anonymous) at (0,292) size 784x200
RenderBlock (anonymous) at (0,300) size 784x200
RenderBlock {SPAN} at (0,0) size 17x163
RenderText {#text} at (0,0) size 17x163
text run at (0,0) width 163: "string\x{300C}\x{3042}\x{3001}\x{5909}\x{3063}\x{FF01}\x{300D}\x{3002}"
......
layer at (0,0) size 800x600
RenderView at (0,0) size 800x600
layer at (0,0) size 800x600
RenderBlock {HTML} at (0,0) size 800x600
RenderBody {BODY} at (8,8) size 784x584
RenderBlock {DIV} at (0,0) size 784x26
layer at (0,0) size 785x616
RenderView at (0,0) size 785x600
layer at (0,0) size 785x616
RenderBlock {HTML} at (0,0) size 785x616
RenderBody {BODY} at (8,8) size 769x600
RenderBlock {DIV} at (0,0) size 769x26
RenderText {#text} at (0,0) size 144x26
text run at (0,0) width 144: "\x{653B}\x{6BBB}\x{2307}\x{30FC}\x{FF1C}\x{FF1D}4"
RenderBlock {DIV} at (0,26) size 104x164
RenderBlock {DIV} at (0,10) size 26x144
RenderBlock {DIV} at (0,26) size 104x198
RenderBlock {DIV} at (0,10) size 26x178
RenderText {#text} at (0,0) size 26x165
text run at (0,0) width 165: "\x{653B}\x{6BBB}\x{2307}\x{30FC}\x{FF1C}\x{FF1D}4"
RenderBlock {DIV} at (26,10) size 26x178 [color=#0000FF]
RenderText {#text} at (0,0) size 26x178
text run at (0,0) width 178: "\x{653B}\x{6BBB}\x{2307}\x{30FC}\x{FF1C}\x{FF1D}4"
RenderBlock {DIV} at (52,10) size 26x178 [color=#008080]
RenderText {#text} at (0,0) size 26x144
text run at (0,0) width 144: "\x{653B}\x{6BBB}\x{2307}\x{30FC}\x{FF1C}\x{FF1D}4"
RenderBlock {DIV} at (26,10) size 26x144 [color=#0000FF]
RenderBlock {DIV} at (78,10) size 26x178 [color=#A52A2A]
RenderText {#text} at (0,0) size 26x144
text run at (0,0) width 144: "\x{653B}\x{6BBB}\x{2307}\x{30FC}\x{FF1C}\x{FF1D}4"
RenderBlock {DIV} at (52,10) size 26x144 [color=#008080]
RenderBlock {DIV} at (0,224) size 104x198
RenderBlock {DIV} at (0,10) size 26x178
RenderText {#text} at (0,0) size 26x165
text run at (0,0) width 165: "\x{653B}\x{6BBB}\x{2307}\x{30FC}\x{FF1C}\x{FF1D}4"
RenderBlock {DIV} at (26,10) size 26x178 [color=#0000FF]
RenderText {#text} at (0,0) size 26x178
text run at (0,0) width 178: "\x{653B}\x{6BBB}\x{2307}\x{30FC}\x{FF1C}\x{FF1D}4"
RenderBlock {DIV} at (52,10) size 26x178 [color=#008080]
RenderText {#text} at (0,0) size 26x144
text run at (0,0) width 144: "\x{653B}\x{6BBB}\x{2307}\x{30FC}\x{FF1C}\x{FF1D}4"
RenderBlock {DIV} at (78,10) size 26x144 [color=#A52A2A]
RenderBlock {DIV} at (78,10) size 26x178 [color=#A52A2A]
RenderText {#text} at (0,0) size 26x144
text run at (0,0) width 144: "\x{653B}\x{6BBB}\x{2307}\x{30FC}\x{FF1C}\x{FF1D}4"
RenderBlock {DIV} at (0,190) size 104x164
RenderBlock {DIV} at (0,10) size 26x144
RenderText {#text} at (0,0) size 26x144
text run at (0,0) width 144: "\x{653B}\x{6BBB}\x{2307}\x{30FC}\x{FF1C}\x{FF1D}4"