| |
|
| \ inefficient table walk: |
\ inefficient table walk: |
| |
|
| : wcwidth ( xc -- n ) |
: xc-width ( xc -- n ) |
| wc-table #wc-table over + swap ?DO |
wc-table #wc-table over + swap ?DO |
| dup I 2@ within IF I 2 cells + @ UNLOOP EXIT THEN |
dup I 2@ within IF I 2 cells + @ UNLOOP EXIT THEN |
| 3 cells +LOOP 1 ; |
3 cells +LOOP 1 ; |
| |
[ELSE] |
| |
' wcwidth Alias xc-width |
| [THEN] |
[THEN] |
| |
|
| : u8width ( xcaddr u -- n ) |
: u8width ( xcaddr u -- n ) |
| 0 rot rot over + swap ?DO |
0 rot rot over + swap ?DO |
| I xc@+ swap >r wcwidth + |
I xc@+ swap >r xc-width + |
| r> I - +LOOP ; |
r> I - +LOOP ; |
| |
|
| : set-encoding-utf-8 ( -- ) |
: set-encoding-utf-8 ( -- ) |