summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthias Clasen <mclasen@redhat.com>2022-01-21 13:51:46 -0500
committerMatthias Clasen <mclasen@redhat.com>2022-01-24 10:58:17 -0500
commit33eb81450f8572762a5b805cf0bb4740c86f45cf (patch)
treea796fc02e883d3a6e1c32110ba16e368febf153a
parentfe6a80a83a17ca4233e96adfd44641ba4830ad05 (diff)
downloadpango-33eb81450f8572762a5b805cf0bb4740c86f45cf.tar.gz
Regenerate layout tests
The serialization format has changed, so these need to be regenerated to match.
-rw-r--r--tests/layouts/aaa.layout600
-rw-r--r--tests/layouts/arabic-format.layout132
-rw-r--r--tests/layouts/bratwurst.layout372
-rw-r--r--tests/layouts/bratwurst2.layout318
-rw-r--r--tests/layouts/bratwurst3.layout593
-rw-r--r--tests/layouts/bratwurst4.layout433
-rw-r--r--tests/layouts/effigy.layout323
-rw-r--r--tests/layouts/kebab.layout453
-rw-r--r--tests/layouts/letterspacing.layout206
-rw-r--r--tests/layouts/no-space.layout238
-rw-r--r--tests/layouts/tab-assert.layout312
-rw-r--r--tests/layouts/tab-crash.layout2778
-rw-r--r--tests/layouts/tabs-nowrap.layout665
-rw-r--r--tests/layouts/tabs.layout3480
-rw-r--r--tests/layouts/valid-1.layout1268
-rw-r--r--tests/layouts/valid-10.layout729
-rw-r--r--tests/layouts/valid-11.layout788
-rw-r--r--tests/layouts/valid-12.layout1311
-rw-r--r--tests/layouts/valid-13.layout1402
-rw-r--r--tests/layouts/valid-14.layout973
-rw-r--r--tests/layouts/valid-15.layout2001
-rw-r--r--tests/layouts/valid-16.layout2003
-rw-r--r--tests/layouts/valid-17.layout844
-rw-r--r--tests/layouts/valid-18.layout1445
-rw-r--r--tests/layouts/valid-19.layout1132
-rw-r--r--tests/layouts/valid-2.layout1116
-rw-r--r--tests/layouts/valid-20.layout358
-rw-r--r--tests/layouts/valid-21.layout274
-rw-r--r--tests/layouts/valid-22.layout1180
-rw-r--r--tests/layouts/valid-3.layout356
-rw-r--r--tests/layouts/valid-4.layout3888
-rw-r--r--tests/layouts/valid-5.layout3539
-rw-r--r--tests/layouts/valid-6.layout710
-rw-r--r--tests/layouts/valid-7.layout1160
-rw-r--r--tests/layouts/valid-8.layout733
-rw-r--r--tests/layouts/valid-9.layout969
-rw-r--r--tests/layouts/vertical.layout462
37 files changed, 20229 insertions, 19315 deletions
diff --git a/tests/layouts/aaa.layout b/tests/layouts/aaa.layout
index 829e74c8..d290e7eb 100644
--- a/tests/layouts/aaa.layout
+++ b/tests/layouts/aaa.layout
@@ -19,276 +19,372 @@
"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" : 41984,
- "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" : "latin",
- "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" : 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" : "latin",
+ "font" : {
+ "description" : "DejaVu Sans 32",
+ "checksum" : "69ccd07023a72ceb27a5e5c22f728627353b60a198170f5e58dd7014221abf01",
+ "matrix" : [
+ 1,
+ -0,
+ -0,
+ 1,
+ 0,
+ 0
+ ]
},
- {
- "glyph" : 2803,
- "width" : 15360,
- "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" : 2803,
+ "width" : 15360,
+ "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" : "latin",
- "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" : 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" : "latin",
+ "font" : {
+ "description" : "DejaVu Sans 32",
+ "checksum" : "69ccd07023a72ceb27a5e5c22f728627353b60a198170f5e58dd7014221abf01",
+ "matrix" : [
+ 1,
+ -0,
+ -0,
+ 1,
+ 0,
+ 0
+ ]
},
- {
- "glyph" : 2803,
- "width" : 15360,
- "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" : 2803,
+ "width" : 15360,
+ "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" : "latin",
- "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" : 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" : "latin",
+ "font" : {
+ "description" : "DejaVu Sans 32",
+ "checksum" : "69ccd07023a72ceb27a5e5c22f728627353b60a198170f5e58dd7014221abf01",
+ "matrix" : [
+ 1,
+ -0,
+ -0,
+ 1,
+ 0,
+ 0
+ ]
},
- {
- "glyph" : 2803,
- "width" : 15360,
- "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" : 2803,
+ "width" : 15360,
+ "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" : "latin",
- "font" : {
- "description" : "DejaVu Sans 32",
- "checksum" : "69ccd07023a72ceb27a5e5c22f728627353b60a198170f5e58dd7014221abf01",
- "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" : "latin",
+ "font" : {
+ "description" : "DejaVu Sans 32",
+ "checksum" : "69ccd07023a72ceb27a5e5c22f728627353b60a198170f5e58dd7014221abf01",
+ "matrix" : [
+ 1,
+ -0,
+ -0,
+ 1,
+ 0,
+ 0
+ ]
+ },
+ "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" : "latin",
- "font" : {
- "description" : "DejaVu Sans 32",
- "checksum" : "69ccd07023a72ceb27a5e5c22f728627353b60a198170f5e58dd7014221abf01",
- "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" : "latin",
+ "font" : {
+ "description" : "DejaVu Sans 32",
+ "checksum" : "69ccd07023a72ceb27a5e5c22f728627353b60a198170f5e58dd7014221abf01",
+ "matrix" : [
+ 1,
+ -0,
+ -0,
+ 1,
+ 0,
+ 0
+ ]
+ },
+ "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" : 14336,
+ "is-cluster-start" : true,
+ "log-cluster" : 0
+ }
]
- },
- "flags" : 0,
- "y-offset" : 0,
- "start-x-offset" : 0,
- "end-x-offset" : 0,
- "glyphs" : [
- {
- "glyph" : 3,
- "width" : 14336,
- "is-cluster-start" : true,
- "log-cluster" : 0
- }
- ]
- }
- ]
+ }
+ ]
+ }
}
]
}
diff --git a/tests/layouts/arabic-format.layout b/tests/layouts/arabic-format.layout
index 83c3d5ab..b583ddc1 100644
--- a/tests/layouts/arabic-format.layout
+++ b/tests/layouts/arabic-format.layout
@@ -17,72 +17,86 @@
"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" : "common",
- "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" : "common",
+ "font" : {
+ "description" : "Amiri 32",
+ "checksum" : "d5e6374130d6df09e66f80f0bbcb7262112584ebadb861f0a412a21cc742a5dd",
+ "matrix" : [
+ 1,
+ -0,
+ -0,
+ 1,
+ 0,
+ 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
+ }
]
- },
- "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 06ec8272..609c8e8e 100644
--- a/tests/layouts/bratwurst.layout
+++ b/tests/layouts/bratwurst.layout
@@ -26,196 +26,210 @@
],
"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" : "latin",
- "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" : "latin",
+ "font" : {
+ "description" : "Cantarell Bold 32",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 8374
+ },
+ "matrix" : [
+ 1,
+ -0,
+ -0,
+ 1,
+ 0,
+ 0
+ ]
},
- "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" : "latin",
+ "font" : {
+ "description" : "Cantarell Bold 32",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 8374
+ },
+ "matrix" : [
+ 1,
+ -0,
+ -0,
+ 1,
+ 0,
+ 0
+ ]
},
- {
- "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" : "latin",
- "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 0c3be229..20b803d9 100644
--- a/tests/layouts/bratwurst2.layout
+++ b/tests/layouts/bratwurst2.layout
@@ -19,166 +19,180 @@
"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" : "latin",
- "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" : "latin",
+ "font" : {
+ "description" : "Cantarell Bold 32",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 8374
+ },
+ "matrix" : [
+ 1,
+ -0,
+ -0,
+ 1,
+ 0,
+ 0
+ ]
},
- "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 42c6a487..8f899c9a 100644
--- a/tests/layouts/bratwurst3.layout
+++ b/tests/layouts/bratwurst3.layout
@@ -18,297 +18,350 @@
"comment" : "A single word with word-char wrapping,\nexpected to be broken to fit the line width.",
"text" : "Bratwurst",
"font" : "Cantarell Bold 32",
- "wrap" : "word-char",
+ "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" : "latin",
- "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" : "latin",
+ "font" : {
+ "description" : "Cantarell Bold 32",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 8374
+ },
+ "matrix" : [
+ 1,
+ -0,
+ -0,
+ 1,
+ 0,
+ 0
+ ]
},
- "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" : "latin",
- "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" : "latin",
+ "font" : {
+ "description" : "Cantarell Bold 32",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 8374
+ },
+ "matrix" : [
+ 1,
+ -0,
+ -0,
+ 1,
+ 0,
+ 0
+ ]
},
- "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" : "latin",
- "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" : "latin",
+ "font" : {
+ "description" : "Cantarell Bold 32",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 8374
+ },
+ "matrix" : [
+ 1,
+ -0,
+ -0,
+ 1,
+ 0,
+ 0
+ ]
},
- "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" : "latin",
- "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" : "latin",
+ "font" : {
+ "description" : "Cantarell Bold 32",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 8374
+ },
+ "matrix" : [
+ 1,
+ -0,
+ -0,
+ 1,
+ 0,
+ 0
+ ]
},
- "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 34a4e1aa..1ba8872d 100644
--- a/tests/layouts/bratwurst4.layout
+++ b/tests/layouts/bratwurst4.layout
@@ -19,221 +19,248 @@
"text" : "Brat­wurst",
"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" : "latin",
- "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" : "latin",
+ "font" : {
+ "description" : "Cantarell Bold 32",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 8374
+ },
+ "matrix" : [
+ 1,
+ -0,
+ -0,
+ 1,
+ 0,
+ 0
+ ]
},
- "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" : "latin",
- "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" : "latin",
+ "font" : {
+ "description" : "Cantarell Bold 32",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 8374
+ },
+ "matrix" : [
+ 1,
+ -0,
+ -0,
+ 1,
+ 0,
+ 0
+ ]
},
- "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 f8a24abd..2c4ea1fe 100644
--- a/tests/layouts/effigy.layout
+++ b/tests/layouts/effigy.layout
@@ -21,164 +21,191 @@
"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" : "latin",
- "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" : "latin",
+ "font" : {
+ "description" : "DejaVu Sans 32",
+ "checksum" : "69ccd07023a72ceb27a5e5c22f728627353b60a198170f5e58dd7014221abf01",
+ "matrix" : [
+ 1,
+ -0,
+ -0,
+ 1,
+ 0,
+ 0
+ ]
},
- {
- "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" : "latin",
- "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" : "latin",
+ "font" : {
+ "description" : "DejaVu Sans 32",
+ "checksum" : "69ccd07023a72ceb27a5e5c22f728627353b60a198170f5e58dd7014221abf01",
+ "matrix" : [
+ 1,
+ -0,
+ -0,
+ 1,
+ 0,
+ 0
+ ]
},
- {
- "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 a0efe11d..f8fc941b 100644
--- a/tests/layouts/kebab.layout
+++ b/tests/layouts/kebab.layout
@@ -19,231 +19,258 @@
"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" : "latin",
- "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" : "latin",
+ "font" : {
+ "description" : "Cantarell Bold 32",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 8374
+ },
+ "matrix" : [
+ 1,
+ -0,
+ -0,
+ 1,
+ 0,
+ 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" : 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" : "latin",
- "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" : "latin",
+ "font" : {
+ "description" : "Cantarell Bold 32",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 8374
+ },
+ "matrix" : [
+ 1,
+ -0,
+ -0,
+ 1,
+ 0,
+ 0
+ ]
},
- "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 f1eb5fa5..4bd681ec 100644
--- a/tests/layouts/letterspacing.layout
+++ b/tests/layouts/letterspacing.layout
@@ -26,109 +26,123 @@
}
],
"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" : "latin",
- "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" : "latin",
+ "font" : {
+ "description" : "DejaVu Sans 32",
+ "checksum" : "69ccd07023a72ceb27a5e5c22f728627353b60a198170f5e58dd7014221abf01",
+ "matrix" : [
+ 1,
+ -0,
+ -0,
+ 1,
+ 0,
+ 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
- }
- ]
- }
- ]
+ "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 b9bef178..03c75f27 100644
--- a/tests/layouts/no-space.layout
+++ b/tests/layouts/no-space.layout
@@ -17,125 +17,139 @@
"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" : "common",
- "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" : "common",
+ "font" : {
+ "description" : "Font Awesome 5 Free Solid Heavy 32",
+ "checksum" : "8fe6cd51391fa6f8c2008609ddd489bb81a6d7674f3a1c8b7fa07efd026a6397",
+ "matrix" : [
+ 1,
+ -0,
+ -0,
+ 1,
+ 0,
+ 0
+ ]
},
- {
- "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 3b8ce5e5..2366bfb1 100644
--- a/tests/layouts/tab-assert.layout
+++ b/tests/layouts/tab-assert.layout
@@ -17,166 +17,180 @@
"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" : "common",
- "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" : "common",
- "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" : "common",
+ "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
+ }
]
},
- "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" : "common",
- "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" : "common",
+ "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" : 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" : "common",
+ "font" : {
+ "description" : "DejaVu Sans 12",
+ "checksum" : "69ccd07023a72ceb27a5e5c22f728627353b60a198170f5e58dd7014221abf01",
+ "matrix" : [
+ 1,
+ -0,
+ -0,
+ 1,
+ 0,
+ 0
+ ]
},
- {
- "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 3fb0ab54..d021df08 100644
--- a/tests/layouts/tab-crash.layout
+++ b/tests/layouts/tab-crash.layout
@@ -35,1394 +35,1434 @@
]
},
"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" : 585728,
"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" : "latin",
- "font" : {
- "description" : "DejaVu Sans 12",
- "checksum" : "69ccd07023a72ceb27a5e5c22f728627353b60a198170f5e58dd7014221abf01",
- "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" : "latin",
+ "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" : 76,
+ "width" : 4096,
+ "is-cluster-start" : true,
+ "log-cluster" : 0
+ },
+ {
+ "glyph" : 71,
+ "width" : 10240,
+ "is-cluster-start" : true,
+ "log-cluster" : 1
+ },
+ {
+ "glyph" : 32,
+ "width" : 13312,
+ "is-cluster-start" : true,
+ "log-cluster" : 2
+ },
+ {
+ "glyph" : 22,
+ "width" : 10240,
+ "is-cluster-start" : true,
+ "log-cluster" : 3
+ },
+ {
+ "glyph" : 3,
+ "width" : 5120,
+ "is-cluster-start" : true,
+ "log-cluster" : 4
+ },
+ {
+ "glyph" : 56,
+ "width" : 12288,
+ "is-cluster-start" : true,
+ "log-cluster" : 5
+ },
+ {
+ "glyph" : 49,
+ "width" : 12288,
+ "is-cluster-start" : true,
+ "log-cluster" : 6
+ },
+ {
+ "glyph" : 44,
+ "width" : 5120,
+ "is-cluster-start" : true,
+ "log-cluster" : 7
+ },
+ {
+ "glyph" : 50,
+ "width" : 13312,
+ "is-cluster-start" : true,
+ "log-cluster" : 8
+ },
+ {
+ "glyph" : 49,
+ "width" : 12288,
+ "is-cluster-start" : true,
+ "log-cluster" : 9
+ },
+ {
+ "glyph" : 3,
+ "width" : 5120,
+ "is-cluster-start" : true,
+ "log-cluster" : 10
+ },
+ {
+ "glyph" : 36,
+ "width" : 11264,
+ "is-cluster-start" : true,
+ "log-cluster" : 11
+ },
+ {
+ "glyph" : 47,
+ "width" : 9216,
+ "is-cluster-start" : true,
+ "log-cluster" : 12
+ },
+ {
+ "glyph" : 47,
+ "width" : 9216,
+ "is-cluster-start" : true,
+ "log-cluster" : 13
+ },
+ {
+ "glyph" : 3,
+ "width" : 5120,
+ "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" : 9216,
+ "is-cluster-start" : true,
+ "log-cluster" : 17
+ },
+ {
+ "glyph" : 40,
+ "width" : 10240,
+ "is-cluster-start" : true,
+ "log-cluster" : 18
+ },
+ {
+ "glyph" : 38,
+ "width" : 11264,
+ "is-cluster-start" : true,
+ "log-cluster" : 19
+ },
+ {
+ "glyph" : 55,
+ "width" : 10240,
+ "is-cluster-start" : true,
+ "log-cluster" : 20
+ },
+ {
+ "glyph" : 3,
+ "width" : 5120,
+ "is-cluster-start" : true,
+ "log-cluster" : 21
+ },
+ {
+ "glyph" : 49,
+ "width" : 12288,
+ "is-cluster-start" : true,
+ "log-cluster" : 22
+ },
+ {
+ "glyph" : 56,
+ "width" : 12288,
+ "is-cluster-start" : true,
+ "log-cluster" : 23
+ },
+ {
+ "glyph" : 47,
+ "width" : 9216,
+ "is-cluster-start" : true,
+ "log-cluster" : 24
+ },
+ {
+ "glyph" : 47,
+ "width" : 9216,
+ "is-cluster-start" : true,
+ "log-cluster" : 25
+ },
+ {
+ "glyph" : 15,
+ "width" : 5120,
+ "is-cluster-start" : true,
+ "log-cluster" : 26
+ },
+ {
+ "glyph" : 3,
+ "width" : 5120,
+ "is-cluster-start" : true,
+ "log-cluster" : 27
+ },
+ {
+ "glyph" : 49,
+ "width" : 12288,
+ "is-cluster-start" : true,
+ "log-cluster" : 28
+ },
+ {
+ "glyph" : 56,
+ "width" : 12288,
+ "is-cluster-start" : true,
+ "log-cluster" : 29
+ },
+ {
+ "glyph" : 47,
+ "width" : 9216,
+ "is-cluster-start" : true,
+ "log-cluster" : 30
+ },
+ {
+ "glyph" : 47,
+ "width" : 9216,
+ "is-cluster-start" : true,
+ "log-cluster" : 31
+ },
+ {
+ "glyph" : 15,
+ "width" : 5120,
+ "is-cluster-start" : true,
+ "log-cluster" : 32
+ },
+ {
+ "glyph" : 3,
+ "width" : 5120,
+ "is-cluster-start" : true,
+ "log-cluster" : 33
+ },
+ {
+ "glyph" : 38,
+ "width" : 11264,
+ "is-cluster-start" : true,
+ "log-cluster" : 34
+ },
+ {
+ "glyph" : 50,
+ "width" : 13312,
+ "is-cluster-start" : true,
+ "log-cluster" : 35
+ },
+ {
+ "glyph" : 49,
+ "width" : 12288,
+ "is-cluster-start" : true,
+ "log-cluster" : 36
+ },
+ {
+ "glyph" : 38,
+ "width" : 11264,
+ "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" : 6144,
+ "is-cluster-start" : true,
+ "log-cluster" : 40
+ },
+ {
+ "glyph" : 19,
+ "width" : 10240,
+ "is-cluster-start" : true,
+ "log-cluster" : 41
+ },
+ {
+ "glyph" : 91,
+ "width" : 9216,
+ "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" : 5120,
+ "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" : 4096,
- "is-cluster-start" : true,
- "log-cluster" : 0
- },
- {
- "glyph" : 71,
- "width" : 10240,
- "is-cluster-start" : true,
- "log-cluster" : 1
- },
- {
- "glyph" : 32,
- "width" : 13312,
- "is-cluster-start" : true,
- "log-cluster" : 2
- },
- {
- "glyph" : 22,
- "width" : 10240,
- "is-cluster-start" : true,
- "log-cluster" : 3
- },
- {
- "glyph" : 3,
- "width" : 5120,
- "is-cluster-start" : true,
- "log-cluster" : 4
- },
- {
- "glyph" : 56,
- "width" : 12288,
- "is-cluster-start" : true,
- "log-cluster" : 5
- },
- {
- "glyph" : 49,
- "width" : 12288,
- "is-cluster-start" : true,
- "log-cluster" : 6
- },
- {
- "glyph" : 44,
- "width" : 5120,
- "is-cluster-start" : true,
- "log-cluster" : 7
- },
- {
- "glyph" : 50,
- "width" : 13312,
- "is-cluster-start" : true,
- "log-cluster" : 8
- },
- {
- "glyph" : 49,
- "width" : 12288,
- "is-cluster-start" : true,
- "log-cluster" : 9
- },
- {
- "glyph" : 3,
- "width" : 5120,
- "is-cluster-start" : true,
- "log-cluster" : 10
- },
- {
- "glyph" : 36,
- "width" : 11264,
- "is-cluster-start" : true,
- "log-cluster" : 11
- },
- {
- "glyph" : 47,
- "width" : 9216,
- "is-cluster-start" : true,
- "log-cluster" : 12
- },
- {
- "glyph" : 47,
- "width" : 9216,
- "is-cluster-start" : true,
- "log-cluster" : 13
- },
- {
- "glyph" : 3,
- "width" : 5120,
- "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" : 9216,
- "is-cluster-start" : true,
- "log-cluster" : 17
- },
- {
- "glyph" : 40,
- "width" : 10240,
- "is-cluster-start" : true,
- "log-cluster" : 18
- },
- {
- "glyph" : 38,
- "width" : 11264,
- "is-cluster-start" : true,
- "log-cluster" : 19
- },
- {
- "glyph" : 55,
- "width" : 10240,
- "is-cluster-start" : true,
- "log-cluster" : 20
- },
- {
- "glyph" : 3,
- "width" : 5120,
- "is-cluster-start" : true,
- "log-cluster" : 21
- },
- {
- "glyph" : 49,
- "width" : 12288,
- "is-cluster-start" : true,
- "log-cluster" : 22
- },
- {
- "glyph" : 56,
- "width" : 12288,
- "is-cluster-start" : true,
- "log-cluster" : 23
- },
- {
- "glyph" : 47,
- "width" : 9216,
- "is-cluster-start" : true,
- "log-cluster" : 24
- },
- {
- "glyph" : 47,
- "width" : 9216,
- "is-cluster-start" : true,
- "log-cluster" : 25
- },
- {
- "glyph" : 15,
- "width" : 5120,
- "is-cluster-start" : true,
- "log-cluster" : 26
- },
- {
- "glyph" : 3,
- "width" : 5120,
- "is-cluster-start" : true,
- "log-cluster" : 27
- },
- {
- "glyph" : 49,
- "width" : 12288,
- "is-cluster-start" : true,
- "log-cluster" : 28
- },
- {
- "glyph" : 56,
- "width" : 12288,
- "is-cluster-start" : true,
- "log-cluster" : 29
- },
- {
- "glyph" : 47,
- "width" : 9216,
- "is-cluster-start" : true,
- "log-cluster" : 30
- },
- {
- "glyph" : 47,
- "width" : 9216,
- "is-cluster-start" : true,
- "log-cluster" : 31
- },
- {
- "glyph" : 15,
- "width" : 5120,
- "is-cluster-start" : true,
- "log-cluster" : 32
- },
- {
- "glyph" : 3,
- "width" : 5120,
- "is-cluster-start" : true,
- "log-cluster" : 33
- },
- {
- "glyph" : 38,
- "width" : 11264,
- "is-cluster-start" : true,
- "log-cluster" : 34
- },
- {
- "glyph" : 50,
- "width" : 13312,
- "is-cluster-start" : true,
- "log-cluster" : 35
- },
- {
- "glyph" : 49,
- "width" : 12288,
- "is-cluster-start" : true,
- "log-cluster" : 36
- },
- {
- "glyph" : 38,
- "width" : 11264,
- "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" : 6144,
- "is-cluster-start" : true,
- "log-cluster" : 40
- },
- {
- "glyph" : 19,
- "width" : 10240,
- "is-cluster-start" : true,
- "log-cluster" : 41
- },
- {
- "glyph" : 91,
- "width" : 9216,
- "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" : 5120,
- "is-cluster-start" : true,
- "log-cluster" : 53
- },
- {
- "glyph" : 268435455,
- "width" : 0,
- "is-cluster-start" : true,
- "log-cluster" : 54
- }
- ]
- }
- ]
- },
- {
- "start-index" : 55,
- "length" : 37,
- "paragraph-start" : false,
- "direction" : "ltr",
- "runs" : [
- {
- "offset" : 55,
- "length" : 31,
- "text" : "0x73323173656374657374), NULL--",
- "bidi-level" : 0,
- "gravity" : "south",
- "language" : "en-us",
- "script" : "latin",
- "font" : {
- "description" : "DejaVu Sans 12",
- "checksum" : "69ccd07023a72ceb27a5e5c22f728627353b60a198170f5e58dd7014221abf01",
- "matrix" : [
- 1,
- -0,
- -0,
- 1,
- 0,
- 0
+ }
+ ]
+ }
+ },
+ {
+ "position" : [
+ 0,
+ 34816
+ ],
+ "line" : {
+ "start-index" : 55,
+ "length" : 37,
+ "start-offset" : 55,
+ "n-chars" : 37,
+ "wrapped" : true,
+ "ellipsized" : false,
+ "hyphenated" : false,
+ "justified" : false,
+ "paragraph-start" : false,
+ "paragraph-end" : false,
+ "direction" : "ltr",
+ "runs" : [
+ {
+ "offset" : 55,
+ "length" : 31,
+ "text" : "0x73323173656374657374), NULL--",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "latin",
+ "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" : 19,
+ "width" : 10240,
+ "is-cluster-start" : true,
+ "log-cluster" : 0
+ },
+ {
+ "glyph" : 91,
+ "width" : 9216,
+ "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" : 6144,
+ "is-cluster-start" : true,
+ "log-cluster" : 22
+ },
+ {
+ "glyph" : 15,
+ "width" : 5120,
+ "is-cluster-start" : true,
+ "log-cluster" : 23
+ },
+ {
+ "glyph" : 3,
+ "width" : 5120,
+ "is-cluster-start" : true,
+ "log-cluster" : 24
+ },
+ {
+ "glyph" : 49,
+ "width" : 12288,
+ "is-cluster-start" : true,
+ "log-cluster" : 25
+ },
+ {
+ "glyph" : 56,
+ "width" : 12288,
+ "is-cluster-start" : true,
+ "log-cluster" : 26
+ },
+ {
+ "glyph" : 47,
+ "width" : 9216,
+ "is-cluster-start" : true,
+ "log-cluster" : 27
+ },
+ {
+ "glyph" : 47,
+ "width" : 9216,
+ "is-cluster-start" : true,
+ "log-cluster" : 28
+ },
+ {
+ "glyph" : 16,
+ "width" : 6144,
+ "is-cluster-start" : true,
+ "log-cluster" : 29
+ },
+ {
+ "glyph" : 16,
+ "width" : 6144,
+ "is-cluster-start" : true,
+ "log-cluster" : 30
+ }
]
},
- "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" : 9216,
- "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" : 6144,
- "is-cluster-start" : true,
- "log-cluster" : 22
- },
- {
- "glyph" : 15,
- "width" : 5120,
- "is-cluster-start" : true,
- "log-cluster" : 23
- },
- {
- "glyph" : 3,
- "width" : 5120,
- "is-cluster-start" : true,
- "log-cluster" : 24
- },
- {
- "glyph" : 49,
- "width" : 12288,
- "is-cluster-start" : true,
- "log-cluster" : 25
- },
- {
- "glyph" : 56,
- "width" : 12288,
- "is-cluster-start" : true,
- "log-cluster" : 26
- },
- {
- "glyph" : 47,
- "width" : 9216,
- "is-cluster-start" : true,
- "log-cluster" : 27
- },
- {
- "glyph" : 47,
- "width" : 9216,
- "is-cluster-start" : true,
- "log-cluster" : 28
- },
- {
- "glyph" : 16,
- "width" : 6144,
- "is-cluster-start" : true,
- "log-cluster" : 29
- },
- {
- "glyph" : 16,
- "width" : 6144,
- "is-cluster-start" : true,
- "log-cluster" : 30
- }
- ]
- },
- {
- "offset" : 86,
- "length" : 1,
- "text" : "\t",
- "bidi-level" : 0,
- "gravity" : "south",
- "language" : "en-us",
- "script" : "latin",
- "font" : {
- "description" : "DejaVu Sans 12",
- "checksum" : "69ccd07023a72ceb27a5e5c22f728627353b60a198170f5e58dd7014221abf01",
- "matrix" : [
- 1,
- -0,
- -0,
- 1,
- 0,
- 0
+ {
+ "offset" : 86,
+ "length" : 1,
+ "text" : "\t",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "latin",
+ "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" : 268435455,
+ "width" : 31744,
+ "is-cluster-start" : true,
+ "log-cluster" : 0
+ }
]
},
- "flags" : 0,
- "y-offset" : 0,
- "start-x-offset" : 0,
- "end-x-offset" : 0,
- "glyphs" : [
- {
- "glyph" : 268435455,
- "width" : 31744,
- "is-cluster-start" : true,
- "log-cluster" : 0
- }
- ]
- },
- {
- "offset" : 87,
- "length" : 1,
- "text" : "\t",
- "bidi-level" : 0,
- "gravity" : "south",
- "language" : "en-us",
- "script" : "latin",
- "font" : {
- "description" : "DejaVu Sans 12",
- "checksum" : "69ccd07023a72ceb27a5e5c22f728627353b60a198170f5e58dd7014221abf01",
- "matrix" : [
- 1,
- -0,
- -0,
- 1,
- 0,
- 0
+ {
+ "offset" : 87,
+ "length" : 1,
+ "text" : "\t",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "latin",
+ "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" : 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" : "latin",
- "font" : {
- "description" : "DejaVu Sans 12",
- "checksum" : "69ccd07023a72ceb27a5e5c22f728627353b60a198170f5e58dd7014221abf01",
- "matrix" : [
- 1,
- -0,
- -0,
- 1,
- 0,
- 0
+ {
+ "offset" : 88,
+ "length" : 1,
+ "text" : "\t",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "latin",
+ "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" : 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" : "latin",
- "font" : {
- "description" : "DejaVu Sans 12",
- "checksum" : "69ccd07023a72ceb27a5e5c22f728627353b60a198170f5e58dd7014221abf01",
- "matrix" : [
- 1,
- -0,
- -0,
- 1,
- 0,
- 0
+ {
+ "offset" : 89,
+ "length" : 1,
+ "text" : "\t",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "latin",
+ "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" : 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" : 2,
- "text" : "--",
- "bidi-level" : 0,
- "gravity" : "south",
- "language" : "en-us",
- "script" : "latin",
- "font" : {
- "description" : "DejaVu Sans 12",
- "checksum" : "69ccd07023a72ceb27a5e5c22f728627353b60a198170f5e58dd7014221abf01",
- "matrix" : [
- 1,
- -0,
- -0,
- 1,
- 0,
- 0
+ {
+ "offset" : 90,
+ "length" : 2,
+ "text" : "--",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "latin",
+ "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" : 16,
+ "width" : 6144,
+ "is-cluster-start" : true,
+ "log-cluster" : 0
+ },
+ {
+ "glyph" : 16,
+ "width" : 6144,
+ "is-cluster-start" : true,
+ "log-cluster" : 1
+ }
]
- },
- "flags" : 0,
- "y-offset" : 0,
- "start-x-offset" : 0,
- "end-x-offset" : 0,
- "glyphs" : [
- {
- "glyph" : 16,
- "width" : 6144,
- "is-cluster-start" : true,
- "log-cluster" : 0
- },
- {
- "glyph" : 16,
- "width" : 6144,
- "is-cluster-start" : true,
- "log-cluster" : 1
- }
- ]
- }
- ]
- },
- {
- "start-index" : 92,
- "length" : 8,
- "paragraph-start" : false,
- "direction" : "ltr",
- "runs" : [
- {
- "offset" : 92,
- "length" : 8,
- "text" : ">(MYSQL)",
- "bidi-level" : 0,
- "gravity" : "south",
- "language" : "en-us",
- "script" : "latin",
- "font" : {
- "description" : "DejaVu Sans 12",
- "checksum" : "69ccd07023a72ceb27a5e5c22f728627353b60a198170f5e58dd7014221abf01",
- "matrix" : [
- 1,
- -0,
- -0,
- 1,
- 0,
- 0
+ }
+ ]
+ }
+ },
+ {
+ "position" : [
+ 0,
+ 54272
+ ],
+ "line" : {
+ "start-index" : 92,
+ "length" : 8,
+ "start-offset" : 92,
+ "n-chars" : 8,
+ "wrapped" : false,
+ "ellipsized" : false,
+ "hyphenated" : false,
+ "justified" : false,
+ "paragraph-start" : false,
+ "paragraph-end" : true,
+ "direction" : "ltr",
+ "runs" : [
+ {
+ "offset" : 92,
+ "length" : 8,
+ "text" : ">(MYSQL)",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "latin",
+ "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" : 33,
+ "width" : 13312,
+ "is-cluster-start" : true,
+ "log-cluster" : 0
+ },
+ {
+ "glyph" : 11,
+ "width" : 6144,
+ "is-cluster-start" : true,
+ "log-cluster" : 1
+ },
+ {
+ "glyph" : 48,
+ "width" : 14336,
+ "is-cluster-start" : true,
+ "log-cluster" : 2
+ },
+ {
+ "glyph" : 60,
+ "width" : 10240,
+ "is-cluster-start" : true,
+ "log-cluster" : 3
+ },
+ {
+ "glyph" : 54,
+ "width" : 10240,
+ "is-cluster-start" : true,
+ "log-cluster" : 4
+ },
+ {
+ "glyph" : 52,
+ "width" : 13312,
+ "is-cluster-start" : true,
+ "log-cluster" : 5
+ },
+ {
+ "glyph" : 47,
+ "width" : 9216,
+ "is-cluster-start" : true,
+ "log-cluster" : 6
+ },
+ {
+ "glyph" : 12,
+ "width" : 6144,
+ "is-cluster-start" : true,
+ "log-cluster" : 7
+ }
]
- },
- "flags" : 0,
- "y-offset" : 0,
- "start-x-offset" : 0,
- "end-x-offset" : 0,
- "glyphs" : [
- {
- "glyph" : 33,
- "width" : 13312,
- "is-cluster-start" : true,
- "log-cluster" : 0
- },
- {
- "glyph" : 11,
- "width" : 6144,
- "is-cluster-start" : true,
- "log-cluster" : 1
- },
- {
- "glyph" : 48,
- "width" : 14336,
- "is-cluster-start" : true,
- "log-cluster" : 2
- },
- {
- "glyph" : 60,
- "width" : 10240,
- "is-cluster-start" : true,
- "log-cluster" : 3
- },
- {
- "glyph" : 54,
- "width" : 10240,
- "is-cluster-start" : true,
- "log-cluster" : 4
- },
- {
- "glyph" : 52,
- "width" : 13312,
- "is-cluster-start" : true,
- "log-cluster" : 5
- },
- {
- "glyph" : 47,
- "width" : 9216,
- "is-cluster-start" : true,
- "log-cluster" : 6
- },
- {
- "glyph" : 12,
- "width" : 6144,
- "is-cluster-start" : true,
- "log-cluster" : 7
- }
- ]
- }
- ]
+ }
+ ]
+ }
}
]
}
diff --git a/tests/layouts/tabs-nowrap.layout b/tests/layouts/tabs-nowrap.layout
index 31ff3ea2..f80cc266 100644
--- a/tests/layouts/tabs-nowrap.layout
+++ b/tests/layouts/tabs-nowrap.layout
@@ -23,340 +23,367 @@
}
],
"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" : "common",
- "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" : "common",
+ "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
+ },
+ {
+ "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" : "common",
+ "font" : {
+ "description" : "DejaVu Sans Mono 32",
+ "checksum" : "84c5467cadd1f6f23db0d9fbb6377e0d301334d3b5f36e6d5acebd34d0857d3a",
+ "matrix" : [
+ 1,
+ -0,
+ -0,
+ 1,
+ 0,
+ 0
+ ]
},
- {
- "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" : "common",
- "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" : "common",
- "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" : "common",
+ "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" : 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" : "common",
- "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" : "common",
+ "font" : {
+ "description" : "DejaVu Sans Mono 32",
+ "checksum" : "84c5467cadd1f6f23db0d9fbb6377e0d301334d3b5f36e6d5acebd34d0857d3a",
+ "matrix" : [
+ 1,
+ -0,
+ -0,
+ 1,
+ 0,
+ 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
- }
- ]
- }
- ]
+ "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 6ed604d7..76ce2f0c 100644
--- a/tests/layouts/tabs.layout
+++ b/tests/layouts/tabs.layout
@@ -47,1789 +47,1829 @@
]
},
"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" : "latin",
- "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" : "latin",
+ "font" : {
+ "description" : "Cantarell 14 @wght=400",
+ "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" : 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" : "latin",
- "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" : "latin",
+ "font" : {
+ "description" : "Cantarell 14 @wght=400",
+ "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" : 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" : "latin",
- "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" : "latin",
+ "font" : {
+ "description" : "Cantarell 14 @wght=400",
+ "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" : 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" : "latin",
- "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" : "latin",
+ "font" : {
+ "description" : "Cantarell 14 @wght=400",
+ "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" : 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" : "latin",
- "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" : "latin",
+ "font" : {
+ "description" : "Cantarell 14 @wght=400",
+ "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" : 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" : "latin",
- "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" : "latin",
+ "font" : {
+ "description" : "Cantarell 14 @wght=400",
+ "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" : 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" : "latin",
- "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" : "latin",
+ "font" : {
+ "description" : "Cantarell 14 @wght=400",
+ "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" : 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" : "latin",
- "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" : "latin",
+ "font" : {
+ "description" : "Cantarell 14 @wght=400",
+ "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" : 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" : "latin",
- "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" : "latin",
+ "font" : {
+ "description" : "Cantarell 14 @wght=400",
+ "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" : 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" : 19,
- "length" : 2,
- "text" : "so",
- "bidi-level" : 0,
- "gravity" : "south",
- "language" : "en-us",
- "script" : "latin",
- "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" : "latin",
+ "font" : {
+ "description" : "Cantarell 14 @wght=400",
+ "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" : 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" : "latin",
- "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" : "latin",
+ "font" : {
+ "description" : "Cantarell 14 @wght=400",
+ "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" : 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" : "latin",
- "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" : "latin",
+ "font" : {
+ "description" : "Cantarell 14 @wght=400",
+ "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" : 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" : "latin",
- "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" : "latin",
+ "font" : {
+ "description" : "Cantarell 14 @wght=400",
+ "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" : 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" : "latin",
- "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" : "latin",
+ "font" : {
+ "description" : "Cantarell 14 @wght=400",
+ "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" : 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" : "latin",
- "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" : "latin",
+ "font" : {
+ "description" : "Cantarell 14 @wght=400",
+ "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" : 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" : "latin",
- "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" : "latin",
+ "font" : {
+ "description" : "Cantarell 14 @wght=400",
+ "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" : 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" : "latin",
- "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" : "latin",
+ "font" : {
+ "description" : "Cantarell 14 @wght=400",
+ "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" : 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" : "latin",
- "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" : "latin",
+ "font" : {
+ "description" : "Cantarell 14 @wght=400",
+ "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" : 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" : "latin",
- "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" : "latin",
+ "font" : {
+ "description" : "Cantarell 14 @wght=400",
+ "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" : 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" : 42,
- "length" : 3,
- "text" : "and",
- "bidi-level" : 0,
- "gravity" : "south",
- "language" : "en-us",
- "script" : "latin",
- "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" : "latin",
+ "font" : {
+ "description" : "Cantarell 14 @wght=400",
+ "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" : 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" : "latin",
- "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" : "latin",
+ "font" : {
+ "description" : "Cantarell 14 @wght=400",
+ "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" : 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" : "latin",
- "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" : "latin",
+ "font" : {
+ "description" : "Cantarell 14 @wght=400",
+ "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" : 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" : "latin",
- "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" : "latin",
+ "font" : {
+ "description" : "Cantarell 14 @wght=400",
+ "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" : 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" : "latin",
- "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" : "latin",
+ "font" : {
+ "description" : "Cantarell 14 @wght=400",
+ "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" : 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" : "latin",
- "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" : "latin",
+ "font" : {
+ "description" : "Cantarell 14 @wght=400",
+ "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" : 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" : "latin",
- "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" : "latin",
+ "font" : {
+ "description" : "Cantarell 14 @wght=400",
+ "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" : 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" : "latin",
- "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" : "latin",
+ "font" : {
+ "description" : "Cantarell 14 @wght=400",
+ "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" : 62,
- "length" : 2,
- "text" : "so",
- "bidi-level" : 0,
- "gravity" : "south",
- "language" : "en-us",
- "script" : "latin",
- "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" : "latin",
+ "font" : {
+ "description" : "Cantarell 14 @wght=400",
+ "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" : 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" : "latin",
- "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" : "latin",
+ "font" : {
+ "description" : "Cantarell 14 @wght=400",
+ "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" : 65,
- "length" : 4,
- "text" : "more",
- "bidi-level" : 0,
- "gravity" : "south",
- "language" : "en-us",
- "script" : "latin",
- "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" : "latin",
+ "font" : {
+ "description" : "Cantarell 14 @wght=400",
+ "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" : 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 ad5e78dc..8e173884 100644
--- a/tests/layouts/valid-1.layout
+++ b/tests/layouts/valid-1.layout
@@ -33,644 +33,658 @@
"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" : "latin",
- "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" : "latin",
+ "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
+ },
+ {
+ "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" : "latin",
- "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" : "latin",
+ "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" : 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" : "common",
- "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" : "common",
+ "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
+ },
+ {
+ "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 95655633..042d4101 100644
--- a/tests/layouts/valid-10.layout
+++ b/tests/layouts/valid-10.layout
@@ -18,386 +18,399 @@
"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" : "latin",
- "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" : "latin",
+ "font" : {
+ "description" : "Cantarell 11",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ },
+ "matrix" : [
+ 1,
+ -0,
+ -0,
+ 1,
+ 0,
+ 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" : "hebrew",
+ "font" : {
+ "description" : "DejaVu Sans 11",
+ "checksum" : "69ccd07023a72ceb27a5e5c22f728627353b60a198170f5e58dd7014221abf01",
+ "matrix" : [
+ 1,
+ -0,
+ -0,
+ 1,
+ 0,
+ 0
+ ]
},
- {
- "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" : "hebrew",
- "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" : "hebrew",
+ "font" : {
+ "description" : "Cantarell 11",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ },
+ "matrix" : [
+ 1,
+ -0,
+ -0,
+ 1,
+ 0,
+ 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" : "hebrew",
- "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" : "greek",
- "font" : {
- "description" : "Cantarell 11",
- "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
- "variations" : {
- "wght" : 0
+ {
+ "offset" : 15,
+ "length" : 2,
+ "text" : "Γ",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "el",
+ "script" : "greek",
+ "font" : {
+ "description" : "Cantarell 11",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ },
+ "matrix" : [
+ 1,
+ -0,
+ -0,
+ 1,
+ 0,
+ 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" : "common",
- "font" : {
- "description" : "Cantarell 11",
- "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
- "variations" : {
- "wght" : 0
+ {
+ "offset" : 17,
+ "length" : 13,
+ "text" : "ειά σας",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "common",
+ "font" : {
+ "description" : "Cantarell 11",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ },
+ "matrix" : [
+ 1,
+ -0,
+ -0,
+ 1,
+ 0,
+ 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 f057aed2..b5511f86 100644
--- a/tests/layouts/valid-11.layout
+++ b/tests/layouts/valid-11.layout
@@ -55,413 +55,427 @@
"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" : "latin",
- "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" : "latin",
+ "font" : {
+ "description" : "Cantarell 11",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ },
+ "matrix" : [
+ 1,
+ -0,
+ -0,
+ 1,
+ 0,
+ 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" : "latin",
+ "font" : {
+ "description" : "Cantarell 11",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ },
+ "matrix" : [
+ 1,
+ -0,
+ -0,
+ 1,
+ 0,
+ 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" : "latin",
- "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" : "latin",
- "font" : {
- "description" : "Cantarell 11",
- "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
- "variations" : {
- "wght" : 0
+ {
+ "offset" : 7,
+ "length" : 3,
+ "text" : "low",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "latin",
+ "font" : {
+ "description" : "Cantarell 11",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ },
+ "matrix" : [
+ 1,
+ -0,
+ -0,
+ 1,
+ 0,
+ 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" : "latin",
+ "font" : {
+ "description" : "Cantarell 11",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ },
+ "matrix" : [
+ 1,
+ -0,
+ -0,
+ 1,
+ 0,
+ 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" : "latin",
- "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" : "latin",
- "font" : {
- "description" : "Cantarell 11",
- "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
- "variations" : {
- "wght" : 0
+ {
+ "offset" : 11,
+ "length" : 5,
+ "text" : "error",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "latin",
+ "font" : {
+ "description" : "Cantarell 11",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ },
+ "matrix" : [
+ 1,
+ -0,
+ -0,
+ 1,
+ 0,
+ 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 f47ae17a..753b703e 100644
--- a/tests/layouts/valid-12.layout
+++ b/tests/layouts/valid-12.layout
@@ -48,699 +48,726 @@
}
]
},
+ "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" : "latin",
- "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" : "latin",
+ "font" : {
+ "description" : "Cantarell 11",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ },
+ "matrix" : [
+ 1,
+ -0,
+ -0,
+ 1,
+ 0,
+ 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" : "latin",
- "font" : {
- "description" : "Cantarell 11",
- "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
- "variations" : {
- "wght" : 0
+ {
+ "offset" : 1,
+ "length" : 1,
+ "text" : "\t",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "latin",
+ "font" : {
+ "description" : "Cantarell 11",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ },
+ "matrix" : [
+ 1,
+ -0,
+ -0,
+ 1,
+ 0,
+ 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" : "latin",
- "font" : {
- "description" : "Cantarell 11",
- "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
- "variations" : {
- "wght" : 0
+ {
+ "offset" : 2,
+ "length" : 1,
+ "text" : "b",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "latin",
+ "font" : {
+ "description" : "Cantarell 11",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ },
+ "matrix" : [
+ 1,
+ -0,
+ -0,
+ 1,
+ 0,
+ 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" : "latin",
- "font" : {
- "description" : "Cantarell 11",
- "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
- "variations" : {
- "wght" : 0
+ {
+ "offset" : 3,
+ "length" : 1,
+ "text" : "\t",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "latin",
+ "font" : {
+ "description" : "Cantarell 11",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ },
+ "matrix" : [
+ 1,
+ -0,
+ -0,
+ 1,
+ 0,
+ 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" : "latin",
- "font" : {
- "description" : "Cantarell 11",
- "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
- "variations" : {
- "wght" : 0
+ {
+ "offset" : 4,
+ "length" : 1,
+ "text" : "c",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "latin",
+ "font" : {
+ "description" : "Cantarell 11",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ },
+ "matrix" : [
+ 1,
+ -0,
+ -0,
+ 1,
+ 0,
+ 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" : "latin",
- "font" : {
- "description" : "Cantarell 11",
- "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
- "variations" : {
- "wght" : 0
+ {
+ "offset" : 5,
+ "length" : 1,
+ "text" : "\t",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "latin",
+ "font" : {
+ "description" : "Cantarell 11",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ },
+ "matrix" : [
+ 1,
+ -0,
+ -0,
+ 1,
+ 0,
+ 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" : "latin",
- "font" : {
- "description" : "Cantarell 11",
- "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
- "variations" : {
- "wght" : 0
+ {
+ "offset" : 6,
+ "length" : 1,
+ "text" : "d",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "latin",
+ "font" : {
+ "description" : "Cantarell 11",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ },
+ "matrix" : [
+ 1,
+ -0,
+ -0,
+ 1,
+ 0,
+ 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" : "latin",
- "font" : {
- "description" : "Cantarell 11",
- "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
- "variations" : {
- "wght" : 0
+ {
+ "offset" : 7,
+ "length" : 3,
+ "text" : "
",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "latin",
+ "font" : {
+ "description" : "Cantarell 11",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ },
+ "matrix" : [
+ 1,
+ -0,
+ -0,
+ 1,
+ 0,
+ 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" : "latin",
- "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" : "latin",
+ "font" : {
+ "description" : "Cantarell 11",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ },
+ "matrix" : [
+ 1,
+ -0,
+ -0,
+ 1,
+ 0,
+ 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" : "latin",
- "font" : {
- "description" : "Cantarell 11",
- "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
- "variations" : {
- "wght" : 0
+ {
+ "offset" : 11,
+ "length" : 1,
+ "text" : "\t",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "latin",
+ "font" : {
+ "description" : "Cantarell 11",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ },
+ "matrix" : [
+ 1,
+ -0,
+ -0,
+ 1,
+ 0,
+ 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" : "latin",
- "font" : {
- "description" : "Cantarell 11",
- "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
- "variations" : {
- "wght" : 0
+ {
+ "offset" : 12,
+ "length" : 1,
+ "text" : "f",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "latin",
+ "font" : {
+ "description" : "Cantarell 11",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ },
+ "matrix" : [
+ 1,
+ -0,
+ -0,
+ 1,
+ 0,
+ 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" : "latin",
- "font" : {
- "description" : "Cantarell 11",
- "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
- "variations" : {
- "wght" : 0
+ {
+ "offset" : 13,
+ "length" : 1,
+ "text" : "\t",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "latin",
+ "font" : {
+ "description" : "Cantarell 11",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ },
+ "matrix" : [
+ 1,
+ -0,
+ -0,
+ 1,
+ 0,
+ 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" : "latin",
- "font" : {
- "description" : "Cantarell 11",
- "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
- "variations" : {
- "wght" : 0
+ {
+ "offset" : 14,
+ "length" : 1,
+ "text" : "g",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "latin",
+ "font" : {
+ "description" : "Cantarell 11",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ },
+ "matrix" : [
+ 1,
+ -0,
+ -0,
+ 1,
+ 0,
+ 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" : "latin",
- "font" : {
- "description" : "Cantarell 11",
- "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
- "variations" : {
- "wght" : 0
+ {
+ "offset" : 15,
+ "length" : 1,
+ "text" : "\t",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "latin",
+ "font" : {
+ "description" : "Cantarell 11",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ },
+ "matrix" : [
+ 1,
+ -0,
+ -0,
+ 1,
+ 0,
+ 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" : "latin",
- "font" : {
- "description" : "Cantarell 11",
- "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
- "variations" : {
- "wght" : 0
+ {
+ "offset" : 16,
+ "length" : 1,
+ "text" : "h",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "latin",
+ "font" : {
+ "description" : "Cantarell 11",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ },
+ "matrix" : [
+ 1,
+ -0,
+ -0,
+ 1,
+ 0,
+ 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 b690fa9c..16f7824e 100644
--- a/tests/layouts/valid-13.layout
+++ b/tests/layouts/valid-13.layout
@@ -48,782 +48,726 @@
}
]
},
- "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" : "latin",
- "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" : "latin",
+ "font" : {
+ "description" : "Cantarell 11",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ },
+ "matrix" : [
+ 1,
+ -0,
+ -0,
+ 1,
+ 0,
+ 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" : "latin",
- "font" : {
- "description" : "Cantarell 11",
- "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
- "variations" : {
- "wght" : 0
+ {
+ "offset" : 1,
+ "length" : 1,
+ "text" : "\t",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "latin",
+ "font" : {
+ "description" : "Cantarell 11",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ },
+ "matrix" : [
+ 1,
+ -0,
+ -0,
+ 1,
+ 0,
+ 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" : "latin",
- "font" : {
- "description" : "Cantarell 11",
- "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
- "variations" : {
- "wght" : 0
+ {
+ "offset" : 2,
+ "length" : 1,
+ "text" : "b",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "latin",
+ "font" : {
+ "description" : "Cantarell 11",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ },
+ "matrix" : [
+ 1,
+ -0,
+ -0,
+ 1,
+ 0,
+ 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" : "latin",
- "font" : {
- "description" : "Cantarell 11",
- "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
- "variations" : {
- "wght" : 0
+ {
+ "offset" : 3,
+ "length" : 1,
+ "text" : "\t",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "latin",
+ "font" : {
+ "description" : "Cantarell 11",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ },
+ "matrix" : [
+ 1,
+ -0,
+ -0,
+ 1,
+ 0,
+ 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" : "latin",
- "font" : {
- "description" : "Cantarell 11",
- "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
- "variations" : {
- "wght" : 0
+ {
+ "offset" : 4,
+ "length" : 1,
+ "text" : "c",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "latin",
+ "font" : {
+ "description" : "Cantarell 11",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ },
+ "matrix" : [
+ 1,
+ -0,
+ -0,
+ 1,
+ 0,
+ 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" : "latin",
- "font" : {
- "description" : "Cantarell 11",
- "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
- "variations" : {
- "wght" : 0
+ {
+ "offset" : 5,
+ "length" : 1,
+ "text" : "\t",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "latin",
+ "font" : {
+ "description" : "Cantarell 11",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ },
+ "matrix" : [
+ 1,
+ -0,
+ -0,
+ 1,
+ 0,
+ 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" : "latin",
- "font" : {
- "description" : "Cantarell 11",
- "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
- "variations" : {
- "wght" : 0
+ {
+ "offset" : 6,
+ "length" : 1,
+ "text" : "d",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "latin",
+ "font" : {
+ "description" : "Cantarell 11",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ },
+ "matrix" : [
+ 1,
+ -0,
+ -0,
+ 1,
+ 0,
+ 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" : "latin",
- "font" : {
- "description" : "Cantarell 11",
- "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
- "variations" : {
- "wght" : 0
+ {
+ "offset" : 7,
+ "length" : 3,
+ "text" : "
",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "latin",
+ "font" : {
+ "description" : "Cantarell 11",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ },
+ "matrix" : [
+ 1,
+ -0,
+ -0,
+ 1,
+ 0,
+ 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" : "latin",
- "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" : "latin",
+ "font" : {
+ "description" : "Cantarell 11",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ },
+ "matrix" : [
+ 1,
+ -0,
+ -0,
+ 1,
+ 0,
+ 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" : "latin",
- "font" : {
- "description" : "Cantarell 11",
- "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
- "variations" : {
- "wght" : 0
+ {
+ "offset" : 11,
+ "length" : 1,
+ "text" : "\t",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "latin",
+ "font" : {
+ "description" : "Cantarell 11",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ },
+ "matrix" : [
+ 1,
+ -0,
+ -0,
+ 1,
+ 0,
+ 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" : "latin",
- "font" : {
- "description" : "Cantarell 11",
- "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
- "variations" : {
- "wght" : 0
+ {
+ "offset" : 12,
+ "length" : 1,
+ "text" : "f",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "latin",
+ "font" : {
+ "description" : "Cantarell 11",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ },
+ "matrix" : [
+ 1,
+ -0,
+ -0,
+ 1,
+ 0,
+ 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" : "latin",
- "font" : {
- "description" : "Cantarell 11",
- "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
- "variations" : {
- "wght" : 0
+ {
+ "offset" : 13,
+ "length" : 1,
+ "text" : "\t",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "latin",
+ "font" : {
+ "description" : "Cantarell 11",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ },
+ "matrix" : [
+ 1,
+ -0,
+ -0,
+ 1,
+ 0,
+ 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" : "latin",
- "font" : {
- "description" : "Cantarell 11",
- "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
- "variations" : {
- "wght" : 0
+ {
+ "offset" : 14,
+ "length" : 1,
+ "text" : "g",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "latin",
+ "font" : {
+ "description" : "Cantarell 11",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ },
+ "matrix" : [
+ 1,
+ -0,
+ -0,
+ 1,
+ 0,
+ 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" : "latin",
- "font" : {
- "description" : "Cantarell 11",
- "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
- "variations" : {
- "wght" : 0
+ {
+ "offset" : 15,
+ "length" : 1,
+ "text" : "\t",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "latin",
+ "font" : {
+ "description" : "Cantarell 11",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ },
+ "matrix" : [
+ 1,
+ -0,
+ -0,
+ 1,
+ 0,
+ 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" : "latin",
- "font" : {
- "description" : "Cantarell 11",
- "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
- "variations" : {
- "wght" : 0
+ {
+ "offset" : 16,
+ "length" : 1,
+ "text" : "h",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "latin",
+ "font" : {
+ "description" : "Cantarell 11",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ },
+ "matrix" : [
+ 1,
+ -0,
+ -0,
+ 1,
+ 0,
+ 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 427cb5ee..acb3ab44 100644
--- a/tests/layouts/valid-14.layout
+++ b/tests/layouts/valid-14.layout
@@ -20,491 +20,540 @@
"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" : 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
- },
- {
- "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" : "common",
- "font" : {
- "description" : "Cantarell 11",
- "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
- "variations" : {
- "wght" : 0
+ "position" : [
+ 0,
+ 16384
+ ],
+ "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" : "common",
+ "font" : {
+ "description" : "Cantarell 11",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ },
+ "matrix" : [
+ 1,
+ -0,
+ -0,
+ 1,
+ 0,
+ 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" : "han",
+ "font" : {
+ "description" : "Droid Sans Japanese 11",
+ "checksum" : "9e7449c453527829c963330ba36f4de3b20911e185a1df08a97082bb69e795d7",
+ "matrix" : [
+ 1,
+ -0,
+ -0,
+ 1,
+ 0,
+ 0
+ ]
},
- {
- "glyph" : 1058,
- "width" : 17408,
- "log-cluster" : 0
- }
- ]
- },
- {
- "offset" : 6,
- "length" : 1,
- "text" : " ",
- "bidi-level" : 0,
- "gravity" : "south",
- "language" : "xx",
- "script" : "han",
- "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" : 0,
+ "start-x-offset" : 0,
+ "end-x-offset" : 0,
+ "glyphs" : [
+ {
+ "glyph" : 268435488,
+ "width" : 4096,
+ "is-cluster-start" : true,
+ "log-cluster" : 0
+ }
]
},
- "flags" : 0,
- "y-offset" : 0,
- "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" : "latin",
- "font" : {
- "description" : "Cantarell 11",
- "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
- "variations" : {
- "wght" : 0
+ {
+ "offset" : 7,
+ "length" : 6,
+ "text" : "Hello ",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "latin",
+ "font" : {
+ "description" : "Cantarell 11",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ },
+ "matrix" : [
+ 1,
+ -0,
+ -0,
+ 1,
+ 0,
+ 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" : "hebrew",
+ "font" : {
+ "description" : "DejaVu Sans 11",
+ "checksum" : "69ccd07023a72ceb27a5e5c22f728627353b60a198170f5e58dd7014221abf01",
+ "matrix" : [
+ 1,
+ -0,
+ -0,
+ 1,
+ 0,
+ 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
- }
- ]
- },
- {
- "offset" : 13,
- "length" : 8,
- "text" : "שלום",
- "bidi-level" : 1,
- "gravity" : "south",
- "language" : "he",
- "script" : "hebrew",
- "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" : 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" : 21,
+ "length" : 1,
+ "text" : " ",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "he",
+ "script" : "hebrew",
+ "font" : {
+ "description" : "Cantarell 11",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ },
+ "matrix" : [
+ 1,
+ -0,
+ -0,
+ 1,
+ 0,
+ 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" : "hebrew",
- "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" : "greek",
- "font" : {
- "description" : "Cantarell 11",
- "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
- "variations" : {
- "wght" : 0
+ {
+ "offset" : 22,
+ "length" : 15,
+ "text" : "Γειά σας",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "el",
+ "script" : "greek",
+ "font" : {
+ "description" : "Cantarell 11",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ },
+ "matrix" : [
+ 1,
+ -0,
+ -0,
+ 1,
+ 0,
+ 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 f65f4076..fbe78ca7 100644
--- a/tests/layouts/valid-15.layout
+++ b/tests/layouts/valid-15.layout
@@ -21,1006 +21,1033 @@
"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" : "latin",
- "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" : "latin",
+ "font" : {
+ "description" : "Cantarell 11",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ },
+ "matrix" : [
+ 1,
+ -0,
+ -0,
+ 1,
+ 0,
+ 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" : "latin",
+ "font" : {
+ "description" : "Cantarell 11",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ },
+ "matrix" : [
+ 1,
+ -0,
+ -0,
+ 1,
+ 0,
+ 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" : "latin",
- "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" : "common",
+ "font" : {
+ "description" : "Cantarell 11",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ },
+ "matrix" : [
+ 1,
+ -0,
+ -0,
+ 1,
+ 0,
+ 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" : "common",
- "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 16a035af..37268057 100644
--- a/tests/layouts/valid-16.layout
+++ b/tests/layouts/valid-16.layout
@@ -18,1010 +18,1037 @@
"comment" : "",
"text" : "Lets see if this text is long enough to wrap due to height limitations. It might, or it might not.",
"font" : "Cantarell 11",
- "wrap" : "word-char",
+ "wrap" : "word | char",
"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" : "latin",
- "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" : "latin",
+ "font" : {
+ "description" : "Cantarell 11",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ },
+ "matrix" : [
+ 1,
+ -0,
+ -0,
+ 1,
+ 0,
+ 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" : "latin",
+ "font" : {
+ "description" : "Cantarell 11",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ },
+ "matrix" : [
+ 1,
+ -0,
+ -0,
+ 1,
+ 0,
+ 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" : "latin",
- "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" : "common",
+ "font" : {
+ "description" : "Cantarell 11",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ },
+ "matrix" : [
+ 1,
+ -0,
+ -0,
+ 1,
+ 0,
+ 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" : "common",
- "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 edd50822..2e9405c4 100644
--- a/tests/layouts/valid-17.layout
+++ b/tests/layouts/valid-17.layout
@@ -18,448 +18,462 @@
"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" : "latin",
- "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" : "latin",
+ "font" : {
+ "description" : "Cantarell 11",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ },
+ "matrix" : [
+ 1,
+ -0,
+ -0,
+ 1,
+ 0,
+ 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" : "latin",
+ "font" : {
+ "description" : "DejaVu Sans 11",
+ "checksum" : "69ccd07023a72ceb27a5e5c22f728627353b60a198170f5e58dd7014221abf01",
+ "matrix" : [
+ 1,
+ -0,
+ -0,
+ 1,
+ 0,
+ 0
+ ]
},
- {
- "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" : "latin",
- "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" : "latin",
- "font" : {
- "description" : "Cantarell 11",
- "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
- "variations" : {
- "wght" : 0
+ {
+ "offset" : 7,
+ "length" : 3,
+ "text" : "bla",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "latin",
+ "font" : {
+ "description" : "Cantarell 11",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ },
+ "matrix" : [
+ 1,
+ -0,
+ -0,
+ 1,
+ 0,
+ 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" : "latin",
+ "font" : {
+ "description" : "DejaVu Sans 11",
+ "checksum" : "69ccd07023a72ceb27a5e5c22f728627353b60a198170f5e58dd7014221abf01",
+ "matrix" : [
+ 1,
+ -0,
+ -0,
+ 1,
+ 0,
+ 0
+ ]
},
- {
- "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" : "latin",
- "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" : "latin",
- "font" : {
- "description" : "Cantarell 11",
- "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
- "variations" : {
- "wght" : 0
+ {
+ "offset" : 13,
+ "length" : 3,
+ "text" : "bla",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "latin",
+ "font" : {
+ "description" : "Cantarell 11",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ },
+ "matrix" : [
+ 1,
+ -0,
+ -0,
+ 1,
+ 0,
+ 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" : "latin",
+ "font" : {
+ "description" : "DejaVu Sans 11",
+ "checksum" : "69ccd07023a72ceb27a5e5c22f728627353b60a198170f5e58dd7014221abf01",
+ "matrix" : [
+ 1,
+ -0,
+ -0,
+ 1,
+ 0,
+ 0
+ ]
},
- {
- "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" : "latin",
- "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" : "latin",
- "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" : "latin",
+ "font" : {
+ "description" : "Cantarell 11",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ },
+ "matrix" : [
+ 1,
+ -0,
+ -0,
+ 1,
+ 0,
+ 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 849b136e..763cba88 100644
--- a/tests/layouts/valid-18.layout
+++ b/tests/layouts/valid-18.layout
@@ -25,725 +25,752 @@
}
],
"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" : "latin",
- "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" : "latin",
+ "font" : {
+ "description" : "Cantarell 11",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ },
+ "matrix" : [
+ 1,
+ -0,
+ -0,
+ 1,
+ 0,
+ 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" : "latin",
- "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" : "latin",
+ "font" : {
+ "description" : "Cantarell 11",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ },
+ "matrix" : [
+ 1,
+ -0,
+ -0,
+ 1,
+ 0,
+ 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 mis­ce­llaneous ignora‌bles",
- "bidi-level" : 0,
- "gravity" : "south",
- "language" : "en-us",
- "script" : "latin",
- "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 mis­ce­llaneous ignora‌bles",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "latin",
+ "font" : {
+ "description" : "Cantarell 11",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ },
+ "matrix" : [
+ 1,
+ -0,
+ -0,
+ 1,
+ 0,
+ 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 38b9f292..3abfade3 100644
--- a/tests/layouts/valid-19.layout
+++ b/tests/layouts/valid-19.layout
@@ -18,599 +18,613 @@
"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" : "common",
- "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" : "common",
+ "font" : {
+ "description" : "DejaVu Sans 11",
+ "checksum" : "69ccd07023a72ceb27a5e5c22f728627353b60a198170f5e58dd7014221abf01",
+ "matrix" : [
+ 1,
+ -0,
+ -0,
+ 1,
+ 0,
+ 0
+ ]
},
- {
- "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" : "common",
- "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" : "common",
+ "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" : "common",
- "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" : "common",
- "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" : "common",
+ "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" : 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" : "common",
- "font" : {
- "description" : "Cantarell 11",
- "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
- "variations" : {
- "wght" : 0
+ {
+ "offset" : 16,
+ "length" : 8,
+ "text" : "🇩🇪",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "common",
+ "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" : "common",
- "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" : "common",
+ "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" : 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" : "common",
- "font" : {
- "description" : "Cantarell 11",
- "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
- "variations" : {
- "wght" : 0
+ {
+ "offset" : 25,
+ "length" : 3,
+ "text" : "✊",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "common",
+ "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" : "common",
- "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" : "common",
+ "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" : 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" : "common",
- "font" : {
- "description" : "Cantarell 11",
- "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
- "variations" : {
- "wght" : 0
+ {
+ "offset" : 29,
+ "length" : 7,
+ "text" : "✋🏾",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "common",
+ "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" : "common",
+ "font" : {
+ "description" : "Cantarell 11",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ },
+ "matrix" : [
+ 1,
+ -0,
+ -0,
+ 1,
+ 0,
+ 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" : "common",
- "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" : "common",
+ "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" : "common",
- "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" : "common",
+ "font" : {
+ "description" : "Cantarell 11",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ },
+ "matrix" : [
+ 1,
+ -0,
+ -0,
+ 1,
+ 0,
+ 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 e51c9b57..cc6a9630 100644
--- a/tests/layouts/valid-2.layout
+++ b/tests/layouts/valid-2.layout
@@ -32,572 +32,586 @@
}
],
"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" : "latin",
- "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" : "latin",
+ "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" : 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" : "latin",
- "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" : "latin",
+ "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" : 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" : "latin",
- "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" : "latin",
+ "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" : 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" : "latin",
- "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" : "latin",
+ "font" : {
+ "description" : "Cantarell 11",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ },
+ "matrix" : [
+ 1,
+ -0,
+ -0,
+ 1,
+ 0,
+ 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" : "latin",
- "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" : "latin",
+ "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" : 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 93b8a1b1..75edc52f 100644
--- a/tests/layouts/valid-20.layout
+++ b/tests/layouts/valid-20.layout
@@ -36,189 +36,203 @@
}
],
"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,
"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" : "latin",
- "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" : "latin",
+ "font" : {
+ "description" : "Cantarell Rotated-Left 11",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ },
+ "matrix" : [
+ 1,
+ -0,
+ -0,
+ 1,
+ 0,
+ 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" : 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
+ }
]
},
- "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" : 3844,
- "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" : 3506,
- "is-cluster-start" : true,
- "log-cluster" : 2
- }
- ]
- },
- {
- "offset" : 3,
- "length" : 3,
- "text" : "def",
- "bidi-level" : 0,
- "gravity" : "south",
- "language" : "en-us",
- "script" : "latin",
- "font" : {
- "description" : "Cantarell 11",
- "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
- "variations" : {
- "wght" : 0
+ {
+ "offset" : 3,
+ "length" : 3,
+ "text" : "def",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "latin",
+ "font" : {
+ "description" : "Cantarell 11",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ },
+ "matrix" : [
+ 1,
+ -0,
+ -0,
+ 1,
+ 0,
+ 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 5901ebcd..bd2e9f86 100644
--- a/tests/layouts/valid-21.layout
+++ b/tests/layouts/valid-21.layout
@@ -24,146 +24,160 @@
}
],
"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" : "common",
- "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" : "common",
- "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" : "common",
+ "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" : "common",
+ "font" : {
+ "description" : "Cantarell 11",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ },
+ "matrix" : [
+ 1,
+ -0,
+ -0,
+ 1,
+ 0,
+ 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 6be94c32..bd6fc5c9 100644
--- a/tests/layouts/valid-22.layout
+++ b/tests/layouts/valid-22.layout
@@ -98,610 +98,624 @@
}
],
"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" : "latin",
- "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" : "latin",
+ "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" : 1,
- "length" : 1,
- "text" : "0",
- "bidi-level" : 0,
- "gravity" : "south",
- "language" : "en-us",
- "script" : "latin",
- "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" : "latin",
+ "font" : {
+ "description" : "Cantarell 7.1484375",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ },
+ "matrix" : [
+ 1,
+ -0,
+ -0,
+ 1,
+ 0,
+ 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" : "latin",
- "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" : "latin",
+ "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" : 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" : "latin",
- "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" : "latin",
+ "font" : {
+ "description" : "Cantarell 7.1484375",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ },
+ "matrix" : [
+ 1,
+ -0,
+ -0,
+ 1,
+ 0,
+ 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" : "latin",
- "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" : "latin",
+ "font" : {
+ "description" : "Cantarell 4.646484375",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ },
+ "matrix" : [
+ 1,
+ -0,
+ -0,
+ 1,
+ 0,
+ 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" : "latin",
- "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" : "latin",
+ "font" : {
+ "description" : "Cantarell 3.0205078125",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ },
+ "matrix" : [
+ 1,
+ -0,
+ -0,
+ 1,
+ 0,
+ 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" : "latin",
- "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" : "latin",
+ "font" : {
+ "description" : "Cantarell 1.962890625",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ },
+ "matrix" : [
+ 1,
+ -0,
+ -0,
+ 1,
+ 0,
+ 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" : "latin",
- "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" : "latin",
+ "font" : {
+ "description" : "Cantarell 1.2763671875",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ },
+ "matrix" : [
+ 1,
+ -0,
+ -0,
+ 1,
+ 0,
+ 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 8ff1dd05..ca2f608b 100644
--- a/tests/layouts/valid-3.layout
+++ b/tests/layouts/valid-3.layout
@@ -18,191 +18,205 @@
"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" : "latin",
- "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" : "latin",
+ "font" : {
+ "description" : "Cantarell 11",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ },
+ "matrix" : [
+ 1,
+ -0,
+ -0,
+ 1,
+ 0,
+ 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" : "latin",
+ "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" : "latin",
- "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" : "latin",
+ "font" : {
+ "description" : "Cantarell 11",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ },
+ "matrix" : [
+ 1,
+ -0,
+ -0,
+ 1,
+ 0,
+ 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" : "latin",
- "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 b9d4f8fb..f57ae082 100644
--- a/tests/layouts/valid-4.layout
+++ b/tests/layouts/valid-4.layout
@@ -18,1928 +18,1994 @@
"text" : "This paragraph should ac­tual­ly have multiple lines, unlike all the other wannabe äöü pa­ra­graph 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 ac­tual­",
- "bidi-level" : 0,
- "gravity" : "south",
- "language" : "en-us",
- "script" : "latin",
- "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 ac­tual­",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "latin",
+ "font" : {
+ "description" : "Cantarell 11",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ },
+ "matrix" : [
+ 1,
+ -0,
+ -0,
+ 1,
+ 0,
+ 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" : "latin",
- "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" : "latin",
+ "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" : 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" : "latin",
- "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" : "latin",
+ "font" : {
+ "description" : "Cantarell 11",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ },
+ "matrix" : [
+ 1,
+ -0,
+ -0,
+ 1,
+ 0,
+ 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" : "ra­graph tests in this ugh test-",
- "bidi-level" : 0,
- "gravity" : "south",
- "language" : "en-us",
- "script" : "latin",
- "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" : "ra­graph tests in this ugh test-",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "latin",
+ "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" : 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" : "latin",
- "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" : "latin",
+ "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
+ },
+ {
+ "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 92e2b9ce..f899c0f4 100644
--- a/tests/layouts/valid-5.layout
+++ b/tests/layouts/valid-5.layout
@@ -26,1748 +26,1827 @@
],
"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" : "latin",
- "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" : "latin",
+ "font" : {
+ "description" : "Cantarell 11",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ },
+ "matrix" : [
+ 1,
+ -0,
+ -0,
+ 1,
+ 0,
+ 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" : "latin",
- "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" : "latin",
+ "font" : {
+ "description" : "Cantarell 11",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ },
+ "matrix" : [
+ 1,
+ -0,
+ -0,
+ 1,
+ 0,
+ 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" : "latin",
- "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" : "latin",
+ "font" : {
+ "description" : "Cantarell 11",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ },
+ "matrix" : [
+ 1,
+ -0,
+ -0,
+ 1,
+ 0,
+ 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" : "latin",
- "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" : "latin",
+ "font" : {
+ "description" : "Cantarell 11",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ },
+ "matrix" : [
+ 1,
+ -0,
+ -0,
+ 1,
+ 0,
+ 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" : "latin",
- "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" : "latin",
+ "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" : 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" : "latin",
- "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" : "latin",
+ "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" : 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 c2868598..e213690a 100644
--- a/tests/layouts/valid-6.layout
+++ b/tests/layouts/valid-6.layout
@@ -18,367 +18,381 @@
"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" : "latin",
- "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" : "latin",
+ "font" : {
+ "description" : "Cantarell 11",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ },
+ "matrix" : [
+ 1,
+ -0,
+ -0,
+ 1,
+ 0,
+ 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" : "latin",
- "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" : "latin",
- "font" : {
- "description" : "Cantarell 11",
- "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
- "variations" : {
- "wght" : 0
+ {
+ "offset" : 1,
+ "length" : 7,
+ "text" : "0️⃣",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "latin",
+ "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" : "latin",
+ "font" : {
+ "description" : "Cantarell 11",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ },
+ "matrix" : [
+ 1,
+ -0,
+ -0,
+ 1,
+ 0,
+ 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 7324e650..f10b4a6f 100644
--- a/tests/layouts/valid-7.layout
+++ b/tests/layouts/valid-7.layout
@@ -34,596 +34,610 @@
"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" : "latin",
- "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" : "latin",
+ "font" : {
+ "description" : "Cantarell 11",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ },
+ "matrix" : [
+ 1,
+ -0,
+ -0,
+ 1,
+ 0,
+ 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" : "common",
+ "font" : {
+ "description" : "Cantarell 11",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ },
+ "matrix" : [
+ 1,
+ -0,
+ -0,
+ 1,
+ 0,
+ 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" : "common",
- "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" : "latin",
- "font" : {
- "description" : "Cantarell 11",
- "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
- "variations" : {
- "wght" : 0
+ {
+ "offset" : 38,
+ "length" : 3,
+ "text" : "ncy",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "en-us",
+ "script" : "latin",
+ "font" : {
+ "description" : "Cantarell 11",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ },
+ "matrix" : [
+ 1,
+ -0,
+ -0,
+ 1,
+ 0,
+ 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" : "latin",
+ "font" : {
+ "description" : "Cantarell 11",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ },
+ "matrix" : [
+ 1,
+ -0,
+ -0,
+ 1,
+ 0,
+ 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" : "latin",
- "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 e5cedbba..7a98ea27 100644
--- a/tests/layouts/valid-8.layout
+++ b/tests/layouts/valid-8.layout
@@ -20,383 +20,396 @@
"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" : "latin",
- "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" : "latin",
+ "font" : {
+ "description" : "Cantarell 11",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ },
+ "matrix" : [
+ 1,
+ -0,
+ -0,
+ 1,
+ 0,
+ 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" : "hebrew",
+ "font" : {
+ "description" : "DejaVu Sans 11",
+ "checksum" : "69ccd07023a72ceb27a5e5c22f728627353b60a198170f5e58dd7014221abf01",
+ "matrix" : [
+ 1,
+ -0,
+ -0,
+ 1,
+ 0,
+ 0
+ ]
},
- {
- "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" : "hebrew",
- "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" : "hebrew",
+ "font" : {
+ "description" : "Cantarell 11",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ },
+ "matrix" : [
+ 1,
+ -0,
+ -0,
+ 1,
+ 0,
+ 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" : "hebrew",
- "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" : "greek",
- "font" : {
- "description" : "Cantarell 11",
- "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
- "variations" : {
- "wght" : 0
+ {
+ "offset" : 15,
+ "length" : 15,
+ "text" : "Γειά σας",
+ "bidi-level" : 0,
+ "gravity" : "south",
+ "language" : "el",
+ "script" : "greek",
+ "font" : {
+ "description" : "Cantarell 11",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ },
+ "matrix" : [
+ 1,
+ -0,
+ -0,
+ 1,
+ 0,
+ 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 5cdf53f9..5878257b 100644
--- a/tests/layouts/valid-9.layout
+++ b/tests/layouts/valid-9.layout
@@ -26,486 +26,539 @@
],
"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" : "latin",
- "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" : "latin",
+ "font" : {
+ "description" : "Cantarell 11",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ },
+ "matrix" : [
+ 1,
+ -0,
+ -0,
+ 1,
+ 0,
+ 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" : "hebrew",
- "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" : "hebrew",
+ "font" : {
+ "description" : "DejaVu Sans 11",
+ "checksum" : "69ccd07023a72ceb27a5e5c22f728627353b60a198170f5e58dd7014221abf01",
+ "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" : 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" : "hebrew",
+ "font" : {
+ "description" : "Cantarell 11",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ },
+ "matrix" : [
+ 1,
+ -0,
+ -0,
+ 1,
+ 0,
+ 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" : "hebrew",
- "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" : "greek",
- "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" : "greek",
+ "font" : {
+ "description" : "Cantarell 11",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ },
+ "matrix" : [
+ 1,
+ -0,
+ -0,
+ 1,
+ 0,
+ 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" : "greek",
- "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" : "greek",
+ "font" : {
+ "description" : "Cantarell 11",
+ "checksum" : "5bcb6ee14ee9d210b2e91d643de1fe456e9d1aea770983fdb05951545efebbe2",
+ "variations" : {
+ "wght" : 0
+ },
+ "matrix" : [
+ 1,
+ -0,
+ -0,
+ 1,
+ 0,
+ 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 e8619bfb..ff1eeffe 100644
--- a/tests/layouts/vertical.layout
+++ b/tests/layouts/vertical.layout
@@ -17,243 +17,257 @@
},
"text" : "ABC日本語ABC",
"font" : "Noto Sans CJK JP 24",
- "wrap" : "word-char",
+ "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" : "latin",
- "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" : 28835,
- "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" : "latin",
+ "font" : {
+ "description" : "Noto Sans CJK JP Rotated-Left 24",
+ "checksum" : "3b50ae56f1fb5637c82d785945531f718f40b78a26bea3d137e58808bd774399",
+ "matrix" : [
+ 1,
+ -0,
+ -0,
+ 1,
+ 0,
+ 0
+ ]
},
- {
- "glyph" : 2,
- "width" : 32768,
- "x-offset" : 28835,
- "y-offset" : 10764,
- "is-cluster-start" : true,
- "log-cluster" : 1
- },
- {
- "glyph" : 3,
- "width" : 32768,
- "x-offset" : 28835,
- "y-offset" : 10452,
- "is-cluster-start" : true,
- "log-cluster" : 2
- }
- ]
- },
- {
- "offset" : 3,
- "length" : 9,
- "text" : "日本語",
- "bidi-level" : 0,
- "gravity" : "east",
- "language" : "xx",
- "script" : "han",
- "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" : 28835,
- "y-offset" : 16383,
- "is-cluster-start" : true,
- "log-cluster" : 0
- },
- {
- "glyph" : 5,
- "width" : 32768,
- "x-offset" : 28835,
- "y-offset" : 16383,
- "is-cluster-start" : true,
- "log-cluster" : 3
+ {
+ "offset" : 3,
+ "length" : 9,
+ "text" : "日本語",
+ "bidi-level" : 0,
+ "gravity" : "east",
+ "language" : "xx",
+ "script" : "han",
+ "font" : {
+ "description" : "Noto Sans CJK JP Rotated-Left 24",
+ "checksum" : "3b50ae56f1fb5637c82d785945531f718f40b78a26bea3d137e58808bd774399",
+ "matrix" : [
+ 1,
+ -0,
+ -0,
+ 1,
+ 0,
+ 0
+ ]
},
- {
- "glyph" : 7,
- "width" : 32768,
- "x-offset" : 28835,
- "y-offset" : 16383,
- "is-cluster-start" : true,
- "log-cluster" : 6
- }
- ]
- },
- {
- "offset" : 12,
- "length" : 3,
- "text" : "ABC",
- "bidi-level" : 0,
- "gravity" : "east",
- "language" : "en-us",
- "script" : "latin",
- "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" : 28835,
- "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" : "latin",
+ "font" : {
+ "description" : "Noto Sans CJK JP Rotated-Left 24",
+ "checksum" : "3b50ae56f1fb5637c82d785945531f718f40b78a26bea3d137e58808bd774399",
+ "matrix" : [
+ 1,
+ -0,
+ -0,
+ 1,
+ 0,
+ 0
+ ]
},
- {
- "glyph" : 2,
- "width" : 32768,
- "x-offset" : 28835,
- "y-offset" : 10764,
- "is-cluster-start" : true,
- "log-cluster" : 1
- },
- {
- "glyph" : 3,
- "width" : 32768,
- "x-offset" : 28835,
- "y-offset" : 10452,
- "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
+ }
+ ]
+ }
+ ]
+ }
}
]
}