[pango/pango2: 89/201] Regenerate layout tests
- From: Matthias Clasen <matthiasc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [pango/pango2: 89/201] Regenerate layout tests
- Date: Sat, 11 Jun 2022 02:22:29 +0000 (UTC)
commit 6ce9d6d66b6725543722fcdba6ea9321d9448499
Author: Matthias Clasen <mclasen redhat com>
Date: Sat Jun 4 14:54:35 2022 -0400
Regenerate layout tests
tests/layouts/aaa.layout | 560 +++---
tests/layouts/arabic-format.layout | 124 +-
tests/layouts/bratwurst.layout | 356 ++--
tests/layouts/bratwurst2.layout | 310 +--
tests/layouts/bratwurst3.layout | 559 +++---
tests/layouts/bratwurst4.layout | 417 ++--
tests/layouts/effigy.layout | 307 +--
tests/layouts/kebab.layout | 437 ++--
tests/layouts/letterspacing.layout | 198 +-
tests/layouts/no-space.layout | 230 +--
tests/layouts/tab-assert.layout | 288 ++-
tests/layouts/tab-crash.layout | 2714 +++++++++++++------------
tests/layouts/tabs-nowrap.layout | 633 +++---
tests/layouts/tabs.layout | 3240 ++++++++++++++----------------
tests/layouts/valid-1.layout | 1244 ++++++------
tests/layouts/valid-10.layout | 689 ++++---
tests/layouts/valid-11.layout | 748 ++++---
tests/layouts/valid-12.layout | 1191 +++++------
tests/layouts/valid-13.layout | 1282 ++++++------
tests/layouts/valid-14.layout | 925 ++++-----
tests/layouts/valid-15.layout | 1977 +++++++++---------
tests/layouts/valid-16.layout | 1977 +++++++++---------
tests/layouts/valid-17.layout | 788 ++++----
tests/layouts/valid-18.layout | 1421 ++++++-------
tests/layouts/valid-19.layout | 1084 +++++-----
tests/layouts/valid-2.layout | 1076 +++++-----
tests/layouts/valid-20.layout | 344 ++--
tests/layouts/valid-21.layout | 266 +--
tests/layouts/valid-22.layout | 1116 +++++------
tests/layouts/valid-3.layout | 340 ++--
tests/layouts/valid-4.layout | 3848 ++++++++++++++++++------------------
tests/layouts/valid-5.layout | 3491 ++++++++++++++++----------------
tests/layouts/valid-6.layout | 694 ++++---
tests/layouts/valid-7.layout | 1128 ++++++-----
tests/layouts/valid-8.layout | 701 ++++---
tests/layouts/valid-9.layout | 929 ++++-----
tests/layouts/vertical.layout | 436 ++--
37 files changed, 18755 insertions(+), 19313 deletions(-)
---
diff --git a/tests/layouts/aaa.layout b/tests/layouts/aaa.layout
index 182cfdea..a975b07e 100644
--- a/tests/layouts/aaa.layout
+++ b/tests/layouts/aaa.layout
@@ -19,276 +19,332 @@
"wrap" : "char",
"width" : 0,
"line-spacing" : 1.2999999523162842,
+ "log-attrs" : [
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-start" : true,
+ "sentence-boundary" : true,
+ "sentence-start" : true,
+ "backspace-deletes-character" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "word-end" : true,
+ "sentence-end" : true,
+ "expandable-space" : true,
+ "word-boundary" : true
+ },
+ {
+ "line-break" : true,
+ "mandatory-break" : true,
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "sentence-boundary" : true,
+ "word-boundary" : true
+ }
+ ],
"output" : {
- "is-wrapped" : true,
- "is-ellipsized" : false,
+ "wrapped" : true,
+ "ellipsized" : false,
+ "hypenated" : true,
"unknown-glyphs" : 0,
"width" : 53248,
- "height" : 318464,
- "log-attrs" : [
- {
- "char-break" : true,
- "cursor-position" : true,
- "word-start" : true,
- "sentence-boundary" : true,
- "sentence-start" : true,
- "backspace-deletes-character" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "word-end" : true,
- "sentence-end" : true,
- "expandable-space" : true,
- "word-boundary" : true
- },
- {
- "line-break" : true,
- "mandatory-break" : true,
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "sentence-boundary" : true,
- "word-boundary" : true
- }
- ],
+ "height" : 323792,
"lines" : [
{
- "start-index" : 0,
- "length" : 1,
- "paragraph-start" : true,
- "direction" : "ltr",
- "runs" : [
- {
- "offset" : 0,
- "length" : 1,
- "text" : "a",
- "bidi-level" : 0,
- "gravity" : "south",
- "language" : "en-us",
- "script" : "Latn",
- "font" : {
- "description" : "DejaVu Sans Mono 32",
- "checksum" : "84c5467cadd1f6f23db0d9fbb6377e0d301334d3b5f36e6d5acebd34d0857d3a",
- "matrix" : [
- 1,
- -0,
- -0,
- 1,
- 0,
- 0
- ]
- },
- "flags" : 4,
- "y-offset" : 0,
- "start-x-offset" : 0,
- "end-x-offset" : 0,
- "glyphs" : [
- {
- "glyph" : 68,
- "width" : 26624,
- "is-cluster-start" : true,
- "log-cluster" : 0
+ "position" : [
+ 0,
+ 40960
+ ],
+ "line" : {
+ "start-index" : 0,
+ "length" : 1,
+ "start-offset" : 0,
+ "n-chars" : 1,
+ "wrapped" : true,
+ "ellipsized" : false,
+ "hyphenated" : true,
+ "justified" : false,
+ "paragraph-start" : true,
+ "paragraph-end" : false,
+ "direction" : "ltr",
+ "runs" : [
+ {
+ "offset" : 0,
+ "length" : 1,
+ "text" : "a",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "Latn",
+ "font" : {
+ "description" : "DejaVu Sans Mono 32",
+ "checksum" : "84c5467cadd1f6f23db0d9fbb6377e0d301334d3b5f36e6d5acebd34d0857d3a"
},
- {
- "glyph" : 1819,
- "width" : 26624,
- "log-cluster" : 0
- }
- ]
- }
- ]
+ "flags" : 4,
+ "extra-attributes" : [
+ {
+ "type" : "line-height",
+ "value" : 1.2999999523162842
+ }
+ ],
+ "y-offset" : 0,
+ "start-x-offset" : 0,
+ "end-x-offset" : 0,
+ "glyphs" : [
+ {
+ "glyph" : 68,
+ "width" : 26624,
+ "is-cluster-start" : true,
+ "log-cluster" : 0
+ },
+ {
+ "glyph" : 1819,
+ "width" : 26624,
+ "log-cluster" : 0
+ }
+ ]
+ }
+ ]
+ }
},
{
- "start-index" : 1,
- "length" : 1,
- "paragraph-start" : false,
- "direction" : "ltr",
- "runs" : [
- {
- "offset" : 1,
- "length" : 1,
- "text" : "a",
- "bidi-level" : 0,
- "gravity" : "south",
- "language" : "en-us",
- "script" : "Latn",
- "font" : {
- "description" : "DejaVu Sans Mono 32",
- "checksum" : "84c5467cadd1f6f23db0d9fbb6377e0d301334d3b5f36e6d5acebd34d0857d3a",
- "matrix" : [
- 1,
- -0,
- -0,
- 1,
- 0,
- 0
- ]
- },
- "flags" : 4,
- "y-offset" : 0,
- "start-x-offset" : 0,
- "end-x-offset" : 0,
- "glyphs" : [
- {
- "glyph" : 68,
- "width" : 26624,
- "is-cluster-start" : true,
- "log-cluster" : 0
+ "position" : [
+ 0,
+ 108852
+ ],
+ "line" : {
+ "start-index" : 1,
+ "length" : 1,
+ "start-offset" : 1,
+ "n-chars" : 1,
+ "wrapped" : true,
+ "ellipsized" : false,
+ "hyphenated" : true,
+ "justified" : false,
+ "paragraph-start" : false,
+ "paragraph-end" : false,
+ "direction" : "ltr",
+ "runs" : [
+ {
+ "offset" : 1,
+ "length" : 1,
+ "text" : "a",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "Latn",
+ "font" : {
+ "description" : "DejaVu Sans Mono 32",
+ "checksum" : "84c5467cadd1f6f23db0d9fbb6377e0d301334d3b5f36e6d5acebd34d0857d3a"
},
- {
- "glyph" : 1819,
- "width" : 26624,
- "log-cluster" : 0
- }
- ]
- }
- ]
+ "flags" : 4,
+ "extra-attributes" : [
+ {
+ "type" : "line-height",
+ "value" : 1.2999999523162842
+ }
+ ],
+ "y-offset" : 0,
+ "start-x-offset" : 0,
+ "end-x-offset" : 0,
+ "glyphs" : [
+ {
+ "glyph" : 68,
+ "width" : 26624,
+ "is-cluster-start" : true,
+ "log-cluster" : 0
+ },
+ {
+ "glyph" : 1819,
+ "width" : 26624,
+ "log-cluster" : 0
+ }
+ ]
+ }
+ ]
+ }
},
{
- "start-index" : 2,
- "length" : 1,
- "paragraph-start" : false,
- "direction" : "ltr",
- "runs" : [
- {
- "offset" : 2,
- "length" : 1,
- "text" : "a",
- "bidi-level" : 0,
- "gravity" : "south",
- "language" : "en-us",
- "script" : "Latn",
- "font" : {
- "description" : "DejaVu Sans Mono 32",
- "checksum" : "84c5467cadd1f6f23db0d9fbb6377e0d301334d3b5f36e6d5acebd34d0857d3a",
- "matrix" : [
- 1,
- -0,
- -0,
- 1,
- 0,
- 0
- ]
- },
- "flags" : 4,
- "y-offset" : 0,
- "start-x-offset" : 0,
- "end-x-offset" : 0,
- "glyphs" : [
- {
- "glyph" : 68,
- "width" : 26624,
- "is-cluster-start" : true,
- "log-cluster" : 0
+ "position" : [
+ 0,
+ 176744
+ ],
+ "line" : {
+ "start-index" : 2,
+ "length" : 1,
+ "start-offset" : 2,
+ "n-chars" : 1,
+ "wrapped" : true,
+ "ellipsized" : false,
+ "hyphenated" : true,
+ "justified" : false,
+ "paragraph-start" : false,
+ "paragraph-end" : false,
+ "direction" : "ltr",
+ "runs" : [
+ {
+ "offset" : 2,
+ "length" : 1,
+ "text" : "a",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "Latn",
+ "font" : {
+ "description" : "DejaVu Sans Mono 32",
+ "checksum" : "84c5467cadd1f6f23db0d9fbb6377e0d301334d3b5f36e6d5acebd34d0857d3a"
},
- {
- "glyph" : 1819,
- "width" : 26624,
- "log-cluster" : 0
- }
- ]
- }
- ]
+ "flags" : 4,
+ "extra-attributes" : [
+ {
+ "type" : "line-height",
+ "value" : 1.2999999523162842
+ }
+ ],
+ "y-offset" : 0,
+ "start-x-offset" : 0,
+ "end-x-offset" : 0,
+ "glyphs" : [
+ {
+ "glyph" : 68,
+ "width" : 26624,
+ "is-cluster-start" : true,
+ "log-cluster" : 0
+ },
+ {
+ "glyph" : 1819,
+ "width" : 26624,
+ "log-cluster" : 0
+ }
+ ]
+ }
+ ]
+ }
},
{
- "start-index" : 3,
- "length" : 1,
- "paragraph-start" : false,
- "direction" : "ltr",
- "runs" : [
- {
- "offset" : 3,
- "length" : 1,
- "text" : "a",
- "bidi-level" : 0,
- "gravity" : "south",
- "language" : "en-us",
- "script" : "Latn",
- "font" : {
- "description" : "DejaVu Sans Mono 32",
- "checksum" : "84c5467cadd1f6f23db0d9fbb6377e0d301334d3b5f36e6d5acebd34d0857d3a",
- "matrix" : [
- 1,
- -0,
- -0,
- 1,
- 0,
- 0
+ "position" : [
+ 0,
+ 244636
+ ],
+ "line" : {
+ "start-index" : 3,
+ "length" : 1,
+ "start-offset" : 3,
+ "n-chars" : 1,
+ "wrapped" : true,
+ "ellipsized" : false,
+ "hyphenated" : false,
+ "justified" : false,
+ "paragraph-start" : false,
+ "paragraph-end" : false,
+ "direction" : "ltr",
+ "runs" : [
+ {
+ "offset" : 3,
+ "length" : 1,
+ "text" : "a",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "Latn",
+ "font" : {
+ "description" : "DejaVu Sans Mono 32",
+ "checksum" : "84c5467cadd1f6f23db0d9fbb6377e0d301334d3b5f36e6d5acebd34d0857d3a"
+ },
+ "flags" : 0,
+ "extra-attributes" : [
+ {
+ "type" : "line-height",
+ "value" : 1.2999999523162842
+ }
+ ],
+ "y-offset" : 0,
+ "start-x-offset" : 0,
+ "end-x-offset" : 0,
+ "glyphs" : [
+ {
+ "glyph" : 68,
+ "width" : 26624,
+ "is-cluster-start" : true,
+ "log-cluster" : 0
+ }
]
- },
- "flags" : 0,
- "y-offset" : 0,
- "start-x-offset" : 0,
- "end-x-offset" : 0,
- "glyphs" : [
- {
- "glyph" : 68,
- "width" : 26624,
- "is-cluster-start" : true,
- "log-cluster" : 0
- }
- ]
- }
- ]
+ }
+ ]
+ }
},
{
- "start-index" : 4,
- "length" : 1,
- "paragraph-start" : false,
- "direction" : "ltr",
- "runs" : [
- {
- "offset" : 4,
- "length" : 1,
- "text" : " ",
- "bidi-level" : 0,
- "gravity" : "south",
- "language" : "en-us",
- "script" : "Latn",
- "font" : {
- "description" : "DejaVu Sans Mono 32",
- "checksum" : "84c5467cadd1f6f23db0d9fbb6377e0d301334d3b5f36e6d5acebd34d0857d3a",
- "matrix" : [
- 1,
- -0,
- -0,
- 1,
- 0,
- 0
+ "position" : [
+ 0,
+ 312528
+ ],
+ "line" : {
+ "start-index" : 4,
+ "length" : 1,
+ "start-offset" : 4,
+ "n-chars" : 1,
+ "wrapped" : false,
+ "ellipsized" : false,
+ "hyphenated" : false,
+ "justified" : false,
+ "paragraph-start" : false,
+ "paragraph-end" : true,
+ "direction" : "ltr",
+ "runs" : [
+ {
+ "offset" : 4,
+ "length" : 1,
+ "text" : " ",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "Latn",
+ "font" : {
+ "description" : "DejaVu Sans Mono 32",
+ "checksum" : "84c5467cadd1f6f23db0d9fbb6377e0d301334d3b5f36e6d5acebd34d0857d3a"
+ },
+ "flags" : 0,
+ "extra-attributes" : [
+ {
+ "type" : "line-height",
+ "value" : 1.2999999523162842
+ }
+ ],
+ "y-offset" : 0,
+ "start-x-offset" : 0,
+ "end-x-offset" : 0,
+ "glyphs" : [
+ {
+ "glyph" : 3,
+ "width" : 26624,
+ "is-cluster-start" : true,
+ "log-cluster" : 0
+ }
]
- },
- "flags" : 0,
- "y-offset" : 0,
- "start-x-offset" : 0,
- "end-x-offset" : 0,
- "glyphs" : [
- {
- "glyph" : 3,
- "width" : 26624,
- "is-cluster-start" : true,
- "log-cluster" : 0
- }
- ]
- }
- ]
+ }
+ ]
+ }
}
]
}
diff --git a/tests/layouts/arabic-format.layout b/tests/layouts/arabic-format.layout
index 568b5466..d7bbb7a4 100644
--- a/tests/layouts/arabic-format.layout
+++ b/tests/layouts/arabic-format.layout
@@ -17,72 +17,78 @@
"comment" : "Test that font fallback works\nfor visible format characters\nin the Arabic block.",
"text" : "",
"font" : "Sans 32",
+ "log-attrs" : [
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "sentence-boundary" : true,
+ "backspace-deletes-character" : true,
+ "word-boundary" : true
+ },
+ {
+ "line-break" : true,
+ "mandatory-break" : true,
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "sentence-boundary" : true,
+ "backspace-deletes-character" : true,
+ "word-boundary" : true
+ }
+ ],
"output" : {
- "is-wrapped" : false,
- "is-ellipsized" : false,
+ "wrapped" : false,
+ "ellipsized" : false,
+ "hypenated" : false,
"unknown-glyphs" : 0,
"width" : 56320,
"height" : 77824,
- "log-attrs" : [
- {
- "char-break" : true,
- "cursor-position" : true,
- "sentence-boundary" : true,
- "backspace-deletes-character" : true,
- "word-boundary" : true
- },
- {
- "line-break" : true,
- "mandatory-break" : true,
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "sentence-boundary" : true,
- "backspace-deletes-character" : true,
- "word-boundary" : true
- }
- ],
"lines" : [
{
- "start-index" : 0,
- "length" : 2,
- "paragraph-start" : true,
- "direction" : "ltr",
- "runs" : [
- {
- "offset" : 0,
- "length" : 2,
- "text" : "",
- "bidi-level" : 2,
- "gravity" : "south",
- "language" : "en-us",
- "script" : "Zyyy",
- "font" : {
- "description" : "Amiri 32",
- "checksum" : "d5e6374130d6df09e66f80f0bbcb7262112584ebadb861f0a412a21cc742a5dd",
- "matrix" : [
- 1,
- -0,
- -0,
- 1,
- 0,
- 0
+ "position" : [
+ 0,
+ 49152
+ ],
+ "line" : {
+ "start-index" : 0,
+ "length" : 2,
+ "start-offset" : 0,
+ "n-chars" : 1,
+ "wrapped" : false,
+ "ellipsized" : false,
+ "hyphenated" : false,
+ "justified" : false,
+ "paragraph-start" : true,
+ "paragraph-end" : true,
+ "direction" : "ltr",
+ "runs" : [
+ {
+ "offset" : 0,
+ "length" : 2,
+ "text" : "",
+ "bidi-level" : 2,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "Zyyy",
+ "font" : {
+ "description" : "Amiri 32",
+ "checksum" : "d5e6374130d6df09e66f80f0bbcb7262112584ebadb861f0a412a21cc742a5dd"
+ },
+ "flags" : 0,
+ "y-offset" : 0,
+ "start-x-offset" : 0,
+ "end-x-offset" : 0,
+ "glyphs" : [
+ {
+ "glyph" : 1,
+ "width" : 56320,
+ "is-cluster-start" : true,
+ "log-cluster" : 0
+ }
]
- },
- "flags" : 0,
- "y-offset" : 0,
- "start-x-offset" : 0,
- "end-x-offset" : 0,
- "glyphs" : [
- {
- "glyph" : 1,
- "width" : 56320,
- "is-cluster-start" : true,
- "log-cluster" : 0
- }
- ]
- }
- ]
+ }
+ ]
+ }
}
]
}
diff --git a/tests/layouts/bratwurst.layout b/tests/layouts/bratwurst.layout
index cb3be43d..fb218cd9 100644
--- a/tests/layouts/bratwurst.layout
+++ b/tests/layouts/bratwurst.layout
@@ -26,196 +26,194 @@
],
"font" : "Cantarell Bold 32",
"width" : 87040,
+ "log-attrs" : [
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-start" : true,
+ "sentence-boundary" : true,
+ "sentence-start" : true,
+ "backspace-deletes-character" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "line-break" : true,
+ "mandatory-break" : true,
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "word-end" : true,
+ "sentence-boundary" : true,
+ "sentence-end" : true,
+ "word-boundary" : true
+ }
+ ],
"output" : {
- "is-wrapped" : false,
- "is-ellipsized" : false,
+ "wrapped" : false,
+ "ellipsized" : false,
+ "hypenated" : false,
"unknown-glyphs" : 0,
"width" : 200704,
"height" : 53248,
- "log-attrs" : [
- {
- "char-break" : true,
- "cursor-position" : true,
- "word-start" : true,
- "sentence-boundary" : true,
- "sentence-start" : true,
- "backspace-deletes-character" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "line-break" : true,
- "mandatory-break" : true,
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "word-end" : true,
- "sentence-boundary" : true,
- "sentence-end" : true,
- "word-boundary" : true
- }
- ],
"lines" : [
{
- "start-index" : 0,
- "length" : 9,
- "paragraph-start" : true,
- "direction" : "ltr",
- "runs" : [
- {
- "offset" : 0,
- "length" : 4,
- "text" : "Brat",
- "bidi-level" : 0,
- "gravity" : "south",
- "language" : "en-us",
- "script" : "Latn",
- "font" : {
- "description" : "Cantarell Bold 32",
- "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
- "variations" : {
- "wght" : 8374
+ "position" : [
+ 0,
+ 43008
+ ],
+ "line" : {
+ "start-index" : 0,
+ "length" : 9,
+ "start-offset" : 0,
+ "n-chars" : 9,
+ "wrapped" : false,
+ "ellipsized" : false,
+ "hyphenated" : false,
+ "justified" : false,
+ "paragraph-start" : true,
+ "paragraph-end" : true,
+ "direction" : "ltr",
+ "runs" : [
+ {
+ "offset" : 0,
+ "length" : 4,
+ "text" : "Brat",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "Latn",
+ "font" : {
+ "description" : "Cantarell Bold 32",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 8374
+ }
},
- "matrix" : [
- 1,
- -0,
- -0,
- 1,
- 0,
- 0
+ "flags" : 0,
+ "y-offset" : 0,
+ "start-x-offset" : 0,
+ "end-x-offset" : 0,
+ "glyphs" : [
+ {
+ "glyph" : 29,
+ "width" : 28672,
+ "is-cluster-start" : true,
+ "log-cluster" : 0
+ },
+ {
+ "glyph" : 409,
+ "width" : 17408,
+ "is-cluster-start" : true,
+ "log-cluster" : 1
+ },
+ {
+ "glyph" : 244,
+ "width" : 23552,
+ "is-cluster-start" : true,
+ "log-cluster" : 2
+ },
+ {
+ "glyph" : 430,
+ "width" : 16384,
+ "is-cluster-start" : true,
+ "log-cluster" : 3
+ }
]
},
- "flags" : 0,
- "y-offset" : 0,
- "start-x-offset" : 0,
- "end-x-offset" : 0,
- "glyphs" : [
- {
- "glyph" : 29,
- "width" : 28672,
- "is-cluster-start" : true,
- "log-cluster" : 0
- },
- {
- "glyph" : 409,
- "width" : 17408,
- "is-cluster-start" : true,
- "log-cluster" : 1
+ {
+ "offset" : 4,
+ "length" : 5,
+ "text" : "wurst",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "Latn",
+ "font" : {
+ "description" : "Cantarell Bold 32",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 8374
+ }
},
- {
- "glyph" : 244,
- "width" : 23552,
- "is-cluster-start" : true,
- "log-cluster" : 2
- },
- {
- "glyph" : 430,
- "width" : 16384,
- "is-cluster-start" : true,
- "log-cluster" : 3
- }
- ]
- },
- {
- "offset" : 4,
- "length" : 5,
- "text" : "wurst",
- "bidi-level" : 0,
- "gravity" : "south",
- "language" : "en-us",
- "script" : "Latn",
- "font" : {
- "description" : "Cantarell Bold 32",
- "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
- "variations" : {
- "wght" : 8374
- },
- "matrix" : [
- 1,
- -0,
- -0,
- 1,
- 0,
- 0
+ "flags" : 0,
+ "y-offset" : 0,
+ "start-x-offset" : 0,
+ "end-x-offset" : 0,
+ "glyphs" : [
+ {
+ "glyph" : 467,
+ "width" : 35840,
+ "is-cluster-start" : true,
+ "log-cluster" : 0
+ },
+ {
+ "glyph" : 438,
+ "width" : 24576,
+ "is-cluster-start" : true,
+ "log-cluster" : 1
+ },
+ {
+ "glyph" : 409,
+ "width" : 17408,
+ "is-cluster-start" : true,
+ "log-cluster" : 2
+ },
+ {
+ "glyph" : 417,
+ "width" : 20480,
+ "is-cluster-start" : true,
+ "log-cluster" : 3
+ },
+ {
+ "glyph" : 430,
+ "width" : 16384,
+ "is-cluster-start" : true,
+ "log-cluster" : 4
+ }
]
- },
- "flags" : 0,
- "y-offset" : 0,
- "start-x-offset" : 0,
- "end-x-offset" : 0,
- "glyphs" : [
- {
- "glyph" : 467,
- "width" : 35840,
- "is-cluster-start" : true,
- "log-cluster" : 0
- },
- {
- "glyph" : 438,
- "width" : 24576,
- "is-cluster-start" : true,
- "log-cluster" : 1
- },
- {
- "glyph" : 409,
- "width" : 17408,
- "is-cluster-start" : true,
- "log-cluster" : 2
- },
- {
- "glyph" : 417,
- "width" : 20480,
- "is-cluster-start" : true,
- "log-cluster" : 3
- },
- {
- "glyph" : 430,
- "width" : 16384,
- "is-cluster-start" : true,
- "log-cluster" : 4
- }
- ]
- }
- ]
+ }
+ ]
+ }
}
]
}
diff --git a/tests/layouts/bratwurst2.layout b/tests/layouts/bratwurst2.layout
index 45ca8015..0330f6b0 100644
--- a/tests/layouts/bratwurst2.layout
+++ b/tests/layouts/bratwurst2.layout
@@ -19,166 +19,172 @@
"text" : "Bratwurst",
"font" : "Cantarell Bold 32",
"width" : 87040,
+ "log-attrs" : [
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-start" : true,
+ "sentence-boundary" : true,
+ "sentence-start" : true,
+ "backspace-deletes-character" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "line-break" : true,
+ "mandatory-break" : true,
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "word-end" : true,
+ "sentence-boundary" : true,
+ "sentence-end" : true,
+ "word-boundary" : true
+ }
+ ],
"output" : {
- "is-wrapped" : false,
- "is-ellipsized" : false,
+ "wrapped" : false,
+ "ellipsized" : false,
+ "hypenated" : false,
"unknown-glyphs" : 0,
"width" : 200704,
"height" : 53248,
- "log-attrs" : [
- {
- "char-break" : true,
- "cursor-position" : true,
- "word-start" : true,
- "sentence-boundary" : true,
- "sentence-start" : true,
- "backspace-deletes-character" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "line-break" : true,
- "mandatory-break" : true,
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "word-end" : true,
- "sentence-boundary" : true,
- "sentence-end" : true,
- "word-boundary" : true
- }
- ],
"lines" : [
{
- "start-index" : 0,
- "length" : 9,
- "paragraph-start" : true,
- "direction" : "ltr",
- "runs" : [
- {
- "offset" : 0,
- "length" : 9,
- "text" : "Bratwurst",
- "bidi-level" : 0,
- "gravity" : "south",
- "language" : "en-us",
- "script" : "Latn",
- "font" : {
- "description" : "Cantarell Bold 32",
- "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
- "variations" : {
- "wght" : 8374
+ "position" : [
+ 0,
+ 43008
+ ],
+ "line" : {
+ "start-index" : 0,
+ "length" : 9,
+ "start-offset" : 0,
+ "n-chars" : 9,
+ "wrapped" : false,
+ "ellipsized" : false,
+ "hyphenated" : false,
+ "justified" : false,
+ "paragraph-start" : true,
+ "paragraph-end" : true,
+ "direction" : "ltr",
+ "runs" : [
+ {
+ "offset" : 0,
+ "length" : 9,
+ "text" : "Bratwurst",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "Latn",
+ "font" : {
+ "description" : "Cantarell Bold 32",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 8374
+ }
},
- "matrix" : [
- 1,
- -0,
- -0,
- 1,
- 0,
- 0
+ "flags" : 0,
+ "y-offset" : 0,
+ "start-x-offset" : 0,
+ "end-x-offset" : 0,
+ "glyphs" : [
+ {
+ "glyph" : 29,
+ "width" : 28672,
+ "is-cluster-start" : true,
+ "log-cluster" : 0
+ },
+ {
+ "glyph" : 409,
+ "width" : 17408,
+ "is-cluster-start" : true,
+ "log-cluster" : 1
+ },
+ {
+ "glyph" : 244,
+ "width" : 23552,
+ "is-cluster-start" : true,
+ "log-cluster" : 2
+ },
+ {
+ "glyph" : 430,
+ "width" : 16384,
+ "is-cluster-start" : true,
+ "log-cluster" : 3
+ },
+ {
+ "glyph" : 467,
+ "width" : 35840,
+ "is-cluster-start" : true,
+ "log-cluster" : 4
+ },
+ {
+ "glyph" : 438,
+ "width" : 24576,
+ "is-cluster-start" : true,
+ "log-cluster" : 5
+ },
+ {
+ "glyph" : 409,
+ "width" : 17408,
+ "is-cluster-start" : true,
+ "log-cluster" : 6
+ },
+ {
+ "glyph" : 417,
+ "width" : 20480,
+ "is-cluster-start" : true,
+ "log-cluster" : 7
+ },
+ {
+ "glyph" : 430,
+ "width" : 16384,
+ "is-cluster-start" : true,
+ "log-cluster" : 8
+ }
]
- },
- "flags" : 0,
- "y-offset" : 0,
- "start-x-offset" : 0,
- "end-x-offset" : 0,
- "glyphs" : [
- {
- "glyph" : 29,
- "width" : 28672,
- "is-cluster-start" : true,
- "log-cluster" : 0
- },
- {
- "glyph" : 409,
- "width" : 17408,
- "is-cluster-start" : true,
- "log-cluster" : 1
- },
- {
- "glyph" : 244,
- "width" : 23552,
- "is-cluster-start" : true,
- "log-cluster" : 2
- },
- {
- "glyph" : 430,
- "width" : 16384,
- "is-cluster-start" : true,
- "log-cluster" : 3
- },
- {
- "glyph" : 467,
- "width" : 35840,
- "is-cluster-start" : true,
- "log-cluster" : 4
- },
- {
- "glyph" : 438,
- "width" : 24576,
- "is-cluster-start" : true,
- "log-cluster" : 5
- },
- {
- "glyph" : 409,
- "width" : 17408,
- "is-cluster-start" : true,
- "log-cluster" : 6
- },
- {
- "glyph" : 417,
- "width" : 20480,
- "is-cluster-start" : true,
- "log-cluster" : 7
- },
- {
- "glyph" : 430,
- "width" : 16384,
- "is-cluster-start" : true,
- "log-cluster" : 8
- }
- ]
- }
- ]
+ }
+ ]
+ }
}
]
}
diff --git a/tests/layouts/bratwurst3.layout b/tests/layouts/bratwurst3.layout
index ce95ece7..de28af37 100644
--- a/tests/layouts/bratwurst3.layout
+++ b/tests/layouts/bratwurst3.layout
@@ -20,295 +20,316 @@
"font" : "Cantarell Bold 32",
"wrap" : "word-char",
"width" : 87040,
+ "log-attrs" : [
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-start" : true,
+ "sentence-boundary" : true,
+ "sentence-start" : true,
+ "backspace-deletes-character" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "line-break" : true,
+ "mandatory-break" : true,
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "word-end" : true,
+ "sentence-boundary" : true,
+ "sentence-end" : true,
+ "word-boundary" : true
+ }
+ ],
"output" : {
- "is-wrapped" : true,
- "is-ellipsized" : false,
+ "wrapped" : true,
+ "ellipsized" : false,
+ "hypenated" : true,
"unknown-glyphs" : 0,
"width" : 78848,
"height" : 212992,
- "log-attrs" : [
- {
- "char-break" : true,
- "cursor-position" : true,
- "word-start" : true,
- "sentence-boundary" : true,
- "sentence-start" : true,
- "backspace-deletes-character" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "line-break" : true,
- "mandatory-break" : true,
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "word-end" : true,
- "sentence-boundary" : true,
- "sentence-end" : true,
- "word-boundary" : true
- }
- ],
"lines" : [
{
- "start-index" : 0,
- "length" : 2,
- "paragraph-start" : true,
- "direction" : "ltr",
- "runs" : [
- {
- "offset" : 0,
- "length" : 2,
- "text" : "Br",
- "bidi-level" : 0,
- "gravity" : "south",
- "language" : "en-us",
- "script" : "Latn",
- "font" : {
- "description" : "Cantarell Bold 32",
- "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
- "variations" : {
- "wght" : 8374
+ "position" : [
+ 0,
+ 43008
+ ],
+ "line" : {
+ "start-index" : 0,
+ "length" : 2,
+ "start-offset" : 0,
+ "n-chars" : 2,
+ "wrapped" : true,
+ "ellipsized" : false,
+ "hyphenated" : true,
+ "justified" : false,
+ "paragraph-start" : true,
+ "paragraph-end" : false,
+ "direction" : "ltr",
+ "runs" : [
+ {
+ "offset" : 0,
+ "length" : 2,
+ "text" : "Br",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "Latn",
+ "font" : {
+ "description" : "Cantarell Bold 32",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 8374
+ }
},
- "matrix" : [
- 1,
- -0,
- -0,
- 1,
- 0,
- 0
+ "flags" : 4,
+ "y-offset" : 0,
+ "start-x-offset" : 0,
+ "end-x-offset" : 0,
+ "glyphs" : [
+ {
+ "glyph" : 29,
+ "width" : 28672,
+ "is-cluster-start" : true,
+ "log-cluster" : 0
+ },
+ {
+ "glyph" : 409,
+ "width" : 17408,
+ "is-cluster-start" : true,
+ "log-cluster" : 1
+ },
+ {
+ "glyph" : 1081,
+ "width" : 18432,
+ "log-cluster" : 1
+ }
]
- },
- "flags" : 4,
- "y-offset" : 0,
- "start-x-offset" : 0,
- "end-x-offset" : 0,
- "glyphs" : [
- {
- "glyph" : 29,
- "width" : 28672,
- "is-cluster-start" : true,
- "log-cluster" : 0
- },
- {
- "glyph" : 409,
- "width" : 17408,
- "is-cluster-start" : true,
- "log-cluster" : 1
- },
- {
- "glyph" : 1081,
- "width" : 18432,
- "log-cluster" : 1
- }
- ]
- }
- ]
+ }
+ ]
+ }
},
{
- "start-index" : 2,
- "length" : 2,
- "paragraph-start" : false,
- "direction" : "ltr",
- "runs" : [
- {
- "offset" : 2,
- "length" : 2,
- "text" : "at",
- "bidi-level" : 0,
- "gravity" : "south",
- "language" : "en-us",
- "script" : "Latn",
- "font" : {
- "description" : "Cantarell Bold 32",
- "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
- "variations" : {
- "wght" : 8374
+ "position" : [
+ 0,
+ 96256
+ ],
+ "line" : {
+ "start-index" : 2,
+ "length" : 2,
+ "start-offset" : 2,
+ "n-chars" : 2,
+ "wrapped" : true,
+ "ellipsized" : false,
+ "hyphenated" : true,
+ "justified" : false,
+ "paragraph-start" : false,
+ "paragraph-end" : false,
+ "direction" : "ltr",
+ "runs" : [
+ {
+ "offset" : 2,
+ "length" : 2,
+ "text" : "at",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "Latn",
+ "font" : {
+ "description" : "Cantarell Bold 32",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 8374
+ }
},
- "matrix" : [
- 1,
- -0,
- -0,
- 1,
- 0,
- 0
+ "flags" : 4,
+ "y-offset" : 0,
+ "start-x-offset" : 0,
+ "end-x-offset" : 0,
+ "glyphs" : [
+ {
+ "glyph" : 244,
+ "width" : 23552,
+ "is-cluster-start" : true,
+ "log-cluster" : 0
+ },
+ {
+ "glyph" : 430,
+ "width" : 16384,
+ "is-cluster-start" : true,
+ "log-cluster" : 1
+ },
+ {
+ "glyph" : 1081,
+ "width" : 18432,
+ "log-cluster" : 1
+ }
]
- },
- "flags" : 4,
- "y-offset" : 0,
- "start-x-offset" : 0,
- "end-x-offset" : 0,
- "glyphs" : [
- {
- "glyph" : 244,
- "width" : 23552,
- "is-cluster-start" : true,
- "log-cluster" : 0
- },
- {
- "glyph" : 430,
- "width" : 16384,
- "is-cluster-start" : true,
- "log-cluster" : 1
- },
- {
- "glyph" : 1081,
- "width" : 18432,
- "log-cluster" : 1
- }
- ]
- }
- ]
+ }
+ ]
+ }
},
{
- "start-index" : 4,
- "length" : 2,
- "paragraph-start" : false,
- "direction" : "ltr",
- "runs" : [
- {
- "offset" : 4,
- "length" : 2,
- "text" : "wu",
- "bidi-level" : 0,
- "gravity" : "south",
- "language" : "en-us",
- "script" : "Latn",
- "font" : {
- "description" : "Cantarell Bold 32",
- "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
- "variations" : {
- "wght" : 8374
+ "position" : [
+ 0,
+ 149504
+ ],
+ "line" : {
+ "start-index" : 4,
+ "length" : 2,
+ "start-offset" : 4,
+ "n-chars" : 2,
+ "wrapped" : true,
+ "ellipsized" : false,
+ "hyphenated" : true,
+ "justified" : false,
+ "paragraph-start" : false,
+ "paragraph-end" : false,
+ "direction" : "ltr",
+ "runs" : [
+ {
+ "offset" : 4,
+ "length" : 2,
+ "text" : "wu",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "Latn",
+ "font" : {
+ "description" : "Cantarell Bold 32",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 8374
+ }
},
- "matrix" : [
- 1,
- -0,
- -0,
- 1,
- 0,
- 0
+ "flags" : 4,
+ "y-offset" : 0,
+ "start-x-offset" : 0,
+ "end-x-offset" : 0,
+ "glyphs" : [
+ {
+ "glyph" : 467,
+ "width" : 35840,
+ "is-cluster-start" : true,
+ "log-cluster" : 0
+ },
+ {
+ "glyph" : 438,
+ "width" : 24576,
+ "is-cluster-start" : true,
+ "log-cluster" : 1
+ },
+ {
+ "glyph" : 1081,
+ "width" : 18432,
+ "log-cluster" : 1
+ }
]
- },
- "flags" : 4,
- "y-offset" : 0,
- "start-x-offset" : 0,
- "end-x-offset" : 0,
- "glyphs" : [
- {
- "glyph" : 467,
- "width" : 35840,
- "is-cluster-start" : true,
- "log-cluster" : 0
- },
- {
- "glyph" : 438,
- "width" : 24576,
- "is-cluster-start" : true,
- "log-cluster" : 1
- },
- {
- "glyph" : 1081,
- "width" : 18432,
- "log-cluster" : 1
- }
- ]
- }
- ]
+ }
+ ]
+ }
},
{
- "start-index" : 6,
- "length" : 3,
- "paragraph-start" : false,
- "direction" : "ltr",
- "runs" : [
- {
- "offset" : 6,
- "length" : 3,
- "text" : "rst",
- "bidi-level" : 0,
- "gravity" : "south",
- "language" : "en-us",
- "script" : "Latn",
- "font" : {
- "description" : "Cantarell Bold 32",
- "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
- "variations" : {
- "wght" : 8374
+ "position" : [
+ 0,
+ 202752
+ ],
+ "line" : {
+ "start-index" : 6,
+ "length" : 3,
+ "start-offset" : 6,
+ "n-chars" : 3,
+ "wrapped" : false,
+ "ellipsized" : false,
+ "hyphenated" : false,
+ "justified" : false,
+ "paragraph-start" : false,
+ "paragraph-end" : true,
+ "direction" : "ltr",
+ "runs" : [
+ {
+ "offset" : 6,
+ "length" : 3,
+ "text" : "rst",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "Latn",
+ "font" : {
+ "description" : "Cantarell Bold 32",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 8374
+ }
},
- "matrix" : [
- 1,
- -0,
- -0,
- 1,
- 0,
- 0
+ "flags" : 0,
+ "y-offset" : 0,
+ "start-x-offset" : 0,
+ "end-x-offset" : 0,
+ "glyphs" : [
+ {
+ "glyph" : 409,
+ "width" : 17408,
+ "is-cluster-start" : true,
+ "log-cluster" : 0
+ },
+ {
+ "glyph" : 417,
+ "width" : 20480,
+ "is-cluster-start" : true,
+ "log-cluster" : 1
+ },
+ {
+ "glyph" : 430,
+ "width" : 16384,
+ "is-cluster-start" : true,
+ "log-cluster" : 2
+ }
]
- },
- "flags" : 0,
- "y-offset" : 0,
- "start-x-offset" : 0,
- "end-x-offset" : 0,
- "glyphs" : [
- {
- "glyph" : 409,
- "width" : 17408,
- "is-cluster-start" : true,
- "log-cluster" : 0
- },
- {
- "glyph" : 417,
- "width" : 20480,
- "is-cluster-start" : true,
- "log-cluster" : 1
- },
- {
- "glyph" : 430,
- "width" : 16384,
- "is-cluster-start" : true,
- "log-cluster" : 2
- }
- ]
- }
- ]
+ }
+ ]
+ }
}
]
}
diff --git a/tests/layouts/bratwurst4.layout b/tests/layouts/bratwurst4.layout
index 102e3975..d9fd1afb 100644
--- a/tests/layouts/bratwurst4.layout
+++ b/tests/layouts/bratwurst4.layout
@@ -19,221 +19,232 @@
"text" : "Bratwurst",
"font" : "Cantarell Bold 32",
"width" : 87040,
+ "log-attrs" : [
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-start" : true,
+ "sentence-boundary" : true,
+ "sentence-start" : true,
+ "backspace-deletes-character" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "line-break" : true,
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "line-break" : true,
+ "mandatory-break" : true,
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "word-end" : true,
+ "sentence-boundary" : true,
+ "sentence-end" : true,
+ "word-boundary" : true
+ }
+ ],
"output" : {
- "is-wrapped" : true,
- "is-ellipsized" : false,
+ "wrapped" : true,
+ "ellipsized" : false,
+ "hypenated" : true,
"unknown-glyphs" : 0,
"width" : 114688,
"height" : 106496,
- "log-attrs" : [
- {
- "char-break" : true,
- "cursor-position" : true,
- "word-start" : true,
- "sentence-boundary" : true,
- "sentence-start" : true,
- "backspace-deletes-character" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "line-break" : true,
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "line-break" : true,
- "mandatory-break" : true,
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "word-end" : true,
- "sentence-boundary" : true,
- "sentence-end" : true,
- "word-boundary" : true
- }
- ],
"lines" : [
{
- "start-index" : 0,
- "length" : 6,
- "paragraph-start" : true,
- "direction" : "ltr",
- "runs" : [
- {
- "offset" : 0,
- "length" : 6,
- "text" : "Brat",
- "bidi-level" : 0,
- "gravity" : "south",
- "language" : "en-us",
- "script" : "Latn",
- "font" : {
- "description" : "Cantarell Bold 32",
- "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
- "variations" : {
- "wght" : 8374
+ "position" : [
+ 0,
+ 43008
+ ],
+ "line" : {
+ "start-index" : 0,
+ "length" : 6,
+ "start-offset" : 0,
+ "n-chars" : 5,
+ "wrapped" : true,
+ "ellipsized" : false,
+ "hyphenated" : true,
+ "justified" : false,
+ "paragraph-start" : true,
+ "paragraph-end" : false,
+ "direction" : "ltr",
+ "runs" : [
+ {
+ "offset" : 0,
+ "length" : 6,
+ "text" : "Brat",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "Latn",
+ "font" : {
+ "description" : "Cantarell Bold 32",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 8374
+ }
},
- "matrix" : [
- 1,
- -0,
- -0,
- 1,
- 0,
- 0
+ "flags" : 4,
+ "y-offset" : 0,
+ "start-x-offset" : 0,
+ "end-x-offset" : 0,
+ "glyphs" : [
+ {
+ "glyph" : 29,
+ "width" : 28672,
+ "is-cluster-start" : true,
+ "log-cluster" : 0
+ },
+ {
+ "glyph" : 409,
+ "width" : 17408,
+ "is-cluster-start" : true,
+ "log-cluster" : 1
+ },
+ {
+ "glyph" : 244,
+ "width" : 23552,
+ "is-cluster-start" : true,
+ "log-cluster" : 2
+ },
+ {
+ "glyph" : 430,
+ "width" : 16384,
+ "is-cluster-start" : true,
+ "log-cluster" : 3
+ },
+ {
+ "glyph" : 268435455,
+ "width" : 0,
+ "is-cluster-start" : true,
+ "log-cluster" : 4
+ },
+ {
+ "glyph" : 1081,
+ "width" : 18432,
+ "log-cluster" : 4
+ }
]
- },
- "flags" : 4,
- "y-offset" : 0,
- "start-x-offset" : 0,
- "end-x-offset" : 0,
- "glyphs" : [
- {
- "glyph" : 29,
- "width" : 28672,
- "is-cluster-start" : true,
- "log-cluster" : 0
- },
- {
- "glyph" : 409,
- "width" : 17408,
- "is-cluster-start" : true,
- "log-cluster" : 1
- },
- {
- "glyph" : 244,
- "width" : 23552,
- "is-cluster-start" : true,
- "log-cluster" : 2
- },
- {
- "glyph" : 430,
- "width" : 16384,
- "is-cluster-start" : true,
- "log-cluster" : 3
- },
- {
- "glyph" : 268435455,
- "width" : 0,
- "is-cluster-start" : true,
- "log-cluster" : 4
- },
- {
- "glyph" : 1081,
- "width" : 18432,
- "log-cluster" : 4
- }
- ]
- }
- ]
+ }
+ ]
+ }
},
{
- "start-index" : 6,
- "length" : 5,
- "paragraph-start" : false,
- "direction" : "ltr",
- "runs" : [
- {
- "offset" : 6,
- "length" : 5,
- "text" : "wurst",
- "bidi-level" : 0,
- "gravity" : "south",
- "language" : "en-us",
- "script" : "Latn",
- "font" : {
- "description" : "Cantarell Bold 32",
- "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
- "variations" : {
- "wght" : 8374
+ "position" : [
+ 0,
+ 96256
+ ],
+ "line" : {
+ "start-index" : 6,
+ "length" : 5,
+ "start-offset" : 5,
+ "n-chars" : 5,
+ "wrapped" : false,
+ "ellipsized" : false,
+ "hyphenated" : false,
+ "justified" : false,
+ "paragraph-start" : false,
+ "paragraph-end" : true,
+ "direction" : "ltr",
+ "runs" : [
+ {
+ "offset" : 6,
+ "length" : 5,
+ "text" : "wurst",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "Latn",
+ "font" : {
+ "description" : "Cantarell Bold 32",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 8374
+ }
},
- "matrix" : [
- 1,
- -0,
- -0,
- 1,
- 0,
- 0
+ "flags" : 0,
+ "y-offset" : 0,
+ "start-x-offset" : 0,
+ "end-x-offset" : 0,
+ "glyphs" : [
+ {
+ "glyph" : 467,
+ "width" : 35840,
+ "is-cluster-start" : true,
+ "log-cluster" : 0
+ },
+ {
+ "glyph" : 438,
+ "width" : 24576,
+ "is-cluster-start" : true,
+ "log-cluster" : 1
+ },
+ {
+ "glyph" : 409,
+ "width" : 17408,
+ "is-cluster-start" : true,
+ "log-cluster" : 2
+ },
+ {
+ "glyph" : 417,
+ "width" : 20480,
+ "is-cluster-start" : true,
+ "log-cluster" : 3
+ },
+ {
+ "glyph" : 430,
+ "width" : 16384,
+ "is-cluster-start" : true,
+ "log-cluster" : 4
+ }
]
- },
- "flags" : 0,
- "y-offset" : 0,
- "start-x-offset" : 0,
- "end-x-offset" : 0,
- "glyphs" : [
- {
- "glyph" : 467,
- "width" : 35840,
- "is-cluster-start" : true,
- "log-cluster" : 0
- },
- {
- "glyph" : 438,
- "width" : 24576,
- "is-cluster-start" : true,
- "log-cluster" : 1
- },
- {
- "glyph" : 409,
- "width" : 17408,
- "is-cluster-start" : true,
- "log-cluster" : 2
- },
- {
- "glyph" : 417,
- "width" : 20480,
- "is-cluster-start" : true,
- "log-cluster" : 3
- },
- {
- "glyph" : 430,
- "width" : 16384,
- "is-cluster-start" : true,
- "log-cluster" : 4
- }
- ]
- }
- ]
+ }
+ ]
+ }
}
]
}
diff --git a/tests/layouts/effigy.layout b/tests/layouts/effigy.layout
index 0bc73956..d4ae8575 100644
--- a/tests/layouts/effigy.layout
+++ b/tests/layouts/effigy.layout
@@ -21,164 +21,175 @@
"wrap" : "char",
"width" : 81920,
"height" : 2048,
+ "log-attrs" : [
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-start" : true,
+ "sentence-boundary" : true,
+ "sentence-start" : true,
+ "backspace-deletes-character" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "line-break" : true,
+ "mandatory-break" : true,
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "word-end" : true,
+ "sentence-boundary" : true,
+ "sentence-end" : true,
+ "word-boundary" : true
+ }
+ ],
"output" : {
- "is-wrapped" : true,
- "is-ellipsized" : false,
+ "wrapped" : true,
+ "ellipsized" : false,
+ "hypenated" : true,
"unknown-glyphs" : 0,
"width" : 71680,
"height" : 104448,
- "log-attrs" : [
- {
- "char-break" : true,
- "cursor-position" : true,
- "word-start" : true,
- "sentence-boundary" : true,
- "sentence-start" : true,
- "backspace-deletes-character" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "line-break" : true,
- "mandatory-break" : true,
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "word-end" : true,
- "sentence-boundary" : true,
- "sentence-end" : true,
- "word-boundary" : true
- }
- ],
"lines" : [
{
- "start-index" : 0,
- "length" : 3,
- "paragraph-start" : true,
- "direction" : "ltr",
- "runs" : [
- {
- "offset" : 0,
- "length" : 3,
- "text" : "eff",
- "bidi-level" : 0,
- "gravity" : "south",
- "language" : "en-us",
- "script" : "Latn",
- "font" : {
- "description" : "DejaVu Sans 32",
- "checksum" : "69ccd07023a72ceb27a5e5c22f728627353b60a198170f5e58dd7014221abf01",
- "matrix" : [
- 1,
- -0,
- -0,
- 1,
- 0,
- 0
- ]
- },
- "flags" : 4,
- "y-offset" : 0,
- "start-x-offset" : 0,
- "end-x-offset" : 0,
- "glyphs" : [
- {
- "glyph" : 72,
- "width" : 26624,
- "is-cluster-start" : true,
- "log-cluster" : 0
+ "position" : [
+ 0,
+ 40960
+ ],
+ "line" : {
+ "start-index" : 0,
+ "length" : 3,
+ "start-offset" : 0,
+ "n-chars" : 3,
+ "wrapped" : true,
+ "ellipsized" : false,
+ "hyphenated" : true,
+ "justified" : false,
+ "paragraph-start" : true,
+ "paragraph-end" : false,
+ "direction" : "ltr",
+ "runs" : [
+ {
+ "offset" : 0,
+ "length" : 3,
+ "text" : "eff",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "Latn",
+ "font" : {
+ "description" : "DejaVu Sans 32",
+ "checksum" : "69ccd07023a72ceb27a5e5c22f728627353b60a198170f5e58dd7014221abf01"
},
- {
- "glyph" : 5041,
- "width" : 29696,
- "is-cluster-start" : true,
- "log-cluster" : 1
- },
- {
- "glyph" : 2803,
- "width" : 15360,
- "log-cluster" : 1
- }
- ]
- }
- ]
+ "flags" : 4,
+ "y-offset" : 0,
+ "start-x-offset" : 0,
+ "end-x-offset" : 0,
+ "glyphs" : [
+ {
+ "glyph" : 72,
+ "width" : 26624,
+ "is-cluster-start" : true,
+ "log-cluster" : 0
+ },
+ {
+ "glyph" : 5041,
+ "width" : 29696,
+ "is-cluster-start" : true,
+ "log-cluster" : 1
+ },
+ {
+ "glyph" : 2803,
+ "width" : 15360,
+ "log-cluster" : 1
+ }
+ ]
+ }
+ ]
+ }
},
{
- "start-index" : 3,
- "length" : 3,
- "paragraph-start" : false,
- "direction" : "ltr",
- "runs" : [
- {
- "offset" : 3,
- "length" : 3,
- "text" : "igy",
- "bidi-level" : 0,
- "gravity" : "south",
- "language" : "en-us",
- "script" : "Latn",
- "font" : {
- "description" : "DejaVu Sans 32",
- "checksum" : "69ccd07023a72ceb27a5e5c22f728627353b60a198170f5e58dd7014221abf01",
- "matrix" : [
- 1,
- -0,
- -0,
- 1,
- 0,
- 0
- ]
- },
- "flags" : 0,
- "y-offset" : 0,
- "start-x-offset" : 0,
- "end-x-offset" : 0,
- "glyphs" : [
- {
- "glyph" : 76,
- "width" : 12288,
- "is-cluster-start" : true,
- "log-cluster" : 0
+ "position" : [
+ 0,
+ 93184
+ ],
+ "line" : {
+ "start-index" : 3,
+ "length" : 3,
+ "start-offset" : 3,
+ "n-chars" : 3,
+ "wrapped" : false,
+ "ellipsized" : false,
+ "hyphenated" : false,
+ "justified" : false,
+ "paragraph-start" : false,
+ "paragraph-end" : true,
+ "direction" : "ltr",
+ "runs" : [
+ {
+ "offset" : 3,
+ "length" : 3,
+ "text" : "igy",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "Latn",
+ "font" : {
+ "description" : "DejaVu Sans 32",
+ "checksum" : "69ccd07023a72ceb27a5e5c22f728627353b60a198170f5e58dd7014221abf01"
},
- {
- "glyph" : 74,
- "width" : 27648,
- "is-cluster-start" : true,
- "log-cluster" : 1
- },
- {
- "glyph" : 92,
- "width" : 25600,
- "is-cluster-start" : true,
- "log-cluster" : 2
- }
- ]
- }
- ]
+ "flags" : 0,
+ "y-offset" : 0,
+ "start-x-offset" : 0,
+ "end-x-offset" : 0,
+ "glyphs" : [
+ {
+ "glyph" : 76,
+ "width" : 12288,
+ "is-cluster-start" : true,
+ "log-cluster" : 0
+ },
+ {
+ "glyph" : 74,
+ "width" : 27648,
+ "is-cluster-start" : true,
+ "log-cluster" : 1
+ },
+ {
+ "glyph" : 92,
+ "width" : 25600,
+ "is-cluster-start" : true,
+ "log-cluster" : 2
+ }
+ ]
+ }
+ ]
+ }
}
]
}
diff --git a/tests/layouts/kebab.layout b/tests/layouts/kebab.layout
index c5253fd9..1c066ccf 100644
--- a/tests/layouts/kebab.layout
+++ b/tests/layouts/kebab.layout
@@ -19,231 +19,242 @@
"text" : "Döner Kebab",
"font" : "Cantarell Bold 32",
"width" : 87040,
+ "log-attrs" : [
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-start" : true,
+ "sentence-boundary" : true,
+ "sentence-start" : true,
+ "backspace-deletes-character" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "word-end" : true,
+ "expandable-space" : true,
+ "word-boundary" : true
+ },
+ {
+ "line-break" : true,
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-start" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "line-break" : true,
+ "mandatory-break" : true,
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "word-end" : true,
+ "sentence-boundary" : true,
+ "sentence-end" : true,
+ "word-boundary" : true
+ }
+ ],
"output" : {
- "is-wrapped" : true,
- "is-ellipsized" : false,
+ "wrapped" : true,
+ "ellipsized" : false,
+ "hypenated" : false,
"unknown-glyphs" : 0,
"width" : 126976,
"height" : 106496,
- "log-attrs" : [
- {
- "char-break" : true,
- "cursor-position" : true,
- "word-start" : true,
- "sentence-boundary" : true,
- "sentence-start" : true,
- "backspace-deletes-character" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "word-end" : true,
- "expandable-space" : true,
- "word-boundary" : true
- },
- {
- "line-break" : true,
- "char-break" : true,
- "cursor-position" : true,
- "word-start" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "line-break" : true,
- "mandatory-break" : true,
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "word-end" : true,
- "sentence-boundary" : true,
- "sentence-end" : true,
- "word-boundary" : true
- }
- ],
"lines" : [
{
- "start-index" : 0,
- "length" : 7,
- "paragraph-start" : true,
- "direction" : "ltr",
- "runs" : [
- {
- "offset" : 0,
- "length" : 7,
- "text" : "Döner ",
- "bidi-level" : 0,
- "gravity" : "south",
- "language" : "en-us",
- "script" : "Latn",
- "font" : {
- "description" : "Cantarell Bold 32",
- "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
- "variations" : {
- "wght" : 8374
+ "position" : [
+ 0,
+ 43008
+ ],
+ "line" : {
+ "start-index" : 0,
+ "length" : 7,
+ "start-offset" : 0,
+ "n-chars" : 6,
+ "wrapped" : true,
+ "ellipsized" : false,
+ "hyphenated" : false,
+ "justified" : false,
+ "paragraph-start" : true,
+ "paragraph-end" : false,
+ "direction" : "ltr",
+ "runs" : [
+ {
+ "offset" : 0,
+ "length" : 7,
+ "text" : "Döner ",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "Latn",
+ "font" : {
+ "description" : "Cantarell Bold 32",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 8374
+ }
},
- "matrix" : [
- 1,
- -0,
- -0,
- 1,
- 0,
- 0
+ "flags" : 0,
+ "y-offset" : 0,
+ "start-x-offset" : 0,
+ "end-x-offset" : 0,
+ "glyphs" : [
+ {
+ "glyph" : 37,
+ "width" : 31744,
+ "is-cluster-start" : true,
+ "log-cluster" : 0
+ },
+ {
+ "glyph" : 381,
+ "width" : 25600,
+ "is-cluster-start" : true,
+ "log-cluster" : 1
+ },
+ {
+ "glyph" : 360,
+ "width" : 25600,
+ "is-cluster-start" : true,
+ "log-cluster" : 3
+ },
+ {
+ "glyph" : 287,
+ "width" : 23552,
+ "is-cluster-start" : true,
+ "log-cluster" : 4
+ },
+ {
+ "glyph" : 409,
+ "width" : 17408,
+ "is-cluster-start" : true,
+ "log-cluster" : 5
+ },
+ {
+ "glyph" : 268435455,
+ "width" : 0,
+ "is-cluster-start" : true,
+ "log-cluster" : 6
+ }
]
- },
- "flags" : 0,
- "y-offset" : 0,
- "start-x-offset" : 0,
- "end-x-offset" : 0,
- "glyphs" : [
- {
- "glyph" : 37,
- "width" : 31744,
- "is-cluster-start" : true,
- "log-cluster" : 0
- },
- {
- "glyph" : 381,
- "width" : 25600,
- "is-cluster-start" : true,
- "log-cluster" : 1
- },
- {
- "glyph" : 360,
- "width" : 25600,
- "is-cluster-start" : true,
- "log-cluster" : 3
- },
- {
- "glyph" : 287,
- "width" : 23552,
- "is-cluster-start" : true,
- "log-cluster" : 4
- },
- {
- "glyph" : 409,
- "width" : 17408,
- "is-cluster-start" : true,
- "log-cluster" : 5
- },
- {
- "glyph" : 268435455,
- "width" : 0,
- "is-cluster-start" : true,
- "log-cluster" : 6
- }
- ]
- }
- ]
+ }
+ ]
+ }
},
{
- "start-index" : 7,
- "length" : 5,
- "paragraph-start" : false,
- "direction" : "ltr",
- "runs" : [
- {
- "offset" : 7,
- "length" : 5,
- "text" : "Kebab",
- "bidi-level" : 0,
- "gravity" : "south",
- "language" : "en-us",
- "script" : "Latn",
- "font" : {
- "description" : "Cantarell Bold 32",
- "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
- "variations" : {
- "wght" : 8374
+ "position" : [
+ 0,
+ 96256
+ ],
+ "line" : {
+ "start-index" : 7,
+ "length" : 5,
+ "start-offset" : 6,
+ "n-chars" : 5,
+ "wrapped" : false,
+ "ellipsized" : false,
+ "hyphenated" : false,
+ "justified" : false,
+ "paragraph-start" : false,
+ "paragraph-end" : true,
+ "direction" : "ltr",
+ "runs" : [
+ {
+ "offset" : 7,
+ "length" : 5,
+ "text" : "Kebab",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "Latn",
+ "font" : {
+ "description" : "Cantarell Bold 32",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 8374
+ }
},
- "matrix" : [
- 1,
- -0,
- -0,
- 1,
- 0,
- 0
+ "flags" : 0,
+ "y-offset" : 0,
+ "start-x-offset" : 0,
+ "end-x-offset" : 0,
+ "glyphs" : [
+ {
+ "glyph" : 100,
+ "width" : 28672,
+ "is-cluster-start" : true,
+ "log-cluster" : 0
+ },
+ {
+ "glyph" : 287,
+ "width" : 23552,
+ "is-cluster-start" : true,
+ "log-cluster" : 1
+ },
+ {
+ "glyph" : 272,
+ "width" : 25600,
+ "is-cluster-start" : true,
+ "log-cluster" : 2
+ },
+ {
+ "glyph" : 244,
+ "width" : 23552,
+ "is-cluster-start" : true,
+ "log-cluster" : 3
+ },
+ {
+ "glyph" : 272,
+ "width" : 25600,
+ "is-cluster-start" : true,
+ "log-cluster" : 4
+ }
]
- },
- "flags" : 0,
- "y-offset" : 0,
- "start-x-offset" : 0,
- "end-x-offset" : 0,
- "glyphs" : [
- {
- "glyph" : 100,
- "width" : 28672,
- "is-cluster-start" : true,
- "log-cluster" : 0
- },
- {
- "glyph" : 287,
- "width" : 23552,
- "is-cluster-start" : true,
- "log-cluster" : 1
- },
- {
- "glyph" : 272,
- "width" : 25600,
- "is-cluster-start" : true,
- "log-cluster" : 2
- },
- {
- "glyph" : 244,
- "width" : 23552,
- "is-cluster-start" : true,
- "log-cluster" : 3
- },
- {
- "glyph" : 272,
- "width" : 25600,
- "is-cluster-start" : true,
- "log-cluster" : 4
- }
- ]
- }
- ]
+ }
+ ]
+ }
}
]
}
diff --git a/tests/layouts/letterspacing.layout b/tests/layouts/letterspacing.layout
index 87822cce..040fc686 100644
--- a/tests/layouts/letterspacing.layout
+++ b/tests/layouts/letterspacing.layout
@@ -26,109 +26,115 @@
}
],
"font" : "DejaVu Sans 32",
+ "log-attrs" : [
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-start" : true,
+ "sentence-boundary" : true,
+ "sentence-start" : true,
+ "backspace-deletes-character" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "line-break" : true,
+ "mandatory-break" : true,
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "word-end" : true,
+ "sentence-boundary" : true,
+ "sentence-end" : true,
+ "word-boundary" : true
+ }
+ ],
"output" : {
- "is-wrapped" : false,
- "is-ellipsized" : false,
+ "wrapped" : false,
+ "ellipsized" : false,
+ "hypenated" : false,
"unknown-glyphs" : 0,
"width" : 63488,
"height" : 52224,
- "log-attrs" : [
- {
- "char-break" : true,
- "cursor-position" : true,
- "word-start" : true,
- "sentence-boundary" : true,
- "sentence-start" : true,
- "backspace-deletes-character" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "line-break" : true,
- "mandatory-break" : true,
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "word-end" : true,
- "sentence-boundary" : true,
- "sentence-end" : true,
- "word-boundary" : true
- }
- ],
"lines" : [
{
- "start-index" : 0,
- "length" : 3,
- "paragraph-start" : true,
- "direction" : "ltr",
- "runs" : [
- {
- "offset" : 0,
- "length" : 3,
- "text" : "ffi",
- "bidi-level" : 0,
- "gravity" : "south",
- "language" : "en-us",
- "script" : "Latn",
- "font" : {
- "description" : "DejaVu Sans 32",
- "checksum" : "69ccd07023a72ceb27a5e5c22f728627353b60a198170f5e58dd7014221abf01",
- "matrix" : [
- 1,
- -0,
- -0,
- 1,
- 0,
- 0
- ]
- },
- "flags" : 0,
- "extra-attributes" : [
- {
- "type" : "letter-spacing",
- "value" : 10240
- },
- {
- "type" : "font-features",
- "value" : "liga=1"
- }
- ],
- "y-offset" : 0,
- "start-x-offset" : 0,
- "end-x-offset" : 0,
- "glyphs" : [
- {
- "glyph" : 73,
- "width" : 20480,
- "is-cluster-start" : true,
- "log-cluster" : 0
+ "position" : [
+ 0,
+ 40960
+ ],
+ "line" : {
+ "start-index" : 0,
+ "length" : 3,
+ "start-offset" : 0,
+ "n-chars" : 3,
+ "wrapped" : false,
+ "ellipsized" : false,
+ "hyphenated" : false,
+ "justified" : false,
+ "paragraph-start" : true,
+ "paragraph-end" : true,
+ "direction" : "ltr",
+ "runs" : [
+ {
+ "offset" : 0,
+ "length" : 3,
+ "text" : "ffi",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "Latn",
+ "font" : {
+ "description" : "DejaVu Sans 32",
+ "checksum" : "69ccd07023a72ceb27a5e5c22f728627353b60a198170f5e58dd7014221abf01"
},
- {
- "glyph" : 73,
- "width" : 25600,
- "x-offset" : 5120,
- "is-cluster-start" : true,
- "log-cluster" : 1
- },
- {
- "glyph" : 76,
- "width" : 17408,
- "x-offset" : 5120,
- "is-cluster-start" : true,
- "log-cluster" : 2
- }
- ]
- }
- ]
+ "flags" : 0,
+ "extra-attributes" : [
+ {
+ "type" : "letter-spacing",
+ "value" : 10240
+ },
+ {
+ "type" : "font-features",
+ "value" : "liga=1"
+ }
+ ],
+ "y-offset" : 0,
+ "start-x-offset" : 0,
+ "end-x-offset" : 0,
+ "glyphs" : [
+ {
+ "glyph" : 73,
+ "width" : 20480,
+ "is-cluster-start" : true,
+ "log-cluster" : 0
+ },
+ {
+ "glyph" : 73,
+ "width" : 25600,
+ "x-offset" : 5120,
+ "is-cluster-start" : true,
+ "log-cluster" : 1
+ },
+ {
+ "glyph" : 76,
+ "width" : 17408,
+ "x-offset" : 5120,
+ "is-cluster-start" : true,
+ "log-cluster" : 2
+ }
+ ]
+ }
+ ]
+ }
}
]
}
diff --git a/tests/layouts/no-space.layout b/tests/layouts/no-space.layout
index b31b26bb..010cc56a 100644
--- a/tests/layouts/no-space.layout
+++ b/tests/layouts/no-space.layout
@@ -17,125 +17,131 @@
"comment" : "Test that we get synthesized spaces\nfrom HarfBuzz.",
"text" : " ",
"font" : "Font Awesome 5 Free 32",
+ "log-attrs" : [
+ {
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "sentence-boundary" : true,
+ "backspace-deletes-character" : true,
+ "expandable-space" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "expandable-space" : true
+ },
+ {
+ "line-break" : true,
+ "char-break" : true,
+ "cursor-position" : true,
+ "sentence-start" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "sentence-end" : true,
+ "backspace-deletes-character" : true,
+ "expandable-space" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "expandable-space" : true
+ },
+ {
+ "line-break" : true,
+ "mandatory-break" : true,
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "sentence-boundary" : true,
+ "word-boundary" : true
+ }
+ ],
"output" : {
- "is-wrapped" : false,
- "is-ellipsized" : false,
+ "wrapped" : false,
+ "ellipsized" : false,
+ "hypenated" : false,
"unknown-glyphs" : 4,
"width" : 89088,
"height" : 45056,
- "log-attrs" : [
- {
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "sentence-boundary" : true,
- "backspace-deletes-character" : true,
- "expandable-space" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "expandable-space" : true
- },
- {
- "line-break" : true,
- "char-break" : true,
- "cursor-position" : true,
- "sentence-start" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "sentence-end" : true,
- "backspace-deletes-character" : true,
- "expandable-space" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "expandable-space" : true
- },
- {
- "line-break" : true,
- "mandatory-break" : true,
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "sentence-boundary" : true,
- "word-boundary" : true
- }
- ],
"lines" : [
{
- "start-index" : 0,
- "length" : 7,
- "paragraph-start" : true,
- "direction" : "ltr",
- "runs" : [
- {
- "offset" : 0,
- "length" : 7,
- "text" : " ",
- "bidi-level" : 0,
- "gravity" : "south",
- "language" : "en-us",
- "script" : "Zyyy",
- "font" : {
- "description" : "Font Awesome 5 Free Solid Heavy 32",
- "checksum" : "8fe6cd51391fa6f8c2008609ddd489bb81a6d7674f3a1c8b7fa07efd026a6397",
- "matrix" : [
- 1,
- -0,
- -0,
- 1,
- 0,
- 0
- ]
- },
- "flags" : 0,
- "y-offset" : 0,
- "start-x-offset" : 0,
- "end-x-offset" : 0,
- "glyphs" : [
- {
- "glyph" : 268435488,
- "width" : 11264,
- "is-cluster-start" : true,
- "log-cluster" : 0
- },
- {
- "glyph" : 268435488,
- "width" : 11264,
- "is-cluster-start" : true,
- "log-cluster" : 1
+ "position" : [
+ 0,
+ 38912
+ ],
+ "line" : {
+ "start-index" : 0,
+ "length" : 7,
+ "start-offset" : 0,
+ "n-chars" : 5,
+ "wrapped" : false,
+ "ellipsized" : false,
+ "hyphenated" : false,
+ "justified" : false,
+ "paragraph-start" : true,
+ "paragraph-end" : true,
+ "direction" : "ltr",
+ "runs" : [
+ {
+ "offset" : 0,
+ "length" : 7,
+ "text" : " ",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "Zyyy",
+ "font" : {
+ "description" : "Font Awesome 5 Free Solid Heavy 32",
+ "checksum" : "8fe6cd51391fa6f8c2008609ddd489bb81a6d7674f3a1c8b7fa07efd026a6397"
},
- {
- "glyph" : 1,
- "width" : 44032,
- "is-cluster-start" : true,
- "log-cluster" : 2
- },
- {
- "glyph" : 268435488,
- "width" : 11264,
- "is-cluster-start" : true,
- "log-cluster" : 5
- },
- {
- "glyph" : 268435488,
- "width" : 11264,
- "is-cluster-start" : true,
- "log-cluster" : 6
- }
- ]
- }
- ]
+ "flags" : 0,
+ "y-offset" : 0,
+ "start-x-offset" : 0,
+ "end-x-offset" : 0,
+ "glyphs" : [
+ {
+ "glyph" : 268435488,
+ "width" : 11264,
+ "is-cluster-start" : true,
+ "log-cluster" : 0
+ },
+ {
+ "glyph" : 268435488,
+ "width" : 11264,
+ "is-cluster-start" : true,
+ "log-cluster" : 1
+ },
+ {
+ "glyph" : 1,
+ "width" : 44032,
+ "is-cluster-start" : true,
+ "log-cluster" : 2
+ },
+ {
+ "glyph" : 268435488,
+ "width" : 11264,
+ "is-cluster-start" : true,
+ "log-cluster" : 5
+ },
+ {
+ "glyph" : 268435488,
+ "width" : 11264,
+ "is-cluster-start" : true,
+ "log-cluster" : 6
+ }
+ ]
+ }
+ ]
+ }
}
]
}
diff --git a/tests/layouts/tab-assert.layout b/tests/layouts/tab-assert.layout
index 2660e5ea..fc884793 100644
--- a/tests/layouts/tab-assert.layout
+++ b/tests/layouts/tab-assert.layout
@@ -17,166 +17,156 @@
"comment" : "This layout was triggering an assertion in process_line",
"text" : " \t ",
"width" : 0,
+ "log-attrs" : [
+ {
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "sentence-boundary" : true,
+ "backspace-deletes-character" : true,
+ "expandable-space" : true,
+ "word-boundary" : true
+ },
+ {
+ "line-break" : true,
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "backspace-deletes-character" : true,
+ "expandable-space" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "expandable-space" : true
+ },
+ {
+ "line-break" : true,
+ "mandatory-break" : true,
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "sentence-boundary" : true,
+ "word-boundary" : true
+ }
+ ],
"output" : {
- "is-wrapped" : false,
- "is-ellipsized" : false,
+ "wrapped" : false,
+ "ellipsized" : false,
+ "hypenated" : false,
"unknown-glyphs" : 0,
"width" : 56320,
"height" : 19456,
- "log-attrs" : [
- {
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "sentence-boundary" : true,
- "backspace-deletes-character" : true,
- "expandable-space" : true,
- "word-boundary" : true
- },
- {
- "line-break" : true,
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "backspace-deletes-character" : true,
- "expandable-space" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "expandable-space" : true
- },
- {
- "line-break" : true,
- "mandatory-break" : true,
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "sentence-boundary" : true,
- "word-boundary" : true
- }
- ],
"lines" : [
{
- "start-index" : 0,
- "length" : 4,
- "paragraph-start" : true,
- "direction" : "ltr",
- "runs" : [
- {
- "offset" : 0,
- "length" : 1,
- "text" : " ",
- "bidi-level" : 0,
- "gravity" : "south",
- "language" : "en-us",
- "script" : "Zyyy",
- "font" : {
- "description" : "DejaVu Sans 12",
- "checksum" : "69ccd07023a72ceb27a5e5c22f728627353b60a198170f5e58dd7014221abf01",
- "matrix" : [
- 1,
- -0,
- -0,
- 1,
- 0,
- 0
- ]
- },
- "flags" : 0,
- "y-offset" : 0,
- "start-x-offset" : 0,
- "end-x-offset" : 0,
- "glyphs" : [
- {
- "glyph" : 3,
- "width" : 5120,
- "is-cluster-start" : true,
- "log-cluster" : 0
- }
- ]
- },
- {
- "offset" : 1,
- "length" : 1,
- "text" : "\t",
- "bidi-level" : 0,
- "gravity" : "south",
- "language" : "en-us",
- "script" : "Zyyy",
- "font" : {
- "description" : "DejaVu Sans 12",
- "checksum" : "69ccd07023a72ceb27a5e5c22f728627353b60a198170f5e58dd7014221abf01",
- "matrix" : [
- 1,
- -0,
- -0,
- 1,
- 0,
- 0
+ "position" : [
+ 0,
+ 15360
+ ],
+ "line" : {
+ "start-index" : 0,
+ "length" : 4,
+ "start-offset" : 0,
+ "n-chars" : 4,
+ "wrapped" : false,
+ "ellipsized" : false,
+ "hyphenated" : false,
+ "justified" : false,
+ "paragraph-start" : true,
+ "paragraph-end" : true,
+ "direction" : "ltr",
+ "runs" : [
+ {
+ "offset" : 0,
+ "length" : 1,
+ "text" : " ",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "Zyyy",
+ "font" : {
+ "description" : "DejaVu Sans 12",
+ "checksum" : "69ccd07023a72ceb27a5e5c22f728627353b60a198170f5e58dd7014221abf01"
+ },
+ "flags" : 0,
+ "y-offset" : 0,
+ "start-x-offset" : 0,
+ "end-x-offset" : 0,
+ "glyphs" : [
+ {
+ "glyph" : 3,
+ "width" : 5120,
+ "is-cluster-start" : true,
+ "log-cluster" : 0
+ }
]
},
- "flags" : 0,
- "y-offset" : 0,
- "start-x-offset" : 0,
- "end-x-offset" : 0,
- "glyphs" : [
- {
- "glyph" : 268435455,
- "width" : 40960,
- "is-cluster-start" : true,
- "log-cluster" : 0
- }
- ]
- },
- {
- "offset" : 2,
- "length" : 2,
- "text" : " ",
- "bidi-level" : 0,
- "gravity" : "south",
- "language" : "en-us",
- "script" : "Zyyy",
- "font" : {
- "description" : "DejaVu Sans 12",
- "checksum" : "69ccd07023a72ceb27a5e5c22f728627353b60a198170f5e58dd7014221abf01",
- "matrix" : [
- 1,
- -0,
- -0,
- 1,
- 0,
- 0
+ {
+ "offset" : 1,
+ "length" : 1,
+ "text" : "\t",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "Zyyy",
+ "font" : {
+ "description" : "DejaVu Sans 12",
+ "checksum" : "69ccd07023a72ceb27a5e5c22f728627353b60a198170f5e58dd7014221abf01"
+ },
+ "flags" : 0,
+ "y-offset" : 0,
+ "start-x-offset" : 0,
+ "end-x-offset" : 0,
+ "glyphs" : [
+ {
+ "glyph" : 268435455,
+ "width" : 40960,
+ "is-cluster-start" : true,
+ "log-cluster" : 0
+ }
]
},
- "flags" : 0,
- "y-offset" : 0,
- "start-x-offset" : 0,
- "end-x-offset" : 0,
- "glyphs" : [
- {
- "glyph" : 3,
- "width" : 5120,
- "is-cluster-start" : true,
- "log-cluster" : 0
+ {
+ "offset" : 2,
+ "length" : 2,
+ "text" : " ",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "Zyyy",
+ "font" : {
+ "description" : "DejaVu Sans 12",
+ "checksum" : "69ccd07023a72ceb27a5e5c22f728627353b60a198170f5e58dd7014221abf01"
},
- {
- "glyph" : 3,
- "width" : 5120,
- "is-cluster-start" : true,
- "log-cluster" : 1
- }
- ]
- }
- ]
+ "flags" : 0,
+ "y-offset" : 0,
+ "start-x-offset" : 0,
+ "end-x-offset" : 0,
+ "glyphs" : [
+ {
+ "glyph" : 3,
+ "width" : 5120,
+ "is-cluster-start" : true,
+ "log-cluster" : 0
+ },
+ {
+ "glyph" : 3,
+ "width" : 5120,
+ "is-cluster-start" : true,
+ "log-cluster" : 1
+ }
+ ]
+ }
+ ]
+ }
}
]
}
diff --git a/tests/layouts/tab-crash.layout b/tests/layouts/tab-crash.layout
index eb3021b6..e001bbc5 100644
--- a/tests/layouts/tab-crash.layout
+++ b/tests/layouts/tab-crash.layout
@@ -35,1394 +35,1370 @@
]
},
"width" : 587776,
+ "log-attrs" : [
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-start" : true,
+ "sentence-boundary" : true,
+ "sentence-start" : true,
+ "backspace-deletes-character" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-end" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-start" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "word-end" : true,
+ "expandable-space" : true,
+ "word-boundary" : true
+ },
+ {
+ "line-break" : true,
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-start" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "word-end" : true,
+ "expandable-space" : true,
+ "word-boundary" : true
+ },
+ {
+ "line-break" : true,
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-start" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "word-end" : true,
+ "expandable-space" : true,
+ "word-boundary" : true
+ },
+ {
+ "line-break" : true,
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-start" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "word-end" : true,
+ "expandable-space" : true,
+ "word-boundary" : true
+ },
+ {
+ "line-break" : true,
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-start" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-end" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "expandable-space" : true,
+ "word-boundary" : true
+ },
+ {
+ "line-break" : true,
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-start" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-end" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "expandable-space" : true,
+ "word-boundary" : true
+ },
+ {
+ "line-break" : true,
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-start" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-end" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-start" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-end" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "expandable-space" : true,
+ "word-boundary" : true
+ },
+ {
+ "line-break" : true,
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-start" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-end" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "expandable-space" : true,
+ "word-boundary" : true
+ },
+ {
+ "line-break" : true,
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-start" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-end" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "backspace-deletes-character" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "backspace-deletes-character" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "backspace-deletes-character" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "backspace-deletes-character" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-boundary" : true
+ },
+ {
+ "line-break" : true,
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-start" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-end" : true,
+ "word-boundary" : true
+ },
+ {
+ "line-break" : true,
+ "mandatory-break" : true,
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "sentence-boundary" : true,
+ "sentence-end" : true,
+ "word-boundary" : true
+ }
+ ],
"output" : {
- "is-wrapped" : true,
- "is-ellipsized" : false,
+ "wrapped" : true,
+ "ellipsized" : false,
+ "hypenated" : false,
"unknown-glyphs" : 0,
"width" : 552960,
"height" : 58368,
- "log-attrs" : [
- {
- "char-break" : true,
- "cursor-position" : true,
- "word-start" : true,
- "sentence-boundary" : true,
- "sentence-start" : true,
- "backspace-deletes-character" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "word-end" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "word-start" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "word-end" : true,
- "expandable-space" : true,
- "word-boundary" : true
- },
- {
- "line-break" : true,
- "char-break" : true,
- "cursor-position" : true,
- "word-start" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "word-end" : true,
- "expandable-space" : true,
- "word-boundary" : true
- },
- {
- "line-break" : true,
- "char-break" : true,
- "cursor-position" : true,
- "word-start" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "word-end" : true,
- "expandable-space" : true,
- "word-boundary" : true
- },
- {
- "line-break" : true,
- "char-break" : true,
- "cursor-position" : true,
- "word-start" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "word-end" : true,
- "expandable-space" : true,
- "word-boundary" : true
- },
- {
- "line-break" : true,
- "char-break" : true,
- "cursor-position" : true,
- "word-start" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "word-end" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "expandable-space" : true,
- "word-boundary" : true
- },
- {
- "line-break" : true,
- "char-break" : true,
- "cursor-position" : true,
- "word-start" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "word-end" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "expandable-space" : true,
- "word-boundary" : true
- },
- {
- "line-break" : true,
- "char-break" : true,
- "cursor-position" : true,
- "word-start" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "word-end" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "word-start" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "word-end" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "expandable-space" : true,
- "word-boundary" : true
- },
- {
- "line-break" : true,
- "char-break" : true,
- "cursor-position" : true,
- "word-start" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "word-end" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "expandable-space" : true,
- "word-boundary" : true
- },
- {
- "line-break" : true,
- "char-break" : true,
- "cursor-position" : true,
- "word-start" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "word-end" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "backspace-deletes-character" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "backspace-deletes-character" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "backspace-deletes-character" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "backspace-deletes-character" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "word-boundary" : true
- },
- {
- "line-break" : true,
- "char-break" : true,
- "cursor-position" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "word-start" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "word-end" : true,
- "word-boundary" : true
- },
- {
- "line-break" : true,
- "mandatory-break" : true,
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "sentence-boundary" : true,
- "sentence-end" : true,
- "word-boundary" : true
- }
- ],
"lines" : [
{
- "start-index" : 0,
- "length" : 55,
- "paragraph-start" : true,
- "direction" : "ltr",
- "runs" : [
- {
- "offset" : 0,
- "length" : 55,
- "text" : "id=3 UNION ALL SELECT NULL, NULL, CONCAT(0x7373737373, ",
- "bidi-level" : 0,
- "gravity" : "south",
- "language" : "en-us",
- "script" : "Latn",
- "font" : {
- "description" : "DejaVu Sans Mono 12",
- "checksum" : "84c5467cadd1f6f23db0d9fbb6377e0d301334d3b5f36e6d5acebd34d0857d3a",
- "matrix" : [
- 1,
- -0,
- -0,
- 1,
- 0,
- 0
+ "position" : [
+ 0,
+ 15360
+ ],
+ "line" : {
+ "start-index" : 0,
+ "length" : 55,
+ "start-offset" : 0,
+ "n-chars" : 55,
+ "wrapped" : true,
+ "ellipsized" : false,
+ "hyphenated" : false,
+ "justified" : false,
+ "paragraph-start" : true,
+ "paragraph-end" : false,
+ "direction" : "ltr",
+ "runs" : [
+ {
+ "offset" : 0,
+ "length" : 55,
+ "text" : "id=3 UNION ALL SELECT NULL, NULL, CONCAT(0x7373737373, ",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "Latn",
+ "font" : {
+ "description" : "DejaVu Sans Mono 12",
+ "checksum" : "84c5467cadd1f6f23db0d9fbb6377e0d301334d3b5f36e6d5acebd34d0857d3a"
+ },
+ "flags" : 0,
+ "y-offset" : 0,
+ "start-x-offset" : 0,
+ "end-x-offset" : 0,
+ "glyphs" : [
+ {
+ "glyph" : 76,
+ "width" : 10240,
+ "is-cluster-start" : true,
+ "log-cluster" : 0
+ },
+ {
+ "glyph" : 71,
+ "width" : 10240,
+ "is-cluster-start" : true,
+ "log-cluster" : 1
+ },
+ {
+ "glyph" : 32,
+ "width" : 10240,
+ "is-cluster-start" : true,
+ "log-cluster" : 2
+ },
+ {
+ "glyph" : 22,
+ "width" : 10240,
+ "is-cluster-start" : true,
+ "log-cluster" : 3
+ },
+ {
+ "glyph" : 3,
+ "width" : 10240,
+ "is-cluster-start" : true,
+ "log-cluster" : 4
+ },
+ {
+ "glyph" : 56,
+ "width" : 10240,
+ "is-cluster-start" : true,
+ "log-cluster" : 5
+ },
+ {
+ "glyph" : 49,
+ "width" : 10240,
+ "is-cluster-start" : true,
+ "log-cluster" : 6
+ },
+ {
+ "glyph" : 44,
+ "width" : 10240,
+ "is-cluster-start" : true,
+ "log-cluster" : 7
+ },
+ {
+ "glyph" : 50,
+ "width" : 10240,
+ "is-cluster-start" : true,
+ "log-cluster" : 8
+ },
+ {
+ "glyph" : 49,
+ "width" : 10240,
+ "is-cluster-start" : true,
+ "log-cluster" : 9
+ },
+ {
+ "glyph" : 3,
+ "width" : 10240,
+ "is-cluster-start" : true,
+ "log-cluster" : 10
+ },
+ {
+ "glyph" : 36,
+ "width" : 10240,
+ "is-cluster-start" : true,
+ "log-cluster" : 11
+ },
+ {
+ "glyph" : 47,
+ "width" : 10240,
+ "is-cluster-start" : true,
+ "log-cluster" : 12
+ },
+ {
+ "glyph" : 47,
+ "width" : 10240,
+ "is-cluster-start" : true,
+ "log-cluster" : 13
+ },
+ {
+ "glyph" : 3,
+ "width" : 10240,
+ "is-cluster-start" : true,
+ "log-cluster" : 14
+ },
+ {
+ "glyph" : 54,
+ "width" : 10240,
+ "is-cluster-start" : true,
+ "log-cluster" : 15
+ },
+ {
+ "glyph" : 40,
+ "width" : 10240,
+ "is-cluster-start" : true,
+ "log-cluster" : 16
+ },
+ {
+ "glyph" : 47,
+ "width" : 10240,
+ "is-cluster-start" : true,
+ "log-cluster" : 17
+ },
+ {
+ "glyph" : 40,
+ "width" : 10240,
+ "is-cluster-start" : true,
+ "log-cluster" : 18
+ },
+ {
+ "glyph" : 38,
+ "width" : 10240,
+ "is-cluster-start" : true,
+ "log-cluster" : 19
+ },
+ {
+ "glyph" : 55,
+ "width" : 10240,
+ "is-cluster-start" : true,
+ "log-cluster" : 20
+ },
+ {
+ "glyph" : 3,
+ "width" : 10240,
+ "is-cluster-start" : true,
+ "log-cluster" : 21
+ },
+ {
+ "glyph" : 49,
+ "width" : 10240,
+ "is-cluster-start" : true,
+ "log-cluster" : 22
+ },
+ {
+ "glyph" : 56,
+ "width" : 10240,
+ "is-cluster-start" : true,
+ "log-cluster" : 23
+ },
+ {
+ "glyph" : 47,
+ "width" : 10240,
+ "is-cluster-start" : true,
+ "log-cluster" : 24
+ },
+ {
+ "glyph" : 47,
+ "width" : 10240,
+ "is-cluster-start" : true,
+ "log-cluster" : 25
+ },
+ {
+ "glyph" : 15,
+ "width" : 10240,
+ "is-cluster-start" : true,
+ "log-cluster" : 26
+ },
+ {
+ "glyph" : 3,
+ "width" : 10240,
+ "is-cluster-start" : true,
+ "log-cluster" : 27
+ },
+ {
+ "glyph" : 49,
+ "width" : 10240,
+ "is-cluster-start" : true,
+ "log-cluster" : 28
+ },
+ {
+ "glyph" : 56,
+ "width" : 10240,
+ "is-cluster-start" : true,
+ "log-cluster" : 29
+ },
+ {
+ "glyph" : 47,
+ "width" : 10240,
+ "is-cluster-start" : true,
+ "log-cluster" : 30
+ },
+ {
+ "glyph" : 47,
+ "width" : 10240,
+ "is-cluster-start" : true,
+ "log-cluster" : 31
+ },
+ {
+ "glyph" : 15,
+ "width" : 10240,
+ "is-cluster-start" : true,
+ "log-cluster" : 32
+ },
+ {
+ "glyph" : 3,
+ "width" : 10240,
+ "is-cluster-start" : true,
+ "log-cluster" : 33
+ },
+ {
+ "glyph" : 38,
+ "width" : 10240,
+ "is-cluster-start" : true,
+ "log-cluster" : 34
+ },
+ {
+ "glyph" : 50,
+ "width" : 10240,
+ "is-cluster-start" : true,
+ "log-cluster" : 35
+ },
+ {
+ "glyph" : 49,
+ "width" : 10240,
+ "is-cluster-start" : true,
+ "log-cluster" : 36
+ },
+ {
+ "glyph" : 38,
+ "width" : 10240,
+ "is-cluster-start" : true,
+ "log-cluster" : 37
+ },
+ {
+ "glyph" : 36,
+ "width" : 10240,
+ "is-cluster-start" : true,
+ "log-cluster" : 38
+ },
+ {
+ "glyph" : 55,
+ "width" : 10240,
+ "is-cluster-start" : true,
+ "log-cluster" : 39
+ },
+ {
+ "glyph" : 11,
+ "width" : 10240,
+ "is-cluster-start" : true,
+ "log-cluster" : 40
+ },
+ {
+ "glyph" : 19,
+ "width" : 10240,
+ "is-cluster-start" : true,
+ "log-cluster" : 41
+ },
+ {
+ "glyph" : 91,
+ "width" : 10240,
+ "is-cluster-start" : true,
+ "log-cluster" : 42
+ },
+ {
+ "glyph" : 26,
+ "width" : 10240,
+ "is-cluster-start" : true,
+ "log-cluster" : 43
+ },
+ {
+ "glyph" : 22,
+ "width" : 10240,
+ "is-cluster-start" : true,
+ "log-cluster" : 44
+ },
+ {
+ "glyph" : 26,
+ "width" : 10240,
+ "is-cluster-start" : true,
+ "log-cluster" : 45
+ },
+ {
+ "glyph" : 22,
+ "width" : 10240,
+ "is-cluster-start" : true,
+ "log-cluster" : 46
+ },
+ {
+ "glyph" : 26,
+ "width" : 10240,
+ "is-cluster-start" : true,
+ "log-cluster" : 47
+ },
+ {
+ "glyph" : 22,
+ "width" : 10240,
+ "is-cluster-start" : true,
+ "log-cluster" : 48
+ },
+ {
+ "glyph" : 26,
+ "width" : 10240,
+ "is-cluster-start" : true,
+ "log-cluster" : 49
+ },
+ {
+ "glyph" : 22,
+ "width" : 10240,
+ "is-cluster-start" : true,
+ "log-cluster" : 50
+ },
+ {
+ "glyph" : 26,
+ "width" : 10240,
+ "is-cluster-start" : true,
+ "log-cluster" : 51
+ },
+ {
+ "glyph" : 22,
+ "width" : 10240,
+ "is-cluster-start" : true,
+ "log-cluster" : 52
+ },
+ {
+ "glyph" : 15,
+ "width" : 10240,
+ "is-cluster-start" : true,
+ "log-cluster" : 53
+ },
+ {
+ "glyph" : 268435455,
+ "width" : 0,
+ "is-cluster-start" : true,
+ "log-cluster" : 54
+ }
]
- },
- "flags" : 0,
- "y-offset" : 0,
- "start-x-offset" : 0,
- "end-x-offset" : 0,
- "glyphs" : [
- {
- "glyph" : 76,
- "width" : 10240,
- "is-cluster-start" : true,
- "log-cluster" : 0
- },
- {
- "glyph" : 71,
- "width" : 10240,
- "is-cluster-start" : true,
- "log-cluster" : 1
- },
- {
- "glyph" : 32,
- "width" : 10240,
- "is-cluster-start" : true,
- "log-cluster" : 2
- },
- {
- "glyph" : 22,
- "width" : 10240,
- "is-cluster-start" : true,
- "log-cluster" : 3
- },
- {
- "glyph" : 3,
- "width" : 10240,
- "is-cluster-start" : true,
- "log-cluster" : 4
- },
- {
- "glyph" : 56,
- "width" : 10240,
- "is-cluster-start" : true,
- "log-cluster" : 5
- },
- {
- "glyph" : 49,
- "width" : 10240,
- "is-cluster-start" : true,
- "log-cluster" : 6
- },
- {
- "glyph" : 44,
- "width" : 10240,
- "is-cluster-start" : true,
- "log-cluster" : 7
- },
- {
- "glyph" : 50,
- "width" : 10240,
- "is-cluster-start" : true,
- "log-cluster" : 8
- },
- {
- "glyph" : 49,
- "width" : 10240,
- "is-cluster-start" : true,
- "log-cluster" : 9
- },
- {
- "glyph" : 3,
- "width" : 10240,
- "is-cluster-start" : true,
- "log-cluster" : 10
- },
- {
- "glyph" : 36,
- "width" : 10240,
- "is-cluster-start" : true,
- "log-cluster" : 11
- },
- {
- "glyph" : 47,
- "width" : 10240,
- "is-cluster-start" : true,
- "log-cluster" : 12
- },
- {
- "glyph" : 47,
- "width" : 10240,
- "is-cluster-start" : true,
- "log-cluster" : 13
- },
- {
- "glyph" : 3,
- "width" : 10240,
- "is-cluster-start" : true,
- "log-cluster" : 14
- },
- {
- "glyph" : 54,
- "width" : 10240,
- "is-cluster-start" : true,
- "log-cluster" : 15
- },
- {
- "glyph" : 40,
- "width" : 10240,
- "is-cluster-start" : true,
- "log-cluster" : 16
- },
- {
- "glyph" : 47,
- "width" : 10240,
- "is-cluster-start" : true,
- "log-cluster" : 17
- },
- {
- "glyph" : 40,
- "width" : 10240,
- "is-cluster-start" : true,
- "log-cluster" : 18
- },
- {
- "glyph" : 38,
- "width" : 10240,
- "is-cluster-start" : true,
- "log-cluster" : 19
- },
- {
- "glyph" : 55,
- "width" : 10240,
- "is-cluster-start" : true,
- "log-cluster" : 20
- },
- {
- "glyph" : 3,
- "width" : 10240,
- "is-cluster-start" : true,
- "log-cluster" : 21
- },
- {
- "glyph" : 49,
- "width" : 10240,
- "is-cluster-start" : true,
- "log-cluster" : 22
- },
- {
- "glyph" : 56,
- "width" : 10240,
- "is-cluster-start" : true,
- "log-cluster" : 23
- },
- {
- "glyph" : 47,
- "width" : 10240,
- "is-cluster-start" : true,
- "log-cluster" : 24
- },
- {
- "glyph" : 47,
- "width" : 10240,
- "is-cluster-start" : true,
- "log-cluster" : 25
- },
- {
- "glyph" : 15,
- "width" : 10240,
- "is-cluster-start" : true,
- "log-cluster" : 26
- },
- {
- "glyph" : 3,
- "width" : 10240,
- "is-cluster-start" : true,
- "log-cluster" : 27
- },
- {
- "glyph" : 49,
- "width" : 10240,
- "is-cluster-start" : true,
- "log-cluster" : 28
- },
- {
- "glyph" : 56,
- "width" : 10240,
- "is-cluster-start" : true,
- "log-cluster" : 29
- },
- {
- "glyph" : 47,
- "width" : 10240,
- "is-cluster-start" : true,
- "log-cluster" : 30
- },
- {
- "glyph" : 47,
- "width" : 10240,
- "is-cluster-start" : true,
- "log-cluster" : 31
- },
- {
- "glyph" : 15,
- "width" : 10240,
- "is-cluster-start" : true,
- "log-cluster" : 32
- },
- {
- "glyph" : 3,
- "width" : 10240,
- "is-cluster-start" : true,
- "log-cluster" : 33
- },
- {
- "glyph" : 38,
- "width" : 10240,
- "is-cluster-start" : true,
- "log-cluster" : 34
- },
- {
- "glyph" : 50,
- "width" : 10240,
- "is-cluster-start" : true,
- "log-cluster" : 35
- },
- {
- "glyph" : 49,
- "width" : 10240,
- "is-cluster-start" : true,
- "log-cluster" : 36
- },
- {
- "glyph" : 38,
- "width" : 10240,
- "is-cluster-start" : true,
- "log-cluster" : 37
- },
- {
- "glyph" : 36,
- "width" : 10240,
- "is-cluster-start" : true,
- "log-cluster" : 38
- },
- {
- "glyph" : 55,
- "width" : 10240,
- "is-cluster-start" : true,
- "log-cluster" : 39
- },
- {
- "glyph" : 11,
- "width" : 10240,
- "is-cluster-start" : true,
- "log-cluster" : 40
- },
- {
- "glyph" : 19,
- "width" : 10240,
- "is-cluster-start" : true,
- "log-cluster" : 41
- },
- {
- "glyph" : 91,
- "width" : 10240,
- "is-cluster-start" : true,
- "log-cluster" : 42
- },
- {
- "glyph" : 26,
- "width" : 10240,
- "is-cluster-start" : true,
- "log-cluster" : 43
- },
- {
- "glyph" : 22,
- "width" : 10240,
- "is-cluster-start" : true,
- "log-cluster" : 44
- },
- {
- "glyph" : 26,
- "width" : 10240,
- "is-cluster-start" : true,
- "log-cluster" : 45
- },
- {
- "glyph" : 22,
- "width" : 10240,
- "is-cluster-start" : true,
- "log-cluster" : 46
- },
- {
- "glyph" : 26,
- "width" : 10240,
- "is-cluster-start" : true,
- "log-cluster" : 47
- },
- {
- "glyph" : 22,
- "width" : 10240,
- "is-cluster-start" : true,
- "log-cluster" : 48
- },
- {
- "glyph" : 26,
- "width" : 10240,
- "is-cluster-start" : true,
- "log-cluster" : 49
- },
- {
- "glyph" : 22,
- "width" : 10240,
- "is-cluster-start" : true,
- "log-cluster" : 50
- },
- {
- "glyph" : 26,
- "width" : 10240,
- "is-cluster-start" : true,
- "log-cluster" : 51
- },
- {
- "glyph" : 22,
- "width" : 10240,
- "is-cluster-start" : true,
- "log-cluster" : 52
- },
- {
- "glyph" : 15,
- "width" : 10240,
- "is-cluster-start" : true,
- "log-cluster" : 53
- },
- {
- "glyph" : 268435455,
- "width" : 0,
- "is-cluster-start" : true,
- "log-cluster" : 54
- }
- ]
- }
- ]
- },
- {
- "start-index" : 55,
- "length" : 25,
- "paragraph-start" : false,
- "direction" : "ltr",
- "runs" : [
- {
- "offset" : 55,
- "length" : 25,
- "text" : "0x73323173656374657374), ",
- "bidi-level" : 0,
- "gravity" : "south",
- "language" : "en-us",
- "script" : "Latn",
- "font" : {
- "description" : "DejaVu Sans Mono 12",
- "checksum" : "84c5467cadd1f6f23db0d9fbb6377e0d301334d3b5f36e6d5acebd34d0857d3a",
- "matrix" : [
- 1,
- -0,
- -0,
- 1,
- 0,
- 0
+ }
+ ]
+ }
+ },
+ {
+ "position" : [
+ 0,
+ 34816
+ ],
+ "line" : {
+ "start-index" : 55,
+ "length" : 25,
+ "start-offset" : 55,
+ "n-chars" : 25,
+ "wrapped" : true,
+ "ellipsized" : false,
+ "hyphenated" : false,
+ "justified" : false,
+ "paragraph-start" : false,
+ "paragraph-end" : false,
+ "direction" : "ltr",
+ "runs" : [
+ {
+ "offset" : 55,
+ "length" : 25,
+ "text" : "0x73323173656374657374), ",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "Latn",
+ "font" : {
+ "description" : "DejaVu Sans Mono 12",
+ "checksum" : "84c5467cadd1f6f23db0d9fbb6377e0d301334d3b5f36e6d5acebd34d0857d3a"
+ },
+ "flags" : 0,
+ "y-offset" : 0,
+ "start-x-offset" : 0,
+ "end-x-offset" : 0,
+ "glyphs" : [
+ {
+ "glyph" : 19,
+ "width" : 10240,
+ "is-cluster-start" : true,
+ "log-cluster" : 0
+ },
+ {
+ "glyph" : 91,
+ "width" : 10240,
+ "is-cluster-start" : true,
+ "log-cluster" : 1
+ },
+ {
+ "glyph" : 26,
+ "width" : 10240,
+ "is-cluster-start" : true,
+ "log-cluster" : 2
+ },
+ {
+ "glyph" : 22,
+ "width" : 10240,
+ "is-cluster-start" : true,
+ "log-cluster" : 3
+ },
+ {
+ "glyph" : 22,
+ "width" : 10240,
+ "is-cluster-start" : true,
+ "log-cluster" : 4
+ },
+ {
+ "glyph" : 21,
+ "width" : 10240,
+ "is-cluster-start" : true,
+ "log-cluster" : 5
+ },
+ {
+ "glyph" : 22,
+ "width" : 10240,
+ "is-cluster-start" : true,
+ "log-cluster" : 6
+ },
+ {
+ "glyph" : 20,
+ "width" : 10240,
+ "is-cluster-start" : true,
+ "log-cluster" : 7
+ },
+ {
+ "glyph" : 26,
+ "width" : 10240,
+ "is-cluster-start" : true,
+ "log-cluster" : 8
+ },
+ {
+ "glyph" : 22,
+ "width" : 10240,
+ "is-cluster-start" : true,
+ "log-cluster" : 9
+ },
+ {
+ "glyph" : 25,
+ "width" : 10240,
+ "is-cluster-start" : true,
+ "log-cluster" : 10
+ },
+ {
+ "glyph" : 24,
+ "width" : 10240,
+ "is-cluster-start" : true,
+ "log-cluster" : 11
+ },
+ {
+ "glyph" : 25,
+ "width" : 10240,
+ "is-cluster-start" : true,
+ "log-cluster" : 12
+ },
+ {
+ "glyph" : 22,
+ "width" : 10240,
+ "is-cluster-start" : true,
+ "log-cluster" : 13
+ },
+ {
+ "glyph" : 26,
+ "width" : 10240,
+ "is-cluster-start" : true,
+ "log-cluster" : 14
+ },
+ {
+ "glyph" : 23,
+ "width" : 10240,
+ "is-cluster-start" : true,
+ "log-cluster" : 15
+ },
+ {
+ "glyph" : 25,
+ "width" : 10240,
+ "is-cluster-start" : true,
+ "log-cluster" : 16
+ },
+ {
+ "glyph" : 24,
+ "width" : 10240,
+ "is-cluster-start" : true,
+ "log-cluster" : 17
+ },
+ {
+ "glyph" : 26,
+ "width" : 10240,
+ "is-cluster-start" : true,
+ "log-cluster" : 18
+ },
+ {
+ "glyph" : 22,
+ "width" : 10240,
+ "is-cluster-start" : true,
+ "log-cluster" : 19
+ },
+ {
+ "glyph" : 26,
+ "width" : 10240,
+ "is-cluster-start" : true,
+ "log-cluster" : 20
+ },
+ {
+ "glyph" : 23,
+ "width" : 10240,
+ "is-cluster-start" : true,
+ "log-cluster" : 21
+ },
+ {
+ "glyph" : 12,
+ "width" : 10240,
+ "is-cluster-start" : true,
+ "log-cluster" : 22
+ },
+ {
+ "glyph" : 15,
+ "width" : 10240,
+ "is-cluster-start" : true,
+ "log-cluster" : 23
+ },
+ {
+ "glyph" : 268435455,
+ "width" : 0,
+ "is-cluster-start" : true,
+ "log-cluster" : 24
+ }
]
- },
- "flags" : 0,
- "y-offset" : 0,
- "start-x-offset" : 0,
- "end-x-offset" : 0,
- "glyphs" : [
- {
- "glyph" : 19,
- "width" : 10240,
- "is-cluster-start" : true,
- "log-cluster" : 0
- },
- {
- "glyph" : 91,
- "width" : 10240,
- "is-cluster-start" : true,
- "log-cluster" : 1
- },
- {
- "glyph" : 26,
- "width" : 10240,
- "is-cluster-start" : true,
- "log-cluster" : 2
- },
- {
- "glyph" : 22,
- "width" : 10240,
- "is-cluster-start" : true,
- "log-cluster" : 3
- },
- {
- "glyph" : 22,
- "width" : 10240,
- "is-cluster-start" : true,
- "log-cluster" : 4
- },
- {
- "glyph" : 21,
- "width" : 10240,
- "is-cluster-start" : true,
- "log-cluster" : 5
- },
- {
- "glyph" : 22,
- "width" : 10240,
- "is-cluster-start" : true,
- "log-cluster" : 6
- },
- {
- "glyph" : 20,
- "width" : 10240,
- "is-cluster-start" : true,
- "log-cluster" : 7
- },
- {
- "glyph" : 26,
- "width" : 10240,
- "is-cluster-start" : true,
- "log-cluster" : 8
- },
- {
- "glyph" : 22,
- "width" : 10240,
- "is-cluster-start" : true,
- "log-cluster" : 9
- },
- {
- "glyph" : 25,
- "width" : 10240,
- "is-cluster-start" : true,
- "log-cluster" : 10
- },
- {
- "glyph" : 24,
- "width" : 10240,
- "is-cluster-start" : true,
- "log-cluster" : 11
- },
- {
- "glyph" : 25,
- "width" : 10240,
- "is-cluster-start" : true,
- "log-cluster" : 12
- },
- {
- "glyph" : 22,
- "width" : 10240,
- "is-cluster-start" : true,
- "log-cluster" : 13
- },
- {
- "glyph" : 26,
- "width" : 10240,
- "is-cluster-start" : true,
- "log-cluster" : 14
- },
- {
- "glyph" : 23,
- "width" : 10240,
- "is-cluster-start" : true,
- "log-cluster" : 15
- },
- {
- "glyph" : 25,
- "width" : 10240,
- "is-cluster-start" : true,
- "log-cluster" : 16
- },
- {
- "glyph" : 24,
- "width" : 10240,
- "is-cluster-start" : true,
- "log-cluster" : 17
- },
- {
- "glyph" : 26,
- "width" : 10240,
- "is-cluster-start" : true,
- "log-cluster" : 18
- },
- {
- "glyph" : 22,
- "width" : 10240,
- "is-cluster-start" : true,
- "log-cluster" : 19
- },
- {
- "glyph" : 26,
- "width" : 10240,
- "is-cluster-start" : true,
- "log-cluster" : 20
- },
- {
- "glyph" : 23,
- "width" : 10240,
- "is-cluster-start" : true,
- "log-cluster" : 21
- },
- {
- "glyph" : 12,
- "width" : 10240,
- "is-cluster-start" : true,
- "log-cluster" : 22
- },
- {
- "glyph" : 15,
- "width" : 10240,
- "is-cluster-start" : true,
- "log-cluster" : 23
- },
- {
- "glyph" : 268435455,
- "width" : 0,
- "is-cluster-start" : true,
- "log-cluster" : 24
- }
- ]
- }
- ]
- },
- {
- "start-index" : 80,
- "length" : 20,
- "paragraph-start" : false,
- "direction" : "ltr",
- "runs" : [
- {
- "offset" : 80,
- "length" : 6,
- "text" : "NULL--",
- "bidi-level" : 0,
- "gravity" : "south",
- "language" : "en-us",
- "script" : "Latn",
- "font" : {
- "description" : "DejaVu Sans Mono 12",
- "checksum" : "84c5467cadd1f6f23db0d9fbb6377e0d301334d3b5f36e6d5acebd34d0857d3a",
- "matrix" : [
- 1,
- -0,
- -0,
- 1,
- 0,
- 0
+ }
+ ]
+ }
+ },
+ {
+ "position" : [
+ 0,
+ 54272
+ ],
+ "line" : {
+ "start-index" : 80,
+ "length" : 20,
+ "start-offset" : 80,
+ "n-chars" : 20,
+ "wrapped" : false,
+ "ellipsized" : false,
+ "hyphenated" : false,
+ "justified" : false,
+ "paragraph-start" : false,
+ "paragraph-end" : true,
+ "direction" : "ltr",
+ "runs" : [
+ {
+ "offset" : 80,
+ "length" : 6,
+ "text" : "NULL--",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "Latn",
+ "font" : {
+ "description" : "DejaVu Sans Mono 12",
+ "checksum" : "84c5467cadd1f6f23db0d9fbb6377e0d301334d3b5f36e6d5acebd34d0857d3a"
+ },
+ "flags" : 0,
+ "y-offset" : 0,
+ "start-x-offset" : 0,
+ "end-x-offset" : 0,
+ "glyphs" : [
+ {
+ "glyph" : 49,
+ "width" : 10240,
+ "is-cluster-start" : true,
+ "log-cluster" : 0
+ },
+ {
+ "glyph" : 56,
+ "width" : 10240,
+ "is-cluster-start" : true,
+ "log-cluster" : 1
+ },
+ {
+ "glyph" : 47,
+ "width" : 10240,
+ "is-cluster-start" : true,
+ "log-cluster" : 2
+ },
+ {
+ "glyph" : 47,
+ "width" : 10240,
+ "is-cluster-start" : true,
+ "log-cluster" : 3
+ },
+ {
+ "glyph" : 16,
+ "width" : 10240,
+ "is-cluster-start" : true,
+ "log-cluster" : 4
+ },
+ {
+ "glyph" : 16,
+ "width" : 10240,
+ "is-cluster-start" : true,
+ "log-cluster" : 5
+ }
]
},
- "flags" : 0,
- "y-offset" : 0,
- "start-x-offset" : 0,
- "end-x-offset" : 0,
- "glyphs" : [
- {
- "glyph" : 49,
- "width" : 10240,
- "is-cluster-start" : true,
- "log-cluster" : 0
- },
- {
- "glyph" : 56,
- "width" : 10240,
- "is-cluster-start" : true,
- "log-cluster" : 1
- },
- {
- "glyph" : 47,
- "width" : 10240,
- "is-cluster-start" : true,
- "log-cluster" : 2
- },
- {
- "glyph" : 47,
- "width" : 10240,
- "is-cluster-start" : true,
- "log-cluster" : 3
- },
- {
- "glyph" : 16,
- "width" : 10240,
- "is-cluster-start" : true,
- "log-cluster" : 4
- },
- {
- "glyph" : 16,
- "width" : 10240,
- "is-cluster-start" : true,
- "log-cluster" : 5
- }
- ]
- },
- {
- "offset" : 86,
- "length" : 1,
- "text" : "\t",
- "bidi-level" : 0,
- "gravity" : "south",
- "language" : "en-us",
- "script" : "Latn",
- "font" : {
- "description" : "DejaVu Sans Mono 12",
- "checksum" : "84c5467cadd1f6f23db0d9fbb6377e0d301334d3b5f36e6d5acebd34d0857d3a",
- "matrix" : [
- 1,
- -0,
- -0,
- 1,
- 0,
- 0
+ {
+ "offset" : 86,
+ "length" : 1,
+ "text" : "\t",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "Latn",
+ "font" : {
+ "description" : "DejaVu Sans Mono 12",
+ "checksum" : "84c5467cadd1f6f23db0d9fbb6377e0d301334d3b5f36e6d5acebd34d0857d3a"
+ },
+ "flags" : 0,
+ "y-offset" : 0,
+ "start-x-offset" : 0,
+ "end-x-offset" : 0,
+ "glyphs" : [
+ {
+ "glyph" : 268435455,
+ "width" : 20480,
+ "is-cluster-start" : true,
+ "log-cluster" : 0
+ }
]
},
- "flags" : 0,
- "y-offset" : 0,
- "start-x-offset" : 0,
- "end-x-offset" : 0,
- "glyphs" : [
- {
- "glyph" : 268435455,
- "width" : 20480,
- "is-cluster-start" : true,
- "log-cluster" : 0
- }
- ]
- },
- {
- "offset" : 87,
- "length" : 1,
- "text" : "\t",
- "bidi-level" : 0,
- "gravity" : "south",
- "language" : "en-us",
- "script" : "Latn",
- "font" : {
- "description" : "DejaVu Sans Mono 12",
- "checksum" : "84c5467cadd1f6f23db0d9fbb6377e0d301334d3b5f36e6d5acebd34d0857d3a",
- "matrix" : [
- 1,
- -0,
- -0,
- 1,
- 0,
- 0
+ {
+ "offset" : 87,
+ "length" : 1,
+ "text" : "\t",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "Latn",
+ "font" : {
+ "description" : "DejaVu Sans Mono 12",
+ "checksum" : "84c5467cadd1f6f23db0d9fbb6377e0d301334d3b5f36e6d5acebd34d0857d3a"
+ },
+ "flags" : 0,
+ "y-offset" : 0,
+ "start-x-offset" : 0,
+ "end-x-offset" : 0,
+ "glyphs" : [
+ {
+ "glyph" : 268435455,
+ "width" : 81920,
+ "is-cluster-start" : true,
+ "log-cluster" : 0
+ }
]
},
- "flags" : 0,
- "y-offset" : 0,
- "start-x-offset" : 0,
- "end-x-offset" : 0,
- "glyphs" : [
- {
- "glyph" : 268435455,
- "width" : 81920,
- "is-cluster-start" : true,
- "log-cluster" : 0
- }
- ]
- },
- {
- "offset" : 88,
- "length" : 1,
- "text" : "\t",
- "bidi-level" : 0,
- "gravity" : "south",
- "language" : "en-us",
- "script" : "Latn",
- "font" : {
- "description" : "DejaVu Sans Mono 12",
- "checksum" : "84c5467cadd1f6f23db0d9fbb6377e0d301334d3b5f36e6d5acebd34d0857d3a",
- "matrix" : [
- 1,
- -0,
- -0,
- 1,
- 0,
- 0
+ {
+ "offset" : 88,
+ "length" : 1,
+ "text" : "\t",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "Latn",
+ "font" : {
+ "description" : "DejaVu Sans Mono 12",
+ "checksum" : "84c5467cadd1f6f23db0d9fbb6377e0d301334d3b5f36e6d5acebd34d0857d3a"
+ },
+ "flags" : 0,
+ "y-offset" : 0,
+ "start-x-offset" : 0,
+ "end-x-offset" : 0,
+ "glyphs" : [
+ {
+ "glyph" : 268435455,
+ "width" : 81920,
+ "is-cluster-start" : true,
+ "log-cluster" : 0
+ }
]
},
- "flags" : 0,
- "y-offset" : 0,
- "start-x-offset" : 0,
- "end-x-offset" : 0,
- "glyphs" : [
- {
- "glyph" : 268435455,
- "width" : 81920,
- "is-cluster-start" : true,
- "log-cluster" : 0
- }
- ]
- },
- {
- "offset" : 89,
- "length" : 1,
- "text" : "\t",
- "bidi-level" : 0,
- "gravity" : "south",
- "language" : "en-us",
- "script" : "Latn",
- "font" : {
- "description" : "DejaVu Sans Mono 12",
- "checksum" : "84c5467cadd1f6f23db0d9fbb6377e0d301334d3b5f36e6d5acebd34d0857d3a",
- "matrix" : [
- 1,
- -0,
- -0,
- 1,
- 0,
- 0
+ {
+ "offset" : 89,
+ "length" : 1,
+ "text" : "\t",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "Latn",
+ "font" : {
+ "description" : "DejaVu Sans Mono 12",
+ "checksum" : "84c5467cadd1f6f23db0d9fbb6377e0d301334d3b5f36e6d5acebd34d0857d3a"
+ },
+ "flags" : 0,
+ "y-offset" : 0,
+ "start-x-offset" : 0,
+ "end-x-offset" : 0,
+ "glyphs" : [
+ {
+ "glyph" : 268435455,
+ "width" : 81920,
+ "is-cluster-start" : true,
+ "log-cluster" : 0
+ }
]
},
- "flags" : 0,
- "y-offset" : 0,
- "start-x-offset" : 0,
- "end-x-offset" : 0,
- "glyphs" : [
- {
- "glyph" : 268435455,
- "width" : 81920,
- "is-cluster-start" : true,
- "log-cluster" : 0
- }
- ]
- },
- {
- "offset" : 90,
- "length" : 10,
- "text" : "-->(MYSQL)",
- "bidi-level" : 0,
- "gravity" : "south",
- "language" : "en-us",
- "script" : "Latn",
- "font" : {
- "description" : "DejaVu Sans Mono 12",
- "checksum" : "84c5467cadd1f6f23db0d9fbb6377e0d301334d3b5f36e6d5acebd34d0857d3a",
- "matrix" : [
- 1,
- -0,
- -0,
- 1,
- 0,
- 0
+ {
+ "offset" : 90,
+ "length" : 10,
+ "text" : "-->(MYSQL)",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "Latn",
+ "font" : {
+ "description" : "DejaVu Sans Mono 12",
+ "checksum" : "84c5467cadd1f6f23db0d9fbb6377e0d301334d3b5f36e6d5acebd34d0857d3a"
+ },
+ "flags" : 0,
+ "y-offset" : 0,
+ "start-x-offset" : 0,
+ "end-x-offset" : 0,
+ "glyphs" : [
+ {
+ "glyph" : 16,
+ "width" : 10240,
+ "is-cluster-start" : true,
+ "log-cluster" : 0
+ },
+ {
+ "glyph" : 16,
+ "width" : 10240,
+ "is-cluster-start" : true,
+ "log-cluster" : 1
+ },
+ {
+ "glyph" : 33,
+ "width" : 10240,
+ "is-cluster-start" : true,
+ "log-cluster" : 2
+ },
+ {
+ "glyph" : 11,
+ "width" : 10240,
+ "is-cluster-start" : true,
+ "log-cluster" : 3
+ },
+ {
+ "glyph" : 48,
+ "width" : 10240,
+ "is-cluster-start" : true,
+ "log-cluster" : 4
+ },
+ {
+ "glyph" : 60,
+ "width" : 10240,
+ "is-cluster-start" : true,
+ "log-cluster" : 5
+ },
+ {
+ "glyph" : 54,
+ "width" : 10240,
+ "is-cluster-start" : true,
+ "log-cluster" : 6
+ },
+ {
+ "glyph" : 52,
+ "width" : 10240,
+ "is-cluster-start" : true,
+ "log-cluster" : 7
+ },
+ {
+ "glyph" : 47,
+ "width" : 10240,
+ "is-cluster-start" : true,
+ "log-cluster" : 8
+ },
+ {
+ "glyph" : 12,
+ "width" : 10240,
+ "is-cluster-start" : true,
+ "log-cluster" : 9
+ }
]
- },
- "flags" : 0,
- "y-offset" : 0,
- "start-x-offset" : 0,
- "end-x-offset" : 0,
- "glyphs" : [
- {
- "glyph" : 16,
- "width" : 10240,
- "is-cluster-start" : true,
- "log-cluster" : 0
- },
- {
- "glyph" : 16,
- "width" : 10240,
- "is-cluster-start" : true,
- "log-cluster" : 1
- },
- {
- "glyph" : 33,
- "width" : 10240,
- "is-cluster-start" : true,
- "log-cluster" : 2
- },
- {
- "glyph" : 11,
- "width" : 10240,
- "is-cluster-start" : true,
- "log-cluster" : 3
- },
- {
- "glyph" : 48,
- "width" : 10240,
- "is-cluster-start" : true,
- "log-cluster" : 4
- },
- {
- "glyph" : 60,
- "width" : 10240,
- "is-cluster-start" : true,
- "log-cluster" : 5
- },
- {
- "glyph" : 54,
- "width" : 10240,
- "is-cluster-start" : true,
- "log-cluster" : 6
- },
- {
- "glyph" : 52,
- "width" : 10240,
- "is-cluster-start" : true,
- "log-cluster" : 7
- },
- {
- "glyph" : 47,
- "width" : 10240,
- "is-cluster-start" : true,
- "log-cluster" : 8
- },
- {
- "glyph" : 12,
- "width" : 10240,
- "is-cluster-start" : true,
- "log-cluster" : 9
- }
- ]
- }
- ]
+ }
+ ]
+ }
}
]
}
diff --git a/tests/layouts/tabs-nowrap.layout b/tests/layouts/tabs-nowrap.layout
index 8986aee3..dfbd8c16 100644
--- a/tests/layouts/tabs-nowrap.layout
+++ b/tests/layouts/tabs-nowrap.layout
@@ -23,340 +23,335 @@
}
],
"font" : "DejaVu Sans Mono 32",
+ "log-attrs" : [
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-start" : true,
+ "sentence-boundary" : true,
+ "sentence-start" : true,
+ "backspace-deletes-character" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true
+ },
+ {
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "word-end" : true,
+ "word-boundary" : true
+ },
+ {
+ "line-break" : true,
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-start" : true,
+ "backspace-deletes-character" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "word-end" : true,
+ "sentence-end" : true,
+ "word-boundary" : true
+ },
+ {
+ "line-break" : true,
+ "mandatory-break" : true,
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-start" : true,
+ "sentence-boundary" : true,
+ "sentence-start" : true,
+ "backspace-deletes-character" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true
+ },
+ {
+ "line-break" : true,
+ "mandatory-break" : true,
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "word-end" : true,
+ "sentence-boundary" : true,
+ "sentence-end" : true,
+ "word-boundary" : true
+ }
+ ],
"output" : {
- "is-wrapped" : false,
- "is-ellipsized" : false,
+ "wrapped" : false,
+ "ellipsized" : false,
+ "hypenated" : false,
"unknown-glyphs" : 0,
"width" : 239616,
"height" : 104448,
- "log-attrs" : [
- {
- "char-break" : true,
- "cursor-position" : true,
- "word-start" : true,
- "sentence-boundary" : true,
- "sentence-start" : true,
- "backspace-deletes-character" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true
- },
- {
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "word-end" : true,
- "word-boundary" : true
- },
- {
- "line-break" : true,
- "char-break" : true,
- "cursor-position" : true,
- "word-start" : true,
- "backspace-deletes-character" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "word-end" : true,
- "sentence-end" : true,
- "word-boundary" : true
- },
- {
- "line-break" : true,
- "mandatory-break" : true,
- "char-break" : true,
- "cursor-position" : true,
- "word-start" : true,
- "sentence-boundary" : true,
- "sentence-start" : true,
- "backspace-deletes-character" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true
- },
- {
- "line-break" : true,
- "mandatory-break" : true,
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "word-end" : true,
- "sentence-boundary" : true,
- "sentence-end" : true,
- "word-boundary" : true
- }
- ],
"lines" : [
{
- "start-index" : 0,
- "length" : 5,
- "paragraph-start" : true,
- "direction" : "ltr",
- "runs" : [
- {
- "offset" : 0,
- "length" : 3,
- "text" : "123",
- "bidi-level" : 0,
- "gravity" : "south",
- "language" : "en-us",
- "script" : "Zyyy",
- "font" : {
- "description" : "DejaVu Sans Mono 32",
- "checksum" : "84c5467cadd1f6f23db0d9fbb6377e0d301334d3b5f36e6d5acebd34d0857d3a",
- "matrix" : [
- 1,
- -0,
- -0,
- 1,
- 0,
- 0
+ "position" : [
+ 0,
+ 40960
+ ],
+ "line" : {
+ "start-index" : 0,
+ "length" : 5,
+ "start-offset" : 0,
+ "n-chars" : 5,
+ "wrapped" : false,
+ "ellipsized" : false,
+ "hyphenated" : false,
+ "justified" : false,
+ "paragraph-start" : true,
+ "paragraph-end" : true,
+ "direction" : "ltr",
+ "runs" : [
+ {
+ "offset" : 0,
+ "length" : 3,
+ "text" : "123",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "Zyyy",
+ "font" : {
+ "description" : "DejaVu Sans Mono 32",
+ "checksum" : "84c5467cadd1f6f23db0d9fbb6377e0d301334d3b5f36e6d5acebd34d0857d3a"
+ },
+ "flags" : 0,
+ "extra-attributes" : [
+ {
+ "type" : "font-features",
+ "value" : "tnum=1"
+ }
+ ],
+ "y-offset" : 0,
+ "start-x-offset" : 0,
+ "end-x-offset" : 0,
+ "glyphs" : [
+ {
+ "glyph" : 20,
+ "width" : 26624,
+ "is-cluster-start" : true,
+ "log-cluster" : 0
+ },
+ {
+ "glyph" : 21,
+ "width" : 26624,
+ "is-cluster-start" : true,
+ "log-cluster" : 1
+ },
+ {
+ "glyph" : 22,
+ "width" : 26624,
+ "is-cluster-start" : true,
+ "log-cluster" : 2
+ }
]
},
- "flags" : 0,
- "extra-attributes" : [
- {
- "type" : "font-features",
- "value" : "tnum=1"
- }
- ],
- "y-offset" : 0,
- "start-x-offset" : 0,
- "end-x-offset" : 0,
- "glyphs" : [
- {
- "glyph" : 20,
- "width" : 26624,
- "is-cluster-start" : true,
- "log-cluster" : 0
- },
- {
- "glyph" : 21,
- "width" : 26624,
- "is-cluster-start" : true,
- "log-cluster" : 1
+ {
+ "offset" : 3,
+ "length" : 1,
+ "text" : "\t",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "Zyyy",
+ "font" : {
+ "description" : "DejaVu Sans Mono 32",
+ "checksum" : "84c5467cadd1f6f23db0d9fbb6377e0d301334d3b5f36e6d5acebd34d0857d3a"
},
- {
- "glyph" : 22,
- "width" : 26624,
- "is-cluster-start" : true,
- "log-cluster" : 2
- }
- ]
- },
- {
- "offset" : 3,
- "length" : 1,
- "text" : "\t",
- "bidi-level" : 0,
- "gravity" : "south",
- "language" : "en-us",
- "script" : "Zyyy",
- "font" : {
- "description" : "DejaVu Sans Mono 32",
- "checksum" : "84c5467cadd1f6f23db0d9fbb6377e0d301334d3b5f36e6d5acebd34d0857d3a",
- "matrix" : [
- 1,
- -0,
- -0,
- 1,
- 0,
- 0
+ "flags" : 0,
+ "extra-attributes" : [
+ {
+ "type" : "font-features",
+ "value" : "tnum=1"
+ }
+ ],
+ "y-offset" : 0,
+ "start-x-offset" : 0,
+ "end-x-offset" : 0,
+ "glyphs" : [
+ {
+ "glyph" : 268435455,
+ "width" : 133120,
+ "is-cluster-start" : true,
+ "log-cluster" : 0
+ }
]
},
- "flags" : 0,
- "extra-attributes" : [
- {
- "type" : "font-features",
- "value" : "tnum=1"
- }
- ],
- "y-offset" : 0,
- "start-x-offset" : 0,
- "end-x-offset" : 0,
- "glyphs" : [
- {
- "glyph" : 268435455,
- "width" : 133120,
- "is-cluster-start" : true,
- "log-cluster" : 0
- }
- ]
- },
- {
- "offset" : 4,
- "length" : 1,
- "text" : "9",
- "bidi-level" : 0,
- "gravity" : "south",
- "language" : "en-us",
- "script" : "Zyyy",
- "font" : {
- "description" : "DejaVu Sans Mono 32",
- "checksum" : "84c5467cadd1f6f23db0d9fbb6377e0d301334d3b5f36e6d5acebd34d0857d3a",
- "matrix" : [
- 1,
- -0,
- -0,
- 1,
- 0,
- 0
+ {
+ "offset" : 4,
+ "length" : 1,
+ "text" : "9",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "Zyyy",
+ "font" : {
+ "description" : "DejaVu Sans Mono 32",
+ "checksum" : "84c5467cadd1f6f23db0d9fbb6377e0d301334d3b5f36e6d5acebd34d0857d3a"
+ },
+ "flags" : 0,
+ "extra-attributes" : [
+ {
+ "type" : "font-features",
+ "value" : "tnum=1"
+ }
+ ],
+ "y-offset" : 0,
+ "start-x-offset" : 0,
+ "end-x-offset" : 0,
+ "glyphs" : [
+ {
+ "glyph" : 28,
+ "width" : 26624,
+ "is-cluster-start" : true,
+ "log-cluster" : 0
+ }
]
- },
- "flags" : 0,
- "extra-attributes" : [
- {
- "type" : "font-features",
- "value" : "tnum=1"
- }
- ],
- "y-offset" : 0,
- "start-x-offset" : 0,
- "end-x-offset" : 0,
- "glyphs" : [
- {
- "glyph" : 28,
- "width" : 26624,
- "is-cluster-start" : true,
- "log-cluster" : 0
- }
- ]
- }
- ]
+ }
+ ]
+ }
},
{
- "start-index" : 6,
- "length" : 9,
- "paragraph-start" : true,
- "direction" : "ltr",
- "runs" : [
- {
- "offset" : 6,
- "length" : 9,
- "text" : "123456789",
- "bidi-level" : 0,
- "gravity" : "south",
- "language" : "en-us",
- "script" : "Zyyy",
- "font" : {
- "description" : "DejaVu Sans Mono 32",
- "checksum" : "84c5467cadd1f6f23db0d9fbb6377e0d301334d3b5f36e6d5acebd34d0857d3a",
- "matrix" : [
- 1,
- -0,
- -0,
- 1,
- 0,
- 0
- ]
- },
- "flags" : 0,
- "extra-attributes" : [
- {
- "type" : "font-features",
- "value" : "tnum=1"
- }
- ],
- "y-offset" : 0,
- "start-x-offset" : 0,
- "end-x-offset" : 0,
- "glyphs" : [
- {
- "glyph" : 20,
- "width" : 26624,
- "is-cluster-start" : true,
- "log-cluster" : 0
+ "position" : [
+ 0,
+ 93184
+ ],
+ "line" : {
+ "start-index" : 6,
+ "length" : 9,
+ "start-offset" : 6,
+ "n-chars" : 9,
+ "wrapped" : false,
+ "ellipsized" : false,
+ "hyphenated" : false,
+ "justified" : false,
+ "paragraph-start" : true,
+ "paragraph-end" : true,
+ "direction" : "ltr",
+ "runs" : [
+ {
+ "offset" : 6,
+ "length" : 9,
+ "text" : "123456789",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "Zyyy",
+ "font" : {
+ "description" : "DejaVu Sans Mono 32",
+ "checksum" : "84c5467cadd1f6f23db0d9fbb6377e0d301334d3b5f36e6d5acebd34d0857d3a"
},
- {
- "glyph" : 21,
- "width" : 26624,
- "is-cluster-start" : true,
- "log-cluster" : 1
- },
- {
- "glyph" : 22,
- "width" : 26624,
- "is-cluster-start" : true,
- "log-cluster" : 2
- },
- {
- "glyph" : 23,
- "width" : 26624,
- "is-cluster-start" : true,
- "log-cluster" : 3
- },
- {
- "glyph" : 24,
- "width" : 26624,
- "is-cluster-start" : true,
- "log-cluster" : 4
- },
- {
- "glyph" : 25,
- "width" : 26624,
- "is-cluster-start" : true,
- "log-cluster" : 5
- },
- {
- "glyph" : 26,
- "width" : 26624,
- "is-cluster-start" : true,
- "log-cluster" : 6
- },
- {
- "glyph" : 27,
- "width" : 26624,
- "is-cluster-start" : true,
- "log-cluster" : 7
- },
- {
- "glyph" : 28,
- "width" : 26624,
- "is-cluster-start" : true,
- "log-cluster" : 8
- }
- ]
- }
- ]
+ "flags" : 0,
+ "extra-attributes" : [
+ {
+ "type" : "font-features",
+ "value" : "tnum=1"
+ }
+ ],
+ "y-offset" : 0,
+ "start-x-offset" : 0,
+ "end-x-offset" : 0,
+ "glyphs" : [
+ {
+ "glyph" : 20,
+ "width" : 26624,
+ "is-cluster-start" : true,
+ "log-cluster" : 0
+ },
+ {
+ "glyph" : 21,
+ "width" : 26624,
+ "is-cluster-start" : true,
+ "log-cluster" : 1
+ },
+ {
+ "glyph" : 22,
+ "width" : 26624,
+ "is-cluster-start" : true,
+ "log-cluster" : 2
+ },
+ {
+ "glyph" : 23,
+ "width" : 26624,
+ "is-cluster-start" : true,
+ "log-cluster" : 3
+ },
+ {
+ "glyph" : 24,
+ "width" : 26624,
+ "is-cluster-start" : true,
+ "log-cluster" : 4
+ },
+ {
+ "glyph" : 25,
+ "width" : 26624,
+ "is-cluster-start" : true,
+ "log-cluster" : 5
+ },
+ {
+ "glyph" : 26,
+ "width" : 26624,
+ "is-cluster-start" : true,
+ "log-cluster" : 6
+ },
+ {
+ "glyph" : 27,
+ "width" : 26624,
+ "is-cluster-start" : true,
+ "log-cluster" : 7
+ },
+ {
+ "glyph" : 28,
+ "width" : 26624,
+ "is-cluster-start" : true,
+ "log-cluster" : 8
+ }
+ ]
+ }
+ ]
+ }
}
]
}
diff --git a/tests/layouts/tabs.layout b/tests/layouts/tabs.layout
index ff2a4cf1..b9ba962e 100644
--- a/tests/layouts/tabs.layout
+++ b/tests/layouts/tabs.layout
@@ -47,1789 +47,1589 @@
]
},
"width" : 460800,
+ "log-attrs" : [
+ {
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "sentence-boundary" : true,
+ "backspace-deletes-character" : true,
+ "word-boundary" : true
+ },
+ {
+ "line-break" : true,
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-start" : true,
+ "sentence-start" : true,
+ "backspace-deletes-character" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-end" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-start" : true
+ },
+ {
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "word-end" : true,
+ "sentence-end" : true,
+ "word-boundary" : true
+ },
+ {
+ "line-break" : true,
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-start" : true,
+ "sentence-boundary" : true,
+ "sentence-start" : true,
+ "backspace-deletes-character" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-end" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-start" : true
+ },
+ {
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "word-end" : true,
+ "word-boundary" : true
+ },
+ {
+ "line-break" : true,
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-start" : true,
+ "backspace-deletes-character" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "word-end" : true,
+ "word-boundary" : true
+ },
+ {
+ "line-break" : true,
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-start" : true,
+ "backspace-deletes-character" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "word-end" : true,
+ "word-boundary" : true
+ },
+ {
+ "line-break" : true,
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-start" : true,
+ "backspace-deletes-character" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "word-end" : true,
+ "sentence-end" : true,
+ "word-boundary" : true
+ },
+ {
+ "line-break" : true,
+ "mandatory-break" : true,
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "sentence-boundary" : true,
+ "backspace-deletes-character" : true,
+ "word-boundary" : true
+ },
+ {
+ "line-break" : true,
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-start" : true,
+ "sentence-start" : true,
+ "backspace-deletes-character" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-end" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-start" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true
+ },
+ {
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "word-end" : true,
+ "sentence-end" : true,
+ "word-boundary" : true
+ },
+ {
+ "line-break" : true,
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-start" : true,
+ "sentence-boundary" : true,
+ "sentence-start" : true,
+ "backspace-deletes-character" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-end" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-start" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true
+ },
+ {
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "word-end" : true,
+ "word-boundary" : true
+ },
+ {
+ "line-break" : true,
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-start" : true,
+ "backspace-deletes-character" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "word-end" : true,
+ "word-boundary" : true
+ },
+ {
+ "line-break" : true,
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-start" : true,
+ "backspace-deletes-character" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "word-end" : true,
+ "word-boundary" : true
+ },
+ {
+ "line-break" : true,
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-start" : true,
+ "backspace-deletes-character" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "word-end" : true,
+ "sentence-end" : true,
+ "word-boundary" : true
+ },
+ {
+ "line-break" : true,
+ "mandatory-break" : true,
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "sentence-boundary" : true,
+ "backspace-deletes-character" : true,
+ "word-boundary" : true
+ },
+ {
+ "line-break" : true,
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-start" : true,
+ "sentence-start" : true,
+ "backspace-deletes-character" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-end" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-start" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true
+ },
+ {
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "word-end" : true,
+ "sentence-end" : true,
+ "word-boundary" : true
+ },
+ {
+ "line-break" : true,
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-start" : true,
+ "sentence-boundary" : true,
+ "sentence-start" : true,
+ "backspace-deletes-character" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-end" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-start" : true
+ },
+ {
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "word-end" : true,
+ "word-boundary" : true
+ },
+ {
+ "line-break" : true,
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-start" : true,
+ "backspace-deletes-character" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "word-end" : true,
+ "word-boundary" : true
+ },
+ {
+ "line-break" : true,
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-start" : true,
+ "backspace-deletes-character" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "word-end" : true,
+ "word-boundary" : true
+ },
+ {
+ "line-break" : true,
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-start" : true,
+ "backspace-deletes-character" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "line-break" : true,
+ "mandatory-break" : true,
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "word-end" : true,
+ "sentence-boundary" : true,
+ "sentence-end" : true,
+ "word-boundary" : true
+ }
+ ],
"output" : {
- "is-wrapped" : false,
- "is-ellipsized" : false,
+ "wrapped" : false,
+ "ellipsized" : false,
+ "hypenated" : false,
"unknown-glyphs" : 0,
"width" : 460800,
"height" : 73728,
- "log-attrs" : [
- {
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "sentence-boundary" : true,
- "backspace-deletes-character" : true,
- "word-boundary" : true
- },
- {
- "line-break" : true,
- "char-break" : true,
- "cursor-position" : true,
- "word-start" : true,
- "sentence-start" : true,
- "backspace-deletes-character" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "word-end" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "word-start" : true
- },
- {
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "word-end" : true,
- "sentence-end" : true,
- "word-boundary" : true
- },
- {
- "line-break" : true,
- "char-break" : true,
- "cursor-position" : true,
- "word-start" : true,
- "sentence-boundary" : true,
- "sentence-start" : true,
- "backspace-deletes-character" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "word-end" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "word-start" : true
- },
- {
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "word-end" : true,
- "word-boundary" : true
- },
- {
- "line-break" : true,
- "char-break" : true,
- "cursor-position" : true,
- "word-start" : true,
- "backspace-deletes-character" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "word-end" : true,
- "word-boundary" : true
- },
- {
- "line-break" : true,
- "char-break" : true,
- "cursor-position" : true,
- "word-start" : true,
- "backspace-deletes-character" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "word-end" : true,
- "word-boundary" : true
- },
- {
- "line-break" : true,
- "char-break" : true,
- "cursor-position" : true,
- "word-start" : true,
- "backspace-deletes-character" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "word-end" : true,
- "sentence-end" : true,
- "word-boundary" : true
- },
- {
- "line-break" : true,
- "mandatory-break" : true,
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "sentence-boundary" : true,
- "backspace-deletes-character" : true,
- "word-boundary" : true
- },
- {
- "line-break" : true,
- "char-break" : true,
- "cursor-position" : true,
- "word-start" : true,
- "sentence-start" : true,
- "backspace-deletes-character" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "word-end" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "word-start" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true
- },
- {
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "word-end" : true,
- "sentence-end" : true,
- "word-boundary" : true
- },
- {
- "line-break" : true,
- "char-break" : true,
- "cursor-position" : true,
- "word-start" : true,
- "sentence-boundary" : true,
- "sentence-start" : true,
- "backspace-deletes-character" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "word-end" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "word-start" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true
- },
- {
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "word-end" : true,
- "word-boundary" : true
- },
- {
- "line-break" : true,
- "char-break" : true,
- "cursor-position" : true,
- "word-start" : true,
- "backspace-deletes-character" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "word-end" : true,
- "word-boundary" : true
- },
- {
- "line-break" : true,
- "char-break" : true,
- "cursor-position" : true,
- "word-start" : true,
- "backspace-deletes-character" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "word-end" : true,
- "word-boundary" : true
- },
- {
- "line-break" : true,
- "char-break" : true,
- "cursor-position" : true,
- "word-start" : true,
- "backspace-deletes-character" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "word-end" : true,
- "sentence-end" : true,
- "word-boundary" : true
- },
- {
- "line-break" : true,
- "mandatory-break" : true,
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "sentence-boundary" : true,
- "backspace-deletes-character" : true,
- "word-boundary" : true
- },
- {
- "line-break" : true,
- "char-break" : true,
- "cursor-position" : true,
- "word-start" : true,
- "sentence-start" : true,
- "backspace-deletes-character" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "word-end" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "word-start" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true
- },
- {
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "word-end" : true,
- "sentence-end" : true,
- "word-boundary" : true
- },
- {
- "line-break" : true,
- "char-break" : true,
- "cursor-position" : true,
- "word-start" : true,
- "sentence-boundary" : true,
- "sentence-start" : true,
- "backspace-deletes-character" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "word-end" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "word-start" : true
- },
- {
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "word-end" : true,
- "word-boundary" : true
- },
- {
- "line-break" : true,
- "char-break" : true,
- "cursor-position" : true,
- "word-start" : true,
- "backspace-deletes-character" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "word-end" : true,
- "word-boundary" : true
- },
- {
- "line-break" : true,
- "char-break" : true,
- "cursor-position" : true,
- "word-start" : true,
- "backspace-deletes-character" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "word-end" : true,
- "word-boundary" : true
- },
- {
- "line-break" : true,
- "char-break" : true,
- "cursor-position" : true,
- "word-start" : true,
- "backspace-deletes-character" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "line-break" : true,
- "mandatory-break" : true,
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "word-end" : true,
- "sentence-boundary" : true,
- "sentence-end" : true,
- "word-boundary" : true
- }
- ],
"lines" : [
{
- "start-index" : 0,
- "length" : 21,
- "paragraph-start" : true,
- "direction" : "ltr",
- "runs" : [
- {
- "offset" : 0,
- "length" : 1,
- "text" : "\t",
- "bidi-level" : 0,
- "gravity" : "south",
- "language" : "en-us",
- "script" : "Latn",
- "font" : {
- "description" : "Cantarell 14 @wght=400",
- "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
- "variations" : {
- "wght" : 0
- },
- "matrix" : [
- 1,
- -0,
- -0,
- 1,
- 0,
- 0
+ "position" : [
+ 0,
+ 19456
+ ],
+ "line" : {
+ "start-index" : 0,
+ "length" : 21,
+ "start-offset" : 0,
+ "n-chars" : 21,
+ "wrapped" : false,
+ "ellipsized" : false,
+ "hyphenated" : false,
+ "justified" : false,
+ "paragraph-start" : true,
+ "paragraph-end" : true,
+ "direction" : "ltr",
+ "runs" : [
+ {
+ "offset" : 0,
+ "length" : 1,
+ "text" : "\t",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "Latn",
+ "font" : {
+ "description" : "Cantarell 14 @wght=400",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ }
+ },
+ "flags" : 0,
+ "y-offset" : 0,
+ "start-x-offset" : 0,
+ "end-x-offset" : 0,
+ "glyphs" : [
+ {
+ "glyph" : 268435455,
+ "width" : 37376,
+ "is-cluster-start" : true,
+ "log-cluster" : 0
+ }
]
},
- "flags" : 0,
- "y-offset" : 0,
- "start-x-offset" : 0,
- "end-x-offset" : 0,
- "glyphs" : [
- {
- "glyph" : 268435455,
- "width" : 37376,
- "is-cluster-start" : true,
- "log-cluster" : 0
- }
- ]
- },
- {
- "offset" : 1,
- "length" : 3,
- "text" : "0.1",
- "bidi-level" : 0,
- "gravity" : "south",
- "language" : "en-us",
- "script" : "Latn",
- "font" : {
- "description" : "Cantarell 14 @wght=400",
- "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
- "variations" : {
- "wght" : 0
- },
- "matrix" : [
- 1,
- -0,
- -0,
- 1,
- 0,
- 0
+ {
+ "offset" : 1,
+ "length" : 3,
+ "text" : "0.1",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "Latn",
+ "font" : {
+ "description" : "Cantarell 14 @wght=400",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ }
+ },
+ "flags" : 0,
+ "y-offset" : 0,
+ "start-x-offset" : 0,
+ "end-x-offset" : 0,
+ "glyphs" : [
+ {
+ "glyph" : 964,
+ "width" : 11264,
+ "is-cluster-start" : true,
+ "log-cluster" : 0
+ },
+ {
+ "glyph" : 1058,
+ "width" : 5120,
+ "is-cluster-start" : true,
+ "log-cluster" : 1
+ },
+ {
+ "glyph" : 965,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 2
+ }
]
},
- "flags" : 0,
- "y-offset" : 0,
- "start-x-offset" : 0,
- "end-x-offset" : 0,
- "glyphs" : [
- {
- "glyph" : 964,
- "width" : 11264,
- "is-cluster-start" : true,
- "log-cluster" : 0
- },
- {
- "glyph" : 1058,
- "width" : 5120,
- "is-cluster-start" : true,
- "log-cluster" : 1
- },
- {
- "glyph" : 965,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 2
- }
- ]
- },
- {
- "offset" : 4,
- "length" : 1,
- "text" : "\t",
- "bidi-level" : 0,
- "gravity" : "south",
- "language" : "en-us",
- "script" : "Latn",
- "font" : {
- "description" : "Cantarell 14 @wght=400",
- "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
- "variations" : {
- "wght" : 0
- },
- "matrix" : [
- 1,
- -0,
- -0,
- 1,
- 0,
- 0
+ {
+ "offset" : 4,
+ "length" : 1,
+ "text" : "\t",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "Latn",
+ "font" : {
+ "description" : "Cantarell 14 @wght=400",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ }
+ },
+ "flags" : 0,
+ "y-offset" : 0,
+ "start-x-offset" : 0,
+ "end-x-offset" : 0,
+ "glyphs" : [
+ {
+ "glyph" : 268435455,
+ "width" : 58368,
+ "is-cluster-start" : true,
+ "log-cluster" : 0
+ }
]
},
- "flags" : 0,
- "y-offset" : 0,
- "start-x-offset" : 0,
- "end-x-offset" : 0,
- "glyphs" : [
- {
- "glyph" : 268435455,
- "width" : 58368,
- "is-cluster-start" : true,
- "log-cluster" : 0
- }
- ]
- },
- {
- "offset" : 5,
- "length" : 5,
- "text" : "100.5",
- "bidi-level" : 0,
- "gravity" : "south",
- "language" : "en-us",
- "script" : "Latn",
- "font" : {
- "description" : "Cantarell 14 @wght=400",
- "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
- "variations" : {
- "wght" : 0
- },
- "matrix" : [
- 1,
- -0,
- -0,
- 1,
- 0,
- 0
+ {
+ "offset" : 5,
+ "length" : 5,
+ "text" : "100.5",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "Latn",
+ "font" : {
+ "description" : "Cantarell 14 @wght=400",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ }
+ },
+ "flags" : 0,
+ "y-offset" : 0,
+ "start-x-offset" : 0,
+ "end-x-offset" : 0,
+ "glyphs" : [
+ {
+ "glyph" : 965,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 0
+ },
+ {
+ "glyph" : 964,
+ "width" : 11264,
+ "is-cluster-start" : true,
+ "log-cluster" : 1
+ },
+ {
+ "glyph" : 964,
+ "width" : 11264,
+ "is-cluster-start" : true,
+ "log-cluster" : 2
+ },
+ {
+ "glyph" : 1058,
+ "width" : 5120,
+ "is-cluster-start" : true,
+ "log-cluster" : 3
+ },
+ {
+ "glyph" : 969,
+ "width" : 10240,
+ "is-cluster-start" : true,
+ "log-cluster" : 4
+ }
]
},
- "flags" : 0,
- "y-offset" : 0,
- "start-x-offset" : 0,
- "end-x-offset" : 0,
- "glyphs" : [
- {
- "glyph" : 965,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 0
- },
- {
- "glyph" : 964,
- "width" : 11264,
- "is-cluster-start" : true,
- "log-cluster" : 1
- },
- {
- "glyph" : 964,
- "width" : 11264,
- "is-cluster-start" : true,
- "log-cluster" : 2
- },
- {
- "glyph" : 1058,
- "width" : 5120,
- "is-cluster-start" : true,
- "log-cluster" : 3
- },
- {
- "glyph" : 969,
- "width" : 10240,
- "is-cluster-start" : true,
- "log-cluster" : 4
- }
- ]
- },
- {
- "offset" : 10,
- "length" : 1,
- "text" : "\t",
- "bidi-level" : 0,
- "gravity" : "south",
- "language" : "en-us",
- "script" : "Latn",
- "font" : {
- "description" : "Cantarell 14 @wght=400",
- "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
- "variations" : {
- "wght" : 0
- },
- "matrix" : [
- 1,
- -0,
- -0,
- 1,
- 0,
- 0
+ {
+ "offset" : 10,
+ "length" : 1,
+ "text" : "\t",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "Latn",
+ "font" : {
+ "description" : "Cantarell 14 @wght=400",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ }
+ },
+ "flags" : 0,
+ "y-offset" : 0,
+ "start-x-offset" : 0,
+ "end-x-offset" : 0,
+ "glyphs" : [
+ {
+ "glyph" : 268435455,
+ "width" : 89600,
+ "is-cluster-start" : true,
+ "log-cluster" : 0
+ }
]
},
- "flags" : 0,
- "y-offset" : 0,
- "start-x-offset" : 0,
- "end-x-offset" : 0,
- "glyphs" : [
- {
- "glyph" : 268435455,
- "width" : 89600,
- "is-cluster-start" : true,
- "log-cluster" : 0
- }
- ]
- },
- {
- "offset" : 11,
- "length" : 2,
- "text" : "so",
- "bidi-level" : 0,
- "gravity" : "south",
- "language" : "en-us",
- "script" : "Latn",
- "font" : {
- "description" : "Cantarell 14 @wght=400",
- "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
- "variations" : {
- "wght" : 0
- },
- "matrix" : [
- 1,
- -0,
- -0,
- 1,
- 0,
- 0
+ {
+ "offset" : 11,
+ "length" : 2,
+ "text" : "so",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "Latn",
+ "font" : {
+ "description" : "Cantarell 14 @wght=400",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ }
+ },
+ "flags" : 0,
+ "y-offset" : 0,
+ "start-x-offset" : 0,
+ "end-x-offset" : 0,
+ "glyphs" : [
+ {
+ "glyph" : 417,
+ "width" : 9216,
+ "is-cluster-start" : true,
+ "log-cluster" : 0
+ },
+ {
+ "glyph" : 370,
+ "width" : 11264,
+ "is-cluster-start" : true,
+ "log-cluster" : 1
+ }
]
},
- "flags" : 0,
- "y-offset" : 0,
- "start-x-offset" : 0,
- "end-x-offset" : 0,
- "glyphs" : [
- {
- "glyph" : 417,
- "width" : 9216,
- "is-cluster-start" : true,
- "log-cluster" : 0
- },
- {
- "glyph" : 370,
- "width" : 11264,
- "is-cluster-start" : true,
- "log-cluster" : 1
- }
- ]
- },
- {
- "offset" : 13,
- "length" : 1,
- "text" : "\t",
- "bidi-level" : 0,
- "gravity" : "south",
- "language" : "en-us",
- "script" : "Latn",
- "font" : {
- "description" : "Cantarell 14 @wght=400",
- "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
- "variations" : {
- "wght" : 0
- },
- "matrix" : [
- 1,
- -0,
- -0,
- 1,
- 0,
- 0
+ {
+ "offset" : 13,
+ "length" : 1,
+ "text" : "\t",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "Latn",
+ "font" : {
+ "description" : "Cantarell 14 @wght=400",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ }
+ },
+ "flags" : 0,
+ "y-offset" : 0,
+ "start-x-offset" : 0,
+ "end-x-offset" : 0,
+ "glyphs" : [
+ {
+ "glyph" : 268435455,
+ "width" : 58880,
+ "is-cluster-start" : true,
+ "log-cluster" : 0
+ }
]
},
- "flags" : 0,
- "y-offset" : 0,
- "start-x-offset" : 0,
- "end-x-offset" : 0,
- "glyphs" : [
- {
- "glyph" : 268435455,
- "width" : 58880,
- "is-cluster-start" : true,
- "log-cluster" : 0
- }
- ]
- },
- {
- "offset" : 14,
- "length" : 4,
- "text" : "more",
- "bidi-level" : 0,
- "gravity" : "south",
- "language" : "en-us",
- "script" : "Latn",
- "font" : {
- "description" : "Cantarell 14 @wght=400",
- "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
- "variations" : {
- "wght" : 0
- },
- "matrix" : [
- 1,
- -0,
- -0,
- 1,
- 0,
- 0
+ {
+ "offset" : 14,
+ "length" : 4,
+ "text" : "more",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "Latn",
+ "font" : {
+ "description" : "Cantarell 14 @wght=400",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ }
+ },
+ "flags" : 0,
+ "y-offset" : 0,
+ "start-x-offset" : 0,
+ "end-x-offset" : 0,
+ "glyphs" : [
+ {
+ "glyph" : 358,
+ "width" : 17408,
+ "is-cluster-start" : true,
+ "log-cluster" : 0
+ },
+ {
+ "glyph" : 370,
+ "width" : 11264,
+ "is-cluster-start" : true,
+ "log-cluster" : 1
+ },
+ {
+ "glyph" : 409,
+ "width" : 7168,
+ "is-cluster-start" : true,
+ "log-cluster" : 2
+ },
+ {
+ "glyph" : 287,
+ "width" : 10240,
+ "is-cluster-start" : true,
+ "log-cluster" : 3
+ }
]
},
- "flags" : 0,
- "y-offset" : 0,
- "start-x-offset" : 0,
- "end-x-offset" : 0,
- "glyphs" : [
- {
- "glyph" : 358,
- "width" : 17408,
- "is-cluster-start" : true,
- "log-cluster" : 0
- },
- {
- "glyph" : 370,
- "width" : 11264,
- "is-cluster-start" : true,
- "log-cluster" : 1
- },
- {
- "glyph" : 409,
- "width" : 7168,
- "is-cluster-start" : true,
- "log-cluster" : 2
- },
- {
- "glyph" : 287,
- "width" : 10240,
- "is-cluster-start" : true,
- "log-cluster" : 3
- }
- ]
- },
- {
- "offset" : 18,
- "length" : 1,
- "text" : "\t",
- "bidi-level" : 0,
- "gravity" : "south",
- "language" : "en-us",
- "script" : "Latn",
- "font" : {
- "description" : "Cantarell 14 @wght=400",
- "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
- "variations" : {
- "wght" : 0
- },
- "matrix" : [
- 1,
- -0,
- -0,
- 1,
- 0,
- 0
+ {
+ "offset" : 18,
+ "length" : 1,
+ "text" : "\t",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "Latn",
+ "font" : {
+ "description" : "Cantarell 14 @wght=400",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ }
+ },
+ "flags" : 0,
+ "y-offset" : 0,
+ "start-x-offset" : 0,
+ "end-x-offset" : 0,
+ "glyphs" : [
+ {
+ "glyph" : 268435455,
+ "width" : 39424,
+ "is-cluster-start" : true,
+ "log-cluster" : 0
+ }
]
},
- "flags" : 0,
- "y-offset" : 0,
- "start-x-offset" : 0,
- "end-x-offset" : 0,
- "glyphs" : [
- {
- "glyph" : 268435455,
- "width" : 58880,
- "is-cluster-start" : true,
- "log-cluster" : 0
- }
- ]
- },
- {
- "offset" : 19,
- "length" : 2,
- "text" : "so",
- "bidi-level" : 0,
- "gravity" : "south",
- "language" : "en-us",
- "script" : "Latn",
- "font" : {
- "description" : "Cantarell 14 @wght=400",
- "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
- "variations" : {
- "wght" : 0
- },
- "matrix" : [
- 1,
- -0,
- -0,
- 1,
- 0,
- 0
+ {
+ "offset" : 19,
+ "length" : 2,
+ "text" : "so",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "Latn",
+ "font" : {
+ "description" : "Cantarell 14 @wght=400",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ }
+ },
+ "flags" : 0,
+ "y-offset" : 0,
+ "start-x-offset" : 0,
+ "end-x-offset" : 0,
+ "glyphs" : [
+ {
+ "glyph" : 417,
+ "width" : 9216,
+ "is-cluster-start" : true,
+ "log-cluster" : 0
+ },
+ {
+ "glyph" : 370,
+ "width" : 11264,
+ "is-cluster-start" : true,
+ "log-cluster" : 1
+ }
]
- },
- "flags" : 0,
- "y-offset" : 0,
- "start-x-offset" : 0,
- "end-x-offset" : 0,
- "glyphs" : [
- {
- "glyph" : 417,
- "width" : 9216,
- "is-cluster-start" : true,
- "log-cluster" : 0
- },
- {
- "glyph" : 370,
- "width" : 11264,
- "is-cluster-start" : true,
- "log-cluster" : 1
- }
- ]
- }
- ]
- },
- {
- "start-index" : 22,
- "length" : 23,
- "paragraph-start" : true,
- "direction" : "ltr",
- "runs" : [
- {
- "offset" : 22,
- "length" : 1,
- "text" : "\t",
- "bidi-level" : 0,
- "gravity" : "south",
- "language" : "en-us",
- "script" : "Latn",
- "font" : {
- "description" : "Cantarell 14 @wght=400",
- "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
- "variations" : {
- "wght" : 0
- },
- "matrix" : [
- 1,
- -0,
- -0,
- 1,
- 0,
- 0
+ }
+ ]
+ }
+ },
+ {
+ "position" : [
+ 0,
+ 44032
+ ],
+ "line" : {
+ "start-index" : 22,
+ "length" : 23,
+ "start-offset" : 22,
+ "n-chars" : 23,
+ "wrapped" : false,
+ "ellipsized" : false,
+ "hyphenated" : false,
+ "justified" : false,
+ "paragraph-start" : true,
+ "paragraph-end" : true,
+ "direction" : "ltr",
+ "runs" : [
+ {
+ "offset" : 22,
+ "length" : 1,
+ "text" : "\t",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "Latn",
+ "font" : {
+ "description" : "Cantarell 14 @wght=400",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ }
+ },
+ "flags" : 0,
+ "y-offset" : 0,
+ "start-x-offset" : 0,
+ "end-x-offset" : 0,
+ "glyphs" : [
+ {
+ "glyph" : 268435455,
+ "width" : 37376,
+ "is-cluster-start" : true,
+ "log-cluster" : 0
+ }
]
},
- "flags" : 0,
- "y-offset" : 0,
- "start-x-offset" : 0,
- "end-x-offset" : 0,
- "glyphs" : [
- {
- "glyph" : 268435455,
- "width" : 37376,
- "is-cluster-start" : true,
- "log-cluster" : 0
- }
- ]
- },
- {
- "offset" : 23,
- "length" : 4,
- "text" : "0.02",
- "bidi-level" : 0,
- "gravity" : "south",
- "language" : "en-us",
- "script" : "Latn",
- "font" : {
- "description" : "Cantarell 14 @wght=400",
- "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
- "variations" : {
- "wght" : 0
- },
- "matrix" : [
- 1,
- -0,
- -0,
- 1,
- 0,
- 0
+ {
+ "offset" : 23,
+ "length" : 4,
+ "text" : "0.02",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "Latn",
+ "font" : {
+ "description" : "Cantarell 14 @wght=400",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ }
+ },
+ "flags" : 0,
+ "y-offset" : 0,
+ "start-x-offset" : 0,
+ "end-x-offset" : 0,
+ "glyphs" : [
+ {
+ "glyph" : 964,
+ "width" : 11264,
+ "is-cluster-start" : true,
+ "log-cluster" : 0
+ },
+ {
+ "glyph" : 1058,
+ "width" : 5120,
+ "is-cluster-start" : true,
+ "log-cluster" : 1
+ },
+ {
+ "glyph" : 964,
+ "width" : 11264,
+ "is-cluster-start" : true,
+ "log-cluster" : 2
+ },
+ {
+ "glyph" : 966,
+ "width" : 10240,
+ "is-cluster-start" : true,
+ "log-cluster" : 3
+ }
]
},
- "flags" : 0,
- "y-offset" : 0,
- "start-x-offset" : 0,
- "end-x-offset" : 0,
- "glyphs" : [
- {
- "glyph" : 964,
- "width" : 11264,
- "is-cluster-start" : true,
- "log-cluster" : 0
- },
- {
- "glyph" : 1058,
- "width" : 5120,
- "is-cluster-start" : true,
- "log-cluster" : 1
- },
- {
- "glyph" : 964,
- "width" : 11264,
- "is-cluster-start" : true,
- "log-cluster" : 2
- },
- {
- "glyph" : 966,
- "width" : 10240,
- "is-cluster-start" : true,
- "log-cluster" : 3
- }
- ]
- },
- {
- "offset" : 27,
- "length" : 1,
- "text" : "\t",
- "bidi-level" : 0,
- "gravity" : "south",
- "language" : "en-us",
- "script" : "Latn",
- "font" : {
- "description" : "Cantarell 14 @wght=400",
- "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
- "variations" : {
- "wght" : 0
- },
- "matrix" : [
- 1,
- -0,
- -0,
- 1,
- 0,
- 0
+ {
+ "offset" : 27,
+ "length" : 1,
+ "text" : "\t",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "Latn",
+ "font" : {
+ "description" : "Cantarell 14 @wght=400",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ }
+ },
+ "flags" : 0,
+ "y-offset" : 0,
+ "start-x-offset" : 0,
+ "end-x-offset" : 0,
+ "glyphs" : [
+ {
+ "glyph" : 268435455,
+ "width" : 54272,
+ "is-cluster-start" : true,
+ "log-cluster" : 0
+ }
]
},
- "flags" : 0,
- "y-offset" : 0,
- "start-x-offset" : 0,
- "end-x-offset" : 0,
- "glyphs" : [
- {
- "glyph" : 268435455,
- "width" : 54272,
- "is-cluster-start" : true,
- "log-cluster" : 0
- }
- ]
- },
- {
- "offset" : 28,
- "length" : 5,
- "text" : "20.25",
- "bidi-level" : 0,
- "gravity" : "south",
- "language" : "en-us",
- "script" : "Latn",
- "font" : {
- "description" : "Cantarell 14 @wght=400",
- "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
- "variations" : {
- "wght" : 0
- },
- "matrix" : [
- 1,
- -0,
- -0,
- 1,
- 0,
- 0
+ {
+ "offset" : 28,
+ "length" : 5,
+ "text" : "20.25",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "Latn",
+ "font" : {
+ "description" : "Cantarell 14 @wght=400",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ }
+ },
+ "flags" : 0,
+ "y-offset" : 0,
+ "start-x-offset" : 0,
+ "end-x-offset" : 0,
+ "glyphs" : [
+ {
+ "glyph" : 966,
+ "width" : 10240,
+ "is-cluster-start" : true,
+ "log-cluster" : 0
+ },
+ {
+ "glyph" : 964,
+ "width" : 11264,
+ "is-cluster-start" : true,
+ "log-cluster" : 1
+ },
+ {
+ "glyph" : 1058,
+ "width" : 5120,
+ "is-cluster-start" : true,
+ "log-cluster" : 2
+ },
+ {
+ "glyph" : 966,
+ "width" : 10240,
+ "is-cluster-start" : true,
+ "log-cluster" : 3
+ },
+ {
+ "glyph" : 969,
+ "width" : 10240,
+ "is-cluster-start" : true,
+ "log-cluster" : 4
+ }
]
},
- "flags" : 0,
- "y-offset" : 0,
- "start-x-offset" : 0,
- "end-x-offset" : 0,
- "glyphs" : [
- {
- "glyph" : 966,
- "width" : 10240,
- "is-cluster-start" : true,
- "log-cluster" : 0
- },
- {
- "glyph" : 964,
- "width" : 11264,
- "is-cluster-start" : true,
- "log-cluster" : 1
- },
- {
- "glyph" : 1058,
- "width" : 5120,
- "is-cluster-start" : true,
- "log-cluster" : 2
- },
- {
- "glyph" : 966,
- "width" : 10240,
- "is-cluster-start" : true,
- "log-cluster" : 3
- },
- {
- "glyph" : 969,
- "width" : 10240,
- "is-cluster-start" : true,
- "log-cluster" : 4
- }
- ]
- },
- {
- "offset" : 33,
- "length" : 1,
- "text" : "\t",
- "bidi-level" : 0,
- "gravity" : "south",
- "language" : "en-us",
- "script" : "Latn",
- "font" : {
- "description" : "Cantarell 14 @wght=400",
- "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
- "variations" : {
- "wght" : 0
- },
- "matrix" : [
- 1,
- -0,
- -0,
- 1,
- 0,
- 0
+ {
+ "offset" : 33,
+ "length" : 1,
+ "text" : "\t",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "Latn",
+ "font" : {
+ "description" : "Cantarell 14 @wght=400",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ }
+ },
+ "flags" : 0,
+ "y-offset" : 0,
+ "start-x-offset" : 0,
+ "end-x-offset" : 0,
+ "glyphs" : [
+ {
+ "glyph" : 268435455,
+ "width" : 79360,
+ "is-cluster-start" : true,
+ "log-cluster" : 0
+ }
]
},
- "flags" : 0,
- "y-offset" : 0,
- "start-x-offset" : 0,
- "end-x-offset" : 0,
- "glyphs" : [
- {
- "glyph" : 268435455,
- "width" : 79360,
- "is-cluster-start" : true,
- "log-cluster" : 0
- }
- ]
- },
- {
- "offset" : 34,
- "length" : 3,
- "text" : "and",
- "bidi-level" : 0,
- "gravity" : "south",
- "language" : "en-us",
- "script" : "Latn",
- "font" : {
- "description" : "Cantarell 14 @wght=400",
- "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
- "variations" : {
- "wght" : 0
- },
- "matrix" : [
- 1,
- -0,
- -0,
- 1,
- 0,
- 0
+ {
+ "offset" : 34,
+ "length" : 3,
+ "text" : "and",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "Latn",
+ "font" : {
+ "description" : "Cantarell 14 @wght=400",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ }
+ },
+ "flags" : 0,
+ "y-offset" : 0,
+ "start-x-offset" : 0,
+ "end-x-offset" : 0,
+ "glyphs" : [
+ {
+ "glyph" : 244,
+ "width" : 10240,
+ "is-cluster-start" : true,
+ "log-cluster" : 0
+ },
+ {
+ "glyph" : 360,
+ "width" : 11264,
+ "is-cluster-start" : true,
+ "log-cluster" : 1
+ },
+ {
+ "glyph" : 280,
+ "width" : 11264,
+ "is-cluster-start" : true,
+ "log-cluster" : 2
+ }
]
},
- "flags" : 0,
- "y-offset" : 0,
- "start-x-offset" : 0,
- "end-x-offset" : 0,
- "glyphs" : [
- {
- "glyph" : 244,
- "width" : 10240,
- "is-cluster-start" : true,
- "log-cluster" : 0
- },
- {
- "glyph" : 360,
- "width" : 11264,
- "is-cluster-start" : true,
- "log-cluster" : 1
- },
- {
- "glyph" : 280,
- "width" : 11264,
- "is-cluster-start" : true,
- "log-cluster" : 2
- }
- ]
- },
- {
- "offset" : 37,
- "length" : 1,
- "text" : "\t",
- "bidi-level" : 0,
- "gravity" : "south",
- "language" : "en-us",
- "script" : "Latn",
- "font" : {
- "description" : "Cantarell 14 @wght=400",
- "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
- "variations" : {
- "wght" : 0
- },
- "matrix" : [
- 1,
- -0,
- -0,
- 1,
- 0,
- 0
+ {
+ "offset" : 37,
+ "length" : 1,
+ "text" : "\t",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "Latn",
+ "font" : {
+ "description" : "Cantarell 14 @wght=400",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ }
+ },
+ "flags" : 0,
+ "y-offset" : 0,
+ "start-x-offset" : 0,
+ "end-x-offset" : 0,
+ "glyphs" : [
+ {
+ "glyph" : 268435455,
+ "width" : 53248,
+ "is-cluster-start" : true,
+ "log-cluster" : 0
+ }
]
},
- "flags" : 0,
- "y-offset" : 0,
- "start-x-offset" : 0,
- "end-x-offset" : 0,
- "glyphs" : [
- {
- "glyph" : 268435455,
- "width" : 53248,
- "is-cluster-start" : true,
- "log-cluster" : 0
- }
- ]
- },
- {
- "offset" : 38,
- "length" : 3,
- "text" : "and",
- "bidi-level" : 0,
- "gravity" : "south",
- "language" : "en-us",
- "script" : "Latn",
- "font" : {
- "description" : "Cantarell 14 @wght=400",
- "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
- "variations" : {
- "wght" : 0
- },
- "matrix" : [
- 1,
- -0,
- -0,
- 1,
- 0,
- 0
+ {
+ "offset" : 38,
+ "length" : 3,
+ "text" : "and",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "Latn",
+ "font" : {
+ "description" : "Cantarell 14 @wght=400",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ }
+ },
+ "flags" : 0,
+ "y-offset" : 0,
+ "start-x-offset" : 0,
+ "end-x-offset" : 0,
+ "glyphs" : [
+ {
+ "glyph" : 244,
+ "width" : 10240,
+ "is-cluster-start" : true,
+ "log-cluster" : 0
+ },
+ {
+ "glyph" : 360,
+ "width" : 11264,
+ "is-cluster-start" : true,
+ "log-cluster" : 1
+ },
+ {
+ "glyph" : 280,
+ "width" : 11264,
+ "is-cluster-start" : true,
+ "log-cluster" : 2
+ }
]
},
- "flags" : 0,
- "y-offset" : 0,
- "start-x-offset" : 0,
- "end-x-offset" : 0,
- "glyphs" : [
- {
- "glyph" : 244,
- "width" : 10240,
- "is-cluster-start" : true,
- "log-cluster" : 0
- },
- {
- "glyph" : 360,
- "width" : 11264,
- "is-cluster-start" : true,
- "log-cluster" : 1
- },
- {
- "glyph" : 280,
- "width" : 11264,
- "is-cluster-start" : true,
- "log-cluster" : 2
- }
- ]
- },
- {
- "offset" : 41,
- "length" : 1,
- "text" : "\t",
- "bidi-level" : 0,
- "gravity" : "south",
- "language" : "en-us",
- "script" : "Latn",
- "font" : {
- "description" : "Cantarell 14 @wght=400",
- "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
- "variations" : {
- "wght" : 0
- },
- "matrix" : [
- 1,
- -0,
- -0,
- 1,
- 0,
- 0
+ {
+ "offset" : 41,
+ "length" : 1,
+ "text" : "\t",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "Latn",
+ "font" : {
+ "description" : "Cantarell 14 @wght=400",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ }
+ },
+ "flags" : 0,
+ "y-offset" : 0,
+ "start-x-offset" : 0,
+ "end-x-offset" : 0,
+ "glyphs" : [
+ {
+ "glyph" : 268435455,
+ "width" : 33792,
+ "is-cluster-start" : true,
+ "log-cluster" : 0
+ }
]
},
- "flags" : 0,
- "y-offset" : 0,
- "start-x-offset" : 0,
- "end-x-offset" : 0,
- "glyphs" : [
- {
- "glyph" : 268435455,
- "width" : 53248,
- "is-cluster-start" : true,
- "log-cluster" : 0
- }
- ]
- },
- {
- "offset" : 42,
- "length" : 3,
- "text" : "and",
- "bidi-level" : 0,
- "gravity" : "south",
- "language" : "en-us",
- "script" : "Latn",
- "font" : {
- "description" : "Cantarell 14 @wght=400",
- "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
- "variations" : {
- "wght" : 0
- },
- "matrix" : [
- 1,
- -0,
- -0,
- 1,
- 0,
- 0
+ {
+ "offset" : 42,
+ "length" : 3,
+ "text" : "and",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "Latn",
+ "font" : {
+ "description" : "Cantarell 14 @wght=400",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ }
+ },
+ "flags" : 0,
+ "y-offset" : 0,
+ "start-x-offset" : 0,
+ "end-x-offset" : 0,
+ "glyphs" : [
+ {
+ "glyph" : 244,
+ "width" : 10240,
+ "is-cluster-start" : true,
+ "log-cluster" : 0
+ },
+ {
+ "glyph" : 360,
+ "width" : 11264,
+ "is-cluster-start" : true,
+ "log-cluster" : 1
+ },
+ {
+ "glyph" : 280,
+ "width" : 11264,
+ "is-cluster-start" : true,
+ "log-cluster" : 2
+ }
]
- },
- "flags" : 0,
- "y-offset" : 0,
- "start-x-offset" : 0,
- "end-x-offset" : 0,
- "glyphs" : [
- {
- "glyph" : 244,
- "width" : 10240,
- "is-cluster-start" : true,
- "log-cluster" : 0
- },
- {
- "glyph" : 360,
- "width" : 11264,
- "is-cluster-start" : true,
- "log-cluster" : 1
- },
- {
- "glyph" : 280,
- "width" : 11264,
- "is-cluster-start" : true,
- "log-cluster" : 2
- }
- ]
- }
- ]
- },
- {
- "start-index" : 46,
- "length" : 23,
- "paragraph-start" : true,
- "direction" : "ltr",
- "runs" : [
- {
- "offset" : 46,
- "length" : 1,
- "text" : "\t",
- "bidi-level" : 0,
- "gravity" : "south",
- "language" : "en-us",
- "script" : "Latn",
- "font" : {
- "description" : "Cantarell 14 @wght=400",
- "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
- "variations" : {
- "wght" : 0
- },
- "matrix" : [
- 1,
- -0,
- -0,
- 1,
- 0,
- 0
+ }
+ ]
+ }
+ },
+ {
+ "position" : [
+ 0,
+ 68608
+ ],
+ "line" : {
+ "start-index" : 46,
+ "length" : 23,
+ "start-offset" : 46,
+ "n-chars" : 23,
+ "wrapped" : false,
+ "ellipsized" : false,
+ "hyphenated" : false,
+ "justified" : false,
+ "paragraph-start" : true,
+ "paragraph-end" : true,
+ "direction" : "ltr",
+ "runs" : [
+ {
+ "offset" : 46,
+ "length" : 1,
+ "text" : "\t",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "Latn",
+ "font" : {
+ "description" : "Cantarell 14 @wght=400",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ }
+ },
+ "flags" : 0,
+ "y-offset" : 0,
+ "start-x-offset" : 0,
+ "end-x-offset" : 0,
+ "glyphs" : [
+ {
+ "glyph" : 268435455,
+ "width" : 37376,
+ "is-cluster-start" : true,
+ "log-cluster" : 0
+ }
]
},
- "flags" : 0,
- "y-offset" : 0,
- "start-x-offset" : 0,
- "end-x-offset" : 0,
- "glyphs" : [
- {
- "glyph" : 268435455,
- "width" : 37376,
- "is-cluster-start" : true,
- "log-cluster" : 0
- }
- ]
- },
- {
- "offset" : 47,
- "length" : 5,
- "text" : "0.003",
- "bidi-level" : 0,
- "gravity" : "south",
- "language" : "en-us",
- "script" : "Latn",
- "font" : {
- "description" : "Cantarell 14 @wght=400",
- "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
- "variations" : {
- "wght" : 0
- },
- "matrix" : [
- 1,
- -0,
- -0,
- 1,
- 0,
- 0
+ {
+ "offset" : 47,
+ "length" : 5,
+ "text" : "0.003",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "Latn",
+ "font" : {
+ "description" : "Cantarell 14 @wght=400",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ }
+ },
+ "flags" : 0,
+ "y-offset" : 0,
+ "start-x-offset" : 0,
+ "end-x-offset" : 0,
+ "glyphs" : [
+ {
+ "glyph" : 964,
+ "width" : 11264,
+ "is-cluster-start" : true,
+ "log-cluster" : 0
+ },
+ {
+ "glyph" : 1058,
+ "width" : 5120,
+ "is-cluster-start" : true,
+ "log-cluster" : 1
+ },
+ {
+ "glyph" : 964,
+ "width" : 11264,
+ "is-cluster-start" : true,
+ "log-cluster" : 2
+ },
+ {
+ "glyph" : 964,
+ "width" : 11264,
+ "is-cluster-start" : true,
+ "log-cluster" : 3
+ },
+ {
+ "glyph" : 967,
+ "width" : 10240,
+ "is-cluster-start" : true,
+ "log-cluster" : 4
+ }
]
},
- "flags" : 0,
- "y-offset" : 0,
- "start-x-offset" : 0,
- "end-x-offset" : 0,
- "glyphs" : [
- {
- "glyph" : 964,
- "width" : 11264,
- "is-cluster-start" : true,
- "log-cluster" : 0
- },
- {
- "glyph" : 1058,
- "width" : 5120,
- "is-cluster-start" : true,
- "log-cluster" : 1
- },
- {
- "glyph" : 964,
- "width" : 11264,
- "is-cluster-start" : true,
- "log-cluster" : 2
- },
- {
- "glyph" : 964,
- "width" : 11264,
- "is-cluster-start" : true,
- "log-cluster" : 3
- },
- {
- "glyph" : 967,
- "width" : 10240,
- "is-cluster-start" : true,
- "log-cluster" : 4
- }
- ]
- },
- {
- "offset" : 52,
- "length" : 1,
- "text" : "\t",
- "bidi-level" : 0,
- "gravity" : "south",
- "language" : "en-us",
- "script" : "Latn",
- "font" : {
- "description" : "Cantarell 14 @wght=400",
- "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
- "variations" : {
- "wght" : 0
- },
- "matrix" : [
- 1,
- -0,
- -0,
- 1,
- 0,
- 0
+ {
+ "offset" : 52,
+ "length" : 1,
+ "text" : "\t",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "Latn",
+ "font" : {
+ "description" : "Cantarell 14 @wght=400",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ }
+ },
+ "flags" : 0,
+ "y-offset" : 0,
+ "start-x-offset" : 0,
+ "end-x-offset" : 0,
+ "glyphs" : [
+ {
+ "glyph" : 268435455,
+ "width" : 56320,
+ "is-cluster-start" : true,
+ "log-cluster" : 0
+ }
]
},
- "flags" : 0,
- "y-offset" : 0,
- "start-x-offset" : 0,
- "end-x-offset" : 0,
- "glyphs" : [
- {
- "glyph" : 268435455,
- "width" : 56320,
- "is-cluster-start" : true,
- "log-cluster" : 0
- }
- ]
- },
- {
- "offset" : 53,
- "length" : 3,
- "text" : "1.9",
- "bidi-level" : 0,
- "gravity" : "south",
- "language" : "en-us",
- "script" : "Latn",
- "font" : {
- "description" : "Cantarell 14 @wght=400",
- "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
- "variations" : {
- "wght" : 0
- },
- "matrix" : [
- 1,
- -0,
- -0,
- 1,
- 0,
- 0
+ {
+ "offset" : 53,
+ "length" : 3,
+ "text" : "1.9",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "Latn",
+ "font" : {
+ "description" : "Cantarell 14 @wght=400",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ }
+ },
+ "flags" : 0,
+ "y-offset" : 0,
+ "start-x-offset" : 0,
+ "end-x-offset" : 0,
+ "glyphs" : [
+ {
+ "glyph" : 965,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 0
+ },
+ {
+ "glyph" : 1058,
+ "width" : 5120,
+ "is-cluster-start" : true,
+ "log-cluster" : 1
+ },
+ {
+ "glyph" : 973,
+ "width" : 11264,
+ "is-cluster-start" : true,
+ "log-cluster" : 2
+ }
]
},
- "flags" : 0,
- "y-offset" : 0,
- "start-x-offset" : 0,
- "end-x-offset" : 0,
- "glyphs" : [
- {
- "glyph" : 965,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 0
- },
- {
- "glyph" : 1058,
- "width" : 5120,
- "is-cluster-start" : true,
- "log-cluster" : 1
- },
- {
- "glyph" : 973,
- "width" : 11264,
- "is-cluster-start" : true,
- "log-cluster" : 2
- }
- ]
- },
- {
- "offset" : 56,
- "length" : 1,
- "text" : "\t",
- "bidi-level" : 0,
- "gravity" : "south",
- "language" : "en-us",
- "script" : "Latn",
- "font" : {
- "description" : "Cantarell 14 @wght=400",
- "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
- "variations" : {
- "wght" : 0
- },
- "matrix" : [
- 1,
- -0,
- -0,
- 1,
- 0,
- 0
+ {
+ "offset" : 56,
+ "length" : 1,
+ "text" : "\t",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "Latn",
+ "font" : {
+ "description" : "Cantarell 14 @wght=400",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ }
+ },
+ "flags" : 0,
+ "y-offset" : 0,
+ "start-x-offset" : 0,
+ "end-x-offset" : 0,
+ "glyphs" : [
+ {
+ "glyph" : 268435455,
+ "width" : 88576,
+ "is-cluster-start" : true,
+ "log-cluster" : 0
+ }
]
},
- "flags" : 0,
- "y-offset" : 0,
- "start-x-offset" : 0,
- "end-x-offset" : 0,
- "glyphs" : [
- {
- "glyph" : 268435455,
- "width" : 88576,
- "is-cluster-start" : true,
- "log-cluster" : 0
- }
- ]
- },
- {
- "offset" : 57,
- "length" : 4,
- "text" : "more",
- "bidi-level" : 0,
- "gravity" : "south",
- "language" : "en-us",
- "script" : "Latn",
- "font" : {
- "description" : "Cantarell 14 @wght=400",
- "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
- "variations" : {
- "wght" : 0
- },
- "matrix" : [
- 1,
- -0,
- -0,
- 1,
- 0,
- 0
+ {
+ "offset" : 57,
+ "length" : 4,
+ "text" : "more",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "Latn",
+ "font" : {
+ "description" : "Cantarell 14 @wght=400",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ }
+ },
+ "flags" : 0,
+ "y-offset" : 0,
+ "start-x-offset" : 0,
+ "end-x-offset" : 0,
+ "glyphs" : [
+ {
+ "glyph" : 358,
+ "width" : 17408,
+ "is-cluster-start" : true,
+ "log-cluster" : 0
+ },
+ {
+ "glyph" : 370,
+ "width" : 11264,
+ "is-cluster-start" : true,
+ "log-cluster" : 1
+ },
+ {
+ "glyph" : 409,
+ "width" : 7168,
+ "is-cluster-start" : true,
+ "log-cluster" : 2
+ },
+ {
+ "glyph" : 287,
+ "width" : 10240,
+ "is-cluster-start" : true,
+ "log-cluster" : 3
+ }
]
},
- "flags" : 0,
- "y-offset" : 0,
- "start-x-offset" : 0,
- "end-x-offset" : 0,
- "glyphs" : [
- {
- "glyph" : 358,
- "width" : 17408,
- "is-cluster-start" : true,
- "log-cluster" : 0
- },
- {
- "glyph" : 370,
- "width" : 11264,
- "is-cluster-start" : true,
- "log-cluster" : 1
- },
- {
- "glyph" : 409,
- "width" : 7168,
- "is-cluster-start" : true,
- "log-cluster" : 2
- },
- {
- "glyph" : 287,
- "width" : 10240,
- "is-cluster-start" : true,
- "log-cluster" : 3
- }
- ]
- },
- {
- "offset" : 61,
- "length" : 1,
- "text" : "\t",
- "bidi-level" : 0,
- "gravity" : "south",
- "language" : "en-us",
- "script" : "Latn",
- "font" : {
- "description" : "Cantarell 14 @wght=400",
- "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
- "variations" : {
- "wght" : 0
- },
- "matrix" : [
- 1,
- -0,
- -0,
- 1,
- 0,
- 0
+ {
+ "offset" : 61,
+ "length" : 1,
+ "text" : "\t",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "Latn",
+ "font" : {
+ "description" : "Cantarell 14 @wght=400",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ }
+ },
+ "flags" : 0,
+ "y-offset" : 0,
+ "start-x-offset" : 0,
+ "end-x-offset" : 0,
+ "glyphs" : [
+ {
+ "glyph" : 268435455,
+ "width" : 46080,
+ "is-cluster-start" : true,
+ "log-cluster" : 0
+ }
]
},
- "flags" : 0,
- "y-offset" : 0,
- "start-x-offset" : 0,
- "end-x-offset" : 0,
- "glyphs" : [
- {
- "glyph" : 268435455,
- "width" : 46080,
- "is-cluster-start" : true,
- "log-cluster" : 0
- }
- ]
- },
- {
- "offset" : 62,
- "length" : 2,
- "text" : "so",
- "bidi-level" : 0,
- "gravity" : "south",
- "language" : "en-us",
- "script" : "Latn",
- "font" : {
- "description" : "Cantarell 14 @wght=400",
- "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
- "variations" : {
- "wght" : 0
- },
- "matrix" : [
- 1,
- -0,
- -0,
- 1,
- 0,
- 0
+ {
+ "offset" : 62,
+ "length" : 2,
+ "text" : "so",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "Latn",
+ "font" : {
+ "description" : "Cantarell 14 @wght=400",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ }
+ },
+ "flags" : 0,
+ "y-offset" : 0,
+ "start-x-offset" : 0,
+ "end-x-offset" : 0,
+ "glyphs" : [
+ {
+ "glyph" : 417,
+ "width" : 9216,
+ "is-cluster-start" : true,
+ "log-cluster" : 0
+ },
+ {
+ "glyph" : 370,
+ "width" : 11264,
+ "is-cluster-start" : true,
+ "log-cluster" : 1
+ }
]
},
- "flags" : 0,
- "y-offset" : 0,
- "start-x-offset" : 0,
- "end-x-offset" : 0,
- "glyphs" : [
- {
- "glyph" : 417,
- "width" : 9216,
- "is-cluster-start" : true,
- "log-cluster" : 0
- },
- {
- "glyph" : 370,
- "width" : 11264,
- "is-cluster-start" : true,
- "log-cluster" : 1
- }
- ]
- },
- {
- "offset" : 64,
- "length" : 1,
- "text" : "\t",
- "bidi-level" : 0,
- "gravity" : "south",
- "language" : "en-us",
- "script" : "Latn",
- "font" : {
- "description" : "Cantarell 14 @wght=400",
- "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
- "variations" : {
- "wght" : 0
- },
- "matrix" : [
- 1,
- -0,
- -0,
- 1,
- 0,
- 0
+ {
+ "offset" : 64,
+ "length" : 1,
+ "text" : "\t",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "Latn",
+ "font" : {
+ "description" : "Cantarell 14 @wght=400",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ }
+ },
+ "flags" : 0,
+ "y-offset" : 0,
+ "start-x-offset" : 0,
+ "end-x-offset" : 0,
+ "glyphs" : [
+ {
+ "glyph" : 268435455,
+ "width" : 46080,
+ "is-cluster-start" : true,
+ "log-cluster" : 0
+ }
]
},
- "flags" : 0,
- "y-offset" : 0,
- "start-x-offset" : 0,
- "end-x-offset" : 0,
- "glyphs" : [
- {
- "glyph" : 268435455,
- "width" : 46080,
- "is-cluster-start" : true,
- "log-cluster" : 0
- }
- ]
- },
- {
- "offset" : 65,
- "length" : 4,
- "text" : "more",
- "bidi-level" : 0,
- "gravity" : "south",
- "language" : "en-us",
- "script" : "Latn",
- "font" : {
- "description" : "Cantarell 14 @wght=400",
- "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
- "variations" : {
- "wght" : 0
- },
- "matrix" : [
- 1,
- -0,
- -0,
- 1,
- 0,
- 0
+ {
+ "offset" : 65,
+ "length" : 4,
+ "text" : "more",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "Latn",
+ "font" : {
+ "description" : "Cantarell 14 @wght=400",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ }
+ },
+ "flags" : 0,
+ "y-offset" : 0,
+ "start-x-offset" : 0,
+ "end-x-offset" : 0,
+ "glyphs" : [
+ {
+ "glyph" : 358,
+ "width" : 17408,
+ "is-cluster-start" : true,
+ "log-cluster" : 0
+ },
+ {
+ "glyph" : 370,
+ "width" : 11264,
+ "is-cluster-start" : true,
+ "log-cluster" : 1
+ },
+ {
+ "glyph" : 409,
+ "width" : 7168,
+ "is-cluster-start" : true,
+ "log-cluster" : 2
+ },
+ {
+ "glyph" : 287,
+ "width" : 10240,
+ "is-cluster-start" : true,
+ "log-cluster" : 3
+ }
]
- },
- "flags" : 0,
- "y-offset" : 0,
- "start-x-offset" : 0,
- "end-x-offset" : 0,
- "glyphs" : [
- {
- "glyph" : 358,
- "width" : 17408,
- "is-cluster-start" : true,
- "log-cluster" : 0
- },
- {
- "glyph" : 370,
- "width" : 11264,
- "is-cluster-start" : true,
- "log-cluster" : 1
- },
- {
- "glyph" : 409,
- "width" : 7168,
- "is-cluster-start" : true,
- "log-cluster" : 2
- },
- {
- "glyph" : 287,
- "width" : 10240,
- "is-cluster-start" : true,
- "log-cluster" : 3
- }
- ]
- }
- ]
+ }
+ ]
+ }
}
]
}
diff --git a/tests/layouts/valid-1.layout b/tests/layouts/valid-1.layout
index 9f7a448d..68203657 100644
--- a/tests/layouts/valid-1.layout
+++ b/tests/layouts/valid-1.layout
@@ -33,644 +33,634 @@
"font" : "Cantarell 11",
"ellipsize" : "end",
"width" : 225280,
+ "log-attrs" : [
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-start" : true,
+ "sentence-boundary" : true,
+ "sentence-start" : true,
+ "backspace-deletes-character" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "word-end" : true,
+ "expandable-space" : true,
+ "word-boundary" : true
+ },
+ {
+ "line-break" : true,
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-start" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "word-end" : true,
+ "expandable-space" : true,
+ "word-boundary" : true
+ },
+ {
+ "line-break" : true,
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-start" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "word-end" : true,
+ "expandable-space" : true,
+ "word-boundary" : true
+ },
+ {
+ "line-break" : true,
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-start" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "word-end" : true,
+ "expandable-space" : true,
+ "word-boundary" : true
+ },
+ {
+ "line-break" : true,
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-start" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "word-end" : true,
+ "expandable-space" : true,
+ "word-boundary" : true
+ },
+ {
+ "line-break" : true,
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-start" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "word-end" : true,
+ "expandable-space" : true,
+ "word-boundary" : true
+ },
+ {
+ "line-break" : true,
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-start" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "word-end" : true,
+ "expandable-space" : true,
+ "word-boundary" : true
+ },
+ {
+ "line-break" : true,
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-start" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "word-end" : true,
+ "expandable-space" : true,
+ "word-boundary" : true
+ },
+ {
+ "line-break" : true,
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-start" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-end" : true,
+ "word-boundary" : true
+ },
+ {
+ "line-break" : true,
+ "mandatory-break" : true,
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "sentence-boundary" : true,
+ "sentence-end" : true,
+ "word-boundary" : true
+ }
+ ],
"output" : {
- "is-wrapped" : false,
- "is-ellipsized" : true,
+ "wrapped" : false,
+ "ellipsized" : true,
+ "hypenated" : false,
"unknown-glyphs" : 0,
"width" : 225280,
"height" : 19456,
- "log-attrs" : [
- {
- "char-break" : true,
- "cursor-position" : true,
- "word-start" : true,
- "sentence-boundary" : true,
- "sentence-start" : true,
- "backspace-deletes-character" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "word-end" : true,
- "expandable-space" : true,
- "word-boundary" : true
- },
- {
- "line-break" : true,
- "char-break" : true,
- "cursor-position" : true,
- "word-start" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "word-end" : true,
- "expandable-space" : true,
- "word-boundary" : true
- },
- {
- "line-break" : true,
- "char-break" : true,
- "cursor-position" : true,
- "word-start" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "word-end" : true,
- "expandable-space" : true,
- "word-boundary" : true
- },
- {
- "line-break" : true,
- "char-break" : true,
- "cursor-position" : true,
- "word-start" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "word-end" : true,
- "expandable-space" : true,
- "word-boundary" : true
- },
- {
- "line-break" : true,
- "char-break" : true,
- "cursor-position" : true,
- "word-start" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "word-end" : true,
- "expandable-space" : true,
- "word-boundary" : true
- },
- {
- "line-break" : true,
- "char-break" : true,
- "cursor-position" : true,
- "word-start" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "word-end" : true,
- "expandable-space" : true,
- "word-boundary" : true
- },
- {
- "line-break" : true,
- "char-break" : true,
- "cursor-position" : true,
- "word-start" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "word-end" : true,
- "expandable-space" : true,
- "word-boundary" : true
- },
- {
- "line-break" : true,
- "char-break" : true,
- "cursor-position" : true,
- "word-start" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "word-end" : true,
- "expandable-space" : true,
- "word-boundary" : true
- },
- {
- "line-break" : true,
- "char-break" : true,
- "cursor-position" : true,
- "word-start" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "word-end" : true,
- "word-boundary" : true
- },
- {
- "line-break" : true,
- "mandatory-break" : true,
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "sentence-boundary" : true,
- "sentence-end" : true,
- "word-boundary" : true
- }
- ],
"lines" : [
{
- "start-index" : 0,
- "length" : 48,
- "paragraph-start" : true,
- "direction" : "ltr",
- "runs" : [
- {
- "offset" : 0,
- "length" : 22,
- "text" : "This is a test of the ",
- "bidi-level" : 0,
- "gravity" : "south",
- "language" : "en-us",
- "script" : "Latn",
- "font" : {
- "description" : "Cantarell 11",
- "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
- "variations" : {
- "wght" : 0
- },
- "matrix" : [
- 1,
- -0,
- -0,
- 1,
- 0,
- 0
+ "position" : [
+ 0,
+ 15360
+ ],
+ "line" : {
+ "start-index" : 0,
+ "length" : 48,
+ "start-offset" : 0,
+ "n-chars" : 48,
+ "wrapped" : false,
+ "ellipsized" : true,
+ "hyphenated" : false,
+ "justified" : false,
+ "paragraph-start" : true,
+ "paragraph-end" : true,
+ "direction" : "ltr",
+ "runs" : [
+ {
+ "offset" : 0,
+ "length" : 22,
+ "text" : "This is a test of the ",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "Latn",
+ "font" : {
+ "description" : "Cantarell 11",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ }
+ },
+ "flags" : 0,
+ "y-offset" : 0,
+ "start-x-offset" : 0,
+ "end-x-offset" : 0,
+ "glyphs" : [
+ {
+ "glyph" : 187,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 0
+ },
+ {
+ "glyph" : 319,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 1
+ },
+ {
+ "glyph" : 324,
+ "width" : 4096,
+ "is-cluster-start" : true,
+ "log-cluster" : 2
+ },
+ {
+ "glyph" : 417,
+ "width" : 7168,
+ "is-cluster-start" : true,
+ "log-cluster" : 3
+ },
+ {
+ "glyph" : 1109,
+ "width" : 3072,
+ "is-cluster-start" : true,
+ "log-cluster" : 4
+ },
+ {
+ "glyph" : 324,
+ "width" : 4096,
+ "is-cluster-start" : true,
+ "log-cluster" : 5
+ },
+ {
+ "glyph" : 417,
+ "width" : 7168,
+ "is-cluster-start" : true,
+ "log-cluster" : 6
+ },
+ {
+ "glyph" : 1109,
+ "width" : 3072,
+ "is-cluster-start" : true,
+ "log-cluster" : 7
+ },
+ {
+ "glyph" : 244,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 8
+ },
+ {
+ "glyph" : 1109,
+ "width" : 3072,
+ "is-cluster-start" : true,
+ "log-cluster" : 9
+ },
+ {
+ "glyph" : 430,
+ "width" : 5120,
+ "is-cluster-start" : true,
+ "log-cluster" : 10
+ },
+ {
+ "glyph" : 287,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 11
+ },
+ {
+ "glyph" : 417,
+ "width" : 7168,
+ "is-cluster-start" : true,
+ "log-cluster" : 12
+ },
+ {
+ "glyph" : 430,
+ "width" : 5120,
+ "is-cluster-start" : true,
+ "log-cluster" : 13
+ },
+ {
+ "glyph" : 1109,
+ "width" : 3072,
+ "is-cluster-start" : true,
+ "log-cluster" : 14
+ },
+ {
+ "glyph" : 370,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 15
+ },
+ {
+ "glyph" : 311,
+ "width" : 5120,
+ "is-cluster-start" : true,
+ "log-cluster" : 16
+ },
+ {
+ "glyph" : 1109,
+ "width" : 3072,
+ "is-cluster-start" : true,
+ "log-cluster" : 17
+ },
+ {
+ "glyph" : 430,
+ "width" : 5120,
+ "is-cluster-start" : true,
+ "log-cluster" : 18
+ },
+ {
+ "glyph" : 319,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 19
+ },
+ {
+ "glyph" : 287,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 20
+ },
+ {
+ "glyph" : 1109,
+ "width" : 3072,
+ "is-cluster-start" : true,
+ "log-cluster" : 21
+ }
]
},
- "flags" : 0,
- "y-offset" : 0,
- "start-x-offset" : 0,
- "end-x-offset" : 0,
- "glyphs" : [
- {
- "glyph" : 187,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 0
- },
- {
- "glyph" : 319,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 1
- },
- {
- "glyph" : 324,
- "width" : 4096,
- "is-cluster-start" : true,
- "log-cluster" : 2
- },
- {
- "glyph" : 417,
- "width" : 7168,
- "is-cluster-start" : true,
- "log-cluster" : 3
- },
- {
- "glyph" : 1109,
- "width" : 3072,
- "is-cluster-start" : true,
- "log-cluster" : 4
- },
- {
- "glyph" : 324,
- "width" : 4096,
- "is-cluster-start" : true,
- "log-cluster" : 5
- },
- {
- "glyph" : 417,
- "width" : 7168,
- "is-cluster-start" : true,
- "log-cluster" : 6
- },
- {
- "glyph" : 1109,
- "width" : 3072,
- "is-cluster-start" : true,
- "log-cluster" : 7
- },
- {
- "glyph" : 244,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 8
- },
- {
- "glyph" : 1109,
- "width" : 3072,
- "is-cluster-start" : true,
- "log-cluster" : 9
- },
- {
- "glyph" : 430,
- "width" : 5120,
- "is-cluster-start" : true,
- "log-cluster" : 10
- },
- {
- "glyph" : 287,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 11
- },
- {
- "glyph" : 417,
- "width" : 7168,
- "is-cluster-start" : true,
- "log-cluster" : 12
- },
- {
- "glyph" : 430,
- "width" : 5120,
- "is-cluster-start" : true,
- "log-cluster" : 13
- },
- {
- "glyph" : 1109,
- "width" : 3072,
- "is-cluster-start" : true,
- "log-cluster" : 14
- },
- {
- "glyph" : 370,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 15
- },
- {
- "glyph" : 311,
- "width" : 5120,
- "is-cluster-start" : true,
- "log-cluster" : 16
- },
- {
- "glyph" : 1109,
- "width" : 3072,
- "is-cluster-start" : true,
- "log-cluster" : 17
- },
- {
- "glyph" : 430,
- "width" : 5120,
- "is-cluster-start" : true,
- "log-cluster" : 18
- },
- {
- "glyph" : 319,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 19
- },
- {
- "glyph" : 287,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 20
- },
- {
- "glyph" : 1109,
- "width" : 3072,
- "is-cluster-start" : true,
- "log-cluster" : 21
- }
- ]
- },
- {
- "offset" : 22,
- "length" : 11,
- "text" : "automatic e",
- "bidi-level" : 0,
- "gravity" : "south",
- "language" : "en-us",
- "script" : "Latn",
- "font" : {
- "description" : "Cantarell 11",
- "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
- "variations" : {
- "wght" : 0
- },
- "matrix" : [
- 1,
- -0,
- -0,
- 1,
- 0,
- 0
+ {
+ "offset" : 22,
+ "length" : 11,
+ "text" : "automatic e",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "Latn",
+ "font" : {
+ "description" : "Cantarell 11",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ }
+ },
+ "flags" : 0,
+ "extra-attributes" : [
+ {
+ "start" : 22,
+ "end" : 41,
+ "type" : "foreground",
+ "value" : "#00000000ffff"
+ },
+ {
+ "start" : 22,
+ "end" : 41,
+ "type" : "underline",
+ "value" : "single"
+ }
+ ],
+ "y-offset" : 0,
+ "start-x-offset" : 0,
+ "end-x-offset" : 0,
+ "glyphs" : [
+ {
+ "glyph" : 244,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 0
+ },
+ {
+ "glyph" : 438,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 1
+ },
+ {
+ "glyph" : 430,
+ "width" : 5120,
+ "is-cluster-start" : true,
+ "log-cluster" : 2
+ },
+ {
+ "glyph" : 370,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 3
+ },
+ {
+ "glyph" : 358,
+ "width" : 13312,
+ "is-cluster-start" : true,
+ "log-cluster" : 4
+ },
+ {
+ "glyph" : 244,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 5
+ },
+ {
+ "glyph" : 430,
+ "width" : 5120,
+ "is-cluster-start" : true,
+ "log-cluster" : 6
+ },
+ {
+ "glyph" : 324,
+ "width" : 4096,
+ "is-cluster-start" : true,
+ "log-cluster" : 7
+ },
+ {
+ "glyph" : 273,
+ "width" : 7168,
+ "is-cluster-start" : true,
+ "log-cluster" : 8
+ },
+ {
+ "glyph" : 1109,
+ "width" : 3072,
+ "is-cluster-start" : true,
+ "log-cluster" : 9
+ },
+ {
+ "glyph" : 287,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 10
+ }
]
},
- "flags" : 0,
- "extra-attributes" : [
- {
- "start" : 22,
- "end" : 41,
- "type" : "foreground",
- "value" : "#00000000ffff"
- },
- {
- "start" : 22,
- "end" : 41,
- "type" : "underline",
- "value" : "single"
- }
- ],
- "y-offset" : 0,
- "start-x-offset" : 0,
- "end-x-offset" : 0,
- "glyphs" : [
- {
- "glyph" : 244,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 0
- },
- {
- "glyph" : 438,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 1
- },
- {
- "glyph" : 430,
- "width" : 5120,
- "is-cluster-start" : true,
- "log-cluster" : 2
- },
- {
- "glyph" : 370,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 3
- },
- {
- "glyph" : 358,
- "width" : 13312,
- "is-cluster-start" : true,
- "log-cluster" : 4
- },
- {
- "glyph" : 244,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 5
- },
- {
- "glyph" : 430,
- "width" : 5120,
- "is-cluster-start" : true,
- "log-cluster" : 6
- },
- {
- "glyph" : 324,
- "width" : 4096,
- "is-cluster-start" : true,
- "log-cluster" : 7
- },
- {
- "glyph" : 273,
- "width" : 7168,
- "is-cluster-start" : true,
- "log-cluster" : 8
- },
- {
- "glyph" : 1109,
- "width" : 3072,
- "is-cluster-start" : true,
- "log-cluster" : 9
- },
- {
- "glyph" : 287,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 10
- }
- ]
- },
- {
- "offset" : 33,
- "length" : 15,
- "text" : "mergency brake!",
- "bidi-level" : 0,
- "gravity" : "south",
- "language" : "en-us",
- "script" : "Zyyy",
- "font" : {
- "description" : "Cantarell 11",
- "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
- "variations" : {
- "wght" : 0
- },
- "matrix" : [
- 1,
- -0,
- -0,
- 1,
- 0,
- 0
+ {
+ "offset" : 33,
+ "length" : 15,
+ "text" : "mergency brake!",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "Zyyy",
+ "font" : {
+ "description" : "Cantarell 11",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ }
+ },
+ "flags" : 2,
+ "extra-attributes" : [
+ {
+ "end" : 2147483647,
+ "type" : "fallback",
+ "value" : false
+ },
+ {
+ "start" : 22,
+ "end" : 41,
+ "type" : "foreground",
+ "value" : "#00000000ffff"
+ },
+ {
+ "start" : 22,
+ "end" : 41,
+ "type" : "underline",
+ "value" : "single"
+ }
+ ],
+ "y-offset" : 0,
+ "start-x-offset" : 0,
+ "end-x-offset" : 0,
+ "glyphs" : [
+ {
+ "glyph" : 1062,
+ "width" : 20480,
+ "is-cluster-start" : true,
+ "log-cluster" : 0
+ }
]
- },
- "flags" : 2,
- "extra-attributes" : [
- {
- "end" : 2147483647,
- "type" : "fallback",
- "value" : false
- },
- {
- "start" : 22,
- "end" : 41,
- "type" : "foreground",
- "value" : "#00000000ffff"
- },
- {
- "start" : 22,
- "end" : 41,
- "type" : "underline",
- "value" : "single"
- }
- ],
- "y-offset" : 0,
- "start-x-offset" : 0,
- "end-x-offset" : 0,
- "glyphs" : [
- {
- "glyph" : 1062,
- "width" : 20480,
- "is-cluster-start" : true,
- "log-cluster" : 0
- }
- ]
- }
- ]
+ }
+ ]
+ }
}
]
}
diff --git a/tests/layouts/valid-10.layout b/tests/layouts/valid-10.layout
index 6363bdab..802da8cc 100644
--- a/tests/layouts/valid-10.layout
+++ b/tests/layouts/valid-10.layout
@@ -18,386 +18,359 @@
"comment" : "Mixed-direction ellipsization",
"text" : "Hello שלום Γειά σας",
"font" : "Cantarell 11",
- "justify" : true,
"ellipsize" : "end",
"width" : 102400,
+ "log-attrs" : [
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-start" : true,
+ "sentence-boundary" : true,
+ "sentence-start" : true,
+ "backspace-deletes-character" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "word-end" : true,
+ "expandable-space" : true,
+ "word-boundary" : true
+ },
+ {
+ "line-break" : true,
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-start" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "backspace-deletes-character" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "backspace-deletes-character" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "backspace-deletes-character" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "word-end" : true,
+ "backspace-deletes-character" : true,
+ "expandable-space" : true,
+ "word-boundary" : true
+ },
+ {
+ "line-break" : true,
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-start" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "word-end" : true,
+ "expandable-space" : true,
+ "word-boundary" : true
+ },
+ {
+ "line-break" : true,
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-start" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "line-break" : true,
+ "mandatory-break" : true,
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "word-end" : true,
+ "sentence-boundary" : true,
+ "sentence-end" : true,
+ "word-boundary" : true
+ }
+ ],
"output" : {
- "is-wrapped" : false,
- "is-ellipsized" : true,
+ "wrapped" : false,
+ "ellipsized" : true,
+ "hypenated" : false,
"unknown-glyphs" : 0,
"width" : 102400,
"height" : 19456,
- "log-attrs" : [
- {
- "char-break" : true,
- "cursor-position" : true,
- "word-start" : true,
- "sentence-boundary" : true,
- "sentence-start" : true,
- "backspace-deletes-character" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "word-end" : true,
- "expandable-space" : true,
- "word-boundary" : true
- },
- {
- "line-break" : true,
- "char-break" : true,
- "cursor-position" : true,
- "word-start" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "backspace-deletes-character" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "backspace-deletes-character" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "backspace-deletes-character" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "word-end" : true,
- "backspace-deletes-character" : true,
- "expandable-space" : true,
- "word-boundary" : true
- },
- {
- "line-break" : true,
- "char-break" : true,
- "cursor-position" : true,
- "word-start" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "word-end" : true,
- "expandable-space" : true,
- "word-boundary" : true
- },
- {
- "line-break" : true,
- "char-break" : true,
- "cursor-position" : true,
- "word-start" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "line-break" : true,
- "mandatory-break" : true,
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "word-end" : true,
- "sentence-boundary" : true,
- "sentence-end" : true,
- "word-boundary" : true
- }
- ],
"lines" : [
{
- "start-index" : 0,
- "length" : 30,
- "paragraph-start" : true,
- "direction" : "ltr",
- "runs" : [
- {
- "offset" : 0,
- "length" : 6,
- "text" : "Hello ",
- "bidi-level" : 0,
- "gravity" : "south",
- "language" : "en-us",
- "script" : "Latn",
- "font" : {
- "description" : "Cantarell 11",
- "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
- "variations" : {
- "wght" : 0
+ "position" : [
+ 0,
+ 15360
+ ],
+ "line" : {
+ "start-index" : 0,
+ "length" : 30,
+ "start-offset" : 0,
+ "n-chars" : 19,
+ "wrapped" : false,
+ "ellipsized" : true,
+ "hyphenated" : false,
+ "justified" : false,
+ "paragraph-start" : true,
+ "paragraph-end" : true,
+ "direction" : "ltr",
+ "runs" : [
+ {
+ "offset" : 0,
+ "length" : 6,
+ "text" : "Hello ",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "Latn",
+ "font" : {
+ "description" : "Cantarell 11",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ }
},
- "matrix" : [
- 1,
- -0,
- -0,
- 1,
- 0,
- 0
+ "flags" : 0,
+ "y-offset" : 0,
+ "start-x-offset" : 0,
+ "end-x-offset" : 0,
+ "glyphs" : [
+ {
+ "glyph" : 76,
+ "width" : 11264,
+ "is-cluster-start" : true,
+ "log-cluster" : 0
+ },
+ {
+ "glyph" : 287,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 1
+ },
+ {
+ "glyph" : 349,
+ "width" : 4096,
+ "is-cluster-start" : true,
+ "log-cluster" : 2
+ },
+ {
+ "glyph" : 349,
+ "width" : 4096,
+ "is-cluster-start" : true,
+ "log-cluster" : 3
+ },
+ {
+ "glyph" : 370,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 4
+ },
+ {
+ "glyph" : 1109,
+ "width" : 3072,
+ "is-cluster-start" : true,
+ "log-cluster" : 5
+ }
]
},
- "flags" : 0,
- "y-offset" : 0,
- "start-x-offset" : 0,
- "end-x-offset" : 0,
- "glyphs" : [
- {
- "glyph" : 76,
- "width" : 11264,
- "is-cluster-start" : true,
- "log-cluster" : 0
- },
- {
- "glyph" : 287,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 1
+ {
+ "offset" : 6,
+ "length" : 8,
+ "text" : "שלום",
+ "bidi-level" : 1,
+ "gravity" : "south",
+ "language" : "he",
+ "script" : "Hebr",
+ "font" : {
+ "description" : "DejaVu Sans 11",
+ "checksum" : "69ccd07023a72ceb27a5e5c22f728627353b60a198170f5e58dd7014221abf01"
},
- {
- "glyph" : 349,
- "width" : 4096,
- "is-cluster-start" : true,
- "log-cluster" : 2
- },
- {
- "glyph" : 349,
- "width" : 4096,
- "is-cluster-start" : true,
- "log-cluster" : 3
- },
- {
- "glyph" : 370,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 4
- },
- {
- "glyph" : 1109,
- "width" : 3072,
- "is-cluster-start" : true,
- "log-cluster" : 5
- }
- ]
- },
- {
- "offset" : 6,
- "length" : 8,
- "text" : "שלום",
- "bidi-level" : 1,
- "gravity" : "south",
- "language" : "he",
- "script" : "Hebr",
- "font" : {
- "description" : "DejaVu Sans 11",
- "checksum" : "69ccd07023a72ceb27a5e5c22f728627353b60a198170f5e58dd7014221abf01",
- "matrix" : [
- 1,
- -0,
- -0,
- 1,
- 0,
- 0
+ "flags" : 0,
+ "y-offset" : 0,
+ "start-x-offset" : 0,
+ "end-x-offset" : 0,
+ "glyphs" : [
+ {
+ "glyph" : 1332,
+ "width" : 10240,
+ "is-cluster-start" : true,
+ "log-cluster" : 6
+ },
+ {
+ "glyph" : 1324,
+ "width" : 4096,
+ "is-cluster-start" : true,
+ "log-cluster" : 4
+ },
+ {
+ "glyph" : 1331,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 2
+ },
+ {
+ "glyph" : 1344,
+ "width" : 10240,
+ "is-cluster-start" : true,
+ "log-cluster" : 0
+ }
]
},
- "flags" : 0,
- "y-offset" : 0,
- "start-x-offset" : 0,
- "end-x-offset" : 0,
- "glyphs" : [
- {
- "glyph" : 1332,
- "width" : 10240,
- "is-cluster-start" : true,
- "log-cluster" : 6
- },
- {
- "glyph" : 1324,
- "width" : 4096,
- "is-cluster-start" : true,
- "log-cluster" : 4
+ {
+ "offset" : 14,
+ "length" : 1,
+ "text" : " ",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "he",
+ "script" : "Hebr",
+ "font" : {
+ "description" : "Cantarell 11",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ }
},
- {
- "glyph" : 1331,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 2
- },
- {
- "glyph" : 1344,
- "width" : 10240,
- "is-cluster-start" : true,
- "log-cluster" : 0
- }
- ]
- },
- {
- "offset" : 14,
- "length" : 1,
- "text" : " ",
- "bidi-level" : 0,
- "gravity" : "south",
- "language" : "he",
- "script" : "Hebr",
- "font" : {
- "description" : "Cantarell 11",
- "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
- "variations" : {
- "wght" : 0
- },
- "matrix" : [
- 1,
- -0,
- -0,
- 1,
- 0,
- 0
+ "flags" : 0,
+ "y-offset" : 0,
+ "start-x-offset" : 0,
+ "end-x-offset" : 0,
+ "glyphs" : [
+ {
+ "glyph" : 1109,
+ "width" : 3072,
+ "is-cluster-start" : true,
+ "log-cluster" : 0
+ }
]
},
- "flags" : 0,
- "y-offset" : 0,
- "start-x-offset" : 0,
- "end-x-offset" : 0,
- "glyphs" : [
- {
- "glyph" : 1109,
- "width" : 3072,
- "is-cluster-start" : true,
- "log-cluster" : 0
- }
- ]
- },
- {
- "offset" : 15,
- "length" : 2,
- "text" : "Γ",
- "bidi-level" : 0,
- "gravity" : "south",
- "language" : "el",
- "script" : "Grek",
- "font" : {
- "description" : "Cantarell 11",
- "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
- "variations" : {
- "wght" : 0
+ {
+ "offset" : 15,
+ "length" : 2,
+ "text" : "Γ",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "el",
+ "script" : "Grek",
+ "font" : {
+ "description" : "Cantarell 11",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ }
},
- "matrix" : [
- 1,
- -0,
- -0,
- 1,
- 0,
- 0
+ "flags" : 0,
+ "y-offset" : 0,
+ "start-x-offset" : 0,
+ "end-x-offset" : 0,
+ "glyphs" : [
+ {
+ "glyph" : 677,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 0
+ }
]
},
- "flags" : 0,
- "y-offset" : 0,
- "start-x-offset" : 0,
- "end-x-offset" : 0,
- "glyphs" : [
- {
- "glyph" : 677,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 0
- }
- ]
- },
- {
- "offset" : 17,
- "length" : 13,
- "text" : "ειά σας",
- "bidi-level" : 0,
- "gravity" : "south",
- "language" : "en-us",
- "script" : "Zyyy",
- "font" : {
- "description" : "Cantarell 11",
- "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
- "variations" : {
- "wght" : 0
+ {
+ "offset" : 17,
+ "length" : 13,
+ "text" : "ειά σας",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "Zyyy",
+ "font" : {
+ "description" : "Cantarell 11",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ }
},
- "matrix" : [
- 1,
- -0,
- -0,
- 1,
- 0,
- 0
+ "flags" : 2,
+ "extra-attributes" : [
+ {
+ "end" : 2147483647,
+ "type" : "fallback",
+ "value" : false
+ }
+ ],
+ "y-offset" : 0,
+ "start-x-offset" : 0,
+ "end-x-offset" : 0,
+ "glyphs" : [
+ {
+ "glyph" : 1062,
+ "width" : 19456,
+ "is-cluster-start" : true,
+ "log-cluster" : 0
+ }
]
- },
- "flags" : 2,
- "extra-attributes" : [
- {
- "end" : 2147483647,
- "type" : "fallback",
- "value" : false
- }
- ],
- "y-offset" : 0,
- "start-x-offset" : 0,
- "end-x-offset" : 0,
- "glyphs" : [
- {
- "glyph" : 1062,
- "width" : 19456,
- "is-cluster-start" : true,
- "log-cluster" : 0
- }
- ]
- }
- ]
+ }
+ ]
+ }
}
]
}
diff --git a/tests/layouts/valid-11.layout b/tests/layouts/valid-11.layout
index 2f3165c7..23082183 100644
--- a/tests/layouts/valid-11.layout
+++ b/tests/layouts/valid-11.layout
@@ -55,413 +55,387 @@
"font" : "Cantarell 11",
"wrap" : "char",
"width" : 225280,
+ "log-attrs" : [
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-start" : true,
+ "sentence-boundary" : true,
+ "sentence-start" : true,
+ "backspace-deletes-character" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "word-end" : true,
+ "expandable-space" : true,
+ "word-boundary" : true
+ },
+ {
+ "line-break" : true,
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-start" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "word-end" : true,
+ "expandable-space" : true,
+ "word-boundary" : true
+ },
+ {
+ "line-break" : true,
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-start" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "line-break" : true,
+ "mandatory-break" : true,
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "word-end" : true,
+ "sentence-boundary" : true,
+ "sentence-end" : true,
+ "word-boundary" : true
+ }
+ ],
"output" : {
- "is-wrapped" : false,
- "is-ellipsized" : false,
+ "wrapped" : false,
+ "ellipsized" : false,
+ "hypenated" : false,
"unknown-glyphs" : 0,
"width" : 109568,
"height" : 20480,
- "log-attrs" : [
- {
- "char-break" : true,
- "cursor-position" : true,
- "word-start" : true,
- "sentence-boundary" : true,
- "sentence-start" : true,
- "backspace-deletes-character" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "word-end" : true,
- "expandable-space" : true,
- "word-boundary" : true
- },
- {
- "line-break" : true,
- "char-break" : true,
- "cursor-position" : true,
- "word-start" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "word-end" : true,
- "expandable-space" : true,
- "word-boundary" : true
- },
- {
- "line-break" : true,
- "char-break" : true,
- "cursor-position" : true,
- "word-start" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "line-break" : true,
- "mandatory-break" : true,
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "word-end" : true,
- "sentence-boundary" : true,
- "sentence-end" : true,
- "word-boundary" : true
- }
- ],
"lines" : [
{
- "start-index" : 0,
- "length" : 16,
- "paragraph-start" : true,
- "direction" : "ltr",
- "runs" : [
- {
- "offset" : 0,
- "length" : 6,
- "text" : "double",
- "bidi-level" : 0,
- "gravity" : "south",
- "language" : "en-us",
- "script" : "Latn",
- "font" : {
- "description" : "Cantarell 11",
- "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
- "variations" : {
- "wght" : 0
+ "position" : [
+ 0,
+ 16384
+ ],
+ "line" : {
+ "start-index" : 0,
+ "length" : 16,
+ "start-offset" : 0,
+ "n-chars" : 16,
+ "wrapped" : false,
+ "ellipsized" : false,
+ "hyphenated" : false,
+ "justified" : false,
+ "paragraph-start" : true,
+ "paragraph-end" : true,
+ "direction" : "ltr",
+ "runs" : [
+ {
+ "offset" : 0,
+ "length" : 6,
+ "text" : "double",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "Latn",
+ "font" : {
+ "description" : "Cantarell 11",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ }
},
- "matrix" : [
- 1,
- -0,
- -0,
- 1,
- 0,
- 0
+ "flags" : 0,
+ "extra-attributes" : [
+ {
+ "end" : 6,
+ "type" : "underline",
+ "value" : "double"
+ },
+ {
+ "end" : 6,
+ "type" : "overline",
+ "value" : "single"
+ }
+ ],
+ "y-offset" : 0,
+ "start-x-offset" : 0,
+ "end-x-offset" : 0,
+ "glyphs" : [
+ {
+ "glyph" : 280,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 0
+ },
+ {
+ "glyph" : 370,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 1
+ },
+ {
+ "glyph" : 438,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 2
+ },
+ {
+ "glyph" : 272,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 3
+ },
+ {
+ "glyph" : 349,
+ "width" : 4096,
+ "is-cluster-start" : true,
+ "log-cluster" : 4
+ },
+ {
+ "glyph" : 287,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 5
+ }
]
},
- "flags" : 0,
- "extra-attributes" : [
- {
- "end" : 6,
- "type" : "underline",
- "value" : "double"
- },
- {
- "end" : 6,
- "type" : "overline",
- "value" : "single"
- }
- ],
- "y-offset" : 0,
- "start-x-offset" : 0,
- "end-x-offset" : 0,
- "glyphs" : [
- {
- "glyph" : 280,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 0
- },
- {
- "glyph" : 370,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 1
- },
- {
- "glyph" : 438,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 2
+ {
+ "offset" : 6,
+ "length" : 1,
+ "text" : " ",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "Latn",
+ "font" : {
+ "description" : "Cantarell 11",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ }
},
- {
- "glyph" : 272,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 3
- },
- {
- "glyph" : 349,
- "width" : 4096,
- "is-cluster-start" : true,
- "log-cluster" : 4
- },
- {
- "glyph" : 287,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 5
- }
- ]
- },
- {
- "offset" : 6,
- "length" : 1,
- "text" : " ",
- "bidi-level" : 0,
- "gravity" : "south",
- "language" : "en-us",
- "script" : "Latn",
- "font" : {
- "description" : "Cantarell 11",
- "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
- "variations" : {
- "wght" : 0
- },
- "matrix" : [
- 1,
- -0,
- -0,
- 1,
- 0,
- 0
+ "flags" : 0,
+ "y-offset" : 0,
+ "start-x-offset" : 0,
+ "end-x-offset" : 0,
+ "glyphs" : [
+ {
+ "glyph" : 1109,
+ "width" : 3072,
+ "is-cluster-start" : true,
+ "log-cluster" : 0
+ }
]
},
- "flags" : 0,
- "y-offset" : 0,
- "start-x-offset" : 0,
- "end-x-offset" : 0,
- "glyphs" : [
- {
- "glyph" : 1109,
- "width" : 3072,
- "is-cluster-start" : true,
- "log-cluster" : 0
- }
- ]
- },
- {
- "offset" : 7,
- "length" : 3,
- "text" : "low",
- "bidi-level" : 0,
- "gravity" : "south",
- "language" : "en-us",
- "script" : "Latn",
- "font" : {
- "description" : "Cantarell 11",
- "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
- "variations" : {
- "wght" : 0
+ {
+ "offset" : 7,
+ "length" : 3,
+ "text" : "low",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "Latn",
+ "font" : {
+ "description" : "Cantarell 11",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ }
},
- "matrix" : [
- 1,
- -0,
- -0,
- 1,
- 0,
- 0
+ "flags" : 0,
+ "extra-attributes" : [
+ {
+ "start" : 7,
+ "end" : 10,
+ "type" : "underline",
+ "value" : "low"
+ },
+ {
+ "start" : 7,
+ "end" : 10,
+ "type" : "strikethrough",
+ "value" : true
+ }
+ ],
+ "y-offset" : 0,
+ "start-x-offset" : 0,
+ "end-x-offset" : 0,
+ "glyphs" : [
+ {
+ "glyph" : 349,
+ "width" : 4096,
+ "is-cluster-start" : true,
+ "log-cluster" : 0
+ },
+ {
+ "glyph" : 370,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 1
+ },
+ {
+ "glyph" : 467,
+ "width" : 11264,
+ "is-cluster-start" : true,
+ "log-cluster" : 2
+ }
]
},
- "flags" : 0,
- "extra-attributes" : [
- {
- "start" : 7,
- "end" : 10,
- "type" : "underline",
- "value" : "low"
- },
- {
- "start" : 7,
- "end" : 10,
- "type" : "strikethrough",
- "value" : true
- }
- ],
- "y-offset" : 0,
- "start-x-offset" : 0,
- "end-x-offset" : 0,
- "glyphs" : [
- {
- "glyph" : 349,
- "width" : 4096,
- "is-cluster-start" : true,
- "log-cluster" : 0
+ {
+ "offset" : 10,
+ "length" : 1,
+ "text" : " ",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "Latn",
+ "font" : {
+ "description" : "Cantarell 11",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ }
},
- {
- "glyph" : 370,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 1
- },
- {
- "glyph" : 467,
- "width" : 11264,
- "is-cluster-start" : true,
- "log-cluster" : 2
- }
- ]
- },
- {
- "offset" : 10,
- "length" : 1,
- "text" : " ",
- "bidi-level" : 0,
- "gravity" : "south",
- "language" : "en-us",
- "script" : "Latn",
- "font" : {
- "description" : "Cantarell 11",
- "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
- "variations" : {
- "wght" : 0
- },
- "matrix" : [
- 1,
- -0,
- -0,
- 1,
- 0,
- 0
+ "flags" : 0,
+ "y-offset" : 0,
+ "start-x-offset" : 0,
+ "end-x-offset" : 0,
+ "glyphs" : [
+ {
+ "glyph" : 1109,
+ "width" : 3072,
+ "is-cluster-start" : true,
+ "log-cluster" : 0
+ }
]
},
- "flags" : 0,
- "y-offset" : 0,
- "start-x-offset" : 0,
- "end-x-offset" : 0,
- "glyphs" : [
- {
- "glyph" : 1109,
- "width" : 3072,
- "is-cluster-start" : true,
- "log-cluster" : 0
- }
- ]
- },
- {
- "offset" : 11,
- "length" : 5,
- "text" : "error",
- "bidi-level" : 0,
- "gravity" : "south",
- "language" : "en-us",
- "script" : "Latn",
- "font" : {
- "description" : "Cantarell 11",
- "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
- "variations" : {
- "wght" : 0
+ {
+ "offset" : 11,
+ "length" : 5,
+ "text" : "error",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "Latn",
+ "font" : {
+ "description" : "Cantarell 11",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ }
},
- "matrix" : [
- 1,
- -0,
- -0,
- 1,
- 0,
- 0
+ "flags" : 0,
+ "extra-attributes" : [
+ {
+ "start" : 11,
+ "end" : 16,
+ "type" : "rise",
+ "value" : 1024
+ },
+ {
+ "start" : 11,
+ "end" : 16,
+ "type" : "underline",
+ "value" : "error"
+ }
+ ],
+ "y-offset" : 1024,
+ "start-x-offset" : 0,
+ "end-x-offset" : 0,
+ "glyphs" : [
+ {
+ "glyph" : 287,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 0
+ },
+ {
+ "glyph" : 409,
+ "width" : 6144,
+ "is-cluster-start" : true,
+ "log-cluster" : 1
+ },
+ {
+ "glyph" : 409,
+ "width" : 6144,
+ "is-cluster-start" : true,
+ "log-cluster" : 2
+ },
+ {
+ "glyph" : 370,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 3
+ },
+ {
+ "glyph" : 409,
+ "width" : 6144,
+ "is-cluster-start" : true,
+ "log-cluster" : 4
+ }
]
- },
- "flags" : 0,
- "extra-attributes" : [
- {
- "start" : 11,
- "end" : 16,
- "type" : "rise",
- "value" : 1024
- },
- {
- "start" : 11,
- "end" : 16,
- "type" : "underline",
- "value" : "error"
- }
- ],
- "y-offset" : 1024,
- "start-x-offset" : 0,
- "end-x-offset" : 0,
- "glyphs" : [
- {
- "glyph" : 287,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 0
- },
- {
- "glyph" : 409,
- "width" : 6144,
- "is-cluster-start" : true,
- "log-cluster" : 1
- },
- {
- "glyph" : 409,
- "width" : 6144,
- "is-cluster-start" : true,
- "log-cluster" : 2
- },
- {
- "glyph" : 370,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 3
- },
- {
- "glyph" : 409,
- "width" : 6144,
- "is-cluster-start" : true,
- "log-cluster" : 4
- }
- ]
- }
- ]
+ }
+ ]
+ }
}
]
}
diff --git a/tests/layouts/valid-12.layout b/tests/layouts/valid-12.layout
index c29e9202..4c5dae62 100644
--- a/tests/layouts/valid-12.layout
+++ b/tests/layouts/valid-12.layout
@@ -48,699 +48,606 @@
}
]
},
+ "log-attrs" : [
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-start" : true,
+ "sentence-boundary" : true,
+ "sentence-start" : true,
+ "backspace-deletes-character" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "word-end" : true,
+ "word-boundary" : true
+ },
+ {
+ "line-break" : true,
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-start" : true,
+ "backspace-deletes-character" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "word-end" : true,
+ "word-boundary" : true
+ },
+ {
+ "line-break" : true,
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-start" : true,
+ "backspace-deletes-character" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "word-end" : true,
+ "word-boundary" : true
+ },
+ {
+ "line-break" : true,
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-start" : true,
+ "backspace-deletes-character" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "word-end" : true,
+ "sentence-end" : true,
+ "word-boundary" : true
+ },
+ {
+ "line-break" : true,
+ "mandatory-break" : true,
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-start" : true,
+ "sentence-boundary" : true,
+ "sentence-start" : true,
+ "backspace-deletes-character" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "word-end" : true,
+ "word-boundary" : true
+ },
+ {
+ "line-break" : true,
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-start" : true,
+ "backspace-deletes-character" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "word-end" : true,
+ "word-boundary" : true
+ },
+ {
+ "line-break" : true,
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-start" : true,
+ "backspace-deletes-character" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "word-end" : true,
+ "word-boundary" : true
+ },
+ {
+ "line-break" : true,
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-start" : true,
+ "backspace-deletes-character" : true,
+ "word-boundary" : true
+ },
+ {
+ "line-break" : true,
+ "mandatory-break" : true,
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "word-end" : true,
+ "sentence-boundary" : true,
+ "sentence-end" : true,
+ "word-boundary" : true
+ }
+ ],
"output" : {
- "is-wrapped" : true,
- "is-ellipsized" : false,
+ "wrapped" : true,
+ "ellipsized" : false,
+ "hypenated" : false,
"unknown-glyphs" : 1,
"width" : 179200,
"height" : 38912,
- "log-attrs" : [
- {
- "char-break" : true,
- "cursor-position" : true,
- "word-start" : true,
- "sentence-boundary" : true,
- "sentence-start" : true,
- "backspace-deletes-character" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "word-end" : true,
- "word-boundary" : true
- },
- {
- "line-break" : true,
- "char-break" : true,
- "cursor-position" : true,
- "word-start" : true,
- "backspace-deletes-character" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "word-end" : true,
- "word-boundary" : true
- },
- {
- "line-break" : true,
- "char-break" : true,
- "cursor-position" : true,
- "word-start" : true,
- "backspace-deletes-character" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "word-end" : true,
- "word-boundary" : true
- },
- {
- "line-break" : true,
- "char-break" : true,
- "cursor-position" : true,
- "word-start" : true,
- "backspace-deletes-character" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "word-end" : true,
- "sentence-end" : true,
- "word-boundary" : true
- },
- {
- "line-break" : true,
- "mandatory-break" : true,
- "char-break" : true,
- "cursor-position" : true,
- "word-start" : true,
- "sentence-boundary" : true,
- "sentence-start" : true,
- "backspace-deletes-character" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "word-end" : true,
- "word-boundary" : true
- },
- {
- "line-break" : true,
- "char-break" : true,
- "cursor-position" : true,
- "word-start" : true,
- "backspace-deletes-character" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "word-end" : true,
- "word-boundary" : true
- },
- {
- "line-break" : true,
- "char-break" : true,
- "cursor-position" : true,
- "word-start" : true,
- "backspace-deletes-character" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "word-end" : true,
- "word-boundary" : true
- },
- {
- "line-break" : true,
- "char-break" : true,
- "cursor-position" : true,
- "word-start" : true,
- "backspace-deletes-character" : true,
- "word-boundary" : true
- },
- {
- "line-break" : true,
- "mandatory-break" : true,
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "word-end" : true,
- "sentence-boundary" : true,
- "sentence-end" : true,
- "word-boundary" : true
- }
- ],
"lines" : [
{
- "start-index" : 0,
- "length" : 10,
- "paragraph-start" : true,
- "direction" : "ltr",
- "runs" : [
- {
- "offset" : 0,
- "length" : 1,
- "text" : "a",
- "bidi-level" : 0,
- "gravity" : "south",
- "language" : "en-us",
- "script" : "Latn",
- "font" : {
- "description" : "Cantarell 11",
- "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
- "variations" : {
- "wght" : 0
+ "position" : [
+ 0,
+ 15360
+ ],
+ "line" : {
+ "start-index" : 0,
+ "length" : 10,
+ "start-offset" : 0,
+ "n-chars" : 8,
+ "wrapped" : true,
+ "ellipsized" : false,
+ "hyphenated" : false,
+ "justified" : false,
+ "paragraph-start" : true,
+ "paragraph-end" : false,
+ "direction" : "ltr",
+ "runs" : [
+ {
+ "offset" : 0,
+ "length" : 1,
+ "text" : "a",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "Latn",
+ "font" : {
+ "description" : "Cantarell 11",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ }
},
- "matrix" : [
- 1,
- -0,
- -0,
- 1,
- 0,
- 0
+ "flags" : 0,
+ "y-offset" : 0,
+ "start-x-offset" : 0,
+ "end-x-offset" : 0,
+ "glyphs" : [
+ {
+ "glyph" : 244,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 0
+ }
]
},
- "flags" : 0,
- "y-offset" : 0,
- "start-x-offset" : 0,
- "end-x-offset" : 0,
- "glyphs" : [
- {
- "glyph" : 244,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 0
- }
- ]
- },
- {
- "offset" : 1,
- "length" : 1,
- "text" : "\t",
- "bidi-level" : 0,
- "gravity" : "south",
- "language" : "en-us",
- "script" : "Latn",
- "font" : {
- "description" : "Cantarell 11",
- "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
- "variations" : {
- "wght" : 0
+ {
+ "offset" : 1,
+ "length" : 1,
+ "text" : "\t",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "Latn",
+ "font" : {
+ "description" : "Cantarell 11",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ }
},
- "matrix" : [
- 1,
- -0,
- -0,
- 1,
- 0,
- 0
+ "flags" : 0,
+ "y-offset" : 0,
+ "start-x-offset" : 0,
+ "end-x-offset" : 0,
+ "glyphs" : [
+ {
+ "glyph" : 268435455,
+ "width" : 43008,
+ "is-cluster-start" : true,
+ "log-cluster" : 0
+ }
]
},
- "flags" : 0,
- "y-offset" : 0,
- "start-x-offset" : 0,
- "end-x-offset" : 0,
- "glyphs" : [
- {
- "glyph" : 268435455,
- "width" : 43008,
- "is-cluster-start" : true,
- "log-cluster" : 0
- }
- ]
- },
- {
- "offset" : 2,
- "length" : 1,
- "text" : "b",
- "bidi-level" : 0,
- "gravity" : "south",
- "language" : "en-us",
- "script" : "Latn",
- "font" : {
- "description" : "Cantarell 11",
- "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
- "variations" : {
- "wght" : 0
+ {
+ "offset" : 2,
+ "length" : 1,
+ "text" : "b",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "Latn",
+ "font" : {
+ "description" : "Cantarell 11",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ }
},
- "matrix" : [
- 1,
- -0,
- -0,
- 1,
- 0,
- 0
+ "flags" : 0,
+ "y-offset" : 0,
+ "start-x-offset" : 0,
+ "end-x-offset" : 0,
+ "glyphs" : [
+ {
+ "glyph" : 272,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 0
+ }
]
},
- "flags" : 0,
- "y-offset" : 0,
- "start-x-offset" : 0,
- "end-x-offset" : 0,
- "glyphs" : [
- {
- "glyph" : 272,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 0
- }
- ]
- },
- {
- "offset" : 3,
- "length" : 1,
- "text" : "\t",
- "bidi-level" : 0,
- "gravity" : "south",
- "language" : "en-us",
- "script" : "Latn",
- "font" : {
- "description" : "Cantarell 11",
- "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
- "variations" : {
- "wght" : 0
+ {
+ "offset" : 3,
+ "length" : 1,
+ "text" : "\t",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "Latn",
+ "font" : {
+ "description" : "Cantarell 11",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ }
},
- "matrix" : [
- 1,
- -0,
- -0,
- 1,
- 0,
- 0
+ "flags" : 0,
+ "y-offset" : 0,
+ "start-x-offset" : 0,
+ "end-x-offset" : 0,
+ "glyphs" : [
+ {
+ "glyph" : 268435455,
+ "width" : 43008,
+ "is-cluster-start" : true,
+ "log-cluster" : 0
+ }
]
},
- "flags" : 0,
- "y-offset" : 0,
- "start-x-offset" : 0,
- "end-x-offset" : 0,
- "glyphs" : [
- {
- "glyph" : 268435455,
- "width" : 43008,
- "is-cluster-start" : true,
- "log-cluster" : 0
- }
- ]
- },
- {
- "offset" : 4,
- "length" : 1,
- "text" : "c",
- "bidi-level" : 0,
- "gravity" : "south",
- "language" : "en-us",
- "script" : "Latn",
- "font" : {
- "description" : "Cantarell 11",
- "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
- "variations" : {
- "wght" : 0
+ {
+ "offset" : 4,
+ "length" : 1,
+ "text" : "c",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "Latn",
+ "font" : {
+ "description" : "Cantarell 11",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ }
},
- "matrix" : [
- 1,
- -0,
- -0,
- 1,
- 0,
- 0
+ "flags" : 0,
+ "y-offset" : 0,
+ "start-x-offset" : 0,
+ "end-x-offset" : 0,
+ "glyphs" : [
+ {
+ "glyph" : 273,
+ "width" : 7168,
+ "is-cluster-start" : true,
+ "log-cluster" : 0
+ }
]
},
- "flags" : 0,
- "y-offset" : 0,
- "start-x-offset" : 0,
- "end-x-offset" : 0,
- "glyphs" : [
- {
- "glyph" : 273,
- "width" : 7168,
- "is-cluster-start" : true,
- "log-cluster" : 0
- }
- ]
- },
- {
- "offset" : 5,
- "length" : 1,
- "text" : "\t",
- "bidi-level" : 0,
- "gravity" : "south",
- "language" : "en-us",
- "script" : "Latn",
- "font" : {
- "description" : "Cantarell 11",
- "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
- "variations" : {
- "wght" : 0
+ {
+ "offset" : 5,
+ "length" : 1,
+ "text" : "\t",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "Latn",
+ "font" : {
+ "description" : "Cantarell 11",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ }
},
- "matrix" : [
- 1,
- -0,
- -0,
- 1,
- 0,
- 0
+ "flags" : 0,
+ "y-offset" : 0,
+ "start-x-offset" : 0,
+ "end-x-offset" : 0,
+ "glyphs" : [
+ {
+ "glyph" : 268435455,
+ "width" : 44032,
+ "is-cluster-start" : true,
+ "log-cluster" : 0
+ }
]
},
- "flags" : 0,
- "y-offset" : 0,
- "start-x-offset" : 0,
- "end-x-offset" : 0,
- "glyphs" : [
- {
- "glyph" : 268435455,
- "width" : 44032,
- "is-cluster-start" : true,
- "log-cluster" : 0
- }
- ]
- },
- {
- "offset" : 6,
- "length" : 1,
- "text" : "d",
- "bidi-level" : 0,
- "gravity" : "south",
- "language" : "en-us",
- "script" : "Latn",
- "font" : {
- "description" : "Cantarell 11",
- "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
- "variations" : {
- "wght" : 0
+ {
+ "offset" : 6,
+ "length" : 1,
+ "text" : "d",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "Latn",
+ "font" : {
+ "description" : "Cantarell 11",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ }
},
- "matrix" : [
- 1,
- -0,
- -0,
- 1,
- 0,
- 0
+ "flags" : 0,
+ "y-offset" : 0,
+ "start-x-offset" : 0,
+ "end-x-offset" : 0,
+ "glyphs" : [
+ {
+ "glyph" : 280,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 0
+ }
]
},
- "flags" : 0,
- "y-offset" : 0,
- "start-x-offset" : 0,
- "end-x-offset" : 0,
- "glyphs" : [
- {
- "glyph" : 280,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 0
- }
- ]
- },
- {
- "offset" : 7,
- "length" : 3,
- "text" : "
",
- "bidi-level" : 0,
- "gravity" : "south",
- "language" : "en-us",
- "script" : "Latn",
- "font" : {
- "description" : "Cantarell 11",
- "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
- "variations" : {
- "wght" : 0
+ {
+ "offset" : 7,
+ "length" : 3,
+ "text" : "
",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "Latn",
+ "font" : {
+ "description" : "Cantarell 11",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ }
},
- "matrix" : [
- 1,
- -0,
- -0,
- 1,
- 0,
- 0
+ "flags" : 0,
+ "y-offset" : 0,
+ "start-x-offset" : 0,
+ "end-x-offset" : 0,
+ "glyphs" : [
+ {
+ "glyph" : 268443688,
+ "width" : 17408,
+ "is-cluster-start" : true,
+ "log-cluster" : 0
+ }
]
- },
- "flags" : 0,
- "y-offset" : 0,
- "start-x-offset" : 0,
- "end-x-offset" : 0,
- "glyphs" : [
- {
- "glyph" : 268443688,
- "width" : 17408,
- "is-cluster-start" : true,
- "log-cluster" : 0
- }
- ]
- }
- ]
+ }
+ ]
+ }
},
{
- "start-index" : 10,
- "length" : 7,
- "paragraph-start" : false,
- "direction" : "ltr",
- "runs" : [
- {
- "offset" : 10,
- "length" : 1,
- "text" : "e",
- "bidi-level" : 0,
- "gravity" : "south",
- "language" : "en-us",
- "script" : "Latn",
- "font" : {
- "description" : "Cantarell 11",
- "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
- "variations" : {
- "wght" : 0
+ "position" : [
+ 0,
+ 34816
+ ],
+ "line" : {
+ "start-index" : 10,
+ "length" : 7,
+ "start-offset" : 8,
+ "n-chars" : 7,
+ "wrapped" : false,
+ "ellipsized" : false,
+ "hyphenated" : false,
+ "justified" : false,
+ "paragraph-start" : false,
+ "paragraph-end" : true,
+ "direction" : "ltr",
+ "runs" : [
+ {
+ "offset" : 10,
+ "length" : 1,
+ "text" : "e",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "Latn",
+ "font" : {
+ "description" : "Cantarell 11",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ }
},
- "matrix" : [
- 1,
- -0,
- -0,
- 1,
- 0,
- 0
+ "flags" : 0,
+ "y-offset" : 0,
+ "start-x-offset" : 0,
+ "end-x-offset" : 0,
+ "glyphs" : [
+ {
+ "glyph" : 287,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 0
+ }
]
},
- "flags" : 0,
- "y-offset" : 0,
- "start-x-offset" : 0,
- "end-x-offset" : 0,
- "glyphs" : [
- {
- "glyph" : 287,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 0
- }
- ]
- },
- {
- "offset" : 11,
- "length" : 1,
- "text" : "\t",
- "bidi-level" : 0,
- "gravity" : "south",
- "language" : "en-us",
- "script" : "Latn",
- "font" : {
- "description" : "Cantarell 11",
- "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
- "variations" : {
- "wght" : 0
+ {
+ "offset" : 11,
+ "length" : 1,
+ "text" : "\t",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "Latn",
+ "font" : {
+ "description" : "Cantarell 11",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ }
},
- "matrix" : [
- 1,
- -0,
- -0,
- 1,
- 0,
- 0
+ "flags" : 0,
+ "y-offset" : 0,
+ "start-x-offset" : 0,
+ "end-x-offset" : 0,
+ "glyphs" : [
+ {
+ "glyph" : 268435455,
+ "width" : 43008,
+ "is-cluster-start" : true,
+ "log-cluster" : 0
+ }
]
},
- "flags" : 0,
- "y-offset" : 0,
- "start-x-offset" : 0,
- "end-x-offset" : 0,
- "glyphs" : [
- {
- "glyph" : 268435455,
- "width" : 43008,
- "is-cluster-start" : true,
- "log-cluster" : 0
- }
- ]
- },
- {
- "offset" : 12,
- "length" : 1,
- "text" : "f",
- "bidi-level" : 0,
- "gravity" : "south",
- "language" : "en-us",
- "script" : "Latn",
- "font" : {
- "description" : "Cantarell 11",
- "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
- "variations" : {
- "wght" : 0
+ {
+ "offset" : 12,
+ "length" : 1,
+ "text" : "f",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "Latn",
+ "font" : {
+ "description" : "Cantarell 11",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ }
},
- "matrix" : [
- 1,
- -0,
- -0,
- 1,
- 0,
- 0
+ "flags" : 0,
+ "y-offset" : 0,
+ "start-x-offset" : 0,
+ "end-x-offset" : 0,
+ "glyphs" : [
+ {
+ "glyph" : 311,
+ "width" : 5120,
+ "is-cluster-start" : true,
+ "log-cluster" : 0
+ }
]
},
- "flags" : 0,
- "y-offset" : 0,
- "start-x-offset" : 0,
- "end-x-offset" : 0,
- "glyphs" : [
- {
- "glyph" : 311,
- "width" : 5120,
- "is-cluster-start" : true,
- "log-cluster" : 0
- }
- ]
- },
- {
- "offset" : 13,
- "length" : 1,
- "text" : "\t",
- "bidi-level" : 0,
- "gravity" : "south",
- "language" : "en-us",
- "script" : "Latn",
- "font" : {
- "description" : "Cantarell 11",
- "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
- "variations" : {
- "wght" : 0
+ {
+ "offset" : 13,
+ "length" : 1,
+ "text" : "\t",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "Latn",
+ "font" : {
+ "description" : "Cantarell 11",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ }
},
- "matrix" : [
- 1,
- -0,
- -0,
- 1,
- 0,
- 0
+ "flags" : 0,
+ "y-offset" : 0,
+ "start-x-offset" : 0,
+ "end-x-offset" : 0,
+ "glyphs" : [
+ {
+ "glyph" : 268435455,
+ "width" : 46080,
+ "is-cluster-start" : true,
+ "log-cluster" : 0
+ }
]
},
- "flags" : 0,
- "y-offset" : 0,
- "start-x-offset" : 0,
- "end-x-offset" : 0,
- "glyphs" : [
- {
- "glyph" : 268435455,
- "width" : 46080,
- "is-cluster-start" : true,
- "log-cluster" : 0
- }
- ]
- },
- {
- "offset" : 14,
- "length" : 1,
- "text" : "g",
- "bidi-level" : 0,
- "gravity" : "south",
- "language" : "en-us",
- "script" : "Latn",
- "font" : {
- "description" : "Cantarell 11",
- "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
- "variations" : {
- "wght" : 0
+ {
+ "offset" : 14,
+ "length" : 1,
+ "text" : "g",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "Latn",
+ "font" : {
+ "description" : "Cantarell 11",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ }
},
- "matrix" : [
- 1,
- -0,
- -0,
- 1,
- 0,
- 0
+ "flags" : 0,
+ "y-offset" : 0,
+ "start-x-offset" : 0,
+ "end-x-offset" : 0,
+ "glyphs" : [
+ {
+ "glyph" : 312,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 0
+ }
]
},
- "flags" : 0,
- "y-offset" : 0,
- "start-x-offset" : 0,
- "end-x-offset" : 0,
- "glyphs" : [
- {
- "glyph" : 312,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 0
- }
- ]
- },
- {
- "offset" : 15,
- "length" : 1,
- "text" : "\t",
- "bidi-level" : 0,
- "gravity" : "south",
- "language" : "en-us",
- "script" : "Latn",
- "font" : {
- "description" : "Cantarell 11",
- "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
- "variations" : {
- "wght" : 0
+ {
+ "offset" : 15,
+ "length" : 1,
+ "text" : "\t",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "Latn",
+ "font" : {
+ "description" : "Cantarell 11",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ }
},
- "matrix" : [
- 1,
- -0,
- -0,
- 1,
- 0,
- 0
+ "flags" : 0,
+ "y-offset" : 0,
+ "start-x-offset" : 0,
+ "end-x-offset" : 0,
+ "glyphs" : [
+ {
+ "glyph" : 268435455,
+ "width" : 43008,
+ "is-cluster-start" : true,
+ "log-cluster" : 0
+ }
]
},
- "flags" : 0,
- "y-offset" : 0,
- "start-x-offset" : 0,
- "end-x-offset" : 0,
- "glyphs" : [
- {
- "glyph" : 268435455,
- "width" : 43008,
- "is-cluster-start" : true,
- "log-cluster" : 0
- }
- ]
- },
- {
- "offset" : 16,
- "length" : 1,
- "text" : "h",
- "bidi-level" : 0,
- "gravity" : "south",
- "language" : "en-us",
- "script" : "Latn",
- "font" : {
- "description" : "Cantarell 11",
- "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
- "variations" : {
- "wght" : 0
+ {
+ "offset" : 16,
+ "length" : 1,
+ "text" : "h",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "Latn",
+ "font" : {
+ "description" : "Cantarell 11",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ }
},
- "matrix" : [
- 1,
- -0,
- -0,
- 1,
- 0,
- 0
+ "flags" : 0,
+ "y-offset" : 0,
+ "start-x-offset" : 0,
+ "end-x-offset" : 0,
+ "glyphs" : [
+ {
+ "glyph" : 319,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 0
+ }
]
- },
- "flags" : 0,
- "y-offset" : 0,
- "start-x-offset" : 0,
- "end-x-offset" : 0,
- "glyphs" : [
- {
- "glyph" : 319,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 0
- }
- ]
- }
- ]
+ }
+ ]
+ }
}
]
}
diff --git a/tests/layouts/valid-13.layout b/tests/layouts/valid-13.layout
index ba1855aa..60ff3cff 100644
--- a/tests/layouts/valid-13.layout
+++ b/tests/layouts/valid-13.layout
@@ -48,782 +48,606 @@
}
]
},
- "single-paragraph" : true,
+ "log-attrs" : [
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-start" : true,
+ "sentence-boundary" : true,
+ "sentence-start" : true,
+ "backspace-deletes-character" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "word-end" : true,
+ "word-boundary" : true
+ },
+ {
+ "line-break" : true,
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-start" : true,
+ "backspace-deletes-character" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "word-end" : true,
+ "word-boundary" : true
+ },
+ {
+ "line-break" : true,
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-start" : true,
+ "backspace-deletes-character" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "word-end" : true,
+ "word-boundary" : true
+ },
+ {
+ "line-break" : true,
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-start" : true,
+ "backspace-deletes-character" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "word-end" : true,
+ "sentence-end" : true,
+ "word-boundary" : true
+ },
+ {
+ "line-break" : true,
+ "mandatory-break" : true,
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-start" : true,
+ "sentence-boundary" : true,
+ "sentence-start" : true,
+ "backspace-deletes-character" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "word-end" : true,
+ "word-boundary" : true
+ },
+ {
+ "line-break" : true,
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-start" : true,
+ "backspace-deletes-character" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "word-end" : true,
+ "word-boundary" : true
+ },
+ {
+ "line-break" : true,
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-start" : true,
+ "backspace-deletes-character" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "word-end" : true,
+ "word-boundary" : true
+ },
+ {
+ "line-break" : true,
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-start" : true,
+ "backspace-deletes-character" : true,
+ "word-boundary" : true
+ },
+ {
+ "line-break" : true,
+ "mandatory-break" : true,
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "word-end" : true,
+ "sentence-boundary" : true,
+ "sentence-end" : true,
+ "word-boundary" : true
+ }
+ ],
"output" : {
- "is-wrapped" : false,
- "is-ellipsized" : false,
+ "wrapped" : true,
+ "ellipsized" : false,
+ "hypenated" : false,
"unknown-glyphs" : 1,
- "width" : 315392,
- "height" : 19456,
- "log-attrs" : [
- {
- "char-break" : true,
- "cursor-position" : true,
- "word-start" : true,
- "sentence-boundary" : true,
- "sentence-start" : true,
- "backspace-deletes-character" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "word-end" : true,
- "word-boundary" : true
- },
- {
- "line-break" : true,
- "char-break" : true,
- "cursor-position" : true,
- "word-start" : true,
- "backspace-deletes-character" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "word-end" : true,
- "word-boundary" : true
- },
- {
- "line-break" : true,
- "char-break" : true,
- "cursor-position" : true,
- "word-start" : true,
- "backspace-deletes-character" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "word-end" : true,
- "word-boundary" : true
- },
- {
- "line-break" : true,
- "char-break" : true,
- "cursor-position" : true,
- "word-start" : true,
- "backspace-deletes-character" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "word-end" : true,
- "sentence-end" : true,
- "word-boundary" : true
- },
- {
- "line-break" : true,
- "mandatory-break" : true,
- "char-break" : true,
- "cursor-position" : true,
- "word-start" : true,
- "sentence-boundary" : true,
- "sentence-start" : true,
- "backspace-deletes-character" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "word-end" : true,
- "word-boundary" : true
- },
- {
- "line-break" : true,
- "char-break" : true,
- "cursor-position" : true,
- "word-start" : true,
- "backspace-deletes-character" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "word-end" : true,
- "word-boundary" : true
- },
- {
- "line-break" : true,
- "char-break" : true,
- "cursor-position" : true,
- "word-start" : true,
- "backspace-deletes-character" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "word-end" : true,
- "word-boundary" : true
- },
- {
- "line-break" : true,
- "char-break" : true,
- "cursor-position" : true,
- "word-start" : true,
- "backspace-deletes-character" : true,
- "word-boundary" : true
- },
- {
- "line-break" : true,
- "mandatory-break" : true,
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "word-end" : true,
- "sentence-boundary" : true,
- "sentence-end" : true,
- "word-boundary" : true
- }
- ],
+ "width" : 179200,
+ "height" : 38912,
"lines" : [
{
- "start-index" : 0,
- "length" : 17,
- "paragraph-start" : true,
- "direction" : "ltr",
- "runs" : [
- {
- "offset" : 0,
- "length" : 1,
- "text" : "a",
- "bidi-level" : 0,
- "gravity" : "south",
- "language" : "en-us",
- "script" : "Latn",
- "font" : {
- "description" : "Cantarell 11",
- "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
- "variations" : {
- "wght" : 0
+ "position" : [
+ 0,
+ 15360
+ ],
+ "line" : {
+ "start-index" : 0,
+ "length" : 10,
+ "start-offset" : 0,
+ "n-chars" : 8,
+ "wrapped" : true,
+ "ellipsized" : false,
+ "hyphenated" : false,
+ "justified" : false,
+ "paragraph-start" : true,
+ "paragraph-end" : false,
+ "direction" : "ltr",
+ "runs" : [
+ {
+ "offset" : 0,
+ "length" : 1,
+ "text" : "a",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "Latn",
+ "font" : {
+ "description" : "Cantarell 11",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ }
},
- "matrix" : [
- 1,
- -0,
- -0,
- 1,
- 0,
- 0
+ "flags" : 0,
+ "y-offset" : 0,
+ "start-x-offset" : 0,
+ "end-x-offset" : 0,
+ "glyphs" : [
+ {
+ "glyph" : 244,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 0
+ }
]
},
- "flags" : 0,
- "extra-attributes" : [
- {
- "type" : "show",
- "value" : 2
- }
- ],
- "y-offset" : 0,
- "start-x-offset" : 0,
- "end-x-offset" : 0,
- "glyphs" : [
- {
- "glyph" : 244,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 0
- }
- ]
- },
- {
- "offset" : 1,
- "length" : 1,
- "text" : "\t",
- "bidi-level" : 0,
- "gravity" : "south",
- "language" : "en-us",
- "script" : "Latn",
- "font" : {
- "description" : "Cantarell 11",
- "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
- "variations" : {
- "wght" : 0
+ {
+ "offset" : 1,
+ "length" : 1,
+ "text" : "\t",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "Latn",
+ "font" : {
+ "description" : "Cantarell 11",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ }
},
- "matrix" : [
- 1,
- -0,
- -0,
- 1,
- 0,
- 0
+ "flags" : 0,
+ "y-offset" : 0,
+ "start-x-offset" : 0,
+ "end-x-offset" : 0,
+ "glyphs" : [
+ {
+ "glyph" : 268435455,
+ "width" : 43008,
+ "is-cluster-start" : true,
+ "log-cluster" : 0
+ }
]
},
- "flags" : 0,
- "extra-attributes" : [
- {
- "type" : "show",
- "value" : 2
- }
- ],
- "y-offset" : 0,
- "start-x-offset" : 0,
- "end-x-offset" : 0,
- "glyphs" : [
- {
- "glyph" : 268435455,
- "width" : 43008,
- "is-cluster-start" : true,
- "log-cluster" : 0
- }
- ]
- },
- {
- "offset" : 2,
- "length" : 1,
- "text" : "b",
- "bidi-level" : 0,
- "gravity" : "south",
- "language" : "en-us",
- "script" : "Latn",
- "font" : {
- "description" : "Cantarell 11",
- "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
- "variations" : {
- "wght" : 0
+ {
+ "offset" : 2,
+ "length" : 1,
+ "text" : "b",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "Latn",
+ "font" : {
+ "description" : "Cantarell 11",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ }
},
- "matrix" : [
- 1,
- -0,
- -0,
- 1,
- 0,
- 0
+ "flags" : 0,
+ "y-offset" : 0,
+ "start-x-offset" : 0,
+ "end-x-offset" : 0,
+ "glyphs" : [
+ {
+ "glyph" : 272,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 0
+ }
]
},
- "flags" : 0,
- "extra-attributes" : [
- {
- "type" : "show",
- "value" : 2
- }
- ],
- "y-offset" : 0,
- "start-x-offset" : 0,
- "end-x-offset" : 0,
- "glyphs" : [
- {
- "glyph" : 272,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 0
- }
- ]
- },
- {
- "offset" : 3,
- "length" : 1,
- "text" : "\t",
- "bidi-level" : 0,
- "gravity" : "south",
- "language" : "en-us",
- "script" : "Latn",
- "font" : {
- "description" : "Cantarell 11",
- "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
- "variations" : {
- "wght" : 0
+ {
+ "offset" : 3,
+ "length" : 1,
+ "text" : "\t",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "Latn",
+ "font" : {
+ "description" : "Cantarell 11",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ }
},
- "matrix" : [
- 1,
- -0,
- -0,
- 1,
- 0,
- 0
+ "flags" : 0,
+ "y-offset" : 0,
+ "start-x-offset" : 0,
+ "end-x-offset" : 0,
+ "glyphs" : [
+ {
+ "glyph" : 268435455,
+ "width" : 43008,
+ "is-cluster-start" : true,
+ "log-cluster" : 0
+ }
]
},
- "flags" : 0,
- "extra-attributes" : [
- {
- "type" : "show",
- "value" : 2
- }
- ],
- "y-offset" : 0,
- "start-x-offset" : 0,
- "end-x-offset" : 0,
- "glyphs" : [
- {
- "glyph" : 268435455,
- "width" : 43008,
- "is-cluster-start" : true,
- "log-cluster" : 0
- }
- ]
- },
- {
- "offset" : 4,
- "length" : 1,
- "text" : "c",
- "bidi-level" : 0,
- "gravity" : "south",
- "language" : "en-us",
- "script" : "Latn",
- "font" : {
- "description" : "Cantarell 11",
- "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
- "variations" : {
- "wght" : 0
+ {
+ "offset" : 4,
+ "length" : 1,
+ "text" : "c",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "Latn",
+ "font" : {
+ "description" : "Cantarell 11",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ }
},
- "matrix" : [
- 1,
- -0,
- -0,
- 1,
- 0,
- 0
+ "flags" : 0,
+ "y-offset" : 0,
+ "start-x-offset" : 0,
+ "end-x-offset" : 0,
+ "glyphs" : [
+ {
+ "glyph" : 273,
+ "width" : 7168,
+ "is-cluster-start" : true,
+ "log-cluster" : 0
+ }
]
},
- "flags" : 0,
- "extra-attributes" : [
- {
- "type" : "show",
- "value" : 2
- }
- ],
- "y-offset" : 0,
- "start-x-offset" : 0,
- "end-x-offset" : 0,
- "glyphs" : [
- {
- "glyph" : 273,
- "width" : 7168,
- "is-cluster-start" : true,
- "log-cluster" : 0
- }
- ]
- },
- {
- "offset" : 5,
- "length" : 1,
- "text" : "\t",
- "bidi-level" : 0,
- "gravity" : "south",
- "language" : "en-us",
- "script" : "Latn",
- "font" : {
- "description" : "Cantarell 11",
- "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
- "variations" : {
- "wght" : 0
+ {
+ "offset" : 5,
+ "length" : 1,
+ "text" : "\t",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "Latn",
+ "font" : {
+ "description" : "Cantarell 11",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ }
},
- "matrix" : [
- 1,
- -0,
- -0,
- 1,
- 0,
- 0
+ "flags" : 0,
+ "y-offset" : 0,
+ "start-x-offset" : 0,
+ "end-x-offset" : 0,
+ "glyphs" : [
+ {
+ "glyph" : 268435455,
+ "width" : 44032,
+ "is-cluster-start" : true,
+ "log-cluster" : 0
+ }
]
},
- "flags" : 0,
- "extra-attributes" : [
- {
- "type" : "show",
- "value" : 2
- }
- ],
- "y-offset" : 0,
- "start-x-offset" : 0,
- "end-x-offset" : 0,
- "glyphs" : [
- {
- "glyph" : 268435455,
- "width" : 44032,
- "is-cluster-start" : true,
- "log-cluster" : 0
- }
- ]
- },
- {
- "offset" : 6,
- "length" : 1,
- "text" : "d",
- "bidi-level" : 0,
- "gravity" : "south",
- "language" : "en-us",
- "script" : "Latn",
- "font" : {
- "description" : "Cantarell 11",
- "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
- "variations" : {
- "wght" : 0
+ {
+ "offset" : 6,
+ "length" : 1,
+ "text" : "d",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "Latn",
+ "font" : {
+ "description" : "Cantarell 11",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ }
},
- "matrix" : [
- 1,
- -0,
- -0,
- 1,
- 0,
- 0
+ "flags" : 0,
+ "y-offset" : 0,
+ "start-x-offset" : 0,
+ "end-x-offset" : 0,
+ "glyphs" : [
+ {
+ "glyph" : 280,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 0
+ }
]
},
- "flags" : 0,
- "extra-attributes" : [
- {
- "type" : "show",
- "value" : 2
- }
- ],
- "y-offset" : 0,
- "start-x-offset" : 0,
- "end-x-offset" : 0,
- "glyphs" : [
- {
- "glyph" : 280,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 0
- }
- ]
- },
- {
- "offset" : 7,
- "length" : 3,
- "text" : "
",
- "bidi-level" : 0,
- "gravity" : "south",
- "language" : "en-us",
- "script" : "Latn",
- "font" : {
- "description" : "Cantarell 11",
- "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
- "variations" : {
- "wght" : 0
+ {
+ "offset" : 7,
+ "length" : 3,
+ "text" : "
",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "Latn",
+ "font" : {
+ "description" : "Cantarell 11",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ }
},
- "matrix" : [
- 1,
- -0,
- -0,
- 1,
- 0,
- 0
+ "flags" : 0,
+ "y-offset" : 0,
+ "start-x-offset" : 0,
+ "end-x-offset" : 0,
+ "glyphs" : [
+ {
+ "glyph" : 268443688,
+ "width" : 17408,
+ "is-cluster-start" : true,
+ "log-cluster" : 0
+ }
]
- },
- "flags" : 0,
- "extra-attributes" : [
- {
- "type" : "show",
- "value" : 2
- }
- ],
- "y-offset" : 0,
- "start-x-offset" : 0,
- "end-x-offset" : 0,
- "glyphs" : [
- {
- "glyph" : 268443688,
- "width" : 17408,
- "is-cluster-start" : true,
- "log-cluster" : 0
- }
- ]
- },
- {
- "offset" : 10,
- "length" : 1,
- "text" : "e",
- "bidi-level" : 0,
- "gravity" : "south",
- "language" : "en-us",
- "script" : "Latn",
- "font" : {
- "description" : "Cantarell 11",
- "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
- "variations" : {
- "wght" : 0
+ }
+ ]
+ }
+ },
+ {
+ "position" : [
+ 0,
+ 34816
+ ],
+ "line" : {
+ "start-index" : 10,
+ "length" : 7,
+ "start-offset" : 8,
+ "n-chars" : 7,
+ "wrapped" : false,
+ "ellipsized" : false,
+ "hyphenated" : false,
+ "justified" : false,
+ "paragraph-start" : false,
+ "paragraph-end" : true,
+ "direction" : "ltr",
+ "runs" : [
+ {
+ "offset" : 10,
+ "length" : 1,
+ "text" : "e",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "Latn",
+ "font" : {
+ "description" : "Cantarell 11",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ }
},
- "matrix" : [
- 1,
- -0,
- -0,
- 1,
- 0,
- 0
+ "flags" : 0,
+ "y-offset" : 0,
+ "start-x-offset" : 0,
+ "end-x-offset" : 0,
+ "glyphs" : [
+ {
+ "glyph" : 287,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 0
+ }
]
},
- "flags" : 0,
- "extra-attributes" : [
- {
- "type" : "show",
- "value" : 2
- }
- ],
- "y-offset" : 0,
- "start-x-offset" : 0,
- "end-x-offset" : 0,
- "glyphs" : [
- {
- "glyph" : 287,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 0
- }
- ]
- },
- {
- "offset" : 11,
- "length" : 1,
- "text" : "\t",
- "bidi-level" : 0,
- "gravity" : "south",
- "language" : "en-us",
- "script" : "Latn",
- "font" : {
- "description" : "Cantarell 11",
- "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
- "variations" : {
- "wght" : 0
+ {
+ "offset" : 11,
+ "length" : 1,
+ "text" : "\t",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "Latn",
+ "font" : {
+ "description" : "Cantarell 11",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ }
},
- "matrix" : [
- 1,
- -0,
- -0,
- 1,
- 0,
- 0
+ "flags" : 0,
+ "y-offset" : 0,
+ "start-x-offset" : 0,
+ "end-x-offset" : 0,
+ "glyphs" : [
+ {
+ "glyph" : 268435455,
+ "width" : 43008,
+ "is-cluster-start" : true,
+ "log-cluster" : 0
+ }
]
},
- "flags" : 0,
- "extra-attributes" : [
- {
- "type" : "show",
- "value" : 2
- }
- ],
- "y-offset" : 0,
- "start-x-offset" : 0,
- "end-x-offset" : 0,
- "glyphs" : [
- {
- "glyph" : 268435455,
- "width" : 17408,
- "is-cluster-start" : true,
- "log-cluster" : 0
- }
- ]
- },
- {
- "offset" : 12,
- "length" : 1,
- "text" : "f",
- "bidi-level" : 0,
- "gravity" : "south",
- "language" : "en-us",
- "script" : "Latn",
- "font" : {
- "description" : "Cantarell 11",
- "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
- "variations" : {
- "wght" : 0
+ {
+ "offset" : 12,
+ "length" : 1,
+ "text" : "f",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "Latn",
+ "font" : {
+ "description" : "Cantarell 11",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ }
},
- "matrix" : [
- 1,
- -0,
- -0,
- 1,
- 0,
- 0
+ "flags" : 0,
+ "y-offset" : 0,
+ "start-x-offset" : 0,
+ "end-x-offset" : 0,
+ "glyphs" : [
+ {
+ "glyph" : 311,
+ "width" : 5120,
+ "is-cluster-start" : true,
+ "log-cluster" : 0
+ }
]
},
- "flags" : 0,
- "extra-attributes" : [
- {
- "type" : "show",
- "value" : 2
- }
- ],
- "y-offset" : 0,
- "start-x-offset" : 0,
- "end-x-offset" : 0,
- "glyphs" : [
- {
- "glyph" : 311,
- "width" : 5120,
- "is-cluster-start" : true,
- "log-cluster" : 0
- }
- ]
- },
- {
- "offset" : 13,
- "length" : 1,
- "text" : "\t",
- "bidi-level" : 0,
- "gravity" : "south",
- "language" : "en-us",
- "script" : "Latn",
- "font" : {
- "description" : "Cantarell 11",
- "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
- "variations" : {
- "wght" : 0
+ {
+ "offset" : 13,
+ "length" : 1,
+ "text" : "\t",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "Latn",
+ "font" : {
+ "description" : "Cantarell 11",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ }
},
- "matrix" : [
- 1,
- -0,
- -0,
- 1,
- 0,
- 0
+ "flags" : 0,
+ "y-offset" : 0,
+ "start-x-offset" : 0,
+ "end-x-offset" : 0,
+ "glyphs" : [
+ {
+ "glyph" : 268435455,
+ "width" : 46080,
+ "is-cluster-start" : true,
+ "log-cluster" : 0
+ }
]
},
- "flags" : 0,
- "extra-attributes" : [
- {
- "type" : "show",
- "value" : 2
- }
- ],
- "y-offset" : 0,
- "start-x-offset" : 0,
- "end-x-offset" : 0,
- "glyphs" : [
- {
- "glyph" : 268435455,
- "width" : 46080,
- "is-cluster-start" : true,
- "log-cluster" : 0
- }
- ]
- },
- {
- "offset" : 14,
- "length" : 1,
- "text" : "g",
- "bidi-level" : 0,
- "gravity" : "south",
- "language" : "en-us",
- "script" : "Latn",
- "font" : {
- "description" : "Cantarell 11",
- "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
- "variations" : {
- "wght" : 0
+ {
+ "offset" : 14,
+ "length" : 1,
+ "text" : "g",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "Latn",
+ "font" : {
+ "description" : "Cantarell 11",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ }
},
- "matrix" : [
- 1,
- -0,
- -0,
- 1,
- 0,
- 0
+ "flags" : 0,
+ "y-offset" : 0,
+ "start-x-offset" : 0,
+ "end-x-offset" : 0,
+ "glyphs" : [
+ {
+ "glyph" : 312,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 0
+ }
]
},
- "flags" : 0,
- "extra-attributes" : [
- {
- "type" : "show",
- "value" : 2
- }
- ],
- "y-offset" : 0,
- "start-x-offset" : 0,
- "end-x-offset" : 0,
- "glyphs" : [
- {
- "glyph" : 312,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 0
- }
- ]
- },
- {
- "offset" : 15,
- "length" : 1,
- "text" : "\t",
- "bidi-level" : 0,
- "gravity" : "south",
- "language" : "en-us",
- "script" : "Latn",
- "font" : {
- "description" : "Cantarell 11",
- "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
- "variations" : {
- "wght" : 0
+ {
+ "offset" : 15,
+ "length" : 1,
+ "text" : "\t",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "Latn",
+ "font" : {
+ "description" : "Cantarell 11",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ }
},
- "matrix" : [
- 1,
- -0,
- -0,
- 1,
- 0,
- 0
+ "flags" : 0,
+ "y-offset" : 0,
+ "start-x-offset" : 0,
+ "end-x-offset" : 0,
+ "glyphs" : [
+ {
+ "glyph" : 268435455,
+ "width" : 43008,
+ "is-cluster-start" : true,
+ "log-cluster" : 0
+ }
]
},
- "flags" : 0,
- "extra-attributes" : [
- {
- "type" : "show",
- "value" : 2
- }
- ],
- "y-offset" : 0,
- "start-x-offset" : 0,
- "end-x-offset" : 0,
- "glyphs" : [
- {
- "glyph" : 268435455,
- "width" : 43008,
- "is-cluster-start" : true,
- "log-cluster" : 0
- }
- ]
- },
- {
- "offset" : 16,
- "length" : 1,
- "text" : "h",
- "bidi-level" : 0,
- "gravity" : "south",
- "language" : "en-us",
- "script" : "Latn",
- "font" : {
- "description" : "Cantarell 11",
- "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
- "variations" : {
- "wght" : 0
+ {
+ "offset" : 16,
+ "length" : 1,
+ "text" : "h",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "Latn",
+ "font" : {
+ "description" : "Cantarell 11",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ }
},
- "matrix" : [
- 1,
- -0,
- -0,
- 1,
- 0,
- 0
+ "flags" : 0,
+ "y-offset" : 0,
+ "start-x-offset" : 0,
+ "end-x-offset" : 0,
+ "glyphs" : [
+ {
+ "glyph" : 319,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 0
+ }
]
- },
- "flags" : 0,
- "extra-attributes" : [
- {
- "type" : "show",
- "value" : 2
- }
- ],
- "y-offset" : 0,
- "start-x-offset" : 0,
- "end-x-offset" : 0,
- "glyphs" : [
- {
- "glyph" : 319,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 0
- }
- ]
- }
- ]
+ }
+ ]
+ }
}
]
}
diff --git a/tests/layouts/valid-14.layout b/tests/layouts/valid-14.layout
index c5c7a487..affe7033 100644
--- a/tests/layouts/valid-14.layout
+++ b/tests/layouts/valid-14.layout
@@ -20,491 +20,492 @@
"ellipsize" : "start",
"width" : 161792,
"line-spacing" : 1.5,
+ "log-attrs" : [
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-start" : true,
+ "sentence-boundary" : true,
+ "sentence-start" : true,
+ "backspace-deletes-character" : true,
+ "word-boundary" : true
+ },
+ {
+ "line-break" : true,
+ "char-break" : true,
+ "cursor-position" : true,
+ "backspace-deletes-character" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "word-end" : true,
+ "backspace-deletes-character" : true,
+ "expandable-space" : true,
+ "word-boundary" : true
+ },
+ {
+ "line-break" : true,
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-start" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "word-end" : true,
+ "expandable-space" : true,
+ "word-boundary" : true
+ },
+ {
+ "line-break" : true,
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-start" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "backspace-deletes-character" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "backspace-deletes-character" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "backspace-deletes-character" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "word-end" : true,
+ "backspace-deletes-character" : true,
+ "expandable-space" : true,
+ "word-boundary" : true
+ },
+ {
+ "line-break" : true,
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-start" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "word-end" : true,
+ "expandable-space" : true,
+ "word-boundary" : true
+ },
+ {
+ "line-break" : true,
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-start" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "line-break" : true,
+ "mandatory-break" : true,
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "word-end" : true,
+ "sentence-boundary" : true,
+ "sentence-end" : true,
+ "word-boundary" : true
+ }
+ ],
"output" : {
- "is-wrapped" : false,
- "is-ellipsized" : true,
+ "wrapped" : false,
+ "ellipsized" : true,
+ "hypenated" : false,
"unknown-glyphs" : 1,
"width" : 161792,
"height" : 21047,
- "log-attrs" : [
- {
- "char-break" : true,
- "cursor-position" : true,
- "word-start" : true,
- "sentence-boundary" : true,
- "sentence-start" : true,
- "backspace-deletes-character" : true,
- "word-boundary" : true
- },
- {
- "line-break" : true,
- "char-break" : true,
- "cursor-position" : true,
- "backspace-deletes-character" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "word-end" : true,
- "backspace-deletes-character" : true,
- "expandable-space" : true,
- "word-boundary" : true
- },
- {
- "line-break" : true,
- "char-break" : true,
- "cursor-position" : true,
- "word-start" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "word-end" : true,
- "expandable-space" : true,
- "word-boundary" : true
- },
- {
- "line-break" : true,
- "char-break" : true,
- "cursor-position" : true,
- "word-start" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "backspace-deletes-character" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "backspace-deletes-character" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "backspace-deletes-character" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "word-end" : true,
- "backspace-deletes-character" : true,
- "expandable-space" : true,
- "word-boundary" : true
- },
- {
- "line-break" : true,
- "char-break" : true,
- "cursor-position" : true,
- "word-start" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "word-end" : true,
- "expandable-space" : true,
- "word-boundary" : true
- },
- {
- "line-break" : true,
- "char-break" : true,
- "cursor-position" : true,
- "word-start" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "line-break" : true,
- "mandatory-break" : true,
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "word-end" : true,
- "sentence-boundary" : true,
- "sentence-end" : true,
- "word-boundary" : true
- }
- ],
"lines" : [
{
- "start-index" : 0,
- "length" : 37,
- "paragraph-start" : true,
- "direction" : "ltr",
- "runs" : [
- {
- "offset" : 0,
- "length" : 6,
- "text" : "你好",
- "bidi-level" : 0,
- "gravity" : "south",
- "language" : "en-us",
- "script" : "Zyyy",
- "font" : {
- "description" : "Cantarell 11",
- "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
- "variations" : {
- "wght" : 0
+ "position" : [
+ 0,
+ 16951
+ ],
+ "line" : {
+ "start-index" : 0,
+ "length" : 37,
+ "start-offset" : 0,
+ "n-chars" : 22,
+ "wrapped" : false,
+ "ellipsized" : true,
+ "hyphenated" : false,
+ "justified" : false,
+ "paragraph-start" : true,
+ "paragraph-end" : true,
+ "direction" : "ltr",
+ "runs" : [
+ {
+ "offset" : 0,
+ "length" : 6,
+ "text" : "你好",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "Zyyy",
+ "font" : {
+ "description" : "Cantarell 11",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ }
},
- "matrix" : [
- 1,
- -0,
- -0,
- 1,
- 0,
- 0
+ "flags" : 2,
+ "extra-attributes" : [
+ {
+ "end" : 2147483647,
+ "type" : "line-height",
+ "value" : 1.5
+ },
+ {
+ "end" : 2147483647,
+ "type" : "fallback",
+ "value" : true
+ }
+ ],
+ "y-offset" : 0,
+ "start-x-offset" : 0,
+ "end-x-offset" : 0,
+ "glyphs" : [
+ {
+ "glyph" : 1058,
+ "width" : 4096,
+ "is-cluster-start" : true,
+ "log-cluster" : 0
+ },
+ {
+ "glyph" : 1058,
+ "width" : 4096,
+ "log-cluster" : 0
+ },
+ {
+ "glyph" : 1058,
+ "width" : 17408,
+ "log-cluster" : 0
+ }
]
},
- "flags" : 2,
- "extra-attributes" : [
- {
- "end" : 2147483647,
- "type" : "fallback",
- "value" : true
- }
- ],
- "y-offset" : 0,
- "start-x-offset" : 0,
- "end-x-offset" : 0,
- "glyphs" : [
- {
- "glyph" : 1058,
- "width" : 4096,
- "is-cluster-start" : true,
- "log-cluster" : 0
- },
- {
- "glyph" : 1058,
- "width" : 4096,
- "log-cluster" : 0
+ {
+ "offset" : 6,
+ "length" : 1,
+ "text" : " ",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "xx",
+ "script" : "Hani",
+ "font" : {
+ "description" : "Droid Sans Japanese 11",
+ "checksum" : "9e7449c453527829c963330ba36f4de3b20911e185a1df08a97082bb69e795d7"
},
- {
- "glyph" : 1058,
- "width" : 17408,
- "log-cluster" : 0
- }
- ]
- },
- {
- "offset" : 6,
- "length" : 1,
- "text" : " ",
- "bidi-level" : 0,
- "gravity" : "south",
- "language" : "xx",
- "script" : "Hani",
- "font" : {
- "description" : "Droid Sans Japanese 11",
- "checksum" : "9e7449c453527829c963330ba36f4de3b20911e185a1df08a97082bb69e795d7",
- "matrix" : [
- 1,
- -0,
- -0,
- 1,
- 0,
- 0
+ "flags" : 0,
+ "extra-attributes" : [
+ {
+ "type" : "line-height",
+ "value" : 1.5
+ }
+ ],
+ "y-offset" : 567,
+ "start-x-offset" : 0,
+ "end-x-offset" : 0,
+ "glyphs" : [
+ {
+ "glyph" : 268435488,
+ "width" : 4096,
+ "is-cluster-start" : true,
+ "log-cluster" : 0
+ }
]
},
- "flags" : 0,
- "y-offset" : 567,
- "start-x-offset" : 0,
- "end-x-offset" : 0,
- "glyphs" : [
- {
- "glyph" : 268435488,
- "width" : 4096,
- "is-cluster-start" : true,
- "log-cluster" : 0
- }
- ]
- },
- {
- "offset" : 7,
- "length" : 6,
- "text" : "Hello ",
- "bidi-level" : 0,
- "gravity" : "south",
- "language" : "en-us",
- "script" : "Latn",
- "font" : {
- "description" : "Cantarell 11",
- "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
- "variations" : {
- "wght" : 0
+ {
+ "offset" : 7,
+ "length" : 6,
+ "text" : "Hello ",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "Latn",
+ "font" : {
+ "description" : "Cantarell 11",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ }
},
- "matrix" : [
- 1,
- -0,
- -0,
- 1,
- 0,
- 0
+ "flags" : 0,
+ "extra-attributes" : [
+ {
+ "type" : "line-height",
+ "value" : 1.5
+ }
+ ],
+ "y-offset" : 0,
+ "start-x-offset" : 0,
+ "end-x-offset" : 0,
+ "glyphs" : [
+ {
+ "glyph" : 76,
+ "width" : 11264,
+ "is-cluster-start" : true,
+ "log-cluster" : 0
+ },
+ {
+ "glyph" : 287,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 1
+ },
+ {
+ "glyph" : 349,
+ "width" : 4096,
+ "is-cluster-start" : true,
+ "log-cluster" : 2
+ },
+ {
+ "glyph" : 349,
+ "width" : 4096,
+ "is-cluster-start" : true,
+ "log-cluster" : 3
+ },
+ {
+ "glyph" : 370,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 4
+ },
+ {
+ "glyph" : 1109,
+ "width" : 3072,
+ "is-cluster-start" : true,
+ "log-cluster" : 5
+ }
]
},
- "flags" : 0,
- "y-offset" : 0,
- "start-x-offset" : 0,
- "end-x-offset" : 0,
- "glyphs" : [
- {
- "glyph" : 76,
- "width" : 11264,
- "is-cluster-start" : true,
- "log-cluster" : 0
+ {
+ "offset" : 13,
+ "length" : 8,
+ "text" : "שלום",
+ "bidi-level" : 1,
+ "gravity" : "south",
+ "language" : "he",
+ "script" : "Hebr",
+ "font" : {
+ "description" : "DejaVu Sans 11",
+ "checksum" : "69ccd07023a72ceb27a5e5c22f728627353b60a198170f5e58dd7014221abf01"
},
- {
- "glyph" : 287,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 1
- },
- {
- "glyph" : 349,
- "width" : 4096,
- "is-cluster-start" : true,
- "log-cluster" : 2
- },
- {
- "glyph" : 349,
- "width" : 4096,
- "is-cluster-start" : true,
- "log-cluster" : 3
- },
- {
- "glyph" : 370,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 4
- },
- {
- "glyph" : 1109,
- "width" : 3072,
- "is-cluster-start" : true,
- "log-cluster" : 5
- }
- ]
- },
- {
- "offset" : 13,
- "length" : 8,
- "text" : "שלום",
- "bidi-level" : 1,
- "gravity" : "south",
- "language" : "he",
- "script" : "Hebr",
- "font" : {
- "description" : "DejaVu Sans 11",
- "checksum" : "69ccd07023a72ceb27a5e5c22f728627353b60a198170f5e58dd7014221abf01",
- "matrix" : [
- 1,
- -0,
- -0,
- 1,
- 0,
- 0
+ "flags" : 0,
+ "extra-attributes" : [
+ {
+ "type" : "line-height",
+ "value" : 1.5
+ }
+ ],
+ "y-offset" : 337,
+ "start-x-offset" : 0,
+ "end-x-offset" : 0,
+ "glyphs" : [
+ {
+ "glyph" : 1332,
+ "width" : 10240,
+ "is-cluster-start" : true,
+ "log-cluster" : 6
+ },
+ {
+ "glyph" : 1324,
+ "width" : 4096,
+ "is-cluster-start" : true,
+ "log-cluster" : 4
+ },
+ {
+ "glyph" : 1331,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 2
+ },
+ {
+ "glyph" : 1344,
+ "width" : 10240,
+ "is-cluster-start" : true,
+ "log-cluster" : 0
+ }
]
},
- "flags" : 0,
- "y-offset" : 337,
- "start-x-offset" : 0,
- "end-x-offset" : 0,
- "glyphs" : [
- {
- "glyph" : 1332,
- "width" : 10240,
- "is-cluster-start" : true,
- "log-cluster" : 6
- },
- {
- "glyph" : 1324,
- "width" : 4096,
- "is-cluster-start" : true,
- "log-cluster" : 4
+ {
+ "offset" : 21,
+ "length" : 1,
+ "text" : " ",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "he",
+ "script" : "Hebr",
+ "font" : {
+ "description" : "Cantarell 11",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ }
},
- {
- "glyph" : 1331,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 2
- },
- {
- "glyph" : 1344,
- "width" : 10240,
- "is-cluster-start" : true,
- "log-cluster" : 0
- }
- ]
- },
- {
- "offset" : 21,
- "length" : 1,
- "text" : " ",
- "bidi-level" : 0,
- "gravity" : "south",
- "language" : "he",
- "script" : "Hebr",
- "font" : {
- "description" : "Cantarell 11",
- "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
- "variations" : {
- "wght" : 0
- },
- "matrix" : [
- 1,
- -0,
- -0,
- 1,
- 0,
- 0
+ "flags" : 0,
+ "extra-attributes" : [
+ {
+ "type" : "line-height",
+ "value" : 1.5
+ }
+ ],
+ "y-offset" : 0,
+ "start-x-offset" : 0,
+ "end-x-offset" : 0,
+ "glyphs" : [
+ {
+ "glyph" : 1109,
+ "width" : 3072,
+ "is-cluster-start" : true,
+ "log-cluster" : 0
+ }
]
},
- "flags" : 0,
- "y-offset" : 0,
- "start-x-offset" : 0,
- "end-x-offset" : 0,
- "glyphs" : [
- {
- "glyph" : 1109,
- "width" : 3072,
- "is-cluster-start" : true,
- "log-cluster" : 0
- }
- ]
- },
- {
- "offset" : 22,
- "length" : 15,
- "text" : "Γειά σας",
- "bidi-level" : 0,
- "gravity" : "south",
- "language" : "el",
- "script" : "Grek",
- "font" : {
- "description" : "Cantarell 11",
- "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
- "variations" : {
- "wght" : 0
+ {
+ "offset" : 22,
+ "length" : 15,
+ "text" : "Γειά σας",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "el",
+ "script" : "Grek",
+ "font" : {
+ "description" : "Cantarell 11",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ }
},
- "matrix" : [
- 1,
- -0,
- -0,
- 1,
- 0,
- 0
+ "flags" : 0,
+ "extra-attributes" : [
+ {
+ "type" : "line-height",
+ "value" : 1.5
+ }
+ ],
+ "y-offset" : 0,
+ "start-x-offset" : 0,
+ "end-x-offset" : 0,
+ "glyphs" : [
+ {
+ "glyph" : 677,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 0
+ },
+ {
+ "glyph" : 808,
+ "width" : 7168,
+ "is-cluster-start" : true,
+ "log-cluster" : 2
+ },
+ {
+ "glyph" : 812,
+ "width" : 4096,
+ "is-cluster-start" : true,
+ "log-cluster" : 4
+ },
+ {
+ "glyph" : 837,
+ "width" : 9216,
+ "is-cluster-start" : true,
+ "log-cluster" : 6
+ },
+ {
+ "glyph" : 1109,
+ "width" : 3072,
+ "is-cluster-start" : true,
+ "log-cluster" : 8
+ },
+ {
+ "glyph" : 822,
+ "width" : 9216,
+ "is-cluster-start" : true,
+ "log-cluster" : 9
+ },
+ {
+ "glyph" : 804,
+ "width" : 9216,
+ "is-cluster-start" : true,
+ "log-cluster" : 11
+ },
+ {
+ "glyph" : 821,
+ "width" : 7168,
+ "is-cluster-start" : true,
+ "log-cluster" : 13
+ }
]
- },
- "flags" : 0,
- "y-offset" : 0,
- "start-x-offset" : 0,
- "end-x-offset" : 0,
- "glyphs" : [
- {
- "glyph" : 677,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 0
- },
- {
- "glyph" : 808,
- "width" : 7168,
- "is-cluster-start" : true,
- "log-cluster" : 2
- },
- {
- "glyph" : 812,
- "width" : 4096,
- "is-cluster-start" : true,
- "log-cluster" : 4
- },
- {
- "glyph" : 837,
- "width" : 9216,
- "is-cluster-start" : true,
- "log-cluster" : 6
- },
- {
- "glyph" : 1109,
- "width" : 3072,
- "is-cluster-start" : true,
- "log-cluster" : 8
- },
- {
- "glyph" : 822,
- "width" : 9216,
- "is-cluster-start" : true,
- "log-cluster" : 9
- },
- {
- "glyph" : 804,
- "width" : 9216,
- "is-cluster-start" : true,
- "log-cluster" : 11
- },
- {
- "glyph" : 821,
- "width" : 7168,
- "is-cluster-start" : true,
- "log-cluster" : 13
- }
- ]
- }
- ]
+ }
+ ]
+ }
}
]
}
diff --git a/tests/layouts/valid-15.layout b/tests/layouts/valid-15.layout
index 0119b3f4..1f18d9c1 100644
--- a/tests/layouts/valid-15.layout
+++ b/tests/layouts/valid-15.layout
@@ -21,1006 +21,1009 @@
"ellipsize" : "end",
"width" : 153600,
"height" : 40960,
+ "log-attrs" : [
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-start" : true,
+ "sentence-boundary" : true,
+ "sentence-start" : true,
+ "backspace-deletes-character" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "word-end" : true,
+ "expandable-space" : true,
+ "word-boundary" : true
+ },
+ {
+ "line-break" : true,
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-start" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "word-end" : true,
+ "expandable-space" : true,
+ "word-boundary" : true
+ },
+ {
+ "line-break" : true,
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-start" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "word-end" : true,
+ "expandable-space" : true,
+ "word-boundary" : true
+ },
+ {
+ "line-break" : true,
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-start" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "word-end" : true,
+ "expandable-space" : true,
+ "word-boundary" : true
+ },
+ {
+ "line-break" : true,
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-start" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "word-end" : true,
+ "expandable-space" : true,
+ "word-boundary" : true
+ },
+ {
+ "line-break" : true,
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-start" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "word-end" : true,
+ "expandable-space" : true,
+ "word-boundary" : true
+ },
+ {
+ "line-break" : true,
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-start" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "word-end" : true,
+ "expandable-space" : true,
+ "word-boundary" : true
+ },
+ {
+ "line-break" : true,
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-start" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "word-end" : true,
+ "expandable-space" : true,
+ "word-boundary" : true
+ },
+ {
+ "line-break" : true,
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-start" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "word-end" : true,
+ "expandable-space" : true,
+ "word-boundary" : true
+ },
+ {
+ "line-break" : true,
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-start" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "word-end" : true,
+ "expandable-space" : true,
+ "word-boundary" : true
+ },
+ {
+ "line-break" : true,
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-start" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "word-end" : true,
+ "expandable-space" : true,
+ "word-boundary" : true
+ },
+ {
+ "line-break" : true,
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-start" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "word-end" : true,
+ "expandable-space" : true,
+ "word-boundary" : true
+ },
+ {
+ "line-break" : true,
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-start" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "word-end" : true,
+ "expandable-space" : true,
+ "word-boundary" : true
+ },
+ {
+ "line-break" : true,
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-start" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-end" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "sentence-end" : true,
+ "expandable-space" : true,
+ "word-boundary" : true
+ },
+ {
+ "line-break" : true,
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-start" : true,
+ "sentence-boundary" : true,
+ "sentence-start" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "word-end" : true,
+ "expandable-space" : true,
+ "word-boundary" : true
+ },
+ {
+ "line-break" : true,
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-start" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-end" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "expandable-space" : true,
+ "word-boundary" : true
+ },
+ {
+ "line-break" : true,
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-start" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "word-end" : true,
+ "expandable-space" : true,
+ "word-boundary" : true
+ },
+ {
+ "line-break" : true,
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-start" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "word-end" : true,
+ "expandable-space" : true,
+ "word-boundary" : true
+ },
+ {
+ "line-break" : true,
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-start" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "word-end" : true,
+ "expandable-space" : true,
+ "word-boundary" : true
+ },
+ {
+ "line-break" : true,
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-start" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-end" : true,
+ "word-boundary" : true
+ },
+ {
+ "line-break" : true,
+ "mandatory-break" : true,
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "sentence-boundary" : true,
+ "sentence-end" : true,
+ "word-boundary" : true
+ }
+ ],
"output" : {
- "is-wrapped" : true,
- "is-ellipsized" : true,
+ "wrapped" : true,
+ "ellipsized" : true,
+ "hypenated" : false,
"unknown-glyphs" : 0,
"width" : 153600,
"height" : 38912,
- "log-attrs" : [
- {
- "char-break" : true,
- "cursor-position" : true,
- "word-start" : true,
- "sentence-boundary" : true,
- "sentence-start" : true,
- "backspace-deletes-character" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "word-end" : true,
- "expandable-space" : true,
- "word-boundary" : true
- },
- {
- "line-break" : true,
- "char-break" : true,
- "cursor-position" : true,
- "word-start" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "word-end" : true,
- "expandable-space" : true,
- "word-boundary" : true
- },
- {
- "line-break" : true,
- "char-break" : true,
- "cursor-position" : true,
- "word-start" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "word-end" : true,
- "expandable-space" : true,
- "word-boundary" : true
- },
- {
- "line-break" : true,
- "char-break" : true,
- "cursor-position" : true,
- "word-start" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "word-end" : true,
- "expandable-space" : true,
- "word-boundary" : true
- },
- {
- "line-break" : true,
- "char-break" : true,
- "cursor-position" : true,
- "word-start" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "word-end" : true,
- "expandable-space" : true,
- "word-boundary" : true
- },
- {
- "line-break" : true,
- "char-break" : true,
- "cursor-position" : true,
- "word-start" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "word-end" : true,
- "expandable-space" : true,
- "word-boundary" : true
- },
- {
- "line-break" : true,
- "char-break" : true,
- "cursor-position" : true,
- "word-start" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "word-end" : true,
- "expandable-space" : true,
- "word-boundary" : true
- },
- {
- "line-break" : true,
- "char-break" : true,
- "cursor-position" : true,
- "word-start" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "word-end" : true,
- "expandable-space" : true,
- "word-boundary" : true
- },
- {
- "line-break" : true,
- "char-break" : true,
- "cursor-position" : true,
- "word-start" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "word-end" : true,
- "expandable-space" : true,
- "word-boundary" : true
- },
- {
- "line-break" : true,
- "char-break" : true,
- "cursor-position" : true,
- "word-start" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "word-end" : true,
- "expandable-space" : true,
- "word-boundary" : true
- },
- {
- "line-break" : true,
- "char-break" : true,
- "cursor-position" : true,
- "word-start" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "word-end" : true,
- "expandable-space" : true,
- "word-boundary" : true
- },
- {
- "line-break" : true,
- "char-break" : true,
- "cursor-position" : true,
- "word-start" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "word-end" : true,
- "expandable-space" : true,
- "word-boundary" : true
- },
- {
- "line-break" : true,
- "char-break" : true,
- "cursor-position" : true,
- "word-start" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "word-end" : true,
- "expandable-space" : true,
- "word-boundary" : true
- },
- {
- "line-break" : true,
- "char-break" : true,
- "cursor-position" : true,
- "word-start" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "word-end" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "sentence-end" : true,
- "expandable-space" : true,
- "word-boundary" : true
- },
- {
- "line-break" : true,
- "char-break" : true,
- "cursor-position" : true,
- "word-start" : true,
- "sentence-boundary" : true,
- "sentence-start" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "word-end" : true,
- "expandable-space" : true,
- "word-boundary" : true
- },
- {
- "line-break" : true,
- "char-break" : true,
- "cursor-position" : true,
- "word-start" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "word-end" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "expandable-space" : true,
- "word-boundary" : true
- },
- {
- "line-break" : true,
- "char-break" : true,
- "cursor-position" : true,
- "word-start" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "word-end" : true,
- "expandable-space" : true,
- "word-boundary" : true
- },
- {
- "line-break" : true,
- "char-break" : true,
- "cursor-position" : true,
- "word-start" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "word-end" : true,
- "expandable-space" : true,
- "word-boundary" : true
- },
- {
- "line-break" : true,
- "char-break" : true,
- "cursor-position" : true,
- "word-start" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "word-end" : true,
- "expandable-space" : true,
- "word-boundary" : true
- },
- {
- "line-break" : true,
- "char-break" : true,
- "cursor-position" : true,
- "word-start" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "word-end" : true,
- "word-boundary" : true
- },
- {
- "line-break" : true,
- "mandatory-break" : true,
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "sentence-boundary" : true,
- "sentence-end" : true,
- "word-boundary" : true
- }
- ],
"lines" : [
{
- "start-index" : 0,
- "length" : 25,
- "paragraph-start" : true,
- "direction" : "ltr",
- "runs" : [
- {
- "offset" : 0,
- "length" : 25,
- "text" : "Lets see if this text is ",
- "bidi-level" : 0,
- "gravity" : "south",
- "language" : "en-us",
- "script" : "Latn",
- "font" : {
- "description" : "Cantarell 11",
- "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
- "variations" : {
- "wght" : 0
+ "position" : [
+ 0,
+ 15360
+ ],
+ "line" : {
+ "start-index" : 0,
+ "length" : 25,
+ "start-offset" : 0,
+ "n-chars" : 25,
+ "wrapped" : true,
+ "ellipsized" : false,
+ "hyphenated" : false,
+ "justified" : false,
+ "paragraph-start" : true,
+ "paragraph-end" : false,
+ "direction" : "ltr",
+ "runs" : [
+ {
+ "offset" : 0,
+ "length" : 25,
+ "text" : "Lets see if this text is ",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "Latn",
+ "font" : {
+ "description" : "Cantarell 11",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ }
},
- "matrix" : [
- 1,
- -0,
- -0,
- 1,
- 0,
- 0
+ "flags" : 0,
+ "y-offset" : 0,
+ "start-x-offset" : 0,
+ "end-x-offset" : 0,
+ "glyphs" : [
+ {
+ "glyph" : 103,
+ "width" : 7168,
+ "is-cluster-start" : true,
+ "log-cluster" : 0
+ },
+ {
+ "glyph" : 287,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 1
+ },
+ {
+ "glyph" : 430,
+ "width" : 5120,
+ "is-cluster-start" : true,
+ "log-cluster" : 2
+ },
+ {
+ "glyph" : 417,
+ "width" : 7168,
+ "is-cluster-start" : true,
+ "log-cluster" : 3
+ },
+ {
+ "glyph" : 1109,
+ "width" : 3072,
+ "is-cluster-start" : true,
+ "log-cluster" : 4
+ },
+ {
+ "glyph" : 417,
+ "width" : 7168,
+ "is-cluster-start" : true,
+ "log-cluster" : 5
+ },
+ {
+ "glyph" : 287,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 6
+ },
+ {
+ "glyph" : 287,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 7
+ },
+ {
+ "glyph" : 1109,
+ "width" : 3072,
+ "is-cluster-start" : true,
+ "log-cluster" : 8
+ },
+ {
+ "glyph" : 324,
+ "width" : 4096,
+ "is-cluster-start" : true,
+ "log-cluster" : 9
+ },
+ {
+ "glyph" : 311,
+ "width" : 5120,
+ "is-cluster-start" : true,
+ "log-cluster" : 10
+ },
+ {
+ "glyph" : 1109,
+ "width" : 3072,
+ "is-cluster-start" : true,
+ "log-cluster" : 11
+ },
+ {
+ "glyph" : 430,
+ "width" : 5120,
+ "is-cluster-start" : true,
+ "log-cluster" : 12
+ },
+ {
+ "glyph" : 319,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 13
+ },
+ {
+ "glyph" : 324,
+ "width" : 4096,
+ "is-cluster-start" : true,
+ "log-cluster" : 14
+ },
+ {
+ "glyph" : 417,
+ "width" : 7168,
+ "is-cluster-start" : true,
+ "log-cluster" : 15
+ },
+ {
+ "glyph" : 1109,
+ "width" : 3072,
+ "is-cluster-start" : true,
+ "log-cluster" : 16
+ },
+ {
+ "glyph" : 430,
+ "width" : 5120,
+ "is-cluster-start" : true,
+ "log-cluster" : 17
+ },
+ {
+ "glyph" : 287,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 18
+ },
+ {
+ "glyph" : 472,
+ "width" : 7168,
+ "is-cluster-start" : true,
+ "log-cluster" : 19
+ },
+ {
+ "glyph" : 430,
+ "width" : 5120,
+ "is-cluster-start" : true,
+ "log-cluster" : 20
+ },
+ {
+ "glyph" : 1109,
+ "width" : 3072,
+ "is-cluster-start" : true,
+ "log-cluster" : 21
+ },
+ {
+ "glyph" : 324,
+ "width" : 4096,
+ "is-cluster-start" : true,
+ "log-cluster" : 22
+ },
+ {
+ "glyph" : 417,
+ "width" : 7168,
+ "is-cluster-start" : true,
+ "log-cluster" : 23
+ },
+ {
+ "glyph" : 268435455,
+ "width" : 0,
+ "is-cluster-start" : true,
+ "log-cluster" : 24
+ }
]
- },
- "flags" : 0,
- "y-offset" : 0,
- "start-x-offset" : 0,
- "end-x-offset" : 0,
- "glyphs" : [
- {
- "glyph" : 103,
- "width" : 7168,
- "is-cluster-start" : true,
- "log-cluster" : 0
- },
- {
- "glyph" : 287,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 1
- },
- {
- "glyph" : 430,
- "width" : 5120,
- "is-cluster-start" : true,
- "log-cluster" : 2
- },
- {
- "glyph" : 417,
- "width" : 7168,
- "is-cluster-start" : true,
- "log-cluster" : 3
- },
- {
- "glyph" : 1109,
- "width" : 3072,
- "is-cluster-start" : true,
- "log-cluster" : 4
- },
- {
- "glyph" : 417,
- "width" : 7168,
- "is-cluster-start" : true,
- "log-cluster" : 5
- },
- {
- "glyph" : 287,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 6
- },
- {
- "glyph" : 287,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 7
- },
- {
- "glyph" : 1109,
- "width" : 3072,
- "is-cluster-start" : true,
- "log-cluster" : 8
- },
- {
- "glyph" : 324,
- "width" : 4096,
- "is-cluster-start" : true,
- "log-cluster" : 9
- },
- {
- "glyph" : 311,
- "width" : 5120,
- "is-cluster-start" : true,
- "log-cluster" : 10
- },
- {
- "glyph" : 1109,
- "width" : 3072,
- "is-cluster-start" : true,
- "log-cluster" : 11
- },
- {
- "glyph" : 430,
- "width" : 5120,
- "is-cluster-start" : true,
- "log-cluster" : 12
- },
- {
- "glyph" : 319,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 13
- },
- {
- "glyph" : 324,
- "width" : 4096,
- "is-cluster-start" : true,
- "log-cluster" : 14
- },
- {
- "glyph" : 417,
- "width" : 7168,
- "is-cluster-start" : true,
- "log-cluster" : 15
- },
- {
- "glyph" : 1109,
- "width" : 3072,
- "is-cluster-start" : true,
- "log-cluster" : 16
+ }
+ ]
+ }
+ },
+ {
+ "position" : [
+ 0,
+ 34816
+ ],
+ "line" : {
+ "start-index" : 25,
+ "length" : 73,
+ "start-offset" : 25,
+ "n-chars" : 73,
+ "wrapped" : false,
+ "ellipsized" : true,
+ "hyphenated" : false,
+ "justified" : false,
+ "paragraph-start" : false,
+ "paragraph-end" : true,
+ "direction" : "ltr",
+ "runs" : [
+ {
+ "offset" : 25,
+ "length" : 20,
+ "text" : "long enough to wrap ",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "Latn",
+ "font" : {
+ "description" : "Cantarell 11",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ }
},
- {
- "glyph" : 430,
- "width" : 5120,
- "is-cluster-start" : true,
- "log-cluster" : 17
- },
- {
- "glyph" : 287,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 18
- },
- {
- "glyph" : 472,
- "width" : 7168,
- "is-cluster-start" : true,
- "log-cluster" : 19
- },
- {
- "glyph" : 430,
- "width" : 5120,
- "is-cluster-start" : true,
- "log-cluster" : 20
- },
- {
- "glyph" : 1109,
- "width" : 3072,
- "is-cluster-start" : true,
- "log-cluster" : 21
- },
- {
- "glyph" : 324,
- "width" : 4096,
- "is-cluster-start" : true,
- "log-cluster" : 22
- },
- {
- "glyph" : 417,
- "width" : 7168,
- "is-cluster-start" : true,
- "log-cluster" : 23
- },
- {
- "glyph" : 268435455,
- "width" : 0,
- "is-cluster-start" : true,
- "log-cluster" : 24
- }
- ]
- }
- ]
- },
- {
- "start-index" : 25,
- "length" : 73,
- "paragraph-start" : false,
- "direction" : "ltr",
- "runs" : [
- {
- "offset" : 25,
- "length" : 20,
- "text" : "long enough to wrap ",
- "bidi-level" : 0,
- "gravity" : "south",
- "language" : "en-us",
- "script" : "Latn",
- "font" : {
- "description" : "Cantarell 11",
- "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
- "variations" : {
- "wght" : 0
- },
- "matrix" : [
- 1,
- -0,
- -0,
- 1,
- 0,
- 0
+ "flags" : 0,
+ "y-offset" : 0,
+ "start-x-offset" : 0,
+ "end-x-offset" : 0,
+ "glyphs" : [
+ {
+ "glyph" : 349,
+ "width" : 4096,
+ "is-cluster-start" : true,
+ "log-cluster" : 0
+ },
+ {
+ "glyph" : 370,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 1
+ },
+ {
+ "glyph" : 360,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 2
+ },
+ {
+ "glyph" : 312,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 3
+ },
+ {
+ "glyph" : 1109,
+ "width" : 3072,
+ "is-cluster-start" : true,
+ "log-cluster" : 4
+ },
+ {
+ "glyph" : 287,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 5
+ },
+ {
+ "glyph" : 360,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 6
+ },
+ {
+ "glyph" : 370,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 7
+ },
+ {
+ "glyph" : 438,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 8
+ },
+ {
+ "glyph" : 312,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 9
+ },
+ {
+ "glyph" : 319,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 10
+ },
+ {
+ "glyph" : 1109,
+ "width" : 3072,
+ "is-cluster-start" : true,
+ "log-cluster" : 11
+ },
+ {
+ "glyph" : 430,
+ "width" : 5120,
+ "is-cluster-start" : true,
+ "log-cluster" : 12
+ },
+ {
+ "glyph" : 370,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 13
+ },
+ {
+ "glyph" : 1109,
+ "width" : 3072,
+ "is-cluster-start" : true,
+ "log-cluster" : 14
+ },
+ {
+ "glyph" : 467,
+ "width" : 11264,
+ "is-cluster-start" : true,
+ "log-cluster" : 15
+ },
+ {
+ "glyph" : 409,
+ "width" : 6144,
+ "is-cluster-start" : true,
+ "log-cluster" : 16
+ },
+ {
+ "glyph" : 244,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 17
+ },
+ {
+ "glyph" : 406,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 18
+ },
+ {
+ "glyph" : 1109,
+ "width" : 3072,
+ "is-cluster-start" : true,
+ "log-cluster" : 19
+ }
]
},
- "flags" : 0,
- "y-offset" : 0,
- "start-x-offset" : 0,
- "end-x-offset" : 0,
- "glyphs" : [
- {
- "glyph" : 349,
- "width" : 4096,
- "is-cluster-start" : true,
- "log-cluster" : 0
- },
- {
- "glyph" : 370,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 1
- },
- {
- "glyph" : 360,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 2
- },
- {
- "glyph" : 312,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 3
- },
- {
- "glyph" : 1109,
- "width" : 3072,
- "is-cluster-start" : true,
- "log-cluster" : 4
- },
- {
- "glyph" : 287,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 5
+ {
+ "offset" : 45,
+ "length" : 53,
+ "text" : "due to height limitations. It might, or it might not.",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "Zyyy",
+ "font" : {
+ "description" : "Cantarell 11",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ }
},
- {
- "glyph" : 360,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 6
- },
- {
- "glyph" : 370,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 7
- },
- {
- "glyph" : 438,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 8
- },
- {
- "glyph" : 312,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 9
- },
- {
- "glyph" : 319,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 10
- },
- {
- "glyph" : 1109,
- "width" : 3072,
- "is-cluster-start" : true,
- "log-cluster" : 11
- },
- {
- "glyph" : 430,
- "width" : 5120,
- "is-cluster-start" : true,
- "log-cluster" : 12
- },
- {
- "glyph" : 370,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 13
- },
- {
- "glyph" : 1109,
- "width" : 3072,
- "is-cluster-start" : true,
- "log-cluster" : 14
- },
- {
- "glyph" : 467,
- "width" : 11264,
- "is-cluster-start" : true,
- "log-cluster" : 15
- },
- {
- "glyph" : 409,
- "width" : 6144,
- "is-cluster-start" : true,
- "log-cluster" : 16
- },
- {
- "glyph" : 244,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 17
- },
- {
- "glyph" : 406,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 18
- },
- {
- "glyph" : 1109,
- "width" : 3072,
- "is-cluster-start" : true,
- "log-cluster" : 19
- }
- ]
- },
- {
- "offset" : 45,
- "length" : 53,
- "text" : "due to height limitations. It might, or it might not.",
- "bidi-level" : 0,
- "gravity" : "south",
- "language" : "en-us",
- "script" : "Zyyy",
- "font" : {
- "description" : "Cantarell 11",
- "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
- "variations" : {
- "wght" : 0
- },
- "matrix" : [
- 1,
- -0,
- -0,
- 1,
- 0,
- 0
+ "flags" : 2,
+ "extra-attributes" : [
+ {
+ "end" : 2147483647,
+ "type" : "fallback",
+ "value" : false
+ }
+ ],
+ "y-offset" : 0,
+ "start-x-offset" : 0,
+ "end-x-offset" : 0,
+ "glyphs" : [
+ {
+ "glyph" : 1062,
+ "width" : 16384,
+ "is-cluster-start" : true,
+ "log-cluster" : 0
+ }
]
- },
- "flags" : 2,
- "extra-attributes" : [
- {
- "end" : 2147483647,
- "type" : "fallback",
- "value" : false
- }
- ],
- "y-offset" : 0,
- "start-x-offset" : 0,
- "end-x-offset" : 0,
- "glyphs" : [
- {
- "glyph" : 1062,
- "width" : 16384,
- "is-cluster-start" : true,
- "log-cluster" : 0
- }
- ]
- }
- ]
+ }
+ ]
+ }
}
]
}
diff --git a/tests/layouts/valid-16.layout b/tests/layouts/valid-16.layout
index a072c2d5..7a9e0c9f 100644
--- a/tests/layouts/valid-16.layout
+++ b/tests/layouts/valid-16.layout
@@ -22,1006 +22,1009 @@
"ellipsize" : "end",
"width" : 153600,
"height" : -2,
+ "log-attrs" : [
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-start" : true,
+ "sentence-boundary" : true,
+ "sentence-start" : true,
+ "backspace-deletes-character" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "word-end" : true,
+ "expandable-space" : true,
+ "word-boundary" : true
+ },
+ {
+ "line-break" : true,
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-start" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "word-end" : true,
+ "expandable-space" : true,
+ "word-boundary" : true
+ },
+ {
+ "line-break" : true,
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-start" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "word-end" : true,
+ "expandable-space" : true,
+ "word-boundary" : true
+ },
+ {
+ "line-break" : true,
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-start" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "word-end" : true,
+ "expandable-space" : true,
+ "word-boundary" : true
+ },
+ {
+ "line-break" : true,
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-start" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "word-end" : true,
+ "expandable-space" : true,
+ "word-boundary" : true
+ },
+ {
+ "line-break" : true,
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-start" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "word-end" : true,
+ "expandable-space" : true,
+ "word-boundary" : true
+ },
+ {
+ "line-break" : true,
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-start" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "word-end" : true,
+ "expandable-space" : true,
+ "word-boundary" : true
+ },
+ {
+ "line-break" : true,
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-start" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "word-end" : true,
+ "expandable-space" : true,
+ "word-boundary" : true
+ },
+ {
+ "line-break" : true,
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-start" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "word-end" : true,
+ "expandable-space" : true,
+ "word-boundary" : true
+ },
+ {
+ "line-break" : true,
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-start" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "word-end" : true,
+ "expandable-space" : true,
+ "word-boundary" : true
+ },
+ {
+ "line-break" : true,
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-start" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "word-end" : true,
+ "expandable-space" : true,
+ "word-boundary" : true
+ },
+ {
+ "line-break" : true,
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-start" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "word-end" : true,
+ "expandable-space" : true,
+ "word-boundary" : true
+ },
+ {
+ "line-break" : true,
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-start" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "word-end" : true,
+ "expandable-space" : true,
+ "word-boundary" : true
+ },
+ {
+ "line-break" : true,
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-start" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-end" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "sentence-end" : true,
+ "expandable-space" : true,
+ "word-boundary" : true
+ },
+ {
+ "line-break" : true,
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-start" : true,
+ "sentence-boundary" : true,
+ "sentence-start" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "word-end" : true,
+ "expandable-space" : true,
+ "word-boundary" : true
+ },
+ {
+ "line-break" : true,
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-start" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-end" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "expandable-space" : true,
+ "word-boundary" : true
+ },
+ {
+ "line-break" : true,
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-start" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "word-end" : true,
+ "expandable-space" : true,
+ "word-boundary" : true
+ },
+ {
+ "line-break" : true,
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-start" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "word-end" : true,
+ "expandable-space" : true,
+ "word-boundary" : true
+ },
+ {
+ "line-break" : true,
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-start" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "word-end" : true,
+ "expandable-space" : true,
+ "word-boundary" : true
+ },
+ {
+ "line-break" : true,
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-start" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-end" : true,
+ "word-boundary" : true
+ },
+ {
+ "line-break" : true,
+ "mandatory-break" : true,
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "sentence-boundary" : true,
+ "sentence-end" : true,
+ "word-boundary" : true
+ }
+ ],
"output" : {
- "is-wrapped" : true,
- "is-ellipsized" : true,
+ "wrapped" : true,
+ "ellipsized" : true,
+ "hypenated" : false,
"unknown-glyphs" : 0,
"width" : 153600,
"height" : 38912,
- "log-attrs" : [
- {
- "char-break" : true,
- "cursor-position" : true,
- "word-start" : true,
- "sentence-boundary" : true,
- "sentence-start" : true,
- "backspace-deletes-character" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "word-end" : true,
- "expandable-space" : true,
- "word-boundary" : true
- },
- {
- "line-break" : true,
- "char-break" : true,
- "cursor-position" : true,
- "word-start" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "word-end" : true,
- "expandable-space" : true,
- "word-boundary" : true
- },
- {
- "line-break" : true,
- "char-break" : true,
- "cursor-position" : true,
- "word-start" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "word-end" : true,
- "expandable-space" : true,
- "word-boundary" : true
- },
- {
- "line-break" : true,
- "char-break" : true,
- "cursor-position" : true,
- "word-start" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "word-end" : true,
- "expandable-space" : true,
- "word-boundary" : true
- },
- {
- "line-break" : true,
- "char-break" : true,
- "cursor-position" : true,
- "word-start" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "word-end" : true,
- "expandable-space" : true,
- "word-boundary" : true
- },
- {
- "line-break" : true,
- "char-break" : true,
- "cursor-position" : true,
- "word-start" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "word-end" : true,
- "expandable-space" : true,
- "word-boundary" : true
- },
- {
- "line-break" : true,
- "char-break" : true,
- "cursor-position" : true,
- "word-start" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "word-end" : true,
- "expandable-space" : true,
- "word-boundary" : true
- },
- {
- "line-break" : true,
- "char-break" : true,
- "cursor-position" : true,
- "word-start" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "word-end" : true,
- "expandable-space" : true,
- "word-boundary" : true
- },
- {
- "line-break" : true,
- "char-break" : true,
- "cursor-position" : true,
- "word-start" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "word-end" : true,
- "expandable-space" : true,
- "word-boundary" : true
- },
- {
- "line-break" : true,
- "char-break" : true,
- "cursor-position" : true,
- "word-start" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "word-end" : true,
- "expandable-space" : true,
- "word-boundary" : true
- },
- {
- "line-break" : true,
- "char-break" : true,
- "cursor-position" : true,
- "word-start" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "word-end" : true,
- "expandable-space" : true,
- "word-boundary" : true
- },
- {
- "line-break" : true,
- "char-break" : true,
- "cursor-position" : true,
- "word-start" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "word-end" : true,
- "expandable-space" : true,
- "word-boundary" : true
- },
- {
- "line-break" : true,
- "char-break" : true,
- "cursor-position" : true,
- "word-start" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "word-end" : true,
- "expandable-space" : true,
- "word-boundary" : true
- },
- {
- "line-break" : true,
- "char-break" : true,
- "cursor-position" : true,
- "word-start" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "word-end" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "sentence-end" : true,
- "expandable-space" : true,
- "word-boundary" : true
- },
- {
- "line-break" : true,
- "char-break" : true,
- "cursor-position" : true,
- "word-start" : true,
- "sentence-boundary" : true,
- "sentence-start" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "word-end" : true,
- "expandable-space" : true,
- "word-boundary" : true
- },
- {
- "line-break" : true,
- "char-break" : true,
- "cursor-position" : true,
- "word-start" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "word-end" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "expandable-space" : true,
- "word-boundary" : true
- },
- {
- "line-break" : true,
- "char-break" : true,
- "cursor-position" : true,
- "word-start" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "word-end" : true,
- "expandable-space" : true,
- "word-boundary" : true
- },
- {
- "line-break" : true,
- "char-break" : true,
- "cursor-position" : true,
- "word-start" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "word-end" : true,
- "expandable-space" : true,
- "word-boundary" : true
- },
- {
- "line-break" : true,
- "char-break" : true,
- "cursor-position" : true,
- "word-start" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "word-end" : true,
- "expandable-space" : true,
- "word-boundary" : true
- },
- {
- "line-break" : true,
- "char-break" : true,
- "cursor-position" : true,
- "word-start" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "word-end" : true,
- "word-boundary" : true
- },
- {
- "line-break" : true,
- "mandatory-break" : true,
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "sentence-boundary" : true,
- "sentence-end" : true,
- "word-boundary" : true
- }
- ],
"lines" : [
{
- "start-index" : 0,
- "length" : 25,
- "paragraph-start" : true,
- "direction" : "ltr",
- "runs" : [
- {
- "offset" : 0,
- "length" : 25,
- "text" : "Lets see if this text is ",
- "bidi-level" : 0,
- "gravity" : "south",
- "language" : "en-us",
- "script" : "Latn",
- "font" : {
- "description" : "Cantarell 11",
- "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
- "variations" : {
- "wght" : 0
+ "position" : [
+ 0,
+ 15360
+ ],
+ "line" : {
+ "start-index" : 0,
+ "length" : 25,
+ "start-offset" : 0,
+ "n-chars" : 25,
+ "wrapped" : true,
+ "ellipsized" : false,
+ "hyphenated" : false,
+ "justified" : false,
+ "paragraph-start" : true,
+ "paragraph-end" : false,
+ "direction" : "ltr",
+ "runs" : [
+ {
+ "offset" : 0,
+ "length" : 25,
+ "text" : "Lets see if this text is ",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "Latn",
+ "font" : {
+ "description" : "Cantarell 11",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ }
},
- "matrix" : [
- 1,
- -0,
- -0,
- 1,
- 0,
- 0
+ "flags" : 0,
+ "y-offset" : 0,
+ "start-x-offset" : 0,
+ "end-x-offset" : 0,
+ "glyphs" : [
+ {
+ "glyph" : 103,
+ "width" : 7168,
+ "is-cluster-start" : true,
+ "log-cluster" : 0
+ },
+ {
+ "glyph" : 287,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 1
+ },
+ {
+ "glyph" : 430,
+ "width" : 5120,
+ "is-cluster-start" : true,
+ "log-cluster" : 2
+ },
+ {
+ "glyph" : 417,
+ "width" : 7168,
+ "is-cluster-start" : true,
+ "log-cluster" : 3
+ },
+ {
+ "glyph" : 1109,
+ "width" : 3072,
+ "is-cluster-start" : true,
+ "log-cluster" : 4
+ },
+ {
+ "glyph" : 417,
+ "width" : 7168,
+ "is-cluster-start" : true,
+ "log-cluster" : 5
+ },
+ {
+ "glyph" : 287,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 6
+ },
+ {
+ "glyph" : 287,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 7
+ },
+ {
+ "glyph" : 1109,
+ "width" : 3072,
+ "is-cluster-start" : true,
+ "log-cluster" : 8
+ },
+ {
+ "glyph" : 324,
+ "width" : 4096,
+ "is-cluster-start" : true,
+ "log-cluster" : 9
+ },
+ {
+ "glyph" : 311,
+ "width" : 5120,
+ "is-cluster-start" : true,
+ "log-cluster" : 10
+ },
+ {
+ "glyph" : 1109,
+ "width" : 3072,
+ "is-cluster-start" : true,
+ "log-cluster" : 11
+ },
+ {
+ "glyph" : 430,
+ "width" : 5120,
+ "is-cluster-start" : true,
+ "log-cluster" : 12
+ },
+ {
+ "glyph" : 319,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 13
+ },
+ {
+ "glyph" : 324,
+ "width" : 4096,
+ "is-cluster-start" : true,
+ "log-cluster" : 14
+ },
+ {
+ "glyph" : 417,
+ "width" : 7168,
+ "is-cluster-start" : true,
+ "log-cluster" : 15
+ },
+ {
+ "glyph" : 1109,
+ "width" : 3072,
+ "is-cluster-start" : true,
+ "log-cluster" : 16
+ },
+ {
+ "glyph" : 430,
+ "width" : 5120,
+ "is-cluster-start" : true,
+ "log-cluster" : 17
+ },
+ {
+ "glyph" : 287,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 18
+ },
+ {
+ "glyph" : 472,
+ "width" : 7168,
+ "is-cluster-start" : true,
+ "log-cluster" : 19
+ },
+ {
+ "glyph" : 430,
+ "width" : 5120,
+ "is-cluster-start" : true,
+ "log-cluster" : 20
+ },
+ {
+ "glyph" : 1109,
+ "width" : 3072,
+ "is-cluster-start" : true,
+ "log-cluster" : 21
+ },
+ {
+ "glyph" : 324,
+ "width" : 4096,
+ "is-cluster-start" : true,
+ "log-cluster" : 22
+ },
+ {
+ "glyph" : 417,
+ "width" : 7168,
+ "is-cluster-start" : true,
+ "log-cluster" : 23
+ },
+ {
+ "glyph" : 268435455,
+ "width" : 0,
+ "is-cluster-start" : true,
+ "log-cluster" : 24
+ }
]
- },
- "flags" : 0,
- "y-offset" : 0,
- "start-x-offset" : 0,
- "end-x-offset" : 0,
- "glyphs" : [
- {
- "glyph" : 103,
- "width" : 7168,
- "is-cluster-start" : true,
- "log-cluster" : 0
- },
- {
- "glyph" : 287,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 1
- },
- {
- "glyph" : 430,
- "width" : 5120,
- "is-cluster-start" : true,
- "log-cluster" : 2
- },
- {
- "glyph" : 417,
- "width" : 7168,
- "is-cluster-start" : true,
- "log-cluster" : 3
- },
- {
- "glyph" : 1109,
- "width" : 3072,
- "is-cluster-start" : true,
- "log-cluster" : 4
- },
- {
- "glyph" : 417,
- "width" : 7168,
- "is-cluster-start" : true,
- "log-cluster" : 5
- },
- {
- "glyph" : 287,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 6
- },
- {
- "glyph" : 287,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 7
- },
- {
- "glyph" : 1109,
- "width" : 3072,
- "is-cluster-start" : true,
- "log-cluster" : 8
- },
- {
- "glyph" : 324,
- "width" : 4096,
- "is-cluster-start" : true,
- "log-cluster" : 9
- },
- {
- "glyph" : 311,
- "width" : 5120,
- "is-cluster-start" : true,
- "log-cluster" : 10
- },
- {
- "glyph" : 1109,
- "width" : 3072,
- "is-cluster-start" : true,
- "log-cluster" : 11
- },
- {
- "glyph" : 430,
- "width" : 5120,
- "is-cluster-start" : true,
- "log-cluster" : 12
- },
- {
- "glyph" : 319,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 13
- },
- {
- "glyph" : 324,
- "width" : 4096,
- "is-cluster-start" : true,
- "log-cluster" : 14
- },
- {
- "glyph" : 417,
- "width" : 7168,
- "is-cluster-start" : true,
- "log-cluster" : 15
- },
- {
- "glyph" : 1109,
- "width" : 3072,
- "is-cluster-start" : true,
- "log-cluster" : 16
+ }
+ ]
+ }
+ },
+ {
+ "position" : [
+ 0,
+ 34816
+ ],
+ "line" : {
+ "start-index" : 25,
+ "length" : 73,
+ "start-offset" : 25,
+ "n-chars" : 73,
+ "wrapped" : false,
+ "ellipsized" : true,
+ "hyphenated" : false,
+ "justified" : false,
+ "paragraph-start" : false,
+ "paragraph-end" : true,
+ "direction" : "ltr",
+ "runs" : [
+ {
+ "offset" : 25,
+ "length" : 20,
+ "text" : "long enough to wrap ",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "Latn",
+ "font" : {
+ "description" : "Cantarell 11",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ }
},
- {
- "glyph" : 430,
- "width" : 5120,
- "is-cluster-start" : true,
- "log-cluster" : 17
- },
- {
- "glyph" : 287,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 18
- },
- {
- "glyph" : 472,
- "width" : 7168,
- "is-cluster-start" : true,
- "log-cluster" : 19
- },
- {
- "glyph" : 430,
- "width" : 5120,
- "is-cluster-start" : true,
- "log-cluster" : 20
- },
- {
- "glyph" : 1109,
- "width" : 3072,
- "is-cluster-start" : true,
- "log-cluster" : 21
- },
- {
- "glyph" : 324,
- "width" : 4096,
- "is-cluster-start" : true,
- "log-cluster" : 22
- },
- {
- "glyph" : 417,
- "width" : 7168,
- "is-cluster-start" : true,
- "log-cluster" : 23
- },
- {
- "glyph" : 268435455,
- "width" : 0,
- "is-cluster-start" : true,
- "log-cluster" : 24
- }
- ]
- }
- ]
- },
- {
- "start-index" : 25,
- "length" : 73,
- "paragraph-start" : false,
- "direction" : "ltr",
- "runs" : [
- {
- "offset" : 25,
- "length" : 20,
- "text" : "long enough to wrap ",
- "bidi-level" : 0,
- "gravity" : "south",
- "language" : "en-us",
- "script" : "Latn",
- "font" : {
- "description" : "Cantarell 11",
- "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
- "variations" : {
- "wght" : 0
- },
- "matrix" : [
- 1,
- -0,
- -0,
- 1,
- 0,
- 0
+ "flags" : 0,
+ "y-offset" : 0,
+ "start-x-offset" : 0,
+ "end-x-offset" : 0,
+ "glyphs" : [
+ {
+ "glyph" : 349,
+ "width" : 4096,
+ "is-cluster-start" : true,
+ "log-cluster" : 0
+ },
+ {
+ "glyph" : 370,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 1
+ },
+ {
+ "glyph" : 360,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 2
+ },
+ {
+ "glyph" : 312,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 3
+ },
+ {
+ "glyph" : 1109,
+ "width" : 3072,
+ "is-cluster-start" : true,
+ "log-cluster" : 4
+ },
+ {
+ "glyph" : 287,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 5
+ },
+ {
+ "glyph" : 360,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 6
+ },
+ {
+ "glyph" : 370,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 7
+ },
+ {
+ "glyph" : 438,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 8
+ },
+ {
+ "glyph" : 312,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 9
+ },
+ {
+ "glyph" : 319,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 10
+ },
+ {
+ "glyph" : 1109,
+ "width" : 3072,
+ "is-cluster-start" : true,
+ "log-cluster" : 11
+ },
+ {
+ "glyph" : 430,
+ "width" : 5120,
+ "is-cluster-start" : true,
+ "log-cluster" : 12
+ },
+ {
+ "glyph" : 370,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 13
+ },
+ {
+ "glyph" : 1109,
+ "width" : 3072,
+ "is-cluster-start" : true,
+ "log-cluster" : 14
+ },
+ {
+ "glyph" : 467,
+ "width" : 11264,
+ "is-cluster-start" : true,
+ "log-cluster" : 15
+ },
+ {
+ "glyph" : 409,
+ "width" : 6144,
+ "is-cluster-start" : true,
+ "log-cluster" : 16
+ },
+ {
+ "glyph" : 244,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 17
+ },
+ {
+ "glyph" : 406,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 18
+ },
+ {
+ "glyph" : 1109,
+ "width" : 3072,
+ "is-cluster-start" : true,
+ "log-cluster" : 19
+ }
]
},
- "flags" : 0,
- "y-offset" : 0,
- "start-x-offset" : 0,
- "end-x-offset" : 0,
- "glyphs" : [
- {
- "glyph" : 349,
- "width" : 4096,
- "is-cluster-start" : true,
- "log-cluster" : 0
- },
- {
- "glyph" : 370,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 1
- },
- {
- "glyph" : 360,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 2
- },
- {
- "glyph" : 312,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 3
- },
- {
- "glyph" : 1109,
- "width" : 3072,
- "is-cluster-start" : true,
- "log-cluster" : 4
- },
- {
- "glyph" : 287,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 5
+ {
+ "offset" : 45,
+ "length" : 53,
+ "text" : "due to height limitations. It might, or it might not.",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "Zyyy",
+ "font" : {
+ "description" : "Cantarell 11",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ }
},
- {
- "glyph" : 360,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 6
- },
- {
- "glyph" : 370,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 7
- },
- {
- "glyph" : 438,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 8
- },
- {
- "glyph" : 312,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 9
- },
- {
- "glyph" : 319,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 10
- },
- {
- "glyph" : 1109,
- "width" : 3072,
- "is-cluster-start" : true,
- "log-cluster" : 11
- },
- {
- "glyph" : 430,
- "width" : 5120,
- "is-cluster-start" : true,
- "log-cluster" : 12
- },
- {
- "glyph" : 370,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 13
- },
- {
- "glyph" : 1109,
- "width" : 3072,
- "is-cluster-start" : true,
- "log-cluster" : 14
- },
- {
- "glyph" : 467,
- "width" : 11264,
- "is-cluster-start" : true,
- "log-cluster" : 15
- },
- {
- "glyph" : 409,
- "width" : 6144,
- "is-cluster-start" : true,
- "log-cluster" : 16
- },
- {
- "glyph" : 244,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 17
- },
- {
- "glyph" : 406,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 18
- },
- {
- "glyph" : 1109,
- "width" : 3072,
- "is-cluster-start" : true,
- "log-cluster" : 19
- }
- ]
- },
- {
- "offset" : 45,
- "length" : 53,
- "text" : "due to height limitations. It might, or it might not.",
- "bidi-level" : 0,
- "gravity" : "south",
- "language" : "en-us",
- "script" : "Zyyy",
- "font" : {
- "description" : "Cantarell 11",
- "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
- "variations" : {
- "wght" : 0
- },
- "matrix" : [
- 1,
- -0,
- -0,
- 1,
- 0,
- 0
+ "flags" : 2,
+ "extra-attributes" : [
+ {
+ "end" : 2147483647,
+ "type" : "fallback",
+ "value" : false
+ }
+ ],
+ "y-offset" : 0,
+ "start-x-offset" : 0,
+ "end-x-offset" : 0,
+ "glyphs" : [
+ {
+ "glyph" : 1062,
+ "width" : 16384,
+ "is-cluster-start" : true,
+ "log-cluster" : 0
+ }
]
- },
- "flags" : 2,
- "extra-attributes" : [
- {
- "end" : 2147483647,
- "type" : "fallback",
- "value" : false
- }
- ],
- "y-offset" : 0,
- "start-x-offset" : 0,
- "end-x-offset" : 0,
- "glyphs" : [
- {
- "glyph" : 1062,
- "width" : 16384,
- "is-cluster-start" : true,
- "log-cluster" : 0
- }
- ]
- }
- ]
+ }
+ ]
+ }
}
]
}
diff --git a/tests/layouts/valid-17.layout b/tests/layouts/valid-17.layout
index c0d7c37a..8e9b1292 100644
--- a/tests/layouts/valid-17.layout
+++ b/tests/layouts/valid-17.layout
@@ -18,448 +18,406 @@
"comment" : "Hyphenation point should get replaced with a hyphen",
"text" : "some‧bla‧bla‧bla",
"font" : "Cantarell 11",
- "justify" : true,
"width" : 102400,
+ "log-attrs" : [
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-start" : true,
+ "sentence-boundary" : true,
+ "sentence-start" : true,
+ "backspace-deletes-character" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-end" : true
+ },
+ {
+ "line-break" : true,
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-start" : true,
+ "backspace-deletes-character" : true,
+ "break-inserts-hyphen" : true,
+ "break-removes-preceding" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-end" : true
+ },
+ {
+ "line-break" : true,
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-start" : true,
+ "backspace-deletes-character" : true,
+ "break-inserts-hyphen" : true,
+ "break-removes-preceding" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-end" : true
+ },
+ {
+ "line-break" : true,
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-start" : true,
+ "backspace-deletes-character" : true,
+ "break-inserts-hyphen" : true,
+ "break-removes-preceding" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "line-break" : true,
+ "mandatory-break" : true,
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "word-end" : true,
+ "sentence-boundary" : true,
+ "sentence-end" : true,
+ "word-boundary" : true
+ }
+ ],
"output" : {
- "is-wrapped" : true,
- "is-ellipsized" : false,
+ "wrapped" : true,
+ "ellipsized" : false,
+ "hypenated" : true,
"unknown-glyphs" : 0,
- "width" : 96976,
+ "width" : 93184,
"height" : 38912,
- "log-attrs" : [
- {
- "char-break" : true,
- "cursor-position" : true,
- "word-start" : true,
- "sentence-boundary" : true,
- "sentence-start" : true,
- "backspace-deletes-character" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "word-end" : true
- },
- {
- "line-break" : true,
- "char-break" : true,
- "cursor-position" : true,
- "word-start" : true,
- "backspace-deletes-character" : true,
- "break-inserts-hyphen" : true,
- "break-removes-preceding" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "word-end" : true
- },
- {
- "line-break" : true,
- "char-break" : true,
- "cursor-position" : true,
- "word-start" : true,
- "backspace-deletes-character" : true,
- "break-inserts-hyphen" : true,
- "break-removes-preceding" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "word-end" : true
- },
- {
- "line-break" : true,
- "char-break" : true,
- "cursor-position" : true,
- "word-start" : true,
- "backspace-deletes-character" : true,
- "break-inserts-hyphen" : true,
- "break-removes-preceding" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "line-break" : true,
- "mandatory-break" : true,
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "word-end" : true,
- "sentence-boundary" : true,
- "sentence-end" : true,
- "word-boundary" : true
- }
- ],
"lines" : [
{
- "start-index" : 0,
- "length" : 19,
- "paragraph-start" : true,
- "direction" : "ltr",
- "runs" : [
- {
- "offset" : 0,
- "length" : 4,
- "text" : "some",
- "bidi-level" : 0,
- "gravity" : "south",
- "language" : "en-us",
- "script" : "Latn",
- "font" : {
- "description" : "Cantarell 11",
- "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
- "variations" : {
- "wght" : 0
+ "position" : [
+ 0,
+ 15360
+ ],
+ "line" : {
+ "start-index" : 0,
+ "length" : 19,
+ "start-offset" : 0,
+ "n-chars" : 13,
+ "wrapped" : true,
+ "ellipsized" : false,
+ "hyphenated" : true,
+ "justified" : false,
+ "paragraph-start" : true,
+ "paragraph-end" : false,
+ "direction" : "ltr",
+ "runs" : [
+ {
+ "offset" : 0,
+ "length" : 4,
+ "text" : "some",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "Latn",
+ "font" : {
+ "description" : "Cantarell 11",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ }
},
- "matrix" : [
- 1,
- -0,
- -0,
- 1,
- 0,
- 0
+ "flags" : 0,
+ "y-offset" : 0,
+ "start-x-offset" : 0,
+ "end-x-offset" : 0,
+ "glyphs" : [
+ {
+ "glyph" : 417,
+ "width" : 7168,
+ "is-cluster-start" : true,
+ "log-cluster" : 0
+ },
+ {
+ "glyph" : 370,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 1
+ },
+ {
+ "glyph" : 358,
+ "width" : 13312,
+ "is-cluster-start" : true,
+ "log-cluster" : 2
+ },
+ {
+ "glyph" : 287,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 3
+ }
]
},
- "flags" : 0,
- "y-offset" : 0,
- "start-x-offset" : 0,
- "end-x-offset" : 0,
- "glyphs" : [
- {
- "glyph" : 417,
- "width" : 7326,
- "is-cluster-start" : true,
- "log-cluster" : 0
- },
- {
- "glyph" : 370,
- "width" : 8508,
- "x-offset" : 158,
- "is-cluster-start" : true,
- "log-cluster" : 1
+ {
+ "offset" : 4,
+ "length" : 3,
+ "text" : "‧",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "Latn",
+ "font" : {
+ "description" : "DejaVu Sans 11",
+ "checksum" : "69ccd07023a72ceb27a5e5c22f728627353b60a198170f5e58dd7014221abf01"
},
- {
- "glyph" : 358,
- "width" : 13628,
- "x-offset" : 158,
- "is-cluster-start" : true,
- "log-cluster" : 2
- },
- {
- "glyph" : 287,
- "width" : 8508,
- "x-offset" : 158,
- "is-cluster-start" : true,
- "log-cluster" : 3
- }
- ]
- },
- {
- "offset" : 4,
- "length" : 3,
- "text" : "‧",
- "bidi-level" : 0,
- "gravity" : "south",
- "language" : "en-us",
- "script" : "Latn",
- "font" : {
- "description" : "DejaVu Sans 11",
- "checksum" : "69ccd07023a72ceb27a5e5c22f728627353b60a198170f5e58dd7014221abf01",
- "matrix" : [
- 1,
- -0,
- -0,
- 1,
- 0,
- 0
+ "flags" : 0,
+ "y-offset" : 0,
+ "start-x-offset" : 0,
+ "end-x-offset" : 0,
+ "glyphs" : [
+ {
+ "glyph" : 2826,
+ "width" : 5120,
+ "is-cluster-start" : true,
+ "log-cluster" : 0
+ }
]
},
- "flags" : 0,
- "y-offset" : 0,
- "start-x-offset" : 0,
- "end-x-offset" : 0,
- "glyphs" : [
- {
- "glyph" : 2826,
- "width" : 5436,
- "x-offset" : 158,
- "is-cluster-start" : true,
- "log-cluster" : 0
- }
- ]
- },
- {
- "offset" : 7,
- "length" : 3,
- "text" : "bla",
- "bidi-level" : 0,
- "gravity" : "south",
- "language" : "en-us",
- "script" : "Latn",
- "font" : {
- "description" : "Cantarell 11",
- "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
- "variations" : {
- "wght" : 0
+ {
+ "offset" : 7,
+ "length" : 3,
+ "text" : "bla",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "Latn",
+ "font" : {
+ "description" : "Cantarell 11",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ }
},
- "matrix" : [
- 1,
- -0,
- -0,
- 1,
- 0,
- 0
+ "flags" : 0,
+ "y-offset" : 0,
+ "start-x-offset" : 0,
+ "end-x-offset" : 0,
+ "glyphs" : [
+ {
+ "glyph" : 272,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 0
+ },
+ {
+ "glyph" : 349,
+ "width" : 4096,
+ "is-cluster-start" : true,
+ "log-cluster" : 1
+ },
+ {
+ "glyph" : 244,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 2
+ }
]
},
- "flags" : 0,
- "y-offset" : 0,
- "start-x-offset" : 0,
- "end-x-offset" : 0,
- "glyphs" : [
- {
- "glyph" : 272,
- "width" : 8508,
- "x-offset" : 158,
- "is-cluster-start" : true,
- "log-cluster" : 0
- },
- {
- "glyph" : 349,
- "width" : 4412,
- "x-offset" : 158,
- "is-cluster-start" : true,
- "log-cluster" : 1
+ {
+ "offset" : 10,
+ "length" : 3,
+ "text" : "‧",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "Latn",
+ "font" : {
+ "description" : "DejaVu Sans 11",
+ "checksum" : "69ccd07023a72ceb27a5e5c22f728627353b60a198170f5e58dd7014221abf01"
},
- {
- "glyph" : 244,
- "width" : 8508,
- "x-offset" : 158,
- "is-cluster-start" : true,
- "log-cluster" : 2
- }
- ]
- },
- {
- "offset" : 10,
- "length" : 3,
- "text" : "‧",
- "bidi-level" : 0,
- "gravity" : "south",
- "language" : "en-us",
- "script" : "Latn",
- "font" : {
- "description" : "DejaVu Sans 11",
- "checksum" : "69ccd07023a72ceb27a5e5c22f728627353b60a198170f5e58dd7014221abf01",
- "matrix" : [
- 1,
- -0,
- -0,
- 1,
- 0,
- 0
+ "flags" : 0,
+ "y-offset" : 0,
+ "start-x-offset" : 0,
+ "end-x-offset" : 0,
+ "glyphs" : [
+ {
+ "glyph" : 2826,
+ "width" : 5120,
+ "is-cluster-start" : true,
+ "log-cluster" : 0
+ }
]
},
- "flags" : 0,
- "y-offset" : 0,
- "start-x-offset" : 0,
- "end-x-offset" : 0,
- "glyphs" : [
- {
- "glyph" : 2826,
- "width" : 5436,
- "x-offset" : 158,
- "is-cluster-start" : true,
- "log-cluster" : 0
- }
- ]
- },
- {
- "offset" : 13,
- "length" : 3,
- "text" : "bla",
- "bidi-level" : 0,
- "gravity" : "south",
- "language" : "en-us",
- "script" : "Latn",
- "font" : {
- "description" : "Cantarell 11",
- "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
- "variations" : {
- "wght" : 0
+ {
+ "offset" : 13,
+ "length" : 3,
+ "text" : "bla",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "Latn",
+ "font" : {
+ "description" : "Cantarell 11",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ }
},
- "matrix" : [
- 1,
- -0,
- -0,
- 1,
- 0,
- 0
+ "flags" : 0,
+ "y-offset" : 0,
+ "start-x-offset" : 0,
+ "end-x-offset" : 0,
+ "glyphs" : [
+ {
+ "glyph" : 272,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 0
+ },
+ {
+ "glyph" : 349,
+ "width" : 4096,
+ "is-cluster-start" : true,
+ "log-cluster" : 1
+ },
+ {
+ "glyph" : 244,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 2
+ }
]
},
- "flags" : 0,
- "y-offset" : 0,
- "start-x-offset" : 0,
- "end-x-offset" : 0,
- "glyphs" : [
- {
- "glyph" : 272,
- "width" : 8508,
- "x-offset" : 158,
- "is-cluster-start" : true,
- "log-cluster" : 0
+ {
+ "offset" : 16,
+ "length" : 3,
+ "text" : "‧",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "Latn",
+ "font" : {
+ "description" : "DejaVu Sans 11",
+ "checksum" : "69ccd07023a72ceb27a5e5c22f728627353b60a198170f5e58dd7014221abf01"
},
- {
- "glyph" : 349,
- "width" : 4412,
- "x-offset" : 158,
- "is-cluster-start" : true,
- "log-cluster" : 1
- },
- {
- "glyph" : 244,
- "width" : 8508,
- "x-offset" : 158,
- "is-cluster-start" : true,
- "log-cluster" : 2
- }
- ]
- },
- {
- "offset" : 16,
- "length" : 3,
- "text" : "‧",
- "bidi-level" : 0,
- "gravity" : "south",
- "language" : "en-us",
- "script" : "Latn",
- "font" : {
- "description" : "DejaVu Sans 11",
- "checksum" : "69ccd07023a72ceb27a5e5c22f728627353b60a198170f5e58dd7014221abf01",
- "matrix" : [
- 1,
- -0,
- -0,
- 1,
- 0,
- 0
+ "flags" : 4,
+ "y-offset" : 0,
+ "start-x-offset" : 0,
+ "end-x-offset" : 0,
+ "glyphs" : [
+ {
+ "glyph" : 2803,
+ "width" : 5120,
+ "is-cluster-start" : true,
+ "log-cluster" : 0
+ }
]
- },
- "flags" : 4,
- "y-offset" : 0,
- "start-x-offset" : 0,
- "end-x-offset" : 0,
- "glyphs" : [
- {
- "glyph" : 2803,
- "width" : 5278,
- "x-offset" : 158,
- "is-cluster-start" : true,
- "log-cluster" : 0
- }
- ]
- }
- ]
+ }
+ ]
+ }
},
{
- "start-index" : 19,
- "length" : 3,
- "paragraph-start" : false,
- "direction" : "ltr",
- "runs" : [
- {
- "offset" : 19,
- "length" : 3,
- "text" : "bla",
- "bidi-level" : 0,
- "gravity" : "south",
- "language" : "en-us",
- "script" : "Latn",
- "font" : {
- "description" : "Cantarell 11",
- "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
- "variations" : {
- "wght" : 0
+ "position" : [
+ 0,
+ 34816
+ ],
+ "line" : {
+ "start-index" : 19,
+ "length" : 3,
+ "start-offset" : 13,
+ "n-chars" : 3,
+ "wrapped" : false,
+ "ellipsized" : false,
+ "hyphenated" : false,
+ "justified" : false,
+ "paragraph-start" : false,
+ "paragraph-end" : true,
+ "direction" : "ltr",
+ "runs" : [
+ {
+ "offset" : 19,
+ "length" : 3,
+ "text" : "bla",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "Latn",
+ "font" : {
+ "description" : "Cantarell 11",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ }
},
- "matrix" : [
- 1,
- -0,
- -0,
- 1,
- 0,
- 0
+ "flags" : 0,
+ "y-offset" : 0,
+ "start-x-offset" : 0,
+ "end-x-offset" : 0,
+ "glyphs" : [
+ {
+ "glyph" : 272,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 0
+ },
+ {
+ "glyph" : 349,
+ "width" : 4096,
+ "is-cluster-start" : true,
+ "log-cluster" : 1
+ },
+ {
+ "glyph" : 244,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 2
+ }
]
- },
- "flags" : 0,
- "y-offset" : 0,
- "start-x-offset" : 0,
- "end-x-offset" : 0,
- "glyphs" : [
- {
- "glyph" : 272,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 0
- },
- {
- "glyph" : 349,
- "width" : 4096,
- "is-cluster-start" : true,
- "log-cluster" : 1
- },
- {
- "glyph" : 244,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 2
- }
- ]
- }
- ]
+ }
+ ]
+ }
}
]
}
diff --git a/tests/layouts/valid-18.layout b/tests/layouts/valid-18.layout
index 9779c127..77cfe7e7 100644
--- a/tests/layouts/valid-18.layout
+++ b/tests/layouts/valid-18.layout
@@ -25,725 +25,728 @@
}
],
"font" : "Cantarell 11",
+ "log-attrs" : [
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-start" : true,
+ "sentence-boundary" : true,
+ "sentence-start" : true,
+ "backspace-deletes-character" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "word-end" : true,
+ "expandable-space" : true,
+ "word-boundary" : true
+ },
+ {
+ "line-break" : true,
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-start" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "word-end" : true,
+ "expandable-space" : true,
+ "word-boundary" : true
+ },
+ {
+ "line-break" : true,
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-start" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "word-end" : true,
+ "sentence-end" : true,
+ "word-boundary" : true
+ },
+ {
+ "line-break" : true,
+ "mandatory-break" : true,
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-start" : true,
+ "sentence-boundary" : true,
+ "sentence-start" : true,
+ "backspace-deletes-character" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "word-end" : true,
+ "expandable-space" : true,
+ "word-boundary" : true
+ },
+ {
+ "line-break" : true,
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-start" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "line-break" : true,
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "line-break" : true,
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "word-end" : true,
+ "expandable-space" : true,
+ "word-boundary" : true
+ },
+ {
+ "line-break" : true,
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-start" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "backspace-deletes-character" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "backspace-deletes-character" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "line-break" : true,
+ "mandatory-break" : true,
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "word-end" : true,
+ "sentence-boundary" : true,
+ "sentence-end" : true,
+ "word-boundary" : true
+ }
+ ],
"output" : {
- "is-wrapped" : true,
- "is-ellipsized" : false,
+ "wrapped" : true,
+ "ellipsized" : false,
+ "hypenated" : false,
"unknown-glyphs" : 5,
"width" : 302080,
"height" : 38912,
- "log-attrs" : [
- {
- "char-break" : true,
- "cursor-position" : true,
- "word-start" : true,
- "sentence-boundary" : true,
- "sentence-start" : true,
- "backspace-deletes-character" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "word-end" : true,
- "expandable-space" : true,
- "word-boundary" : true
- },
- {
- "line-break" : true,
- "char-break" : true,
- "cursor-position" : true,
- "word-start" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "word-end" : true,
- "expandable-space" : true,
- "word-boundary" : true
- },
- {
- "line-break" : true,
- "char-break" : true,
- "cursor-position" : true,
- "word-start" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "word-end" : true,
- "sentence-end" : true,
- "word-boundary" : true
- },
- {
- "line-break" : true,
- "mandatory-break" : true,
- "char-break" : true,
- "cursor-position" : true,
- "word-start" : true,
- "sentence-boundary" : true,
- "sentence-start" : true,
- "backspace-deletes-character" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "word-end" : true,
- "expandable-space" : true,
- "word-boundary" : true
- },
- {
- "line-break" : true,
- "char-break" : true,
- "cursor-position" : true,
- "word-start" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "line-break" : true,
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "line-break" : true,
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "word-end" : true,
- "expandable-space" : true,
- "word-boundary" : true
- },
- {
- "line-break" : true,
- "char-break" : true,
- "cursor-position" : true,
- "word-start" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "backspace-deletes-character" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "backspace-deletes-character" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "line-break" : true,
- "mandatory-break" : true,
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "word-end" : true,
- "sentence-boundary" : true,
- "sentence-end" : true,
- "word-boundary" : true
- }
- ],
"lines" : [
{
- "start-index" : 0,
- "length" : 19,
- "paragraph-start" : true,
- "direction" : "ltr",
- "runs" : [
- {
- "offset" : 0,
- "length" : 16,
- "text" : "some line breaks",
- "bidi-level" : 0,
- "gravity" : "south",
- "language" : "en-us",
- "script" : "Latn",
- "font" : {
- "description" : "Cantarell 11",
- "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
- "variations" : {
- "wght" : 0
- },
- "matrix" : [
- 1,
- -0,
- -0,
- 1,
- 0,
- 0
+ "position" : [
+ 0,
+ 15360
+ ],
+ "line" : {
+ "start-index" : 0,
+ "length" : 19,
+ "start-offset" : 0,
+ "n-chars" : 17,
+ "wrapped" : true,
+ "ellipsized" : false,
+ "hyphenated" : false,
+ "justified" : false,
+ "paragraph-start" : true,
+ "paragraph-end" : false,
+ "direction" : "ltr",
+ "runs" : [
+ {
+ "offset" : 0,
+ "length" : 16,
+ "text" : "some line breaks",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "Latn",
+ "font" : {
+ "description" : "Cantarell 11",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ }
+ },
+ "flags" : 0,
+ "extra-attributes" : [
+ {
+ "end" : 57,
+ "type" : "show",
+ "value" : 7
+ }
+ ],
+ "y-offset" : 0,
+ "start-x-offset" : 0,
+ "end-x-offset" : 0,
+ "glyphs" : [
+ {
+ "glyph" : 417,
+ "width" : 7168,
+ "is-cluster-start" : true,
+ "log-cluster" : 0
+ },
+ {
+ "glyph" : 370,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 1
+ },
+ {
+ "glyph" : 358,
+ "width" : 13312,
+ "is-cluster-start" : true,
+ "log-cluster" : 2
+ },
+ {
+ "glyph" : 287,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 3
+ },
+ {
+ "glyph" : 1195,
+ "width" : 11264,
+ "is-cluster-start" : true,
+ "log-cluster" : 4
+ },
+ {
+ "glyph" : 349,
+ "width" : 4096,
+ "is-cluster-start" : true,
+ "log-cluster" : 5
+ },
+ {
+ "glyph" : 324,
+ "width" : 4096,
+ "is-cluster-start" : true,
+ "log-cluster" : 6
+ },
+ {
+ "glyph" : 360,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 7
+ },
+ {
+ "glyph" : 287,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 8
+ },
+ {
+ "glyph" : 1195,
+ "width" : 11264,
+ "is-cluster-start" : true,
+ "log-cluster" : 9
+ },
+ {
+ "glyph" : 272,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 10
+ },
+ {
+ "glyph" : 409,
+ "width" : 6144,
+ "is-cluster-start" : true,
+ "log-cluster" : 11
+ },
+ {
+ "glyph" : 287,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 12
+ },
+ {
+ "glyph" : 244,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 13
+ },
+ {
+ "glyph" : 345,
+ "width" : 7168,
+ "is-cluster-start" : true,
+ "log-cluster" : 14
+ },
+ {
+ "glyph" : 417,
+ "width" : 7168,
+ "is-cluster-start" : true,
+ "log-cluster" : 15
+ }
]
},
- "flags" : 0,
- "extra-attributes" : [
- {
- "end" : 57,
- "type" : "show",
- "value" : 7
- }
- ],
- "y-offset" : 0,
- "start-x-offset" : 0,
- "end-x-offset" : 0,
- "glyphs" : [
- {
- "glyph" : 417,
- "width" : 7168,
- "is-cluster-start" : true,
- "log-cluster" : 0
- },
- {
- "glyph" : 370,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 1
- },
- {
- "glyph" : 358,
- "width" : 13312,
- "is-cluster-start" : true,
- "log-cluster" : 2
- },
- {
- "glyph" : 287,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 3
- },
- {
- "glyph" : 1195,
- "width" : 11264,
- "is-cluster-start" : true,
- "log-cluster" : 4
- },
- {
- "glyph" : 349,
- "width" : 4096,
- "is-cluster-start" : true,
- "log-cluster" : 5
- },
- {
- "glyph" : 324,
- "width" : 4096,
- "is-cluster-start" : true,
- "log-cluster" : 6
- },
- {
- "glyph" : 360,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 7
- },
- {
- "glyph" : 287,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 8
- },
- {
- "glyph" : 1195,
- "width" : 11264,
- "is-cluster-start" : true,
- "log-cluster" : 9
- },
- {
- "glyph" : 272,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 10
- },
- {
- "glyph" : 409,
- "width" : 6144,
- "is-cluster-start" : true,
- "log-cluster" : 11
- },
- {
- "glyph" : 287,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 12
- },
- {
- "glyph" : 244,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 13
- },
- {
- "glyph" : 345,
- "width" : 7168,
- "is-cluster-start" : true,
- "log-cluster" : 14
- },
- {
- "glyph" : 417,
- "width" : 7168,
- "is-cluster-start" : true,
- "log-cluster" : 15
- }
- ]
- },
- {
- "offset" : 16,
- "length" : 3,
- "text" : "
",
- "bidi-level" : 0,
- "gravity" : "south",
- "language" : "en-us",
- "script" : "Latn",
- "font" : {
- "description" : "Cantarell 11",
- "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
- "variations" : {
- "wght" : 0
- },
- "matrix" : [
- 1,
- -0,
- -0,
- 1,
- 0,
- 0
+ {
+ "offset" : 16,
+ "length" : 3,
+ "text" : "
",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "Latn",
+ "font" : {
+ "description" : "Cantarell 11",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ }
+ },
+ "flags" : 0,
+ "extra-attributes" : [
+ {
+ "end" : 57,
+ "type" : "show",
+ "value" : 7
+ }
+ ],
+ "y-offset" : 0,
+ "start-x-offset" : 0,
+ "end-x-offset" : 0,
+ "glyphs" : [
+ {
+ "glyph" : 268443688,
+ "width" : 17408,
+ "is-cluster-start" : true,
+ "log-cluster" : 0
+ }
]
- },
- "flags" : 0,
- "extra-attributes" : [
- {
- "end" : 57,
- "type" : "show",
- "value" : 7
- }
- ],
- "y-offset" : 0,
- "start-x-offset" : 0,
- "end-x-offset" : 0,
- "glyphs" : [
- {
- "glyph" : 268443688,
- "width" : 17408,
- "is-cluster-start" : true,
- "log-cluster" : 0
- }
- ]
- }
- ]
- },
- {
- "start-index" : 19,
- "length" : 38,
- "paragraph-start" : false,
- "direction" : "ltr",
- "runs" : [
- {
- "offset" : 19,
- "length" : 38,
- "text" : "and miscellaneous ignorables",
- "bidi-level" : 0,
- "gravity" : "south",
- "language" : "en-us",
- "script" : "Latn",
- "font" : {
- "description" : "Cantarell 11",
- "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
- "variations" : {
- "wght" : 0
- },
- "matrix" : [
- 1,
- -0,
- -0,
- 1,
- 0,
- 0
+ }
+ ]
+ }
+ },
+ {
+ "position" : [
+ 0,
+ 34816
+ ],
+ "line" : {
+ "start-index" : 19,
+ "length" : 38,
+ "start-offset" : 17,
+ "n-chars" : 32,
+ "wrapped" : false,
+ "ellipsized" : false,
+ "hyphenated" : false,
+ "justified" : false,
+ "paragraph-start" : false,
+ "paragraph-end" : true,
+ "direction" : "ltr",
+ "runs" : [
+ {
+ "offset" : 19,
+ "length" : 38,
+ "text" : "and miscellaneous ignorables",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "Latn",
+ "font" : {
+ "description" : "Cantarell 11",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ }
+ },
+ "flags" : 0,
+ "extra-attributes" : [
+ {
+ "end" : 57,
+ "type" : "show",
+ "value" : 7
+ }
+ ],
+ "y-offset" : 0,
+ "start-x-offset" : 0,
+ "end-x-offset" : 0,
+ "glyphs" : [
+ {
+ "glyph" : 244,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 0
+ },
+ {
+ "glyph" : 360,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 1
+ },
+ {
+ "glyph" : 280,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 2
+ },
+ {
+ "glyph" : 1195,
+ "width" : 11264,
+ "is-cluster-start" : true,
+ "log-cluster" : 3
+ },
+ {
+ "glyph" : 358,
+ "width" : 13312,
+ "is-cluster-start" : true,
+ "log-cluster" : 4
+ },
+ {
+ "glyph" : 324,
+ "width" : 4096,
+ "is-cluster-start" : true,
+ "log-cluster" : 5
+ },
+ {
+ "glyph" : 417,
+ "width" : 7168,
+ "is-cluster-start" : true,
+ "log-cluster" : 6
+ },
+ {
+ "glyph" : 268435629,
+ "width" : 23552,
+ "is-cluster-start" : true,
+ "log-cluster" : 7
+ },
+ {
+ "glyph" : 273,
+ "width" : 7168,
+ "is-cluster-start" : true,
+ "log-cluster" : 9
+ },
+ {
+ "glyph" : 287,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 10
+ },
+ {
+ "glyph" : 268435629,
+ "width" : 23552,
+ "is-cluster-start" : true,
+ "log-cluster" : 11
+ },
+ {
+ "glyph" : 349,
+ "width" : 4096,
+ "is-cluster-start" : true,
+ "log-cluster" : 13
+ },
+ {
+ "glyph" : 349,
+ "width" : 4096,
+ "is-cluster-start" : true,
+ "log-cluster" : 14
+ },
+ {
+ "glyph" : 244,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 15
+ },
+ {
+ "glyph" : 360,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 16
+ },
+ {
+ "glyph" : 287,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 17
+ },
+ {
+ "glyph" : 370,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 18
+ },
+ {
+ "glyph" : 438,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 19
+ },
+ {
+ "glyph" : 417,
+ "width" : 7168,
+ "is-cluster-start" : true,
+ "log-cluster" : 20
+ },
+ {
+ "glyph" : 1195,
+ "width" : 11264,
+ "is-cluster-start" : true,
+ "log-cluster" : 21
+ },
+ {
+ "glyph" : 324,
+ "width" : 4096,
+ "is-cluster-start" : true,
+ "log-cluster" : 22
+ },
+ {
+ "glyph" : 312,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 23
+ },
+ {
+ "glyph" : 268500735,
+ "width" : 23552,
+ "is-cluster-start" : true,
+ "log-cluster" : 24
+ },
+ {
+ "glyph" : 360,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 27
+ },
+ {
+ "glyph" : 370,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 28
+ },
+ {
+ "glyph" : 409,
+ "width" : 6144,
+ "is-cluster-start" : true,
+ "log-cluster" : 29
+ },
+ {
+ "glyph" : 244,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 30
+ },
+ {
+ "glyph" : 268443660,
+ "width" : 17408,
+ "is-cluster-start" : true,
+ "log-cluster" : 31
+ },
+ {
+ "glyph" : 272,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 34
+ },
+ {
+ "glyph" : 349,
+ "width" : 4096,
+ "is-cluster-start" : true,
+ "log-cluster" : 35
+ },
+ {
+ "glyph" : 287,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 36
+ },
+ {
+ "glyph" : 417,
+ "width" : 7168,
+ "is-cluster-start" : true,
+ "log-cluster" : 37
+ }
]
- },
- "flags" : 0,
- "extra-attributes" : [
- {
- "end" : 57,
- "type" : "show",
- "value" : 7
- }
- ],
- "y-offset" : 0,
- "start-x-offset" : 0,
- "end-x-offset" : 0,
- "glyphs" : [
- {
- "glyph" : 244,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 0
- },
- {
- "glyph" : 360,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 1
- },
- {
- "glyph" : 280,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 2
- },
- {
- "glyph" : 1195,
- "width" : 11264,
- "is-cluster-start" : true,
- "log-cluster" : 3
- },
- {
- "glyph" : 358,
- "width" : 13312,
- "is-cluster-start" : true,
- "log-cluster" : 4
- },
- {
- "glyph" : 324,
- "width" : 4096,
- "is-cluster-start" : true,
- "log-cluster" : 5
- },
- {
- "glyph" : 417,
- "width" : 7168,
- "is-cluster-start" : true,
- "log-cluster" : 6
- },
- {
- "glyph" : 268435629,
- "width" : 23552,
- "is-cluster-start" : true,
- "log-cluster" : 7
- },
- {
- "glyph" : 273,
- "width" : 7168,
- "is-cluster-start" : true,
- "log-cluster" : 9
- },
- {
- "glyph" : 287,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 10
- },
- {
- "glyph" : 268435629,
- "width" : 23552,
- "is-cluster-start" : true,
- "log-cluster" : 11
- },
- {
- "glyph" : 349,
- "width" : 4096,
- "is-cluster-start" : true,
- "log-cluster" : 13
- },
- {
- "glyph" : 349,
- "width" : 4096,
- "is-cluster-start" : true,
- "log-cluster" : 14
- },
- {
- "glyph" : 244,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 15
- },
- {
- "glyph" : 360,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 16
- },
- {
- "glyph" : 287,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 17
- },
- {
- "glyph" : 370,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 18
- },
- {
- "glyph" : 438,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 19
- },
- {
- "glyph" : 417,
- "width" : 7168,
- "is-cluster-start" : true,
- "log-cluster" : 20
- },
- {
- "glyph" : 1195,
- "width" : 11264,
- "is-cluster-start" : true,
- "log-cluster" : 21
- },
- {
- "glyph" : 324,
- "width" : 4096,
- "is-cluster-start" : true,
- "log-cluster" : 22
- },
- {
- "glyph" : 312,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 23
- },
- {
- "glyph" : 268500735,
- "width" : 23552,
- "is-cluster-start" : true,
- "log-cluster" : 24
- },
- {
- "glyph" : 360,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 27
- },
- {
- "glyph" : 370,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 28
- },
- {
- "glyph" : 409,
- "width" : 6144,
- "is-cluster-start" : true,
- "log-cluster" : 29
- },
- {
- "glyph" : 244,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 30
- },
- {
- "glyph" : 268443660,
- "width" : 17408,
- "is-cluster-start" : true,
- "log-cluster" : 31
- },
- {
- "glyph" : 272,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 34
- },
- {
- "glyph" : 349,
- "width" : 4096,
- "is-cluster-start" : true,
- "log-cluster" : 35
- },
- {
- "glyph" : 287,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 36
- },
- {
- "glyph" : 417,
- "width" : 7168,
- "is-cluster-start" : true,
- "log-cluster" : 37
- }
- ]
- }
- ]
+ }
+ ]
+ }
}
]
}
diff --git a/tests/layouts/valid-19.layout b/tests/layouts/valid-19.layout
index 1c3dc8e5..4ad51403 100644
--- a/tests/layouts/valid-19.layout
+++ b/tests/layouts/valid-19.layout
@@ -18,599 +18,565 @@
"comment" : "Emoji",
"text" : "😊︎ 😊️ 🇩🇪 ✊ ✋🏾 0 # 🏴 ©",
"font" : "Cantarell 11",
+ "log-attrs" : [
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "sentence-boundary" : true,
+ "sentence-start" : true,
+ "backspace-deletes-character" : true,
+ "word-boundary" : true
+ },
+ {},
+ {
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "expandable-space" : true,
+ "word-boundary" : true
+ },
+ {
+ "line-break" : true,
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-boundary" : true
+ },
+ {},
+ {
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "expandable-space" : true,
+ "word-boundary" : true
+ },
+ {
+ "line-break" : true,
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-boundary" : true
+ },
+ {},
+ {
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "expandable-space" : true,
+ "word-boundary" : true
+ },
+ {
+ "line-break" : true,
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "expandable-space" : true,
+ "word-boundary" : true
+ },
+ {
+ "line-break" : true,
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-boundary" : true
+ },
+ {},
+ {
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "expandable-space" : true,
+ "word-boundary" : true
+ },
+ {
+ "line-break" : true,
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-start" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "word-end" : true,
+ "expandable-space" : true,
+ "word-boundary" : true
+ },
+ {
+ "line-break" : true,
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "expandable-space" : true,
+ "word-boundary" : true
+ },
+ {
+ "line-break" : true,
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-boundary" : true
+ },
+ {},
+ {},
+ {},
+ {},
+ {},
+ {
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "backspace-deletes-character" : true,
+ "expandable-space" : true,
+ "word-boundary" : true
+ },
+ {
+ "line-break" : true,
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-boundary" : true
+ },
+ {
+ "line-break" : true,
+ "mandatory-break" : true,
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "sentence-boundary" : true,
+ "sentence-end" : true,
+ "word-boundary" : true
+ }
+ ],
"output" : {
- "is-wrapped" : false,
- "is-ellipsized" : false,
+ "wrapped" : false,
+ "ellipsized" : false,
+ "hypenated" : false,
"unknown-glyphs" : 0,
"width" : 166912,
"height" : 19456,
- "log-attrs" : [
- {
- "char-break" : true,
- "cursor-position" : true,
- "sentence-boundary" : true,
- "sentence-start" : true,
- "backspace-deletes-character" : true,
- "word-boundary" : true
- },
- {},
- {
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "expandable-space" : true,
- "word-boundary" : true
- },
- {
- "line-break" : true,
- "char-break" : true,
- "cursor-position" : true,
- "word-boundary" : true
- },
- {},
- {
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "expandable-space" : true,
- "word-boundary" : true
- },
- {
- "line-break" : true,
- "char-break" : true,
- "cursor-position" : true,
- "word-boundary" : true
- },
- {},
- {
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "expandable-space" : true,
- "word-boundary" : true
- },
- {
- "line-break" : true,
- "char-break" : true,
- "cursor-position" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "expandable-space" : true,
- "word-boundary" : true
- },
- {
- "line-break" : true,
- "char-break" : true,
- "cursor-position" : true,
- "word-boundary" : true
- },
- {},
- {
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "expandable-space" : true,
- "word-boundary" : true
- },
- {
- "line-break" : true,
- "char-break" : true,
- "cursor-position" : true,
- "word-start" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "word-end" : true,
- "expandable-space" : true,
- "word-boundary" : true
- },
- {
- "line-break" : true,
- "char-break" : true,
- "cursor-position" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "expandable-space" : true,
- "word-boundary" : true
- },
- {
- "line-break" : true,
- "char-break" : true,
- "cursor-position" : true,
- "word-boundary" : true
- },
- {},
- {},
- {},
- {},
- {},
- {
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "backspace-deletes-character" : true,
- "expandable-space" : true,
- "word-boundary" : true
- },
- {
- "line-break" : true,
- "char-break" : true,
- "cursor-position" : true,
- "word-boundary" : true
- },
- {
- "line-break" : true,
- "mandatory-break" : true,
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "sentence-boundary" : true,
- "sentence-end" : true,
- "word-boundary" : true
- }
- ],
"lines" : [
{
- "start-index" : 0,
- "length" : 68,
- "paragraph-start" : true,
- "direction" : "ltr",
- "runs" : [
- {
- "offset" : 0,
- "length" : 8,
- "text" : "😊︎ ",
- "bidi-level" : 0,
- "gravity" : "south",
- "language" : "en-us",
- "script" : "Zyyy",
- "font" : {
- "description" : "DejaVu Sans 11",
- "checksum" : "69ccd07023a72ceb27a5e5c22f728627353b60a198170f5e58dd7014221abf01",
- "matrix" : [
- 1,
- -0,
- -0,
- 1,
- 0,
- 0
- ]
- },
- "flags" : 0,
- "y-offset" : 0,
- "start-x-offset" : 0,
- "end-x-offset" : 0,
- "glyphs" : [
- {
- "glyph" : 5867,
- "width" : 15360,
- "is-cluster-start" : true,
- "log-cluster" : 0
- },
- {
- "glyph" : 268435455,
- "width" : 0,
- "is-cluster-start" : true,
- "log-cluster" : 4
+ "position" : [
+ 0,
+ 15360
+ ],
+ "line" : {
+ "start-index" : 0,
+ "length" : 68,
+ "start-offset" : 0,
+ "n-chars" : 26,
+ "wrapped" : false,
+ "ellipsized" : false,
+ "hyphenated" : false,
+ "justified" : false,
+ "paragraph-start" : true,
+ "paragraph-end" : true,
+ "direction" : "ltr",
+ "runs" : [
+ {
+ "offset" : 0,
+ "length" : 8,
+ "text" : "😊︎ ",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "Zyyy",
+ "font" : {
+ "description" : "DejaVu Sans 11",
+ "checksum" : "69ccd07023a72ceb27a5e5c22f728627353b60a198170f5e58dd7014221abf01"
},
- {
- "glyph" : 3,
- "width" : 5120,
- "is-cluster-start" : true,
- "log-cluster" : 7
- }
- ]
- },
- {
- "offset" : 8,
- "length" : 7,
- "text" : "😊️",
- "bidi-level" : 0,
- "gravity" : "south",
- "language" : "en-us",
- "script" : "Zyyy",
- "font" : {
- "description" : "Noto Color Emoji 11",
- "checksum" : "054c1c2e2ca956b920262840dcad39dcf27bb88d6f70b892b2b1180de2c2ab47",
- "matrix" : [
- 0.13455956135321101,
- -0,
- -0,
- 0.13455956135321101,
- 0,
- 0
+ "flags" : 0,
+ "y-offset" : 0,
+ "start-x-offset" : 0,
+ "end-x-offset" : 0,
+ "glyphs" : [
+ {
+ "glyph" : 5867,
+ "width" : 15360,
+ "is-cluster-start" : true,
+ "log-cluster" : 0
+ },
+ {
+ "glyph" : 268435455,
+ "width" : 0,
+ "is-cluster-start" : true,
+ "log-cluster" : 4
+ },
+ {
+ "glyph" : 3,
+ "width" : 5120,
+ "is-cluster-start" : true,
+ "log-cluster" : 7
+ }
]
},
- "flags" : 0,
- "y-offset" : 0,
- "start-x-offset" : 0,
- "end-x-offset" : 0,
- "glyphs" : [
- {
- "glyph" : 13,
- "width" : 18432,
- "is-cluster-start" : true,
- "is-color" : true,
- "log-cluster" : 0
+ {
+ "offset" : 8,
+ "length" : 7,
+ "text" : "😊️",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "Zyyy",
+ "font" : {
+ "description" : "Noto Color Emoji 11",
+ "checksum" : "054c1c2e2ca956b920262840dcad39dcf27bb88d6f70b892b2b1180de2c2ab47",
+ "matrix" : [
+ 0.13455956135321101,
+ -0,
+ -0,
+ 0.13455956135321101,
+ 0,
+ 0
+ ]
},
- {
- "glyph" : 268435455,
- "width" : 0,
- "is-cluster-start" : true,
- "log-cluster" : 4
- }
- ]
- },
- {
- "offset" : 15,
- "length" : 1,
- "text" : " ",
- "bidi-level" : 0,
- "gravity" : "south",
- "language" : "en-us",
- "script" : "Zyyy",
- "font" : {
- "description" : "Cantarell 11",
- "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
- "variations" : {
- "wght" : 0
- },
- "matrix" : [
- 1,
- -0,
- -0,
- 1,
- 0,
- 0
+ "flags" : 0,
+ "y-offset" : 0,
+ "start-x-offset" : 0,
+ "end-x-offset" : 0,
+ "glyphs" : [
+ {
+ "glyph" : 13,
+ "width" : 18432,
+ "is-cluster-start" : true,
+ "is-color" : true,
+ "log-cluster" : 0
+ },
+ {
+ "glyph" : 268435455,
+ "width" : 0,
+ "is-cluster-start" : true,
+ "log-cluster" : 4
+ }
]
},
- "flags" : 0,
- "y-offset" : 0,
- "start-x-offset" : 0,
- "end-x-offset" : 0,
- "glyphs" : [
- {
- "glyph" : 1109,
- "width" : 3072,
- "is-cluster-start" : true,
- "log-cluster" : 0
- }
- ]
- },
- {
- "offset" : 16,
- "length" : 8,
- "text" : "🇩🇪",
- "bidi-level" : 0,
- "gravity" : "south",
- "language" : "en-us",
- "script" : "Zyyy",
- "font" : {
- "description" : "Noto Color Emoji 11",
- "checksum" : "054c1c2e2ca956b920262840dcad39dcf27bb88d6f70b892b2b1180de2c2ab47",
- "matrix" : [
- 0.13455956135321101,
- -0,
- -0,
- 0.13455956135321101,
- 0,
- 0
+ {
+ "offset" : 15,
+ "length" : 1,
+ "text" : " ",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "Zyyy",
+ "font" : {
+ "description" : "Cantarell 11",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ }
+ },
+ "flags" : 0,
+ "y-offset" : 0,
+ "start-x-offset" : 0,
+ "end-x-offset" : 0,
+ "glyphs" : [
+ {
+ "glyph" : 1109,
+ "width" : 3072,
+ "is-cluster-start" : true,
+ "log-cluster" : 0
+ }
]
},
- "flags" : 0,
- "y-offset" : 0,
- "start-x-offset" : 0,
- "end-x-offset" : 0,
- "glyphs" : [
- {
- "glyph" : 22,
- "width" : 18432,
- "is-cluster-start" : true,
- "is-color" : true,
- "log-cluster" : 0
- }
- ]
- },
- {
- "offset" : 24,
- "length" : 1,
- "text" : " ",
- "bidi-level" : 0,
- "gravity" : "south",
- "language" : "en-us",
- "script" : "Zyyy",
- "font" : {
- "description" : "Cantarell 11",
- "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
- "variations" : {
- "wght" : 0
+ {
+ "offset" : 16,
+ "length" : 8,
+ "text" : "🇩🇪",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "Zyyy",
+ "font" : {
+ "description" : "Noto Color Emoji 11",
+ "checksum" : "054c1c2e2ca956b920262840dcad39dcf27bb88d6f70b892b2b1180de2c2ab47",
+ "matrix" : [
+ 0.13455956135321101,
+ -0,
+ -0,
+ 0.13455956135321101,
+ 0,
+ 0
+ ]
},
- "matrix" : [
- 1,
- -0,
- -0,
- 1,
- 0,
- 0
+ "flags" : 0,
+ "y-offset" : 0,
+ "start-x-offset" : 0,
+ "end-x-offset" : 0,
+ "glyphs" : [
+ {
+ "glyph" : 22,
+ "width" : 18432,
+ "is-cluster-start" : true,
+ "is-color" : true,
+ "log-cluster" : 0
+ }
]
},
- "flags" : 0,
- "y-offset" : 0,
- "start-x-offset" : 0,
- "end-x-offset" : 0,
- "glyphs" : [
- {
- "glyph" : 1109,
- "width" : 3072,
- "is-cluster-start" : true,
- "log-cluster" : 0
- }
- ]
- },
- {
- "offset" : 25,
- "length" : 3,
- "text" : "✊",
- "bidi-level" : 0,
- "gravity" : "south",
- "language" : "en-us",
- "script" : "Zyyy",
- "font" : {
- "description" : "Noto Color Emoji 11",
- "checksum" : "054c1c2e2ca956b920262840dcad39dcf27bb88d6f70b892b2b1180de2c2ab47",
- "matrix" : [
- 0.13455956135321101,
- -0,
- -0,
- 0.13455956135321101,
- 0,
- 0
+ {
+ "offset" : 24,
+ "length" : 1,
+ "text" : " ",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "Zyyy",
+ "font" : {
+ "description" : "Cantarell 11",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ }
+ },
+ "flags" : 0,
+ "y-offset" : 0,
+ "start-x-offset" : 0,
+ "end-x-offset" : 0,
+ "glyphs" : [
+ {
+ "glyph" : 1109,
+ "width" : 3072,
+ "is-cluster-start" : true,
+ "log-cluster" : 0
+ }
]
},
- "flags" : 0,
- "y-offset" : 0,
- "start-x-offset" : 0,
- "end-x-offset" : 0,
- "glyphs" : [
- {
- "glyph" : 6,
- "width" : 18432,
- "is-cluster-start" : true,
- "is-color" : true,
- "log-cluster" : 0
- }
- ]
- },
- {
- "offset" : 28,
- "length" : 1,
- "text" : " ",
- "bidi-level" : 0,
- "gravity" : "south",
- "language" : "en-us",
- "script" : "Zyyy",
- "font" : {
- "description" : "Cantarell 11",
- "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
- "variations" : {
- "wght" : 0
+ {
+ "offset" : 25,
+ "length" : 3,
+ "text" : "✊",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "Zyyy",
+ "font" : {
+ "description" : "Noto Color Emoji 11",
+ "checksum" : "054c1c2e2ca956b920262840dcad39dcf27bb88d6f70b892b2b1180de2c2ab47",
+ "matrix" : [
+ 0.13455956135321101,
+ -0,
+ -0,
+ 0.13455956135321101,
+ 0,
+ 0
+ ]
},
- "matrix" : [
- 1,
- -0,
- -0,
- 1,
- 0,
- 0
+ "flags" : 0,
+ "y-offset" : 0,
+ "start-x-offset" : 0,
+ "end-x-offset" : 0,
+ "glyphs" : [
+ {
+ "glyph" : 6,
+ "width" : 18432,
+ "is-cluster-start" : true,
+ "is-color" : true,
+ "log-cluster" : 0
+ }
]
},
- "flags" : 0,
- "y-offset" : 0,
- "start-x-offset" : 0,
- "end-x-offset" : 0,
- "glyphs" : [
- {
- "glyph" : 1109,
- "width" : 3072,
- "is-cluster-start" : true,
- "log-cluster" : 0
- }
- ]
- },
- {
- "offset" : 29,
- "length" : 7,
- "text" : "✋🏾",
- "bidi-level" : 0,
- "gravity" : "south",
- "language" : "en-us",
- "script" : "Zyyy",
- "font" : {
- "description" : "Noto Color Emoji 11",
- "checksum" : "054c1c2e2ca956b920262840dcad39dcf27bb88d6f70b892b2b1180de2c2ab47",
- "matrix" : [
- 0.13455956135321101,
- -0,
- -0,
- 0.13455956135321101,
- 0,
- 0
+ {
+ "offset" : 28,
+ "length" : 1,
+ "text" : " ",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "Zyyy",
+ "font" : {
+ "description" : "Cantarell 11",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ }
+ },
+ "flags" : 0,
+ "y-offset" : 0,
+ "start-x-offset" : 0,
+ "end-x-offset" : 0,
+ "glyphs" : [
+ {
+ "glyph" : 1109,
+ "width" : 3072,
+ "is-cluster-start" : true,
+ "log-cluster" : 0
+ }
]
},
- "flags" : 0,
- "y-offset" : 0,
- "start-x-offset" : 0,
- "end-x-offset" : 0,
- "glyphs" : [
- {
- "glyph" : 21,
- "width" : 18432,
- "is-cluster-start" : true,
- "is-color" : true,
- "log-cluster" : 0
- }
- ]
- },
- {
- "offset" : 36,
- "length" : 5,
- "text" : " 0 # ",
- "bidi-level" : 0,
- "gravity" : "south",
- "language" : "en-us",
- "script" : "Zyyy",
- "font" : {
- "description" : "Cantarell 11",
- "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
- "variations" : {
- "wght" : 0
+ {
+ "offset" : 29,
+ "length" : 7,
+ "text" : "✋🏾",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "Zyyy",
+ "font" : {
+ "description" : "Noto Color Emoji 11",
+ "checksum" : "054c1c2e2ca956b920262840dcad39dcf27bb88d6f70b892b2b1180de2c2ab47",
+ "matrix" : [
+ 0.13455956135321101,
+ -0,
+ -0,
+ 0.13455956135321101,
+ 0,
+ 0
+ ]
},
- "matrix" : [
- 1,
- -0,
- -0,
- 1,
- 0,
- 0
+ "flags" : 0,
+ "y-offset" : 0,
+ "start-x-offset" : 0,
+ "end-x-offset" : 0,
+ "glyphs" : [
+ {
+ "glyph" : 21,
+ "width" : 18432,
+ "is-cluster-start" : true,
+ "is-color" : true,
+ "log-cluster" : 0
+ }
]
},
- "flags" : 0,
- "y-offset" : 0,
- "start-x-offset" : 0,
- "end-x-offset" : 0,
- "glyphs" : [
- {
- "glyph" : 1109,
- "width" : 3072,
- "is-cluster-start" : true,
- "log-cluster" : 0
- },
- {
- "glyph" : 964,
- "width" : 9216,
- "is-cluster-start" : true,
- "log-cluster" : 1
- },
- {
- "glyph" : 1109,
- "width" : 3072,
- "is-cluster-start" : true,
- "log-cluster" : 2
+ {
+ "offset" : 36,
+ "length" : 5,
+ "text" : " 0 # ",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "Zyyy",
+ "font" : {
+ "description" : "Cantarell 11",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ }
},
- {
- "glyph" : 1070,
- "width" : 10240,
- "is-cluster-start" : true,
- "log-cluster" : 3
- },
- {
- "glyph" : 1109,
- "width" : 3072,
- "is-cluster-start" : true,
- "log-cluster" : 4
- }
- ]
- },
- {
- "offset" : 41,
- "length" : 24,
- "text" : "🏴",
- "bidi-level" : 0,
- "gravity" : "south",
- "language" : "en-us",
- "script" : "Zyyy",
- "font" : {
- "description" : "Noto Color Emoji 11",
- "checksum" : "054c1c2e2ca956b920262840dcad39dcf27bb88d6f70b892b2b1180de2c2ab47",
- "matrix" : [
- 0.13455956135321101,
- -0,
- -0,
- 0.13455956135321101,
- 0,
- 0
+ "flags" : 0,
+ "y-offset" : 0,
+ "start-x-offset" : 0,
+ "end-x-offset" : 0,
+ "glyphs" : [
+ {
+ "glyph" : 1109,
+ "width" : 3072,
+ "is-cluster-start" : true,
+ "log-cluster" : 0
+ },
+ {
+ "glyph" : 964,
+ "width" : 9216,
+ "is-cluster-start" : true,
+ "log-cluster" : 1
+ },
+ {
+ "glyph" : 1109,
+ "width" : 3072,
+ "is-cluster-start" : true,
+ "log-cluster" : 2
+ },
+ {
+ "glyph" : 1070,
+ "width" : 10240,
+ "is-cluster-start" : true,
+ "log-cluster" : 3
+ },
+ {
+ "glyph" : 1109,
+ "width" : 3072,
+ "is-cluster-start" : true,
+ "log-cluster" : 4
+ }
]
},
- "flags" : 0,
- "y-offset" : 0,
- "start-x-offset" : 0,
- "end-x-offset" : 0,
- "glyphs" : [
- {
- "glyph" : 10,
- "width" : 18432,
- "is-cluster-start" : true,
- "is-color" : true,
- "log-cluster" : 0
- },
- {
- "glyph" : 268435455,
- "width" : 0,
- "is-cluster-start" : true,
- "log-cluster" : 16
+ {
+ "offset" : 41,
+ "length" : 24,
+ "text" : "🏴",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "Zyyy",
+ "font" : {
+ "description" : "Noto Color Emoji 11",
+ "checksum" : "054c1c2e2ca956b920262840dcad39dcf27bb88d6f70b892b2b1180de2c2ab47",
+ "matrix" : [
+ 0.13455956135321101,
+ -0,
+ -0,
+ 0.13455956135321101,
+ 0,
+ 0
+ ]
},
- {
- "glyph" : 268435455,
- "width" : 0,
- "is-cluster-start" : true,
- "log-cluster" : 20
- }
- ]
- },
- {
- "offset" : 65,
- "length" : 3,
- "text" : " ©",
- "bidi-level" : 0,
- "gravity" : "south",
- "language" : "en-us",
- "script" : "Zyyy",
- "font" : {
- "description" : "Cantarell 11",
- "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
- "variations" : {
- "wght" : 0
- },
- "matrix" : [
- 1,
- -0,
- -0,
- 1,
- 0,
- 0
+ "flags" : 0,
+ "y-offset" : 0,
+ "start-x-offset" : 0,
+ "end-x-offset" : 0,
+ "glyphs" : [
+ {
+ "glyph" : 10,
+ "width" : 18432,
+ "is-cluster-start" : true,
+ "is-color" : true,
+ "log-cluster" : 0
+ },
+ {
+ "glyph" : 268435455,
+ "width" : 0,
+ "is-cluster-start" : true,
+ "log-cluster" : 16
+ },
+ {
+ "glyph" : 268435455,
+ "width" : 0,
+ "is-cluster-start" : true,
+ "log-cluster" : 20
+ }
]
},
- "flags" : 0,
- "y-offset" : 0,
- "start-x-offset" : 0,
- "end-x-offset" : 0,
- "glyphs" : [
- {
- "glyph" : 1109,
- "width" : 3072,
- "is-cluster-start" : true,
- "log-cluster" : 0
+ {
+ "offset" : 65,
+ "length" : 3,
+ "text" : " ©",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "Zyyy",
+ "font" : {
+ "description" : "Cantarell 11",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ }
},
- {
- "glyph" : 1182,
- "width" : 13312,
- "is-cluster-start" : true,
- "log-cluster" : 1
- }
- ]
- }
- ]
+ "flags" : 0,
+ "y-offset" : 0,
+ "start-x-offset" : 0,
+ "end-x-offset" : 0,
+ "glyphs" : [
+ {
+ "glyph" : 1109,
+ "width" : 3072,
+ "is-cluster-start" : true,
+ "log-cluster" : 0
+ },
+ {
+ "glyph" : 1182,
+ "width" : 13312,
+ "is-cluster-start" : true,
+ "log-cluster" : 1
+ }
+ ]
+ }
+ ]
+ }
}
]
}
diff --git a/tests/layouts/valid-2.layout b/tests/layouts/valid-2.layout
index 611f88ba..8d06d1d2 100644
--- a/tests/layouts/valid-2.layout
+++ b/tests/layouts/valid-2.layout
@@ -32,572 +32,546 @@
}
],
"font" : "Cantarell 11",
+ "log-attrs" : [
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-start" : true,
+ "sentence-boundary" : true,
+ "sentence-start" : true,
+ "backspace-deletes-character" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "word-end" : true,
+ "expandable-space" : true,
+ "word-boundary" : true
+ },
+ {
+ "line-break" : true,
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-start" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "word-end" : true,
+ "expandable-space" : true,
+ "word-boundary" : true
+ },
+ {
+ "line-break" : true,
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-start" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "word-end" : true,
+ "expandable-space" : true,
+ "word-boundary" : true
+ },
+ {
+ "line-break" : true,
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-start" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "word-end" : true,
+ "expandable-space" : true,
+ "word-boundary" : true
+ },
+ {
+ "line-break" : true,
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-start" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "word-end" : true,
+ "expandable-space" : true,
+ "word-boundary" : true
+ },
+ {
+ "line-break" : true,
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-start" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "line-break" : true,
+ "mandatory-break" : true,
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "word-end" : true,
+ "sentence-boundary" : true,
+ "sentence-end" : true,
+ "word-boundary" : true
+ }
+ ],
"output" : {
- "is-wrapped" : false,
- "is-ellipsized" : false,
+ "wrapped" : false,
+ "ellipsized" : false,
+ "hypenated" : false,
"unknown-glyphs" : 0,
"width" : 200704,
"height" : 19456,
- "log-attrs" : [
- {
- "char-break" : true,
- "cursor-position" : true,
- "word-start" : true,
- "sentence-boundary" : true,
- "sentence-start" : true,
- "backspace-deletes-character" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "word-end" : true,
- "expandable-space" : true,
- "word-boundary" : true
- },
- {
- "line-break" : true,
- "char-break" : true,
- "cursor-position" : true,
- "word-start" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "word-end" : true,
- "expandable-space" : true,
- "word-boundary" : true
- },
- {
- "line-break" : true,
- "char-break" : true,
- "cursor-position" : true,
- "word-start" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "word-end" : true,
- "expandable-space" : true,
- "word-boundary" : true
- },
- {
- "line-break" : true,
- "char-break" : true,
- "cursor-position" : true,
- "word-start" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "word-end" : true,
- "expandable-space" : true,
- "word-boundary" : true
- },
- {
- "line-break" : true,
- "char-break" : true,
- "cursor-position" : true,
- "word-start" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "word-end" : true,
- "expandable-space" : true,
- "word-boundary" : true
- },
- {
- "line-break" : true,
- "char-break" : true,
- "cursor-position" : true,
- "word-start" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "line-break" : true,
- "mandatory-break" : true,
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "word-end" : true,
- "sentence-boundary" : true,
- "sentence-end" : true,
- "word-boundary" : true
- }
- ],
"lines" : [
{
- "start-index" : 0,
- "length" : 32,
- "paragraph-start" : true,
- "direction" : "ltr",
- "runs" : [
- {
- "offset" : 0,
- "length" : 9,
- "text" : "test the ",
- "bidi-level" : 0,
- "gravity" : "south",
- "language" : "en-us",
- "script" : "Latn",
- "font" : {
- "description" : "Cantarell 11",
- "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
- "variations" : {
- "wght" : 0
- },
- "matrix" : [
- 1,
- -0,
- -0,
- 1,
- 0,
- 0
+ "position" : [
+ 0,
+ 15360
+ ],
+ "line" : {
+ "start-index" : 0,
+ "length" : 32,
+ "start-offset" : 0,
+ "n-chars" : 32,
+ "wrapped" : false,
+ "ellipsized" : false,
+ "hyphenated" : false,
+ "justified" : false,
+ "paragraph-start" : true,
+ "paragraph-end" : true,
+ "direction" : "ltr",
+ "runs" : [
+ {
+ "offset" : 0,
+ "length" : 9,
+ "text" : "test the ",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "Latn",
+ "font" : {
+ "description" : "Cantarell 11",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ }
+ },
+ "flags" : 0,
+ "y-offset" : 0,
+ "start-x-offset" : 0,
+ "end-x-offset" : 0,
+ "glyphs" : [
+ {
+ "glyph" : 430,
+ "width" : 5120,
+ "is-cluster-start" : true,
+ "log-cluster" : 0
+ },
+ {
+ "glyph" : 287,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 1
+ },
+ {
+ "glyph" : 417,
+ "width" : 7168,
+ "is-cluster-start" : true,
+ "log-cluster" : 2
+ },
+ {
+ "glyph" : 430,
+ "width" : 5120,
+ "is-cluster-start" : true,
+ "log-cluster" : 3
+ },
+ {
+ "glyph" : 1109,
+ "width" : 3072,
+ "is-cluster-start" : true,
+ "log-cluster" : 4
+ },
+ {
+ "glyph" : 430,
+ "width" : 5120,
+ "is-cluster-start" : true,
+ "log-cluster" : 5
+ },
+ {
+ "glyph" : 319,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 6
+ },
+ {
+ "glyph" : 287,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 7
+ },
+ {
+ "glyph" : 1109,
+ "width" : 3072,
+ "is-cluster-start" : true,
+ "log-cluster" : 8
+ }
]
},
- "flags" : 0,
- "y-offset" : 0,
- "start-x-offset" : 0,
- "end-x-offset" : 0,
- "glyphs" : [
- {
- "glyph" : 430,
- "width" : 5120,
- "is-cluster-start" : true,
- "log-cluster" : 0
- },
- {
- "glyph" : 287,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 1
- },
- {
- "glyph" : 417,
- "width" : 7168,
- "is-cluster-start" : true,
- "log-cluster" : 2
- },
- {
- "glyph" : 430,
- "width" : 5120,
- "is-cluster-start" : true,
- "log-cluster" : 3
- },
- {
- "glyph" : 1109,
- "width" : 3072,
- "is-cluster-start" : true,
- "log-cluster" : 4
- },
- {
- "glyph" : 430,
- "width" : 5120,
- "is-cluster-start" : true,
- "log-cluster" : 5
- },
- {
- "glyph" : 319,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 6
- },
- {
- "glyph" : 287,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 7
- },
- {
- "glyph" : 1109,
- "width" : 3072,
- "is-cluster-start" : true,
- "log-cluster" : 8
- }
- ]
- },
- {
- "offset" : 9,
- "length" : 4,
- "text" : "blue",
- "bidi-level" : 0,
- "gravity" : "south",
- "language" : "en-us",
- "script" : "Latn",
- "font" : {
- "description" : "Cantarell 11",
- "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
- "variations" : {
- "wght" : 0
- },
- "matrix" : [
- 1,
- -0,
- -0,
- 1,
- 0,
- 0
+ {
+ "offset" : 9,
+ "length" : 4,
+ "text" : "blue",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "Latn",
+ "font" : {
+ "description" : "Cantarell 11",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ }
+ },
+ "flags" : 0,
+ "y-offset" : 0,
+ "start-x-offset" : 0,
+ "end-x-offset" : 0,
+ "glyphs" : [
+ {
+ "glyph" : 272,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 0
+ },
+ {
+ "glyph" : 349,
+ "width" : 4096,
+ "is-cluster-start" : true,
+ "log-cluster" : 1
+ },
+ {
+ "glyph" : 438,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 2
+ },
+ {
+ "glyph" : 287,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 3
+ }
]
},
- "flags" : 0,
- "y-offset" : 0,
- "start-x-offset" : 0,
- "end-x-offset" : 0,
- "glyphs" : [
- {
- "glyph" : 272,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 0
- },
- {
- "glyph" : 349,
- "width" : 4096,
- "is-cluster-start" : true,
- "log-cluster" : 1
- },
- {
- "glyph" : 438,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 2
- },
- {
- "glyph" : 287,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 3
- }
- ]
- },
- {
- "offset" : 13,
- "length" : 7,
- "text" : " drink ",
- "bidi-level" : 0,
- "gravity" : "south",
- "language" : "en-us",
- "script" : "Latn",
- "font" : {
- "description" : "Cantarell 11",
- "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
- "variations" : {
- "wght" : 0
- },
- "matrix" : [
- 1,
- -0,
- -0,
- 1,
- 0,
- 0
+ {
+ "offset" : 13,
+ "length" : 7,
+ "text" : " drink ",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "Latn",
+ "font" : {
+ "description" : "Cantarell 11",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ }
+ },
+ "flags" : 0,
+ "y-offset" : 0,
+ "start-x-offset" : 0,
+ "end-x-offset" : 0,
+ "glyphs" : [
+ {
+ "glyph" : 1109,
+ "width" : 3072,
+ "is-cluster-start" : true,
+ "log-cluster" : 0
+ },
+ {
+ "glyph" : 280,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 1
+ },
+ {
+ "glyph" : 409,
+ "width" : 6144,
+ "is-cluster-start" : true,
+ "log-cluster" : 2
+ },
+ {
+ "glyph" : 324,
+ "width" : 4096,
+ "is-cluster-start" : true,
+ "log-cluster" : 3
+ },
+ {
+ "glyph" : 360,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 4
+ },
+ {
+ "glyph" : 345,
+ "width" : 7168,
+ "is-cluster-start" : true,
+ "log-cluster" : 5
+ },
+ {
+ "glyph" : 1109,
+ "width" : 3072,
+ "is-cluster-start" : true,
+ "log-cluster" : 6
+ }
]
},
- "flags" : 0,
- "y-offset" : 0,
- "start-x-offset" : 0,
- "end-x-offset" : 0,
- "glyphs" : [
- {
- "glyph" : 1109,
- "width" : 3072,
- "is-cluster-start" : true,
- "log-cluster" : 0
- },
- {
- "glyph" : 280,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 1
- },
- {
- "glyph" : 409,
- "width" : 6144,
- "is-cluster-start" : true,
- "log-cluster" : 2
- },
- {
- "glyph" : 324,
- "width" : 4096,
- "is-cluster-start" : true,
- "log-cluster" : 3
- },
- {
- "glyph" : 360,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 4
- },
- {
- "glyph" : 345,
- "width" : 7168,
- "is-cluster-start" : true,
- "log-cluster" : 5
- },
- {
- "glyph" : 1109,
- "width" : 3072,
- "is-cluster-start" : true,
- "log-cluster" : 6
- }
- ]
- },
- {
- "offset" : 20,
- "length" : 5,
- "text" : "after",
- "bidi-level" : 0,
- "gravity" : "south",
- "language" : "en-us",
- "script" : "Latn",
- "font" : {
- "description" : "Cantarell 11",
- "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
- "variations" : {
- "wght" : 0
- },
- "matrix" : [
- 1,
- -0,
- -0,
- 1,
- 0,
- 0
+ {
+ "offset" : 20,
+ "length" : 5,
+ "text" : "after",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "Latn",
+ "font" : {
+ "description" : "Cantarell 11",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ }
+ },
+ "flags" : 0,
+ "extra-attributes" : [
+ {
+ "start" : 20,
+ "end" : 25,
+ "type" : "underline",
+ "value" : "single"
+ }
+ ],
+ "y-offset" : 0,
+ "start-x-offset" : 0,
+ "end-x-offset" : 0,
+ "glyphs" : [
+ {
+ "glyph" : 244,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 0
+ },
+ {
+ "glyph" : 311,
+ "width" : 5120,
+ "is-cluster-start" : true,
+ "log-cluster" : 1
+ },
+ {
+ "glyph" : 430,
+ "width" : 5120,
+ "is-cluster-start" : true,
+ "log-cluster" : 2
+ },
+ {
+ "glyph" : 287,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 3
+ },
+ {
+ "glyph" : 409,
+ "width" : 6144,
+ "is-cluster-start" : true,
+ "log-cluster" : 4
+ }
]
},
- "flags" : 0,
- "extra-attributes" : [
- {
- "start" : 20,
- "end" : 25,
- "type" : "underline",
- "value" : "single"
- }
- ],
- "y-offset" : 0,
- "start-x-offset" : 0,
- "end-x-offset" : 0,
- "glyphs" : [
- {
- "glyph" : 244,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 0
- },
- {
- "glyph" : 311,
- "width" : 5120,
- "is-cluster-start" : true,
- "log-cluster" : 1
- },
- {
- "glyph" : 430,
- "width" : 5120,
- "is-cluster-start" : true,
- "log-cluster" : 2
- },
- {
- "glyph" : 287,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 3
- },
- {
- "glyph" : 409,
- "width" : 6144,
- "is-cluster-start" : true,
- "log-cluster" : 4
- }
- ]
- },
- {
- "offset" : 25,
- "length" : 7,
- "text" : " dinner",
- "bidi-level" : 0,
- "gravity" : "south",
- "language" : "en-us",
- "script" : "Latn",
- "font" : {
- "description" : "Cantarell 11",
- "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
- "variations" : {
- "wght" : 0
- },
- "matrix" : [
- 1,
- -0,
- -0,
- 1,
- 0,
- 0
+ {
+ "offset" : 25,
+ "length" : 7,
+ "text" : " dinner",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "Latn",
+ "font" : {
+ "description" : "Cantarell 11",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ }
+ },
+ "flags" : 0,
+ "y-offset" : 0,
+ "start-x-offset" : 0,
+ "end-x-offset" : 0,
+ "glyphs" : [
+ {
+ "glyph" : 1109,
+ "width" : 3072,
+ "is-cluster-start" : true,
+ "log-cluster" : 0
+ },
+ {
+ "glyph" : 280,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 1
+ },
+ {
+ "glyph" : 324,
+ "width" : 4096,
+ "is-cluster-start" : true,
+ "log-cluster" : 2
+ },
+ {
+ "glyph" : 360,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 3
+ },
+ {
+ "glyph" : 360,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 4
+ },
+ {
+ "glyph" : 287,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 5
+ },
+ {
+ "glyph" : 409,
+ "width" : 6144,
+ "is-cluster-start" : true,
+ "log-cluster" : 6
+ }
]
- },
- "flags" : 0,
- "y-offset" : 0,
- "start-x-offset" : 0,
- "end-x-offset" : 0,
- "glyphs" : [
- {
- "glyph" : 1109,
- "width" : 3072,
- "is-cluster-start" : true,
- "log-cluster" : 0
- },
- {
- "glyph" : 280,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 1
- },
- {
- "glyph" : 324,
- "width" : 4096,
- "is-cluster-start" : true,
- "log-cluster" : 2
- },
- {
- "glyph" : 360,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 3
- },
- {
- "glyph" : 360,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 4
- },
- {
- "glyph" : 287,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 5
- },
- {
- "glyph" : 409,
- "width" : 6144,
- "is-cluster-start" : true,
- "log-cluster" : 6
- }
- ]
- }
- ]
+ }
+ ]
+ }
}
]
}
diff --git a/tests/layouts/valid-20.layout b/tests/layouts/valid-20.layout
index 53d9a7b5..ebc1cab5 100644
--- a/tests/layouts/valid-20.layout
+++ b/tests/layouts/valid-20.layout
@@ -36,189 +36,187 @@
}
],
"font" : "Cantarell 11",
+ "log-attrs" : [
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-start" : true,
+ "sentence-boundary" : true,
+ "sentence-start" : true,
+ "backspace-deletes-character" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "line-break" : true,
+ "mandatory-break" : true,
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "word-end" : true,
+ "sentence-boundary" : true,
+ "sentence-end" : true,
+ "word-boundary" : true
+ }
+ ],
"output" : {
- "is-wrapped" : false,
- "is-ellipsized" : false,
+ "wrapped" : false,
+ "ellipsized" : false,
+ "hypenated" : false,
"unknown-glyphs" : 0,
- "width" : 67584,
+ "width" : 76800,
"height" : 25600,
- "log-attrs" : [
- {
- "char-break" : true,
- "cursor-position" : true,
- "word-start" : true,
- "sentence-boundary" : true,
- "sentence-start" : true,
- "backspace-deletes-character" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "line-break" : true,
- "mandatory-break" : true,
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "word-end" : true,
- "sentence-boundary" : true,
- "sentence-end" : true,
- "word-boundary" : true
- }
- ],
"lines" : [
{
- "start-index" : 0,
- "length" : 6,
- "paragraph-start" : true,
- "direction" : "ltr",
- "runs" : [
- {
- "offset" : 0,
- "length" : 3,
- "text" : "abc",
- "bidi-level" : 0,
- "gravity" : "east",
- "language" : "en-us",
- "script" : "Latn",
- "font" : {
- "description" : "Cantarell Rotated-Left 11",
- "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
- "variations" : {
- "wght" : 0
+ "position" : [
+ 0,
+ 15360
+ ],
+ "line" : {
+ "start-index" : 0,
+ "length" : 6,
+ "start-offset" : 0,
+ "n-chars" : 6,
+ "wrapped" : false,
+ "ellipsized" : false,
+ "hyphenated" : false,
+ "justified" : false,
+ "paragraph-start" : true,
+ "paragraph-end" : true,
+ "direction" : "ltr",
+ "runs" : [
+ {
+ "offset" : 0,
+ "length" : 3,
+ "text" : "abc",
+ "bidi-level" : 0,
+ "gravity" : "east",
+ "language" : "en-us",
+ "script" : "Latn",
+ "font" : {
+ "description" : "Cantarell Rotated-Left 11",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ }
},
- "matrix" : [
- 1,
- -0,
- -0,
- 1,
- 0,
- 0
+ "flags" : 0,
+ "extra-attributes" : [
+ {
+ "end" : 3,
+ "type" : "gravity",
+ "value" : "east"
+ },
+ {
+ "end" : 3,
+ "type" : "gravity-hint",
+ "value" : "strong"
+ }
+ ],
+ "y-offset" : 0,
+ "start-x-offset" : 0,
+ "end-x-offset" : 0,
+ "glyphs" : [
+ {
+ "glyph" : 244,
+ "width" : 18432,
+ "x-offset" : 14764,
+ "y-offset" : 3845,
+ "is-cluster-start" : true,
+ "log-cluster" : 0
+ },
+ {
+ "glyph" : 272,
+ "width" : 18432,
+ "x-offset" : 14764,
+ "y-offset" : 4280,
+ "is-cluster-start" : true,
+ "log-cluster" : 1
+ },
+ {
+ "glyph" : 273,
+ "width" : 18432,
+ "x-offset" : 14764,
+ "y-offset" : 3507,
+ "is-cluster-start" : true,
+ "log-cluster" : 2
+ }
]
},
- "flags" : 0,
- "extra-attributes" : [
- {
- "end" : 3,
- "type" : "gravity",
- "value" : "east"
- },
- {
- "end" : 3,
- "type" : "gravity-hint",
- "value" : "strong"
- }
- ],
- "y-offset" : 0,
- "start-x-offset" : 0,
- "end-x-offset" : 0,
- "glyphs" : [
- {
- "glyph" : 244,
- "width" : 15360,
- "x-offset" : 14764,
- "y-offset" : 3845,
- "is-cluster-start" : true,
- "log-cluster" : 0
- },
- {
- "glyph" : 272,
- "width" : 15360,
- "x-offset" : 14764,
- "y-offset" : 4280,
- "is-cluster-start" : true,
- "log-cluster" : 1
- },
- {
- "glyph" : 273,
- "width" : 15360,
- "x-offset" : 14764,
- "y-offset" : 3507,
- "is-cluster-start" : true,
- "log-cluster" : 2
- }
- ]
- },
- {
- "offset" : 3,
- "length" : 3,
- "text" : "def",
- "bidi-level" : 0,
- "gravity" : "south",
- "language" : "en-us",
- "script" : "Latn",
- "font" : {
- "description" : "Cantarell 11",
- "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
- "variations" : {
- "wght" : 0
+ {
+ "offset" : 3,
+ "length" : 3,
+ "text" : "def",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "Latn",
+ "font" : {
+ "description" : "Cantarell 11",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ }
},
- "matrix" : [
- 1,
- -0,
- -0,
- 1,
- 0,
- 0
+ "flags" : 0,
+ "extra-attributes" : [
+ {
+ "start" : 3,
+ "end" : 6,
+ "type" : "gravity",
+ "value" : "south"
+ }
+ ],
+ "y-offset" : 0,
+ "start-x-offset" : 0,
+ "end-x-offset" : 0,
+ "glyphs" : [
+ {
+ "glyph" : 280,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 0
+ },
+ {
+ "glyph" : 287,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 1
+ },
+ {
+ "glyph" : 311,
+ "width" : 5120,
+ "is-cluster-start" : true,
+ "log-cluster" : 2
+ }
]
- },
- "flags" : 0,
- "extra-attributes" : [
- {
- "start" : 3,
- "end" : 6,
- "type" : "gravity",
- "value" : "south"
- }
- ],
- "y-offset" : 0,
- "start-x-offset" : 0,
- "end-x-offset" : 0,
- "glyphs" : [
- {
- "glyph" : 280,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 0
- },
- {
- "glyph" : 287,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 1
- },
- {
- "glyph" : 311,
- "width" : 5120,
- "is-cluster-start" : true,
- "log-cluster" : 2
- }
- ]
- }
- ]
+ }
+ ]
+ }
}
]
}
diff --git a/tests/layouts/valid-21.layout b/tests/layouts/valid-21.layout
index d11b474d..f8d0dd11 100644
--- a/tests/layouts/valid-21.layout
+++ b/tests/layouts/valid-21.layout
@@ -24,146 +24,152 @@
}
],
"font" : "Cantarell 11",
+ "log-attrs" : [
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "sentence-boundary" : true,
+ "sentence-start" : true,
+ "backspace-deletes-character" : true,
+ "word-boundary" : true
+ },
+ {},
+ {
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "expandable-space" : true,
+ "word-boundary" : true
+ },
+ {
+ "line-break" : true
+ },
+ {
+ "line-break" : true,
+ "mandatory-break" : true,
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "sentence-boundary" : true,
+ "sentence-end" : true,
+ "backspace-deletes-character" : true,
+ "word-boundary" : true
+ }
+ ],
"output" : {
- "is-wrapped" : false,
- "is-ellipsized" : false,
+ "wrapped" : false,
+ "ellipsized" : false,
+ "hypenated" : false,
"unknown-glyphs" : 1,
"width" : 45056,
"height" : 19456,
- "log-attrs" : [
- {
- "char-break" : true,
- "cursor-position" : true,
- "sentence-boundary" : true,
- "sentence-start" : true,
- "backspace-deletes-character" : true,
- "word-boundary" : true
- },
- {},
- {
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "expandable-space" : true,
- "word-boundary" : true
- },
- {
- "line-break" : true
- },
- {
- "line-break" : true,
- "mandatory-break" : true,
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "sentence-boundary" : true,
- "sentence-end" : true,
- "backspace-deletes-character" : true,
- "word-boundary" : true
- }
- ],
"lines" : [
{
- "start-index" : 0,
- "length" : 11,
- "paragraph-start" : true,
- "direction" : "ltr",
- "runs" : [
- {
- "offset" : 0,
- "length" : 7,
- "text" : "😊️",
- "bidi-level" : 0,
- "gravity" : "south",
- "language" : "en-us",
- "script" : "Zyyy",
- "font" : {
- "description" : "Noto Color Emoji 11",
- "checksum" : "054c1c2e2ca956b920262840dcad39dcf27bb88d6f70b892b2b1180de2c2ab47",
- "matrix" : [
- 0.13455956135321101,
- -0,
- -0,
- 0.13455956135321101,
- 0,
- 0
- ]
- },
- "flags" : 0,
- "extra-attributes" : [
- {
- "type" : "show",
- "value" : 4
- }
- ],
- "y-offset" : 0,
- "start-x-offset" : 0,
- "end-x-offset" : 0,
- "glyphs" : [
- {
- "glyph" : 13,
- "width" : 18432,
- "is-cluster-start" : true,
- "is-color" : true,
- "log-cluster" : 0
- },
- {
- "glyph" : 268435455,
- "width" : 0,
- "is-cluster-start" : true,
- "log-cluster" : 4
- }
- ]
- },
- {
- "offset" : 7,
- "length" : 4,
- "text" : " ",
- "bidi-level" : 0,
- "gravity" : "south",
- "language" : "en-us",
- "script" : "Zyyy",
- "font" : {
- "description" : "Cantarell 11",
- "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
- "variations" : {
- "wght" : 0
+ "position" : [
+ 0,
+ 15360
+ ],
+ "line" : {
+ "start-index" : 0,
+ "length" : 11,
+ "start-offset" : 0,
+ "n-chars" : 4,
+ "wrapped" : false,
+ "ellipsized" : false,
+ "hyphenated" : false,
+ "justified" : false,
+ "paragraph-start" : true,
+ "paragraph-end" : true,
+ "direction" : "ltr",
+ "runs" : [
+ {
+ "offset" : 0,
+ "length" : 7,
+ "text" : "😊️",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "Zyyy",
+ "font" : {
+ "description" : "Noto Color Emoji 11",
+ "checksum" : "054c1c2e2ca956b920262840dcad39dcf27bb88d6f70b892b2b1180de2c2ab47",
+ "matrix" : [
+ 0.13455956135321101,
+ -0,
+ -0,
+ 0.13455956135321101,
+ 0,
+ 0
+ ]
},
- "matrix" : [
- 1,
- -0,
- -0,
- 1,
- 0,
- 0
+ "flags" : 0,
+ "extra-attributes" : [
+ {
+ "type" : "show",
+ "value" : 4
+ }
+ ],
+ "y-offset" : 0,
+ "start-x-offset" : 0,
+ "end-x-offset" : 0,
+ "glyphs" : [
+ {
+ "glyph" : 13,
+ "width" : 18432,
+ "is-cluster-start" : true,
+ "is-color" : true,
+ "log-cluster" : 0
+ },
+ {
+ "glyph" : 268435455,
+ "width" : 0,
+ "is-cluster-start" : true,
+ "log-cluster" : 4
+ }
]
},
- "flags" : 0,
- "extra-attributes" : [
- {
- "type" : "show",
- "value" : 4
- }
- ],
- "y-offset" : 0,
- "start-x-offset" : 0,
- "end-x-offset" : 0,
- "glyphs" : [
- {
- "glyph" : 1109,
- "width" : 3072,
- "is-cluster-start" : true,
- "log-cluster" : 0
+ {
+ "offset" : 7,
+ "length" : 4,
+ "text" : " ",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "Zyyy",
+ "font" : {
+ "description" : "Cantarell 11",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ }
},
- {
- "glyph" : 268443661,
- "width" : 23552,
- "is-cluster-start" : true,
- "log-cluster" : 1
- }
- ]
- }
- ]
+ "flags" : 0,
+ "extra-attributes" : [
+ {
+ "type" : "show",
+ "value" : 4
+ }
+ ],
+ "y-offset" : 0,
+ "start-x-offset" : 0,
+ "end-x-offset" : 0,
+ "glyphs" : [
+ {
+ "glyph" : 1109,
+ "width" : 3072,
+ "is-cluster-start" : true,
+ "log-cluster" : 0
+ },
+ {
+ "glyph" : 268443661,
+ "width" : 23552,
+ "is-cluster-start" : true,
+ "log-cluster" : 1
+ }
+ ]
+ }
+ ]
+ }
}
]
}
diff --git a/tests/layouts/valid-22.layout b/tests/layouts/valid-22.layout
index 483f54e1..b5c4ab1b 100644
--- a/tests/layouts/valid-22.layout
+++ b/tests/layouts/valid-22.layout
@@ -98,610 +98,560 @@
}
],
"font" : "Cantarell 11",
+ "log-attrs" : [
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-start" : true,
+ "sentence-boundary" : true,
+ "sentence-start" : true,
+ "backspace-deletes-character" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "word-end" : true,
+ "expandable-space" : true,
+ "word-boundary" : true
+ },
+ {
+ "line-break" : true,
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "expandable-space" : true,
+ "word-boundary" : true
+ },
+ {
+ "line-break" : true,
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-start" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-end" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-boundary" : true
+ },
+ {
+ "line-break" : true,
+ "mandatory-break" : true,
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "sentence-boundary" : true,
+ "sentence-end" : true,
+ "word-boundary" : true
+ }
+ ],
"output" : {
- "is-wrapped" : false,
- "is-ellipsized" : false,
+ "wrapped" : false,
+ "ellipsized" : false,
+ "hypenated" : false,
"unknown-glyphs" : 0,
"width" : 49152,
"height" : 22658,
- "log-attrs" : [
- {
- "char-break" : true,
- "cursor-position" : true,
- "word-start" : true,
- "sentence-boundary" : true,
- "sentence-start" : true,
- "backspace-deletes-character" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "word-end" : true,
- "expandable-space" : true,
- "word-boundary" : true
- },
- {
- "line-break" : true,
- "char-break" : true,
- "cursor-position" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "expandable-space" : true,
- "word-boundary" : true
- },
- {
- "line-break" : true,
- "char-break" : true,
- "cursor-position" : true,
- "word-start" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "word-end" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "word-boundary" : true
- },
- {
- "line-break" : true,
- "mandatory-break" : true,
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "sentence-boundary" : true,
- "sentence-end" : true,
- "word-boundary" : true
- }
- ],
"lines" : [
{
- "start-index" : 0,
- "length" : 11,
- "paragraph-start" : true,
- "direction" : "ltr",
- "runs" : [
- {
- "offset" : 0,
- "length" : 1,
- "text" : "e",
- "bidi-level" : 0,
- "gravity" : "south",
- "language" : "en-us",
- "script" : "Latn",
- "font" : {
- "description" : "Cantarell 11",
- "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
- "variations" : {
- "wght" : 0
- },
- "matrix" : [
- 1,
- -0,
- -0,
- 1,
- 0,
- 0
+ "position" : [
+ 0,
+ 16312
+ ],
+ "line" : {
+ "start-index" : 0,
+ "length" : 11,
+ "start-offset" : 0,
+ "n-chars" : 11,
+ "wrapped" : false,
+ "ellipsized" : false,
+ "hyphenated" : false,
+ "justified" : false,
+ "paragraph-start" : true,
+ "paragraph-end" : true,
+ "direction" : "ltr",
+ "runs" : [
+ {
+ "offset" : 0,
+ "length" : 1,
+ "text" : "e",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "Latn",
+ "font" : {
+ "description" : "Cantarell 11",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ }
+ },
+ "flags" : 0,
+ "y-offset" : 0,
+ "start-x-offset" : 0,
+ "end-x-offset" : 0,
+ "glyphs" : [
+ {
+ "glyph" : 287,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 0
+ }
]
},
- "flags" : 0,
- "y-offset" : 0,
- "start-x-offset" : 0,
- "end-x-offset" : 0,
- "glyphs" : [
- {
- "glyph" : 287,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 0
- }
- ]
- },
- {
- "offset" : 1,
- "length" : 1,
- "text" : "0",
- "bidi-level" : 0,
- "gravity" : "south",
- "language" : "en-us",
- "script" : "Latn",
- "font" : {
- "description" : "Cantarell 7.1484375",
- "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
- "variations" : {
- "wght" : 0
- },
- "matrix" : [
- 1,
- -0,
- -0,
- 1,
- 0,
- 0
+ {
+ "offset" : 1,
+ "length" : 1,
+ "text" : "0",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "Latn",
+ "font" : {
+ "description" : "Cantarell 7.1484375",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ }
+ },
+ "flags" : 0,
+ "extra-attributes" : [
+ {
+ "start" : 1,
+ "end" : 2,
+ "type" : "font-scale",
+ "value" : "subscript"
+ },
+ {
+ "start" : 1,
+ "end" : 2,
+ "type" : "baseline-shift",
+ "value" : "subscript"
+ }
+ ],
+ "y-offset" : -3274,
+ "start-x-offset" : 0,
+ "end-x-offset" : 0,
+ "glyphs" : [
+ {
+ "glyph" : 964,
+ "width" : 6144,
+ "is-cluster-start" : true,
+ "log-cluster" : 0
+ }
]
},
- "flags" : 0,
- "extra-attributes" : [
- {
- "start" : 1,
- "end" : 2,
- "type" : "font-scale",
- "value" : "subscript"
- },
- {
- "start" : 1,
- "end" : 2,
- "type" : "baseline-shift",
- "value" : "subscript"
- }
- ],
- "y-offset" : -3274,
- "start-x-offset" : 0,
- "end-x-offset" : 0,
- "glyphs" : [
- {
- "glyph" : 964,
- "width" : 6144,
- "is-cluster-start" : true,
- "log-cluster" : 0
- }
- ]
- },
- {
- "offset" : 2,
- "length" : 4,
- "text" : " = o",
- "bidi-level" : 0,
- "gravity" : "south",
- "language" : "en-us",
- "script" : "Latn",
- "font" : {
- "description" : "Cantarell 11",
- "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
- "variations" : {
- "wght" : 0
- },
- "matrix" : [
- 1,
- -0,
- -0,
- 1,
- 0,
- 0
+ {
+ "offset" : 2,
+ "length" : 4,
+ "text" : " = o",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "Latn",
+ "font" : {
+ "description" : "Cantarell 11",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ }
+ },
+ "flags" : 0,
+ "y-offset" : 0,
+ "start-x-offset" : 0,
+ "end-x-offset" : 0,
+ "glyphs" : [
+ {
+ "glyph" : 1109,
+ "width" : 3072,
+ "is-cluster-start" : true,
+ "log-cluster" : 0
+ },
+ {
+ "glyph" : 1147,
+ "width" : 9216,
+ "is-cluster-start" : true,
+ "log-cluster" : 1
+ },
+ {
+ "glyph" : 1109,
+ "width" : 3072,
+ "is-cluster-start" : true,
+ "log-cluster" : 2
+ },
+ {
+ "glyph" : 370,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 3
+ }
]
},
- "flags" : 0,
- "y-offset" : 0,
- "start-x-offset" : 0,
- "end-x-offset" : 0,
- "glyphs" : [
- {
- "glyph" : 1109,
- "width" : 3072,
- "is-cluster-start" : true,
- "log-cluster" : 0
- },
- {
- "glyph" : 1147,
- "width" : 9216,
- "is-cluster-start" : true,
- "log-cluster" : 1
- },
- {
- "glyph" : 1109,
- "width" : 3072,
- "is-cluster-start" : true,
- "log-cluster" : 2
- },
- {
- "glyph" : 370,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 3
- }
- ]
- },
- {
- "offset" : 6,
- "length" : 1,
- "text" : "o",
- "bidi-level" : 0,
- "gravity" : "south",
- "language" : "en-us",
- "script" : "Latn",
- "font" : {
- "description" : "Cantarell 7.1484375",
- "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
- "variations" : {
- "wght" : 0
- },
- "matrix" : [
- 1,
- -0,
- -0,
- 1,
- 0,
- 0
+ {
+ "offset" : 6,
+ "length" : 1,
+ "text" : "o",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "Latn",
+ "font" : {
+ "description" : "Cantarell 7.1484375",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ }
+ },
+ "flags" : 0,
+ "extra-attributes" : [
+ {
+ "start" : 6,
+ "end" : 11,
+ "type" : "font-scale",
+ "value" : "superscript"
+ },
+ {
+ "start" : 6,
+ "end" : 11,
+ "type" : "baseline-shift",
+ "value" : "superscript"
+ }
+ ],
+ "y-offset" : 5542,
+ "start-x-offset" : 0,
+ "end-x-offset" : 0,
+ "glyphs" : [
+ {
+ "glyph" : 370,
+ "width" : 5120,
+ "is-cluster-start" : true,
+ "log-cluster" : 0
+ }
]
},
- "flags" : 0,
- "extra-attributes" : [
- {
- "start" : 6,
- "end" : 11,
- "type" : "font-scale",
- "value" : "superscript"
- },
- {
- "start" : 6,
- "end" : 11,
- "type" : "baseline-shift",
- "value" : "superscript"
- }
- ],
- "y-offset" : 5542,
- "start-x-offset" : 0,
- "end-x-offset" : 0,
- "glyphs" : [
- {
- "glyph" : 370,
- "width" : 5120,
- "is-cluster-start" : true,
- "log-cluster" : 0
- }
- ]
- },
- {
- "offset" : 7,
- "length" : 1,
- "text" : "o",
- "bidi-level" : 0,
- "gravity" : "south",
- "language" : "en-us",
- "script" : "Latn",
- "font" : {
- "description" : "Cantarell 4.646484375",
- "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
- "variations" : {
- "wght" : 0
- },
- "matrix" : [
- 1,
- -0,
- -0,
- 1,
- 0,
- 0
+ {
+ "offset" : 7,
+ "length" : 1,
+ "text" : "o",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "Latn",
+ "font" : {
+ "description" : "Cantarell 4.646484375",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ }
+ },
+ "flags" : 0,
+ "extra-attributes" : [
+ {
+ "start" : 6,
+ "end" : 11,
+ "type" : "font-scale",
+ "value" : "superscript"
+ },
+ {
+ "start" : 6,
+ "end" : 11,
+ "type" : "baseline-shift",
+ "value" : "superscript"
+ },
+ {
+ "start" : 7,
+ "end" : 11,
+ "type" : "font-scale",
+ "value" : "superscript"
+ },
+ {
+ "start" : 7,
+ "end" : 11,
+ "type" : "baseline-shift",
+ "value" : "superscript"
+ }
+ ],
+ "y-offset" : 9144,
+ "start-x-offset" : 0,
+ "end-x-offset" : 0,
+ "glyphs" : [
+ {
+ "glyph" : 370,
+ "width" : 4096,
+ "is-cluster-start" : true,
+ "log-cluster" : 0
+ }
]
},
- "flags" : 0,
- "extra-attributes" : [
- {
- "start" : 6,
- "end" : 11,
- "type" : "font-scale",
- "value" : "superscript"
- },
- {
- "start" : 6,
- "end" : 11,
- "type" : "baseline-shift",
- "value" : "superscript"
- },
- {
- "start" : 7,
- "end" : 11,
- "type" : "font-scale",
- "value" : "superscript"
- },
- {
- "start" : 7,
- "end" : 11,
- "type" : "baseline-shift",
- "value" : "superscript"
- }
- ],
- "y-offset" : 9144,
- "start-x-offset" : 0,
- "end-x-offset" : 0,
- "glyphs" : [
- {
- "glyph" : 370,
- "width" : 4096,
- "is-cluster-start" : true,
- "log-cluster" : 0
- }
- ]
- },
- {
- "offset" : 8,
- "length" : 1,
- "text" : ".",
- "bidi-level" : 0,
- "gravity" : "south",
- "language" : "en-us",
- "script" : "Latn",
- "font" : {
- "description" : "Cantarell 3.0205078125",
- "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
- "variations" : {
- "wght" : 0
- },
- "matrix" : [
- 1,
- -0,
- -0,
- 1,
- 0,
- 0
+ {
+ "offset" : 8,
+ "length" : 1,
+ "text" : ".",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "Latn",
+ "font" : {
+ "description" : "Cantarell 3.0205078125",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ }
+ },
+ "flags" : 0,
+ "extra-attributes" : [
+ {
+ "start" : 6,
+ "end" : 11,
+ "type" : "font-scale",
+ "value" : "superscript"
+ },
+ {
+ "start" : 6,
+ "end" : 11,
+ "type" : "baseline-shift",
+ "value" : "superscript"
+ },
+ {
+ "start" : 7,
+ "end" : 11,
+ "type" : "font-scale",
+ "value" : "superscript"
+ },
+ {
+ "start" : 7,
+ "end" : 11,
+ "type" : "baseline-shift",
+ "value" : "superscript"
+ },
+ {
+ "start" : 8,
+ "end" : 11,
+ "type" : "font-scale",
+ "value" : "superscript"
+ },
+ {
+ "start" : 8,
+ "end" : 11,
+ "type" : "baseline-shift",
+ "value" : "superscript"
+ }
+ ],
+ "y-offset" : 11485,
+ "start-x-offset" : 0,
+ "end-x-offset" : 0,
+ "glyphs" : [
+ {
+ "glyph" : 1058,
+ "width" : 1024,
+ "is-cluster-start" : true,
+ "log-cluster" : 0
+ }
]
},
- "flags" : 0,
- "extra-attributes" : [
- {
- "start" : 6,
- "end" : 11,
- "type" : "font-scale",
- "value" : "superscript"
- },
- {
- "start" : 6,
- "end" : 11,
- "type" : "baseline-shift",
- "value" : "superscript"
- },
- {
- "start" : 7,
- "end" : 11,
- "type" : "font-scale",
- "value" : "superscript"
- },
- {
- "start" : 7,
- "end" : 11,
- "type" : "baseline-shift",
- "value" : "superscript"
- },
- {
- "start" : 8,
- "end" : 11,
- "type" : "font-scale",
- "value" : "superscript"
- },
- {
- "start" : 8,
- "end" : 11,
- "type" : "baseline-shift",
- "value" : "superscript"
- }
- ],
- "y-offset" : 11485,
- "start-x-offset" : 0,
- "end-x-offset" : 0,
- "glyphs" : [
- {
- "glyph" : 1058,
- "width" : 1024,
- "is-cluster-start" : true,
- "log-cluster" : 0
- }
- ]
- },
- {
- "offset" : 9,
- "length" : 1,
- "text" : ".",
- "bidi-level" : 0,
- "gravity" : "south",
- "language" : "en-us",
- "script" : "Latn",
- "font" : {
- "description" : "Cantarell 1.962890625",
- "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
- "variations" : {
- "wght" : 0
- },
- "matrix" : [
- 1,
- -0,
- -0,
- 1,
- 0,
- 0
+ {
+ "offset" : 9,
+ "length" : 1,
+ "text" : ".",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "Latn",
+ "font" : {
+ "description" : "Cantarell 1.962890625",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ }
+ },
+ "flags" : 0,
+ "extra-attributes" : [
+ {
+ "start" : 6,
+ "end" : 11,
+ "type" : "font-scale",
+ "value" : "superscript"
+ },
+ {
+ "start" : 6,
+ "end" : 11,
+ "type" : "baseline-shift",
+ "value" : "superscript"
+ },
+ {
+ "start" : 7,
+ "end" : 11,
+ "type" : "font-scale",
+ "value" : "superscript"
+ },
+ {
+ "start" : 7,
+ "end" : 11,
+ "type" : "baseline-shift",
+ "value" : "superscript"
+ },
+ {
+ "start" : 8,
+ "end" : 11,
+ "type" : "font-scale",
+ "value" : "superscript"
+ },
+ {
+ "start" : 8,
+ "end" : 11,
+ "type" : "baseline-shift",
+ "value" : "superscript"
+ },
+ {
+ "start" : 9,
+ "end" : 11,
+ "type" : "font-scale",
+ "value" : "superscript"
+ },
+ {
+ "start" : 9,
+ "end" : 11,
+ "type" : "baseline-shift",
+ "value" : "superscript"
+ }
+ ],
+ "y-offset" : 13007,
+ "start-x-offset" : 0,
+ "end-x-offset" : 0,
+ "glyphs" : [
+ {
+ "glyph" : 1058,
+ "width" : 1024,
+ "is-cluster-start" : true,
+ "log-cluster" : 0
+ }
]
},
- "flags" : 0,
- "extra-attributes" : [
- {
- "start" : 6,
- "end" : 11,
- "type" : "font-scale",
- "value" : "superscript"
- },
- {
- "start" : 6,
- "end" : 11,
- "type" : "baseline-shift",
- "value" : "superscript"
- },
- {
- "start" : 7,
- "end" : 11,
- "type" : "font-scale",
- "value" : "superscript"
- },
- {
- "start" : 7,
- "end" : 11,
- "type" : "baseline-shift",
- "value" : "superscript"
- },
- {
- "start" : 8,
- "end" : 11,
- "type" : "font-scale",
- "value" : "superscript"
- },
- {
- "start" : 8,
- "end" : 11,
- "type" : "baseline-shift",
- "value" : "superscript"
- },
- {
- "start" : 9,
- "end" : 11,
- "type" : "font-scale",
- "value" : "superscript"
- },
- {
- "start" : 9,
- "end" : 11,
- "type" : "baseline-shift",
- "value" : "superscript"
- }
- ],
- "y-offset" : 13007,
- "start-x-offset" : 0,
- "end-x-offset" : 0,
- "glyphs" : [
- {
- "glyph" : 1058,
- "width" : 1024,
- "is-cluster-start" : true,
- "log-cluster" : 0
- }
- ]
- },
- {
- "offset" : 10,
- "length" : 1,
- "text" : ".",
- "bidi-level" : 0,
- "gravity" : "south",
- "language" : "en-us",
- "script" : "Latn",
- "font" : {
- "description" : "Cantarell 1.2763671875",
- "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
- "variations" : {
- "wght" : 0
- },
- "matrix" : [
- 1,
- -0,
- -0,
- 1,
- 0,
- 0
+ {
+ "offset" : 10,
+ "length" : 1,
+ "text" : ".",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "Latn",
+ "font" : {
+ "description" : "Cantarell 1.2763671875",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ }
+ },
+ "flags" : 0,
+ "extra-attributes" : [
+ {
+ "start" : 6,
+ "end" : 11,
+ "type" : "font-scale",
+ "value" : "superscript"
+ },
+ {
+ "start" : 6,
+ "end" : 11,
+ "type" : "baseline-shift",
+ "value" : "superscript"
+ },
+ {
+ "start" : 7,
+ "end" : 11,
+ "type" : "font-scale",
+ "value" : "superscript"
+ },
+ {
+ "start" : 7,
+ "end" : 11,
+ "type" : "baseline-shift",
+ "value" : "superscript"
+ },
+ {
+ "start" : 8,
+ "end" : 11,
+ "type" : "font-scale",
+ "value" : "superscript"
+ },
+ {
+ "start" : 8,
+ "end" : 11,
+ "type" : "baseline-shift",
+ "value" : "superscript"
+ },
+ {
+ "start" : 9,
+ "end" : 11,
+ "type" : "font-scale",
+ "value" : "superscript"
+ },
+ {
+ "start" : 9,
+ "end" : 11,
+ "type" : "baseline-shift",
+ "value" : "superscript"
+ },
+ {
+ "start" : 10,
+ "end" : 11,
+ "type" : "font-scale",
+ "value" : "superscript"
+ },
+ {
+ "start" : 10,
+ "end" : 11,
+ "type" : "baseline-shift",
+ "value" : "superscript"
+ }
+ ],
+ "y-offset" : 13996,
+ "start-x-offset" : 0,
+ "end-x-offset" : 0,
+ "glyphs" : [
+ {
+ "glyph" : 1058,
+ "width" : 0,
+ "is-cluster-start" : true,
+ "log-cluster" : 0
+ }
]
- },
- "flags" : 0,
- "extra-attributes" : [
- {
- "start" : 6,
- "end" : 11,
- "type" : "font-scale",
- "value" : "superscript"
- },
- {
- "start" : 6,
- "end" : 11,
- "type" : "baseline-shift",
- "value" : "superscript"
- },
- {
- "start" : 7,
- "end" : 11,
- "type" : "font-scale",
- "value" : "superscript"
- },
- {
- "start" : 7,
- "end" : 11,
- "type" : "baseline-shift",
- "value" : "superscript"
- },
- {
- "start" : 8,
- "end" : 11,
- "type" : "font-scale",
- "value" : "superscript"
- },
- {
- "start" : 8,
- "end" : 11,
- "type" : "baseline-shift",
- "value" : "superscript"
- },
- {
- "start" : 9,
- "end" : 11,
- "type" : "font-scale",
- "value" : "superscript"
- },
- {
- "start" : 9,
- "end" : 11,
- "type" : "baseline-shift",
- "value" : "superscript"
- },
- {
- "start" : 10,
- "end" : 11,
- "type" : "font-scale",
- "value" : "superscript"
- },
- {
- "start" : 10,
- "end" : 11,
- "type" : "baseline-shift",
- "value" : "superscript"
- }
- ],
- "y-offset" : 13996,
- "start-x-offset" : 0,
- "end-x-offset" : 0,
- "glyphs" : [
- {
- "glyph" : 1058,
- "width" : 0,
- "is-cluster-start" : true,
- "log-cluster" : 0
- }
- ]
- }
- ]
+ }
+ ]
+ }
}
]
}
diff --git a/tests/layouts/valid-3.layout b/tests/layouts/valid-3.layout
index 67650586..48a0a824 100644
--- a/tests/layouts/valid-3.layout
+++ b/tests/layouts/valid-3.layout
@@ -18,191 +18,189 @@
"comment" : "Emoji",
"text" : "ABC😀️D",
"font" : "Cantarell 11",
+ "log-attrs" : [
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-start" : true,
+ "sentence-boundary" : true,
+ "sentence-start" : true,
+ "backspace-deletes-character" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "line-break" : true,
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-end" : true,
+ "word-boundary" : true
+ },
+ {},
+ {
+ "line-break" : true,
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-start" : true,
+ "word-boundary" : true
+ },
+ {
+ "line-break" : true,
+ "mandatory-break" : true,
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "word-end" : true,
+ "sentence-boundary" : true,
+ "sentence-end" : true,
+ "word-boundary" : true
+ }
+ ],
"output" : {
- "is-wrapped" : false,
- "is-ellipsized" : false,
+ "wrapped" : false,
+ "ellipsized" : false,
+ "hypenated" : false,
"unknown-glyphs" : 0,
"width" : 56320,
"height" : 19456,
- "log-attrs" : [
- {
- "char-break" : true,
- "cursor-position" : true,
- "word-start" : true,
- "sentence-boundary" : true,
- "sentence-start" : true,
- "backspace-deletes-character" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "line-break" : true,
- "char-break" : true,
- "cursor-position" : true,
- "word-end" : true,
- "word-boundary" : true
- },
- {},
- {
- "line-break" : true,
- "char-break" : true,
- "cursor-position" : true,
- "word-start" : true,
- "word-boundary" : true
- },
- {
- "line-break" : true,
- "mandatory-break" : true,
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "word-end" : true,
- "sentence-boundary" : true,
- "sentence-end" : true,
- "word-boundary" : true
- }
- ],
"lines" : [
{
- "start-index" : 0,
- "length" : 11,
- "paragraph-start" : true,
- "direction" : "ltr",
- "runs" : [
- {
- "offset" : 0,
- "length" : 3,
- "text" : "ABC",
- "bidi-level" : 0,
- "gravity" : "south",
- "language" : "en-us",
- "script" : "Latn",
- "font" : {
- "description" : "Cantarell 11",
- "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
- "variations" : {
- "wght" : 0
+ "position" : [
+ 0,
+ 15360
+ ],
+ "line" : {
+ "start-index" : 0,
+ "length" : 11,
+ "start-offset" : 0,
+ "n-chars" : 6,
+ "wrapped" : false,
+ "ellipsized" : false,
+ "hyphenated" : false,
+ "justified" : false,
+ "paragraph-start" : true,
+ "paragraph-end" : true,
+ "direction" : "ltr",
+ "runs" : [
+ {
+ "offset" : 0,
+ "length" : 3,
+ "text" : "ABC",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "Latn",
+ "font" : {
+ "description" : "Cantarell 11",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ }
},
- "matrix" : [
- 1,
- -0,
- -0,
- 1,
- 0,
- 0
+ "flags" : 0,
+ "y-offset" : 0,
+ "start-x-offset" : 0,
+ "end-x-offset" : 0,
+ "glyphs" : [
+ {
+ "glyph" : 1,
+ "width" : 9216,
+ "is-cluster-start" : true,
+ "log-cluster" : 0
+ },
+ {
+ "glyph" : 29,
+ "width" : 9216,
+ "is-cluster-start" : true,
+ "log-cluster" : 1
+ },
+ {
+ "glyph" : 30,
+ "width" : 9216,
+ "is-cluster-start" : true,
+ "log-cluster" : 2
+ }
]
},
- "flags" : 0,
- "y-offset" : 0,
- "start-x-offset" : 0,
- "end-x-offset" : 0,
- "glyphs" : [
- {
- "glyph" : 1,
- "width" : 9216,
- "is-cluster-start" : true,
- "log-cluster" : 0
- },
- {
- "glyph" : 29,
- "width" : 9216,
- "is-cluster-start" : true,
- "log-cluster" : 1
+ {
+ "offset" : 3,
+ "length" : 7,
+ "text" : "😀️",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "Latn",
+ "font" : {
+ "description" : "Noto Color Emoji 11",
+ "checksum" : "054c1c2e2ca956b920262840dcad39dcf27bb88d6f70b892b2b1180de2c2ab47",
+ "matrix" : [
+ 0.13455956135321101,
+ -0,
+ -0,
+ 0.13455956135321101,
+ 0,
+ 0
+ ]
},
- {
- "glyph" : 30,
- "width" : 9216,
- "is-cluster-start" : true,
- "log-cluster" : 2
- }
- ]
- },
- {
- "offset" : 3,
- "length" : 7,
- "text" : "😀️",
- "bidi-level" : 0,
- "gravity" : "south",
- "language" : "en-us",
- "script" : "Latn",
- "font" : {
- "description" : "Noto Color Emoji 11",
- "checksum" : "054c1c2e2ca956b920262840dcad39dcf27bb88d6f70b892b2b1180de2c2ab47",
- "matrix" : [
- 0.13455956135321101,
- -0,
- -0,
- 0.13455956135321101,
- 0,
- 0
+ "flags" : 0,
+ "y-offset" : 0,
+ "start-x-offset" : 0,
+ "end-x-offset" : 0,
+ "glyphs" : [
+ {
+ "glyph" : 12,
+ "width" : 18432,
+ "is-cluster-start" : true,
+ "is-color" : true,
+ "log-cluster" : 0
+ },
+ {
+ "glyph" : 268435455,
+ "width" : 0,
+ "is-cluster-start" : true,
+ "log-cluster" : 4
+ }
]
},
- "flags" : 0,
- "y-offset" : 0,
- "start-x-offset" : 0,
- "end-x-offset" : 0,
- "glyphs" : [
- {
- "glyph" : 12,
- "width" : 18432,
- "is-cluster-start" : true,
- "is-color" : true,
- "log-cluster" : 0
+ {
+ "offset" : 10,
+ "length" : 1,
+ "text" : "D",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "Latn",
+ "font" : {
+ "description" : "Cantarell 11",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ }
},
- {
- "glyph" : 268435455,
- "width" : 0,
- "is-cluster-start" : true,
- "log-cluster" : 4
- }
- ]
- },
- {
- "offset" : 10,
- "length" : 1,
- "text" : "D",
- "bidi-level" : 0,
- "gravity" : "south",
- "language" : "en-us",
- "script" : "Latn",
- "font" : {
- "description" : "Cantarell 11",
- "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
- "variations" : {
- "wght" : 0
- },
- "matrix" : [
- 1,
- -0,
- -0,
- 1,
- 0,
- 0
+ "flags" : 0,
+ "y-offset" : 0,
+ "start-x-offset" : 0,
+ "end-x-offset" : 0,
+ "glyphs" : [
+ {
+ "glyph" : 37,
+ "width" : 10240,
+ "is-cluster-start" : true,
+ "log-cluster" : 0
+ }
]
- },
- "flags" : 0,
- "y-offset" : 0,
- "start-x-offset" : 0,
- "end-x-offset" : 0,
- "glyphs" : [
- {
- "glyph" : 37,
- "width" : 10240,
- "is-cluster-start" : true,
- "log-cluster" : 0
- }
- ]
- }
- ]
+ }
+ ]
+ }
}
]
}
diff --git a/tests/layouts/valid-4.layout b/tests/layouts/valid-4.layout
index 95b57a9d..57ae012b 100644
--- a/tests/layouts/valid-4.layout
+++ b/tests/layouts/valid-4.layout
@@ -18,1928 +18,1954 @@
"text" : "This paragraph should actually have multiple lines, unlike all the other wannabe äöü
paragraph tests in this ugh test-case. Grow some lines!",
"font" : "Cantarell 11",
"width" : 198656,
+ "log-attrs" : [
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-start" : true,
+ "sentence-boundary" : true,
+ "sentence-start" : true,
+ "backspace-deletes-character" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "word-end" : true,
+ "expandable-space" : true,
+ "word-boundary" : true
+ },
+ {
+ "line-break" : true,
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-start" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "word-end" : true,
+ "expandable-space" : true,
+ "word-boundary" : true
+ },
+ {
+ "line-break" : true,
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-start" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "word-end" : true,
+ "expandable-space" : true,
+ "word-boundary" : true
+ },
+ {
+ "line-break" : true,
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-start" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "line-break" : true,
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "line-break" : true,
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "word-end" : true,
+ "expandable-space" : true,
+ "word-boundary" : true
+ },
+ {
+ "line-break" : true,
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-start" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "word-end" : true,
+ "expandable-space" : true,
+ "word-boundary" : true
+ },
+ {
+ "line-break" : true,
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-start" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "word-end" : true,
+ "expandable-space" : true,
+ "word-boundary" : true
+ },
+ {
+ "line-break" : true,
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-start" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-end" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "expandable-space" : true,
+ "word-boundary" : true
+ },
+ {
+ "line-break" : true,
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-start" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "word-end" : true,
+ "expandable-space" : true,
+ "word-boundary" : true
+ },
+ {
+ "line-break" : true,
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-start" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "word-end" : true,
+ "expandable-space" : true,
+ "word-boundary" : true
+ },
+ {
+ "line-break" : true,
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-start" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "word-end" : true,
+ "expandable-space" : true,
+ "word-boundary" : true
+ },
+ {
+ "line-break" : true,
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-start" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "word-end" : true,
+ "expandable-space" : true,
+ "word-boundary" : true
+ },
+ {
+ "line-break" : true,
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-start" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "word-end" : true,
+ "expandable-space" : true,
+ "word-boundary" : true
+ },
+ {
+ "line-break" : true,
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-start" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "word-end" : true,
+ "expandable-space" : true,
+ "word-boundary" : true
+ },
+ {
+ "line-break" : true,
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-start" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "line-break" : true,
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "line-break" : true,
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "word-end" : true,
+ "expandable-space" : true,
+ "word-boundary" : true
+ },
+ {
+ "line-break" : true,
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-start" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "word-end" : true,
+ "expandable-space" : true,
+ "word-boundary" : true
+ },
+ {
+ "line-break" : true,
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-start" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "word-end" : true,
+ "expandable-space" : true,
+ "word-boundary" : true
+ },
+ {
+ "line-break" : true,
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-start" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "word-end" : true,
+ "expandable-space" : true,
+ "word-boundary" : true
+ },
+ {
+ "line-break" : true,
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-start" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "word-end" : true,
+ "expandable-space" : true,
+ "word-boundary" : true
+ },
+ {
+ "line-break" : true,
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-start" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-end" : true,
+ "word-boundary" : true
+ },
+ {
+ "line-break" : true,
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-start" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-end" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "sentence-end" : true,
+ "expandable-space" : true,
+ "word-boundary" : true
+ },
+ {
+ "line-break" : true,
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-start" : true,
+ "sentence-boundary" : true,
+ "sentence-start" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "word-end" : true,
+ "expandable-space" : true,
+ "word-boundary" : true
+ },
+ {
+ "line-break" : true,
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-start" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "word-end" : true,
+ "expandable-space" : true,
+ "word-boundary" : true
+ },
+ {
+ "line-break" : true,
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-start" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-end" : true,
+ "word-boundary" : true
+ },
+ {
+ "line-break" : true,
+ "mandatory-break" : true,
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "sentence-boundary" : true,
+ "sentence-end" : true,
+ "word-boundary" : true
+ }
+ ],
"output" : {
- "is-wrapped" : true,
- "is-ellipsized" : false,
+ "wrapped" : true,
+ "ellipsized" : false,
+ "hypenated" : true,
"unknown-glyphs" : 0,
"width" : 197632,
"height" : 97280,
- "log-attrs" : [
- {
- "char-break" : true,
- "cursor-position" : true,
- "word-start" : true,
- "sentence-boundary" : true,
- "sentence-start" : true,
- "backspace-deletes-character" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "word-end" : true,
- "expandable-space" : true,
- "word-boundary" : true
- },
- {
- "line-break" : true,
- "char-break" : true,
- "cursor-position" : true,
- "word-start" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "word-end" : true,
- "expandable-space" : true,
- "word-boundary" : true
- },
- {
- "line-break" : true,
- "char-break" : true,
- "cursor-position" : true,
- "word-start" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "word-end" : true,
- "expandable-space" : true,
- "word-boundary" : true
- },
- {
- "line-break" : true,
- "char-break" : true,
- "cursor-position" : true,
- "word-start" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "line-break" : true,
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "line-break" : true,
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "word-end" : true,
- "expandable-space" : true,
- "word-boundary" : true
- },
- {
- "line-break" : true,
- "char-break" : true,
- "cursor-position" : true,
- "word-start" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "word-end" : true,
- "expandable-space" : true,
- "word-boundary" : true
- },
- {
- "line-break" : true,
- "char-break" : true,
- "cursor-position" : true,
- "word-start" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "word-end" : true,
- "expandable-space" : true,
- "word-boundary" : true
- },
- {
- "line-break" : true,
- "char-break" : true,
- "cursor-position" : true,
- "word-start" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "word-end" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "expandable-space" : true,
- "word-boundary" : true
- },
- {
- "line-break" : true,
- "char-break" : true,
- "cursor-position" : true,
- "word-start" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "word-end" : true,
- "expandable-space" : true,
- "word-boundary" : true
- },
- {
- "line-break" : true,
- "char-break" : true,
- "cursor-position" : true,
- "word-start" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "word-end" : true,
- "expandable-space" : true,
- "word-boundary" : true
- },
- {
- "line-break" : true,
- "char-break" : true,
- "cursor-position" : true,
- "word-start" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "word-end" : true,
- "expandable-space" : true,
- "word-boundary" : true
- },
- {
- "line-break" : true,
- "char-break" : true,
- "cursor-position" : true,
- "word-start" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "word-end" : true,
- "expandable-space" : true,
- "word-boundary" : true
- },
- {
- "line-break" : true,
- "char-break" : true,
- "cursor-position" : true,
- "word-start" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "word-end" : true,
- "expandable-space" : true,
- "word-boundary" : true
- },
- {
- "line-break" : true,
- "char-break" : true,
- "cursor-position" : true,
- "word-start" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "word-end" : true,
- "expandable-space" : true,
- "word-boundary" : true
- },
- {
- "line-break" : true,
- "char-break" : true,
- "cursor-position" : true,
- "word-start" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "line-break" : true,
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "line-break" : true,
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "word-end" : true,
- "expandable-space" : true,
- "word-boundary" : true
- },
- {
- "line-break" : true,
- "char-break" : true,
- "cursor-position" : true,
- "word-start" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "word-end" : true,
- "expandable-space" : true,
- "word-boundary" : true
- },
- {
- "line-break" : true,
- "char-break" : true,
- "cursor-position" : true,
- "word-start" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "word-end" : true,
- "expandable-space" : true,
- "word-boundary" : true
- },
- {
- "line-break" : true,
- "char-break" : true,
- "cursor-position" : true,
- "word-start" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "word-end" : true,
- "expandable-space" : true,
- "word-boundary" : true
- },
- {
- "line-break" : true,
- "char-break" : true,
- "cursor-position" : true,
- "word-start" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "word-end" : true,
- "expandable-space" : true,
- "word-boundary" : true
- },
- {
- "line-break" : true,
- "char-break" : true,
- "cursor-position" : true,
- "word-start" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "word-end" : true,
- "word-boundary" : true
- },
- {
- "line-break" : true,
- "char-break" : true,
- "cursor-position" : true,
- "word-start" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "word-end" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "sentence-end" : true,
- "expandable-space" : true,
- "word-boundary" : true
- },
- {
- "line-break" : true,
- "char-break" : true,
- "cursor-position" : true,
- "word-start" : true,
- "sentence-boundary" : true,
- "sentence-start" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "word-end" : true,
- "expandable-space" : true,
- "word-boundary" : true
- },
- {
- "line-break" : true,
- "char-break" : true,
- "cursor-position" : true,
- "word-start" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "word-end" : true,
- "expandable-space" : true,
- "word-boundary" : true
- },
- {
- "line-break" : true,
- "char-break" : true,
- "cursor-position" : true,
- "word-start" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "word-end" : true,
- "word-boundary" : true
- },
- {
- "line-break" : true,
- "mandatory-break" : true,
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "sentence-boundary" : true,
- "sentence-end" : true,
- "word-boundary" : true
- }
- ],
"lines" : [
{
- "start-index" : 0,
- "length" : 32,
- "paragraph-start" : true,
- "direction" : "ltr",
- "runs" : [
- {
- "offset" : 0,
- "length" : 32,
- "text" : "This paragraph should actual",
- "bidi-level" : 0,
- "gravity" : "south",
- "language" : "en-us",
- "script" : "Latn",
- "font" : {
- "description" : "Cantarell 11",
- "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
- "variations" : {
- "wght" : 0
- },
- "matrix" : [
- 1,
- -0,
- -0,
- 1,
- 0,
- 0
+ "position" : [
+ 0,
+ 15360
+ ],
+ "line" : {
+ "start-index" : 0,
+ "length" : 32,
+ "start-offset" : 0,
+ "n-chars" : 30,
+ "wrapped" : true,
+ "ellipsized" : false,
+ "hyphenated" : true,
+ "justified" : false,
+ "paragraph-start" : true,
+ "paragraph-end" : false,
+ "direction" : "ltr",
+ "runs" : [
+ {
+ "offset" : 0,
+ "length" : 32,
+ "text" : "This paragraph should actual",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "Latn",
+ "font" : {
+ "description" : "Cantarell 11",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ }
+ },
+ "flags" : 4,
+ "y-offset" : 0,
+ "start-x-offset" : 0,
+ "end-x-offset" : 0,
+ "glyphs" : [
+ {
+ "glyph" : 187,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 0
+ },
+ {
+ "glyph" : 319,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 1
+ },
+ {
+ "glyph" : 324,
+ "width" : 4096,
+ "is-cluster-start" : true,
+ "log-cluster" : 2
+ },
+ {
+ "glyph" : 417,
+ "width" : 7168,
+ "is-cluster-start" : true,
+ "log-cluster" : 3
+ },
+ {
+ "glyph" : 1109,
+ "width" : 3072,
+ "is-cluster-start" : true,
+ "log-cluster" : 4
+ },
+ {
+ "glyph" : 406,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 5
+ },
+ {
+ "glyph" : 244,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 6
+ },
+ {
+ "glyph" : 409,
+ "width" : 6144,
+ "is-cluster-start" : true,
+ "log-cluster" : 7
+ },
+ {
+ "glyph" : 244,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 8
+ },
+ {
+ "glyph" : 312,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 9
+ },
+ {
+ "glyph" : 409,
+ "width" : 6144,
+ "is-cluster-start" : true,
+ "log-cluster" : 10
+ },
+ {
+ "glyph" : 244,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 11
+ },
+ {
+ "glyph" : 406,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 12
+ },
+ {
+ "glyph" : 319,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 13
+ },
+ {
+ "glyph" : 1109,
+ "width" : 3072,
+ "is-cluster-start" : true,
+ "log-cluster" : 14
+ },
+ {
+ "glyph" : 417,
+ "width" : 7168,
+ "is-cluster-start" : true,
+ "log-cluster" : 15
+ },
+ {
+ "glyph" : 319,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 16
+ },
+ {
+ "glyph" : 370,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 17
+ },
+ {
+ "glyph" : 438,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 18
+ },
+ {
+ "glyph" : 349,
+ "width" : 4096,
+ "is-cluster-start" : true,
+ "log-cluster" : 19
+ },
+ {
+ "glyph" : 280,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 20
+ },
+ {
+ "glyph" : 1109,
+ "width" : 3072,
+ "is-cluster-start" : true,
+ "log-cluster" : 21
+ },
+ {
+ "glyph" : 244,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 22
+ },
+ {
+ "glyph" : 273,
+ "width" : 7168,
+ "is-cluster-start" : true,
+ "log-cluster" : 23
+ },
+ {
+ "glyph" : 268435455,
+ "width" : 0,
+ "is-cluster-start" : true,
+ "log-cluster" : 24
+ },
+ {
+ "glyph" : 430,
+ "width" : 5120,
+ "is-cluster-start" : true,
+ "log-cluster" : 26
+ },
+ {
+ "glyph" : 438,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 27
+ },
+ {
+ "glyph" : 244,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 28
+ },
+ {
+ "glyph" : 349,
+ "width" : 4096,
+ "is-cluster-start" : true,
+ "log-cluster" : 29
+ },
+ {
+ "glyph" : 268435455,
+ "width" : 0,
+ "is-cluster-start" : true,
+ "log-cluster" : 30
+ },
+ {
+ "glyph" : 1081,
+ "width" : 6144,
+ "log-cluster" : 30
+ }
]
- },
- "flags" : 4,
- "y-offset" : 0,
- "start-x-offset" : 0,
- "end-x-offset" : 0,
- "glyphs" : [
- {
- "glyph" : 187,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 0
- },
- {
- "glyph" : 319,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 1
- },
- {
- "glyph" : 324,
- "width" : 4096,
- "is-cluster-start" : true,
- "log-cluster" : 2
- },
- {
- "glyph" : 417,
- "width" : 7168,
- "is-cluster-start" : true,
- "log-cluster" : 3
- },
- {
- "glyph" : 1109,
- "width" : 3072,
- "is-cluster-start" : true,
- "log-cluster" : 4
- },
- {
- "glyph" : 406,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 5
- },
- {
- "glyph" : 244,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 6
- },
- {
- "glyph" : 409,
- "width" : 6144,
- "is-cluster-start" : true,
- "log-cluster" : 7
- },
- {
- "glyph" : 244,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 8
- },
- {
- "glyph" : 312,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 9
- },
- {
- "glyph" : 409,
- "width" : 6144,
- "is-cluster-start" : true,
- "log-cluster" : 10
- },
- {
- "glyph" : 244,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 11
- },
- {
- "glyph" : 406,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 12
- },
- {
- "glyph" : 319,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 13
- },
- {
- "glyph" : 1109,
- "width" : 3072,
- "is-cluster-start" : true,
- "log-cluster" : 14
- },
- {
- "glyph" : 417,
- "width" : 7168,
- "is-cluster-start" : true,
- "log-cluster" : 15
- },
- {
- "glyph" : 319,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 16
- },
- {
- "glyph" : 370,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 17
- },
- {
- "glyph" : 438,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 18
- },
- {
- "glyph" : 349,
- "width" : 4096,
- "is-cluster-start" : true,
- "log-cluster" : 19
- },
- {
- "glyph" : 280,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 20
- },
- {
- "glyph" : 1109,
- "width" : 3072,
- "is-cluster-start" : true,
- "log-cluster" : 21
- },
- {
- "glyph" : 244,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 22
- },
- {
- "glyph" : 273,
- "width" : 7168,
- "is-cluster-start" : true,
- "log-cluster" : 23
- },
- {
- "glyph" : 268435455,
- "width" : 0,
- "is-cluster-start" : true,
- "log-cluster" : 24
- },
- {
- "glyph" : 430,
- "width" : 5120,
- "is-cluster-start" : true,
- "log-cluster" : 26
- },
- {
- "glyph" : 438,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 27
- },
- {
- "glyph" : 244,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 28
- },
- {
- "glyph" : 349,
- "width" : 4096,
- "is-cluster-start" : true,
- "log-cluster" : 29
- },
- {
- "glyph" : 268435455,
- "width" : 0,
- "is-cluster-start" : true,
- "log-cluster" : 30
- },
- {
- "glyph" : 1081,
- "width" : 6144,
- "log-cluster" : 30
- }
- ]
- }
- ]
- },
- {
- "start-index" : 32,
- "length" : 31,
- "paragraph-start" : false,
- "direction" : "ltr",
- "runs" : [
- {
- "offset" : 32,
- "length" : 31,
- "text" : "ly have multiple lines, unlike ",
- "bidi-level" : 0,
- "gravity" : "south",
- "language" : "en-us",
- "script" : "Latn",
- "font" : {
- "description" : "Cantarell 11",
- "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
- "variations" : {
- "wght" : 0
- },
- "matrix" : [
- 1,
- -0,
- -0,
- 1,
- 0,
- 0
+ }
+ ]
+ }
+ },
+ {
+ "position" : [
+ 0,
+ 34816
+ ],
+ "line" : {
+ "start-index" : 32,
+ "length" : 31,
+ "start-offset" : 30,
+ "n-chars" : 31,
+ "wrapped" : true,
+ "ellipsized" : false,
+ "hyphenated" : false,
+ "justified" : false,
+ "paragraph-start" : false,
+ "paragraph-end" : false,
+ "direction" : "ltr",
+ "runs" : [
+ {
+ "offset" : 32,
+ "length" : 31,
+ "text" : "ly have multiple lines, unlike ",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "Latn",
+ "font" : {
+ "description" : "Cantarell 11",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ }
+ },
+ "flags" : 0,
+ "y-offset" : 0,
+ "start-x-offset" : 0,
+ "end-x-offset" : 0,
+ "glyphs" : [
+ {
+ "glyph" : 349,
+ "width" : 4096,
+ "is-cluster-start" : true,
+ "log-cluster" : 0
+ },
+ {
+ "glyph" : 473,
+ "width" : 7168,
+ "is-cluster-start" : true,
+ "log-cluster" : 1
+ },
+ {
+ "glyph" : 1109,
+ "width" : 3072,
+ "is-cluster-start" : true,
+ "log-cluster" : 2
+ },
+ {
+ "glyph" : 319,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 3
+ },
+ {
+ "glyph" : 244,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 4
+ },
+ {
+ "glyph" : 466,
+ "width" : 7168,
+ "is-cluster-start" : true,
+ "log-cluster" : 5
+ },
+ {
+ "glyph" : 287,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 6
+ },
+ {
+ "glyph" : 1109,
+ "width" : 3072,
+ "is-cluster-start" : true,
+ "log-cluster" : 7
+ },
+ {
+ "glyph" : 358,
+ "width" : 13312,
+ "is-cluster-start" : true,
+ "log-cluster" : 8
+ },
+ {
+ "glyph" : 438,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 9
+ },
+ {
+ "glyph" : 349,
+ "width" : 4096,
+ "is-cluster-start" : true,
+ "log-cluster" : 10
+ },
+ {
+ "glyph" : 430,
+ "width" : 5120,
+ "is-cluster-start" : true,
+ "log-cluster" : 11
+ },
+ {
+ "glyph" : 324,
+ "width" : 4096,
+ "is-cluster-start" : true,
+ "log-cluster" : 12
+ },
+ {
+ "glyph" : 406,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 13
+ },
+ {
+ "glyph" : 349,
+ "width" : 4096,
+ "is-cluster-start" : true,
+ "log-cluster" : 14
+ },
+ {
+ "glyph" : 287,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 15
+ },
+ {
+ "glyph" : 1109,
+ "width" : 3072,
+ "is-cluster-start" : true,
+ "log-cluster" : 16
+ },
+ {
+ "glyph" : 349,
+ "width" : 4096,
+ "is-cluster-start" : true,
+ "log-cluster" : 17
+ },
+ {
+ "glyph" : 324,
+ "width" : 4096,
+ "is-cluster-start" : true,
+ "log-cluster" : 18
+ },
+ {
+ "glyph" : 360,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 19
+ },
+ {
+ "glyph" : 287,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 20
+ },
+ {
+ "glyph" : 417,
+ "width" : 7168,
+ "is-cluster-start" : true,
+ "log-cluster" : 21
+ },
+ {
+ "glyph" : 1059,
+ "width" : 4096,
+ "is-cluster-start" : true,
+ "log-cluster" : 22
+ },
+ {
+ "glyph" : 1109,
+ "width" : 3072,
+ "is-cluster-start" : true,
+ "log-cluster" : 23
+ },
+ {
+ "glyph" : 438,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 24
+ },
+ {
+ "glyph" : 360,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 25
+ },
+ {
+ "glyph" : 349,
+ "width" : 4096,
+ "is-cluster-start" : true,
+ "log-cluster" : 26
+ },
+ {
+ "glyph" : 324,
+ "width" : 4096,
+ "is-cluster-start" : true,
+ "log-cluster" : 27
+ },
+ {
+ "glyph" : 345,
+ "width" : 7168,
+ "is-cluster-start" : true,
+ "log-cluster" : 28
+ },
+ {
+ "glyph" : 287,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 29
+ },
+ {
+ "glyph" : 268435455,
+ "width" : 0,
+ "is-cluster-start" : true,
+ "log-cluster" : 30
+ }
]
- },
- "flags" : 0,
- "y-offset" : 0,
- "start-x-offset" : 0,
- "end-x-offset" : 0,
- "glyphs" : [
- {
- "glyph" : 349,
- "width" : 4096,
- "is-cluster-start" : true,
- "log-cluster" : 0
- },
- {
- "glyph" : 473,
- "width" : 7168,
- "is-cluster-start" : true,
- "log-cluster" : 1
- },
- {
- "glyph" : 1109,
- "width" : 3072,
- "is-cluster-start" : true,
- "log-cluster" : 2
- },
- {
- "glyph" : 319,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 3
- },
- {
- "glyph" : 244,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 4
- },
- {
- "glyph" : 466,
- "width" : 7168,
- "is-cluster-start" : true,
- "log-cluster" : 5
- },
- {
- "glyph" : 287,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 6
- },
- {
- "glyph" : 1109,
- "width" : 3072,
- "is-cluster-start" : true,
- "log-cluster" : 7
- },
- {
- "glyph" : 358,
- "width" : 13312,
- "is-cluster-start" : true,
- "log-cluster" : 8
- },
- {
- "glyph" : 438,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 9
- },
- {
- "glyph" : 349,
- "width" : 4096,
- "is-cluster-start" : true,
- "log-cluster" : 10
- },
- {
- "glyph" : 430,
- "width" : 5120,
- "is-cluster-start" : true,
- "log-cluster" : 11
- },
- {
- "glyph" : 324,
- "width" : 4096,
- "is-cluster-start" : true,
- "log-cluster" : 12
- },
- {
- "glyph" : 406,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 13
- },
- {
- "glyph" : 349,
- "width" : 4096,
- "is-cluster-start" : true,
- "log-cluster" : 14
- },
- {
- "glyph" : 287,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 15
- },
- {
- "glyph" : 1109,
- "width" : 3072,
- "is-cluster-start" : true,
- "log-cluster" : 16
- },
- {
- "glyph" : 349,
- "width" : 4096,
- "is-cluster-start" : true,
- "log-cluster" : 17
- },
- {
- "glyph" : 324,
- "width" : 4096,
- "is-cluster-start" : true,
- "log-cluster" : 18
- },
- {
- "glyph" : 360,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 19
- },
- {
- "glyph" : 287,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 20
- },
- {
- "glyph" : 417,
- "width" : 7168,
- "is-cluster-start" : true,
- "log-cluster" : 21
- },
- {
- "glyph" : 1059,
- "width" : 4096,
- "is-cluster-start" : true,
- "log-cluster" : 22
- },
- {
- "glyph" : 1109,
- "width" : 3072,
- "is-cluster-start" : true,
- "log-cluster" : 23
- },
- {
- "glyph" : 438,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 24
- },
- {
- "glyph" : 360,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 25
- },
- {
- "glyph" : 349,
- "width" : 4096,
- "is-cluster-start" : true,
- "log-cluster" : 26
- },
- {
- "glyph" : 324,
- "width" : 4096,
- "is-cluster-start" : true,
- "log-cluster" : 27
- },
- {
- "glyph" : 345,
- "width" : 7168,
- "is-cluster-start" : true,
- "log-cluster" : 28
- },
- {
- "glyph" : 287,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 29
- },
- {
- "glyph" : 268435455,
- "width" : 0,
- "is-cluster-start" : true,
- "log-cluster" : 30
- }
- ]
- }
- ]
- },
- {
- "start-index" : 63,
- "length" : 33,
- "paragraph-start" : false,
- "direction" : "ltr",
- "runs" : [
- {
- "offset" : 63,
- "length" : 33,
- "text" : "all the other wannabe äöü pa",
- "bidi-level" : 0,
- "gravity" : "south",
- "language" : "en-us",
- "script" : "Latn",
- "font" : {
- "description" : "Cantarell 11",
- "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
- "variations" : {
- "wght" : 0
- },
- "matrix" : [
- 1,
- -0,
- -0,
- 1,
- 0,
- 0
+ }
+ ]
+ }
+ },
+ {
+ "position" : [
+ 0,
+ 54272
+ ],
+ "line" : {
+ "start-index" : 63,
+ "length" : 33,
+ "start-offset" : 61,
+ "n-chars" : 29,
+ "wrapped" : true,
+ "ellipsized" : false,
+ "hyphenated" : true,
+ "justified" : false,
+ "paragraph-start" : false,
+ "paragraph-end" : false,
+ "direction" : "ltr",
+ "runs" : [
+ {
+ "offset" : 63,
+ "length" : 33,
+ "text" : "all the other wannabe äöü pa",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "Latn",
+ "font" : {
+ "description" : "Cantarell 11",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ }
+ },
+ "flags" : 4,
+ "y-offset" : 0,
+ "start-x-offset" : 0,
+ "end-x-offset" : 0,
+ "glyphs" : [
+ {
+ "glyph" : 244,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 0
+ },
+ {
+ "glyph" : 349,
+ "width" : 4096,
+ "is-cluster-start" : true,
+ "log-cluster" : 1
+ },
+ {
+ "glyph" : 349,
+ "width" : 4096,
+ "is-cluster-start" : true,
+ "log-cluster" : 2
+ },
+ {
+ "glyph" : 1109,
+ "width" : 3072,
+ "is-cluster-start" : true,
+ "log-cluster" : 3
+ },
+ {
+ "glyph" : 430,
+ "width" : 5120,
+ "is-cluster-start" : true,
+ "log-cluster" : 4
+ },
+ {
+ "glyph" : 319,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 5
+ },
+ {
+ "glyph" : 287,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 6
+ },
+ {
+ "glyph" : 1109,
+ "width" : 3072,
+ "is-cluster-start" : true,
+ "log-cluster" : 7
+ },
+ {
+ "glyph" : 370,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 8
+ },
+ {
+ "glyph" : 430,
+ "width" : 5120,
+ "is-cluster-start" : true,
+ "log-cluster" : 9
+ },
+ {
+ "glyph" : 319,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 10
+ },
+ {
+ "glyph" : 287,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 11
+ },
+ {
+ "glyph" : 409,
+ "width" : 6144,
+ "is-cluster-start" : true,
+ "log-cluster" : 12
+ },
+ {
+ "glyph" : 1109,
+ "width" : 3072,
+ "is-cluster-start" : true,
+ "log-cluster" : 13
+ },
+ {
+ "glyph" : 467,
+ "width" : 11264,
+ "is-cluster-start" : true,
+ "log-cluster" : 14
+ },
+ {
+ "glyph" : 244,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 15
+ },
+ {
+ "glyph" : 360,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 16
+ },
+ {
+ "glyph" : 360,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 17
+ },
+ {
+ "glyph" : 244,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 18
+ },
+ {
+ "glyph" : 272,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 19
+ },
+ {
+ "glyph" : 287,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 20
+ },
+ {
+ "glyph" : 1109,
+ "width" : 3072,
+ "is-cluster-start" : true,
+ "log-cluster" : 21
+ },
+ {
+ "glyph" : 260,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 22
+ },
+ {
+ "glyph" : 381,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 24
+ },
+ {
+ "glyph" : 444,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 26
+ },
+ {
+ "glyph" : 1109,
+ "width" : 3072,
+ "is-cluster-start" : true,
+ "log-cluster" : 28
+ },
+ {
+ "glyph" : 406,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 29
+ },
+ {
+ "glyph" : 244,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 30
+ },
+ {
+ "glyph" : 268435455,
+ "width" : 0,
+ "is-cluster-start" : true,
+ "log-cluster" : 31
+ },
+ {
+ "glyph" : 1081,
+ "width" : 6144,
+ "log-cluster" : 31
+ }
]
- },
- "flags" : 4,
- "y-offset" : 0,
- "start-x-offset" : 0,
- "end-x-offset" : 0,
- "glyphs" : [
- {
- "glyph" : 244,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 0
- },
- {
- "glyph" : 349,
- "width" : 4096,
- "is-cluster-start" : true,
- "log-cluster" : 1
- },
- {
- "glyph" : 349,
- "width" : 4096,
- "is-cluster-start" : true,
- "log-cluster" : 2
- },
- {
- "glyph" : 1109,
- "width" : 3072,
- "is-cluster-start" : true,
- "log-cluster" : 3
- },
- {
- "glyph" : 430,
- "width" : 5120,
- "is-cluster-start" : true,
- "log-cluster" : 4
- },
- {
- "glyph" : 319,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 5
- },
- {
- "glyph" : 287,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 6
- },
- {
- "glyph" : 1109,
- "width" : 3072,
- "is-cluster-start" : true,
- "log-cluster" : 7
- },
- {
- "glyph" : 370,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 8
- },
- {
- "glyph" : 430,
- "width" : 5120,
- "is-cluster-start" : true,
- "log-cluster" : 9
- },
- {
- "glyph" : 319,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 10
- },
- {
- "glyph" : 287,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 11
- },
- {
- "glyph" : 409,
- "width" : 6144,
- "is-cluster-start" : true,
- "log-cluster" : 12
- },
- {
- "glyph" : 1109,
- "width" : 3072,
- "is-cluster-start" : true,
- "log-cluster" : 13
- },
- {
- "glyph" : 467,
- "width" : 11264,
- "is-cluster-start" : true,
- "log-cluster" : 14
- },
- {
- "glyph" : 244,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 15
- },
- {
- "glyph" : 360,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 16
- },
- {
- "glyph" : 360,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 17
- },
- {
- "glyph" : 244,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 18
- },
- {
- "glyph" : 272,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 19
- },
- {
- "glyph" : 287,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 20
- },
- {
- "glyph" : 1109,
- "width" : 3072,
- "is-cluster-start" : true,
- "log-cluster" : 21
- },
- {
- "glyph" : 260,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 22
- },
- {
- "glyph" : 381,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 24
- },
- {
- "glyph" : 444,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 26
- },
- {
- "glyph" : 1109,
- "width" : 3072,
- "is-cluster-start" : true,
- "log-cluster" : 28
- },
- {
- "glyph" : 406,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 29
- },
- {
- "glyph" : 244,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 30
- },
- {
- "glyph" : 268435455,
- "width" : 0,
- "is-cluster-start" : true,
- "log-cluster" : 31
- },
- {
- "glyph" : 1081,
- "width" : 6144,
- "log-cluster" : 31
- }
- ]
- }
- ]
- },
- {
- "start-index" : 96,
- "length" : 33,
- "paragraph-start" : false,
- "direction" : "ltr",
- "runs" : [
- {
- "offset" : 96,
- "length" : 33,
- "text" : "ragraph tests in this ugh test-",
- "bidi-level" : 0,
- "gravity" : "south",
- "language" : "en-us",
- "script" : "Latn",
- "font" : {
- "description" : "Cantarell 11",
- "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
- "variations" : {
- "wght" : 0
- },
- "matrix" : [
- 1,
- -0,
- -0,
- 1,
- 0,
- 0
+ }
+ ]
+ }
+ },
+ {
+ "position" : [
+ 0,
+ 73728
+ ],
+ "line" : {
+ "start-index" : 96,
+ "length" : 33,
+ "start-offset" : 90,
+ "n-chars" : 32,
+ "wrapped" : true,
+ "ellipsized" : false,
+ "hyphenated" : false,
+ "justified" : false,
+ "paragraph-start" : false,
+ "paragraph-end" : false,
+ "direction" : "ltr",
+ "runs" : [
+ {
+ "offset" : 96,
+ "length" : 33,
+ "text" : "ragraph tests in this ugh test-",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "Latn",
+ "font" : {
+ "description" : "Cantarell 11",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ }
+ },
+ "flags" : 0,
+ "y-offset" : 0,
+ "start-x-offset" : 0,
+ "end-x-offset" : 0,
+ "glyphs" : [
+ {
+ "glyph" : 409,
+ "width" : 6144,
+ "is-cluster-start" : true,
+ "log-cluster" : 0
+ },
+ {
+ "glyph" : 244,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 1
+ },
+ {
+ "glyph" : 268435455,
+ "width" : 0,
+ "is-cluster-start" : true,
+ "log-cluster" : 2
+ },
+ {
+ "glyph" : 312,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 4
+ },
+ {
+ "glyph" : 409,
+ "width" : 6144,
+ "is-cluster-start" : true,
+ "log-cluster" : 5
+ },
+ {
+ "glyph" : 244,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 6
+ },
+ {
+ "glyph" : 406,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 7
+ },
+ {
+ "glyph" : 319,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 8
+ },
+ {
+ "glyph" : 1109,
+ "width" : 3072,
+ "is-cluster-start" : true,
+ "log-cluster" : 9
+ },
+ {
+ "glyph" : 430,
+ "width" : 5120,
+ "is-cluster-start" : true,
+ "log-cluster" : 10
+ },
+ {
+ "glyph" : 287,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 11
+ },
+ {
+ "glyph" : 417,
+ "width" : 7168,
+ "is-cluster-start" : true,
+ "log-cluster" : 12
+ },
+ {
+ "glyph" : 430,
+ "width" : 5120,
+ "is-cluster-start" : true,
+ "log-cluster" : 13
+ },
+ {
+ "glyph" : 417,
+ "width" : 7168,
+ "is-cluster-start" : true,
+ "log-cluster" : 14
+ },
+ {
+ "glyph" : 1109,
+ "width" : 3072,
+ "is-cluster-start" : true,
+ "log-cluster" : 15
+ },
+ {
+ "glyph" : 324,
+ "width" : 4096,
+ "is-cluster-start" : true,
+ "log-cluster" : 16
+ },
+ {
+ "glyph" : 360,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 17
+ },
+ {
+ "glyph" : 1109,
+ "width" : 3072,
+ "is-cluster-start" : true,
+ "log-cluster" : 18
+ },
+ {
+ "glyph" : 430,
+ "width" : 5120,
+ "is-cluster-start" : true,
+ "log-cluster" : 19
+ },
+ {
+ "glyph" : 319,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 20
+ },
+ {
+ "glyph" : 324,
+ "width" : 4096,
+ "is-cluster-start" : true,
+ "log-cluster" : 21
+ },
+ {
+ "glyph" : 417,
+ "width" : 7168,
+ "is-cluster-start" : true,
+ "log-cluster" : 22
+ },
+ {
+ "glyph" : 1109,
+ "width" : 3072,
+ "is-cluster-start" : true,
+ "log-cluster" : 23
+ },
+ {
+ "glyph" : 438,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 24
+ },
+ {
+ "glyph" : 312,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 25
+ },
+ {
+ "glyph" : 319,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 26
+ },
+ {
+ "glyph" : 1109,
+ "width" : 3072,
+ "is-cluster-start" : true,
+ "log-cluster" : 27
+ },
+ {
+ "glyph" : 430,
+ "width" : 5120,
+ "is-cluster-start" : true,
+ "log-cluster" : 28
+ },
+ {
+ "glyph" : 287,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 29
+ },
+ {
+ "glyph" : 417,
+ "width" : 7168,
+ "is-cluster-start" : true,
+ "log-cluster" : 30
+ },
+ {
+ "glyph" : 430,
+ "width" : 5120,
+ "is-cluster-start" : true,
+ "log-cluster" : 31
+ },
+ {
+ "glyph" : 1081,
+ "width" : 6144,
+ "is-cluster-start" : true,
+ "log-cluster" : 32
+ }
]
- },
- "flags" : 0,
- "y-offset" : 0,
- "start-x-offset" : 0,
- "end-x-offset" : 0,
- "glyphs" : [
- {
- "glyph" : 409,
- "width" : 6144,
- "is-cluster-start" : true,
- "log-cluster" : 0
- },
- {
- "glyph" : 244,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 1
- },
- {
- "glyph" : 268435455,
- "width" : 0,
- "is-cluster-start" : true,
- "log-cluster" : 2
- },
- {
- "glyph" : 312,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 4
- },
- {
- "glyph" : 409,
- "width" : 6144,
- "is-cluster-start" : true,
- "log-cluster" : 5
- },
- {
- "glyph" : 244,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 6
- },
- {
- "glyph" : 406,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 7
- },
- {
- "glyph" : 319,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 8
- },
- {
- "glyph" : 1109,
- "width" : 3072,
- "is-cluster-start" : true,
- "log-cluster" : 9
- },
- {
- "glyph" : 430,
- "width" : 5120,
- "is-cluster-start" : true,
- "log-cluster" : 10
- },
- {
- "glyph" : 287,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 11
- },
- {
- "glyph" : 417,
- "width" : 7168,
- "is-cluster-start" : true,
- "log-cluster" : 12
- },
- {
- "glyph" : 430,
- "width" : 5120,
- "is-cluster-start" : true,
- "log-cluster" : 13
- },
- {
- "glyph" : 417,
- "width" : 7168,
- "is-cluster-start" : true,
- "log-cluster" : 14
- },
- {
- "glyph" : 1109,
- "width" : 3072,
- "is-cluster-start" : true,
- "log-cluster" : 15
- },
- {
- "glyph" : 324,
- "width" : 4096,
- "is-cluster-start" : true,
- "log-cluster" : 16
- },
- {
- "glyph" : 360,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 17
- },
- {
- "glyph" : 1109,
- "width" : 3072,
- "is-cluster-start" : true,
- "log-cluster" : 18
- },
- {
- "glyph" : 430,
- "width" : 5120,
- "is-cluster-start" : true,
- "log-cluster" : 19
- },
- {
- "glyph" : 319,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 20
- },
- {
- "glyph" : 324,
- "width" : 4096,
- "is-cluster-start" : true,
- "log-cluster" : 21
- },
- {
- "glyph" : 417,
- "width" : 7168,
- "is-cluster-start" : true,
- "log-cluster" : 22
- },
- {
- "glyph" : 1109,
- "width" : 3072,
- "is-cluster-start" : true,
- "log-cluster" : 23
- },
- {
- "glyph" : 438,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 24
- },
- {
- "glyph" : 312,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 25
- },
- {
- "glyph" : 319,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 26
- },
- {
- "glyph" : 1109,
- "width" : 3072,
- "is-cluster-start" : true,
- "log-cluster" : 27
- },
- {
- "glyph" : 430,
- "width" : 5120,
- "is-cluster-start" : true,
- "log-cluster" : 28
- },
- {
- "glyph" : 287,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 29
- },
- {
- "glyph" : 417,
- "width" : 7168,
- "is-cluster-start" : true,
- "log-cluster" : 30
- },
- {
- "glyph" : 430,
- "width" : 5120,
- "is-cluster-start" : true,
- "log-cluster" : 31
- },
- {
- "glyph" : 1081,
- "width" : 6144,
- "is-cluster-start" : true,
- "log-cluster" : 32
- }
- ]
- }
- ]
- },
- {
- "start-index" : 129,
- "length" : 22,
- "paragraph-start" : false,
- "direction" : "ltr",
- "runs" : [
- {
- "offset" : 129,
- "length" : 22,
- "text" : "case. Grow some lines!",
- "bidi-level" : 0,
- "gravity" : "south",
- "language" : "en-us",
- "script" : "Latn",
- "font" : {
- "description" : "Cantarell 11",
- "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
- "variations" : {
- "wght" : 0
- },
- "matrix" : [
- 1,
- -0,
- -0,
- 1,
- 0,
- 0
+ }
+ ]
+ }
+ },
+ {
+ "position" : [
+ 0,
+ 93184
+ ],
+ "line" : {
+ "start-index" : 129,
+ "length" : 22,
+ "start-offset" : 122,
+ "n-chars" : 22,
+ "wrapped" : false,
+ "ellipsized" : false,
+ "hyphenated" : false,
+ "justified" : false,
+ "paragraph-start" : false,
+ "paragraph-end" : true,
+ "direction" : "ltr",
+ "runs" : [
+ {
+ "offset" : 129,
+ "length" : 22,
+ "text" : "case. Grow some lines!",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "Latn",
+ "font" : {
+ "description" : "Cantarell 11",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ }
+ },
+ "flags" : 0,
+ "y-offset" : 0,
+ "start-x-offset" : 0,
+ "end-x-offset" : 0,
+ "glyphs" : [
+ {
+ "glyph" : 273,
+ "width" : 7168,
+ "is-cluster-start" : true,
+ "log-cluster" : 0
+ },
+ {
+ "glyph" : 244,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 1
+ },
+ {
+ "glyph" : 417,
+ "width" : 7168,
+ "is-cluster-start" : true,
+ "log-cluster" : 2
+ },
+ {
+ "glyph" : 287,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 3
+ },
+ {
+ "glyph" : 1058,
+ "width" : 4096,
+ "is-cluster-start" : true,
+ "log-cluster" : 4
+ },
+ {
+ "glyph" : 1109,
+ "width" : 3072,
+ "is-cluster-start" : true,
+ "log-cluster" : 5
+ },
+ {
+ "glyph" : 69,
+ "width" : 10240,
+ "is-cluster-start" : true,
+ "log-cluster" : 6
+ },
+ {
+ "glyph" : 409,
+ "width" : 6144,
+ "is-cluster-start" : true,
+ "log-cluster" : 7
+ },
+ {
+ "glyph" : 370,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 8
+ },
+ {
+ "glyph" : 467,
+ "width" : 11264,
+ "is-cluster-start" : true,
+ "log-cluster" : 9
+ },
+ {
+ "glyph" : 1109,
+ "width" : 3072,
+ "is-cluster-start" : true,
+ "log-cluster" : 10
+ },
+ {
+ "glyph" : 417,
+ "width" : 7168,
+ "is-cluster-start" : true,
+ "log-cluster" : 11
+ },
+ {
+ "glyph" : 370,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 12
+ },
+ {
+ "glyph" : 358,
+ "width" : 13312,
+ "is-cluster-start" : true,
+ "log-cluster" : 13
+ },
+ {
+ "glyph" : 287,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 14
+ },
+ {
+ "glyph" : 1109,
+ "width" : 3072,
+ "is-cluster-start" : true,
+ "log-cluster" : 15
+ },
+ {
+ "glyph" : 349,
+ "width" : 4096,
+ "is-cluster-start" : true,
+ "log-cluster" : 16
+ },
+ {
+ "glyph" : 324,
+ "width" : 4096,
+ "is-cluster-start" : true,
+ "log-cluster" : 17
+ },
+ {
+ "glyph" : 360,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 18
+ },
+ {
+ "glyph" : 287,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 19
+ },
+ {
+ "glyph" : 417,
+ "width" : 7168,
+ "is-cluster-start" : true,
+ "log-cluster" : 20
+ },
+ {
+ "glyph" : 1063,
+ "width" : 4096,
+ "is-cluster-start" : true,
+ "log-cluster" : 21
+ }
]
- },
- "flags" : 0,
- "y-offset" : 0,
- "start-x-offset" : 0,
- "end-x-offset" : 0,
- "glyphs" : [
- {
- "glyph" : 273,
- "width" : 7168,
- "is-cluster-start" : true,
- "log-cluster" : 0
- },
- {
- "glyph" : 244,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 1
- },
- {
- "glyph" : 417,
- "width" : 7168,
- "is-cluster-start" : true,
- "log-cluster" : 2
- },
- {
- "glyph" : 287,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 3
- },
- {
- "glyph" : 1058,
- "width" : 4096,
- "is-cluster-start" : true,
- "log-cluster" : 4
- },
- {
- "glyph" : 1109,
- "width" : 3072,
- "is-cluster-start" : true,
- "log-cluster" : 5
- },
- {
- "glyph" : 69,
- "width" : 10240,
- "is-cluster-start" : true,
- "log-cluster" : 6
- },
- {
- "glyph" : 409,
- "width" : 6144,
- "is-cluster-start" : true,
- "log-cluster" : 7
- },
- {
- "glyph" : 370,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 8
- },
- {
- "glyph" : 467,
- "width" : 11264,
- "is-cluster-start" : true,
- "log-cluster" : 9
- },
- {
- "glyph" : 1109,
- "width" : 3072,
- "is-cluster-start" : true,
- "log-cluster" : 10
- },
- {
- "glyph" : 417,
- "width" : 7168,
- "is-cluster-start" : true,
- "log-cluster" : 11
- },
- {
- "glyph" : 370,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 12
- },
- {
- "glyph" : 358,
- "width" : 13312,
- "is-cluster-start" : true,
- "log-cluster" : 13
- },
- {
- "glyph" : 287,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 14
- },
- {
- "glyph" : 1109,
- "width" : 3072,
- "is-cluster-start" : true,
- "log-cluster" : 15
- },
- {
- "glyph" : 349,
- "width" : 4096,
- "is-cluster-start" : true,
- "log-cluster" : 16
- },
- {
- "glyph" : 324,
- "width" : 4096,
- "is-cluster-start" : true,
- "log-cluster" : 17
- },
- {
- "glyph" : 360,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 18
- },
- {
- "glyph" : 287,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 19
- },
- {
- "glyph" : 417,
- "width" : 7168,
- "is-cluster-start" : true,
- "log-cluster" : 20
- },
- {
- "glyph" : 1063,
- "width" : 4096,
- "is-cluster-start" : true,
- "log-cluster" : 21
- }
- ]
- }
- ]
+ }
+ ]
+ }
}
]
}
diff --git a/tests/layouts/valid-5.layout b/tests/layouts/valid-5.layout
index 57ebaea0..6af0f947 100644
--- a/tests/layouts/valid-5.layout
+++ b/tests/layouts/valid-5.layout
@@ -26,1748 +26,1779 @@
],
"font" : "Cantarell 11",
"width" : 194560,
+ "log-attrs" : [
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-start" : true,
+ "sentence-boundary" : true,
+ "sentence-start" : true,
+ "backspace-deletes-character" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "word-end" : true,
+ "expandable-space" : true,
+ "word-boundary" : true
+ },
+ {
+ "line-break" : true,
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-start" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "word-end" : true,
+ "expandable-space" : true,
+ "word-boundary" : true
+ },
+ {
+ "line-break" : true,
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-start" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "word-end" : true,
+ "expandable-space" : true,
+ "word-boundary" : true
+ },
+ {
+ "line-break" : true,
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-start" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "word-end" : true,
+ "expandable-space" : true,
+ "word-boundary" : true
+ },
+ {
+ "line-break" : true,
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-start" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "word-end" : true,
+ "expandable-space" : true,
+ "word-boundary" : true
+ },
+ {
+ "line-break" : true,
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-start" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "word-end" : true,
+ "expandable-space" : true,
+ "word-boundary" : true
+ },
+ {
+ "line-break" : true,
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-start" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "word-end" : true,
+ "expandable-space" : true,
+ "word-boundary" : true
+ },
+ {
+ "line-break" : true,
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-start" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-end" : true,
+ "word-boundary" : true
+ },
+ {
+ "line-break" : true,
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-start" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "word-end" : true,
+ "expandable-space" : true,
+ "word-boundary" : true
+ },
+ {
+ "line-break" : true,
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-start" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-end" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "expandable-space" : true,
+ "word-boundary" : true
+ },
+ {
+ "line-break" : true,
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-start" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "word-end" : true,
+ "expandable-space" : true,
+ "word-boundary" : true
+ },
+ {
+ "line-break" : true,
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-start" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "word-end" : true,
+ "expandable-space" : true,
+ "word-boundary" : true
+ },
+ {
+ "line-break" : true,
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-start" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "word-end" : true,
+ "expandable-space" : true,
+ "word-boundary" : true
+ },
+ {
+ "line-break" : true,
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-start" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "word-end" : true,
+ "expandable-space" : true,
+ "word-boundary" : true
+ },
+ {
+ "line-break" : true,
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-start" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-end" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "sentence-end" : true,
+ "word-boundary" : true
+ },
+ {
+ "line-break" : true,
+ "mandatory-break" : true,
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-start" : true,
+ "sentence-boundary" : true,
+ "sentence-start" : true,
+ "backspace-deletes-character" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "word-end" : true,
+ "expandable-space" : true,
+ "word-boundary" : true
+ },
+ {
+ "line-break" : true,
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-start" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "word-end" : true,
+ "expandable-space" : true,
+ "word-boundary" : true
+ },
+ {
+ "line-break" : true,
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-start" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-end" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-start" : true
+ },
+ {
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "word-end" : true,
+ "expandable-space" : true,
+ "word-boundary" : true
+ },
+ {
+ "line-break" : true,
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-start" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "word-end" : true,
+ "expandable-space" : true,
+ "word-boundary" : true
+ },
+ {
+ "line-break" : true,
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-start" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "word-end" : true,
+ "expandable-space" : true,
+ "word-boundary" : true
+ },
+ {
+ "line-break" : true,
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-start" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "word-end" : true,
+ "expandable-space" : true,
+ "word-boundary" : true
+ },
+ {
+ "line-break" : true,
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-start" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-end" : true,
+ "word-boundary" : true
+ },
+ {
+ "line-break" : true,
+ "mandatory-break" : true,
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "sentence-boundary" : true,
+ "sentence-end" : true,
+ "word-boundary" : true
+ }
+ ],
"output" : {
- "is-wrapped" : true,
- "is-ellipsized" : false,
+ "wrapped" : true,
+ "ellipsized" : false,
+ "hypenated" : false,
"unknown-glyphs" : 0,
"width" : 194560,
"height" : 116736,
- "log-attrs" : [
- {
- "char-break" : true,
- "cursor-position" : true,
- "word-start" : true,
- "sentence-boundary" : true,
- "sentence-start" : true,
- "backspace-deletes-character" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "word-end" : true,
- "expandable-space" : true,
- "word-boundary" : true
- },
- {
- "line-break" : true,
- "char-break" : true,
- "cursor-position" : true,
- "word-start" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "word-end" : true,
- "expandable-space" : true,
- "word-boundary" : true
- },
- {
- "line-break" : true,
- "char-break" : true,
- "cursor-position" : true,
- "word-start" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "word-end" : true,
- "expandable-space" : true,
- "word-boundary" : true
- },
- {
- "line-break" : true,
- "char-break" : true,
- "cursor-position" : true,
- "word-start" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "word-end" : true,
- "expandable-space" : true,
- "word-boundary" : true
- },
- {
- "line-break" : true,
- "char-break" : true,
- "cursor-position" : true,
- "word-start" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "word-end" : true,
- "expandable-space" : true,
- "word-boundary" : true
- },
- {
- "line-break" : true,
- "char-break" : true,
- "cursor-position" : true,
- "word-start" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "word-end" : true,
- "expandable-space" : true,
- "word-boundary" : true
- },
- {
- "line-break" : true,
- "char-break" : true,
- "cursor-position" : true,
- "word-start" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "word-end" : true,
- "expandable-space" : true,
- "word-boundary" : true
- },
- {
- "line-break" : true,
- "char-break" : true,
- "cursor-position" : true,
- "word-start" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "word-end" : true,
- "word-boundary" : true
- },
- {
- "line-break" : true,
- "char-break" : true,
- "cursor-position" : true,
- "word-start" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "word-end" : true,
- "expandable-space" : true,
- "word-boundary" : true
- },
- {
- "line-break" : true,
- "char-break" : true,
- "cursor-position" : true,
- "word-start" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "word-end" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "expandable-space" : true,
- "word-boundary" : true
- },
- {
- "line-break" : true,
- "char-break" : true,
- "cursor-position" : true,
- "word-start" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "word-end" : true,
- "expandable-space" : true,
- "word-boundary" : true
- },
- {
- "line-break" : true,
- "char-break" : true,
- "cursor-position" : true,
- "word-start" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "word-end" : true,
- "expandable-space" : true,
- "word-boundary" : true
- },
- {
- "line-break" : true,
- "char-break" : true,
- "cursor-position" : true,
- "word-start" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "word-end" : true,
- "expandable-space" : true,
- "word-boundary" : true
- },
- {
- "line-break" : true,
- "char-break" : true,
- "cursor-position" : true,
- "word-start" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "word-end" : true,
- "expandable-space" : true,
- "word-boundary" : true
- },
- {
- "line-break" : true,
- "char-break" : true,
- "cursor-position" : true,
- "word-start" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "word-end" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "sentence-end" : true,
- "word-boundary" : true
- },
- {
- "line-break" : true,
- "mandatory-break" : true,
- "char-break" : true,
- "cursor-position" : true,
- "word-start" : true,
- "sentence-boundary" : true,
- "sentence-start" : true,
- "backspace-deletes-character" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "word-end" : true,
- "expandable-space" : true,
- "word-boundary" : true
- },
- {
- "line-break" : true,
- "char-break" : true,
- "cursor-position" : true,
- "word-start" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "word-end" : true,
- "expandable-space" : true,
- "word-boundary" : true
- },
- {
- "line-break" : true,
- "char-break" : true,
- "cursor-position" : true,
- "word-start" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "word-end" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "word-start" : true
- },
- {
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "word-end" : true,
- "expandable-space" : true,
- "word-boundary" : true
- },
- {
- "line-break" : true,
- "char-break" : true,
- "cursor-position" : true,
- "word-start" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "word-end" : true,
- "expandable-space" : true,
- "word-boundary" : true
- },
- {
- "line-break" : true,
- "char-break" : true,
- "cursor-position" : true,
- "word-start" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "word-end" : true,
- "expandable-space" : true,
- "word-boundary" : true
- },
- {
- "line-break" : true,
- "char-break" : true,
- "cursor-position" : true,
- "word-start" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "word-end" : true,
- "expandable-space" : true,
- "word-boundary" : true
- },
- {
- "line-break" : true,
- "char-break" : true,
- "cursor-position" : true,
- "word-start" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "word-end" : true,
- "word-boundary" : true
- },
- {
- "line-break" : true,
- "mandatory-break" : true,
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "sentence-boundary" : true,
- "sentence-end" : true,
- "word-boundary" : true
- }
- ],
"lines" : [
{
- "start-index" : 0,
- "length" : 21,
- "paragraph-start" : true,
- "direction" : "ltr",
- "runs" : [
- {
- "offset" : 0,
- "length" : 21,
- "text" : "A test with multiple ",
- "bidi-level" : 0,
- "gravity" : "south",
- "language" : "en-us",
- "script" : "Latn",
- "font" : {
- "description" : "Cantarell 11",
- "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
- "variations" : {
- "wght" : 0
- },
- "matrix" : [
- 1,
- -0,
- -0,
- 1,
- 0,
- 0
+ "position" : [
+ 0,
+ 15360
+ ],
+ "line" : {
+ "start-index" : 0,
+ "length" : 21,
+ "start-offset" : 0,
+ "n-chars" : 21,
+ "wrapped" : true,
+ "ellipsized" : false,
+ "hyphenated" : false,
+ "justified" : false,
+ "paragraph-start" : true,
+ "paragraph-end" : false,
+ "direction" : "ltr",
+ "runs" : [
+ {
+ "offset" : 0,
+ "length" : 21,
+ "text" : "A test with multiple ",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "Latn",
+ "font" : {
+ "description" : "Cantarell 11",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ }
+ },
+ "flags" : 0,
+ "extra-attributes" : [
+ {
+ "start" : 21,
+ "end" : 31,
+ "type" : "font-features",
+ "value" : "tnum=1"
+ }
+ ],
+ "y-offset" : 0,
+ "start-x-offset" : 0,
+ "end-x-offset" : 0,
+ "glyphs" : [
+ {
+ "glyph" : 1,
+ "width" : 9216,
+ "is-cluster-start" : true,
+ "log-cluster" : 0
+ },
+ {
+ "glyph" : 1109,
+ "width" : 3072,
+ "is-cluster-start" : true,
+ "log-cluster" : 1
+ },
+ {
+ "glyph" : 430,
+ "width" : 5120,
+ "is-cluster-start" : true,
+ "log-cluster" : 2
+ },
+ {
+ "glyph" : 287,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 3
+ },
+ {
+ "glyph" : 417,
+ "width" : 7168,
+ "is-cluster-start" : true,
+ "log-cluster" : 4
+ },
+ {
+ "glyph" : 430,
+ "width" : 5120,
+ "is-cluster-start" : true,
+ "log-cluster" : 5
+ },
+ {
+ "glyph" : 1109,
+ "width" : 3072,
+ "is-cluster-start" : true,
+ "log-cluster" : 6
+ },
+ {
+ "glyph" : 467,
+ "width" : 11264,
+ "is-cluster-start" : true,
+ "log-cluster" : 7
+ },
+ {
+ "glyph" : 324,
+ "width" : 4096,
+ "is-cluster-start" : true,
+ "log-cluster" : 8
+ },
+ {
+ "glyph" : 430,
+ "width" : 5120,
+ "is-cluster-start" : true,
+ "log-cluster" : 9
+ },
+ {
+ "glyph" : 319,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 10
+ },
+ {
+ "glyph" : 1109,
+ "width" : 3072,
+ "is-cluster-start" : true,
+ "log-cluster" : 11
+ },
+ {
+ "glyph" : 358,
+ "width" : 13312,
+ "is-cluster-start" : true,
+ "log-cluster" : 12
+ },
+ {
+ "glyph" : 438,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 13
+ },
+ {
+ "glyph" : 349,
+ "width" : 4096,
+ "is-cluster-start" : true,
+ "log-cluster" : 14
+ },
+ {
+ "glyph" : 430,
+ "width" : 5120,
+ "is-cluster-start" : true,
+ "log-cluster" : 15
+ },
+ {
+ "glyph" : 324,
+ "width" : 4096,
+ "is-cluster-start" : true,
+ "log-cluster" : 16
+ },
+ {
+ "glyph" : 406,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 17
+ },
+ {
+ "glyph" : 349,
+ "width" : 4096,
+ "is-cluster-start" : true,
+ "log-cluster" : 18
+ },
+ {
+ "glyph" : 287,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 19
+ },
+ {
+ "glyph" : 268435455,
+ "width" : 0,
+ "is-cluster-start" : true,
+ "log-cluster" : 20
+ }
]
- },
- "flags" : 0,
- "extra-attributes" : [
- {
- "start" : 21,
- "end" : 31,
- "type" : "font-features",
- "value" : "tnum=1"
- }
- ],
- "y-offset" : 0,
- "start-x-offset" : 0,
- "end-x-offset" : 0,
- "glyphs" : [
- {
- "glyph" : 1,
- "width" : 9216,
- "is-cluster-start" : true,
- "log-cluster" : 0
- },
- {
- "glyph" : 1109,
- "width" : 3072,
- "is-cluster-start" : true,
- "log-cluster" : 1
- },
- {
- "glyph" : 430,
- "width" : 5120,
- "is-cluster-start" : true,
- "log-cluster" : 2
- },
- {
- "glyph" : 287,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 3
- },
- {
- "glyph" : 417,
- "width" : 7168,
- "is-cluster-start" : true,
- "log-cluster" : 4
- },
- {
- "glyph" : 430,
- "width" : 5120,
- "is-cluster-start" : true,
- "log-cluster" : 5
- },
- {
- "glyph" : 1109,
- "width" : 3072,
- "is-cluster-start" : true,
- "log-cluster" : 6
- },
- {
- "glyph" : 467,
- "width" : 11264,
- "is-cluster-start" : true,
- "log-cluster" : 7
- },
- {
- "glyph" : 324,
- "width" : 4096,
- "is-cluster-start" : true,
- "log-cluster" : 8
- },
- {
- "glyph" : 430,
- "width" : 5120,
- "is-cluster-start" : true,
- "log-cluster" : 9
- },
- {
- "glyph" : 319,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 10
- },
- {
- "glyph" : 1109,
- "width" : 3072,
- "is-cluster-start" : true,
- "log-cluster" : 11
- },
- {
- "glyph" : 358,
- "width" : 13312,
- "is-cluster-start" : true,
- "log-cluster" : 12
- },
- {
- "glyph" : 438,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 13
- },
- {
- "glyph" : 349,
- "width" : 4096,
- "is-cluster-start" : true,
- "log-cluster" : 14
- },
- {
- "glyph" : 430,
- "width" : 5120,
- "is-cluster-start" : true,
- "log-cluster" : 15
- },
- {
- "glyph" : 324,
- "width" : 4096,
- "is-cluster-start" : true,
- "log-cluster" : 16
- },
- {
- "glyph" : 406,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 17
- },
- {
- "glyph" : 349,
- "width" : 4096,
- "is-cluster-start" : true,
- "log-cluster" : 18
- },
- {
- "glyph" : 287,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 19
- },
- {
- "glyph" : 268435455,
- "width" : 0,
- "is-cluster-start" : true,
- "log-cluster" : 20
- }
- ]
- }
- ]
- },
- {
- "start-index" : 21,
- "length" : 23,
- "paragraph-start" : false,
- "direction" : "ltr",
- "runs" : [
- {
- "offset" : 21,
- "length" : 23,
- "text" : "paragraphs and with no-",
- "bidi-level" : 0,
- "gravity" : "south",
- "language" : "en-us",
- "script" : "Latn",
- "font" : {
- "description" : "Cantarell 11",
- "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
- "variations" : {
- "wght" : 0
- },
- "matrix" : [
- 1,
- -0,
- -0,
- 1,
- 0,
- 0
+ }
+ ]
+ }
+ },
+ {
+ "position" : [
+ 0,
+ 34816
+ ],
+ "line" : {
+ "start-index" : 21,
+ "length" : 23,
+ "start-offset" : 21,
+ "n-chars" : 23,
+ "wrapped" : true,
+ "ellipsized" : false,
+ "hyphenated" : false,
+ "justified" : false,
+ "paragraph-start" : false,
+ "paragraph-end" : false,
+ "direction" : "ltr",
+ "runs" : [
+ {
+ "offset" : 21,
+ "length" : 23,
+ "text" : "paragraphs and with no-",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "Latn",
+ "font" : {
+ "description" : "Cantarell 11",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ }
+ },
+ "flags" : 0,
+ "extra-attributes" : [
+ {
+ "start" : 21,
+ "end" : 31,
+ "type" : "font-features",
+ "value" : "tnum=1"
+ }
+ ],
+ "y-offset" : 0,
+ "start-x-offset" : 0,
+ "end-x-offset" : 0,
+ "glyphs" : [
+ {
+ "glyph" : 406,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 0
+ },
+ {
+ "glyph" : 244,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 1
+ },
+ {
+ "glyph" : 409,
+ "width" : 6144,
+ "is-cluster-start" : true,
+ "log-cluster" : 2
+ },
+ {
+ "glyph" : 244,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 3
+ },
+ {
+ "glyph" : 312,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 4
+ },
+ {
+ "glyph" : 409,
+ "width" : 6144,
+ "is-cluster-start" : true,
+ "log-cluster" : 5
+ },
+ {
+ "glyph" : 244,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 6
+ },
+ {
+ "glyph" : 406,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 7
+ },
+ {
+ "glyph" : 319,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 8
+ },
+ {
+ "glyph" : 417,
+ "width" : 7168,
+ "is-cluster-start" : true,
+ "log-cluster" : 9
+ },
+ {
+ "glyph" : 1109,
+ "width" : 3072,
+ "is-cluster-start" : true,
+ "log-cluster" : 10
+ },
+ {
+ "glyph" : 244,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 11
+ },
+ {
+ "glyph" : 360,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 12
+ },
+ {
+ "glyph" : 280,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 13
+ },
+ {
+ "glyph" : 1109,
+ "width" : 3072,
+ "is-cluster-start" : true,
+ "log-cluster" : 14
+ },
+ {
+ "glyph" : 467,
+ "width" : 11264,
+ "is-cluster-start" : true,
+ "log-cluster" : 15
+ },
+ {
+ "glyph" : 324,
+ "width" : 4096,
+ "is-cluster-start" : true,
+ "log-cluster" : 16
+ },
+ {
+ "glyph" : 430,
+ "width" : 5120,
+ "is-cluster-start" : true,
+ "log-cluster" : 17
+ },
+ {
+ "glyph" : 319,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 18
+ },
+ {
+ "glyph" : 1109,
+ "width" : 3072,
+ "is-cluster-start" : true,
+ "log-cluster" : 19
+ },
+ {
+ "glyph" : 360,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 20
+ },
+ {
+ "glyph" : 370,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 21
+ },
+ {
+ "glyph" : 1081,
+ "width" : 6144,
+ "is-cluster-start" : true,
+ "log-cluster" : 22
+ }
]
- },
- "flags" : 0,
- "extra-attributes" : [
- {
- "start" : 21,
- "end" : 31,
- "type" : "font-features",
- "value" : "tnum=1"
- }
- ],
- "y-offset" : 0,
- "start-x-offset" : 0,
- "end-x-offset" : 0,
- "glyphs" : [
- {
- "glyph" : 406,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 0
- },
- {
- "glyph" : 244,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 1
- },
- {
- "glyph" : 409,
- "width" : 6144,
- "is-cluster-start" : true,
- "log-cluster" : 2
- },
- {
- "glyph" : 244,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 3
- },
- {
- "glyph" : 312,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 4
- },
- {
- "glyph" : 409,
- "width" : 6144,
- "is-cluster-start" : true,
- "log-cluster" : 5
- },
- {
- "glyph" : 244,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 6
- },
- {
- "glyph" : 406,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 7
- },
- {
- "glyph" : 319,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 8
- },
- {
- "glyph" : 417,
- "width" : 7168,
- "is-cluster-start" : true,
- "log-cluster" : 9
- },
- {
- "glyph" : 1109,
- "width" : 3072,
- "is-cluster-start" : true,
- "log-cluster" : 10
- },
- {
- "glyph" : 244,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 11
- },
- {
- "glyph" : 360,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 12
- },
- {
- "glyph" : 280,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 13
- },
- {
- "glyph" : 1109,
- "width" : 3072,
- "is-cluster-start" : true,
- "log-cluster" : 14
- },
- {
- "glyph" : 467,
- "width" : 11264,
- "is-cluster-start" : true,
- "log-cluster" : 15
- },
- {
- "glyph" : 324,
- "width" : 4096,
- "is-cluster-start" : true,
- "log-cluster" : 16
- },
- {
- "glyph" : 430,
- "width" : 5120,
- "is-cluster-start" : true,
- "log-cluster" : 17
- },
- {
- "glyph" : 319,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 18
- },
- {
- "glyph" : 1109,
- "width" : 3072,
- "is-cluster-start" : true,
- "log-cluster" : 19
- },
- {
- "glyph" : 360,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 20
- },
- {
- "glyph" : 370,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 21
- },
- {
- "glyph" : 1081,
- "width" : 6144,
- "is-cluster-start" : true,
- "log-cluster" : 22
- }
- ]
- }
- ]
- },
- {
- "start-index" : 44,
- "length" : 30,
- "paragraph-start" : false,
- "direction" : "ltr",
- "runs" : [
- {
- "offset" : 44,
- "length" : 30,
- "text" : "break attributes, which might ",
- "bidi-level" : 0,
- "gravity" : "south",
- "language" : "en-us",
- "script" : "Latn",
- "font" : {
- "description" : "Cantarell 11",
- "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
- "variations" : {
- "wght" : 0
- },
- "matrix" : [
- 1,
- -0,
- -0,
- 1,
- 0,
- 0
+ }
+ ]
+ }
+ },
+ {
+ "position" : [
+ 0,
+ 54272
+ ],
+ "line" : {
+ "start-index" : 44,
+ "length" : 30,
+ "start-offset" : 44,
+ "n-chars" : 30,
+ "wrapped" : true,
+ "ellipsized" : false,
+ "hyphenated" : false,
+ "justified" : false,
+ "paragraph-start" : false,
+ "paragraph-end" : false,
+ "direction" : "ltr",
+ "runs" : [
+ {
+ "offset" : 44,
+ "length" : 30,
+ "text" : "break attributes, which might ",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "Latn",
+ "font" : {
+ "description" : "Cantarell 11",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ }
+ },
+ "flags" : 0,
+ "extra-attributes" : [
+ {
+ "start" : 21,
+ "end" : 31,
+ "type" : "font-features",
+ "value" : "tnum=1"
+ }
+ ],
+ "y-offset" : 0,
+ "start-x-offset" : 0,
+ "end-x-offset" : 0,
+ "glyphs" : [
+ {
+ "glyph" : 272,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 0
+ },
+ {
+ "glyph" : 409,
+ "width" : 6144,
+ "is-cluster-start" : true,
+ "log-cluster" : 1
+ },
+ {
+ "glyph" : 287,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 2
+ },
+ {
+ "glyph" : 244,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 3
+ },
+ {
+ "glyph" : 345,
+ "width" : 7168,
+ "is-cluster-start" : true,
+ "log-cluster" : 4
+ },
+ {
+ "glyph" : 1109,
+ "width" : 3072,
+ "is-cluster-start" : true,
+ "log-cluster" : 5
+ },
+ {
+ "glyph" : 244,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 6
+ },
+ {
+ "glyph" : 430,
+ "width" : 5120,
+ "is-cluster-start" : true,
+ "log-cluster" : 7
+ },
+ {
+ "glyph" : 430,
+ "width" : 5120,
+ "is-cluster-start" : true,
+ "log-cluster" : 8
+ },
+ {
+ "glyph" : 409,
+ "width" : 6144,
+ "is-cluster-start" : true,
+ "log-cluster" : 9
+ },
+ {
+ "glyph" : 324,
+ "width" : 4096,
+ "is-cluster-start" : true,
+ "log-cluster" : 10
+ },
+ {
+ "glyph" : 272,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 11
+ },
+ {
+ "glyph" : 438,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 12
+ },
+ {
+ "glyph" : 430,
+ "width" : 5120,
+ "is-cluster-start" : true,
+ "log-cluster" : 13
+ },
+ {
+ "glyph" : 287,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 14
+ },
+ {
+ "glyph" : 417,
+ "width" : 7168,
+ "is-cluster-start" : true,
+ "log-cluster" : 15
+ },
+ {
+ "glyph" : 1059,
+ "width" : 4096,
+ "is-cluster-start" : true,
+ "log-cluster" : 16
+ },
+ {
+ "glyph" : 1109,
+ "width" : 3072,
+ "is-cluster-start" : true,
+ "log-cluster" : 17
+ },
+ {
+ "glyph" : 467,
+ "width" : 11264,
+ "is-cluster-start" : true,
+ "log-cluster" : 18
+ },
+ {
+ "glyph" : 319,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 19
+ },
+ {
+ "glyph" : 324,
+ "width" : 4096,
+ "is-cluster-start" : true,
+ "log-cluster" : 20
+ },
+ {
+ "glyph" : 273,
+ "width" : 7168,
+ "is-cluster-start" : true,
+ "log-cluster" : 21
+ },
+ {
+ "glyph" : 319,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 22
+ },
+ {
+ "glyph" : 1109,
+ "width" : 3072,
+ "is-cluster-start" : true,
+ "log-cluster" : 23
+ },
+ {
+ "glyph" : 358,
+ "width" : 13312,
+ "is-cluster-start" : true,
+ "log-cluster" : 24
+ },
+ {
+ "glyph" : 324,
+ "width" : 4096,
+ "is-cluster-start" : true,
+ "log-cluster" : 25
+ },
+ {
+ "glyph" : 312,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 26
+ },
+ {
+ "glyph" : 319,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 27
+ },
+ {
+ "glyph" : 430,
+ "width" : 5120,
+ "is-cluster-start" : true,
+ "log-cluster" : 28
+ },
+ {
+ "glyph" : 268435455,
+ "width" : 0,
+ "is-cluster-start" : true,
+ "log-cluster" : 29
+ }
]
- },
- "flags" : 0,
- "extra-attributes" : [
- {
- "start" : 21,
- "end" : 31,
- "type" : "font-features",
- "value" : "tnum=1"
- }
- ],
- "y-offset" : 0,
- "start-x-offset" : 0,
- "end-x-offset" : 0,
- "glyphs" : [
- {
- "glyph" : 272,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 0
- },
- {
- "glyph" : 409,
- "width" : 6144,
- "is-cluster-start" : true,
- "log-cluster" : 1
- },
- {
- "glyph" : 287,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 2
- },
- {
- "glyph" : 244,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 3
- },
- {
- "glyph" : 345,
- "width" : 7168,
- "is-cluster-start" : true,
- "log-cluster" : 4
- },
- {
- "glyph" : 1109,
- "width" : 3072,
- "is-cluster-start" : true,
- "log-cluster" : 5
- },
- {
- "glyph" : 244,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 6
- },
- {
- "glyph" : 430,
- "width" : 5120,
- "is-cluster-start" : true,
- "log-cluster" : 7
- },
- {
- "glyph" : 430,
- "width" : 5120,
- "is-cluster-start" : true,
- "log-cluster" : 8
- },
- {
- "glyph" : 409,
- "width" : 6144,
- "is-cluster-start" : true,
- "log-cluster" : 9
- },
- {
- "glyph" : 324,
- "width" : 4096,
- "is-cluster-start" : true,
- "log-cluster" : 10
- },
- {
- "glyph" : 272,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 11
- },
- {
- "glyph" : 438,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 12
- },
- {
- "glyph" : 430,
- "width" : 5120,
- "is-cluster-start" : true,
- "log-cluster" : 13
- },
- {
- "glyph" : 287,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 14
- },
- {
- "glyph" : 417,
- "width" : 7168,
- "is-cluster-start" : true,
- "log-cluster" : 15
- },
- {
- "glyph" : 1059,
- "width" : 4096,
- "is-cluster-start" : true,
- "log-cluster" : 16
- },
- {
- "glyph" : 1109,
- "width" : 3072,
- "is-cluster-start" : true,
- "log-cluster" : 17
- },
- {
- "glyph" : 467,
- "width" : 11264,
- "is-cluster-start" : true,
- "log-cluster" : 18
- },
- {
- "glyph" : 319,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 19
- },
- {
- "glyph" : 324,
- "width" : 4096,
- "is-cluster-start" : true,
- "log-cluster" : 20
- },
- {
- "glyph" : 273,
- "width" : 7168,
- "is-cluster-start" : true,
- "log-cluster" : 21
- },
- {
- "glyph" : 319,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 22
- },
- {
- "glyph" : 1109,
- "width" : 3072,
- "is-cluster-start" : true,
- "log-cluster" : 23
- },
- {
- "glyph" : 358,
- "width" : 13312,
- "is-cluster-start" : true,
- "log-cluster" : 24
- },
- {
- "glyph" : 324,
- "width" : 4096,
- "is-cluster-start" : true,
- "log-cluster" : 25
- },
- {
- "glyph" : 312,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 26
- },
- {
- "glyph" : 319,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 27
- },
- {
- "glyph" : 430,
- "width" : 5120,
- "is-cluster-start" : true,
- "log-cluster" : 28
- },
- {
- "glyph" : 268435455,
- "width" : 0,
- "is-cluster-start" : true,
- "log-cluster" : 29
- }
- ]
- }
- ]
- },
- {
- "start-index" : 74,
- "length" : 16,
- "paragraph-start" : false,
- "direction" : "ltr",
- "runs" : [
- {
- "offset" : 74,
- "length" : 16,
- "text" : "trigger a crash.",
- "bidi-level" : 0,
- "gravity" : "south",
- "language" : "en-us",
- "script" : "Latn",
- "font" : {
- "description" : "Cantarell 11",
- "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
- "variations" : {
- "wght" : 0
- },
- "matrix" : [
- 1,
- -0,
- -0,
- 1,
- 0,
- 0
+ }
+ ]
+ }
+ },
+ {
+ "position" : [
+ 0,
+ 73728
+ ],
+ "line" : {
+ "start-index" : 74,
+ "length" : 16,
+ "start-offset" : 74,
+ "n-chars" : 16,
+ "wrapped" : false,
+ "ellipsized" : false,
+ "hyphenated" : false,
+ "justified" : false,
+ "paragraph-start" : false,
+ "paragraph-end" : true,
+ "direction" : "ltr",
+ "runs" : [
+ {
+ "offset" : 74,
+ "length" : 16,
+ "text" : "trigger a crash.",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "Latn",
+ "font" : {
+ "description" : "Cantarell 11",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ }
+ },
+ "flags" : 0,
+ "extra-attributes" : [
+ {
+ "start" : 21,
+ "end" : 31,
+ "type" : "font-features",
+ "value" : "tnum=1"
+ }
+ ],
+ "y-offset" : 0,
+ "start-x-offset" : 0,
+ "end-x-offset" : 0,
+ "glyphs" : [
+ {
+ "glyph" : 430,
+ "width" : 5120,
+ "is-cluster-start" : true,
+ "log-cluster" : 0
+ },
+ {
+ "glyph" : 409,
+ "width" : 6144,
+ "is-cluster-start" : true,
+ "log-cluster" : 1
+ },
+ {
+ "glyph" : 324,
+ "width" : 4096,
+ "is-cluster-start" : true,
+ "log-cluster" : 2
+ },
+ {
+ "glyph" : 312,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 3
+ },
+ {
+ "glyph" : 312,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 4
+ },
+ {
+ "glyph" : 287,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 5
+ },
+ {
+ "glyph" : 409,
+ "width" : 6144,
+ "is-cluster-start" : true,
+ "log-cluster" : 6
+ },
+ {
+ "glyph" : 1109,
+ "width" : 3072,
+ "is-cluster-start" : true,
+ "log-cluster" : 7
+ },
+ {
+ "glyph" : 244,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 8
+ },
+ {
+ "glyph" : 1109,
+ "width" : 3072,
+ "is-cluster-start" : true,
+ "log-cluster" : 9
+ },
+ {
+ "glyph" : 273,
+ "width" : 7168,
+ "is-cluster-start" : true,
+ "log-cluster" : 10
+ },
+ {
+ "glyph" : 409,
+ "width" : 6144,
+ "is-cluster-start" : true,
+ "log-cluster" : 11
+ },
+ {
+ "glyph" : 244,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 12
+ },
+ {
+ "glyph" : 417,
+ "width" : 7168,
+ "is-cluster-start" : true,
+ "log-cluster" : 13
+ },
+ {
+ "glyph" : 319,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 14
+ },
+ {
+ "glyph" : 1058,
+ "width" : 4096,
+ "is-cluster-start" : true,
+ "log-cluster" : 15
+ }
]
- },
- "flags" : 0,
- "extra-attributes" : [
- {
- "start" : 21,
- "end" : 31,
- "type" : "font-features",
- "value" : "tnum=1"
- }
- ],
- "y-offset" : 0,
- "start-x-offset" : 0,
- "end-x-offset" : 0,
- "glyphs" : [
- {
- "glyph" : 430,
- "width" : 5120,
- "is-cluster-start" : true,
- "log-cluster" : 0
- },
- {
- "glyph" : 409,
- "width" : 6144,
- "is-cluster-start" : true,
- "log-cluster" : 1
- },
- {
- "glyph" : 324,
- "width" : 4096,
- "is-cluster-start" : true,
- "log-cluster" : 2
- },
- {
- "glyph" : 312,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 3
- },
- {
- "glyph" : 312,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 4
- },
- {
- "glyph" : 287,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 5
- },
- {
- "glyph" : 409,
- "width" : 6144,
- "is-cluster-start" : true,
- "log-cluster" : 6
- },
- {
- "glyph" : 1109,
- "width" : 3072,
- "is-cluster-start" : true,
- "log-cluster" : 7
- },
- {
- "glyph" : 244,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 8
- },
- {
- "glyph" : 1109,
- "width" : 3072,
- "is-cluster-start" : true,
- "log-cluster" : 9
- },
- {
- "glyph" : 273,
- "width" : 7168,
- "is-cluster-start" : true,
- "log-cluster" : 10
- },
- {
- "glyph" : 409,
- "width" : 6144,
- "is-cluster-start" : true,
- "log-cluster" : 11
- },
- {
- "glyph" : 244,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 12
- },
- {
- "glyph" : 417,
- "width" : 7168,
- "is-cluster-start" : true,
- "log-cluster" : 13
- },
- {
- "glyph" : 319,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 14
- },
- {
- "glyph" : 1058,
- "width" : 4096,
- "is-cluster-start" : true,
- "log-cluster" : 15
- }
- ]
- }
- ]
- },
- {
- "start-index" : 91,
- "length" : 26,
- "paragraph-start" : true,
- "direction" : "ltr",
- "runs" : [
- {
- "offset" : 91,
- "length" : 26,
- "text" : "If it doesn't the fix has ",
- "bidi-level" : 0,
- "gravity" : "south",
- "language" : "en-us",
- "script" : "Latn",
- "font" : {
- "description" : "Cantarell 11",
- "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
- "variations" : {
- "wght" : 0
- },
- "matrix" : [
- 1,
- -0,
- -0,
- 1,
- 0,
- 0
+ }
+ ]
+ }
+ },
+ {
+ "position" : [
+ 0,
+ 93184
+ ],
+ "line" : {
+ "start-index" : 91,
+ "length" : 26,
+ "start-offset" : 91,
+ "n-chars" : 26,
+ "wrapped" : true,
+ "ellipsized" : false,
+ "hyphenated" : false,
+ "justified" : false,
+ "paragraph-start" : true,
+ "paragraph-end" : false,
+ "direction" : "ltr",
+ "runs" : [
+ {
+ "offset" : 91,
+ "length" : 26,
+ "text" : "If it doesn't the fix has ",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "Latn",
+ "font" : {
+ "description" : "Cantarell 11",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ }
+ },
+ "flags" : 0,
+ "y-offset" : 0,
+ "start-x-offset" : 0,
+ "end-x-offset" : 0,
+ "glyphs" : [
+ {
+ "glyph" : 81,
+ "width" : 4096,
+ "is-cluster-start" : true,
+ "log-cluster" : 0
+ },
+ {
+ "glyph" : 311,
+ "width" : 5120,
+ "is-cluster-start" : true,
+ "log-cluster" : 1
+ },
+ {
+ "glyph" : 1109,
+ "width" : 3072,
+ "is-cluster-start" : true,
+ "log-cluster" : 2
+ },
+ {
+ "glyph" : 324,
+ "width" : 4096,
+ "is-cluster-start" : true,
+ "log-cluster" : 3
+ },
+ {
+ "glyph" : 430,
+ "width" : 5120,
+ "is-cluster-start" : true,
+ "log-cluster" : 4
+ },
+ {
+ "glyph" : 1109,
+ "width" : 3072,
+ "is-cluster-start" : true,
+ "log-cluster" : 5
+ },
+ {
+ "glyph" : 280,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 6
+ },
+ {
+ "glyph" : 370,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 7
+ },
+ {
+ "glyph" : 287,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 8
+ },
+ {
+ "glyph" : 417,
+ "width" : 7168,
+ "is-cluster-start" : true,
+ "log-cluster" : 9
+ },
+ {
+ "glyph" : 360,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 10
+ },
+ {
+ "glyph" : 1099,
+ "width" : 4096,
+ "is-cluster-start" : true,
+ "log-cluster" : 11
+ },
+ {
+ "glyph" : 430,
+ "width" : 5120,
+ "is-cluster-start" : true,
+ "log-cluster" : 12
+ },
+ {
+ "glyph" : 1109,
+ "width" : 3072,
+ "is-cluster-start" : true,
+ "log-cluster" : 13
+ },
+ {
+ "glyph" : 430,
+ "width" : 5120,
+ "is-cluster-start" : true,
+ "log-cluster" : 14
+ },
+ {
+ "glyph" : 319,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 15
+ },
+ {
+ "glyph" : 287,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 16
+ },
+ {
+ "glyph" : 1109,
+ "width" : 3072,
+ "is-cluster-start" : true,
+ "log-cluster" : 17
+ },
+ {
+ "glyph" : 489,
+ "width" : 9216,
+ "is-cluster-start" : true,
+ "log-cluster" : 18
+ },
+ {
+ "glyph" : 472,
+ "width" : 7168,
+ "is-cluster-start" : true,
+ "log-cluster" : 20
+ },
+ {
+ "glyph" : 1109,
+ "width" : 3072,
+ "is-cluster-start" : true,
+ "log-cluster" : 21
+ },
+ {
+ "glyph" : 319,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 22
+ },
+ {
+ "glyph" : 244,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 23
+ },
+ {
+ "glyph" : 417,
+ "width" : 7168,
+ "is-cluster-start" : true,
+ "log-cluster" : 24
+ },
+ {
+ "glyph" : 268435455,
+ "width" : 0,
+ "is-cluster-start" : true,
+ "log-cluster" : 25
+ }
]
- },
- "flags" : 0,
- "y-offset" : 0,
- "start-x-offset" : 0,
- "end-x-offset" : 0,
- "glyphs" : [
- {
- "glyph" : 81,
- "width" : 4096,
- "is-cluster-start" : true,
- "log-cluster" : 0
- },
- {
- "glyph" : 311,
- "width" : 5120,
- "is-cluster-start" : true,
- "log-cluster" : 1
- },
- {
- "glyph" : 1109,
- "width" : 3072,
- "is-cluster-start" : true,
- "log-cluster" : 2
- },
- {
- "glyph" : 324,
- "width" : 4096,
- "is-cluster-start" : true,
- "log-cluster" : 3
- },
- {
- "glyph" : 430,
- "width" : 5120,
- "is-cluster-start" : true,
- "log-cluster" : 4
- },
- {
- "glyph" : 1109,
- "width" : 3072,
- "is-cluster-start" : true,
- "log-cluster" : 5
- },
- {
- "glyph" : 280,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 6
- },
- {
- "glyph" : 370,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 7
- },
- {
- "glyph" : 287,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 8
- },
- {
- "glyph" : 417,
- "width" : 7168,
- "is-cluster-start" : true,
- "log-cluster" : 9
- },
- {
- "glyph" : 360,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 10
- },
- {
- "glyph" : 1099,
- "width" : 4096,
- "is-cluster-start" : true,
- "log-cluster" : 11
- },
- {
- "glyph" : 430,
- "width" : 5120,
- "is-cluster-start" : true,
- "log-cluster" : 12
- },
- {
- "glyph" : 1109,
- "width" : 3072,
- "is-cluster-start" : true,
- "log-cluster" : 13
- },
- {
- "glyph" : 430,
- "width" : 5120,
- "is-cluster-start" : true,
- "log-cluster" : 14
- },
- {
- "glyph" : 319,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 15
- },
- {
- "glyph" : 287,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 16
- },
- {
- "glyph" : 1109,
- "width" : 3072,
- "is-cluster-start" : true,
- "log-cluster" : 17
- },
- {
- "glyph" : 489,
- "width" : 9216,
- "is-cluster-start" : true,
- "log-cluster" : 18
- },
- {
- "glyph" : 472,
- "width" : 7168,
- "is-cluster-start" : true,
- "log-cluster" : 20
- },
- {
- "glyph" : 1109,
- "width" : 3072,
- "is-cluster-start" : true,
- "log-cluster" : 21
- },
- {
- "glyph" : 319,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 22
- },
- {
- "glyph" : 244,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 23
- },
- {
- "glyph" : 417,
- "width" : 7168,
- "is-cluster-start" : true,
- "log-cluster" : 24
- },
- {
- "glyph" : 268435455,
- "width" : 0,
- "is-cluster-start" : true,
- "log-cluster" : 25
- }
- ]
- }
- ]
- },
- {
- "start-index" : 117,
- "length" : 7,
- "paragraph-start" : false,
- "direction" : "ltr",
- "runs" : [
- {
- "offset" : 117,
- "length" : 7,
- "text" : "worked.",
- "bidi-level" : 0,
- "gravity" : "south",
- "language" : "en-us",
- "script" : "Latn",
- "font" : {
- "description" : "Cantarell 11",
- "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
- "variations" : {
- "wght" : 0
- },
- "matrix" : [
- 1,
- -0,
- -0,
- 1,
- 0,
- 0
+ }
+ ]
+ }
+ },
+ {
+ "position" : [
+ 0,
+ 112640
+ ],
+ "line" : {
+ "start-index" : 117,
+ "length" : 7,
+ "start-offset" : 117,
+ "n-chars" : 7,
+ "wrapped" : false,
+ "ellipsized" : false,
+ "hyphenated" : false,
+ "justified" : false,
+ "paragraph-start" : false,
+ "paragraph-end" : true,
+ "direction" : "ltr",
+ "runs" : [
+ {
+ "offset" : 117,
+ "length" : 7,
+ "text" : "worked.",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "Latn",
+ "font" : {
+ "description" : "Cantarell 11",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ }
+ },
+ "flags" : 0,
+ "y-offset" : 0,
+ "start-x-offset" : 0,
+ "end-x-offset" : 0,
+ "glyphs" : [
+ {
+ "glyph" : 467,
+ "width" : 11264,
+ "is-cluster-start" : true,
+ "log-cluster" : 0
+ },
+ {
+ "glyph" : 370,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 1
+ },
+ {
+ "glyph" : 409,
+ "width" : 6144,
+ "is-cluster-start" : true,
+ "log-cluster" : 2
+ },
+ {
+ "glyph" : 345,
+ "width" : 7168,
+ "is-cluster-start" : true,
+ "log-cluster" : 3
+ },
+ {
+ "glyph" : 287,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 4
+ },
+ {
+ "glyph" : 280,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 5
+ },
+ {
+ "glyph" : 1058,
+ "width" : 4096,
+ "is-cluster-start" : true,
+ "log-cluster" : 6
+ }
]
- },
- "flags" : 0,
- "y-offset" : 0,
- "start-x-offset" : 0,
- "end-x-offset" : 0,
- "glyphs" : [
- {
- "glyph" : 467,
- "width" : 11264,
- "is-cluster-start" : true,
- "log-cluster" : 0
- },
- {
- "glyph" : 370,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 1
- },
- {
- "glyph" : 409,
- "width" : 6144,
- "is-cluster-start" : true,
- "log-cluster" : 2
- },
- {
- "glyph" : 345,
- "width" : 7168,
- "is-cluster-start" : true,
- "log-cluster" : 3
- },
- {
- "glyph" : 287,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 4
- },
- {
- "glyph" : 280,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 5
- },
- {
- "glyph" : 1058,
- "width" : 4096,
- "is-cluster-start" : true,
- "log-cluster" : 6
- }
- ]
- }
- ]
+ }
+ ]
+ }
}
]
}
diff --git a/tests/layouts/valid-6.layout b/tests/layouts/valid-6.layout
index 72dc71c4..2f419e58 100644
--- a/tests/layouts/valid-6.layout
+++ b/tests/layouts/valid-6.layout
@@ -18,367 +18,365 @@
"comment" : "A keycap sequence",
"text" : " 0️⃣ Keycap Digit Zero",
"font" : "Cantarell 11",
+ "log-attrs" : [
+ {
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "sentence-boundary" : true,
+ "backspace-deletes-character" : true,
+ "expandable-space" : true,
+ "word-boundary" : true
+ },
+ {
+ "line-break" : true,
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-start" : true,
+ "sentence-start" : true,
+ "word-boundary" : true
+ },
+ {},
+ {
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "word-end" : true,
+ "expandable-space" : true,
+ "word-boundary" : true
+ },
+ {
+ "line-break" : true,
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-start" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "word-end" : true,
+ "expandable-space" : true,
+ "word-boundary" : true
+ },
+ {
+ "line-break" : true,
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-start" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "word-end" : true,
+ "expandable-space" : true,
+ "word-boundary" : true
+ },
+ {
+ "line-break" : true,
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-start" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "line-break" : true,
+ "mandatory-break" : true,
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "word-end" : true,
+ "sentence-boundary" : true,
+ "sentence-end" : true,
+ "word-boundary" : true
+ }
+ ],
"output" : {
- "is-wrapped" : false,
- "is-ellipsized" : false,
+ "wrapped" : false,
+ "ellipsized" : false,
+ "hypenated" : false,
"unknown-glyphs" : 0,
"width" : 142336,
"height" : 19456,
- "log-attrs" : [
- {
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "sentence-boundary" : true,
- "backspace-deletes-character" : true,
- "expandable-space" : true,
- "word-boundary" : true
- },
- {
- "line-break" : true,
- "char-break" : true,
- "cursor-position" : true,
- "word-start" : true,
- "sentence-start" : true,
- "word-boundary" : true
- },
- {},
- {
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "word-end" : true,
- "expandable-space" : true,
- "word-boundary" : true
- },
- {
- "line-break" : true,
- "char-break" : true,
- "cursor-position" : true,
- "word-start" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "word-end" : true,
- "expandable-space" : true,
- "word-boundary" : true
- },
- {
- "line-break" : true,
- "char-break" : true,
- "cursor-position" : true,
- "word-start" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "word-end" : true,
- "expandable-space" : true,
- "word-boundary" : true
- },
- {
- "line-break" : true,
- "char-break" : true,
- "cursor-position" : true,
- "word-start" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "line-break" : true,
- "mandatory-break" : true,
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "word-end" : true,
- "sentence-boundary" : true,
- "sentence-end" : true,
- "word-boundary" : true
- }
- ],
"lines" : [
{
- "start-index" : 0,
- "length" : 26,
- "paragraph-start" : true,
- "direction" : "ltr",
- "runs" : [
- {
- "offset" : 0,
- "length" : 1,
- "text" : " ",
- "bidi-level" : 0,
- "gravity" : "south",
- "language" : "en-us",
- "script" : "Latn",
- "font" : {
- "description" : "Cantarell 11",
- "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
- "variations" : {
- "wght" : 0
+ "position" : [
+ 0,
+ 15360
+ ],
+ "line" : {
+ "start-index" : 0,
+ "length" : 26,
+ "start-offset" : 0,
+ "n-chars" : 22,
+ "wrapped" : false,
+ "ellipsized" : false,
+ "hyphenated" : false,
+ "justified" : false,
+ "paragraph-start" : true,
+ "paragraph-end" : true,
+ "direction" : "ltr",
+ "runs" : [
+ {
+ "offset" : 0,
+ "length" : 1,
+ "text" : " ",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "Latn",
+ "font" : {
+ "description" : "Cantarell 11",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ }
},
- "matrix" : [
- 1,
- -0,
- -0,
- 1,
- 0,
- 0
- ]
- },
- "flags" : 0,
- "y-offset" : 0,
- "start-x-offset" : 0,
- "end-x-offset" : 0,
- "glyphs" : [
- {
- "glyph" : 1109,
- "width" : 3072,
- "is-cluster-start" : true,
- "log-cluster" : 0
- }
- ]
- },
- {
- "offset" : 1,
- "length" : 7,
- "text" : "0️⃣",
- "bidi-level" : 0,
- "gravity" : "south",
- "language" : "en-us",
- "script" : "Latn",
- "font" : {
- "description" : "Noto Color Emoji 11",
- "checksum" : "054c1c2e2ca956b920262840dcad39dcf27bb88d6f70b892b2b1180de2c2ab47",
- "matrix" : [
- 0.13455956135321101,
- -0,
- -0,
- 0.13455956135321101,
- 0,
- 0
+ "flags" : 0,
+ "y-offset" : 0,
+ "start-x-offset" : 0,
+ "end-x-offset" : 0,
+ "glyphs" : [
+ {
+ "glyph" : 1109,
+ "width" : 3072,
+ "is-cluster-start" : true,
+ "log-cluster" : 0
+ }
]
},
- "flags" : 0,
- "y-offset" : 0,
- "start-x-offset" : 0,
- "end-x-offset" : 0,
- "glyphs" : [
- {
- "glyph" : 19,
- "width" : 18432,
- "is-cluster-start" : true,
- "is-color" : true,
- "log-cluster" : 0
- }
- ]
- },
- {
- "offset" : 8,
- "length" : 18,
- "text" : " Keycap Digit Zero",
- "bidi-level" : 0,
- "gravity" : "south",
- "language" : "en-us",
- "script" : "Latn",
- "font" : {
- "description" : "Cantarell 11",
- "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
- "variations" : {
- "wght" : 0
+ {
+ "offset" : 1,
+ "length" : 7,
+ "text" : "0️⃣",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "Latn",
+ "font" : {
+ "description" : "Noto Color Emoji 11",
+ "checksum" : "054c1c2e2ca956b920262840dcad39dcf27bb88d6f70b892b2b1180de2c2ab47",
+ "matrix" : [
+ 0.13455956135321101,
+ -0,
+ -0,
+ 0.13455956135321101,
+ 0,
+ 0
+ ]
},
- "matrix" : [
- 1,
- -0,
- -0,
- 1,
- 0,
- 0
+ "flags" : 0,
+ "y-offset" : 0,
+ "start-x-offset" : 0,
+ "end-x-offset" : 0,
+ "glyphs" : [
+ {
+ "glyph" : 19,
+ "width" : 18432,
+ "is-cluster-start" : true,
+ "is-color" : true,
+ "log-cluster" : 0
+ }
]
},
- "flags" : 0,
- "y-offset" : 0,
- "start-x-offset" : 0,
- "end-x-offset" : 0,
- "glyphs" : [
- {
- "glyph" : 1109,
- "width" : 3072,
- "is-cluster-start" : true,
- "log-cluster" : 0
- },
- {
- "glyph" : 100,
- "width" : 9216,
- "is-cluster-start" : true,
- "log-cluster" : 1
- },
- {
- "glyph" : 287,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 2
- },
- {
- "glyph" : 473,
- "width" : 7168,
- "is-cluster-start" : true,
- "log-cluster" : 3
- },
- {
- "glyph" : 273,
- "width" : 7168,
- "is-cluster-start" : true,
- "log-cluster" : 4
- },
- {
- "glyph" : 244,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 5
- },
- {
- "glyph" : 406,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 6
- },
- {
- "glyph" : 1109,
- "width" : 3072,
- "is-cluster-start" : true,
- "log-cluster" : 7
+ {
+ "offset" : 8,
+ "length" : 18,
+ "text" : " Keycap Digit Zero",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "Latn",
+ "font" : {
+ "description" : "Cantarell 11",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ }
},
- {
- "glyph" : 37,
- "width" : 10240,
- "is-cluster-start" : true,
- "log-cluster" : 8
- },
- {
- "glyph" : 324,
- "width" : 4096,
- "is-cluster-start" : true,
- "log-cluster" : 9
- },
- {
- "glyph" : 312,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 10
- },
- {
- "glyph" : 324,
- "width" : 4096,
- "is-cluster-start" : true,
- "log-cluster" : 11
- },
- {
- "glyph" : 430,
- "width" : 5120,
- "is-cluster-start" : true,
- "log-cluster" : 12
- },
- {
- "glyph" : 1109,
- "width" : 3072,
- "is-cluster-start" : true,
- "log-cluster" : 13
- },
- {
- "glyph" : 239,
- "width" : 9216,
- "is-cluster-start" : true,
- "log-cluster" : 14
- },
- {
- "glyph" : 287,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 15
- },
- {
- "glyph" : 409,
- "width" : 6144,
- "is-cluster-start" : true,
- "log-cluster" : 16
- },
- {
- "glyph" : 370,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 17
- }
- ]
- }
- ]
+ "flags" : 0,
+ "y-offset" : 0,
+ "start-x-offset" : 0,
+ "end-x-offset" : 0,
+ "glyphs" : [
+ {
+ "glyph" : 1109,
+ "width" : 3072,
+ "is-cluster-start" : true,
+ "log-cluster" : 0
+ },
+ {
+ "glyph" : 100,
+ "width" : 9216,
+ "is-cluster-start" : true,
+ "log-cluster" : 1
+ },
+ {
+ "glyph" : 287,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 2
+ },
+ {
+ "glyph" : 473,
+ "width" : 7168,
+ "is-cluster-start" : true,
+ "log-cluster" : 3
+ },
+ {
+ "glyph" : 273,
+ "width" : 7168,
+ "is-cluster-start" : true,
+ "log-cluster" : 4
+ },
+ {
+ "glyph" : 244,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 5
+ },
+ {
+ "glyph" : 406,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 6
+ },
+ {
+ "glyph" : 1109,
+ "width" : 3072,
+ "is-cluster-start" : true,
+ "log-cluster" : 7
+ },
+ {
+ "glyph" : 37,
+ "width" : 10240,
+ "is-cluster-start" : true,
+ "log-cluster" : 8
+ },
+ {
+ "glyph" : 324,
+ "width" : 4096,
+ "is-cluster-start" : true,
+ "log-cluster" : 9
+ },
+ {
+ "glyph" : 312,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 10
+ },
+ {
+ "glyph" : 324,
+ "width" : 4096,
+ "is-cluster-start" : true,
+ "log-cluster" : 11
+ },
+ {
+ "glyph" : 430,
+ "width" : 5120,
+ "is-cluster-start" : true,
+ "log-cluster" : 12
+ },
+ {
+ "glyph" : 1109,
+ "width" : 3072,
+ "is-cluster-start" : true,
+ "log-cluster" : 13
+ },
+ {
+ "glyph" : 239,
+ "width" : 9216,
+ "is-cluster-start" : true,
+ "log-cluster" : 14
+ },
+ {
+ "glyph" : 287,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 15
+ },
+ {
+ "glyph" : 409,
+ "width" : 6144,
+ "is-cluster-start" : true,
+ "log-cluster" : 16
+ },
+ {
+ "glyph" : 370,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 17
+ }
+ ]
+ }
+ ]
+ }
}
]
}
diff --git a/tests/layouts/valid-7.layout b/tests/layouts/valid-7.layout
index 9c433d51..812f31de 100644
--- a/tests/layouts/valid-7.layout
+++ b/tests/layouts/valid-7.layout
@@ -34,596 +34,578 @@
"ellipsize" : "middle",
"width" : 204800,
"indent" : 51200,
+ "log-attrs" : [
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-start" : true,
+ "sentence-boundary" : true,
+ "sentence-start" : true,
+ "backspace-deletes-character" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "word-end" : true,
+ "expandable-space" : true,
+ "word-boundary" : true
+ },
+ {
+ "line-break" : true,
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-start" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "word-end" : true,
+ "expandable-space" : true,
+ "word-boundary" : true
+ },
+ {
+ "line-break" : true,
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-start" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "word-end" : true,
+ "expandable-space" : true,
+ "word-boundary" : true
+ },
+ {
+ "line-break" : true,
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-start" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "word-end" : true,
+ "expandable-space" : true,
+ "word-boundary" : true
+ },
+ {
+ "line-break" : true,
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-start" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "word-end" : true,
+ "expandable-space" : true,
+ "word-boundary" : true
+ },
+ {
+ "line-break" : true,
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-start" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "word-end" : true,
+ "expandable-space" : true,
+ "word-boundary" : true
+ },
+ {
+ "line-break" : true,
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-start" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "word-end" : true,
+ "expandable-space" : true,
+ "word-boundary" : true
+ },
+ {
+ "line-break" : true,
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-start" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "word-end" : true,
+ "expandable-space" : true,
+ "word-boundary" : true
+ },
+ {
+ "line-break" : true,
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-start" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-end" : true,
+ "word-boundary" : true
+ },
+ {
+ "line-break" : true,
+ "mandatory-break" : true,
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "sentence-boundary" : true,
+ "sentence-end" : true,
+ "word-boundary" : true
+ }
+ ],
"output" : {
- "is-wrapped" : false,
- "is-ellipsized" : true,
+ "wrapped" : false,
+ "ellipsized" : true,
+ "hypenated" : false,
"unknown-glyphs" : 0,
"width" : 153600,
"height" : 19456,
- "log-attrs" : [
- {
- "char-break" : true,
- "cursor-position" : true,
- "word-start" : true,
- "sentence-boundary" : true,
- "sentence-start" : true,
- "backspace-deletes-character" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "word-end" : true,
- "expandable-space" : true,
- "word-boundary" : true
- },
- {
- "line-break" : true,
- "char-break" : true,
- "cursor-position" : true,
- "word-start" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "word-end" : true,
- "expandable-space" : true,
- "word-boundary" : true
- },
- {
- "line-break" : true,
- "char-break" : true,
- "cursor-position" : true,
- "word-start" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "word-end" : true,
- "expandable-space" : true,
- "word-boundary" : true
- },
- {
- "line-break" : true,
- "char-break" : true,
- "cursor-position" : true,
- "word-start" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "word-end" : true,
- "expandable-space" : true,
- "word-boundary" : true
- },
- {
- "line-break" : true,
- "char-break" : true,
- "cursor-position" : true,
- "word-start" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "word-end" : true,
- "expandable-space" : true,
- "word-boundary" : true
- },
- {
- "line-break" : true,
- "char-break" : true,
- "cursor-position" : true,
- "word-start" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "word-end" : true,
- "expandable-space" : true,
- "word-boundary" : true
- },
- {
- "line-break" : true,
- "char-break" : true,
- "cursor-position" : true,
- "word-start" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "word-end" : true,
- "expandable-space" : true,
- "word-boundary" : true
- },
- {
- "line-break" : true,
- "char-break" : true,
- "cursor-position" : true,
- "word-start" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "word-end" : true,
- "expandable-space" : true,
- "word-boundary" : true
- },
- {
- "line-break" : true,
- "char-break" : true,
- "cursor-position" : true,
- "word-start" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "word-end" : true,
- "word-boundary" : true
- },
- {
- "line-break" : true,
- "mandatory-break" : true,
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "sentence-boundary" : true,
- "sentence-end" : true,
- "word-boundary" : true
- }
- ],
"lines" : [
{
- "start-index" : 0,
- "length" : 48,
- "paragraph-start" : true,
- "direction" : "ltr",
- "runs" : [
- {
- "offset" : 0,
- "length" : 12,
- "text" : "This is a te",
- "bidi-level" : 0,
- "gravity" : "south",
- "language" : "en-us",
- "script" : "Latn",
- "font" : {
- "description" : "Cantarell 11",
- "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
- "variations" : {
- "wght" : 0
+ "position" : [
+ 51200,
+ 15360
+ ],
+ "line" : {
+ "start-index" : 0,
+ "length" : 48,
+ "start-offset" : 0,
+ "n-chars" : 48,
+ "wrapped" : false,
+ "ellipsized" : true,
+ "hyphenated" : false,
+ "justified" : false,
+ "paragraph-start" : true,
+ "paragraph-end" : true,
+ "direction" : "ltr",
+ "runs" : [
+ {
+ "offset" : 0,
+ "length" : 12,
+ "text" : "This is a te",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "Latn",
+ "font" : {
+ "description" : "Cantarell 11",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ }
},
- "matrix" : [
- 1,
- -0,
- -0,
- 1,
- 0,
- 0
+ "flags" : 0,
+ "y-offset" : 0,
+ "start-x-offset" : 0,
+ "end-x-offset" : 0,
+ "glyphs" : [
+ {
+ "glyph" : 187,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 0
+ },
+ {
+ "glyph" : 319,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 1
+ },
+ {
+ "glyph" : 324,
+ "width" : 4096,
+ "is-cluster-start" : true,
+ "log-cluster" : 2
+ },
+ {
+ "glyph" : 417,
+ "width" : 7168,
+ "is-cluster-start" : true,
+ "log-cluster" : 3
+ },
+ {
+ "glyph" : 1109,
+ "width" : 3072,
+ "is-cluster-start" : true,
+ "log-cluster" : 4
+ },
+ {
+ "glyph" : 324,
+ "width" : 4096,
+ "is-cluster-start" : true,
+ "log-cluster" : 5
+ },
+ {
+ "glyph" : 417,
+ "width" : 7168,
+ "is-cluster-start" : true,
+ "log-cluster" : 6
+ },
+ {
+ "glyph" : 1109,
+ "width" : 3072,
+ "is-cluster-start" : true,
+ "log-cluster" : 7
+ },
+ {
+ "glyph" : 244,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 8
+ },
+ {
+ "glyph" : 1109,
+ "width" : 3072,
+ "is-cluster-start" : true,
+ "log-cluster" : 9
+ },
+ {
+ "glyph" : 430,
+ "width" : 5120,
+ "is-cluster-start" : true,
+ "log-cluster" : 10
+ },
+ {
+ "glyph" : 287,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 11
+ }
]
},
- "flags" : 0,
- "y-offset" : 0,
- "start-x-offset" : 0,
- "end-x-offset" : 0,
- "glyphs" : [
- {
- "glyph" : 187,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 0
+ {
+ "offset" : 12,
+ "length" : 26,
+ "text" : "st of the automatic emerge",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "Zyyy",
+ "font" : {
+ "description" : "Cantarell 11",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ }
},
- {
- "glyph" : 319,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 1
- },
- {
- "glyph" : 324,
- "width" : 4096,
- "is-cluster-start" : true,
- "log-cluster" : 2
- },
- {
- "glyph" : 417,
- "width" : 7168,
- "is-cluster-start" : true,
- "log-cluster" : 3
- },
- {
- "glyph" : 1109,
- "width" : 3072,
- "is-cluster-start" : true,
- "log-cluster" : 4
- },
- {
- "glyph" : 324,
- "width" : 4096,
- "is-cluster-start" : true,
- "log-cluster" : 5
- },
- {
- "glyph" : 417,
- "width" : 7168,
- "is-cluster-start" : true,
- "log-cluster" : 6
- },
- {
- "glyph" : 1109,
- "width" : 3072,
- "is-cluster-start" : true,
- "log-cluster" : 7
- },
- {
- "glyph" : 244,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 8
- },
- {
- "glyph" : 1109,
- "width" : 3072,
- "is-cluster-start" : true,
- "log-cluster" : 9
- },
- {
- "glyph" : 430,
- "width" : 5120,
- "is-cluster-start" : true,
- "log-cluster" : 10
- },
- {
- "glyph" : 287,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 11
- }
- ]
- },
- {
- "offset" : 12,
- "length" : 26,
- "text" : "st of the automatic emerge",
- "bidi-level" : 0,
- "gravity" : "south",
- "language" : "en-us",
- "script" : "Zyyy",
- "font" : {
- "description" : "Cantarell 11",
- "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
- "variations" : {
- "wght" : 0
- },
- "matrix" : [
- 1,
- -0,
- -0,
- 1,
- 0,
- 0
+ "flags" : 2,
+ "extra-attributes" : [
+ {
+ "end" : 2147483647,
+ "type" : "fallback",
+ "value" : false
+ }
+ ],
+ "y-offset" : 0,
+ "start-x-offset" : 0,
+ "end-x-offset" : 0,
+ "glyphs" : [
+ {
+ "glyph" : 1062,
+ "width" : 16384,
+ "is-cluster-start" : true,
+ "log-cluster" : 0
+ }
]
},
- "flags" : 2,
- "extra-attributes" : [
- {
- "end" : 2147483647,
- "type" : "fallback",
- "value" : false
- }
- ],
- "y-offset" : 0,
- "start-x-offset" : 0,
- "end-x-offset" : 0,
- "glyphs" : [
- {
- "glyph" : 1062,
- "width" : 16384,
- "is-cluster-start" : true,
- "log-cluster" : 0
- }
- ]
- },
- {
- "offset" : 38,
- "length" : 3,
- "text" : "ncy",
- "bidi-level" : 0,
- "gravity" : "south",
- "language" : "en-us",
- "script" : "Latn",
- "font" : {
- "description" : "Cantarell 11",
- "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
- "variations" : {
- "wght" : 0
+ {
+ "offset" : 38,
+ "length" : 3,
+ "text" : "ncy",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "Latn",
+ "font" : {
+ "description" : "Cantarell 11",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ }
},
- "matrix" : [
- 1,
- -0,
- -0,
- 1,
- 0,
- 0
+ "flags" : 0,
+ "extra-attributes" : [
+ {
+ "start" : 22,
+ "end" : 41,
+ "type" : "foreground",
+ "value" : "#00000000ffff"
+ },
+ {
+ "start" : 22,
+ "end" : 41,
+ "type" : "underline",
+ "value" : "single"
+ }
+ ],
+ "y-offset" : 0,
+ "start-x-offset" : 0,
+ "end-x-offset" : 0,
+ "glyphs" : [
+ {
+ "glyph" : 360,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 0
+ },
+ {
+ "glyph" : 273,
+ "width" : 7168,
+ "is-cluster-start" : true,
+ "log-cluster" : 1
+ },
+ {
+ "glyph" : 473,
+ "width" : 7168,
+ "is-cluster-start" : true,
+ "log-cluster" : 2
+ }
]
},
- "flags" : 0,
- "extra-attributes" : [
- {
- "start" : 22,
- "end" : 41,
- "type" : "foreground",
- "value" : "#00000000ffff"
+ {
+ "offset" : 41,
+ "length" : 7,
+ "text" : " brake!",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "Latn",
+ "font" : {
+ "description" : "Cantarell 11",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ }
},
- {
- "start" : 22,
- "end" : 41,
- "type" : "underline",
- "value" : "single"
- }
- ],
- "y-offset" : 0,
- "start-x-offset" : 0,
- "end-x-offset" : 0,
- "glyphs" : [
- {
- "glyph" : 360,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 0
- },
- {
- "glyph" : 273,
- "width" : 7168,
- "is-cluster-start" : true,
- "log-cluster" : 1
- },
- {
- "glyph" : 473,
- "width" : 7168,
- "is-cluster-start" : true,
- "log-cluster" : 2
- }
- ]
- },
- {
- "offset" : 41,
- "length" : 7,
- "text" : " brake!",
- "bidi-level" : 0,
- "gravity" : "south",
- "language" : "en-us",
- "script" : "Latn",
- "font" : {
- "description" : "Cantarell 11",
- "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
- "variations" : {
- "wght" : 0
- },
- "matrix" : [
- 1,
- -0,
- -0,
- 1,
- 0,
- 0
+ "flags" : 0,
+ "y-offset" : 0,
+ "start-x-offset" : 0,
+ "end-x-offset" : 0,
+ "glyphs" : [
+ {
+ "glyph" : 1109,
+ "width" : 3072,
+ "is-cluster-start" : true,
+ "log-cluster" : 0
+ },
+ {
+ "glyph" : 272,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 1
+ },
+ {
+ "glyph" : 409,
+ "width" : 6144,
+ "is-cluster-start" : true,
+ "log-cluster" : 2
+ },
+ {
+ "glyph" : 244,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 3
+ },
+ {
+ "glyph" : 345,
+ "width" : 7168,
+ "is-cluster-start" : true,
+ "log-cluster" : 4
+ },
+ {
+ "glyph" : 287,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 5
+ },
+ {
+ "glyph" : 1063,
+ "width" : 4096,
+ "is-cluster-start" : true,
+ "log-cluster" : 6
+ }
]
- },
- "flags" : 0,
- "y-offset" : 0,
- "start-x-offset" : 0,
- "end-x-offset" : 0,
- "glyphs" : [
- {
- "glyph" : 1109,
- "width" : 3072,
- "is-cluster-start" : true,
- "log-cluster" : 0
- },
- {
- "glyph" : 272,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 1
- },
- {
- "glyph" : 409,
- "width" : 6144,
- "is-cluster-start" : true,
- "log-cluster" : 2
- },
- {
- "glyph" : 244,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 3
- },
- {
- "glyph" : 345,
- "width" : 7168,
- "is-cluster-start" : true,
- "log-cluster" : 4
- },
- {
- "glyph" : 287,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 5
- },
- {
- "glyph" : 1063,
- "width" : 4096,
- "is-cluster-start" : true,
- "log-cluster" : 6
- }
- ]
- }
- ]
+ }
+ ]
+ }
}
]
}
diff --git a/tests/layouts/valid-8.layout b/tests/layouts/valid-8.layout
index 72dd0b27..60423aae 100644
--- a/tests/layouts/valid-8.layout
+++ b/tests/layouts/valid-8.layout
@@ -20,383 +20,364 @@
"font" : "Cantarell 11",
"auto-dir" : false,
"alignment" : "center",
- "spacing" : 51200,
+ "log-attrs" : [
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-start" : true,
+ "sentence-boundary" : true,
+ "sentence-start" : true,
+ "backspace-deletes-character" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "word-end" : true,
+ "expandable-space" : true,
+ "word-boundary" : true
+ },
+ {
+ "line-break" : true,
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-start" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "backspace-deletes-character" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "backspace-deletes-character" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "backspace-deletes-character" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "word-end" : true,
+ "backspace-deletes-character" : true,
+ "expandable-space" : true,
+ "word-boundary" : true
+ },
+ {
+ "line-break" : true,
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-start" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "word-end" : true,
+ "expandable-space" : true,
+ "word-boundary" : true
+ },
+ {
+ "line-break" : true,
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-start" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "line-break" : true,
+ "mandatory-break" : true,
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "word-end" : true,
+ "sentence-boundary" : true,
+ "sentence-end" : true,
+ "word-boundary" : true
+ }
+ ],
"output" : {
- "is-wrapped" : false,
- "is-ellipsized" : false,
+ "wrapped" : false,
+ "ellipsized" : false,
+ "hypenated" : false,
"unknown-glyphs" : 0,
"width" : 132096,
"height" : 19456,
- "log-attrs" : [
- {
- "char-break" : true,
- "cursor-position" : true,
- "word-start" : true,
- "sentence-boundary" : true,
- "sentence-start" : true,
- "backspace-deletes-character" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "word-end" : true,
- "expandable-space" : true,
- "word-boundary" : true
- },
- {
- "line-break" : true,
- "char-break" : true,
- "cursor-position" : true,
- "word-start" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "backspace-deletes-character" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "backspace-deletes-character" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "backspace-deletes-character" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "word-end" : true,
- "backspace-deletes-character" : true,
- "expandable-space" : true,
- "word-boundary" : true
- },
- {
- "line-break" : true,
- "char-break" : true,
- "cursor-position" : true,
- "word-start" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "word-end" : true,
- "expandable-space" : true,
- "word-boundary" : true
- },
- {
- "line-break" : true,
- "char-break" : true,
- "cursor-position" : true,
- "word-start" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "line-break" : true,
- "mandatory-break" : true,
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "word-end" : true,
- "sentence-boundary" : true,
- "sentence-end" : true,
- "word-boundary" : true
- }
- ],
"lines" : [
{
- "start-index" : 0,
- "length" : 30,
- "paragraph-start" : true,
- "direction" : "ltr",
- "runs" : [
- {
- "offset" : 0,
- "length" : 6,
- "text" : "Hello ",
- "bidi-level" : 0,
- "gravity" : "south",
- "language" : "en-us",
- "script" : "Latn",
- "font" : {
- "description" : "Cantarell 11",
- "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
- "variations" : {
- "wght" : 0
+ "position" : [
+ 0,
+ 15360
+ ],
+ "line" : {
+ "start-index" : 0,
+ "length" : 30,
+ "start-offset" : 0,
+ "n-chars" : 19,
+ "wrapped" : false,
+ "ellipsized" : false,
+ "hyphenated" : false,
+ "justified" : false,
+ "paragraph-start" : true,
+ "paragraph-end" : true,
+ "direction" : "ltr",
+ "runs" : [
+ {
+ "offset" : 0,
+ "length" : 6,
+ "text" : "Hello ",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "Latn",
+ "font" : {
+ "description" : "Cantarell 11",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ }
},
- "matrix" : [
- 1,
- -0,
- -0,
- 1,
- 0,
- 0
+ "flags" : 0,
+ "y-offset" : 0,
+ "start-x-offset" : 0,
+ "end-x-offset" : 0,
+ "glyphs" : [
+ {
+ "glyph" : 76,
+ "width" : 11264,
+ "is-cluster-start" : true,
+ "log-cluster" : 0
+ },
+ {
+ "glyph" : 287,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 1
+ },
+ {
+ "glyph" : 349,
+ "width" : 4096,
+ "is-cluster-start" : true,
+ "log-cluster" : 2
+ },
+ {
+ "glyph" : 349,
+ "width" : 4096,
+ "is-cluster-start" : true,
+ "log-cluster" : 3
+ },
+ {
+ "glyph" : 370,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 4
+ },
+ {
+ "glyph" : 1109,
+ "width" : 3072,
+ "is-cluster-start" : true,
+ "log-cluster" : 5
+ }
]
},
- "flags" : 0,
- "y-offset" : 0,
- "start-x-offset" : 0,
- "end-x-offset" : 0,
- "glyphs" : [
- {
- "glyph" : 76,
- "width" : 11264,
- "is-cluster-start" : true,
- "log-cluster" : 0
- },
- {
- "glyph" : 287,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 1
- },
- {
- "glyph" : 349,
- "width" : 4096,
- "is-cluster-start" : true,
- "log-cluster" : 2
+ {
+ "offset" : 6,
+ "length" : 8,
+ "text" : "שלום",
+ "bidi-level" : 1,
+ "gravity" : "south",
+ "language" : "he",
+ "script" : "Hebr",
+ "font" : {
+ "description" : "DejaVu Sans 11",
+ "checksum" : "69ccd07023a72ceb27a5e5c22f728627353b60a198170f5e58dd7014221abf01"
},
- {
- "glyph" : 349,
- "width" : 4096,
- "is-cluster-start" : true,
- "log-cluster" : 3
- },
- {
- "glyph" : 370,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 4
- },
- {
- "glyph" : 1109,
- "width" : 3072,
- "is-cluster-start" : true,
- "log-cluster" : 5
- }
- ]
- },
- {
- "offset" : 6,
- "length" : 8,
- "text" : "שלום",
- "bidi-level" : 1,
- "gravity" : "south",
- "language" : "he",
- "script" : "Hebr",
- "font" : {
- "description" : "DejaVu Sans 11",
- "checksum" : "69ccd07023a72ceb27a5e5c22f728627353b60a198170f5e58dd7014221abf01",
- "matrix" : [
- 1,
- -0,
- -0,
- 1,
- 0,
- 0
+ "flags" : 0,
+ "y-offset" : 0,
+ "start-x-offset" : 0,
+ "end-x-offset" : 0,
+ "glyphs" : [
+ {
+ "glyph" : 1332,
+ "width" : 10240,
+ "is-cluster-start" : true,
+ "log-cluster" : 6
+ },
+ {
+ "glyph" : 1324,
+ "width" : 4096,
+ "is-cluster-start" : true,
+ "log-cluster" : 4
+ },
+ {
+ "glyph" : 1331,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 2
+ },
+ {
+ "glyph" : 1344,
+ "width" : 10240,
+ "is-cluster-start" : true,
+ "log-cluster" : 0
+ }
]
},
- "flags" : 0,
- "y-offset" : 0,
- "start-x-offset" : 0,
- "end-x-offset" : 0,
- "glyphs" : [
- {
- "glyph" : 1332,
- "width" : 10240,
- "is-cluster-start" : true,
- "log-cluster" : 6
- },
- {
- "glyph" : 1324,
- "width" : 4096,
- "is-cluster-start" : true,
- "log-cluster" : 4
- },
- {
- "glyph" : 1331,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 2
+ {
+ "offset" : 14,
+ "length" : 1,
+ "text" : " ",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "he",
+ "script" : "Hebr",
+ "font" : {
+ "description" : "Cantarell 11",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ }
},
- {
- "glyph" : 1344,
- "width" : 10240,
- "is-cluster-start" : true,
- "log-cluster" : 0
- }
- ]
- },
- {
- "offset" : 14,
- "length" : 1,
- "text" : " ",
- "bidi-level" : 0,
- "gravity" : "south",
- "language" : "he",
- "script" : "Hebr",
- "font" : {
- "description" : "Cantarell 11",
- "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
- "variations" : {
- "wght" : 0
- },
- "matrix" : [
- 1,
- -0,
- -0,
- 1,
- 0,
- 0
+ "flags" : 0,
+ "y-offset" : 0,
+ "start-x-offset" : 0,
+ "end-x-offset" : 0,
+ "glyphs" : [
+ {
+ "glyph" : 1109,
+ "width" : 3072,
+ "is-cluster-start" : true,
+ "log-cluster" : 0
+ }
]
},
- "flags" : 0,
- "y-offset" : 0,
- "start-x-offset" : 0,
- "end-x-offset" : 0,
- "glyphs" : [
- {
- "glyph" : 1109,
- "width" : 3072,
- "is-cluster-start" : true,
- "log-cluster" : 0
- }
- ]
- },
- {
- "offset" : 15,
- "length" : 15,
- "text" : "Γειά σας",
- "bidi-level" : 0,
- "gravity" : "south",
- "language" : "el",
- "script" : "Grek",
- "font" : {
- "description" : "Cantarell 11",
- "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
- "variations" : {
- "wght" : 0
+ {
+ "offset" : 15,
+ "length" : 15,
+ "text" : "Γειά σας",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "el",
+ "script" : "Grek",
+ "font" : {
+ "description" : "Cantarell 11",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ }
},
- "matrix" : [
- 1,
- -0,
- -0,
- 1,
- 0,
- 0
+ "flags" : 0,
+ "y-offset" : 0,
+ "start-x-offset" : 0,
+ "end-x-offset" : 0,
+ "glyphs" : [
+ {
+ "glyph" : 677,
+ "width" : 8192,
+ "is-cluster-start" : true,
+ "log-cluster" : 0
+ },
+ {
+ "glyph" : 808,
+ "width" : 7168,
+ "is-cluster-start" : true,
+ "log-cluster" : 2
+ },
+ {
+ "glyph" : 812,
+ "width" : 4096,
+ "is-cluster-start" : true,
+ "log-cluster" : 4
+ },
+ {
+ "glyph" : 837,
+ "width" : 9216,
+ "is-cluster-start" : true,
+ "log-cluster" : 6
+ },
+ {
+ "glyph" : 1109,
+ "width" : 3072,
+ "is-cluster-start" : true,
+ "log-cluster" : 8
+ },
+ {
+ "glyph" : 822,
+ "width" : 9216,
+ "is-cluster-start" : true,
+ "log-cluster" : 9
+ },
+ {
+ "glyph" : 804,
+ "width" : 9216,
+ "is-cluster-start" : true,
+ "log-cluster" : 11
+ },
+ {
+ "glyph" : 821,
+ "width" : 7168,
+ "is-cluster-start" : true,
+ "log-cluster" : 13
+ }
]
- },
- "flags" : 0,
- "y-offset" : 0,
- "start-x-offset" : 0,
- "end-x-offset" : 0,
- "glyphs" : [
- {
- "glyph" : 677,
- "width" : 8192,
- "is-cluster-start" : true,
- "log-cluster" : 0
- },
- {
- "glyph" : 808,
- "width" : 7168,
- "is-cluster-start" : true,
- "log-cluster" : 2
- },
- {
- "glyph" : 812,
- "width" : 4096,
- "is-cluster-start" : true,
- "log-cluster" : 4
- },
- {
- "glyph" : 837,
- "width" : 9216,
- "is-cluster-start" : true,
- "log-cluster" : 6
- },
- {
- "glyph" : 1109,
- "width" : 3072,
- "is-cluster-start" : true,
- "log-cluster" : 8
- },
- {
- "glyph" : 822,
- "width" : 9216,
- "is-cluster-start" : true,
- "log-cluster" : 9
- },
- {
- "glyph" : 804,
- "width" : 9216,
- "is-cluster-start" : true,
- "log-cluster" : 11
- },
- {
- "glyph" : 821,
- "width" : 7168,
- "is-cluster-start" : true,
- "log-cluster" : 13
- }
- ]
- }
- ]
+ }
+ ]
+ }
}
]
}
diff --git a/tests/layouts/valid-9.layout b/tests/layouts/valid-9.layout
index 9a46f5a4..be027d0c 100644
--- a/tests/layouts/valid-9.layout
+++ b/tests/layouts/valid-9.layout
@@ -26,486 +26,499 @@
],
"font" : "Cantarell 11",
"width" : 102400,
+ "log-attrs" : [
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-start" : true,
+ "sentence-boundary" : true,
+ "sentence-start" : true,
+ "backspace-deletes-character" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "word-end" : true,
+ "expandable-space" : true,
+ "word-boundary" : true
+ },
+ {
+ "line-break" : true,
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-start" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "backspace-deletes-character" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "backspace-deletes-character" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "backspace-deletes-character" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "word-end" : true,
+ "backspace-deletes-character" : true,
+ "expandable-space" : true,
+ "word-boundary" : true
+ },
+ {
+ "line-break" : true,
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-start" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "word-end" : true,
+ "expandable-space" : true,
+ "word-boundary" : true
+ },
+ {
+ "line-break" : true,
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-start" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "line-break" : true,
+ "mandatory-break" : true,
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "word-end" : true,
+ "sentence-boundary" : true,
+ "sentence-end" : true,
+ "word-boundary" : true
+ }
+ ],
"output" : {
- "is-wrapped" : true,
- "is-ellipsized" : false,
+ "wrapped" : true,
+ "ellipsized" : false,
+ "hypenated" : false,
"unknown-glyphs" : 0,
"width" : 71392,
"height" : 77824,
- "log-attrs" : [
- {
- "char-break" : true,
- "cursor-position" : true,
- "word-start" : true,
- "sentence-boundary" : true,
- "sentence-start" : true,
- "backspace-deletes-character" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "word-end" : true,
- "expandable-space" : true,
- "word-boundary" : true
- },
- {
- "line-break" : true,
- "char-break" : true,
- "cursor-position" : true,
- "word-start" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "backspace-deletes-character" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "backspace-deletes-character" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "backspace-deletes-character" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "word-end" : true,
- "backspace-deletes-character" : true,
- "expandable-space" : true,
- "word-boundary" : true
- },
- {
- "line-break" : true,
- "char-break" : true,
- "cursor-position" : true,
- "word-start" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "word-end" : true,
- "expandable-space" : true,
- "word-boundary" : true
- },
- {
- "line-break" : true,
- "char-break" : true,
- "cursor-position" : true,
- "word-start" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "line-break" : true,
- "mandatory-break" : true,
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "word-end" : true,
- "sentence-boundary" : true,
- "sentence-end" : true,
- "word-boundary" : true
- }
- ],
"lines" : [
{
- "start-index" : 0,
- "length" : 6,
- "paragraph-start" : true,
- "direction" : "ltr",
- "runs" : [
- {
- "offset" : 0,
- "length" : 6,
- "text" : "Hello ",
- "bidi-level" : 0,
- "gravity" : "south",
- "language" : "en-us",
- "script" : "Latn",
- "font" : {
- "description" : "Cantarell 11",
- "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
- "variations" : {
- "wght" : 0
+ "position" : [
+ 0,
+ 15360
+ ],
+ "line" : {
+ "start-index" : 0,
+ "length" : 6,
+ "start-offset" : 0,
+ "n-chars" : 6,
+ "wrapped" : true,
+ "ellipsized" : false,
+ "hyphenated" : false,
+ "justified" : false,
+ "paragraph-start" : true,
+ "paragraph-end" : false,
+ "direction" : "ltr",
+ "runs" : [
+ {
+ "offset" : 0,
+ "length" : 6,
+ "text" : "Hello ",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "Latn",
+ "font" : {
+ "description" : "Cantarell 11",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ }
},
- "matrix" : [
- 1,
- -0,
- -0,
- 1,
- 0,
- 0
+ "flags" : 0,
+ "extra-attributes" : [
+ {
+ "end" : 30,
+ "type" : "letter-spacing",
+ "value" : 8888
+ }
+ ],
+ "y-offset" : 0,
+ "start-x-offset" : 0,
+ "end-x-offset" : 0,
+ "glyphs" : [
+ {
+ "glyph" : 76,
+ "width" : 15708,
+ "is-cluster-start" : true,
+ "log-cluster" : 0
+ },
+ {
+ "glyph" : 287,
+ "width" : 17080,
+ "x-offset" : 4444,
+ "is-cluster-start" : true,
+ "log-cluster" : 1
+ },
+ {
+ "glyph" : 349,
+ "width" : 12984,
+ "x-offset" : 4444,
+ "is-cluster-start" : true,
+ "log-cluster" : 2
+ },
+ {
+ "glyph" : 349,
+ "width" : 12984,
+ "x-offset" : 4444,
+ "is-cluster-start" : true,
+ "log-cluster" : 3
+ },
+ {
+ "glyph" : 370,
+ "width" : 12636,
+ "x-offset" : 4444,
+ "is-cluster-start" : true,
+ "log-cluster" : 4
+ },
+ {
+ "glyph" : 268435455,
+ "width" : 0,
+ "x-offset" : 4444,
+ "is-cluster-start" : true,
+ "log-cluster" : 5
+ }
]
- },
- "flags" : 0,
- "extra-attributes" : [
- {
- "end" : 30,
- "type" : "letter-spacing",
- "value" : 8888
- }
- ],
- "y-offset" : 0,
- "start-x-offset" : 0,
- "end-x-offset" : 0,
- "glyphs" : [
- {
- "glyph" : 76,
- "width" : 15708,
- "is-cluster-start" : true,
- "log-cluster" : 0
- },
- {
- "glyph" : 287,
- "width" : 17080,
- "x-offset" : 4444,
- "is-cluster-start" : true,
- "log-cluster" : 1
- },
- {
- "glyph" : 349,
- "width" : 12984,
- "x-offset" : 4444,
- "is-cluster-start" : true,
- "log-cluster" : 2
- },
- {
- "glyph" : 349,
- "width" : 12984,
- "x-offset" : 4444,
- "is-cluster-start" : true,
- "log-cluster" : 3
- },
- {
- "glyph" : 370,
- "width" : 12636,
- "x-offset" : 4444,
- "is-cluster-start" : true,
- "log-cluster" : 4
- },
- {
- "glyph" : 268435455,
- "width" : 0,
- "x-offset" : 4444,
- "is-cluster-start" : true,
- "log-cluster" : 5
- }
- ]
- }
- ]
+ }
+ ]
+ }
},
{
- "start-index" : 6,
- "length" : 9,
- "paragraph-start" : false,
- "direction" : "ltr",
- "runs" : [
- {
- "offset" : 6,
- "length" : 8,
- "text" : "שלום",
- "bidi-level" : 1,
- "gravity" : "south",
- "language" : "he",
- "script" : "Hebr",
- "font" : {
- "description" : "DejaVu Sans 11",
- "checksum" : "69ccd07023a72ceb27a5e5c22f728627353b60a198170f5e58dd7014221abf01",
- "matrix" : [
- 1,
- -0,
- -0,
- 1,
- 0,
- 0
+ "position" : [
+ 0,
+ 34816
+ ],
+ "line" : {
+ "start-index" : 6,
+ "length" : 9,
+ "start-offset" : 6,
+ "n-chars" : 5,
+ "wrapped" : true,
+ "ellipsized" : false,
+ "hyphenated" : false,
+ "justified" : false,
+ "paragraph-start" : false,
+ "paragraph-end" : false,
+ "direction" : "ltr",
+ "runs" : [
+ {
+ "offset" : 6,
+ "length" : 8,
+ "text" : "שלום",
+ "bidi-level" : 1,
+ "gravity" : "south",
+ "language" : "he",
+ "script" : "Hebr",
+ "font" : {
+ "description" : "DejaVu Sans 11",
+ "checksum" : "69ccd07023a72ceb27a5e5c22f728627353b60a198170f5e58dd7014221abf01"
+ },
+ "flags" : 0,
+ "extra-attributes" : [
+ {
+ "end" : 30,
+ "type" : "letter-spacing",
+ "value" : 8888
+ }
+ ],
+ "y-offset" : 0,
+ "start-x-offset" : 0,
+ "end-x-offset" : 0,
+ "glyphs" : [
+ {
+ "glyph" : 1332,
+ "width" : 14684,
+ "is-cluster-start" : true,
+ "log-cluster" : 6
+ },
+ {
+ "glyph" : 1324,
+ "width" : 12984,
+ "x-offset" : 4444,
+ "is-cluster-start" : true,
+ "log-cluster" : 4
+ },
+ {
+ "glyph" : 1331,
+ "width" : 17080,
+ "x-offset" : 4444,
+ "is-cluster-start" : true,
+ "log-cluster" : 2
+ },
+ {
+ "glyph" : 1344,
+ "width" : 19128,
+ "x-offset" : 4444,
+ "is-cluster-start" : true,
+ "log-cluster" : 0
+ }
]
},
- "flags" : 0,
- "extra-attributes" : [
- {
- "end" : 30,
- "type" : "letter-spacing",
- "value" : 8888
- }
- ],
- "y-offset" : 0,
- "start-x-offset" : 0,
- "end-x-offset" : 0,
- "glyphs" : [
- {
- "glyph" : 1332,
- "width" : 14684,
- "is-cluster-start" : true,
- "log-cluster" : 6
- },
- {
- "glyph" : 1324,
- "width" : 12984,
- "x-offset" : 4444,
- "is-cluster-start" : true,
- "log-cluster" : 4
- },
- {
- "glyph" : 1331,
- "width" : 17080,
- "x-offset" : 4444,
- "is-cluster-start" : true,
- "log-cluster" : 2
+ {
+ "offset" : 14,
+ "length" : 1,
+ "text" : " ",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "he",
+ "script" : "Hebr",
+ "font" : {
+ "description" : "Cantarell 11",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ }
},
- {
- "glyph" : 1344,
- "width" : 19128,
- "x-offset" : 4444,
- "is-cluster-start" : true,
- "log-cluster" : 0
- }
- ]
- },
- {
- "offset" : 14,
- "length" : 1,
- "text" : " ",
- "bidi-level" : 0,
- "gravity" : "south",
- "language" : "he",
- "script" : "Hebr",
- "font" : {
- "description" : "Cantarell 11",
- "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
- "variations" : {
- "wght" : 0
- },
- "matrix" : [
- 1,
- -0,
- -0,
- 1,
- 0,
- 0
+ "flags" : 0,
+ "extra-attributes" : [
+ {
+ "end" : 30,
+ "type" : "letter-spacing",
+ "value" : 8888
+ }
+ ],
+ "y-offset" : 0,
+ "start-x-offset" : 0,
+ "end-x-offset" : 0,
+ "glyphs" : [
+ {
+ "glyph" : 268435455,
+ "width" : 0,
+ "x-offset" : 4444,
+ "is-cluster-start" : true,
+ "log-cluster" : 0
+ }
]
- },
- "flags" : 0,
- "extra-attributes" : [
- {
- "end" : 30,
- "type" : "letter-spacing",
- "value" : 8888
- }
- ],
- "y-offset" : 0,
- "start-x-offset" : 0,
- "end-x-offset" : 0,
- "glyphs" : [
- {
- "glyph" : 268435455,
- "width" : 0,
- "x-offset" : 4444,
- "is-cluster-start" : true,
- "log-cluster" : 0
- }
- ]
- }
- ]
+ }
+ ]
+ }
},
{
- "start-index" : 15,
- "length" : 9,
- "paragraph-start" : false,
- "direction" : "ltr",
- "runs" : [
- {
- "offset" : 15,
- "length" : 9,
- "text" : "Γειά ",
- "bidi-level" : 0,
- "gravity" : "south",
- "language" : "el",
- "script" : "Grek",
- "font" : {
- "description" : "Cantarell 11",
- "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
- "variations" : {
- "wght" : 0
+ "position" : [
+ 0,
+ 54272
+ ],
+ "line" : {
+ "start-index" : 15,
+ "length" : 9,
+ "start-offset" : 11,
+ "n-chars" : 5,
+ "wrapped" : true,
+ "ellipsized" : false,
+ "hyphenated" : false,
+ "justified" : false,
+ "paragraph-start" : false,
+ "paragraph-end" : false,
+ "direction" : "ltr",
+ "runs" : [
+ {
+ "offset" : 15,
+ "length" : 9,
+ "text" : "Γειά ",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "el",
+ "script" : "Grek",
+ "font" : {
+ "description" : "Cantarell 11",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ }
},
- "matrix" : [
- 1,
- -0,
- -0,
- 1,
- 0,
- 0
+ "flags" : 0,
+ "extra-attributes" : [
+ {
+ "end" : 30,
+ "type" : "letter-spacing",
+ "value" : 8888
+ }
+ ],
+ "y-offset" : 0,
+ "start-x-offset" : 0,
+ "end-x-offset" : 0,
+ "glyphs" : [
+ {
+ "glyph" : 677,
+ "width" : 12636,
+ "is-cluster-start" : true,
+ "log-cluster" : 0
+ },
+ {
+ "glyph" : 808,
+ "width" : 16056,
+ "x-offset" : 4444,
+ "is-cluster-start" : true,
+ "log-cluster" : 2
+ },
+ {
+ "glyph" : 812,
+ "width" : 12984,
+ "x-offset" : 4444,
+ "is-cluster-start" : true,
+ "log-cluster" : 4
+ },
+ {
+ "glyph" : 837,
+ "width" : 13660,
+ "x-offset" : 4444,
+ "is-cluster-start" : true,
+ "log-cluster" : 6
+ },
+ {
+ "glyph" : 268435455,
+ "width" : 0,
+ "x-offset" : 4444,
+ "is-cluster-start" : true,
+ "log-cluster" : 8
+ }
]
- },
- "flags" : 0,
- "extra-attributes" : [
- {
- "end" : 30,
- "type" : "letter-spacing",
- "value" : 8888
- }
- ],
- "y-offset" : 0,
- "start-x-offset" : 0,
- "end-x-offset" : 0,
- "glyphs" : [
- {
- "glyph" : 677,
- "width" : 12636,
- "is-cluster-start" : true,
- "log-cluster" : 0
- },
- {
- "glyph" : 808,
- "width" : 16056,
- "x-offset" : 4444,
- "is-cluster-start" : true,
- "log-cluster" : 2
- },
- {
- "glyph" : 812,
- "width" : 12984,
- "x-offset" : 4444,
- "is-cluster-start" : true,
- "log-cluster" : 4
- },
- {
- "glyph" : 837,
- "width" : 13660,
- "x-offset" : 4444,
- "is-cluster-start" : true,
- "log-cluster" : 6
- },
- {
- "glyph" : 268435455,
- "width" : 0,
- "x-offset" : 4444,
- "is-cluster-start" : true,
- "log-cluster" : 8
- }
- ]
- }
- ]
+ }
+ ]
+ }
},
{
- "start-index" : 24,
- "length" : 6,
- "paragraph-start" : false,
- "direction" : "ltr",
- "runs" : [
- {
- "offset" : 24,
- "length" : 6,
- "text" : "σας",
- "bidi-level" : 0,
- "gravity" : "south",
- "language" : "el",
- "script" : "Grek",
- "font" : {
- "description" : "Cantarell 11",
- "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
- "variations" : {
- "wght" : 0
+ "position" : [
+ 0,
+ 73728
+ ],
+ "line" : {
+ "start-index" : 24,
+ "length" : 6,
+ "start-offset" : 16,
+ "n-chars" : 3,
+ "wrapped" : false,
+ "ellipsized" : false,
+ "hyphenated" : false,
+ "justified" : false,
+ "paragraph-start" : false,
+ "paragraph-end" : true,
+ "direction" : "ltr",
+ "runs" : [
+ {
+ "offset" : 24,
+ "length" : 6,
+ "text" : "σας",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "el",
+ "script" : "Grek",
+ "font" : {
+ "description" : "Cantarell 11",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ }
},
- "matrix" : [
- 1,
- -0,
- -0,
- 1,
- 0,
- 0
+ "flags" : 0,
+ "extra-attributes" : [
+ {
+ "end" : 30,
+ "type" : "letter-spacing",
+ "value" : 8888
+ }
+ ],
+ "y-offset" : 0,
+ "start-x-offset" : 0,
+ "end-x-offset" : 0,
+ "glyphs" : [
+ {
+ "glyph" : 822,
+ "width" : 13660,
+ "is-cluster-start" : true,
+ "log-cluster" : 0
+ },
+ {
+ "glyph" : 804,
+ "width" : 18104,
+ "x-offset" : 4444,
+ "is-cluster-start" : true,
+ "log-cluster" : 2
+ },
+ {
+ "glyph" : 821,
+ "width" : 11612,
+ "x-offset" : 4444,
+ "is-cluster-start" : true,
+ "log-cluster" : 4
+ }
]
- },
- "flags" : 0,
- "extra-attributes" : [
- {
- "end" : 30,
- "type" : "letter-spacing",
- "value" : 8888
- }
- ],
- "y-offset" : 0,
- "start-x-offset" : 0,
- "end-x-offset" : 0,
- "glyphs" : [
- {
- "glyph" : 822,
- "width" : 13660,
- "is-cluster-start" : true,
- "log-cluster" : 0
- },
- {
- "glyph" : 804,
- "width" : 18104,
- "x-offset" : 4444,
- "is-cluster-start" : true,
- "log-cluster" : 2
- },
- {
- "glyph" : 821,
- "width" : 11612,
- "x-offset" : 4444,
- "is-cluster-start" : true,
- "log-cluster" : 4
- }
- ]
- }
- ]
+ }
+ ]
+ }
}
]
}
diff --git a/tests/layouts/vertical.layout b/tests/layouts/vertical.layout
index b4980d54..bd2c0af8 100644
--- a/tests/layouts/vertical.layout
+++ b/tests/layouts/vertical.layout
@@ -18,242 +18,232 @@
"text" : "ABC日本語ABC",
"font" : "Noto Sans CJK JP 24",
"wrap" : "word-char",
+ "log-attrs" : [
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-start" : true,
+ "sentence-boundary" : true,
+ "sentence-start" : true,
+ "backspace-deletes-character" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "line-break" : true,
+ "char-break" : true,
+ "cursor-position" : true,
+ "word-boundary" : true
+ },
+ {
+ "line-break" : true,
+ "char-break" : true,
+ "cursor-position" : true,
+ "backspace-deletes-character" : true,
+ "word-boundary" : true
+ },
+ {
+ "line-break" : true,
+ "char-break" : true,
+ "cursor-position" : true,
+ "backspace-deletes-character" : true,
+ "word-boundary" : true
+ },
+ {
+ "line-break" : true,
+ "char-break" : true,
+ "cursor-position" : true,
+ "backspace-deletes-character" : true,
+ "word-boundary" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "char-break" : true,
+ "cursor-position" : true,
+ "break-inserts-hyphen" : true
+ },
+ {
+ "line-break" : true,
+ "mandatory-break" : true,
+ "char-break" : true,
+ "white" : true,
+ "cursor-position" : true,
+ "word-end" : true,
+ "sentence-boundary" : true,
+ "sentence-end" : true,
+ "word-boundary" : true
+ }
+ ],
"output" : {
- "is-wrapped" : false,
- "is-ellipsized" : false,
+ "wrapped" : false,
+ "ellipsized" : false,
+ "hypenated" : false,
"unknown-glyphs" : 0,
"width" : 294912,
"height" : 49152,
- "log-attrs" : [
- {
- "char-break" : true,
- "cursor-position" : true,
- "word-start" : true,
- "sentence-boundary" : true,
- "sentence-start" : true,
- "backspace-deletes-character" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "line-break" : true,
- "char-break" : true,
- "cursor-position" : true,
- "word-boundary" : true
- },
- {
- "line-break" : true,
- "char-break" : true,
- "cursor-position" : true,
- "backspace-deletes-character" : true,
- "word-boundary" : true
- },
- {
- "line-break" : true,
- "char-break" : true,
- "cursor-position" : true,
- "backspace-deletes-character" : true,
- "word-boundary" : true
- },
- {
- "line-break" : true,
- "char-break" : true,
- "cursor-position" : true,
- "backspace-deletes-character" : true,
- "word-boundary" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "char-break" : true,
- "cursor-position" : true,
- "break-inserts-hyphen" : true
- },
- {
- "line-break" : true,
- "mandatory-break" : true,
- "char-break" : true,
- "white" : true,
- "cursor-position" : true,
- "word-end" : true,
- "sentence-boundary" : true,
- "sentence-end" : true,
- "word-boundary" : true
- }
- ],
"lines" : [
{
- "start-index" : 0,
- "length" : 15,
- "paragraph-start" : true,
- "direction" : "ltr",
- "runs" : [
- {
- "offset" : 0,
- "length" : 3,
- "text" : "ABC",
- "bidi-level" : 0,
- "gravity" : "east",
- "language" : "en-us",
- "script" : "Latn",
- "font" : {
- "description" : "Noto Sans CJK JP Rotated-Left 24",
- "checksum" : "3b50ae56f1fb5637c82d785945531f718f40b78a26bea3d137e58808bd774399",
- "matrix" : [
- 1,
- -0,
- -0,
- 1,
- 0,
- 0
- ]
- },
- "flags" : 1,
- "y-offset" : 0,
- "start-x-offset" : 0,
- "end-x-offset" : 0,
- "glyphs" : [
- {
- "glyph" : 1,
- "width" : 32768,
- "x-offset" : 28836,
- "y-offset" : 9945,
- "is-cluster-start" : true,
- "log-cluster" : 0
+ "position" : [
+ 0,
+ 24576
+ ],
+ "line" : {
+ "start-index" : 0,
+ "length" : 15,
+ "start-offset" : 0,
+ "n-chars" : 9,
+ "wrapped" : false,
+ "ellipsized" : false,
+ "hyphenated" : false,
+ "justified" : false,
+ "paragraph-start" : true,
+ "paragraph-end" : true,
+ "direction" : "ltr",
+ "runs" : [
+ {
+ "offset" : 0,
+ "length" : 3,
+ "text" : "ABC",
+ "bidi-level" : 0,
+ "gravity" : "east",
+ "language" : "en-us",
+ "script" : "Latn",
+ "font" : {
+ "description" : "Noto Sans CJK JP Rotated-Left 24",
+ "checksum" : "3b50ae56f1fb5637c82d785945531f718f40b78a26bea3d137e58808bd774399"
},
- {
- "glyph" : 2,
- "width" : 32768,
- "x-offset" : 28836,
- "y-offset" : 10764,
- "is-cluster-start" : true,
- "log-cluster" : 1
- },
- {
- "glyph" : 3,
- "width" : 32768,
- "x-offset" : 28836,
- "y-offset" : 10453,
- "is-cluster-start" : true,
- "log-cluster" : 2
- }
- ]
- },
- {
- "offset" : 3,
- "length" : 9,
- "text" : "日本語",
- "bidi-level" : 0,
- "gravity" : "east",
- "language" : "xx",
- "script" : "Hani",
- "font" : {
- "description" : "Noto Sans CJK JP Rotated-Left 24",
- "checksum" : "3b50ae56f1fb5637c82d785945531f718f40b78a26bea3d137e58808bd774399",
- "matrix" : [
- 1,
- -0,
- -0,
- 1,
- 0,
- 0
+ "flags" : 1,
+ "y-offset" : 0,
+ "start-x-offset" : 0,
+ "end-x-offset" : 0,
+ "glyphs" : [
+ {
+ "glyph" : 1,
+ "width" : 32768,
+ "x-offset" : 28836,
+ "y-offset" : 9945,
+ "is-cluster-start" : true,
+ "log-cluster" : 0
+ },
+ {
+ "glyph" : 2,
+ "width" : 32768,
+ "x-offset" : 28836,
+ "y-offset" : 10764,
+ "is-cluster-start" : true,
+ "log-cluster" : 1
+ },
+ {
+ "glyph" : 3,
+ "width" : 32768,
+ "x-offset" : 28836,
+ "y-offset" : 10453,
+ "is-cluster-start" : true,
+ "log-cluster" : 2
+ }
]
},
- "flags" : 1,
- "y-offset" : 0,
- "start-x-offset" : 0,
- "end-x-offset" : 0,
- "glyphs" : [
- {
- "glyph" : 4,
- "width" : 32768,
- "x-offset" : 28836,
- "y-offset" : 16384,
- "is-cluster-start" : true,
- "log-cluster" : 0
- },
- {
- "glyph" : 5,
- "width" : 32768,
- "x-offset" : 28836,
- "y-offset" : 16384,
- "is-cluster-start" : true,
- "log-cluster" : 3
+ {
+ "offset" : 3,
+ "length" : 9,
+ "text" : "日本語",
+ "bidi-level" : 0,
+ "gravity" : "east",
+ "language" : "xx",
+ "script" : "Hani",
+ "font" : {
+ "description" : "Noto Sans CJK JP Rotated-Left 24",
+ "checksum" : "3b50ae56f1fb5637c82d785945531f718f40b78a26bea3d137e58808bd774399"
},
- {
- "glyph" : 7,
- "width" : 32768,
- "x-offset" : 28836,
- "y-offset" : 16384,
- "is-cluster-start" : true,
- "log-cluster" : 6
- }
- ]
- },
- {
- "offset" : 12,
- "length" : 3,
- "text" : "ABC",
- "bidi-level" : 0,
- "gravity" : "east",
- "language" : "en-us",
- "script" : "Latn",
- "font" : {
- "description" : "Noto Sans CJK JP Rotated-Left 24",
- "checksum" : "3b50ae56f1fb5637c82d785945531f718f40b78a26bea3d137e58808bd774399",
- "matrix" : [
- 1,
- -0,
- -0,
- 1,
- 0,
- 0
+ "flags" : 1,
+ "y-offset" : 0,
+ "start-x-offset" : 0,
+ "end-x-offset" : 0,
+ "glyphs" : [
+ {
+ "glyph" : 4,
+ "width" : 32768,
+ "x-offset" : 28836,
+ "y-offset" : 16384,
+ "is-cluster-start" : true,
+ "log-cluster" : 0
+ },
+ {
+ "glyph" : 5,
+ "width" : 32768,
+ "x-offset" : 28836,
+ "y-offset" : 16384,
+ "is-cluster-start" : true,
+ "log-cluster" : 3
+ },
+ {
+ "glyph" : 7,
+ "width" : 32768,
+ "x-offset" : 28836,
+ "y-offset" : 16384,
+ "is-cluster-start" : true,
+ "log-cluster" : 6
+ }
]
},
- "flags" : 1,
- "y-offset" : 0,
- "start-x-offset" : 0,
- "end-x-offset" : 0,
- "glyphs" : [
- {
- "glyph" : 1,
- "width" : 32768,
- "x-offset" : 28836,
- "y-offset" : 9945,
- "is-cluster-start" : true,
- "log-cluster" : 0
+ {
+ "offset" : 12,
+ "length" : 3,
+ "text" : "ABC",
+ "bidi-level" : 0,
+ "gravity" : "east",
+ "language" : "en-us",
+ "script" : "Latn",
+ "font" : {
+ "description" : "Noto Sans CJK JP Rotated-Left 24",
+ "checksum" : "3b50ae56f1fb5637c82d785945531f718f40b78a26bea3d137e58808bd774399"
},
- {
- "glyph" : 2,
- "width" : 32768,
- "x-offset" : 28836,
- "y-offset" : 10764,
- "is-cluster-start" : true,
- "log-cluster" : 1
- },
- {
- "glyph" : 3,
- "width" : 32768,
- "x-offset" : 28836,
- "y-offset" : 10453,
- "is-cluster-start" : true,
- "log-cluster" : 2
- }
- ]
- }
- ]
+ "flags" : 1,
+ "y-offset" : 0,
+ "start-x-offset" : 0,
+ "end-x-offset" : 0,
+ "glyphs" : [
+ {
+ "glyph" : 1,
+ "width" : 32768,
+ "x-offset" : 28836,
+ "y-offset" : 9945,
+ "is-cluster-start" : true,
+ "log-cluster" : 0
+ },
+ {
+ "glyph" : 2,
+ "width" : 32768,
+ "x-offset" : 28836,
+ "y-offset" : 10764,
+ "is-cluster-start" : true,
+ "log-cluster" : 1
+ },
+ {
+ "glyph" : 3,
+ "width" : 32768,
+ "x-offset" : 28836,
+ "y-offset" : 10453,
+ "is-cluster-start" : true,
+ "log-cluster" : 2
+ }
+ ]
+ }
+ ]
+ }
}
]
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]