How to properly set up Windows for KOI8-R

It is commendable that some programs support KOI8-R<->CP1251 translation automatically, but:

  1. Such programs are very rare and a lot of interesting Internet software is unaware about the necessary decoding.
  2. Emulating KOI8-R via CP1251 can't be complete because character repertoires are different. Properly done, this would require UNICODE intermediation.

In this situation, it would be useful to have KOI8-R as the separate Code Page 878 (officially registered by IBM) for Windows until some critical mass of decoding programs is reached.

As a matter of fact, we don't need KOI8-R fonts at all, as .TTF fonts from Microsoft are always in UNICODE, and we only need to make use of them. The only limitation of Win3.11 is that a single .TTF can't contain more than 256 character glyphs. The only thing to do is to add a KOI8-R -> UNICODE translation table as a resource to \Windows\System\gdi.exe. This resource is a simple array with 256 entries of word size: index is te ANSI code of character, value is the Unicode code.

It is RC_DATA with ID=1000 in American Win3.1x, while PanEuropean gdi.exe has that resource for some of CP125* code pages, controlled by a system.ini statement:

 [boot] wincodepage= 
for Win3.1*. Currently Windows uses this resource to translate from CP1251 to UNICODE.

So, the proper way to handle KOI8-R for Win3.11 is not installing KOI8-R fonts, but running a program which can change ANSI -> UNICODE mapping to KOI8-R and restore the old values by request or a hot key.

If you understand what this stuff means and have an experience in Windows programming and have enough free time and inclination to write such a program, you can become a real hero saving lots of poor souls crying for help. Please contact me in this case.

This material is provided by Walter Kondrashov <Walt@gecko.crec.mipt.ru>, thanks to him.

See also the same issue for Win95, the same issue for WinNT.