Re: [Celestia-developers] Extended character support
Real-time 3D visualization of space
Status: Beta
Brought to you by:
cjlaurel
From: Christophe T. <ch...@te...> - 2004-01-01 10:18:25
|
Le Mercredi 31 D=C3=A9cembre 2003 22:04, Chris Laurel a =C3=A9crit : > I've produced a font with most of the WGL4 character set: > > http://www.cl.cam.ac.uk/~mgk25/ucs/wgl4.txt > > WGL4 is a superset of MES-1, and MES-1 has all characters in ISO 6937 plus > the euro sign. In addition, WGL4 has the full set of Cyrillic > characters as well as the PC extended character set (e.g. the line/box > drawing characters.) To make the Celestia subset of WGL4, I removed the > PC extended and Cyrillic characters, but left all the Greek letters (which > will be useful displaying Bayer designations.) > > First question: is this a reasonable subset? It seems fairly complete. It even has: =E2=82=A3 FRENCH FRANC SIGN Which I'd never seen before :-) > I've implemented UTF-8 decoding in Celestia with modifications to > texturefont.cpp and overlay.cpp, and I've tested the extended character > set by adding some hardcoded strings in celestiacore.cpp (the C string > "\302\260" encodes U+00B0, the degree sign--nice for showing the FOV.) > But, how should UTF-8 characters be specified in Celestia data files? My > idea is that we should define some string escape sequences that will be > expanded by the tokenizer. Perhaps \uxxxx, where the xs are hex digits > for the desired Unicode glyph? A sample location definition using this > form: > > Location "\u00c4gr\u00f6i" "Sol/Jupiter/Callisto" > > (00c4 is a capital A with a diaresis; 00f6 is a lowercase o with a > diaresis; the name without diacritical marks is "Agroi") > > Is there some other standard Unicode escape sequence? Why simply not use UTF-8 in the file (=C3=84gr=C3=B6i)? Most text editors a= llow you to=20 save a file in UTF-8. I don't see the need to keep the files strictly=20 7bit-ASCII and use escape sequence since UTF8 is ASCII compatible, escape=20 sequences will be a pain to enter _and_ read. We also need to implement a normalization function, as I said I already hav= e=20 some C++ code that does that, I can dig it out. Or we can use a simple=20 look-up table since WGL is not that large. Happy New Year! =2D- Christophe |