Differences
This shows you the differences between two versions of the page.
| Both sides previous revision Previous revision Next revision | Previous revision | ||
| sysconsunicodeproject [2009/01/20 15:41] – AlexanderChuranov | sysconsunicodeproject [2022/09/19 01:34] (current) – Remove ACL: not devs only for a long time, all:read is already default KubilayKocak | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| ====== SysconsUnicodeProject ====== | ====== SysconsUnicodeProject ====== | ||
| - | For any reader not familiar with unicode, reading [[SysconsUnicodeProject/ | + | For any reader not familiar with Unicode, reading [[SysconsUnicodeProject/ |
| - | This project aims to enhance | + | This project aims to enhance |
| - | The project started on August 23, 2008 and is not finished yet. | + | ===== News ===== |
| - | Many project decisions originate from [[http:// | + | * 23/08/2008: Project initiated by Alexander Churanov. See [[http:// |
| + | * 01/01/2009: Syscons terminal emulator replaced | ||
| + | * 29/01/2009: The implementation of unicode maps, that allow using existing fonts in UTF-8 mode was created by Alexander Churanov. | ||
| + | * 04/08/2009: Unicode support | ||
| - | \\ | + | ===== TODO ===== |
| - | ===== Goals ===== | + | |
| - | * Provide | + | ^ Description ^ Assigned to ^ Status ^ |
| + | | Make terminal emulator | ||
| + | | Implement unicode-to-8-bit mapper | ||
| + | | UTF-8 aware input layer, keymaps. | Ed | Semi-done | | ||
| + | | UTF-8 aware font renderer | Ed | TBD | | ||
| + | | Unicode fonts, not limited to 256 chars | Alexander | TBD, not scheduled | | ||
| - | \\ | + | ===== Terminal emulator |
| - | ===== Requirements | + | The old terminal renderer used by Syscons is not suitable to use with UTF-8. Right now we use a terminal type called '' |
| - | * UTF-8 i/o mode should be optional. | + | * At least on %%FreeBSD%%, |
| - | * Full range of unicode characters according | + | * '' |
| - | * Driver should respect character width. | + | * '' |
| - | * Console driver should be correct. New code should be robust | + | |
| - | Details: | + | This is why we should migrate to '' |
| - | Ability to turn UTF-8 i/o mode on and off is necessary, because at the time of this writing other components of operation system are not unicode-compliant in full. And it's not clear whether syscons | + | As of 01/01/2009, the old Syscons emulator has been replaced by libteken. libteken |
| - | Support for the full range of unicode code points is necessary, because Unicode 5.0 specification was published 3 years ago and not complying | + | If you want to try the new '' |
| - | Console Driver should respect at least normal and double character width. It's allowed to insert spaces for making character of normal width look like a double-width char. | + | ===== Input layer ===== |
| - | \\ | + | Right now the input layer only has 8-bit keymaps. This should be changed to Unicode. XXX: Extend. |
| - | ===== Implementation Decisions ===== | + | |
| - | * Copy UTF-8 encoder and decoder from IBM ICU libray. | + | ===== Font rendering ===== |
| - | * Transcode application output to selected 8-bit charset when producing output to screen. | + | |
| - | * Create unit-tests for new code. Create manual integration tests for cases where writing unit-tests is currently impossible. | + | |
| - | Rationale: | + | Because Syscons (and the hardware!) is restricted to 8-bit fontmaps, we should add a Unicode-to-8-bit fontmap conversion. An advantage is that we should be able to display exactly 256 different characters now, instead of 240-250 (not sure). We could even map multiple Unicode characters to the same graphical character (German Eszett and Beta?). |
| - | Using IBM ICU is permitted by license. The code is already tested for correctness. It' | + | We could consider writing only a very small amount of fonts and some kind of file format, describing which characters should be included in the 8-bit map. This means we can generate a lot of fontmaps. I guess it' |
| - | Transcoding to 8-bit will utilize most of current screenmaps, keymaps and fonts. Creating new maps and fonts would dramatically increase implementation cost. Modifying the renderer to support more than 256 characters at time can be handled as a separate task. | + | This is still very premature. WIP. TBD. |
| - | \\ | + | ===== Integration |
| - | ===== Implementation Plan ===== | + | |
| - | === Completed items === | + | In order to make integration |
| - | * Implement manual | + | |
| - | * Implement UTF-8 decoder. | + | |
| - | * Implement UTF-8 encoder. | + | |
| - | * Enhance kernel data structures and code logic for turning UTF-8 mode on and off on demand. | + | |
| - | * Connect UTF-8 decoder with syscons (process application output | + | |
| - | * Implement unicode-to-8-bit conversion map support. | + | |
| - | === Items in-progress | + | ===== Testing ===== |
| - | * Provide interface enabling user-mode applications to turn UTF-8 on or off. | + | To verify that the project has reached its goals and met all requirements performing the following is necessary: |
| - | * Connect UTF-8 encoder with syscons (process application input - keystrokes). | + | |
| - | * Implement keyboard-to-unicode conversion map support. | + | |
| - | * Implement interface enabling user-mode applications to load and select keyboard-to-unicode conversion map. | + | |
| - | * Implement interface enabling user-mode applications to load and select unicode-to-8-bit conversion map. | + | |
| - | * Enhance user-mode applications to utilize provided APIs for turning UTF-8 on and off and loading/ | + | |
| - | \\ | + | * performing all manual tests in / |
| - | ===== Project Contributors ===== | + | * verifying font correctness (for each added/ |
| + | * verifying keyboard input map correctness (for each added/ | ||
| + | * verifying font catalog completness | ||
| + | * verifying keyboard input map catalog completness | ||
| - | [[AlexanderChuranov|Alexander Churanov]] | + | ---- |
| + | |||
| + | {{tag> | ||