en EN   ru RU   uk UK

Головна

ОС A2

Знайомство

Локалізація

UDP-чат

Проксі-сервер

IFS

Демки

Ігри

Трасування променів

Екранна клавіатура

RegExp

ДРАКОН

Arduino

Програми

Утиліти

Посилання

Веб-майстру

Зв'язок з автором

Резюме


A2 Operating System & Active Oberon community in Telegram

A2 Operating System & Active Oberon community in Telegram

 
  Версія для друку

Підтримка національних кодувань в операційної системі A2


SAGE


В процесі програмування під цю чудову ОС у мене виникла ідея створити щось накшталт проекту по її локалізації. Необхідність в більше повноцінної підтримки кирилиці цієї ОС очевидна, а по ходу справи можуть виникнути певні напрацювання, по що називається "тюнингу" деяких аспектів реалізації ОС. Ось, власне ці самі напрацювання я і припускаю викладати на цієї сторінці. Деякі з напрацювань в надалі можуть перерости в окремі проекти. В Загалом, вітаються будь- пропозиції і побажання.

Що є в ОС A2 на сьогоднішній день?

В ОС A2 існує підтримка шрифтів Unicode, включають природно і символи кирилиці. Для відображення тексту в графічному інтерфейсі ОС використовується внутрішнє подання символів в UCS32. Тобто кожен символ тексту займає 4 байта пам'яті. Таке рішення абсолютно Не марнотратно, а є цілком логічним [1].

В ОС A2 існує можливість використовувати російську розкладку клавіатури (яка чомусь називається кириличної - Cyrillic). Для можливості використання цієї самої розкладки потрібно виконати команду:

WMCyrillicIME.Install~

Якщо необхідно щоб модуль розкладки довантажувати автоматично при завантаженні ОС, необхідно відкрити файл конфігурації Configuration.XML (для цього можна виконати команду Configuration з розділу меню System), і додати рядок:

в секцію Autostart. Після цього потрібно натиснути кнопку Store! в редакторі конфігурації і перезавантажити ОС.

Є альтернативний шлях змусити вступити зміни в силу, - виконати команду:

Configuration.Init~

Тепер, перебуваючи в вікні редактора, можна користуватися комбінацією клавіш Ctrl + Space для включення / виключення розкладки. Природно, для коректного відкриття / збереження наших файлів потрібно вказувати кодування UTF-8. Інебудете густо. неоходимости додавання в систему інших кодувань очевидна.

Підтримка однобайтових кириличних кодувань

На сьогоднішній день є велике кількість варіантів кодування символів кирилиці в різних ОС і в мережі Інтернет. Ситуація нагадує суп :) [2].

однобайтового кодові таблиці поки ще досить розповсюджені, оскільки дозволяють більше ефективно використовувати оперативну пам'ять і ємність різних інформаційних носіїв, а для Інтернет-ресурсів дозволяють підвищити швидкість завантаження сторінок (з сучасними ємностями запам'ятовуючих пристроїв і швидкостями Інтернет ці міркування вже Не так актуальні, особливо при наявності різних алгоритмитмов компресії даних).

Для забезпечення підтримки будь-якої нової кодування в ОС A2 досить визначити відповідні об'єкти "декодер" і "кодер" для даної кодування, і внести відповідні зміни в файл конфігурації Configuration.XML.

***
***

Оскільки символи тексту в A2 нутренне представлені в UCS32, завдання "декодера" складається в виконанні перетворення з вихідної кодування в UCS32, а "кодера" відповідно з UCS32 в відповідну цільову кодування.

Стандартні "кодери" і "декодери" ОС знаходяться в модулі TextUtilities.Mod. Мною запропонований модуль CyrillicUtilities.Mod, забезпечує підтримку кодувань CP1251, KOI8-R, KOI8-U, CP866 і ISO-8859-5.

Для реалізації декодера задається масив, щомістить коди символів в UCS32, індекс масиву відповідає коду символу в вихідної кодуванні. Для реалізації кодера такий спосіб вже Не підходить, і з метою підвищення ефективності алгоритму для кожної з кодувань створюється хеш-таблиця [3]. Розмір хеш-таблиць обраний виходячи з повного виключення колізій.

Все що потрібно зробити для обесеченія підтримки цих кодувань в системі, - потрібно скачати мій модуль, відкомпілювати його, відредагувати файл конфігурації і забезпечити вступ змін в силу перезавантаженням ОС або виконанням команди:

Configuration.Init~

Створення клавіатурних розкладок

Взявши за основу модуль WMCyrillicIME.Mod, і внісши незначні корективи, я створив модуль WMUkrainianIME.Mod для підтримки української розкладки клавіатури.

Для автоматичною завантаження необхідної розкладки клавіатури, можна додати в секцію Autostart файлу конфігурації Configuration.XML наступні сторокой:

***
*** ***

або

***
*** ***

Переключеніе розкладок здійснюється натисканням Ctrl + Space.

Установка шрифтів

В елементах GUI ОС A2 зазамовчуванням використовуються власні растрові шрифти, хоча і є модулі для роботи з шрифтами Open Type / True Type. Існує можливість замінити, наприклад, символи реєстрового шрифту Oberon на символи з будь-якого Open Type / True Type шрифту, наприклад Arial. Для цього необхідно скопіювати файли arial.ttf, ariali.ttf, arialbd.ttf і arialbi.ttf на розділ A2 і виконати наступні команди:

OpenTypeFonts.Make arial.ttf Oberon 8 10 12 14 16 20 24 Scn~
OpenTypeFonts.Make ariali.ttf Oberon i 8 10 12 14 16 20 24 Scn~
OpenTypeFonts.Make arialbd.ttf Oberon b 8 10 12 14 16 20 24 Scn~
OpenTypeFonts.Make arialbi.ttf Oberon bi 8 10 12 14 16 20 24 Scn~

Івонибудуть створені екранні (параметр Scn) шрифти всіх накреслень (звичайний, курсив, жирний і жирний курсив) розмірів: 8, 10, 12, 14, 16, 20 і 24.

Дана процедура, однак, в екранних шрифтах ОС Не додасть символи національних алфавітів оскільки, стандартні растрові шрифти A2 Не підтримують кодування Unicode, а для відображення цих символів використовується якийсь растровий шрифт, лежить в одному досить об'ємному файлі.

Якщо потрібно при підготовці текстових документів чітко вказати на необхідність використання системою певного Open Type / True Type шрифту, можна скопіювати файли цього шрифту на розділ A2 і визначити призначенідлякористувача текстові стилі AdHoc з явним зазначенням імені файлу цього шрифту.


Використані джерела:

[1] "Проблема кодувань": збіг обставин або стратегічний задум?.

[2] The Cyrillic Charset Soup.

[3] Algorithms and Data Structures. N. Wirth.





Тип

Ім'я

Розмір

Завантажень

zip

Sage.Cyrillic.zip

11 KiB

720

txt

Sage.Cyrillic.txt

2 KiB

740

mht

kod.mht

133 KiB

863

mht

cyrillic.mht

120 KiB

846

Дата останнього оновлення: 24-2-20 02:27:26


 

A2 Operating System & Active Oberon community in Telegram

A2 Operating System & Active Oberon community in Telegram

alt CodeTyphon

Copyright © 2005-2022 SAGE. Всі права захищено.