about summary refs log tree commit diff stats
path: root/src/layout
diff options
context:
space:
mode:
authorbptato <nincsnevem662@gmail.com>2024-05-09 21:57:00 +0200
committerbptato <nincsnevem662@gmail.com>2024-05-09 22:11:30 +0200
commit2453c63b0b12baa9bd78c0a114b58f1c3833e967 (patch)
tree34b37fa375f8500669877ec726afea0ba2ed2d99 /src/layout
parent200a3784de44b90351f7d9a1da47e85e06ff8e15 (diff)
downloadchawan-2453c63b0b12baa9bd78c0a114b58f1c3833e967.tar.gz
luwrap: replace Nim unicode maps with libunicode
Instead of using the built-in (and outdated, and buggy) tables, we now
use libunicode from QJS.  This shaves some bytes off the executable,
though far less than I had imagined it would.

Also, a surprising effect of this change: because libunicode's tables
aren't glitched out, kanji properly gets classified as alpha.  I found
this greatly annoying because `w' in Japanese text would now jump
through whole sentences.  As a band-aid solution I added an extra
Han category, but I wish we had a more robust solution that could
differentiate between *all* scripts.

TODO: I suspect that separately loading the tables for every rune in
breaksViWordCat is rather inefficient.  Using some context object (at
least per operation) would probably be beneficial.
Diffstat (limited to 'src/layout')
-rw-r--r--src/layout/engine.nim6
1 files changed, 3 insertions, 3 deletions
diff --git a/src/layout/engine.nim b/src/layout/engine.nim
index d51c555b..ba073c27 100644
--- a/src/layout/engine.nim
+++ b/src/layout/engine.nim
@@ -881,9 +881,9 @@ iterator transform(text: seq[string]; v: CSSTextTransform): string {.inline.} =
   else:
     for str in text:
       let str = case v
-      of TextTransformCapitalize: str.capitalize()
-      of TextTransformUppercase: str.toUpper()
-      of TextTransformLowercase: str.toLower()
+      of TextTransformCapitalize: str.capitalizeLU()
+      of TextTransformUppercase: str.toUpperLU()
+      of TextTransformLowercase: str.toLowerLU()
       of TextTransformFullWidth: str.fullwidth()
       of TextTransformFullSizeKana: str.fullsize()
       of TextTransformChaHalfWidth: str.halfwidth()