diff options
author | bptato <nincsnevem662@gmail.com> | 2024-05-09 21:57:00 +0200 |
---|---|---|
committer | bptato <nincsnevem662@gmail.com> | 2024-05-09 22:11:30 +0200 |
commit | 2453c63b0b12baa9bd78c0a114b58f1c3833e967 (patch) | |
tree | 34b37fa375f8500669877ec726afea0ba2ed2d99 /src/layout | |
parent | 200a3784de44b90351f7d9a1da47e85e06ff8e15 (diff) | |
download | chawan-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.nim | 6 |
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() |