about summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rw-r--r--src/css/layout.nim3
-rw-r--r--src/utils/luwrap.nim5
2 files changed, 7 insertions, 1 deletions
diff --git a/src/css/layout.nim b/src/css/layout.nim
index 2a4e33b8..c2facdd3 100644
--- a/src/css/layout.nim
+++ b/src/css/layout.nim
@@ -1007,7 +1007,8 @@ proc layoutTextLoop(fstate: var FlowState; state: var InlineState;
     else:
       let pi = i
       let u = str.nextUTF8(i)
-      if luctx.isEnclosingMark(u) or luctx.isNonspacingMark(u):
+      if luctx.isEnclosingMark(u) or luctx.isNonspacingMark(u) or
+          luctx.isFormat(u):
         continue
       let w = u.width()
       fstate.checkWrap(state, u, w)
diff --git a/src/utils/luwrap.nim b/src/utils/luwrap.nim
index e2748958..b22cdb0d 100644
--- a/src/utils/luwrap.nim
+++ b/src/utils/luwrap.nim
@@ -87,6 +87,7 @@ type
     lurHangul = "Hangul"
     lurEnclosingMark = "Me"
     lurNonspacingMark = "Mn"
+    lurFormat = "Cf"
 
   LUContextObj = object
     crs: array[LURangeType, CharRange]
@@ -149,3 +150,7 @@ proc isEnclosingMark*(ctx: LUContext; u: uint32): bool =
 proc isNonspacingMark*(ctx: LUContext; u: uint32): bool =
   ctx.initGeneralCategory(lurNonspacingMark)
   return u in ctx.crs[lurNonspacingMark]
+
+proc isFormat*(ctx: LUContext; u: uint32): bool =
+  ctx.initGeneralCategory(lurFormat)
+  return u in ctx.crs[lurFormat]