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 17:52] – 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 ===== | + | |
| - | * Map decoded unicode code point numbers to 8-bit indices of glyphs in font. | + | ===== Font rendering ===== |
| - | * 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?). |
| - | Mapping to 8-bit indices will utilize most of current fonts. Creating fonts would dramatically increase implementation cost. Modifying the renderer | + | 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's a little more tricky |
| - | \\ | + | This is still very premature. WIP. TBD. |
| - | ===== Implementation Plan ===== | + | |
| - | === Completed items === | + | ===== Integration ===== |
| - | * Implement manual integration test application for detecting whether syscons supports UTF-8. | + | |
| - | * 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 to screen). | + | |
| - | * Implement unicode-to-8-bit conversion map support. | + | |
| - | === Items in-progress === | + | In order to make integration into the operating system as easy as possible, we should at least make UTF-8 support a compile-time switch. Users/ |
| - | * Provide interface enabling user-mode applications to turn UTF-8 on or off. | ||
| - | * 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/ | ||
| - | |||
| - | \\ | ||
| ===== Testing ===== | ===== Testing ===== | ||
| - | To verify that the project has reached its goals and met all requirements performing the following | + | To verify that the project has reached its goals and met all requirements performing the following is necessary: |
| - | * [[SysconsUnicodeProject/DecodingUTF8SequencesOfVariousLengthTest|decoding UTF-8 sequences of various length]] | + | * performing all manual tests in /usr/src/ |
| - | * decoding incorrect sequences | + | |
| - | * rendering characters of various width | + | |
| - | * [[SysconsUnicodeProject/ReplacingCharactersThatAreMissingInCurrentFontTest|replacing characters that are missing in current font]] | + | |
| - | * [[SysconsUnicodeProject/SwitchingAFontTest|switching a font]] | + | |
| - | * switching a keyboard input map | + | |
| * verifying font correctness (for each added/ | * verifying font correctness (for each added/ | ||
| * verifying keyboard input map correctness (for each added/ | * verifying keyboard input map correctness (for each added/ | ||
| Line 76: | Line 60: | ||
| * verifying keyboard input map catalog completness | * verifying keyboard input map catalog completness | ||
| - | \\ | + | ---- |
| - | ===== Project Contributors ===== | + | |
| - | [[AlexanderChuranov|Alexander Churanov]] | + | {{tag> |