Java speaks Russian


Everything I am going to talk about here is applicable to JDK not earlier than 1.1 and the browsers that support 1.1. I checked everything with JDK 1.1.3. As far as I know Netscape 4.02 does support it, although by the time of writing (September 1997) the support exists only for the win32 version of Netscape. Some claim Microsoft Internet Explorer does it as well but it is still very vague to me.
So, you got a fresh JDK distribution. Go to JAVA_HOME/lib. See the file font.properties? Good. Now, forget about font.properties.ru that is also there. It's useless becauase it thinks you are using ISO-8859-5 which none ever saw really alive. font.properties.ru controls what JDK knows about the fonts. One thing has to be clarified: you do not necessaraly need to do Unicode <-> KOI-8 translation!. You can pick up my font.properties file. If your browser supports 1.1, there should be font.properties somewhere as well. After you are done with this, try a little toy. You should see a Russian text in the window. More on this is in Sun's JDK 1.1 on-line documentation.
Now, something more serious, namely Unicode. Currently, X11 does not support Unicode. It means that all the fonts have to be converted. If you look at the font.properties you just downloaded, you will see lines
	fontcharset.serif.0=koi8.converter.CharToByteKOI8_R 
	fontcharset.sansserif.0=koi8.converter.CharToByteKOI8_R
	fontcharset.monospaced.0=koi8.converter.CharToByteKOI8_R
	fontcharset.dialog.0=koi8.converter.CharToByteKOI8_R
	fontcharset.dialoginput.0=sun.io.CharToByteKOI8_R
which tell JVM how to convert. This is supposed to be done in the package koi8. This package it not written yet: I still can't scratch time to get it done. If anyone wants to do it before me, please, drop me a line. I would like this to be implemented in the following way:
	package koi8.converter;
        import sun.io.CharToByte8859_1;
	
        public class CharToByteKOI8_R extends sun.io.CharToByte8859_1 {
	
	    public boolean canConvert(char ch) {
	    	...
	    }
	    public int convert(char[] input, int inStart, int inEnd,
	                       byte[] output, int outStart, int outEnd)
		       throws ConversionBufferFullException; {
		...
	    }
	    public String toString() { return "KOI8_R"; }
	}
I was not able to write this on-a-fly because I could not find how sun.io is implemented, and I was told that Sun will not release source code for this package.