>>>>> "Henry" == Henry Baker <hbaker1 at pipeline.com> writes:
Henry> I believe that there is a C/C++ function ("mbstowcs" ??) to
Henry> figure out how "wide" a UTF string really is. Google also
Henry> tells me that there's a Unicode C/C++ library called "ICU"
Henry> at site.icu-project.org.
Henry> Presumably, a Lisp the supports UTF characters already
Henry> provides a call to these sorts of functions.
AFAIK, Lisp's that support unicode do so natively, without calling
ICU.
Henry> Supposedly, CLISP's char-width and string-width call
Henry> wcwidth and wcswidth, respectively.
Hmm. This could probably be implemented for all unicode lisps that
don't already provide such functions assuming they provide a way to
determine if a code point is a combining character or not. Perhaps we
can ignore the double-width East Asian characters.
Henry> At 01:32 PM 2/8/2013, Robert Dodier wrote:
>> Yes, Maxima + UTF-8-aware Lisp + UTF-8 terminal =>
>> happiness. I've tried it.
>>
>> The only problem, so far as I can tell, is that combining
>> characters which occur in some languages (i.e. there are
>> multiple character objects which are displayed as a single
>> glyph or whatever you want to call it) confuse the pretty
>> printer, since their size on the display isn't any simple
>> function of the number of characters.
There is a unicode normalization scheme that's supposed to combine all
of the combining characters into one code point, if possible. Don't
know if that will help in the general case, though.
Ray