--- gforth/utf-8.fs 2009/01/17 16:55:54 1.38 +++ gforth/utf-8.fs 2010/02/14 18:04:16 1.41 @@ -1,6 +1,6 @@ \ UTF-8 handling 12dec04py -\ Copyright (C) 2004,2005,2006,2007,2008 Free Software Foundation, Inc. +\ Copyright (C) 2004,2005,2006,2007,2008,2009 Free Software Foundation, Inc. \ This file is part of Gforth. @@ -273,15 +273,17 @@ here wc-table - Constant #wc-table \ inefficient table walk: -: wcwidth ( xc -- n ) +: xc-width ( xc -- n ) wc-table #wc-table over + swap ?DO dup I 2@ within IF I 2 cells + @ UNLOOP EXIT THEN 3 cells +LOOP 1 ; +[ELSE] + ' wcwidth Alias xc-width [THEN] : u8width ( xcaddr u -- n ) 0 rot rot over + swap ?DO - I xc@+ swap >r wcwidth + + I xc@+ swap >r xc-width + r> I - +LOOP ; : set-encoding-utf-8 ( -- ) @@ -326,6 +328,9 @@ environment-wordlist set-current \G ``ISO-LATIN-1'' or ``UTF-8'', with the exception of ``ASCII'', where \G we prefer the alias ``ASCII''. max-single-byte $80 = IF s" UTF-8" ELSE s" ISO-LATIN-1" THEN ; +: max-xchar ( -- xchar ) + max-single-byte $80 = IF $7FFFFFFF ELSE $FF THEN ; +' noop Alias X:xchar forth definitions :noname ( -- )