Однажды я стал читать руководство к текстовому редактору Emacs и очень удивился стилю изложения. Руководство было написано с расчетом, что пользователь не имел раньше дела с текстовыми редакторами. Поэтому там говорилось об основах, постепенно переходя к деталям. Я предполагаю, что пользователи TEA более сведущи в компьютерной грамоте, однако на всякий случай иногда буду доступно рассказывать о вещах, о которых чайник может не знать.
Например, оказывается, многие не знают разницы между текстовым редактором и текстовым процессором. К последним относятся, например, OpenOffice.org Writer и Microsoft Word. То есть это программы, которые позволяют вам использовать в документе различные шрифты, цвета и тому подобное. Это достигается за счет формата документов - способа хранения, который позволяет держать в одном и том же файле как текст, так и указания по его форматированию - шрифтам, отступам, цветам и так далее.
В отличие от текстовых процессоров, текстовые редакторы работают с обычным текстовым форматом. Его называют еще plain text - простой текст. Обычно такие файлы имеют расширение txt, но могут быть и с другими расширениями - смотря как используется файл. Обычный текст - это также веб-страницы, исходные коды программ, файлы настроек вроде ini.
Текстовые редакторы нужны веб-дизайнерам, программистам, простым пользователям для просмотра и работы с обычными текстовыми файлами. Обычный текстовый не зависит от операционной системы и программы, в которой вы работаете с этим файлом. Вы можете открыть текстовый файл в любом редакторе и спокойно работать. Кроме того, многие редакторы предоставляют дополнительные функции обработки текста - например, сортировку, уничтожение нежелательных отступов, составление словарей и так далее. Образно говоря, текстовые процессоры с бОльшим вниманием относятся к отображению текста, а редакторы - к самому тексту.
Но существует проблема кодировок. Пользователь сталкивается с ней, когда вместо текста видит крякозяблы. Это значит бессмысленный набор всяких значков и букв. Что такое кодировка символов? Для компьютера любая информация - это числа. Буквы тоже представлены в нем как числа. Каждая буква алфавита имеет свой номер. Номера эти не идут по порядку, то есть букве "а" не поставлен в соответствие первый номер. Более того, существует множество кодировок. И отличаются они тем, что в одной кодировке буква "а" (и любая другая буква) имеет другой номер, чем в иной кодировке.
Русских кодировок используется целых три. Это Windows 1251, KOI8-R и DOS 866. Windows 1251 наиболее распространена в системе Windows. Текстовый редактор Блокнот сохраняет документы именно в этой кодировке (если не указать другую). TEA (Win32) тоже использует Windows 1251 в качестве основной кодировки. KOI8-R более принята в системе Linux. Многие русскоязычные веб-страницы тоже сохранены в кодировке KOI8-R. Наконец, DOS 866 - это старая кодировка, которая отжила свое в конце 90-тых годов прошлого века. Нынче ее можно встретить в такой интересной сети, как Fidonet. Fidonet - это такая любительская сеть. С приходом Internet о Fidonet мало кто знает, но эта есть существует. TEA поддерживает все три кодировки.
В последнее время наблюдается переход всех и вся на более современную и универсальную кодировку - Unicode, а вернее, на ее разновидность - UTF-8. Зачем? Большинство прочих кодировок - восьмибитные. Например, та же Windows 1251. Что это значит? Это значит, что каждая буква в этой кодировке занимает 8 бит - то есть 1 байт. В одном байте может храниться число от 0 до 255. Это значит, что столько номеров букв может быть в кодировке Windows 1251.
Но ведь этого с лихвой достаточно для русского, украинского и английского алфавитов, скажете вы. Верно. В этих 256 номерах помещаются и буквы, и знаки препинания, и цифры. Но что, если вы захотите использовать в одном и том же документе, кроме русского, еще и китайский язык? А ведь в нем - тысячи иероглифов. Однако в кодировке Windows 1251 доступно только 256 номеров! Поэтому нужна кодировка, которая может вместить в себя множество алфавитов одновременно. Русский и старорусский, коптский и китайский, немецкий с умляутами и французский, испанский с перевернутым знаком вопроса, хирагана, катакана, алфавит индейцев чероки, армянский, грузинский, греческий, девангари, эфиопский, алфавиты старинные и современные. В UTF-8 под каждый символ, букву, отведено от одного до шести байт. То есть диапазон "номеров" широчайший - 281474976710656 номеров. Любые алфавиты влезут и еще место останется. Кроме алфавитов, в Unicode есть также знаки пунктуации и прочие символы - например, смайлики, солнышко, значок peace, математические символы.
Переход на Unicode - дело времени. В версии TEA для Linux, кодировка UTF-8 - основная, внутренняя. Windows-версия TEA тоже поддерживает UTF-8, однако по техническим причинам некоторые функции TEA не работают с UTF-8. В будущем этих функций станет, вероятно, меньше.
Я пытаюсь писать эти строки в то полуночное время, когда мой щенок Панк в ожесточенном азарте бегает по квартире. Прежде чем продолжить это предисловие, сделаю несколько замечаний о различных вариантах TEA.
Я разрабатываю два варианта TEA. Один для Linux, другой для Windows. Везде в этой документации, где не указана система, в которой работает редактор, подразумевается TEA для Windows. Полное название TEA для Windows - TEA (Win32). Полное название TEA для Linux - TEA для Linux.
TEA для Linux написан на языке С (Си) с использованием библиотек GTK+2, GtkSourceView, GnomeVFS, libgconf и aspell. TEA для Linux работает не только в Linux, но в таких системах, как FreeBSD, Darwin OS и других UNIX-подобных операционках. Интерфейс и документация TEA для Linux переведена на множество языков. Возможностей TEA для Linux гораздо больше, чем у его Windows-собрата. TEA для Linux распространяется под замечательной лицензией GPL, то есть исходные коды программы открыты и доступны для заимствования и изменения при условии соблюдения авторского права.
TEA (Win32) рассчитан только на отечественного пользователя. Поэтому интерфейс только русский и без возможности перевода на другие языки. Во многом по ряду технических причин. TEA (Win32) написан на языке Object Pascal (Delphi) с использованием библиотек, которые распространяются под лицензией MPL, а движок ввода и отображения текста - LGPL. Это значит, что TEA (Win32) построен на открытых технологиях (с оговоркой - исключая Delphi). Более того, написанные мною алгоритмы имеют статус общественного достояния - public domain. Это, грубо говоря, когда нет вообще никаких условий по использованию исходного кода - можете делать с ним что хотите, по совести. Возможно, кому-то нужны функции быстрой сортировки строк - их можно взять из исходников TEA. А кому-то просто интересно знать, как устроен текстовый редактор изнутри - тоже без проблем. Исходники со статусом "общественное достояние" не вступают в противоречие с лицензиями, будь то GPL или какая-нибудь закрытая коммерческая. Просто берите и используйте, а уж указывать источник кусков кода или не указывать - как считаете правильным.
Основной код TEA был написан примерно за месяц, под музыку Владимира Высоцкого, Pixies и The Fall.
Я выражаю благодарность людям, которые внесли в TEA свои идеи и тратили силы на тестирование. Первыми, кто начал работать с TEA (Win32), стали Светлана Семенова (кстати, если бы не нужная ей поддержка испанского языка, я бы забил на нормальную поддержку UTF-8 в TEA) и Иван Андронов (жесточайшее тестирование и идеи по превращению редактора в научный инструмент).