about summary refs log tree commit diff stats
path: root/src/layout
diff options
context:
space:
mode:
Diffstat (limited to 'src/layout')
-rw-r--r--src/layout/box.nim3
-rw-r--r--src/layout/engine.nim8
2 files changed, 9 insertions, 2 deletions
diff --git a/src/layout/box.nim b/src/layout/box.nim
index d461f0f5..d7ae3400 100644
--- a/src/layout/box.nim
+++ b/src/layout/box.nim
@@ -23,6 +23,9 @@ type
     width*: int
     height*: int
 
+  InlineSpacing* = ref object of InlineAtom
+    word*: InlineWord
+
   InlineWord* = ref object of InlineAtom
     str*: string
     fontstyle*: CSSFontStyle
diff --git a/src/layout/engine.nim b/src/layout/engine.nim
index 9b1e9363..45aef6de 100644
--- a/src/layout/engine.nim
+++ b/src/layout/engine.nim
@@ -80,9 +80,13 @@ proc addAtom(ictx: InlineContext, atom: InlineAtom, maxwidth: int, specified: CS
       shift = ictx.computeShift(specified)
       ictx.whitespace = false
 
-  ictx.thisrow.width += shift
+  if atom.width > 0 and atom.height > 0:
+    if shift > 0:
+      let spacing = InlineSpacing(width: shift, height: atom.height)
+      spacing.relx = ictx.thisrow.width
+      ictx.thisrow.width += spacing.width
+      ictx.thisrow.atoms.add(spacing)
 
-  if atom.width > 0:
     atom.relx += ictx.thisrow.width
     ictx.thisrow.width += atom.width
     ictx.thisrow.height = max(ictx.thisrow.height, atom.height)