diff --git a/e2etests/testdata/todo/font_sizes_containers_large/dagre/board.exp.json b/e2etests/testdata/todo/font_sizes_containers_large/dagre/board.exp.json
new file mode 100644
index 000000000..4de943255
--- /dev/null
+++ b/e2etests/testdata/todo/font_sizes_containers_large/dagre/board.exp.json
@@ -0,0 +1,196 @@
+{
+ "name": "",
+ "shapes": [
+ {
+ "id": "ninety nine",
+ "type": "",
+ "pos": {
+ "x": 0,
+ "y": 0
+ },
+ "width": 464,
+ "height": 516,
+ "level": 1,
+ "opacity": 1,
+ "strokeDash": 0,
+ "strokeWidth": 2,
+ "borderRadius": 0,
+ "fill": "#E3E9FD",
+ "stroke": "#0D32B2",
+ "shadow": false,
+ "3d": false,
+ "multiple": false,
+ "tooltip": "",
+ "link": "",
+ "icon": null,
+ "iconPosition": "",
+ "fields": null,
+ "methods": null,
+ "columns": null,
+ "label": "ninety nine",
+ "fontSize": 99,
+ "fontFamily": "DEFAULT",
+ "language": "",
+ "color": "#0A0F25",
+ "italic": false,
+ "bold": true,
+ "underline": false,
+ "labelWidth": 460,
+ "labelHeight": 130,
+ "labelPosition": "INSIDE_TOP_CENTER"
+ },
+ {
+ "id": "ninety nine.sixty four",
+ "type": "",
+ "pos": {
+ "x": 40,
+ "y": 50
+ },
+ "width": 384,
+ "height": 416,
+ "level": 2,
+ "opacity": 1,
+ "strokeDash": 0,
+ "strokeWidth": 2,
+ "borderRadius": 0,
+ "fill": "#EDF0FD",
+ "stroke": "#0D32B2",
+ "shadow": false,
+ "3d": false,
+ "multiple": false,
+ "tooltip": "",
+ "link": "",
+ "icon": null,
+ "iconPosition": "",
+ "fields": null,
+ "methods": null,
+ "columns": null,
+ "label": "sixty four",
+ "fontSize": 64,
+ "fontFamily": "DEFAULT",
+ "language": "",
+ "color": "#0A0F25",
+ "italic": false,
+ "bold": true,
+ "underline": false,
+ "labelWidth": 253,
+ "labelHeight": 86,
+ "labelPosition": "INSIDE_TOP_CENTER"
+ },
+ {
+ "id": "ninety nine.sixty four.thirty two",
+ "type": "",
+ "pos": {
+ "x": 80,
+ "y": 100
+ },
+ "width": 304,
+ "height": 316,
+ "level": 3,
+ "opacity": 1,
+ "strokeDash": 0,
+ "strokeWidth": 2,
+ "borderRadius": 0,
+ "fill": "#F7F8FE",
+ "stroke": "#0D32B2",
+ "shadow": false,
+ "3d": false,
+ "multiple": false,
+ "tooltip": "",
+ "link": "",
+ "icon": null,
+ "iconPosition": "",
+ "fields": null,
+ "methods": null,
+ "columns": null,
+ "label": "thirty two",
+ "fontSize": 32,
+ "fontFamily": "DEFAULT",
+ "language": "",
+ "color": "#0A0F25",
+ "italic": false,
+ "bold": true,
+ "underline": false,
+ "labelWidth": 135,
+ "labelHeight": 46,
+ "labelPosition": "INSIDE_TOP_CENTER"
+ },
+ {
+ "id": "ninety nine.sixty four.thirty two.sixteen",
+ "type": "",
+ "pos": {
+ "x": 120,
+ "y": 150
+ },
+ "width": 224,
+ "height": 216,
+ "level": 4,
+ "opacity": 1,
+ "strokeDash": 0,
+ "strokeWidth": 2,
+ "borderRadius": 0,
+ "fill": "#FFFFFF",
+ "stroke": "#0D32B2",
+ "shadow": false,
+ "3d": false,
+ "multiple": false,
+ "tooltip": "",
+ "link": "",
+ "icon": null,
+ "iconPosition": "",
+ "fields": null,
+ "methods": null,
+ "columns": null,
+ "label": "sixteen",
+ "fontSize": 16,
+ "fontFamily": "DEFAULT",
+ "language": "",
+ "color": "#0A0F25",
+ "italic": false,
+ "bold": true,
+ "underline": false,
+ "labelWidth": 53,
+ "labelHeight": 26,
+ "labelPosition": "INSIDE_TOP_CENTER"
+ },
+ {
+ "id": "ninety nine.sixty four.thirty two.sixteen.eight",
+ "type": "",
+ "pos": {
+ "x": 170,
+ "y": 200
+ },
+ "width": 124,
+ "height": 116,
+ "level": 5,
+ "opacity": 1,
+ "strokeDash": 0,
+ "strokeWidth": 2,
+ "borderRadius": 0,
+ "fill": "#FFFFFF",
+ "stroke": "#0D32B2",
+ "shadow": false,
+ "3d": false,
+ "multiple": false,
+ "tooltip": "",
+ "link": "",
+ "icon": null,
+ "iconPosition": "",
+ "fields": null,
+ "methods": null,
+ "columns": null,
+ "label": "eight",
+ "fontSize": 8,
+ "fontFamily": "DEFAULT",
+ "language": "",
+ "color": "#0A0F25",
+ "italic": false,
+ "bold": true,
+ "underline": false,
+ "labelWidth": 24,
+ "labelHeight": 16,
+ "labelPosition": "INSIDE_MIDDLE_CENTER"
+ }
+ ],
+ "connections": []
+}
diff --git a/e2etests/testdata/todo/font_sizes_containers_large/dagre/sketch.exp.svg b/e2etests/testdata/todo/font_sizes_containers_large/dagre/sketch.exp.svg
new file mode 100644
index 000000000..4b27ffa33
--- /dev/null
+++ b/e2etests/testdata/todo/font_sizes_containers_large/dagre/sketch.exp.svg
@@ -0,0 +1,24 @@
+
+
\ No newline at end of file
diff --git a/e2etests/testdata/todo/font_sizes_containers_large/elk/board.exp.json b/e2etests/testdata/todo/font_sizes_containers_large/elk/board.exp.json
new file mode 100644
index 000000000..307837e98
--- /dev/null
+++ b/e2etests/testdata/todo/font_sizes_containers_large/elk/board.exp.json
@@ -0,0 +1,196 @@
+{
+ "name": "",
+ "shapes": [
+ {
+ "id": "ninety nine",
+ "type": "",
+ "pos": {
+ "x": 12,
+ "y": 12
+ },
+ "width": 724,
+ "height": 716,
+ "level": 1,
+ "opacity": 1,
+ "strokeDash": 0,
+ "strokeWidth": 2,
+ "borderRadius": 0,
+ "fill": "#E3E9FD",
+ "stroke": "#0D32B2",
+ "shadow": false,
+ "3d": false,
+ "multiple": false,
+ "tooltip": "",
+ "link": "",
+ "icon": null,
+ "iconPosition": "",
+ "fields": null,
+ "methods": null,
+ "columns": null,
+ "label": "ninety nine",
+ "fontSize": 99,
+ "fontFamily": "DEFAULT",
+ "language": "",
+ "color": "#0A0F25",
+ "italic": false,
+ "bold": true,
+ "underline": false,
+ "labelWidth": 460,
+ "labelHeight": 130,
+ "labelPosition": "INSIDE_TOP_CENTER"
+ },
+ {
+ "id": "ninety nine.sixty four",
+ "type": "",
+ "pos": {
+ "x": 87,
+ "y": 87
+ },
+ "width": 574,
+ "height": 566,
+ "level": 2,
+ "opacity": 1,
+ "strokeDash": 0,
+ "strokeWidth": 2,
+ "borderRadius": 0,
+ "fill": "#EDF0FD",
+ "stroke": "#0D32B2",
+ "shadow": false,
+ "3d": false,
+ "multiple": false,
+ "tooltip": "",
+ "link": "",
+ "icon": null,
+ "iconPosition": "",
+ "fields": null,
+ "methods": null,
+ "columns": null,
+ "label": "sixty four",
+ "fontSize": 64,
+ "fontFamily": "DEFAULT",
+ "language": "",
+ "color": "#0A0F25",
+ "italic": false,
+ "bold": true,
+ "underline": false,
+ "labelWidth": 253,
+ "labelHeight": 86,
+ "labelPosition": "INSIDE_TOP_CENTER"
+ },
+ {
+ "id": "ninety nine.sixty four.thirty two",
+ "type": "",
+ "pos": {
+ "x": 162,
+ "y": 162
+ },
+ "width": 424,
+ "height": 416,
+ "level": 3,
+ "opacity": 1,
+ "strokeDash": 0,
+ "strokeWidth": 2,
+ "borderRadius": 0,
+ "fill": "#F7F8FE",
+ "stroke": "#0D32B2",
+ "shadow": false,
+ "3d": false,
+ "multiple": false,
+ "tooltip": "",
+ "link": "",
+ "icon": null,
+ "iconPosition": "",
+ "fields": null,
+ "methods": null,
+ "columns": null,
+ "label": "thirty two",
+ "fontSize": 32,
+ "fontFamily": "DEFAULT",
+ "language": "",
+ "color": "#0A0F25",
+ "italic": false,
+ "bold": true,
+ "underline": false,
+ "labelWidth": 135,
+ "labelHeight": 46,
+ "labelPosition": "INSIDE_TOP_CENTER"
+ },
+ {
+ "id": "ninety nine.sixty four.thirty two.sixteen",
+ "type": "",
+ "pos": {
+ "x": 237,
+ "y": 237
+ },
+ "width": 274,
+ "height": 266,
+ "level": 4,
+ "opacity": 1,
+ "strokeDash": 0,
+ "strokeWidth": 2,
+ "borderRadius": 0,
+ "fill": "#FFFFFF",
+ "stroke": "#0D32B2",
+ "shadow": false,
+ "3d": false,
+ "multiple": false,
+ "tooltip": "",
+ "link": "",
+ "icon": null,
+ "iconPosition": "",
+ "fields": null,
+ "methods": null,
+ "columns": null,
+ "label": "sixteen",
+ "fontSize": 16,
+ "fontFamily": "DEFAULT",
+ "language": "",
+ "color": "#0A0F25",
+ "italic": false,
+ "bold": true,
+ "underline": false,
+ "labelWidth": 53,
+ "labelHeight": 26,
+ "labelPosition": "INSIDE_TOP_CENTER"
+ },
+ {
+ "id": "ninety nine.sixty four.thirty two.sixteen.eight",
+ "type": "",
+ "pos": {
+ "x": 312,
+ "y": 312
+ },
+ "width": 124,
+ "height": 116,
+ "level": 5,
+ "opacity": 1,
+ "strokeDash": 0,
+ "strokeWidth": 2,
+ "borderRadius": 0,
+ "fill": "#FFFFFF",
+ "stroke": "#0D32B2",
+ "shadow": false,
+ "3d": false,
+ "multiple": false,
+ "tooltip": "",
+ "link": "",
+ "icon": null,
+ "iconPosition": "",
+ "fields": null,
+ "methods": null,
+ "columns": null,
+ "label": "eight",
+ "fontSize": 8,
+ "fontFamily": "DEFAULT",
+ "language": "",
+ "color": "#0A0F25",
+ "italic": false,
+ "bold": true,
+ "underline": false,
+ "labelWidth": 24,
+ "labelHeight": 16,
+ "labelPosition": "INSIDE_MIDDLE_CENTER"
+ }
+ ],
+ "connections": []
+}
diff --git a/e2etests/testdata/todo/font_sizes_containers_large/elk/sketch.exp.svg b/e2etests/testdata/todo/font_sizes_containers_large/elk/sketch.exp.svg
new file mode 100644
index 000000000..39dd19532
--- /dev/null
+++ b/e2etests/testdata/todo/font_sizes_containers_large/elk/sketch.exp.svg
@@ -0,0 +1,24 @@
+
+
\ No newline at end of file
diff --git a/e2etests/testdata/todo/font_sizes_large/dagre/board.exp.json b/e2etests/testdata/todo/font_sizes_large/dagre/board.exp.json
new file mode 100644
index 000000000..982458dc1
--- /dev/null
+++ b/e2etests/testdata/todo/font_sizes_large/dagre/board.exp.json
@@ -0,0 +1,385 @@
+{
+ "name": "",
+ "shapes": [
+ {
+ "id": "eight",
+ "type": "",
+ "pos": {
+ "x": 233,
+ "y": 0
+ },
+ "width": 124,
+ "height": 116,
+ "level": 1,
+ "opacity": 1,
+ "strokeDash": 0,
+ "strokeWidth": 2,
+ "borderRadius": 0,
+ "fill": "#F7F8FE",
+ "stroke": "#0D32B2",
+ "shadow": false,
+ "3d": false,
+ "multiple": false,
+ "tooltip": "",
+ "link": "",
+ "icon": null,
+ "iconPosition": "",
+ "fields": null,
+ "methods": null,
+ "columns": null,
+ "label": "eight",
+ "fontSize": 8,
+ "fontFamily": "DEFAULT",
+ "language": "",
+ "color": "#0A0F25",
+ "italic": false,
+ "bold": true,
+ "underline": false,
+ "labelWidth": 24,
+ "labelHeight": 16,
+ "labelPosition": "INSIDE_MIDDLE_CENTER"
+ },
+ {
+ "id": "sixteen",
+ "type": "",
+ "pos": {
+ "x": 217,
+ "y": 216
+ },
+ "width": 157,
+ "height": 126,
+ "level": 1,
+ "opacity": 1,
+ "strokeDash": 0,
+ "strokeWidth": 2,
+ "borderRadius": 0,
+ "fill": "#F7F8FE",
+ "stroke": "#0D32B2",
+ "shadow": false,
+ "3d": false,
+ "multiple": false,
+ "tooltip": "",
+ "link": "",
+ "icon": null,
+ "iconPosition": "",
+ "fields": null,
+ "methods": null,
+ "columns": null,
+ "label": "sixteen",
+ "fontSize": 16,
+ "fontFamily": "DEFAULT",
+ "language": "",
+ "color": "#0A0F25",
+ "italic": false,
+ "bold": true,
+ "underline": false,
+ "labelWidth": 57,
+ "labelHeight": 26,
+ "labelPosition": "INSIDE_MIDDLE_CENTER"
+ },
+ {
+ "id": "thirty two",
+ "type": "",
+ "pos": {
+ "x": 172,
+ "y": 442
+ },
+ "width": 247,
+ "height": 146,
+ "level": 1,
+ "opacity": 1,
+ "strokeDash": 0,
+ "strokeWidth": 2,
+ "borderRadius": 0,
+ "fill": "#F7F8FE",
+ "stroke": "#0D32B2",
+ "shadow": false,
+ "3d": false,
+ "multiple": false,
+ "tooltip": "",
+ "link": "",
+ "icon": null,
+ "iconPosition": "",
+ "fields": null,
+ "methods": null,
+ "columns": null,
+ "label": "thirty two",
+ "fontSize": 32,
+ "fontFamily": "DEFAULT",
+ "language": "",
+ "color": "#0A0F25",
+ "italic": false,
+ "bold": true,
+ "underline": false,
+ "labelWidth": 147,
+ "labelHeight": 46,
+ "labelPosition": "INSIDE_MIDDLE_CENTER"
+ },
+ {
+ "id": "sixty four",
+ "type": "",
+ "pos": {
+ "x": 108,
+ "y": 688
+ },
+ "width": 375,
+ "height": 186,
+ "level": 1,
+ "opacity": 1,
+ "strokeDash": 0,
+ "strokeWidth": 2,
+ "borderRadius": 0,
+ "fill": "#F7F8FE",
+ "stroke": "#0D32B2",
+ "shadow": false,
+ "3d": false,
+ "multiple": false,
+ "tooltip": "",
+ "link": "",
+ "icon": null,
+ "iconPosition": "",
+ "fields": null,
+ "methods": null,
+ "columns": null,
+ "label": "sixty four",
+ "fontSize": 64,
+ "fontFamily": "DEFAULT",
+ "language": "",
+ "color": "#0A0F25",
+ "italic": false,
+ "bold": true,
+ "underline": false,
+ "labelWidth": 275,
+ "labelHeight": 86,
+ "labelPosition": "INSIDE_MIDDLE_CENTER"
+ },
+ {
+ "id": "ninety nine",
+ "type": "",
+ "pos": {
+ "x": 0,
+ "y": 974
+ },
+ "width": 590,
+ "height": 230,
+ "level": 1,
+ "opacity": 1,
+ "strokeDash": 0,
+ "strokeWidth": 2,
+ "borderRadius": 0,
+ "fill": "#F7F8FE",
+ "stroke": "#0D32B2",
+ "shadow": false,
+ "3d": false,
+ "multiple": false,
+ "tooltip": "",
+ "link": "",
+ "icon": null,
+ "iconPosition": "",
+ "fields": null,
+ "methods": null,
+ "columns": null,
+ "label": "ninety nine",
+ "fontSize": 99,
+ "fontFamily": "DEFAULT",
+ "language": "",
+ "color": "#0A0F25",
+ "italic": false,
+ "bold": true,
+ "underline": false,
+ "labelWidth": 490,
+ "labelHeight": 130,
+ "labelPosition": "INSIDE_MIDDLE_CENTER"
+ }
+ ],
+ "connections": [
+ {
+ "id": "(eight -> sixteen)[0]",
+ "src": "eight",
+ "srcArrow": "none",
+ "srcLabel": "",
+ "dst": "sixteen",
+ "dstArrow": "triangle",
+ "dstLabel": "",
+ "opacity": 1,
+ "strokeDash": 0,
+ "strokeWidth": 2,
+ "stroke": "#0D32B2",
+ "label": "twelve",
+ "fontSize": 12,
+ "fontFamily": "DEFAULT",
+ "language": "",
+ "color": "#676C7E",
+ "italic": true,
+ "bold": false,
+ "underline": false,
+ "labelWidth": 33,
+ "labelHeight": 16,
+ "labelPosition": "INSIDE_MIDDLE_CENTER",
+ "labelPercentage": 0,
+ "route": [
+ {
+ "x": 295,
+ "y": 116
+ },
+ {
+ "x": 295,
+ "y": 156
+ },
+ {
+ "x": 295,
+ "y": 176
+ },
+ {
+ "x": 295,
+ "y": 216
+ }
+ ],
+ "isCurve": true,
+ "animated": false,
+ "tooltip": "",
+ "icon": null
+ },
+ {
+ "id": "(sixteen -> thirty two)[0]",
+ "src": "sixteen",
+ "srcArrow": "none",
+ "srcLabel": "",
+ "dst": "thirty two",
+ "dstArrow": "triangle",
+ "dstLabel": "",
+ "opacity": 1,
+ "strokeDash": 0,
+ "strokeWidth": 2,
+ "stroke": "#0D32B2",
+ "label": "twenty four",
+ "fontSize": 24,
+ "fontFamily": "DEFAULT",
+ "language": "",
+ "color": "#676C7E",
+ "italic": true,
+ "bold": false,
+ "underline": false,
+ "labelWidth": 114,
+ "labelHeight": 31,
+ "labelPosition": "INSIDE_MIDDLE_CENTER",
+ "labelPercentage": 0,
+ "route": [
+ {
+ "x": 295,
+ "y": 342
+ },
+ {
+ "x": 295,
+ "y": 382
+ },
+ {
+ "x": 295,
+ "y": 402
+ },
+ {
+ "x": 295,
+ "y": 442
+ }
+ ],
+ "isCurve": true,
+ "animated": false,
+ "tooltip": "",
+ "icon": null
+ },
+ {
+ "id": "(thirty two -> sixty four)[0]",
+ "src": "thirty two",
+ "srcArrow": "none",
+ "srcLabel": "",
+ "dst": "sixty four",
+ "dstArrow": "triangle",
+ "dstLabel": "",
+ "opacity": 1,
+ "strokeDash": 0,
+ "strokeWidth": 2,
+ "stroke": "#0D32B2",
+ "label": "forty eight",
+ "fontSize": 48,
+ "fontFamily": "DEFAULT",
+ "language": "",
+ "color": "#676C7E",
+ "italic": true,
+ "bold": false,
+ "underline": false,
+ "labelWidth": 203,
+ "labelHeight": 61,
+ "labelPosition": "INSIDE_MIDDLE_CENTER",
+ "labelPercentage": 0,
+ "route": [
+ {
+ "x": 295,
+ "y": 588
+ },
+ {
+ "x": 295,
+ "y": 628
+ },
+ {
+ "x": 295,
+ "y": 648
+ },
+ {
+ "x": 295,
+ "y": 688
+ }
+ ],
+ "isCurve": true,
+ "animated": false,
+ "tooltip": "",
+ "icon": null
+ },
+ {
+ "id": "(sixty four -> ninety nine)[0]",
+ "src": "sixty four",
+ "srcArrow": "none",
+ "srcLabel": "",
+ "dst": "ninety nine",
+ "dstArrow": "triangle",
+ "dstLabel": "",
+ "opacity": 1,
+ "strokeDash": 0,
+ "strokeWidth": 2,
+ "stroke": "#0D32B2",
+ "label": "eighty one",
+ "fontSize": 81,
+ "fontFamily": "DEFAULT",
+ "language": "",
+ "color": "#676C7E",
+ "italic": true,
+ "bold": false,
+ "underline": false,
+ "labelWidth": 343,
+ "labelHeight": 102,
+ "labelPosition": "INSIDE_MIDDLE_CENTER",
+ "labelPercentage": 0,
+ "route": [
+ {
+ "x": 295,
+ "y": 874
+ },
+ {
+ "x": 295,
+ "y": 914
+ },
+ {
+ "x": 295,
+ "y": 934
+ },
+ {
+ "x": 295,
+ "y": 974
+ }
+ ],
+ "isCurve": true,
+ "animated": false,
+ "tooltip": "",
+ "icon": null
+ }
+ ]
+}
diff --git a/e2etests/testdata/todo/font_sizes_large/dagre/sketch.exp.svg b/e2etests/testdata/todo/font_sizes_large/dagre/sketch.exp.svg
new file mode 100644
index 000000000..a41423f10
--- /dev/null
+++ b/e2etests/testdata/todo/font_sizes_large/dagre/sketch.exp.svg
@@ -0,0 +1,43 @@
+
+
\ No newline at end of file
diff --git a/e2etests/testdata/todo/font_sizes_large/elk/board.exp.json b/e2etests/testdata/todo/font_sizes_large/elk/board.exp.json
new file mode 100644
index 000000000..85b0d3b12
--- /dev/null
+++ b/e2etests/testdata/todo/font_sizes_large/elk/board.exp.json
@@ -0,0 +1,349 @@
+{
+ "name": "",
+ "shapes": [
+ {
+ "id": "eight",
+ "type": "",
+ "pos": {
+ "x": 295,
+ "y": 12
+ },
+ "width": 124,
+ "height": 116,
+ "level": 1,
+ "opacity": 1,
+ "strokeDash": 0,
+ "strokeWidth": 2,
+ "borderRadius": 0,
+ "fill": "#F7F8FE",
+ "stroke": "#0D32B2",
+ "shadow": false,
+ "3d": false,
+ "multiple": false,
+ "tooltip": "",
+ "link": "",
+ "icon": null,
+ "iconPosition": "",
+ "fields": null,
+ "methods": null,
+ "columns": null,
+ "label": "eight",
+ "fontSize": 8,
+ "fontFamily": "DEFAULT",
+ "language": "",
+ "color": "#0A0F25",
+ "italic": false,
+ "bold": true,
+ "underline": false,
+ "labelWidth": 24,
+ "labelHeight": 16,
+ "labelPosition": "INSIDE_MIDDLE_CENTER"
+ },
+ {
+ "id": "sixteen",
+ "type": "",
+ "pos": {
+ "x": 279,
+ "y": 344
+ },
+ "width": 157,
+ "height": 126,
+ "level": 1,
+ "opacity": 1,
+ "strokeDash": 0,
+ "strokeWidth": 2,
+ "borderRadius": 0,
+ "fill": "#F7F8FE",
+ "stroke": "#0D32B2",
+ "shadow": false,
+ "3d": false,
+ "multiple": false,
+ "tooltip": "",
+ "link": "",
+ "icon": null,
+ "iconPosition": "",
+ "fields": null,
+ "methods": null,
+ "columns": null,
+ "label": "sixteen",
+ "fontSize": 16,
+ "fontFamily": "DEFAULT",
+ "language": "",
+ "color": "#0A0F25",
+ "italic": false,
+ "bold": true,
+ "underline": false,
+ "labelWidth": 57,
+ "labelHeight": 26,
+ "labelPosition": "INSIDE_MIDDLE_CENTER"
+ },
+ {
+ "id": "thirty two",
+ "type": "",
+ "pos": {
+ "x": 234,
+ "y": 701
+ },
+ "width": 247,
+ "height": 146,
+ "level": 1,
+ "opacity": 1,
+ "strokeDash": 0,
+ "strokeWidth": 2,
+ "borderRadius": 0,
+ "fill": "#F7F8FE",
+ "stroke": "#0D32B2",
+ "shadow": false,
+ "3d": false,
+ "multiple": false,
+ "tooltip": "",
+ "link": "",
+ "icon": null,
+ "iconPosition": "",
+ "fields": null,
+ "methods": null,
+ "columns": null,
+ "label": "thirty two",
+ "fontSize": 32,
+ "fontFamily": "DEFAULT",
+ "language": "",
+ "color": "#0A0F25",
+ "italic": false,
+ "bold": true,
+ "underline": false,
+ "labelWidth": 147,
+ "labelHeight": 46,
+ "labelPosition": "INSIDE_MIDDLE_CENTER"
+ },
+ {
+ "id": "sixty four",
+ "type": "",
+ "pos": {
+ "x": 170,
+ "y": 1108
+ },
+ "width": 375,
+ "height": 186,
+ "level": 1,
+ "opacity": 1,
+ "strokeDash": 0,
+ "strokeWidth": 2,
+ "borderRadius": 0,
+ "fill": "#F7F8FE",
+ "stroke": "#0D32B2",
+ "shadow": false,
+ "3d": false,
+ "multiple": false,
+ "tooltip": "",
+ "link": "",
+ "icon": null,
+ "iconPosition": "",
+ "fields": null,
+ "methods": null,
+ "columns": null,
+ "label": "sixty four",
+ "fontSize": 64,
+ "fontFamily": "DEFAULT",
+ "language": "",
+ "color": "#0A0F25",
+ "italic": false,
+ "bold": true,
+ "underline": false,
+ "labelWidth": 275,
+ "labelHeight": 86,
+ "labelPosition": "INSIDE_MIDDLE_CENTER"
+ },
+ {
+ "id": "ninety nine",
+ "type": "",
+ "pos": {
+ "x": 62,
+ "y": 1596
+ },
+ "width": 590,
+ "height": 230,
+ "level": 1,
+ "opacity": 1,
+ "strokeDash": 0,
+ "strokeWidth": 2,
+ "borderRadius": 0,
+ "fill": "#F7F8FE",
+ "stroke": "#0D32B2",
+ "shadow": false,
+ "3d": false,
+ "multiple": false,
+ "tooltip": "",
+ "link": "",
+ "icon": null,
+ "iconPosition": "",
+ "fields": null,
+ "methods": null,
+ "columns": null,
+ "label": "ninety nine",
+ "fontSize": 99,
+ "fontFamily": "DEFAULT",
+ "language": "",
+ "color": "#0A0F25",
+ "italic": false,
+ "bold": true,
+ "underline": false,
+ "labelWidth": 490,
+ "labelHeight": 130,
+ "labelPosition": "INSIDE_MIDDLE_CENTER"
+ }
+ ],
+ "connections": [
+ {
+ "id": "(eight -> sixteen)[0]",
+ "src": "eight",
+ "srcArrow": "none",
+ "srcLabel": "",
+ "dst": "sixteen",
+ "dstArrow": "triangle",
+ "dstLabel": "",
+ "opacity": 1,
+ "strokeDash": 0,
+ "strokeWidth": 2,
+ "stroke": "#0D32B2",
+ "label": "twelve",
+ "fontSize": 12,
+ "fontFamily": "DEFAULT",
+ "language": "",
+ "color": "#676C7E",
+ "italic": true,
+ "bold": false,
+ "underline": false,
+ "labelWidth": 33,
+ "labelHeight": 16,
+ "labelPosition": "INSIDE_MIDDLE_CENTER",
+ "labelPercentage": 0,
+ "route": [
+ {
+ "x": 357,
+ "y": 128
+ },
+ {
+ "x": 357,
+ "y": 344
+ }
+ ],
+ "animated": false,
+ "tooltip": "",
+ "icon": null
+ },
+ {
+ "id": "(sixteen -> thirty two)[0]",
+ "src": "sixteen",
+ "srcArrow": "none",
+ "srcLabel": "",
+ "dst": "thirty two",
+ "dstArrow": "triangle",
+ "dstLabel": "",
+ "opacity": 1,
+ "strokeDash": 0,
+ "strokeWidth": 2,
+ "stroke": "#0D32B2",
+ "label": "twenty four",
+ "fontSize": 24,
+ "fontFamily": "DEFAULT",
+ "language": "",
+ "color": "#676C7E",
+ "italic": true,
+ "bold": false,
+ "underline": false,
+ "labelWidth": 114,
+ "labelHeight": 31,
+ "labelPosition": "INSIDE_MIDDLE_CENTER",
+ "labelPercentage": 0,
+ "route": [
+ {
+ "x": 357,
+ "y": 470
+ },
+ {
+ "x": 357,
+ "y": 701
+ }
+ ],
+ "animated": false,
+ "tooltip": "",
+ "icon": null
+ },
+ {
+ "id": "(thirty two -> sixty four)[0]",
+ "src": "thirty two",
+ "srcArrow": "none",
+ "srcLabel": "",
+ "dst": "sixty four",
+ "dstArrow": "triangle",
+ "dstLabel": "",
+ "opacity": 1,
+ "strokeDash": 0,
+ "strokeWidth": 2,
+ "stroke": "#0D32B2",
+ "label": "forty eight",
+ "fontSize": 48,
+ "fontFamily": "DEFAULT",
+ "language": "",
+ "color": "#676C7E",
+ "italic": true,
+ "bold": false,
+ "underline": false,
+ "labelWidth": 203,
+ "labelHeight": 61,
+ "labelPosition": "INSIDE_MIDDLE_CENTER",
+ "labelPercentage": 0,
+ "route": [
+ {
+ "x": 357,
+ "y": 847
+ },
+ {
+ "x": 357,
+ "y": 1108
+ }
+ ],
+ "animated": false,
+ "tooltip": "",
+ "icon": null
+ },
+ {
+ "id": "(sixty four -> ninety nine)[0]",
+ "src": "sixty four",
+ "srcArrow": "none",
+ "srcLabel": "",
+ "dst": "ninety nine",
+ "dstArrow": "triangle",
+ "dstLabel": "",
+ "opacity": 1,
+ "strokeDash": 0,
+ "strokeWidth": 2,
+ "stroke": "#0D32B2",
+ "label": "eighty one",
+ "fontSize": 81,
+ "fontFamily": "DEFAULT",
+ "language": "",
+ "color": "#676C7E",
+ "italic": true,
+ "bold": false,
+ "underline": false,
+ "labelWidth": 343,
+ "labelHeight": 102,
+ "labelPosition": "INSIDE_MIDDLE_CENTER",
+ "labelPercentage": 0,
+ "route": [
+ {
+ "x": 357,
+ "y": 1294
+ },
+ {
+ "x": 357,
+ "y": 1596
+ }
+ ],
+ "animated": false,
+ "tooltip": "",
+ "icon": null
+ }
+ ]
+}
diff --git a/e2etests/testdata/todo/font_sizes_large/elk/sketch.exp.svg b/e2etests/testdata/todo/font_sizes_large/elk/sketch.exp.svg
new file mode 100644
index 000000000..91a92c371
--- /dev/null
+++ b/e2etests/testdata/todo/font_sizes_large/elk/sketch.exp.svg
@@ -0,0 +1,43 @@
+
+
\ No newline at end of file
diff --git a/e2etests/testdata/todo/tall_edge_label/dagre/board.exp.json b/e2etests/testdata/todo/tall_edge_label/dagre/board.exp.json
new file mode 100644
index 000000000..2de602438
--- /dev/null
+++ b/e2etests/testdata/todo/tall_edge_label/dagre/board.exp.json
@@ -0,0 +1,130 @@
+{
+ "name": "",
+ "shapes": [
+ {
+ "id": "a",
+ "type": "",
+ "pos": {
+ "x": 0,
+ "y": 0
+ },
+ "width": 113,
+ "height": 126,
+ "level": 1,
+ "opacity": 1,
+ "strokeDash": 0,
+ "strokeWidth": 2,
+ "borderRadius": 0,
+ "fill": "#F7F8FE",
+ "stroke": "#0D32B2",
+ "shadow": false,
+ "3d": false,
+ "multiple": false,
+ "tooltip": "",
+ "link": "",
+ "icon": null,
+ "iconPosition": "",
+ "fields": null,
+ "methods": null,
+ "columns": null,
+ "label": "a",
+ "fontSize": 16,
+ "fontFamily": "DEFAULT",
+ "language": "",
+ "color": "#0A0F25",
+ "italic": false,
+ "bold": true,
+ "underline": false,
+ "labelWidth": 13,
+ "labelHeight": 26,
+ "labelPosition": "INSIDE_MIDDLE_CENTER"
+ },
+ {
+ "id": "b",
+ "type": "",
+ "pos": {
+ "x": 0,
+ "y": 226
+ },
+ "width": 113,
+ "height": 126,
+ "level": 1,
+ "opacity": 1,
+ "strokeDash": 0,
+ "strokeWidth": 2,
+ "borderRadius": 0,
+ "fill": "#F7F8FE",
+ "stroke": "#0D32B2",
+ "shadow": false,
+ "3d": false,
+ "multiple": false,
+ "tooltip": "",
+ "link": "",
+ "icon": null,
+ "iconPosition": "",
+ "fields": null,
+ "methods": null,
+ "columns": null,
+ "label": "b",
+ "fontSize": 16,
+ "fontFamily": "DEFAULT",
+ "language": "",
+ "color": "#0A0F25",
+ "italic": false,
+ "bold": true,
+ "underline": false,
+ "labelWidth": 13,
+ "labelHeight": 26,
+ "labelPosition": "INSIDE_MIDDLE_CENTER"
+ }
+ ],
+ "connections": [
+ {
+ "id": "(a -> b)[0]",
+ "src": "a",
+ "srcArrow": "none",
+ "srcLabel": "",
+ "dst": "b",
+ "dstArrow": "triangle",
+ "dstLabel": "",
+ "opacity": 1,
+ "strokeDash": 0,
+ "strokeWidth": 2,
+ "stroke": "#0D32B2",
+ "label": "There\nonce\nwas\na\nvery\ntall\nedge\nlabel",
+ "fontSize": 16,
+ "fontFamily": "DEFAULT",
+ "language": "",
+ "color": "#676C7E",
+ "italic": true,
+ "bold": false,
+ "underline": false,
+ "labelWidth": 38,
+ "labelHeight": 133,
+ "labelPosition": "INSIDE_MIDDLE_CENTER",
+ "labelPercentage": 0,
+ "route": [
+ {
+ "x": 56.5,
+ "y": 126
+ },
+ {
+ "x": 56.5,
+ "y": 166
+ },
+ {
+ "x": 56.5,
+ "y": 186
+ },
+ {
+ "x": 56.5,
+ "y": 226
+ }
+ ],
+ "isCurve": true,
+ "animated": false,
+ "tooltip": "",
+ "icon": null
+ }
+ ]
+}
diff --git a/e2etests/testdata/todo/tall_edge_label/dagre/sketch.exp.svg b/e2etests/testdata/todo/tall_edge_label/dagre/sketch.exp.svg
new file mode 100644
index 000000000..986f6e3a5
--- /dev/null
+++ b/e2etests/testdata/todo/tall_edge_label/dagre/sketch.exp.svg
@@ -0,0 +1,34 @@
+
+
\ No newline at end of file
diff --git a/e2etests/testdata/todo/tall_edge_label/elk/board.exp.json b/e2etests/testdata/todo/tall_edge_label/elk/board.exp.json
new file mode 100644
index 000000000..7b6dc1dad
--- /dev/null
+++ b/e2etests/testdata/todo/tall_edge_label/elk/board.exp.json
@@ -0,0 +1,121 @@
+{
+ "name": "",
+ "shapes": [
+ {
+ "id": "a",
+ "type": "",
+ "pos": {
+ "x": 12,
+ "y": 12
+ },
+ "width": 113,
+ "height": 126,
+ "level": 1,
+ "opacity": 1,
+ "strokeDash": 0,
+ "strokeWidth": 2,
+ "borderRadius": 0,
+ "fill": "#F7F8FE",
+ "stroke": "#0D32B2",
+ "shadow": false,
+ "3d": false,
+ "multiple": false,
+ "tooltip": "",
+ "link": "",
+ "icon": null,
+ "iconPosition": "",
+ "fields": null,
+ "methods": null,
+ "columns": null,
+ "label": "a",
+ "fontSize": 16,
+ "fontFamily": "DEFAULT",
+ "language": "",
+ "color": "#0A0F25",
+ "italic": false,
+ "bold": true,
+ "underline": false,
+ "labelWidth": 13,
+ "labelHeight": 26,
+ "labelPosition": "INSIDE_MIDDLE_CENTER"
+ },
+ {
+ "id": "b",
+ "type": "",
+ "pos": {
+ "x": 12,
+ "y": 471
+ },
+ "width": 113,
+ "height": 126,
+ "level": 1,
+ "opacity": 1,
+ "strokeDash": 0,
+ "strokeWidth": 2,
+ "borderRadius": 0,
+ "fill": "#F7F8FE",
+ "stroke": "#0D32B2",
+ "shadow": false,
+ "3d": false,
+ "multiple": false,
+ "tooltip": "",
+ "link": "",
+ "icon": null,
+ "iconPosition": "",
+ "fields": null,
+ "methods": null,
+ "columns": null,
+ "label": "b",
+ "fontSize": 16,
+ "fontFamily": "DEFAULT",
+ "language": "",
+ "color": "#0A0F25",
+ "italic": false,
+ "bold": true,
+ "underline": false,
+ "labelWidth": 13,
+ "labelHeight": 26,
+ "labelPosition": "INSIDE_MIDDLE_CENTER"
+ }
+ ],
+ "connections": [
+ {
+ "id": "(a -> b)[0]",
+ "src": "a",
+ "srcArrow": "none",
+ "srcLabel": "",
+ "dst": "b",
+ "dstArrow": "triangle",
+ "dstLabel": "",
+ "opacity": 1,
+ "strokeDash": 0,
+ "strokeWidth": 2,
+ "stroke": "#0D32B2",
+ "label": "There\nonce\nwas\na\nvery\ntall\nedge\nlabel",
+ "fontSize": 16,
+ "fontFamily": "DEFAULT",
+ "language": "",
+ "color": "#676C7E",
+ "italic": true,
+ "bold": false,
+ "underline": false,
+ "labelWidth": 38,
+ "labelHeight": 133,
+ "labelPosition": "INSIDE_MIDDLE_CENTER",
+ "labelPercentage": 0,
+ "route": [
+ {
+ "x": 68.5,
+ "y": 138
+ },
+ {
+ "x": 68.5,
+ "y": 471
+ }
+ ],
+ "animated": false,
+ "tooltip": "",
+ "icon": null
+ }
+ ]
+}
diff --git a/e2etests/testdata/todo/tall_edge_label/elk/sketch.exp.svg b/e2etests/testdata/todo/tall_edge_label/elk/sketch.exp.svg
new file mode 100644
index 000000000..fd896fed3
--- /dev/null
+++ b/e2etests/testdata/todo/tall_edge_label/elk/sketch.exp.svg
@@ -0,0 +1,34 @@
+
+
\ No newline at end of file
diff --git a/e2etests/todo_test.go b/e2etests/todo_test.go
index 4ec848e48..a0cecce13 100644
--- a/e2etests/todo_test.go
+++ b/e2etests/todo_test.go
@@ -13,6 +13,58 @@ func testTodo(t *testing.T) {
script: `
container.first -> container.second: 1->2
container -> container.second: c->2
+`,
+ },
+ {
+ // issue https://github.com/terrastruct/d2/issues/263
+ name: "tall_edge_label",
+ script: `
+a -> b: There\nonce\nwas\na\nvery\ntall\nedge\nlabel
+`,
+ },
+ {
+ // issue https://github.com/terrastruct/d2/issues/263
+ name: "font_sizes_large",
+ script: `
+eight.style.font-size: 8
+sixteen.style.font-size: 16
+thirty two.style.font-size: 32
+sixty four.style.font-size: 64
+ninety nine.style.font-size: 99
+
+eight -> sixteen : twelve {
+ style.font-size: 12
+}
+sixteen -> thirty two : twenty four {
+ style.font-size: 24
+}
+thirty two -> sixty four: forty eight {
+ style.font-size: 48
+}
+sixty four -> ninety nine: eighty one {
+ style.font-size: 81
+}
+`,
+ },
+ {
+ // issue https://github.com/terrastruct/d2/issues/19
+ name: "font_sizes_containers_large",
+ script: `
+ninety nine: {
+ style.font-size: 99
+ sixty four: {
+ style.font-size: 64
+ thirty two:{
+ style.font-size: 32
+ sixteen: {
+ style.font-size: 16
+ eight: {
+ style.font-size: 8
+ }
+ }
+ }
+ }
+}
`,
},
}