--- gforth/utf-8.fs 2005/11/05 23:26:49 1.17 +++ gforth/utf-8.fs 2006/05/01 09:45:56 1.23 @@ -1,6 +1,6 @@ \ UTF-8 handling 12dec04py -\ Copyright (C) 2004 Free Software Foundation, Inc. +\ Copyright (C) 2004,2005 Free Software Foundation, Inc. \ This file is part of Gforth. @@ -128,6 +128,15 @@ $80 Value max-single-byte nip nip over - then ; +[IFUNDEF] wcwidth + : wcwidth abort ; +[THEN] + +: u8width ( xcaddr u -- n ) + 0 rot rot over + swap ?DO + I xc@+ swap >r wcwidth + + r> I - +LOOP ; + : set-encoding-utf-8 ( -- ) ['] u8emit is xemit ['] u8key is xkey @@ -139,6 +148,9 @@ $80 Value max-single-byte ['] u8!+? is xc!+? ['] u8@+ is xc@+ ['] u8len is xc-size +[ [IFDEF] x-width ] + ['] u8width is x-width +[ [THEN] ] ['] -u8trailing-garbage is -trailing-garbage ; @@ -150,6 +162,9 @@ $80 Value max-single-byte s" UTF-8" search nip nip IF set-encoding-utf-8 ELSE set-encoding-fixed-width THEN ; -' utf-8-cold INIT8 chained +:noname ( -- ) + defers 'cold + utf-8-cold +; is 'cold utf-8-cold