ЦеНеБлог

Grapt

« Про цей сайт / FAQ | | HTTP + FTP + BitTorrent + ... = ? »

27 грудня 2008

Grapt

Grapt - один із проектів-довгобудів (що ж зробиш, я ледачий), який, у випадку завершення його розробки й нелажної розкрутки, переверне світ :)

Отже, що це?

У початковому варіанті задуму, Grapt (GRAPhical Translit) - програма чи бібліотека програм для візуального відображення текстової інформації, у т.ч. зі складною структурою (математичні «багатоповерхові» формули, хімічні структурні формули, ноти та ін.), що вводиться з клавіатури і зберігається в системі у вигляді трансліту. При цьому трансліт є багатоалфавітним (можна додавати нові алфавіти символів і візуальних елементів), кількість алфавітів в одному тексті не обмежується, будь-яка введена інформація (від лінійного латинського тексту до структурних формул органічної хімії) вважається текстом. Зокрема, можливість розширювати набір алфавітів дозволяє використовувати власні саморобні символи поряд зі стандартними (будь-який опублікований алфавіт стає загальнодоступним для всіх). Однак, у той період я не починав щось робити - у мене були інші справи, а доступу до комп'ютера не було.

Подальший розвиток ідеї дещо змінив акценти початкового задуму. Тепер GRAPT (Global Registry of Alphabetical Portable Transliterations, можливі й інші розшифровки) не ставить за мету рендеринг нелінійних структур (хоча в майбутньому ця можливість може бути включена).
Особливості:

  • Текст при передачі чи збереженні кодується у вигляді транслітерації на базі основного набору ascii (коди 0…127). Визначення алфавіту (набору символів) здійснюється за допомогою міток у тексті (напр., &@ukr;Jakyjsj tekst означає Якийсь тект). Можливі два варіанти зберігання даних: Grapt7, що синтаксично нагадує html-кодування, і Grapt8 — більш компактний, замість &@-послідовностей та ascii-транслітерації використовуються символи з кодами 128…255. Прикладні програми використовують внутрішній формат, в якому відсутні мітки алфавітів, а символи, отримані з трансліту, представлені кількабайтними символами, що дозволяє оперувати з Grapt як зі звичайним текстом.
  • Мова опису алфавітів. Алфавіт — набір символів, кожен із яких має власну транслітерацію. При описі можна вказати спосіб відтворення кожного символа: засобами інших кодових таблиць, за допомогою шрифтів чи зображень, які розповсюджуються разом з алфавітом. Також можна використовувати макрозасоби (для більш компактного опису) і правила заміни (для надання транслітерованому текту більш читабельної форми).
  • Оскільки текст може передаватися з комп'ютера на комп'ютер, то необхідно забезпечити доступність алфавітів, які використовуються в ньому. Цим займається служба онлайн-публікації алфавітів. Якщо ж вказаний алфавіт із тих чи інших причин не може завантажитись, користувач побачить замість недоступних символів не квадратики, а транслітерацію. На відміну від Unicode, публікація Grapt-символа не потребує виділення фіксованої позиції в числовій таблиці, тому кожен користувач може вільно створювати власні символи — чекати рішення комісії для цього не треба. А оскільки графіка й шрифти можуть постачатись разом з алфавітом, це дає гарантію того, що новий символ можна буде прочитати на будь-якому комп'ютері, без ручного встановлення шрифтів, що підтримують даний символ.
  • Засоби вводу: можна написати спеціалізовану клавіатурну розкладку для будь-якого з алфавітів. А можна вводити текст безпосередньо у вигляді транслітерації — вона буде автоматично перетворюватись у текст з заданим набором символів. У найпростішому випадку, текст у форматі Grapt7 може набиратися в будь-якому текстовому редакторі у вигляді трансліту. Наступний крок — візуальний редактор (трансліт набирається в окремому текстовому полі й на льоту перетворюється в символи основного тексту — щось схоже на це). І, нарешті, використання Grapt як глобального метода вводу: в цьому варіанті, поле для вводу транслітерації розміщується окремо і може використовуватись для текстового вводу в будь-якій запущеній програмі (у т.ч., з деякими обмеженнями, в програмах, що не підтримують Grapt), підтримка Grapt-розкладок та ін.

В якому стані проект зараз?

Можна сказати, в нульовому. Вже є базовий модуль, що має забезпечувати перекодування символів між різними форматами, і модуль аналізу мови описів алфавітів (у процесі…). Алгоритм відображення тексту, спеціалізований текстовий редактор та служба публікації алфавітів ще не написані. Синтаксис розмітки транслітерації і опису алфавітів (проміжні етапи розробки) є у чорновиках (фізичний носій — два зошити в клітинку).

Автор: Python. Опубліковано 27 грудня 2008 10:01
Змінено 10 лютого 2010 13:04
Категорії: Сирі проекти