Букреев Анатолий : другие произведения.

Тикс

Самиздат: [Регистрация] [Найти] [Рейтинги] [Обсуждения] [Новинки] [Обзоры] [Помощь|Техвопросы]
Ссылки:



  Терминалы и кодовые страницы
  terminal screen and code page
  
   Прочитал статью:
   "Чего не было в кодировках и до чего до сих пор так и не додумались"
   Газета "Компьютерные вести", kv.by/index2010133801.htm Издание 3-е, исправленное и дополненное.
   Дмитрий Тюрин, DmitryTurin.narod.ru
   и накатила ностальгия... Чего только не выдумывали мы на дежурствах, глядя (таращась) на дисплеи.
  Но сначала немного теории
  
  Вся наша жизнь - игра (субъектов с объектами)...
  
   Человек(субъект) -существо (иногда разумное) стайное, клановое, родовое, племенное, национальное(языкастое). Живёт в мире объектов на большом объекте, называемом Земля. Чтобы выжить он должен принимать большой объём информации(сведений) об окружающем мире и быстро-быстро анализировать(фильтровать) и реагировать. В частности обругать соседа за неверные действия в отношении себя (любимого), т. е. передать ему информацию(сообщение)...
   Для сего у него есть чувства и органы к ним:
   1. Осязание -тактильное??? - механический контакт с объектом(кулаком в глаз...! Раз...!)
   2. Запах (что-то можно съесть...?)
   3. Слух - воспринимать звуки и аппарат производства звуков(рот во-обще-то для еды, а гортань - для звуков)
   4. Зрение
   5. другие - иногда говорят 5-ой точкой чует...
   Механический контакт - Осязание - определяет длину линии связи равной нулю(0) или руки/ноги. Скорость и объём информации(и качества) низкие (не все-егда-а...). Носитель информации (приёмник) чаще всего кожа человека. Есть сведения, что многие могут видеть руками/кожей, но объём очень мал и качество(разборчивость) низкая.
   Запах может обнаруживаться далеко за пределами видимости его источника, но линия связи чаще - десяток метров. Скорость зависит от носителя - молекул воздуха в основном - очень низкая и неустойчивая. Объём м.б. достаточно большим, но фильтрация(анализ) затруднён. Сохранность информации на носителе небольшая.
   Звуковой носитель тоже воздух(смесь газов), вода, камень, но природа звука - колебания материи носителя - даёт ряд особенностей. Линия связи может иметь большую длину(а канал связи - ещё больше - пример: барабанная связь на сотни километров, как в "Драконы Перна" Макферсон). Частота разная, т. е. фильтрация(анализ) быстрее, объём значителен, качество лучше. Скорость определяется носителем и тоже значительна (330 м/сек в воздухе, в воде выше, в земле по разному). Прекрасно для оперативной (одномоментной) информации, но не сохраняется на носителе(нет долговременной сохранности).
   Зрение даёт - по некоторым оценкам - до 90% жизненно важной информации для выживания субъекта. Носитель - световые колебания в видимой области спектра плюс скорость распространения плюс частота колебаний - огромный объём информации, хорошая фильтрация(анализ). Большие линии связи, канал связи ещё больше. Сохраняемость на материальном носителе изображений почти вечная, т. е. канал связи между субъектами не только по расстоянию, но и по времени их жизни. Недостатки - непрозрачное препятствие на линии связи нарушает прохождение информации, затрудняет/прекращает в тёмное время суток.
   Повседневная жизнь требовала постоянного обмена информацией по каналам связи между субъектами и как следствие в стаях, кланах, родах, племенах людей появился язык общения. По мере создания множества каналов связи язык абстрагировался и формализовался для разных условий существования. Гениальная догадка связать вместе Изображение и Языковые конструкции(структуры) создало символьный алфавит (ограниченный набор звуков-символов) и иероглифы (изображения целых смысловых фраз). Это позволило не только обмениваться информацией на дальние расстояния, но и сохранять её для потомков (т. е. компенсировать недостатки достоинствами всех чувств).
   Письменный обмен информацией на базе алфавита и обучение языку оказались более гибкими по сравнению с иероглифами, хотя требования к субъекту более жесткие.
   Выживание в мире современных объектов потребовало обмен информацией между субъектами на разных языках с использованием разных систем отображения(кодирования) информации.
  
   Фу-ух!! Сам не ожидал таких экскурсов (или эскурсий?) в далёкое прошлое.
  Перейдём к ближней (уже) истории.
  
  Дятел - это не только птичка, но и ....
  
   Код Морзе и аппарат Бодо, его дальнейшее развитие - телеграфный аппарат - фактический первый (и единственный) терминал(консоль) для ввода-вывода информации ( и команд) в первые( и последующие) ЭВМ, ПК, игровые консоли, суперкомпьютеры. На помощь, прежде всего для работы с графической информацией, созданы мышка, трекбол, тачпад, а для замены в компактных устройствах - сенсорный экран (дави на то, что видишь)!!. Но клавиатура - главный компонент ПК для ввода команд и информации. А экран - главное устройство вывода изображений символов (аналог всегда очищаемой бумаги).
   К терминалам всевозможных видов настолько привыкли, что уже не замечают их присутствия в повседневной жизни (кроме банкоматов...!!! матом их... матом!!).
  Рассмотрим хорошо знакомый всем связистам телеграфный аппарат СТА-2, СТА-67 года издания (ленточный) и телетайп Т-100. Всего 10-20 лет назад распространённый способ документированной связи.
  
  
  Телеграфный аппарат СТА-67 Wikipedia
  
   А вот здесь более наглядно пишущий (печатающий) механизм СТА.
  Телеграфный аппарат СТА-67 мгу mgu
   Это более продвинутый рулонный аппарат с доп. клавишами и набором номера в телетайпной сети мира, перфоратором и трансмиттером.
  ТА F2000-1м WWW
  
   Здесь уже терминал, на электронной базе, а не механической с электроприводом. Terminal-dec-vt420 Wikipedia ClickRick
   Уже похож на ПК. Разница только в возможностях обработки информации - здесь более узкоспециализированная(дешёвая).
  МТК-2
  
  Материал из Википедии - свободной энциклопедии
  
  Десятич-
  ный код
  
  Двоичный
  код
  
  Лат.
  
  Рус.
  
  Циф.
  
  24
  
  11000
  
  A
  
  А
  
  -
  
  19
  
  10011
  
  B
  
  Б
  
   ?
  
  14
  
  01110
  
  C
  
  Ц
  
   :
  
  18
  
  10010
  
  D
  
  Д
  
  Кто там?
  
  16
  
  10000
  
  E
  
  Е
  
  З
  
  22
  
  10110
  
  F
  
  Ф
  
  Э
  
  11
  
  01011
  
  G
  
  Г
  
  Ш
  
  5
  
  00101
  
  H
  
  Х
  
  Щ
  
  12
  
  01100
  
  I
  
  И
  
  8
  
  26
  
  11010
  
  J
  
  Й
  
  Ю
  
  30
  
  11110
  
  K
  
  К
  
  (
  
  9
  
  01001
  
  L
  
  Л
  
  )
  
  7
  
  00111
  
  M
  
  М
  
  .
  
  6
  
  00110
  
  N
  
  Н
  
  ,
  
  3
  
  00011
  
  O
  
  О
  
  9
  
  13
  
  01101
  
  P
  
  П
  
  0
  
  29
  
  11101
  
  Q
  
  Я
  
  1
  
  10
  
  01010
  
  R
  
  Р
  
  4
  
  20
  
  10100
  
  S
  
  С
  
  '
  
  1
  
  00001
  
  T
  
  Т
  
  5
  
  28
  
  11100
  
  U
  
  У
  
  7
  
  15
  
  01111
  
  V
  
  Ж
  
  =
  
  25
  
  11001
  
  W
  
  В
  
  2
  
  23
  
  10111
  
  X
  
  Ь
  
  /
  
  21
  
  10101
  
  Y
  
  Ы
  
  6
  
  17
  
  10001
  
  Z
  
  З
  
  +
  
  2
  
  00010
  
  Возврат каретки
  
  8
  
  01000
  
  Перевод строки
  
  31
  
  11111
  
  Буквы латинские
  
  27
  
  11011
  
  Цифры
  
  4
  
  00100
  
  Пробел
  
  0
  
  00000
  
  Буквы русские
  
  Телеграфный трёхрегистровый код МТК-2 был принят в СССР в 1963 году. Код 5-битовый (всего 32 разных кода), поэтому используются 3 разных регистра (русский, латинский, цифры), переключаемые управляющими символами РУС, ЛАТ, ЦИФ. Букв Ъ и Ё нет; вместо буквы Ч использовали цифру 4.
  
  МТК-2 основан на международном телеграфном коде ? 2 (ITA2), рекомендованном Международным консультативным комитетом по телефонии и телеграфии в 1932 году (в международном коде 00000 не используется).
  
  Соответствие между английским и русским регистрами, принятое в МТК-2, было использовано при создании компьютерных кодировок КОИ-7 и КОИ-8.
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  Использование 5-и битного кода наложило ряд ограничений по объёму передаваемой информации - 32 возможных кода при наличии алфавита с большим количеством символов, большое количество знаков препинания, специальных(денежных единиц и т. п.). Для решения применили Управляющие коды:
  
  31 Буквы латинские,
  
  27 Цифры,
  
  0 Буквы русские,
  
  4 Пробел
  
  2 Возврат каретки,
  
  8 Перевод строки,
  
  Первые три кода - это переключатели (регистров) таблиц отображения символов разных алфавитов, три других -действуют для всех наборов символов как форматирование печатного текста на рулоне(листе) бумаги.
  
  Всё. Это все управляющие коды для 32 битовой кодовой последовательности. В результате (32-6=26) * 3 = 78 знаков - печатаемых(отображаемых) символов для 2х алфавитов и 1 набора знаков. Причём часть русских букв поместили в таблицу знаков - не помещались в русской. А часть символов дублируется для уменьшения переключений таблиц (АЕКОТ).
  
  Сравните с набором управляющих кодов электронных терминалов ЭВМ (полностью в приложениях в конце текста).
  
  В КОИ-7 коды от 000 до 037 являются управляющими. VT50 отрабатывает шесть из них:
  Octal Action
  007 звонок
  010 курсор влево
  011 горизонтальная табуляция. Позиционирует курсор на следующую кратную 8 позицию, если она не более, чем 72-я. Далее - на каждую последующую.
  012 перевод строки. Опускает курсор на одну строку.
  015 возврат каретки. Курсор до упора влево.
  033 переводит терминал в ESCape-моду. Если он уже в ESC-моде, то переводит обратно в нормальную моду (режим). После перехода в ESC-моду следующий принятый код рассматривается как команда.
  
  А вот работа клавиш терминала - не кодов. Это просто управление и редактирование текста, т. е. форматирование вывода для облегчения восприятия субъектом.
  
  Клавиша "BREAK" подвешивает линию в "0" пока нажата. Введена для совместимости с программным обеспечением, написанным под полудуплекс.
  Клавиша "REPEAT" разрешает авто-повтор нажатого символа.
  Клавиши "SHIFT" изменяют текущий верхний/нижний регистр на
  противоположный, пока нажаты.
  Клавиша "CAPS LOCK" фиксирует верхний регистр независимо от нажатия клавиш переключения регистров, но только для букв.
  Клавиша "CONTROL" обнуляет два старших бита каждой нажимаемой (при нажатой "CONTROL") клавиши и вызывает передачу в линию кодов 000-037 (управляющих).
  
  Клавиша SCROLL имеет смысл только в моде задержанного вывода. Разрешает скроллинг (прокрутку) одной строки либо всего экрана. В случае заполнения доступной части экрана, потребности вывести еще строку и задержанном выводе дисплей выдаст код XOFF (023) для торможения программы вывода. Для продолжения обмена посылается код XON (021).
  
  Сравните с Кодировкой символов ASCII:
  -------------------------
  
  Img
  
  SYM
  
  NAME
  
  HEX
  
  OCT
  
  DEC
  
  
  
  
  
  NIL
  
  00
  
  000
  
  0
  
  Нуль-не используется
  
  
  
  ^A
  
  SON
  
  01
  
  001
  
  1
  
  Начало заголовка
  
  
  
  ^B
  
  STX
  
  02
  
  002
  
  2
  
  Начало текста
  
  
  
  ^C
  
  ETX
  
  03
  
  003
  
  3
  
  Конец текста
  
  
  
  ^D
  
  EOT
  
  04
  
  004
  
  4
  
  Конец передачи
  
  
  
  ^E
  
  ENQ
  
  05
  
  005
  
  5
  
  Запрос
  
  
  
  ^F
  
  ACK
  
  06
  
  006
  
  6
  
  Квитирование
  
  
  
  ^G
  
  BEL
  
  07
  
  007
  
  7
  
  Звонок
  
  
  
  ^H
  
  BS
  
  08
  
  010
  
  8
  
  Возврат на одну позицию
  
  
  
  ^I
  
  HT
  
  09
  
  011
  
  9
  
  Горизонтальная табуляция
  
  
  
  ^J
  
  LF
  
  0A
  
  012
  
  10
  
  Перевод строки
  
  
  
  ^K
  
  VT
  
  0B
  
  013
  
  11
  
  Вертикальная табуляция
  
  
  
  ^L
  
  FF
  
  0C
  
  014
  
  12
  
  Подачи формы
  
  
  
  ^M
  
  CR
  
  0D
  
  015
  
  13
  
  Возврат каретки
  
  
  
  ^N
  
  SO
  
  0E
  
  016
  
  14
  
  Сдвиг с исключением
  
  
  
  ^O
  
  SI
  
  0F
  
  017
  
  15
  
  Сдвиг с включением
  
  
  
  ^P
  
  DLE
  
  10
  
  020
  
  16
  
  Escape знак для канала передачи
  
  
  
  ^Q
  
  DC1
  
  11
  
  021
  
  17
  
  Управление устройством 1
  
  
  
  ^R
  
  DC2
  
  12
  
  022
  
  18
  
  Управление устройством 2
  
  
  
  ^S
  
  DC3
  
  13
  
  023
  
  19
  
  Управление устройством 3
  
  
  
  ^T
  
  DC4
  
  14
  
  024
  
  20
  
  Управление устройством 4
  
  
  
  ^U
  
  NAK
  
  15
  
  025
  
  21
  
  Отрицательное квитирование
  
  
  
  ^V
  
  SYN
  
  16
  
  026
  
  22
  
  Синхронизирующее ожидание
  
  
  
  ^W
  
  ETB
  
  17
  
  027
  
  23
  
  Конец передаваемого блока
  
  
  
  ^X
  
  CAN
  
  18
  
  030
  
  24
  
  Отменить
  
  
  
  ^Y
  
  EM
  
  19
  
  031
  
  25
  
  Конец носителя
  
  
  
  ^Z
  
  SUB
  
  1A
  
  032
  
  26
  
  Заменить
  
  
  
  ^[
  
  ESC
  
  1B
  
  033
  
  27
  
  Escape - код-переключатель
  
  
  
  ^\
  
  FS
  
  1С
  
  034
  
  28
  
  Разделитель файлов
  
  
  
  ^]
  
  GS
  
  1D
  
  035
  
  29
  
  Разделитель групп
  
  
  
  ^^
  
  RS
  
  1E
  
  036
  
  30
  
  Разделитель записей
  
  
  
  ^_
  
  US
  
  1F`
  
  037
  
  31
  
  Разделитель элементов
  
  
  
  
  BLANK
  
  20
  
  040
  
  32
  
  Пробел
  
  
  Latin-1 IBM
  
  Чётко видно, что перетащены кодировки из терминалов для управления работой самого терминала(ПК) и управления удалённым устройством и дополнительно для форматирования вывода на экран печатаемых символов.
  
  Кодовые страницы и управление выводом.
  
  Документ без заголовка и подписи - как человек без головы...
  
  Сравните заголовки 2-х наиболее распространённых форматов текстовых документов в наше время.
  
  "http://www.w3.org/TR/html4/strict.dtd">
  
  
  charset=US-ASCII">
  XML
  
  encoding="UTF-8"?>
  
  
  Что общего с телеграфным способом управления кодовой таблицей?
  
  
  
  В глаза кидается два момента:
  
  
  
  
  
   по-умолчанию всегда используется одна и та же кодовая таблица
  
  
  
  
  
  
   явно указывается таблица кодировка вывода символов - код-переключатель в тексте документа (для телеграфа РУС-ЛАТ-ЦИФРЫ).
  
  
  
  
  
  
  Выделим ОДИН код для указания(управления) таблицами кодов вывода печатаемых символов на экран(лист). Обозначим его 2-мя буквами CP(Code Page, иногда Char set). Для номера
  таблиц выделим 2 байта = 1 слову = 16 битам, всего до 65К таблиц по (256 - N) символов для одно-байтной кодировки, всего получим почти 16 миллионов символов.
  
  
  
  Тогда любой текст будет начинаться с кода CP и номера таблицы вывода (отображаемых) символов. Номера таблиц 0000 и FFFF - запретим. Комбинация BOM для Unicode не нужна.
  
  
  
  На экране будет выглядеть так:
  
  
  
  Это основная ТАБЛИЦА
  
  
  
  В файле текста увидим (в кодовом режиме):
  
  
  
  
  CP 00 01 Sh э т о о с н о в н а я CL т а б л и ц а End
  
  
  
  
  Тот же результат можно получить таким образом:
  
  
  
  
  CP 00 01 Sh э т о о с н о в н а я Sh т Sh а Sh б Sh л Sh и Sh ц Sh а
  
  
  
  
  Sh ( SHIFT) - это код-модификатор текста(символа) указывает, что следующий символ должен отображаться как БОЛЬШОЙ/заглавный, т. е. из той половины таблицы изображений символов, где те же символы отображаются на выводе БОЛЬШИМИ(заглавными). Фактически для вывода символов требуется минимум 2(две) таблицы - с изображениями маленьких(строчных) и БОЛЬШИХ(заглавных-прописных) символов. Sh - это код-переключатель таблиц отображения для одного символа из одной кодовой таблицы.
  
  
  
  коды
  
  00
  
  1F
  
  FE
  
  малые
  
  а
  
  б
  
  ю
  
  я
  
  БОЛЬШИЕ
  
  А
  
  Б
  
  Ю
  
  Я
  
  
  
  
  CL - это код-модификатор указывает, что последующие символы
  должны отображаться как БОЛЬШОЙ/заглавный до появления следующего кода CL(Caps Lock -можно UC -Upper Case), который переключит на вывод из таблицы изображений малых символов. Дмитрий Тюрин, DmitryTurin.narod.ru предлагает ограничить действие пробелом - печатаемым символом практически во всех страницах. Я предлагаю ограничить эту область
  отдельным кодом LC(Lower Case) или End (кодом-признаком окончания блока) для однозначности форматирования текста, ведь БОЛЬШИЕ символы м.б. во всей строке, пробелы внутри строки и ограничение символами разделителями типа (.) точка. Это блок выделения текста и признак конца любого блока форматирования.
  
  
  
  
  CP 00 01 Sh э т о о с н о в н а я CL т а б л и ц а LС
  
  
  
  
  CP 00 01 Sh э т о о с н о в н а я CL т а б л и ц а End
  
  
  
  
  Любой символ из другой таблицы потребует на себя 4 байта, но уже строка резко уменьшит расходы. Смесь одиночных символов даёт самый большой расход - по 4 байта на символ, т. е. 4 раза объём увеличится. Для 2-язычных текстов, математических, химических и т. п. увеличение объёма не больше 15-20%.
  
  
  
  Псевдографика для рисования таблиц, заполнение знакоместа тенью разной степенью насыщенности, дополнительные знаки денежных единиц и математики и т. п. сами просятся в таблицу кодировки 002, как наиболее востребованные.
  
  
  
  К обязательным управляющим кодам должен относится отдельный код переключения на 2-байтную таблицу символов и обратно. Это для тех наборов символов, количество которых больше возможных в
  (256-N) страницах кодировки, прежде всего иероглифы. Но можно для номеров таблиц начиная с NNN
  определить свои правила отображения и управляющие коды, т. е. со страницы 32500
  на-пример коды будут 2-х байтными и знакоместо иметь размеры Ширина*Высота другие. Отсюда псевдо-графика (таблицы, заполнение, тень) тоже свои.
  
  
  
  Если внимательно прочитать спецификацию Юникод, то обнаружим 17 таблиц 2-х байтовых кодов символов, которые называются плоскостями (планами), где нулевой - основной. Вот цитата:
  
  
  
  "Кодовое пространство разбито на 17 плоскостей по 216 (65536) символов. Нулевая плоскость называется базовой, в ней расположены символы наиболее употребительных письменностей. Первая плоскость используется, в основном, для исторических письменностей, вторая - для редко используемых иероглифов ККЯ, третья зарезервирована для архаичных китайских иероглифов[12].
  Плоскости 15 и 16 выделены для частного употребления.[7]"
  
  
  
  В принципе достаточно 1-го байта для номера кодовой таблицы. Начиная с N=220 на-пример, коды будут 2-х байтными и иметь свои правила отображения вывода. Это целых 35 таблиц с 2-х байтными символами, куда спокойно входят 17 таблиц уже существующих Unicode. Но моё личное мнение - 2 байта = 65K таблиц на будущее (не надо жадничать!!! Таблиц явно больше 255.)
  
  
  
  Украшения или необходимость
  
  
  
  
  Всё возвращается на круги своя...
  
  
  
  
  Я согласен с Дмитрием о РАСЦВЕТКЕ и модификации текста, типа верхних и нижних индексов, даже при работе с консолью. Многолетняя практика создания терминалов и терминальных программ подтвердила необходимость цветного выделения блока текста для улучшения восприятия. Смотрите приложение по терминалам в конце статьи.
  
  
  
  
  Исторически (технически) сложилось так, что под выводом на консоль или терминал подразумевают вывод символов моноширинных, т. е. ширина и высота знакоместа для
  символа постоянны. Чип CRTC Motorolav6845, графический сопроцессор 8514А не знакомы нынешним програмерам, но прекрасно известны программистам ДОС (VMS) со всеми их ограничениями в выводе изображения. Сложился ряд стандартов текстового и графического вывода. Знакоместо 8х8, 8х14, 8х16
  (фактически или аппаратно 9х16) пикселей. Стандарт 24 рядов на 80 знакомест = 1920 символов. Знакоместо (8х8) 10х8 пикселей даёт 240 строк развёртки на 640 точек по горизонтали. Или 25х80 = 2000 символов при разрешении экрана 250 строк на 640 точек.
  
  
  
  Расстояние между строками старались заложить сразу в высоту символьного знакоместа.
  
  
  
  Атрибут размер шрифта подразумевает, что аппаратно (жёстко) изменится размер знакоместа, т. е. фактически это уже (псевдо) графический режим терминала. Если учитывать ширину символов для вывода, то надо иметь таблицу размеров (хотя бы ширины) для каждого выводимого символа. Если учитывать высоту выводимого символа, то высота строки должна быть не меньше высоты самого большого символа. Для математических символов типа Интеграл надо учитывать ВСЕ следующие за ним коды-символы для построения ГРАФИческого изображения.
  
  
  
  Цвет символа (знакоместа) зависит от аппаратной реализации терминала (видеокарты) и в частном решении это байт-код символа и байт-атрибут цвета текста и фона экрана в месте вывода этого символа. Использование 3-х или 4-х байтного представления цвета в терминалах не имеет большого
  смысла, достаточно (как ранее) 1-байтного кода(атрибута), что даёт МИГАЮЩИЙ, Инверсный, Яркий и 32 цветную палитру для вывода символов. МИГАЮЩИЙ раньше применялся в монохромных режимах, сейчас смысла
  использовать его нет.
  
  
  
  Но с учётом цвета вывода символа и фона экрана количество цветов уменьшится до 16 из одного набора(палитры). Практика Веб-сайтов показывает, что многоцветье не требуется.
  
  
  
  Это м.б. блок с заголовком или "фракция" по терминологии Дмитрия. В любом случае наклонное и жирное начертание символов потребует две по две = 4(четыре) дополнительные таблицы отображения символов.
  А учитывая верхний и нижний индекс - ещё две как минимум.
  
  
  
  коды
  
  
  00
  
  1F
  
  FE
  
  Управл.
  
  малые
  
  1
  
  а
  
  б
  
  ю
  
  я
  
  БОЛЬШИЕ
  
  2
  
  А
  
  Б
  
  Ю
  
  Я
  
  Малые жирные
  
  3
  
  а
  
  б
  
  ю
  
  я
  
  БОЛЬШИЕ жирные
  
  4
  
  А
  
  Б
  
  Ю
  
  Я
  
  Малые наклон
  
  5
  
  а
  
  б
  
  ю
  
  я
  
  БОЛЬШИЕ наклон
  
  6
  
  А
  
  Б
  
  Ю
  
  Я
  
  Малые наклон жирные
  
  7
  
  а
  
  б
  
  ю
  
  я
  
  БОЛЬШИЕ наклон жирные
  
  8
  
  А
  
  Б
  
  Ю
  
  Я
  
  Малые верхний индекс
  
  9
  
  а
  
  б
  
  ю
  
  я
  
  Малые нижний индекс
  
  10
  
  а
  
  б
  
  ю
  
  я
  
  
  
  
  Вопрос - а нужны ли БОЛЬШИЕ верхние и нижние
  индексы? А тем более наклонные индексы ?
  
  
  
  Итого уже 10 таблиц начертаний символов для вывода на экран(лист). 16 байт на символ по 256 знаков и 10 таблиц равно 40 КБ памяти. Пока не много и терпимо.
  
  
  
  Подчёркнутый, надчёркнутый, зачёркнутый м.б. реализовано по-разному - графически наложением поверх символа, т.е. модификация существующего символа при выводе отображения. По-моему это предпочтительнее. Но требует постоянных дополнительных кодов для этих модификаторов. Зато позволяет управлять одиночными символами. (ИМХО По моему личному мнению - не нужно). Но вот полную строку в верхнем или нижнем индексе, наподобие Caps Lock (БОЛЬШИЕ) не выведешь без удвоения размера, а тем более нельзя вывести друг над другом 2 строки в верхнем и нижнем индексе или вложенные субиндексы, на-пример:
  
  
  
  
  ААА
  Верхний индекс kj
  
  Нижний индекс f n
  
  
  
  
  
  
  
  Это одно ограничение терминального вывода (моноширинных символов). Сложные формулы тем более требуют оформление графической картинки вывода. Здесь требуется свой стандарт текстовой записи выражений и их интерпретации при выводе на экран. Примерно так, как сделано в LibreOficce. Тут можно использовать блок Esc-команд. Но вот вопрос - нужно ли усложнять терминал для обработки сложных математических (химических и т. п.) формул? Возможно этот модуль обработки (математических выражений в картинку) потребуется менее 0.1% случаев. Вложенность скобок для много-этажных формул могут вызвать переполнение экрана, поэтому какой-то предел должен быть. Практика поможет ответить на эти вопросы (хотя и с руганью э... споритьмами).
  
  
  
  
  "Фракция" или блок с заголовком более универсальное решение, т. к. одиночный символ расцвечивается реже, чем слово(литерал). Практически это подвид ESC-моде для терминалов, раньше драйвер ANSI широко применялся в ДОС системах. Возможен модуль обработки в графический рисунок, который будет вставлен в разрыв текста на экране вывода.
  
  
  
  Рассмотрим "фракцию" Дмитрия (фактически блок форматирования)
  
  
  
  Начало
  
  ф
  
  р
  
  а
  
  к
  
  ц
  
  и
  
  и
  
  Байт-предсказатель условий атрибутов
  
  Цвет 3
  
  или
  
  4 байта или
  
  1 байт для 256 цвет
  
  16
  
  +16 фона
  
  Размер букв знаков
  
  метка
  
  Середина фракции - по факту
  
  конец заголовка блока
  
  Текст
  
  символы
  
  Конец
  
  ф
  
  р
  
  а
  
  к
  
  ц
  
  и
  
  и
  
  
  Atr
  
  фракционная запись -заголовок блока
  
  End
  
  
  
  
  Байт-предсказатель - есть всегда (скоко атрибутов за ним читать)
  
  
  
  7
  
  6
  
  5
  
  4
  
  3
  
  2
  
  1
  
  0
  
  |
  
  |
  
  |
  
  |
  
  |
  
  |
  
  |
  
  |
  
  - есть цвет (т.е доп. байты цвета фона и символа)
  
  |
  
  |
  
  |
  
  |
  
  |
  
  |
  
  |
  
  -
  
  - есть размер шрифта (ещё доп.байты= ширина*высота)
  
  |
  
  |
  
  |
  
  |
  
  |
  
  |
  
  -
  
  -
  
  - есть идентификатор-метка-якорь(ещё доп. байты)
  
  |
  
  |
  
  |
  
  |
  
  |
  
  -
  
  -
  
  -
  
  - 0 всегда????
  
  |
  
  |
  
  |
  
  |
  
  -
  
  -
  
  -
  
  -
  
  - жирные
  
  |
  
  |
  
  |
  
  -
  
  -
  
  -
  
  -
  
  -
  
  - наклонные
  
  |
  
  |
  
  -
  
  -
  
  -
  
  -
  
  -
  
  -
  
  - подчёркнутые
  
  |
  
  -
  
  -
  
  -
  
  -
  
  -
  
  -
  
  -
  
  - есть тень (фактура фона)
  
  
  
  
  Код атрибута + код модификатора(без размера шрифта) дают дополнительно 2-6 байта перед
  символом.
  
  
  
  
  Технические трудности изменения размеров символов на лету, большой набор символов
  разных размеров, требование картинки в тексте привели к требованию
  ГРАФического вывода как наиболее универсального. На-пример,
  реализация в программе ChiWriter под ДОС,
  когда ВСЕ символы выводились в графическом режиме и как раз в режиме
  переключения кодовых страниц символов(собственных).
  
  
  
  Управление форматированием текста широко применялось в редакторе MultiEdit,
  известного в СССР в варианте "Фотон", он же МЕ-2.
  
  
  
  Смотрите также Д.Кнут - формат TeX.
  
  
  
  Фактически это предложение Тюрина - один из вариантов языка SGML, подобие HTML, но только для терминального режима, т. е. ограниченного техническими возможностями конкретного терминала. Позволяет терминальное устройство цвет - выводит, нет - игнорирует (или заменяет...) и тому подобное. Главным принципом терминальных устройств является максимум возможностей при минимальных затратах.
  
  
  
  Коды управления выводом на экран
  
  
  
  Кто чем(кем) управляет - ещё разобраться надо...
  
  
  
  
  Распространённые коды управления выводом на экран (лист бумаги), а фактически курсором-указателем позиции вывода следующего символа в потоке текста.
  
  
  
  BS - возврат на одну позицию ( обычно очистка символа ДО - функция драйвера клавиатуры (редактора), а не кода, - но позволяет хитрости в тексте, типа вывести 2 символа на одном знакоместе, в том числе верхний и нижний индексы на одном знакоместе-позиции). Фактически управляет курсором-указателем позиции вывода следующего символа. Смотрите в статье в приложениях, как предлагает его использовать Дмитрий. Фактически в тексте в наше время не применяется.
  
  
  
  CR- возврат каретки (в начало той же строки - фактически начало новой строки) - позволит печатать поверх уже напечатанных символов новые, по всей строке до конца, обозначенного кодом LF-Новая строка. Фактически управляет курсором-указателем позиции вывода следующего символа.
  
  
  
  LF- Перевод строки (новая строка -часто признак конца строки). Позволяет перейти на новую строку и печатать с той же позиции (ступеньки на экране и листе бумаги). Фактически управляет курсором-указателем позиции вывода следующего символа. На-пример:
  
  
  
  
  
  
  Это первая строка.
  
  Это вторая строка.
  
  
  
  
  Это частный случай дублирования кода VP -сдвиг вверх-вниз на число пикселей-строк, но с фиксированной высотой сдвига равной высоте знакоместа (текущего) для таблицы вывода.
  
  
  
  Комбинация этих 2-х кодов (CR+LF или LF+CR) в тексте однозначно даёт понять о конце строки и начале новой строки (параграфа, абзаца) вывода текста.
  
  
  
  VP- Вертикальный сдвиг (позиция) - следующий байт, как число со знаком - количество пикселей-строк развёртки (126 пикселей вниз и вверх с минусом). Фактически управляет курсором-указателем позиции вывода следующего символа на экране и листе бумаги. На-пример:
  
  
  
  
  
  
  Это вторая строка.
  
  Это первая строка.
  
  Это третья строка.
  
  
  
  
  FF -Подача формы (печать на принтере с нового листа-страницы). На экране может по аналогии: очистить экран, переместить (позиционировать) курсор в верхний левый угол на начало. Чаще в тексте как признак начала новой страницы вывода (то, что называют разрыв страницы)- принудительное начало блока текста, которое надо разместить c начала листа-страницы. Также может изображаться горизонтальной линией-разделителем текста на экране.
  
  
  
  Но надо учитывать, что это скорее код управления устройством, а не вывода текста, и логичнее его определить в таблице команд терминала через Esc-команду. Можно оставить для совместимости, но код всё равно другой, и при конвертации в другую систему кодировки будут свои правила. Здесь двоякость смысла: управление выводом (форматированием текста) и в то же время код управления устройством.
  
  
  
  HT - Горизонтальная табуляция. Стандартно смещение вывода символа на фиксированные по-умолчанию позиции. Обычно для вывода по-табличному (рядами и столбцами) чисел, слов. Набор номеров позиций табуляции в строке вывода по-умолчанию через 8 символов. Поведение зависит от принятых настроек терминала. Часто зависит от таблицы табуляторов - где указаны позиции начала колонок. Фактически управляет курсором-указателем позиции вывода следующего символа на экране и листе бумаги.
  
  
  
  HP- Горизонтальный сдвиг (позиция) влево (минус) и вправо на количество пикселей( -126 +127) в следующем байте. В отличие от HT это графический сдвиг курсора.
  
  
  
  End - Код конца действия (блока-фракции) кодов команд и модификаторов: ESC, Atr, CL. Желателен, но Необязателен, т. к. выключателем (окончанием) блока может быть тот же код-переключатель.В теле блока тогда этот код д.б. запретным.
  
  
  
  ESCape (убегать из текста) - код-переключатель: всё, что за ним -трактуется как команды для устройства (терминала) до появления следующего ESC, End. (Следующие 2 байта - размер блока команд - как вариант более предпочтителен, т. к. позволяет в команде набор любых кодов - даже программ). Это для совместимости со старыми системами терминалов и расширение возможностей новых.
  
  
  
  Звонок, вызов оператора, сигналы обмена - фактически таблица кодов команд управления оконечным устройством (терминалом), которые выполняются до появления кода End или повторного ESC. Блок команд в тексте для какого-то устройства (на-пример вывода на принтер) - более логичный.
  
  
  
  В принципе также можно интерпретировать код Atr, как блок команд для вывода модифицированного символьного текста.
  
  
  
  Мы видим, что часть кодов управления выводом с произвольным сдвигом по пикселям не обязательны, применительно к старому способу вывода в фиксированных позициях экрана. Но для вывода
  между текстом графической картинки (на-пример: математической формулы, иконки...) они найдут применения. Или эффекты поверх символьного текста.
  
  
  
  Под управляющие отводится всего 15 кодов. Если ограничиться фиксированными размерами знакоместа символа, отсечь команды терминала - то останется 10 кодов. Остальной объём кодов под символы алфавита, знаков разделителей и цифр. Нежелательно использовать коды 00, FF, ...
  
  
  
  Итого для печатаемых символов остаётся (256-2-15=) 239 кодов.
  
  
  
  Новая Кодировка управления выводом символов EvA CP-0001:
  
  
  
  /Evropa V(пять)A=Австралия, Азия, Антарктида, Америка, Арктика/
  
  
  
  Img
  
  SYM
  
  NAME
  
  HEX
  
  OCT
  
  DEC
  
  
  
  
  
  NIL
  
  00
  
  000
  
  0
  
  Нуль-не используется (путаница с Zero-строками в языке Си)
  
  
  
  ^A
  
  CP
  
  01
  
  001
  
  1
  
  CP(Code Page иногда Char set)
  
  
  
  ^B
  
  CL
  
  02
  
  002
  
  2
  
  CL(Caps Lock -можно UC -Upper Case) БОЛЬШОЙ /заглавный до появления следующего кода CL (или LC)
  
  
  
  ^C
  
  LC
  
  
  
  
  End
  
  03
  
  003
  
  3
  
  LC(Lower Case) выключение вывода БОЛЬШИХ /заглавных символов (для возможности вывода строк)-режим по-умолчанию
  
  Код конца действия - выключатель
  
  
  
  ^D
  
  Sh
  
  04
  
  004
  
  4
  
  Sh( SHIFT) - это код указывает, что следующий один символ должен отображаться как БОЛЬШОЙ/заглавный,
  
  
  
  ^E
  
  Ui
  
  05
  
  005
  
  5
  
  Верхний индекс (один символ или блок до End ?)
  
  
  
  ^F
  
  Li
  
  06
  
  006
  
  6
  
  Нижний индекс (один символ или блок до End ?)
  
  
  
  ^G
  
  HP
  
  07
  
  007
  
  7
  
  Горизонтальный сдвиг влево (минус) и вправо на количество пикселей в следующем байте
  
  
  
  ^H
  
  BS
  
  
  
  
  bs
  
  08
  
  010
  
  8
  
  Возврат на одну позицию ( обычно очистка символа ДО - функция клавиатуры, а не кода, но позволяет хитрости в тексте, типа вывести 2 символа на одном знакоместе-зачеркнуть, подчеркнуть...)
  
  
  
  ^I
  
  HT
  
  09
  
  011
  
  9
  
  Горизонтальная табуляция - по-умолчанию каждая 8 позиция символа
  
  
  
  ^J
  
  VP
  
  0A
  
  012
  
  10
  
  Вертикальный сдвиг - следующий байт, как число со знаком пикселей-строк развёртки (вниз и вверх с минусом)
  
  
  
  ^K
  
  FF
  
  
  
  Atr
  
  0B
  
  013
  
  11
  
  Подачи формы (печать на принтер) - это команда через Esc логичнее
  
  Атрибут вывода, цвет, модификация ...-до появления следующего кода Atr или End
  
  
  
  ^L
  
  LF
  
  0C
  
  014
  
  12
  
  Перевод строки (новая строка -признак конца строки)
  
  
  
  ^M
  
  CR
  
  0D
  
  015
  
  13
  
  Возврат каретки (в начало той же строки - фактически начало новой строки)
  
  
  
  ^N
  
  End
  
  
  
  Atr
  
  0E
  
  016
  
  14
  
  Код конца действия - выключатель (блока-фракции) кодов команд и модификаторов: ESC, Atr, CL
  
  Атрибут вывода, цвет, модификация ...-до появления следующего кода Atr или End
  
  
  
  ^O
  
  ESC
  
  0F
  
  017
  
  15
  
  Escape - код-переключатель: всё, что за ним -трактуется как команды из таблицы для устройства (терминала) до появления следующего ESC или End. (Следующие 2 байта - размер блока команд позволит любые коды в блоке, даже End.???)
  
  
  
  
  Новые таблицы кодов символов
  
  
  
  Всё новое - хорошо забытое старое...
  
  
  Количество всегда переходит в качество.
  
  
  
  Обязательно в наборе должны присутствовать арабские (индийские) цифры, знаки-разделители текста типа пробел, подчеркнуть, пусто обязаны располагаться перед Алфавитом (набором знаков). Исходить из частоты применения знаков в повседневном тексте не обязательно, но желательно.
  
  
  Таблица кодировки состоит из 3-х основных частей:
  
  
  - коды управления выводом на экран(лист). Всего 15(или 10). Это обязательная часть;
  
  
  - коды символов цифр и часто употребляемых знаков, типа разделителей (знаков пунктуации...) - около 60;
  
  
  - коды собственно нового алфавита (по Дмитрию Тюрину 179);
  
  
  - коды запрещённые - всего 2 - это х00 и хFF.
  
  
  
  Псевдографика для рисования таблиц, заполнение знакоместа тенью разной степенью насыщенности, дополнительные знаки денежных единиц и математики и т. п. сами просятся в таблицу кодировки 0002, как наиболее востребованные, типа Tgm CP-0002.
  
  
  
  Часть графических и математических символов будет дублироваться в таблице кодов для (псевдо)графических символов, чтобы уменьшить расходы на переключение кодовых таблиц.
  
  
  
  Фактически ранее обязательной была половина таблицы с латинскими буквами и цифрами. Вторая половина отдавалась национальному алфавиту. Предусмотрена была возможность заливать (загружать) её вместо принятой по умолчанию. По-новому обязательными являются коды управления - 15 штук. Пробел, точка, запятая, кавычки, углы и т. п. -основные разделители и цифры, как наиболее часто используемые, желательны, но не обязательны. По-умолчанию всегда будет использоваться кодовая страница CP-0001 EvA(Evropa V(пять)A=Австралия, Азия, Антарктида, Америка, Арктика). Второй по частоте использования будет Таблица псевдоГрафики и Математики - Tgm CP-0002.
  
  
  
  Сразу возникает вопрос о верхне-нижних - индексных знаках степени
  
  
  º
  
  ¹
  
  ²
  
  ³
  
  
  
  Так как цифры будут иметь признак верхний - нижний
  индекс, то отдельно кодировать их нет смысла. Практика покажет.
  
  
  
  В таблицу новых кодировок я хотел вставить коды Unicode
  для изображений символов Д.Тюрина, но не все из них нашёл, поэтому
  оставил как есть - и так наглядно. Подробности всё равно надо
  будет дорабатывать при практической реализации и решать ряд вопросов.
  
  
  
  Сводная таблица кодов EvA-CP0001 (примерно) шрифт Times Roman
  
  
  /Evropa V(пять)A=Австралия, Азия, Антарктида, Америка, Арктика/
  
  
  
  00
  
  01
  
  02
  
  03
  
  04
  
  05
  
  06
  
  07
  
  08
  
  09
  
  0A
  
  0B
  
  0C
  
  0D
  
  0E
  
  0F
  
  00
  
  Nil
  
  CP
  
  CL
  
  End
  
  Sh
  
  Ui
  
  Li
  
  BS
  
  HP
  
  HT
  
  VP
  
  FF
  
  LF
  
  CR
  
  Atr
  
  Esc
  
  
  x00 [Букреев А.Г.]
  
  ☼
  
  
  
  ⇥
  
  
  
  ⌐
  
  ?
  
  
  
  ↔
  
  
  
  ↕
  
  ♀
  
  ↓
  
  
  
  ☻
  
  ☺
  
  01
  
  Spc
  
  .
  
  ,
  
  :
  
  ;
  
  !
  
  ?
  
  |
  
  ^
  
  %
  
  \
  
  <
  
  =
  
  >
  
  '
  
  "
  
  02
  
  0
  
  1
  
  2
  
  3
  
  4
  
  5
  
  6
  
  7
  
  8
  
  9
  
  /
  
  -
  
  *
  
  +
  
  (
  
  )
  
  03
  
  &
  
  #
  
  ~
  
  ?
  
  º
  
  §
  
  ¿
  
  ≈
  
  ∞
  
  %
  
  `
  
  "
  
  ≠
  
  "
  
  {
  
  }
  
  04
  
  @
  
  No
  
  $
  
  £
  
  ¥
  
  ₤
  
  ?
  
  ←
  
  
  
  →
  
  +
  
  ≤
  
  ≡
  
  ≥
  
  [
  
  ]
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  05
  
  -
  
  _
  
  a
  
  á
  
  à
  
  â
  
  ǎ
  
  ă
  
  ā
  
  ã
  
  ä
  
  ą
  
  ą
  
  å
  
  æ
  
  b
  
  
  -
  
  ¯
  
  A
  
  Á
  
  À
  
  Â
  
  Ǎ
  
  Ă
  
  Ā
  
  Ã
  
  Ä
  
  Ą
  
  Ą
  
  Å
  
  Æ
  
  B
  
  06
  
  c
  
  ć
  
  č
  
  ç
  
  d
  
  đ
  
  ð
  
  ď
  
  
  б
  
  в
  
  г
  
  ?
  
  ғ
  
  f
  
  ґ
  
  
  C
  
  Ć
  
  Č
  
  Ç
  
  D
  
  Đ
  
  Ð
  
  Ď
  
  Ď
  
  Б
  
  В
  
  Г
  
  ?
  
  Ғ
  
  F
  
  Ґ
  
  07
  
  
  д
  
  һ
  
  ħ
  
  ?
  
  e
  
  é
  
  è
  
  ê
  
  ĕ
  
  ē
  
  ė
  
  ě
  
  ë
  
  ę
  
  f
  
  
  
  Д
  
  Һ
  
  ?
  
  ?
  
  E
  
  É
  
  È
  
  Ê
  
  Ĕ
  
  Ē
  
  Ė
  
  Ě
  
  Ë
  
  Ę
  
  F
  
  08
  
  g
  
  ģ
  
  ğ
  
  h
  
  ж
  
  җ
  
  
  з
  
  
  
  и
  
  
  й
  
  
  
  i
  
  
  G
  
  Ģ
  
  Ğ
  
  H
  
  Ж
  
  Җ
  
  
  З
  
  
  
  И
  
  
  Й
  
  
  
  I
  
  09
  
  į
  
  í
  
  ì
  
  î
  
  ī
  
  ϊ
  
  j
  
  k
  
  ķ
  
  l
  
  ļ
  
  ľ
  
  ł
  
  m
  
  n
  
  ņ
  
  
  Į
  
  Í
  
  Ì
  
  Î
  
  Ī
  
  Ϊ
  
  J
  
  K
  
  Ķ
  
  L
  
  Ļ
  
  Ľ
  
  Ł
  
  M
  
  N
  
  Ņ
  
  0A
  
  ń
  
  
  ň
  
  к
  
  қ
  
  
  ?
  
  ҝ
  
  
  л
  
  ?
  
  м
  
  н
  
  ң
  
  
  ?
  
  
  Ń
  
  
  Ň
  
  К
  
  Қ
  
  
  ?
  
  Ҝ
  
  
  Л
  
  ?
  
  М
  
  Н
  
  Ң
  
  
  ?
  
  0B
  
  o
  
  ó
  
  ò
  
  ô
  
  ō
  
  õ
  
  ö
  
  ő
  
  ø
  
  œ
  
  ө
  
  п
  
  р
  
  þ
  
  q
  
  r
  
  
  O
  
  Ó
  
  Ò
  
  Ô
  
  Ō
  
  Õ
  
  Ö
  
  Ő
  
  Ø
  
  Œ
  
  Ө
  
  П
  
  Р
  
  Þ
  
  Q
  
  R
  
  0C
  
  ŗ
  
  ŕ
  
  ř
  
  s
  
  ş
  
  ś
  
  š
  
  β
  
  t
  
  ţ
  
  
  u
  
  ú
  
  ù
  
  û
  
  ü
  
  
  Ŗ
  
  Ŕ
  
  Ř
  
  S
  
  Ş
  
  Ś
  
  Š
  
  ß
  
  T
  
  Ţ
  
  Ť
  
  U
  
  Ú
  
  Ù
  
  Û
  
  Ü
  
  0D
  
  ű
  
  ū
  
  ų
  
  ů
  
  v
  
  w
  
  
  т
  
  у
  
  ÿ
  
  
  ỹ
  
  ѓ
  
  
  ү
  
  ұ
  
  
  Ű
  
  Ū
  
  Ų
  
  Ů
  
  V
  
  W
  
  
  Т
  
  У
  
  
  
  Ỹ
  
  ђ
  
  
  Ү
  
  Ұ
  
  0E
  
  Ф
  
  х
  
  
  
  y
  
  ý
  
  ỳ
  
  ŷ
  
  ÿ
  
  z
  
  ż
  
  ź
  
  ž
  
  ц
  
  ?
  
  ч
  
  
  Ф
  
  Х
  
  
  
  Y
  
  
  Ỳ
  
  Ŷ
  
  Ÿ
  
  Z
  
  Ż
  
  Ź
  
  Ž
  
  Ц
  
  ?
  
  Ч
  
  0F
  
  
  ҹ
  
  ш
  
  щ
  
  ъ
  
  ы
  
  
  ь
  
  э
  
  є
  
  ә
  
  
  ю
  
  я
  
  
  xFF [Букреев А.Г.]
  
  
  
  Ҹ
  
  Ш
  
  Щ
  
  Ъ
  
  Ы
  
  
  Ь
  
  Э
  
  Є
  
  Ә
  
  
  Ю
  
  Я
  
  
  xFF [Букреев А.Г.]
  
  
  
  Объединенный Латинско-Кириллический Алфавит по Д.Тюрину
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  Тюрин Дмитрий, sql50@narod.ru
  
  
  
  
  Псевдографика и математика Tgm CP-0002
  
  
  
  
  00
  
  01
  
  02
  
  03
  
  04
  
  05
  
  06
  
  07
  
  08
  
  09
  
  0A
  
  0B
  
  0C
  
  0D
  
  0E
  
  0F
  
  00
  
  Nil
  
  CP
  
  CL
  
  End
  
  Sh
  
  Ui
  
  Li
  
  BS
  
  HP
  
  HT
  
  VP
  
  FF
  
  LF
  
  CR
  
  Atr
  
  Esc
  
  
  x00 [Букреев А.Г.]
  
  ☼
  
  
  
  ⇥
  
  
  
  ⌐
  
  ?
  
  
  
  ↔
  
  
  
  ↕
  
  ♀
  
  ↓
  
  
  
  ☻
  
  ☺
  
  01
  
  Spc
  
  .
  
  ,
  
  :
  
  ;
  
  !
  
  ?
  
  |
  
  ^
  
  %
  
  \
  
  <
  
  =
  
  >
  
  '
  
  "
  
  02
  
  0
  
  1
  
  2
  
  3
  
  4
  
  5
  
  6
  
  7
  
  8
  
  9
  
  /
  
  -
  
  *
  
  +
  
  (
  
  )
  
  03
  
  &
  
  #
  
  ~
  
  ?
  
  º
  
  §
  
  ¿
  
  ≈
  
  ∞
  
  %
  
  `
  
  "
  
  ≠
  
  "
  
  {
  
  }
  
  04
  
  @
  
  No
  
  $
  
  
  ↑
  
  ↓
  
  ↔
  
  ←
  
  
  
  →
  
  +
  
  ≤
  
  ≡
  
  ≥
  
  [
  
  ]
  
  05
  
  -
  
  _
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  06
  
  -
  
  ¯
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  07
  
  α
  
  β
  
  γ
  
  δ
  
  ε
  
  ζ
  
  η
  
  θ
  
  ι
  
  κ
  
  λ
  
  μ
  
  ν
  
  ξ
  
  ο
  
  π
  
  08
  
  ρ
  
  ς
  
  σ
  
  τ
  
  υ
  
  φ
  
  χ
  
  ψ
  
  ω
  
  
  
  
  
  
  
  
  09
  
  Α
  
  Β
  
  Γ
  
  Δ
  
  Ε
  
  Ζ
  
  Η
  
  Θ
  
  Ι
  
  Κ
  
  Λ
  
  Μ
  
  Ν
  
  Ξ
  
  Ο
  
  Π
  
  0A
  
  Ρ
  
  
  Σ
  
  Τ
  
  Υ
  
  Φ
  
  Χ
  
  Ψ
  
  Ω
  
  
  
  
  
  
  
  
  0B
  
  º
  
  ¹
  
  ²
  
  ³
  
  
  
  ½
  
  ¼
  
  ¾
  
  ⅓
  
  ⅔
  
  ⅛
  
  ⅜
  
  ⅝
  
  ⅞
  
  
  0C
  
  ┌
  
  ┬
  
  ┐
  
  ╔
  
  ╦
  
  ╗
  
  ╓
  
  ╥
  
  ╖
  
  ╒
  
  ╤
  
  ╕
  
  ─
  
  │
  
  ▀
  
  ▐
  
  0D
  
  ├
  
  ┼
  
  ┤
  
  ╠
  
  ╬
  
  ╣
  
  ╟
  
  ╫
  
  ╢
  
  ╞
  
  ╪
  
  ╡
  
  ═
  
  ║
  
  ▄
  
  █
  
  0E
  
  └
  
  ┴
  
  ┘
  
  ╚
  
  ╩
  
  ╝
  
  ╙
  
  ╨
  
  ╜
  
  ╘
  
  ╧
  
  ╛
  
  ░
  
  ▒
  
  ▓
  
  ▌
  
  0F
  
  ►
  
  ▲
  
  ◄
  
  ▼
  
  
  
  
  
  
  
  
  ■
  
  □
  
  ▪
  
  ▫
  
  xFF [Букреев А.Г.]
  
  
  
  
  Обращаю внимание - в математике БОЛЬШОЙ знак всегда обозначает не то же самое, что маленький. Понятия курсив (наклонный) практически не нужен для псевдографики рисования таблиц. Дублированные стрелки, распространённые дроби и т. п. требуют вдумчивого размещения. Таким образом набор дополнительных таблиц отображения здесь явно меньше.
  
  
  
  Описание разделителей и других символов в таблице:
  
  
  
  Img
  
  SYM
  
  NAME
  
  HEX
  
  OCT
  
  DEC
  
  
  
  !
  
  
  !
  
  
  
  
  !
  
  
  ?
  
  
  ?
  
  
  
  
  ?
  
  
  .
  
  
  .
  
  
  
  
  . точка
  
  
  ,
  
  
  ,
  
  
  
  
  , запятая
  
  
  
  
  
  
  
  
  
  
  Матем. знак умножить *
  
  
  /
  
  
  /
  
  
  
  
  Разделить деление
  
  
  -
  
  
  -
  
  
  
  
  Это математический знак минус
  
  
  +
  
  
  +
  
  
  
  
  плюс
  
  
  -
  
  
  -
  
  
  
  
  - это не минус, а тире (не обязательно, т. к. дублирует вн.вид и часть функций минуса)
  
  
  ―
  
  
  ―
  
  
  
  
  Дефис? - признак возможности переноса части слова
  
  
  ―
  
  
  -
  
  
  
  
  Ещё похоже на тире, но... знак зачеркнуть символ (или BS + горизонтальная черта)
  
  
  ‗
  
  
  ‗
  
  
  
  
  подчеркнуть
  
  
  ‾
  
  
  ‾
  
  
  
  
  надчеркнуть
  
  
  ~
  
  
  ~
  
  
  
  
  ~ тильда
  
  
  ≈
  
  
  ≈
  
  
  
  
  ≈ примерно равно
  
  
  :
  
  
  :
  
  
  
  
  :
  
  
  ;
  
  
  ;
  
  
  
  
  ;
  
  
  '
  
  
  '
  
  
  
  
  ' апостроф
  
  
  "
  
  
  "
  
  
  
  
  " двойные кавычки
  
  
  `
  
  
  `
  
  
  
  
  ` обратная кавычка одиночная
  
  
  |
  
  
  |
  
  
  
  
  | вертикальная черта знак ИЛИ
  
  
  \
  
  
  \
  
  
  
  
  \ обратный слэш наклон
  
  
  [
  
  
  [
  
  
  
  
  [
  
  
  ]
  
  
  ]
  
  
  
  
  ]
  
  
  {
  
  
  {
  
  
  
  
  {
  
  
  }
  
  
  }
  
  
  
  
  }
  
  
  <
  
  
  <
  
  
  
  
  <
  
  
  =
  
  
  =
  
  
  
  
  = присвоить, равно
  
  
  >
  
  
  >
  
  
  
  
  >
  
  
  ≠
  
  
  ≠
  
  
  
  
  ≠ не равно
  
  
  "
  
  
  "
  
  
  
  
  "
  
  
  "
  
  
  "
  
  
  
  
  "
  
  
  @
  
  
  @
  
  
  
  
  @
  
  
  #
  
  
  #
  
  
  
  
  #
  
  
  $
  
  
  $
  
  
  
  
  $ - доллар
  
  
  &
  
  
  &
  
  
  
  
  & AND
  
  
  %
  
  
  %
  
  
  
  
  % процент = 1/100
  
  
  £
  
  
  £
  
  
  
  
  £ - фунт ?
  
  
  ?
  
  
  ?
  
  
  
  
  ? - солнышко, рубль?
  
  
  ¥
  
  
  ¥
  
  
  
  
  ¥ - йена
  
  
  ₤
  
  
  ₤
  
  
  
  
  ₤
  
  
  ?
  
  
  ?
  
  
  
  
  ? - евро
  
  
  ?
  
  
  ?
  
  
  
  
  ? - номер
  
  
  No
  
  
  No
  
  
  
  
  No копирайт - торг марка
  
  
  §
  
  
  §
  
  
  
  
  § параграф
  
  
  R
  
  
  R
  
  
  
  
  R права (чьи?)
  
  
  ^
  
  
  ^
  
  
  
  
  ^ степень - "крыша"
  
  
  
  
  
  
  
  
  
  
   число пи = 3,1415926535
  
  
  º
  
  
  º
  
  
  
  
  º градус (Цельсия, Фаренгейта)
  
  
  ¹
  
  
  ¹
  
  
  
  
  ¹ степень числа - не обязателен - есть верхний индекс цифр
  
  
  ²
  
  
  ²
  
  
  
  
  ²
  
  
  ³
  
  
  ³
  
  
  
  
  ³
  
  
  ½
  
  
  ½
  
  
  
  
  ½ дроби или степень???
  
  
  ¼
  
  
  ¼
  
  
  
  
  ¼
  
  
  ¾
  
  
  ¾
  
  
  
  
  ¾
  
  
  %
  
  
  %
  
  
  
  
  % промиле = 1/1000
  
  
  ⅓
  
  
  ⅓
  
  
  
  
  ⅓
  
  
  ⅔
  
  
  ⅔
  
  
  
  
  ⅔
  
  
  ⅛
  
  
  ⅛
  
  
  
  
  ⅛
  
  
  ⅜
  
  
  ⅜
  
  
  
  
  ⅜
  
  
  ⅝
  
  
  ⅝
  
  
  
  
  ⅝
  
  
  ⅞
  
  
  ⅞
  
  
  
  
  ⅞
  
  
  ∞
  
  
  ∞
  
  
  
  
  ∞ бесконечность
  
  
  √
  
  
  √
  
  
  
  
  √ корень квадратный
  
  
  ∑
  
  
  ∑
  
  
  
  
  ∑ сумма
  
  
  +
  
  
  +
  
  
  
  
  + плюс минус
  
  
  ≤
  
  
  ≤
  
  
  
  
  ≤ меньше или равно
  
  
  ≡
  
  
  ≡
  
  
  
  
  ≡ тождественно эквивалентно
  
  
  ≥
  
  
  ≥
  
  
  
  
  ≥ больше или равно
  
  
  ∫
  
  
  ∫
  
  
  
  
  ∫ интеграл
  
  
  ⌠
  
  
  ⌠
  
  
  
  
  ⌠
  
  
  ⌡
  
  
  ⌡
  
  
  
  
  ⌡
  
  
  ←
  
  
  ←
  
  
  
  
  ← - стрелки одинарные
  
  
  →
  
  
  →
  
  
  
  
  →
  
  
  ↑
  
  
  ↑
  
  
  
  
  ↑
  
  
  ↓
  
  
  ↓
  
  
  
  
  ↓
  
  
  ↔
  
  
  ↔
  
  
  
  
  ↔
  
  
  ↕
  
  
  ↕
  
  
  
  
  ↕
  
  
  ▲
  
  
  ▲
  
  
  
  
  
  
  ►
  
  
  ►
  
  
  
  
  
  
  ▼
  
  
  ▼
  
  
  
  
  
  
  ◄
  
  
  ◄
  
  
  
  
  
  
  ♠
  
  
  ♠
  
  
  
  
  
  
  ♣
  
  
  ♣
  
  
  
  
  
  
  ♥
  
  
  ♥
  
  
  
  
  
  
  ♦
  
  
  ♦
  
  
  
  
  
  
  
  
  
  
  
  
  И т. д. И т.п.
  
  
  
  
  
  Окончательный состав можно определить только в практическом исполнении при обсуждении правил и преимуществ применения.
  
  
  
  Третья таблица напрашивается с изображениями бытовых приборов и т. п. - телефонов, огнетушителей, цветов, смайликов... - типа Webdings, Symbol.
  
  
  
  Следующая - четвёртая - таблица кодировки ЗВУКОВ, принятая в академической среде лингвистов (ИМХО) позволит интересные возможности в обучающей среде. Но это отдельная песня.
  
  
  
  Арабские и другие таблицы требуют своих конструкторов правил вывода, поэтому здесь я даже не рассматриваю их. Наработки Unicoda позволяют решить эти задачи с использованием заголовка кода.
  
  
  
  Русские символы - это вообще отдельная история - смотрите Wiki http://ru.wikipedia.org/wiki/"Википедия Проект: "Внесение_символов_алфавитов_народов_России_в_Юникод.htm". Вполне можно создать набор таблиц для русско-язычных символов. Поэтому я предлагаю 2 байта для нумерации таблиц -
  возможность расширения наборов дорогого стоит.
  
  
  
  Таблицы других стран могут входить в общую нумерацию или как для перекодировки. Правила вывода на экран (типа справа налево, сверху вниз) зависят от номера кодовой страницы в любом случае их применения.
  
  
  
  Таблица перекодировки примерно такая:
  
  
  
  Code EvA
  
  img
  
  Name
  
  Unicode
  
  CP-1251
  
  OEM 866
  
  Другие
  
  00
  
  
  NULL
  
  0000
  
  00
  
  00
  
  
  01
  
  
  START OF HEADING
  
  Code Page ?
  
  Нет
  
  Нет
  
  Нет
  
  Нет
  
  ....
  
  ....
  
  .........
  
  
  
  
  
  10
  
  Spc
  
  SPACE
  
  0020
  
  20
  
  20
  
  
  11
  
  .
  
  FULL STOP
  
  002E
  
  2E
  
  2E
  
  
  12
  
  ,
  
  COMMA
  
  002С
  
  2С
  
  2С
  
  
  13
  
  :
  
  COLON
  
  003A
  
  3A
  
  3A
  
  
  ....
  
  ....
  
  ..................
  
  
  
  
  
  20
  
  0
  
  DIGIT ZERO
  
  0030
  
  30
  
  30
  
  
  21
  
  1
  
  DIGIT ONE
  
  0031
  
  31
  
  31
  
  
  22
  
  2
  
  DIGIT TWO
  
  0032
  
  32
  
  32
  
  
  ....
  
  .....
  
  ................
  
  
  
  
  
  52
  
  a
  
  LATIN SMALL LETTER A
  
  CYRILLIC SMALL LETTER A
  
  ...........
  
  0061
  
  61
  
  61
  
  
  ...
  
  ....
  
  ................
  
  
  
  
  
  
  
  Преимущества и недостатки
  
  
  
  Преимущества - Вытекают из достоинств.
  
  
  Недостатки - из преимуществ.
  
  
  
  
  Дмитрий указывает на 2 цели:
  
  
  
  - поиск независимо от БОЛЬШИХ / малых букв;
  
  
  
  - работа с текстами и данными большинства европейских языков в пределах одной кодировки, знаки, обслуживающие переписку наибольшего количества людей на земле.
  
  
  
  Вспомогательный бонус - форматирование вывода на экран терминалов в символьном режиме (если позволяет терминал). Нет возможности - игнорирует форматирование (модификацию) символов.
  
  
  
  Дополнительно большее количество таблиц кодировок символов и соответственно самих символов (новых стандартов и старых исторических начертаний).
  
  
  Недостатки
  
  
  
  
  Переключение языковых раскладок клавиатур и кодовых таблиц требует переключение на правила оформления согласно требованиям страны-языка (наиболее известны десятичная точка или запятая, формат даты, порядок вывода на экран - справа налево, сверху вниз), индексирование для сортировки по алфавиту конкретного языка. Проблемы перекодировки разных языков остаются.
  
  
  
  Требование наличия для одной кодировки 2-х и больше (БОЛЬШИЕ/малые, индексы, курсив...) таблиц изображений символа для вывода на экран терминала. Практически эти таблицы уже применяются во
  всех ОС, как кэш True Font.
  
  
  
  Фактически создана новая таблица кодов символов для евро-азиатских алфавита языков. Наличие дублированных изображений похожих символов(строчных-малых как основных) в разных местах для
  (единой) сортировки, как и наложения 2-х и более символов в одной позиции лично мне кажется недостатком - грубой ошибкой. Всё равно придётся применять индексы сортировки для алфавита каждой
  страны, а одно изображение для разных кодов создаёт неоднозначность поиска информации.
  
  
  
  Второй факт - создание нового (терминального - бинарного) формата плоского текста. Т-экс-т (txt) заменяется на Т-ерминальный Т-екс-т (ttx), который уже не будет плоским!!!(ИМХО).
  
  
  
  В приложении Wiki-Юникод (см. ниже) перечислены доводы для внедрения Единой таблицы символов,
  выбор количества байт для кодировки каждого символа и встроенные недостатки. Дмитрий предлагает (и я его поддерживаю) вернуться к идее набора таблиц, как более логической конструкции в повседневной жизни (практике).
  
  
  
  Практика -критерий истины
  
  
  
  Красиво было на бумаге, но забыли про овраги...
  
  
  Что делать, что делать...-трясти надо!
  
  
  
  Как сказано у Дмитрия:
  
  
  "Все мы бессознательно воспринимаем международные организации как созданные пользователями и для пользователей, на самом деле скинулись мужчины, у которых деньги есть. Да и скинулись в основном, чтобы перекрыть ветер в паруса конкурентов. Кроме W3C автор имел возможность убедиться в этом и в ISO JTC1 SC32 WG3, где ключевые посты заняты представителями Oracle, Microsoft и IBM. Отсюда и расходы на программиста, например, под Oracle превышают стоимость дистрибутива Oracle."
  
  
  
  Практически нужны такие вот парни, создать сайт с материалами по кодировке, выложить на FTP svn - дерево проекта, Wiki-форум для обмена "любезностями" и примеры программ-читалок для обкатки на практике. Но в настоящее время внедрение возможно только при открытости и бесплатности.
  
  
  Одной из программ напрашивается терминал типа putty - с открытым исходным кодом. На нём обкатать вывод на экран, состав символов и их кодов, переключатель раскладок клавиатуры и режимы редактирования текста, т. е. программа - редактор для новой кодировки. Напомню, что альтернативная кодировка CP-866 появилась именно при работе практиков в ДОС с 2-мя алфавитами одновременно. И пошла работать - до сих пор в СНГ и не только.
  
  
  
  Программа и таблицы перекодировки (соответствий) между другими таблицами - cp866, cp1251, Unicode и
  т. д. Эта кодировка прямо напрашивается в Linux(*nix).
  
  
  Следущей программой должна быть База Данных типа PostgreSQL - для обкатки индексации сортировки и поиска в много-языковых данных. И именно она будет главным критерием результата.
  
  
  И венцом творения - адаптация (приспособление) инструментов языков программирования Си, Ява, PHP,и т. п.
  
  
  
  А ещё... и ещё... и во-обще....
  
  
  Ну о-очень хотелось бы поиметь ОС с новой системой кодировки, как настольную, так и серверную (сетевую), а лучше универсальную (модульную) типа QNX, L4xxx с открытым кодом, объектную и возможностью встраивания в отдельные устройства независимо от типа процессора.
  
  
  
  ПРИМЕЧАНИЯ И ПРИЛОЖЕНИЯ
  
  
  
  Для справки и гордости - от чего шли и до чего дошли в техническом
  развитии.
  
  
  
  Я принял решение разместить дополнительные материалы в тексте - в конце статьи - чтобы не искать и быстро просмотреть и сравнить.
  
  
  Сама статья написана быстро, но потом проверил по Интернету свою долговременную память и кое-что подправил. А потом прочитал ещё раз и добавил все спорные статьи в конец - вдруг кому-то лень будет искать. И ещё раз поправил (расширил) формулировки для уточнения смысла. Больше всего времени угрохал на таблицы новых кодировок по Д.Тюрину - поиск изображений в Unicode. Что не нашёл -
  не заполнил в таблицах. И так понятно и наглядно. Хотя и сумбурно.
  
  
   Ссылки минимально, поиск даёт ну о-очень много.
  
  
  
  http://careers.stackoverflow.com/Unicode001.html/ascii.png
  
  
  http://careers.stackoverflow.com//Unicode_files/oem.png
  
  
  http://www.3dnews.ru/editorial/razgovor_tekstom//139032.jpg
  
  
  http://ru.wikipedia.org/wiki/МТК-2.htm
  
  
  http://www.sd-company.su/terminals.htm
  
  
  http://ru.wikipedia.org/wiki/Юникод_wiki.htm
  
  
  http://www.unicode.org/Charts.htm
  
  
  Получилось то, что получилось - статья-воспоминание и лекционные материалы по истории.
  
  
  Май 2011 г. -февраль 2012 г.
  
  
  
  ang_buk@mail.ru
  
  
  Букреев А.Г.
  
  
  Для сравнения привожу основную таблицу кодировки IBM PC Latin 1 с ещё с двумя таблицами настоящего времени, широко применяемые в нашей стране (и не только):
  
  
  
  
  ibm_pc [IBM]
  
  
  
  Windows 1251
  
  
  
  1251 [Microsoft]
  
  
  
  
  
  OEM 866
  
  
  
  oem866 []
  
  
  
  
  
  
  Объединенный Латинско-Кириллический Алфавит по Д.Тюрину
  
  
  
   alf_u_11 [Д.Тюрин]alf_ur_12 [Д.Тюрин]
  
  
  alf_ul_12 [Д.Тюрин]alf_u_middle [Д.Тюрин]alf_ul_13 [Д.Тюрин]alf_ul_21 [Д.Тюрин]alf_ur_14 [Д.Тюрин]
  alf_ul_22 [Д.Тюрин]
  
  
  alf_ul_23 [Д.Тюрин]alf_ur_21 [Д.Тюрин]alf_ul_24 [Д.Тюрин]alf_ur_23 [Д.Тюрин]alf_ul_25 [Д.Тюрин]
  
  
  alf_ul_31 [Д.Тюрин]alf_ur_25 [Д.Тюрин]alf_ul_33 [Д.Тюрин]
  
  
  alf_ur_31 [Д.Тюрин]alf_u_last [Д.Тюрин]
  
  
  Тюрин Дмитрий, sql50@narod.ru
  
  
  
  
  Терминалы
  
  
  
  Понятие терминала (DTE - оконечное оборудование данных) в соответствии с телекоммуникационными
  стандартами относится к сочетанию устройств ввода и вывода информации (например, сканер и принтер и тому подобное), однако чаще всего под терминалом понимается оконечное устройство ЭВМ, компьютер,
  предназначенное для создания диалога "человек - машина". Известны также более специализированные и распространенные устройства - банкоматы, кассовые аппараты со сканерами штрих-кода и так далее.
  
  
  
   Механические терминалы
  
  
  
  Первоначально в компьютерах (ЭВМ) в качестве терминалов использовались механические устройства,
  заимствованные из смежных технологий (связь и оргтехника) - телетайпы (типа ТА-67), телеграфные аппараты (СТА-2М), электрические пишущие машинки (ПМ типа CONSUL). Это был довольно длительный период, в течение которого сложились определенные стандарты, приемы работы оператора и протоколы ввода/вывода и интерпретации данных. Строка информации, вводимая оператором, являлась, как правило, командой, требующей выполнения определенных действий от ЭВМ (ОС). Конечная ширина листа (или бумажной ленты) печатающая машинка (80 знаков) ограничивала длину возможных команд. Признаком окончания ввода команды являлось нажатие клавиши <вк> (возврат каретки, она же "CR" - "Carriage Return", "Return", "Enter" и прочее и так далее, названий много). Реакция системы (ответ на запрос, сообщение об ошибке, небольшая порция выходных данных) также выводилась строками по 80 символов, образуя вместе с копиями команд протокол диалогового сеанса (или журнал - log) в бумажной форме.
  
  
  В ранних версиях операционной системы OS/360 и других систем того времени единственный механический терминал устанавливался в машинном зале и предназначался для оператора ЭВМ. Это устройство получило название консоль [2] (console).
  
  
  
  Появление в начале 1970 годов электронных терминалов, специально разработанных для использования с компьютерами, привело к настоящему перевороту в применении машин, существенно приблизив все типы пользователей к вычислительному процессу, облегчив разработку и отладку программ, а также эксплуатацию автоматизированных систем.
  
  
  
  С появлением Интернет, терминалы стали расширяться и распространяться с новой силой.
  
  
  
  Сноски
  
  
  
  
  Как известно, в строительстве и
   архитектуре консолью именуют конструкцию, состоящую из
   горизонтальной балки, опирающейся на подкос. Именно так выглядит
   столик для пультов оператора, прикрепленный к инженерному пульту
   управления большой ЭВМ.
  
  
  
  
  
  
   VT01
   ----
  
   VT01A-запоминающий дисплей на запоминающей трубке Tektronix Model 611 с разрешением 400 пар вертикальных линий и 300 пар горизонтальных линий.
  
  
  
  Рисование точки 20 мкс, полная заливка экрана 500 мс. VT01 может отобразить 30000 разрешенных точек. К шине UNIBUS подключается через преобразователи AA11-A, AA11-D.
  
   VT05
  
  ----
  
   VT05B-алфавитно-цифровой дисплей с собственной клавиатурой.
  Отображает одновременно до 1440 символов. Интерфейс полностью аналогичен телетайпу. Скорости обмена:
  110,150,300,600,1200,2400 бод. Может работать дуплексом или полудуплексом. Имеет режимы работы в полном ASCII (большие и маленькие буквы) и в неполном - только большие. Имеет непосредственную адресацию курсора. VT05 имеет ввод с телекамеры и способен отображать видеообразы одновременно с алфавитно - цифровой информацией из машины. Может
  работать с подчиненными мониторами в системах без управляющего компьютера.
  
  
  
  Формат экрана 20 строк по 72 позиции.
  
   VT50
  
  ----
  
   Формат экрана: 12 строк по 80 символов. Отрабатывается
  одновременное нажатие не более трех клавиш, возможное при быстром
  наборе. Если одна из первых двух нажатых клавиш была отпущена раньше
  третьей, набранный текст будет верным. Курсор имеет вид мигающего
  подчерка. Матрица символа 5х7 точек.
  
  
  
  Курсор может перемещаться с клавиатуры или программно: в
  левый верхний угол; вправо; влево; вверх; вниз. Имеется табулятор,
  фиксируемый на каждой восьмой позиции строки. Есть возможность
  удалить символы от курсора до конца строки или до конца экрана. При
  приеме из канала отображаемые символы запоминаются в памяти. Перед
  отображением все коды преобразуются к верхнему регистру.
  Алгоритм
  преобразования (кодов ASCII, в которых работают терминалы DEC)
  нижнего регистра к верхнему: если седьмой бит равен "1",
  очистить шестой бит.
  
  
  
  Принятый код 177 рассматривается как заполнитель, и не
  вызывает никакой реакции, что предусмотрено для совместимости с
  медленными механическими устройствами. Передается код 177 при нажатии
  клавиши DEL. Если клавиша DEL используется для забоя предыдущего
  символа, программное обеспечение должно сформировать
  последовательность "влево, пробел, влево".
  
  
   Команды
  и ESCape последовательности.
  
  
  
  В КОИ-7 коды от 000 до 037 являются управляющими. VT50
  отрабатывает шесть из них:
   Octal Action
   007 звонок
  
  010 курсор влево
   011 горизонтальная табуляция. Позиционирует
  курсор на следующую кратную 8 позицию, если она не более, чем 72-я.
  Далее - на каждую последующую.
   012 перевод строки. Опускает
  курсор на одну строку.
   015 возврат каретки. Курсор до упора
  влево.
   033 переводит терминал в ESCape-моду. Если он уже в
  ESC-моде, то переводит обратно в нормальную моду. После перехода в
  ESC-моду следующий принятый код рассматривается как команда.
  
  
  
  ESC sequences:
   Octal Char Action Taken
  
  033 ESC Изменяет моду.
   101 A курсор вверх
   103 B курсор
  вправо
   110 H "Home"- курсор в левый верхний угол.
  
  112 J стереть текст от курсора до конца экрана.
   113 K стереть
  текст от курсора до конца строки.
   132 Z чтение идентификатора
  типа терминала: терминал
   отвечает в линию определенную кодовую
  
  последовательность. VT50 with copier: 033 057 102;
   VT50 with no
  copier: 033 057 101;
   133 [ включает режим задержанного вывода
  
  134 \ выключает режим задержанного вывода.
  
  Скорости обмена,
  бод: 75, 110, 150, 300, 600, 1200, 2400, 4800, 9600.
  Имеется режим
  отключения от линии. При работе в полудуплексном режиме может быть
  использован режим отработки набираемых на клавиатуре символов (local
  copy) , включаемый аппаратно переключателем. Роллинг обычный и только
  вверх.
  
  
  
  
   VT52
   ----
   Формат экрана: 24 строки по 80
  символов. Кодировка ASCII.
  Отображаются большие и маленькие
  символы. Совместим вверх с VT50. По идентификационной
  последовательности программное обеспечение может определить тип
  дисплея. Программы, использующие моду задержанного вывода для
  межэкранных пересылок, написанные под VT50 будут работать без
  изменений, несмотря на различную емкость экрана.
   Команды и
  ESCape последовательности.
  
  Octal Action
  
  BEL 007 звонок
  BS 010 курсор влево (но не
  левее конца строки)
  TAB 011 горизонтальная табуляция.
  Позиционирует курсор на позиции:
  9,17,25,33,41,49,57,65,73,74,75,76,77,78,79,80.
  LF 012 перевод
  строки. Опускает курсор на одну строку. Если
   последняя -
  скроллинг.
  CR 015 возврат каретки. Курсор до упора
  влево.
  ESC 033 переводит терминал в ESCape-моду. Если он уже в
  ESC-моде, то переводит обратно в нормальную моду. После перехода в
  
   ESC-моду следующий принятый код рассматривается как команда.
  
   040-176 пробел и отображаемые символы. Печатаются на экране.
  
  NUL 000 игнорируется
  DEL 177 игнорируется
  
  ESC
  sequences:
   Octal Effect
  
  ESC = 033 075 в режим
  дополнительной клавиатуры. В этом режиме клавиши дополнительной
  клавиатуры выдают уникальные ESC-последовательности.
  ESC > 033
  076 выход из режима дополнительной клавиатуры в обычный режим.
  ESC
  A 033 101 курсор вверх на сторку. Не скроллирует, упирается в
  верхний край экрана.
  ESC B 033 102 курсор вниз на строку. Не
  скроллирует.
  ESC C 033 103 курсор вправо на позицию, пока не
  упрется. Последняя литера не забивается.
  ESC D 033 104 курсор
  влево на позицию, пока не упрется. Аналог BS.
  ESC H 033
  110 курсор в начало экрана: левый верхний угол.
  ESC I 033
  111 курсор на строку вверх, если уперся - скроллинг вниз.
  ESC
  J 033 112 стирает все от курсора до конца экрана
  ESC K 033
  113 стирает все от курсора до конца строки
  ESC Y 033 131 прямая
  адресация курсора
  ESC Z 033 132 чтение идентификатора типа
  терминала: терминал отвечает в линию определенную кодовую
  последовательность.
  ESC [ 033 133 вход в моду задержанного
  вывода
  ESC \ 033 134 отменяет задержанный вывод
  
  Прямая
  адресация курсора:
  
   ESC Y Line# Column#
  
   Line# - одна
  литера: код 040-верхняя строка, 041-вторая...
   067-последняя.
  
   Column# - одна литера от 040 (левая позиция) до 157 (самая
  правая)
   Курсор перемещается в указанную позицию.
  
  033 110
  эквивалентно 033 131 040 040
  
   Клавиша "BREAK"
  подвешивает линию в "0" пока нажата. Введена для
  совместимости с программным обеспечением, написанным под полудуплекс.
  
   Клавиша "REPEAT" разрешает автоповтор нажатого
  символа.
   Клавиши "SHIFT" изменяют текущий
  верхний/нижний регистр на
  противоположный, пока нажаты.
   Клавиша
  "CAPS LOCK" фиксирует верхний регистр независимо от
  нажатости клавиш переключения регистров, но только для букв.
   Клавиша
  "CONTROL" обнуляет два старших бита каждой нажимаемой (при
  нажатой "CONTROL") клавиши и вызывает передачу в линию
  кодов 000-037.
  
  Коды дополнительной клавиатуры:
  
  KEY
  LABEL IN NUMERIC- IN ALTERNATE-KEYPAD MODE
  
   0 0 ESC ?
  p
   1 1 ESC ? q
   2 2 ESC ? r
   3 3 ESC ? s
   4 4 ESC
  ? t
   5 5 ESC ? u
   6 6 ESC ? v
   7 7 ESC ? w
   8 8 ESC
  ? x
   9 9 ESC ? y
   . . ESC ? n
   - - ESC ? m
   , , ESC
  ? l
   ENTER CR ESC ? M
  up arrow ESC A ESC A
  down
  arrow ESC B ESC B
  right arrow ESC C ESC C
  left arrow ESC
  D ESC D
  left blank key PF1 ESC P ESC P
  center blank key
  PF2 ESC Q ESC Q
  right blank key PF3 ESC R ESC R
  PF4 ESC
  S ESC S
  
   Клавиши CONTROL, SHIFT, CAPS LOCK не влияют на коды
  дополнительной клавиатуры в обеих модах. Клавиша SCROLL имеет смысл
  только в моде задержанного вывода. Разрешает скроллинг одной строки
  либо всего экрана.
  
  
  
  В случае заполнения доступной части экрана, потребности
  вывести еще строку и задержанном выводе дисплей выдаст код XOFF (023)
  для торможения программы вывода. Для продолжения обмена посылается
  код XON (021).
  
  
  
  
   VT100 (ANSI)
   ------------
   Управляющие
  символы.
  
  SYMB NAM HEX DEC OCT Action for VT100
  
   NIL
   00 000. 000 игнорируется
  ^A SON 01 001. 001
  ^B STX 02 002. 002
  ^C ETX 03 003. 003
  ^D EOT 04 004. 004
  ^E ENQ 05 005. 005 запрос
  ^F ACK 06 006. 006
  ^G BEL 07 007. 007 звонок
  ^H BS 08 008. 010 влево
  ^I HT 09 009. 011 табуляция
  ^J LF 0А 010. 012 перевод
  строки
  ^K VT 0B 011. 013 перевод строки(вертикальная
  табуляция)
  ^L FF 0C 012. 014 перевод строки(перевод
  формата)
  ^M CR 0D 013. 015 возврат каретки
  ^N SO 0Е 014. 016 набор
  символов 1
  ^O SI 0F 015. 017 набор символов
  0
  ^P DLE 10 016. 020 AP1
  ^Q DC1 11 017. 021 востоновить
  передачу ' XON '
  ^R DC2 12 018. 022 DC2
  ^S DC3 13 019. 023 прервать
  передачу ' XOFF
  '
  ^T DC4 14 020. 024
  ^U NAK 15 021. 025
  ^V SYN 16 022. 026
  ^W ETB 17 023. 027
  ^X CAN 18 024. 030 аннулировать
  ^Y EM 19 025. 031
  ^Z SUB 1А 026. 032 аннулировать(символ
  замены)
  ^[ ESC 1B 027. 033 АР2
  ^\ FS 1C 028. 034
  ^] GS 1D 029. 035
  ^^ RS 1E 030. 036
  ^_ US 1F 031. 037
  
   DEL 7E исключение
  (забой)
  
  
  
  
  
   Управляющие последовательности.
  
  ESC
  = прикладной режим доп.клв. ENTER KEYPAD APPLICATION MODE
  ESC
  =0 Enter Auto Auxilatory Mode
  ESC > цифровой режим доп.клв.
  ENTER KEYPAD NUMERIC MODE
  ESC A
  ESC B
  ESC C
  ESC
  D активная позиция вниз на одну строку
  ESC E активная позиция в
  начало следующей строки
  ESC F
  ESC G
  ESC H установить
  табулятор SET TAB AT CURRENT COLUMN
  ESC I
  ESC J
  ESC K
  ESC
  L
  ESC M MOVE CURSOR UP ONE LINE
  ESC N
  ESC O
  ESC P
  ESC
  Q
  ESC R
  ESC S
  ESC T
  ESC U
  ESC V
  ESC W
  ESC X
  ESC
  Y
  ESC Z
  
  ESC c сброс
  ESC 0 ENTER CONCURRENT AUXILATORY
  MODE
  ESC 1 ENTER AUXILATORY CONTROL MODE
  ESC 2 EXIT
  AUXILATORY CONTROL MODE
  ESC 3
  ESC 4
  ESC 5
  ESC
  6
  ESC 7 сохранить поз. маркера , набор , граф.интерпретацию
  ESC
  8 востоновление маркера, номера набора символов и
   интерпретации
  граф.символов.
  
  ESC #0
  ESC #1 Exit Auto Auxilatory or
  Concurrent Auxilatory
  ESC #2 Output Cursor line to Auxilatory
  ESC
  #3 строка двойной высоты верхняя половинаА
  ESC #4 строка двойной
  высоты нижняя половина
  ESC #5 cтрока единичной ширины.
  ESC
  #6 строка двойной ширины
  ESC #8 заполнение экрана символом Е
  ESC
  #9
  ESC #> Perform keyclick
  
  ESC [PnA вверх Move cursor
  up n lines (1)
  ESC [PnB вниз Move cursor down n lines (1)
  ESC
  [PnC вправо Move cursor forward (right) n places (1)
  ESC
  [PnD влево Move cursor back (left) n places (1)
  ESC [ E
  ESC
  [ F
  ESC [ G
  ESC [Pn;PnH позиция маркера Position cursor
  to n row, n column (1,1)
  ESC [H Перемещение курсора в верхний
  левый угол.
  ESC [ I
  
  ESC [J Стирание всего, что ниже
  курсора.
  ESC [0J стирание символов с активной позиции до конца
  экрана
  ESC [1J стирание символов с исходной до активной
  позиции
  ESC [2J стирание символов всего экрана
  ESC
  [>3;RT;CL;RB;CRJ Erase all within top row (RT); left column (CL);
  
   bottom row (RB); right column (CR)
  
  ESC [K Стирание
  правой от курсора части строки.
  ESC [0K стирание символов от
  курсора до конца строки (0)
  ESC [1K от начала строки до
  курсора
  ESC [2K всей строки
  ESC [>3;CL;CRK Erase within
  line from left column (CL) to right column (CR)
  
  ESC [ L
  ESC
  [ M
  ESC [ N
  ESC [ O
  ESC [ P
  ESC [ Q
  ESC
  [ R
  ESC [ S
  ESC [ T
  ESC [ U
  ESC [ V
  ESC
  [ W
  ESC [ X
  ESC [ Y
  ESC [ Z
  
  ESC [ a
  
  ESC [ b
  ESC [ c
  ESC [ d
  ESC [ e
  
  ESC
  [Pn;Phf установление активной позиции Pn СТРОКА ,Ph СТОЛБЕЦ Same as
  
   ESC Pn;PnH (1,1)
  
  
  ESC [0g CLEAR TAB AT CURSOR COLUMN
  POSITION
  ESC [1g
  ESC [2g
  ESC [3g CLEAR ALL TAB STOPS
  ESC
  [>5g SET TABS EVERY 8 COLUMNS
  
  ESC [2h Блокирование
  клавиатуры.
  ESC [12h Выключение эха.
  ESC [20h SET NEW LINE MODE
  (AUTO LF WITH CR)
  ESC [?0h
  ESC [?1h SET CURSOR KEY APPLICATION
  MODE
  ESC [?2h SET ANSI MODE
  ESC [?3h SET 132COLUMNS MODE
  ESC
  [?4h SET SMOOTH SCROLL MODE (6 LINES A SECOND)
  ESC [?5h SET
  REVERSE SCREEN MODE
  ESC [?6h SET ORIGIN MODE (CURSOR TO START
  POS.)
  ESC [?7h SET AUTO WRAPAROUND MODE (CRLF AT LINE END)
  ESC
  [?8h SET AUTO REPEAT MODE
  ESC [?9h SET 240INTERLACE MODE
  ESC
  [?25h Включить курсор.
  ESC [?ESC [?=h
  ESC [?>h
  ESC
  [>0h
  ESC [>1h
  ESC [>2h
  ESC [>3h SET HEX
  KEYPAD MODE
  ESC [>4h SET CLEAR SCREEN ON FORM FEED
  ESC
  [>5h
  ESC [>6h SET IGNORE INCOMING XOFF
  ESC [>7h
  ESC
  [>8h
  ESC [>9h
  ESC [>10h
  ESC [>11h SET ERASE
  PAGE WITHIN MARGINS
  ESC [>12h SET TAB COMMAND WITH SPACES
  ESC
  [>13h
  ESC [>14h SET HALF DUPLEX
  
  ESC [ i
  ESC
  [ j
  ESC [ k
  
  ESC [2l Включение клавиатуры.
  ESC
  [12l Включение эха.
  ESC [20l RESET NEW LINE MODE
  ESC [?0l
  ESC
  [?1l RESET CURSOR KEY APPLICATION MODE
  ESC [?2l RESET TO VT52
  MODE
  ESC [?3l RESET TO 80COLUMNS MODE
  ESC [?4l RESET TO JUMP
  SCROLL MODE
  ESC [?5l RESET TO NORMAL SCREEN FROM REVERSE
  SCREEN
  ESC [?6l RESET TO CURSOR ORIGIN MODE (CURSOR TO HOME
  POS.)
  ESC [?7l RESET AUTO WRAPAROUND MODE
  ESC [?8l RESET AUTO
  REPEAT MODE
  ESC [?9l RESET 240INTERLACE MODE
  ESC
  [?25l Выключить курсор.
  ESC [?ESC [?=l
  ESC
  [?>l
   Ns= авто-возврат.
   Ns= режим управления маркером в
  доп.клв. -
   передача клавишами стрелок и код
  упровления.
   Ns= чересстрочная развертка 480[240] линий,
   Ns=
   исходный режим в верх окна ограниченого полями [в верх
  экрана].
   Ns=?5 режим сдвига экрана, экран светлый [темный].
  ESC
  [>0l
  ESC [>1l
  ESC [>2l
  ESC [>3l RESET TO
  NORMAL (NON - HEXADECIMAL) KEYPAD MODE
  ESC [>4l RESET TO FORM
  FEED IS LINE FEED
  ESC [>5l
  ESC [>6l RESET TO INCOMING
  XOFF ENABLED
  ESC [>7l
  ESC [>8l
  ESC [>9l
  ESC
  [>10l
  ESC [>11l RESET TO ERASE FULL SCREEN ON CLEAR
  COMMANDS
  ESC [>12l RESET TO TAB MOTION DIRECT
  ESC [>13l
  ESC
  [>14l RESET TO FULL DUPLEX
  
  ESC [0m SELECT NORMAL GRAPHIC
  RENDATION, VISUAL WITH NO ATTRIBUTES
  ESC [1m SELECT BOLD
  CHARACTERS
  ESC [2m
  ESC [3m
  ESC [4m UNDERLINE
  CHARACTERS
  ESC [5m BLINK CHARACTERS
  ESC [6m
  ESC
  [7m SELECT REVERSE VIDEO CHARACTERS
  ESC [8m
  ESC [9m
  
  ESC
  [6n REPORT CURSOR POSITION, RESPONSE IS: ESC [line;columnR
  ESC [
   o
  ESC [ p
  
  ESC [0q Turn OFF LED KEY
  ESC
  [1q Turn ON LED KEY
  
  ESC [RT;RBr SET SCROLLING REGION AT TOP
  ROW (RT), BOTTOM ROW (RB)
   DEFAULT IS ENTIRE SCREEN
  ESC [ s
  
  ESC [ t
  ESC [ u
  
  ESC [Pn;Pnv установить
  верхнее нижнее поле.
  
  ESC [0v MAKE CURSOR VISIBLE
  ESC [1v
   MAKE CURSOR INVISIBLE
  ESC [2v MAKE CURSOR UNDERLINE
  ESC [3v
   MAKE CURSOR REVERSE BLOCK
  ESC [4v MAKE CURSOR NON -
  BLINKING
  ESC [5v MAKE CURSOR BLINK
  ESC [6v
  ESC [7v
  ESC
  [8v
  ESC [9v
  
  ESC [0w ENABLE BLINKING ATTRIBUTE (0)
  ESC
  [1w
  ESC [2w
  ESC [3w
  ESC [4w
  ESC [5w
  ESC [6w
  ESC
  [7w
  ESC [8w
  ESC [9w
  
  ESC [ x
  
  ESC [ 2, Ps
  y тест надежности Ps СУММА:
   1 пусковой
   2 обратной
  связи данных
   4 модема
   8 продолжительное
  выполнение
   0 без тестов выполнить сброс
  
  ESC
  [0z Keyboard data to Communications Port
  ESC [1z Keyboard data
  to Auxilatory port
  ESC [2z Auxilatory Port to Communications
  Port
  ESC [3z Auxilatory Port to Display
  ESC [4z Cease input
  from Auxilatory Port
  
  ESC (A набор символов 0 ИКЗ DESIGNATE
  UK CHARACTER SET AS G0
  ESC (B набор символов 0 КОИ-7 DESIGNATE
  ASCII -"-
  ESC (0 набор символов 0 ГРАФ.СИМВОЛЫ -"-
  GRAPHIC -"-
  ESC (1 DESIGNATE CYRILLIC CHARACTER SET AS
  G0
  ESC (2 набор символов 0 ПОСТОЯННАЯ ПАМЯТЬ ДЛЯ ДОП.
  СИМВОЛОВ
  ESC )A набор символов 1 ИКЗ
  ESC )B набор
  символов 1 КОИ-7
  ESC )0 набор символов 1 ГРАФ.СИМВОЛЫ
  ESC
  )1 DESIGNATE CYRILLIC CHARACTER SET AS G1
  ESC )2 набор
  символов 1 ПОСТОЯННАЯ ПАМЯТЬ ДЛЯ ДОП. СИМВОЛОВ
  
  ESC [ Pn
   | запрос, в ответ ESC [?1;0c БЕЗ ДОПОЛНЕНИЙ
  ESC Z |> ESC
  [?1;1C ПДВ
  ^E | ESC [?1;2C РВВ
   ESC [?1;3C ПДВ И
  РВВ
   ESC [?1;4C ГИ
   ESC [?1;5C ГИ И ПДВ
   ESC
  [?1;6C ГИ И РВВ
   ESC [?1;7C ГИ , ПДВ И РВВ
   ПДВ -
  процессорная дополнительная возможность
   РВВ - расширенные
  возможности видеомонитора
   ГИ - возможность графического
  изобрaжения
  
  ESC [3N запрос о позиции маркера
  ESC
  [5n запрос о состоянии устройства
   сообщение о состоянии
  устройства: ESC [ Ps n
   0 готовность, исправность 3
  неисправность
  
  ESC [<ЗАЯВ>x запрос о параметрах
  видеотерминала
   ОТВЕТ: ESC
  [<ЗАЯВ>;<ЧЕТН>;;<СКОРПЕР>;<СКОРП>;<УМН>;<ФЛАТ>x
   ЗАЯВ 0
  разрешить незаявленые сообщения
   1 запретить незаявленые
  сообщения
   2 сообщение о параметрах видиотерм.
   3 сообщение
  доклад.
   ЧЕТ 1 нет контроля по четности/нечетности
   4
  контроль по нечетности
   5 контроль по четности
   N БИТЫ 1 8
  бит
   2 7 бит
   СКОР ПЕР. И СКОР ПР. 0 - 50 БИТ/С 8 -
   75
   16 - 110 24 - 134 .....
   112 - 9600 120
  - 19200
   УМН 1 скорость мумьтиплексирование
   символов
  16
   ФЛАГ 0-15 ДЛЯ ПДВ
  
   VT100 in VT52
  mode
   ------------------
  
  ESC A маркер вверх
  ESC
  B маркер вниз
  ESC C маркер вправо
  ESC D маркер влево
  ESC
  F псевдографика
  ESC G выход из псевдографики
  ESC
  H маркер в верхний левый угол
  ESC I маркер вверх, для первой
  строки сдвиг экрана вниз
  ESC J стирание экрана
  ESC K стирание
  строки
  ESC Y Pn Ps прямая адресация курсора строка и столбец
  
  ESC Z запрос, в ответ идет 'ESC/Z'
  ESC = режим
  дополнительной клавиатуры
  ESC > выход из режима дополнительной
  клавиатуры
  ESC < вход в VT100
  
   Кодировки символов
  ASCII:
   -------------------------
  
  SYMB NAM HEX DEC OCT
  
   NIL
   00 000. 000
  ^A SON 01 001. 001
  ^B STX 02 002. 002
  ^C ETX 03 003. 003
  ^D EOT 04 004. 004
  ^E ENQ 05 005. 005
  ^F ACK 06 006. 006
  ^G BEL 07 007. 007
  ^H BS 08 008. 010
  ^I HT 09 009. 011
  ^J LF 0А 010. 012
  ^K VT 0B 011. 013
  ^L FF 0C 012. 014
  ^M CR 0D 013. 015
  ^N SO 0Е 014. 016
  ^O SI 0F 015. 017
  ^P DLE 10 016. 020
  ^Q DC1 11 017. 021
  ^R DC2 12 018. 022
  ^S DC3 13 019. 023
  ^T DC4 14 020. 024
  ^U NAK 15 021. 025
  ^V SYN 16 022. 026
  ^W ETB 17 023. 027
  ^X CAN 18 024. 030
  ^Y EM 19 025. 031
  ^Z SUB 1А 026. 032
  ^[ ESC 1B 027. 033
  ^\ FS 1C 028. 034
  ^] GS 1D 029. 035
  ^^ RS 1E 030. 036
  ^_ US 1F 031. 037
   BLANK 20 032. 040
  ! 21 033. 041
  " 22 034. 042
  # 23 035. 043
  $ 24 036. 044
  % 25 037. 045
  & 26 038. 046
  ' 27 039. 047
  ( 28 040. 050
  ) 29 041. 051
  * 2A 042. 052
  + 2B 043. 053
  , 2C 044. 054
  - 2D 045. 055
  . 2E 046. 056
  / 2F 047. 057
  0 30 048. 060
  1 31 049. 061
  2 32 050. 062
  3 33 051. 063
  4 34 052. 064
  5 35 053. 065
  6 36 054. 066
  7 37 055. 067
  8 38 056. 070
  9 39 057. 071
  : 3A 058. 072
  ; 3B 059. 073
  < 3C 060. 074
  = 3D 061. 075
  > 3E 062. 076
  ? 3F 063. 077
  @ 40 064. 100
  A 41 065. 101
  B 42 066. 102
  C 43 067. 103
  D 44 068. 104
  E 45 069. 105
  F 46 070. 106
  G 47 071. 107
  H 48 072. 110
  I 49 073. 111
  J 4A 074. 112
  K 4B 075. 113
  L 4C 076. 114
  M 4D 077. 115
  N 4E 078. 116
  O 4F 079. 117
  P 50 080. 120
  Q 51 081. 121
  R 52 082. 122
  S 53 083. 123
  T 54 084. 124
  U 55 085. 125
  V 56 086. 126
  W 57 087. 127
  X 58 088. 130
  Y 59 089. 131
  Z 5A 090. 132
  [ 5B 091. 133
  \ 5C 092. 134
  ] 5D 093. 135
  ^ 5E 094. 136
  _ 5F 095. 137
  ` 60 096. 140
  a 61 097. 141
  b 62 098. 142
  c 63 099. 143
  d 64 100. 144
  e 65 101. 145
  f 66 102. 146
  g 67 103. 147
  h 68 104. 150
  i 69 105. 151
  j 6A 106. 152
  k 6B 107. 153
  l 6C 108. 154
  m 6D 109. 155
  n 6E 110. 156
  o 6F 111. 157
  p 70 112. 160
  q 71 113. 161
  r 72 114. 162
  s 73 115. 163
  t 74 116. 164
  u 75 117. 165
  v 76 118. 166
  w 77 119. 167
  x 78 120. 170
  y 79 121. 171
  z 7A 122. 172
  { 7B 123. 173
  | 7C 124. 174
  } 7D 125. 175
  ~ 7E 126. 176
   DEL 7F 127. 177
   nul 80 128. 200
   son 81 129. 201
   stx 82 130. 202
   etx 83 131. 203
   eot 84 132. 204
   enq 85 133. 205
   ack 86 134. 206
   bel 87 135. 207
   bs 88 136. 210
   ht 89 137. 211
   lf 8A 138. 212
   vt 8B 139. 213
   ff 8C 140. 214
   cr 8D 141. 215
   so 8E 142. 216
   si 8F 143. 217
   dle 90 144. 220
   dc1 91 145. 221
   dc2 92 146. 222
   dc3 93 147. 223
   dc4 94 148. 224
   nak 95 149. 225
   syn 96 150. 226
   etb 97 151. 227
   can 98 152. 230
   em 99 153. 231
   sub 9A 154. 232
   esc 9B 155. 233
   fs 9C 156. 234
   gs 9D 157. 235
   rs 9E 158. 236
   us 9F 159. 237
   blank A0 160. 240
  ! A1 161. 241
  " A2 162. 242 Символ
  "цент".
  # A3 163. 243 Символ "фунт
  стерлингов".
  $ A4 164. 244
  % A5 165. 245 Символ
  "иена"..
  & A6 166. 246
  ' A7 167. 247 Символ
  "параграф".
  ( A8 168. 250 Альтернативное изображение
  доллара.
  ) A9 169. 251 Символ защиты авторских
  прав.
  * AA 170. 252 Подчеркнутая буква а с
  подъемом.
  + AB 171. 253 Символ "много
  меньше".
  , AC 172. 254
  - AD 173. 255
  . AE 174. 256
  / AF 175. 257
  0 B0 176. 260 Символ
  "градус".
  1 B1 177. 261 Символ "плюс
  минус".
  2 B2 178. 262 Символ "квадрат числа (сноска
  2)".
  3 B3 179. 263 Символ "куб числа (сноска
  3)". .
  4 B4 180. 264
  5 B5 181. 265 .Греческая буква
  мю.
  6 B6 182. 266 Условное обозначение клавиши
  <ЗБ>.
  7 B7 183. 267 Символ
  "умножить".
  8 B8 184. 270
  9 B9 185. 271 Сноска
  1.
  : BA 186. 272 Изображение номера.
  ; BB 187. 273 Символ
  "много больше".
  < BC 188. 274 Символ "одна
  четвертая".
  = BD 189. 275 Символ
  "половина"..
  > BE 190. 276
  ? BF 191. 277
  ю C0 192. 300
  а C1 193. 301
  б C2 194. 302
  ц C3 195. 303
  д C4 196. 304
  е C5 197. 305
  ф C6 198. 306
  г C7 199. 307
  х C8 200. 310
  и C9 201. 311
  й CA 202. 312
  к CB 203. 313
  л CC 204. 314
  м CD 205. 315
  н CE 206. 316
  о CF 207. 317
  п D0 208. 320
  я D1 209. 321
  р D2 210. 322
  с D3 211. 323
  т D4 212. 324
  у D5 213. 325
  ж D6 214. 326
  в D7 215. 327
  ь D8 216. 330
  ы D9 217. 331
  з DA 218. 332
  ш DB 219. 333
  
  э DC 220. 334
  щ DD 221. 335
  ч DE 222. 336
  
  ъ DF 223. 337
  Ю E0 224. 340
  А E1 225. 341
  
  Б E2 226. 342
  Ц E3 227. 343
  Д E4 228. 344
  
  Е E5 229. 345
  Ф E6 230. 346
  Г E7 231. 347
  
  Х E8 232. 350
  И E9 233. 351
  Й EA 234. 352
  
  К EB 235. 353
  Л EC 236. 354
  М ED 237. 355
  
  Н EE 238. 356
  О EF 239. 357
  П F0 240. 360
  
  Я F1 241. 361
  Р F2 242. 362
  С F3 243. 363
  
  Т F4 244. 364
  У F5 245. 365
  Ж F6 246. 366
  
  В F7 247. 367
  Ь F8 248. 370
  Ы F9 249. 371
  
  З FA 250. 372
  Ш FB 251. 373
  Э FC 252. 374
  
  Щ FD 253. 375
  Ч FE 254. 376
   del FF 255. 377
  
  
  
  
  
  Квитирование - Процесс, в результате которого два независимых друг от друга устройства координируют свои сигналы и получают возможность работать совместно.
  
  
  
  А по сути - подтверждение приёма-передачи структурной единицы информации.
  
  
  
   Юникод
  
  
  
  
  
  [править][править]
  
  
  
  
  
  
  Материал из Википедии - свободной
   энциклопедии
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  Unicode Consortium
  
  
  
  
   Юнико́д[1]
   или Унико́д[2]
   (англ. Unicode) -
   стандарт кодирования символов, позволяющий представить знаки практически всех письменных языков.[3]
  
  
  
  
   Стандарт предложен в 1991
   году некоммерческой организацией "Консорциум Юникода"
   (англ. Unicode
   Consortium, Unicode Inc.).[4][5]
   Применение этого стандарта позволяет закодировать очень большое
   число символов из разных письменностей: в документах Unicode могут
   соседствовать китайские иероглифы,
   математические символы, буквы греческого
   алфавита, латиницы
   и кириллицы,
   при этом становится ненужным переключение кодовых
   страниц.[6]
  
  
  
  Стандарт состоит из двух основных разделов: универсальный набор
   символов (англ. UCS,
   universal character set) и семейство кодировок
   (англ. UTF,
   Unicode transformation format). Универсальный набор
   символов задаёт однозначное соответствие символов кодам -
   элементам кодового пространства, представляющим неотрицательные
   целые числа. Семейство кодировок определяет машинное представление
   последовательности кодов UCS.
  
  
  
  Коды
   в стандарте Юникод разделены на несколько областей. Область с кодами
   от U+0000 до U+007F содержит символы набора ASCII с соответствующими кодами. Далее расположены области знаков
   различных письменностей, знаки пунктуации и технические символы.
   Часть кодов зарезервирована для использования в будущем.[7]
   Под символы кириллицы выделены области знаков с кодами от U+0400 до
   U+052F, от U+2DE0 до U+2DFF, от U+A640 до U+A69F (см. Кириллица
   в Юникоде).[8]
  
  
  
  Содержание
  
  1 Предпосылки создания и развитие Юникода
  
  2 Версии Юникода
  
  3 Кодовое пространство
  
  4 Система кодирования
  
  5 Модифицирующие символы
  
  6 Формы нормализации
  
  6.1 Примеры
  
  7 Двунаправленное письмо
  
  8 Представленные символы
  
  9 ISO/IEC 10646
  
  10 Способы представления
  
  10.1 UTF-8
  
  10.2 Порядок байтов
  
  10.3 Юникод и традиционные кодировки
  
  10.4 Реализации
  
  11 Методы ввода
  
  11.1 Microsoft Windows
  
  11.2 Macintosh
  
  11.3 GNU/Linux
  
  12 Проблемы Юникода
  
  13 "Юникод" или "Уникод"?
  
  14 См. также
  
  15 Примечания
  
  16 Ссылки
  
  
  
  
   [править]
   Предпосылки создания и развитие Юникода
  
  
  
  К концу 1980-х
   годов стандартом стали 8-битные символы, при этом существовало
   множество разных 8-битных кодировок, и постоянно появлялись всё
   новые. Это объяснялось как постоянным расширением круга
   поддерживаемых языков, так и стремлением создать кодировку, частично
   совместимую с какой-нибудь другой (характерный пример -
   появление альтернативной
   кодировки для русского языка, обусловленное эксплуатацией
   западных программ, созданных для кодировки CP437).
   В результате появилась необходимость решения нескольких задач:
  
  
  
  
  
  
   Проблема "кракозябр"
   (отображения документов в неправильной кодировке):[6]
   её можно было решить либо последовательным внедрением методов
   указания используемой кодировки, либо внедрением единой для всех
   кодировки.
  
  
  
  
  
   Проблема ограниченности набора символов:[6]
   её можно было решить либо переключением шрифтов внутри документа,
   либо внедрением "широкой" кодировки. Переключение
   шрифтов издавна практиковалось в текстовых
   процессорах, причём часто использовались шрифты
   с нестандартной кодировкой, т. н. "dingbat fonts" -
   в итоге при попытке перенести документ в другую систему все
   нестандартные символы превращались в кракозябры.
  
  
  
  
  Проблема
   преобразования одной кодировки в другую: её можно было решить либо
   составлением таблиц перекодировки для каждой пары кодировок, либо
   использованием промежуточного преобразования в третью кодировку,
   включающую все символы всех кодировок.[9]
  
  
  
  
  Проблема дублирования шрифтов: традиционно для каждой
   кодировки делался свой шрифт, даже если эти кодировки частично (или
   полностью) совпадали по набору символов: эту проблему можно было
   решить, делая "большие" шрифты, из которых потом
   выбираются нужные для данной кодировки символы - однако
   это требует создания единого реестра символов, чтобы определять,
   чему что соответствует.
  
  
  
  
  
  
  Было признано необходимым создание единой "широкой"
   кодировки. Кодировки с переменной длиной символа, широко
   использующиеся в Восточной Азии, были признаны слишком сложными в
   использовании, поэтому было решено использовать символы
   фиксированной ширины. Использование 32-битных символов казалось
   слишком расточительным, поэтому было решено использовать 16-битные.
  
  
  
  Таким образом, первая версия Юникода представляла собой кодировку
   с фиксированным размером символа в 16 бит, то есть общее число кодов
   было 216 (65 536). Отсюда происходит практика
   обозначения символов четырьмя шестнадцатеричными цифрами (например,
   U+0410). При этом в Юникоде планировалось кодировать не
   все существующие символы, а только те, которые необходимы в
   повседневном обиходе. Редко используемые символы должны были
   размещаться в "области пользовательских символов"
   (private use area), которая первоначально
   занимала коды U+D800...U+F8FF. Чтобы использовать
   Юникод также и в качестве промежуточного звена при преобразовании
   разных кодировок друг в друга, в него включили все символы,
   представленные во всех наиболее известных кодировках.
  
  
  
  В дальнейшем, однако, было принято решение кодировать все символы
   и в связи с этим значительно расширить кодовую область. Одновременно
   с этим, коды символов стали рассматриваться не как 16-битные
   значения, а как абстрактные числа, которые в компьютере могут
   представляться множеством разных способов (см. Способы
   представления).
  
  
  
  Поскольку в ряде
   компьютерных систем (например, Windows
   NT[10])
   фиксированные 16-битные символы уже использовались в качестве
   кодировки по умолчанию, было решено все наиболее важные знаки
   кодировать только в пределах первых 65 536 позиций (так
   называемая англ. basic
   multilingual plane, BMP). Остальное пространство
   используется для "дополнительных символов"
   (англ. supplementary
   characters): систем письма вымерших языков или очень
   редко используемых китайских
   иероглифов, математических и музыкальных символов.
  
  
  
  Для совместимости со старыми 16-битными системами была изобретена
   система UTF-16,
   где первые 65 536 позиций, за исключением позиций из интервала
   U+D800...U+DFFF, отображаются непосредственно как 16-битные
   числа, а остальные представляются в виде "суррогатных пар"
   (первый элемент пары из области U+D800...U+DBFF, второй элемент
   пары из области U+DC00...U+DFFF). Для суррогатных пар была
   использована часть кодового пространства (2048 позиций), ранее
   отведённого для "символов для частного использования".
  
  
  
  Поскольку в UTF-16 можно отобразить только 220+216−2048
   (1 112 064) символов, то это число и было выбрано в
   качестве окончательной величины кодового пространства Юникода.
  
  
  
  Хотя кодовая область Юникода была расширена за пределы 216
   уже в версии 2.0, первые символы в "верхней" области
   были размещены только в версии 3.1.
  
  
  
  Роль этой кодировки в веб-секторе
   постоянно растёт, на начало 2010 доля веб-сайтов, использующих
   Юникод, составила около 50 %.[11]
  
  
  
  
   [править]
   Версии Юникода
  
  
  
  По мере изменения и пополнения таблицы символов системы Юникода и
   выхода новых версий этой системы, - а эта работа ведётся
   постоянно, поскольку изначально система Юникод включала только Plane
   0 - двухбайтные коды, - выходят и новые
   документы ISO.
   Система Юникод существует в общей сложности в следующих версиях:
  
  
  
  
  
  1.1 (соответствует стандарту
   ISO/IEC 10646-1:1993),
   стандарт 1991-1995 годов.
  
  
  
  
  2.0, 2.1 (тот же стандарт ISO/IEC
   10646-1:1993 плюс дополнения: "Amendments" с 1-го
   по 7-е и "Technical Corrigenda" 1 и 2), стандарт 1996
   года.
  
  
  
  
  3.0 (стандарт ISO/IEC
   10646-1:2000), стандарт 2000 года.
  
  
  
  
  3.2, стандарт 2002
   года.
  
  
  
  
  4.0, стандарт 2003.
  
  
  
  
  4.01, стандарт 2004.
  
  
  
  
  4.1, стандарт 2005.
  
  
  
  
  5.0, стандарт 2006.
  
  
  
  
  5.1, стандарт 2008.
  
  
  
  
  5.2, стандарт 2009.
  
  
  
  
  6.0, стандарт 2010.
  
  
  
  
  
  
  
   [править]
   Кодовое пространство
  
  
  
  Хотя формы записи UTF-8 и UTF-32 позволяют кодировать до 231
   (2 147 483 648) кодовых позиций, было принято решение
   использовать лишь 1 112 064 для совместимости с UTF-16.
   Впрочем, даже и этого более чем достаточно - сегодня (в
   версии 6.0) используется чуть менее 110 000 кодовых позиций
   (109 242 графических и 273 прочих символов).
  
  
  
  Кодовое
   пространство разбито на 17 плоскостей по 216
   (65536) символов. Нулевая плоскость называется базовой, в ней
   расположены символы наиболее употребительных письменностей. Первая
   плоскость используется, в основном, для исторических письменностей,
   вторая - для редко используемых иероглифов ККЯ,
   третья зарезервирована для архаичных китайских иероглифов[12].
   Плоскости 15 и 16 выделены для частного употребления.[7]
  
  
  
  Для обозначения символов Unicode используется запись вида
   "U+xxxx" (для кодов 0...FFFF), или "U+xxxxx"
   (для кодов 10000...FFFFF), или "U+xxxxxx"
   (для кодов 100000...10FFFF), где xxx -
   шестнадцатеричные цифры. Например, символ "я" (U+044F) имеет код 044F16
   = 110310.
  
  
  
  
   [править]
   Система кодирования
  
  
  
  
  Универсальная система кодирования (Юникод) представляет собой
   набор графических символов и способ их кодирования для компьютерной обработки текстовых данных.
  
  
  
  Графические символы - это символы, имеющие видимое изображение. Графическим символам противопоставляются управляющие символы и символы форматирования.
  
  
  
  Графические символы включают в себя следующие группы:
  
  
  
  
  
  буквы, содержащиеся хотя бы в одном из обслуживаемых алфавитов;
  
  
  
  
  цифры;
  
  
  
  
  знаки пунктуации;
  
  
  
  
  специальные знаки
   (математические,
   технические, идеограммы
   и пр.);
  
  
  
  
  разделители.
  
  
  
  
  
  
  Юникод - это система для линейного представления
   текста. Символы, имеющие дополнительные над- или подстрочные
   элементы, могут быть представлены в виде построенной по определённым
   правилам последовательности кодов (составной вариант, composite
   character) или в виде единого символа (монолитный вариант,
   precomposed character).
  
  
  
  
   [править]
   Модифицирующие символы
  
  
  
  
  
  
  
  
  
  
  
  
  
  Представление символа "Й" (U+0419) в виде базового символа "И" (U+0418) и модифицирующего символа " ̆"(U+0306)
  
  
  
  Графические символы в Юникоде подразделяются на протяжённые и непротяжённые (бесширинные). Непротяжённые символы при отображении не занимают места в строке.
   К ним относятся, в частности, знаки ударения и прочие диакритические знаки. Как протяжённые, так и непротяжённые символы имеют собственные коды. Протяжённые символы иначе называются базовыми (англ. base characters), а непротяжённые - модифицирующими
   (англ. combining
   characters); причём последние не могут встречаться
   самостоятельно. Например, символ "á" может быть
   представлен как последовательность базового символа "a"
   (U+0061) и модифицирующего символа " ́"
   (U+0301) или как монолитный символ "á" (U+00C1).
  
  
  
  Особый тип модифицирующих символов - селекторы варианта начертания (англ. variation selectors). Они действуют только на те символы, для которых такие варианты определены. В версии 5.0 варианты начертания определены для ряда математических символов, для символов традиционного монгольского алфавита и для символов монгольского квадратного письма.
  
  
  
  
  
   [править]
   Формы нормализации
  
  
  
  
  Поскольку одни и те же символы можно представить различными кодами, что иногда затрудняет обработку, существуют процессы нормализации, предназначенные для приведения текста к определённому стандартному виду.
  
  
  
  В стандарте Юникода определены 4 формы нормализации текста:
  
  
  
  
  
  Форма нормализации D (NFD) -
   каноническая декомпозиция. В процессе приведения текста в эту форму
   все составные символы рекурсивно заменяются на несколько составных,
   в соответствии с таблицами декомпозиции.
  
  
  
  
  Форма нормализации C (NFC) -
   каноническая декомпозиция с последующей канонической композицией.
   Сначала текст приводится к форме D, после чего выполняется
   каноническая композиция - текст обрабатывается от начала
   к концу и выполняются следующие правила:
  
  
  
  
  
  
  Символ S является начальным,
   если он имеет нулевой класс модификации в базе символов Юникода.
  
  
  
  
  В любой последовательности
   символов, стартующей с начального символа S, символ C блокируется
   от S, если и только если между S и C есть какой-либо символ B,
   который или является начальным, или имеет одинаковый или больший
   класс модификации, чем C. Это правило распространяется только на
   строки, прошедшие каноническую декомпозицию.
  
  
  
  
  Первичным композитом
   считается символ, у которого есть каноническая декомпозиция в базе
   символов Юникода (или каноническая декомпозиция для хангыля
   и он не входит в список
   исключений).
  
  
  
  
  Символ X может быть первично
   совмещён с символом Y, если и только если существует первичный
   композит Z, канонически эквивалентный последовательности .
  
  
  
  
  Если очередной символ C не
   блокируется последним встреченным начальным базовым символом L и
   он может быть успешно первично совмещён с ним, то L заменяется на
   композит L-C, а C удаляется.
  
  
  
  
  
  
  Форма нормализации KD (NFKD) -
   совместимая декомпозиция. При приведении в эту форму все составные
   символы заменяются, используя как канонические карты декомпозиции
   Юникода, так и совместимые карты декомпозиции, после чего результат
   ставится в каноническом порядке.
  
  
  
  
  Форма нормализации KC (NFKC) - совместимая
   декомпозиция с последующей канонической композицией.
  
  
  
  
  
  
  Термины "композиция" и "декомпозиция"
   понимают под собой соответственно соединение или разложение символов
   на составные части.
  
  
  
  
  
   [править]
   Примеры
  
  
  
  
  Исходный текст
  
  NFD
  
  NFC
  
  NFKD
  
  NFKC
  
  Français
  
  Franc\u0327ais
  
  Fran\xe7ais
  
  Franc\u0327ais
  
  Fran\xe7ais
  
  А, Ё, Й
  
  \u0410, \u0415\u0308, \u0418\u0306
  
  \u0410, \u0401, \u0419
  
  \u0410, \u0415\u0308, \u0418\u0306
  
  \u0410, \u0401, \u0419
  
  が
  
  \u304b\u3099
  
  \u304c
  
  \u304b\u3099
  
  \u304c
  
  Henry IV
  
  Henry IV
  
  Henry IV
  
  Henry IV
  
  Henry IV
  
  Henry Ⅳ
  
  Henry \u2163
  
  Henry \u2163
  
  Henry IV
  
  Henry IV
  
  
  
  
  
   [править]
   Двунаправленное письмо
  
  
  
  
  Стандарт Юникод поддерживает письменности языков как с направлением написания слева направо (англ. left-to-right, LTR), так и с написанием справа налево (англ. right-to-left, RTL) - например, арабское и еврейское письмо. В обоих случаях символы хранятся в "естественном" порядке; их отображение с учётом нужного направления письма обеспечивается приложением.
  
  
  
  Кроме того, Юникод поддерживает комбинированные тексты, сочетающие фрагменты с разным направлением письма. Данная возможность называется двунаправленность (англ. bidirectional text, BiDi). Некоторые упрощённые обработчики текста (например, в сотовых телефонах) могут поддерживать Юникод, но не иметь поддержки двунаправленности. Все символы Юникода поделены на несколько категорий: пишущиеся слева направо, пишущиеся справа налево, и пишущиеся в любом направлении. Символы последней категории (в основном это знаки пунктуации) при отображении принимают направление окружающего их текста.
  
  
  
  
  
   [править]
   Представленные символы
  
  
  
  
  
  
  Основная статья: Символы,
   представленные в Юникоде
  
  
  
  
  
  
  
  
  
  
  
  
  
  Схема базовой плоскости Unicode, см. описание
  
  
  
  Юникод включает практически все современные письменности,
   в том числе:
  
  
  
  
  
  арабскую,
  
  
  
  
  армянскую,
  
  
  
  
  бенгальскую,
  
  
  
  
  бирманскую,
  
  
  
  
  глаголицу,
  
  
  
  
  греческую,
  
  
  
  
  грузинскую,
  
  
  
  
  деванагари,
  
  
  
  
  еврейскую,
  
  
  
  
  кириллицу,
  
  
  
  
  китайскую
   (китайские иероглифы активно используются в японском
   языке, а также достаточно редко в корейском),
  
  
  
  
  коптскую,
  
  
  
  
  кхмерскую,
  
  
  
  
  латинскую,
  
  
  
  
  тамильскую,
  
  
  
  
  корейскую
   (хангыль),
  
  
  
  
  чероки,
  
  
  
  
  эфиопскую,
  
  
  
  
  японскую
   (которая включает в себя кроме китайских
   иероглифов ещё и слоговую
   азбуку),
  
  
  
  
  
  
  и другие.
  
  
  
  С академическими целями добавлены многие исторические письменности, в том числе: руны,
   древнегреческая,
   египетские
   иероглифы, клинопись,
   письменность
   майя, этрусский
   алфавит.
  
  
  
  В Юникоде представлен широкий набор математических
   и музыкальных
   символов, а также пиктограмм.
  
  
  
  Однако в Юникод принципиально не включаются логотипы компаний и продуктов, хотя они и встречаются в шрифтах (например, логотип Apple в кодировке MacRoman (0xF0) или логотип Windows в шрифте Wingdings (0xFF)). В юникодовских шрифтах логотипы должны размещаться только в области пользовательских символов.
  
  
  
  
  [править]
   ISO/IEC 10646
  
  
  
  
  Консорциум Юникода работает в тесной связи с рабочей группой ISO/IEC/JTC1/SC2/WG2, которая занимается разработкой международного стандарта 10646 (ISO/IEC 10646). Между стандартом Юникода и ISO/IEC 10646 установлена синхронизация, хотя каждый стандарт использует свою терминологию и систему документации.
  
  
  
  Сотрудничество Консорциума Юникода с Международной организацией по стандартизации (англ. International Organization for Standardization, ISO) началось в 1991 году. В 1993 году ISO выпустила стандарт DIS 10646.1. Для синхронизации с ним Консорциум утвердил стандарт Юникода версии 1.1, в который были внесены дополнительные символы из DIS 10646.1. В результате значения закодированных символов в Unicode 1.1 и DIS 10646.1 полностью совпали.
  
  
  
  В дальнейшем сотрудничество двух организаций продолжилось. В 2000 году стандарт Unicode 3.0 был синхронизирован с ISO/IEC 10646-1:2000. Предстоящая третья версия ISO/IEC 10646 будет синхронизирована с Unicode 4.0. Возможно, эти спецификации даже будут опубликованы как единый стандарт.
  
  
  
  Аналогично форматам UTF-16 и UTF-32 в стандарте Юникода, стандарт ISO/IEC 10646 также имеет две основные формы кодирования символов: UCS-2 (2 байта на символ, аналогично UTF-16) и UCS-4 (4 байта на символ, аналогично UTF-32). UCS значит универсальный многооктетный (многобайтовый) кодированный набор символов
   (англ. universal multiple-octet coded character set). UCS-2 можно считать подмножеством UTF-16 (UTF-16 без суррогатных пар), а UCS-4 является синонимом для UTF-32.
  
  
  
  
  
   [править]
   Способы представления
  
  
  
  Юникод имеет несколько форм представления (англ. Unicode
   transformation format, UTF):
   UTF-8, UTF-16
   (UTF-16BE, UTF-16LE) и UTF-32 (UTF-32BE, UTF-32LE). Была разработана
   также форма представления UTF-7 для передачи по семибитным каналам,
   но из-за несовместимости с ASCII
   она не получила распространения и не включена в стандарт. 1
   апреля 2005 года
   были предложены две шуточные формы представления: UTF-9 и UTF-18
   (RFC 4042).
  
  
  
  В Microsoft
   Windows NT и
   основанных на ней системах Windows
   2000 и Windows
   XP в основном используется
   форма UTF-16LE. В UNIX-подобных
   операционных
   системах GNU/Linux,
   BSD и Mac
   OS X принята форма UTF-8 для файлов и UTF-32 или UTF-8 для
   обработки символов в оперативной
   памяти.
  
  
  
  Punycode -
   другая форма кодирования последовательностей Unicode-символов в так
   называемые ACE-последовательности, которые состоят только из
   алфавитно-цифровых символов, как это разрешено в доменных именах.
  
  
  
  [править]
   UTF-8
  
  
  
  
  
  Основная статья: UTF-8
  
  
  
   UTF-8 - представление Юникода, обеспечивающее наилучшую
   совместимость со старыми системами, использовавшими 8-битные
   символы. Текст, состоящий только из символов с номером меньше 128,
   при записи в UTF-8 превращается в обычный текст ASCII.
   И наоборот, в тексте UTF-8 любой байт
   со значением меньше 128 изображает символ ASCII с тем же кодом.
   Остальные символы Юникода изображаются последовательностями длиной
   от 2 до 6 байт (на деле, только до 4 байт, поскольку в Юникоде нет
   символов с кодом больше 10FFFF, и вводить их в будущем не
   планируется), в которых первый байт всегда имеет вид 11xxxxxx,
   а остальные - 10xxxxxx.
  
  
  
  Формат UTF-8 был изобретён 2
   сентября 1992
   года Кеном
   Томпсоном и Робом
   Пайком и реализован в Plan
   9[13]. Сейчас стандарт
   UTF-8 официально закреплён в документах RFC
   3629 и ISO/IEC 10646 Annex D.
  
  
  
  Символы UTF-8 получаются из Unicode следующим
   образом:
  
  
  
  Unicode UTF-8:
  0x00000000 - 0x0000007F: 0xxxxxxx
  0x00000080 - 0x000007FF: 110xxxxx 10xxxxxx
  0x00000800 - 0x0000FFFF: 1110xxxx 10xxxxxx 10xxxxxx
  0x00010000 - 0x001FFFFF: 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
  
   Теоретически возможны, но не включены в стандарт также:
  
  
  
  0x00200000 - 0x03FFFFFF: 111110xx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx
  0x04000000 - 0x7FFFFFFF: 1111110x 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx
  
   Несмотря на то, что UTF-8 позволяет указать один и тот же
   символ несколькими способами, только наиболее короткий из них
   правильный. Остальные формы должны отвергаться по соображениям
   безопасности.
  
  
  
  
  
   [править]
   Порядок байтов
  
  
  
  
  В потоке данных UTF-16 старший байт может записываться либо перед младшим (англ. UTF-16 big-endian), либо после младшего (англ. UTF-16 little-endian). Аналогично существует два варианта четырёхбайтной кодировки - UTF-32BE и UTF-32LE.
  
  
  
  Для определения формата представления Юникода в текстовом файле используется приём, по которому в начале текста записывается символ U+FEFF (неразрывный пробел с нулевой шириной), также именуемый меткой порядка байтов (англ. byte order mark, BOM). Этот способ позволяет различать UTF-16LE и UTF-16BE, поскольку символа U+FFFE не существует. Также он иногда применяется для обозначения формата UTF-8, хотя к этому формату и неприменимо понятие порядка байтов. Файлы, следующие этому соглашению, начинаются с таких последовательностей байтов:
  
  
  
  
  
  UTF-8
  
  
   EF BB BF
  
  
   UTF-16BE
  
  
   FE FF
  
  
   UTF-16LE
  
  
   FF FE
  
  
   UTF-32BE
  
  
   00 00 FE FF
  
  
   UTF-32LE
  
  
   FF FE 00 00
  
  
  
  
   К сожалению, этот способ не позволяет надёжно различать UTF-16LE и UTF-32LE, поскольку символ U+0000 допускается Юникодом (хотя реальные тексты редко начинаются с него).
  
  
  
  Файлы в кодировках UTF-16 и UTF-32, не содержащие BOM, должны иметь порядок байтов big-endian (unicode.org).
  
  
  
  
  
   [править]
   Юникод и традиционные кодировки
  
  
  
  
  Внедрение Юникода привело к изменению подхода к традиционным
   8-битным кодировкам. Если раньше кодировка задавалась шрифтом, то
   теперь она задаётся таблицей соответствия между данной кодировкой и
   Юникодом. Фактически 8-битные кодировки превратились в форму
   представления некоторого подмножества Юникода. Это намного упростило
   создание программ, которые должны работать с множеством разных
   кодировок: теперь, чтобы добавить поддержку ещё одной кодировки,
   надо всего лишь добавить ещё одну таблицу перекодировки в Юникод.
  
  
  
  Кроме того, многие форматы данных позволяют вставлять любые
   символы Юникода, даже если документ записан в старой 8-битной
   кодировке. Например, в HTML можно использовать коды
   с амперсандом.
  
  
  
  
   [править]
   Реализации
  
  
  
  Большинство современных операционных систем в той или иной
   степени обеспечивают поддержку Юникода.
  
  
  
  В операционных системах семейства Windows
   NT для внутреннего представления имён файлов и других системных
   строк используется двухбайтовая кодировка UTF-16LE. Системные
   вызовы, принимающие строковые параметры, существуют в однобайтном и
   двухбайтном вариантах. Подробнее см. в статье Юникод
   в операционных системах Microsoft.
  
  
  
  UNIX-подобные
   операционные системы, в том числе GNU/Linux,
   BSD, Mac
   OS X, используют для представления Юникода кодировку UTF-8.
   Большинство программ могут работать с UTF-8 как с традиционными
   однобайтными кодировками, не обращая внимания на то, что символ
   представляется как несколько последовательных байт. Для работы с
   отдельными символами строки обычно перекодируются в UCS-4, так что
   каждому символу соответствует машинное
   слово.
  
  
  
  Одной из первых успешных коммерческих реализаций Юникода стала
   среда программирования Java.
   В ней принципиально отказались от 8-битного представления символов в
   пользу 16-битного. Сейчас большинство языков программирования
   поддерживают строки Юникода, хотя их представление может различаться
   в зависимости от реализации.
  
  
  
  
   [править]
   Методы ввода
  
  
  
  Поскольку ни одна раскладка
   клавиатуры не может позволить вводить все символы Юникода
   одновременно, от операционных
   систем и прикладных
   программ требуется поддержка альтернативных методов ввода
   произвольных символов Юникода.
  
  
  
  [править]
   Microsoft
   Windows
  
  
  
  
  
  Основная статья: Юникод
   в операционных системах Microsoft
  
  
  
   Начиная с Windows
   2000, служебная программа "Таблица символов"
   (charmap.exe) показывает все символы в ОС и позволяет копировать их
   в буфер обмена.
   Похожая таблица есть, например, в Microsoft
   Word.
  
  
  
  Иногда можно набрать шестнадцатеричный
   код, нажать Alt+X,
   и код будет заменён на соответствующий символ, например, в WordPad,
   Microsoft Word. В редакторах Alt+X выполняет и обратное
   преобразование.
  
  
  
  Во многих программах MS Windows, чтобы получить символ Unicode,
   нужно при нажатой клавише Alt набрать десятичное значение кода
   символа на цифровой клавиатуре. Например, полезными при наборе
   кириллических текстов будут комбинации Alt+0171 (") и Alt+0187
   ("). Интересна также комбинация Alt+0133 (...).
  
  
  
  [править]
   Macintosh
  
  
  
  В Mac OS 8.5 и
   более поздних версиях поддерживается метод ввода, называемый
   "Unicode Hex Input". При зажатой клавише Option
   требуется набрать четырёхзначный шестнадцатеричный код требуемого
   символа. Этот метод позволяет вводить символы с кодами, большими
   U+FFFF, используя пары суррогатов; такие пары операционной системой
   будут автоматически заменены на одиночные символы. Этот метод ввода
   перед использованием нужно активизировать в соответствующем разделе
   системных настроек и затем выбрать как текущий метод ввода в меню
   клавиатуры.
  
  
  
  Начиная с Mac OS
   X 10.2, существует также приложение "Character Palette",
   позволяющее выбирать символы из таблицы, в которой можно выделять
   символы определённого блока или символы, поддерживаемые конкретным
   шрифтом.
  
  
  
  [править]
   GNU/Linux
  
  
  
  
  
  Основная статья: Юникод
   в GNU/Linux
  
  
  
   В GNOME также есть
   утилита "Таблица символов", позволяющая отображать
   символы определённого блока или системы письма и предоставляющая
   возможность поиска по названию или описанию символа. Когда код
   нужного символа известен, его можно ввести в соответствии со
   стандартом ISO 14755:
   при зажатых клавишах Ctrl и Shift ввести шестнадцатеричный код
   (начиная с некоторой версии GTK+ ввод кода нужно предварить нажатием
   клавиши "U"). Вводимый шестнадцатеричный код
   может иметь до 32 бит в длину, позволяя вводить любые символы
   Юникода без использования суррогатных пар.
  
  
  
  Все приложения X
   Window, включая GNOME и KDE,
   поддерживают ввод при помощи клавиши Compose. Для клавиатур, на
   которых нет отдельной клавиши Compose,
   для этой цели можно назначить любую клавишу - например,
   Caps Lock.
  
  
  
  Консоль GNU/Linux также допускает ввод символа Юникода по его
   коду - для этого десятичный код символа нужно ввести
   цифрами расширенного блока клавиатуры при зажатой клавише Alt. Можно
   вводить символы и по их шестнадцатеричному коду: для этого нужно
   зажать клавишу AltGr, и для ввода цифр A-F использовать
   клавиши расширенного блока клавиатуры от NumLock до Enter (по
   часовой стрелке). Поддерживается также и ввод в соответствии с ISO
   14755. Для того чтобы перечисленные способы могли работать, нужно
   включить в консоли режим Юникода вызовом unicode_start(1) и
   выбрать подходящий шрифт вызовом setfont(8).
  
  
  
  Mozilla
   Firefox для GNU/Linux поддерживает ввод символов по ISO 14755.
  
  
  
  
   [править]
   Проблемы Юникода
  
  
  
  В Юникоде английское "a" и польское "a" -
   один и тот же символ. Точно так же одним символом (но отличающимся
   от "a" латинского) считаются русское "а" и
   сербское "а". Такой принцип кодирования не универсален;
   по-видимому, решения "на все случаи жизни" вообще не
   может существовать.
  
  
  
  
  
  Тексты на китайском,
   корейском
   и японском
   языке имеют традиционное написание сверху вниз, начиная с правого
   верхнего угла. Переключение горизонтального и вертикального
   написания для этих языков не предусмотрено в Юникоде -
   это должно осуществляться средствами языков
   разметки или внутренними механизмами текстовых
   процессоров.
  
  
  
  
  Юникод предусматривает
   возможность разных начертаний одного и того же символа в
   зависимости от языка. Так, китайские
   иероглифы могут иметь разные начертания в китайском, японском
   (кандзи) и
   корейском (ханчча),
   но при этом в Юникоде обозначаться одним и тем же символом (так
   называемая CJK-унификация), хотя упрощённые и полные иероглифы всё
   же имеют разные коды. Часто возникают накладки, когда, например,
   японский текст выглядит "по-китайски". Аналогично,
   русский и
   сербский языки
   используют разное начертание курсивных букв п и т (в
   сербском они выглядят как и и ш, см. сербский
   курсив). Поэтому нужно следить, чтобы текст всегда был
   правильно помечен как относящийся к тому или другому языку.
  
  
  
  
  Перевод
   из строчных букв в заглавные тоже зависит от языка. Например: в
   турецком
   существуют буквы İi
   и Iı - таким образом, турецкие правила
   изменения регистра конфликтуют с английскими,
   которые предписывают "i" переводить в "I".
   Подобные проблемы есть и в других языках - например, в
   канадском диалекте французского языка регистр переводится немного
   не так, как во Франции.[14]
  
  
  
  
  Даже с арабскими
   цифрами есть определённые типографские тонкости: цифры бывают
   "прописными" и "строчными",
   пропорциональными и моноширинными[15] -
   для Юникода разницы между ними нет. Подобные нюансы остаются за
   программным обеспечением.
  
  
  
  
  
  
  Некоторые недостатки связаны не с самим Юникодом, а с
   возможностями обработчиков текста.
  
  
  
  
  
  
   Файлы с текстом в Юникоде занимают больше места в памяти, так как
   один символ кодируется не одним байтом, как в различных
   национальных кодировках, а последовательностью байтов (исключение
   составляет UTF-8 для языков, алфавит которых укладывается в ASCII,
   а также наличие в тексте символов двух и более языков, алфавит
   которых не укладывается в ASCII[16]).
   Файл шрифта, необходимый для отображения всех символов таблицы
   Юникод, занимает сравнительно много места в памяти и требует
   бо́льших вычислительных ресурсов[17].
   С увеличением мощности компьютерных систем и удешевлением памяти и
   дискового пространства эта проблема становится всё менее
   существенной; тем не менее, она остаётся и в ближайшем будущем
   останется актуальной для портативных устройств, например, для
   мобильного телефона[18].
  
  
  
  
  Хотя поддержка Юникода
   реализована в наиболее распространённых операционных системах, до
   сих пор не всё прикладное программное обеспечение поддерживает
   корректную работу с ним. В частности, не всегда обрабатываются
   метки BOM и плохо поддерживаются диакритические символы. Проблема
   является временной и есть следствие сравнительной новизны
   стандартов Юникода (в сравнении с однобайтовыми национальными
   кодировками).
  
  
  
  
  Производительность некоторых
   программ снижается при использовании Юникода вместо однобайтовых
   кодировок.
  
  
  
  
  Философия
   UNIX (перенаправление ввода-вывода из одной программы в другую)
   неявно подразумевает, что минимальная единица ввода-вывода -
   байт -
   совпадает с одним символом текста. Поэтому UNIX-подобные ОС перешли
   на Unicode относительно поздно - и то в виде UTF-8.
  
  
  
  
  
  
  Первоначальная версия Юникода предполагала наличие большого
   количества готовых символов, в последующем было отдано предпочтение
   сочетанию букв с диакритическими модифицирующими знаками
   (англ. combining
   diacritics). Например, русские буквы Ё (U+0401) и Й
   (U+0419) существуют в виде монолитных символов, хотя могут быть
   представлены и набором базового символа с последующим диакритическим
   знаком, то есть в составной форме (англ. decomposed):
   Е+ ̈ (U+0415 U+0308), И+ ̆ (U+0418 U+0306).
  
  
  
  
  В то же время множество символов из языков с алфавитами
   на основе кириллицы не имеют монолитных форм.
  
  
  
  Наконец, некоторые редкие системы письма всё ещё не представлены
   должным образом в Юникоде. Изображение "длинных"
   надстрочных символов, простирающихся над несколькими буквами, как,
   например, в церковнославянском
   языке, пока не реализовано.
  
  
  
  
   [править]
   "Юникод" или "Уникод"?
  
  
  
  "Unicode" - одновременно и имя собственное
   (или часть имени, например, Unicode Consortium), и имя
   нарицательное, происходящее из английского языка.
  
  
  
  На первый взгляд предпочтительнее использовать написание
   "Уникод". В русском
   языке уже есть морфемы
   "уни-" (слова с латинским элементом "uni-"
   традиционно переводились и писались через "уни-":
   универсальный, униполярный, унификация, униформа) и "код".
   Напротив, торговые марки, заимствованные из английского
   языка, обычно передаются посредством практической транскрипции,
   в которой деэтимологизированное сочетание букв "uni-"
   записывается в виде "юни-" ("Юнилевер",
   "Юникс"
   и т. п.), то есть точно так же, как в случае с
   побуквенными сокращениями, вроде UNICEF
   "United Nations International Children"s Emergency
   Fund" - ЮНИСЕФ.
  
  
  
  Написание "Юникод" уже
   твёрдо вошло в русскоязычные тексты. Согласно "Яндексу",
   частота использования этого слова примерно в 10 раз превышает
   "Уникод"[19]. В
   Википедии
   используется более распространённый вариант.
  
  
  
  На сайте Консорциума
   есть специальная страница, где рассматриваются проблемы передачи
   слова "Unicode" в различных языках и системах письма.
   Для русской кириллицы указан вариант "Юникод"[1].
  
  
  
  Формы, принятые иностранными организациями для русской передачи
   слова "Unicode", являются рекомендательными.
  
  
  
  
   [править]
   См. также
  
  
  
  
  
  Символы,
   представленные в Юникоде
  
  
  
  
  ASCII
  
  
  
  
  ISO
   8859-1
  
  
  
  
  UTF-8
  
  
  
  
  Кириллица
   в Юникоде
  
  
  
  
  Дроби
   в Юникоде
  
  
  
  
  XeTeX
  
  
  
  
  Свободные
   универсальные шрифты
  
  
  
  
  Windows
   Glyph List 4
  
  
  
  
  Широкий
   символ
  
  
  
  
  
  
  
  
  Википедия:Проект:Внесение
   символов алфавитов народов России в Юникод
  
  
  
  
  
  
  
  Чего не было в кодировках и до чего до сих пор так и не додумались
  
  
  
  
  Необходим перепост. Газета "Компьютерные вести",
  kv.by/index2010133801.htm
  Издание 3-е, исправленное и дополненное. Другие статьи (оглавление)
  
  
  
  
  Автор хотел бы обсудить некоторые недостатки текущей версии юникод и обсудить дальнейшие пути его совершенствования. Проблема на наш взгляд состоит в том, что unicode.org не систематизировала результаты своей работы (с чем она согласилась в процессе переписки unicode.org/cgi-bin/swish-uml-cgi.pl?query=Dmitry%20Turin&sort=sent), в результате чего не одна компьютерная индустрия понесла потери. Если просуммировать - масштабы будут очень велики.
  
  
  
  
  Имя собственное и аббревиатура - 2 новых управляющих символа
  
  
  
  
  Во всех программах - поисковых серверах, базах данных, CAD-системах, текстовых редакторах - необходимо искать слова и сравнивать варианты написания слова: все буквы строчные, первая буква прописная, все прописные буквы. Кроме того, пользователь иногда пишет в строке поиска с ошибками или озаглавливает искомый объект с ошибками - одна лишняя буква, одной буквы не хватает, одна буква изменена. Если в кодировке прописную букву обозначать строчной с дополнительным байтом впереди, то сравнение вариантов написания сводится к поиску с опечаткой, а значит один алгоритм можно уже не реализовывать. К тому же освободится половина мест в таблице кодировки, можно разместить больше символов (ISO уже застолбила стандарт 4-байтной кодировки под названием ISO 10646). Префиксным байтом можно маркировать имена собственные и аббревиатуры на языках без прописных букв, что в дальнейшем поможет поисковым серверам. На степени архивации текста нововведение никак не сказывается. В деталях оно выглядит следующим образом.
  
  
  В тех случаях, когда встречается имя собственное или начало предложения, поставить один префиксный байт перед словом (будем условно изображать его как ), чтобы указать, что следующая за ним буква прописная (anna → Anna). Назовем этот префиксный байт знаком "имя собственное". Аналогично для аббревиатур, достаточно одного префиксного байта перед словом, чтобы указать, что все буквы до следующего пробела прописные (uno
  → UNO). Назовем этот байт знаком "аббревиатура".
  Пользователь по-прежнему ставит префиксы сам, нажимая клавиши "Shift" и "Caps Lock".
  
  
  На взгляд автора международная организация поступила очень недальновидно, выбрав расточительное кодирование. И повторила распространенное заблуждение, отождествив обозначение букв кодировку) и их графическое изображение (шрифт). Это совсем разные вещи.
  
  
  
  
  Индексы и пределы: 5 управляющих вместо прежних двух печатных
  
  
  
  
  Индексы прочно вошли в нашу жизнь: без них невозможно такое социальное явление, как наука - разумеется, без них немыслима такая всеохватывающая индустрия, как программирование. Поражает убогий, пещерный способ записи индексов в текстовых файлах - с помощью квадратных скобок. Он заставляет нас воссоздавать математические записи в своем воображении. Поднимая вопрос на принципиальную высоту, то же самое нужно сказать о пределах интегрирования и суммирования.
  Мы могли бы видеть индексы и пределы "на своих местах" в обыкновенных текстовых файлах, а не только в системах типа MathCAD, если бы у нас была разумная кодировка для них. Например, такая.
  
  
  Пусть база - надпись, для которой индексы и пределы записываются, индексы и пределы вместе назовем довесками, и пусть управляющие символы , , , обозначают, что с них начинаются нижний предел, верхний предел, нижний индекс, верхний индекс. Между базой, управляющими символами и довесками нет никаких пробелов, и вместе они составляют одно слово. У пределов бывают индексы, у индексов - субиндексы. Будем использовать управляющие символы как вложенные открывающие скобки, а не предварять довесок таким их количеством подряд, на каком уровне вложенности довесок находится. Однако чтобы вернуться на один уровень вложенности
  назад, потребуется еще один управляющий символ "возврат" .
  Таким образом слово ai j отображается как herald1 [Д.Тюрин], слово ai j - как herald2 [Д.Тюрин], а числа можно записывать в виде -3.71*10-14.
  На клавиатуре потребуются 5 новых клавиш, или их роль должны выполнять функциональные клавиши.
  
  
  
  
  Корень, дробь, интегралы и скобки: 10 печатных символов превратить в
  управляющие
  
  
  
  Также убого выглядит невозможность записать в текстовом файле общеупотребительные формулы с корнем, дробью, интегралами и фигурными скобками. А ведь все эти символы в таблице кодировки есть, но конформизм не позволяет проинтерпретировать их как управляющие. Неоднозначность только в том, какой символ - слэш или обратный слэш - использовать для обозначения дроби. Символ слэш оставим - вдруг кому-то захочется созерцать скрытую красоту выражений 1/2 или 3/4 - и обратимся вместо него к символу обратный слэш. Таким образом выражение (a+b+c)\(d+e) должно отображаться как fraction.gif [Д.Тюрин], а выражение (a+b)(c+d)- как rooting.jpg [Д.Тюрин].
  Такие конструкции легко рисуют все математические программы, и виртуозно опознают, на какое из слагаемых пользователь передвинул курсор стрелками на клавиатуре или мышью. Еще проще поведение трех
  пар скобок и двух интегралов (простого int1 [Д.Тюрин] и кругового int2 [Д.Тюрин]) - открывающие скобки и интегралы равны по высоте следующему за ними
  выражению, закрывающие скобки - предшествующему.
  
  
  
  Два вида диакритических знаков
  
  
  
  Существует два принципиально разных вида диакритических знаков. Первые - будем
  называть их диакритическими некомпактами - входят в состав буквы и
  являются ее неотъемлемой частью, примерами чего являются все буквы
  латинского, кириллического, а также согласные арабского алфавитов.
  Вторые - будем называть их диакритическими буквами - обозначают
  отдельную букву, примерами чего являются все гласные индо-арийских,
  дравидийских, арабского, еврейского алфавитов. В этих языках не
  горизонтальное и не вертикальное направление письма, а чередующееся
  (следующая буква может быть как над или под предыдущей, так и после),
  и только фильтр в голове не позволяет это увидеть.
  
  
  
  Кодирование двух букв - обычной и диакритической - в любом случае
  потребует двух байт. Если кодировать обычные и диакритические буквы
  по-отдельности и отображать последние не в следующем знако-месте, а в
  предыдущем путем операции "or" с ним, то
  редактирование одной буквы слога не потребует замены кода другой
  буквы, т.е. не потребует замены кода всего слога целиком.
  Операция "or" выполняется с одним и тем же знакоместом для
  всех подряд идущих диакритических букв (см. примечание для
  индо-арийских алфавитов на computer20.euro.ru/ru/ar.htm).
  Представляется, что международная организация unicode.org поступила
  нерачительно, даже не попытавшись свести многомерную задачу к
  одномерной.
  
  
  
  Расположение алфавитов
  
  
  
  
  В Индии существует множество родственных индо-арийских языков. У них
  очень разные алфавиты. Можно было бы обычные и диакритические буквы
  (или слога) разных языков, обозначающие один и тот же звук,
  кодировать одинаково (computer20.euro.ru/ru/i.htm), а для придания начертания, соответствующего тому или иному языку,
  добавлять перед текстом два байта - управляющий символ и номер языка.
  Тогда житель Индии, не знающий алфавита своего соседа, мог бы
  прочитать сообщение на своем алфавите (звучало бы оно наверное также,
  как для русского, читающего на беларусском или украинском), не
  перекодируя весь текст, а только изменив один байт - номер
  языка. Одного байта на идентификатор языка хватит - на планете
  используется только 67 алфавитов.
  
  
  Аналогично, в Индии существует множество родственных дравидийских народов. И у
  них тоже сильно отличающиеся алфавиты. И их тексты также можно было
  бы перекодировать, изменяя только один байт. А чтобы не увеличивать
  количество идентификаторов языка, коды букв дравидийского алфавита
  могли бы продолжать коды букв индо-арийского. Для удобства
  запоминания идентификаторов, пусть они обозначают алфавиты по часовой
  стрелке в порядке следования по окружностям на географической карте
  (computer20.euro.ru/ru/m.htm):
  малаялам - каннара - телугу - тамильский, деванагари - гуджаратский -
  гурмукхи - ассамский - бенгальский - ория - сингальский.
  
  
  Номер языка мог бы нести дополнительную функцию. Для индо-арийских,
  дравидийских и еврейского алфавитов - включать механизм отображения
  диакритических букв (см. под-заголовок в этой статье "Два вида
  диакритических знаков"). Для арабского (computer20.euro.ru/ru/a.htm) - переводить курсор на новую строку, включать отображение букв справа налево (слова не нужно было бы выравнивать по правому краю в языке
  разметки текста или в проприетарным формате файла), выбор нужного
  варианта начертания буквы в зависимости от положения (вначале слова,
  в середине, в конце, в изолированном состоянии), а также
  специфическое не-европейское начертание цифр и трех знаков пунктуации
  (запятая, точка с запятой, вопросительный знак). Для корейского -
  включать алгоритм упаковки букв в иероглифы по часовой стрелке. Ну, и
  в связи с нашим предложением выше о кодировании прописных букв, номер
  языка мог бы включать интерпретацию управляющих символов "имя собственное" и "аббревиатура" для латинницы,
  кириллицы, греческого и армянского. Будем называть далее все печатные
  символы, приходящиеся на один и тот же идентификатор языка,
  страницей.
  
  
  Две сотни символов той страницы, которая выбирается автоматически, если
  не указана в начале текста, желательно отдать под знаки,
  обслуживающие переписку наибольшего количества людей на земле. А не
  кодировать некоторые из таких языков (в т.ч. русский) двумя байтами,
  как в UTF-8. Экономия локальных накопителей информации и
  международного трафика очевидна. В одну страницу вполне влезают
  латинница, кириллица и греческий. Расположение этих букв и
  рассмотрим.
  
  
  Латинницу (103 буквы которой можно увидеть в Большой Советсткой Энциклопедии
  или на computer20.euro.ru/ru/ul.htm)
  и кириллицу (89 букв, также в БСЭ или на
  computer20.euro.ru/ru/uc.htm)
  внесем в кодировку целиком (а не многократно в виде своих
  подмножеств). Также чтобы избежать дублирований постараемся выбросить
  из кириллицы символы, повторяющие символы латинницы, и разместить
  оставшиеся посреди латинницы, не нарушая порядок сортировки. Примем
  компромиссы. Первый, буквы 'c' и 'l' (а также вариант первой с
  диакретиком) расположены в латиннице в начале, а в кириллице в конце,
  выбрасывание их в одном слишком бы нарушило сортировку в другом,
  поэтому расположим буквы дважды. Второй, четверть букв 'a' (три
  штуки) можно расположить один раз, сохраняя сортировку только в одном
  из алфавитов - расположим один раз и сохраним в латинском, т.к. все
  три буквы с диакретиками: на нерусских языках публичные базы данных
  находятся в зачаточном состоянии, и к порядку букв в них еще никто не
  привык (а на случай, если бы такая привычка уже возникла, участки
  расположения всех букв 'a' в обоих алфавитах одинаковы, и
  использование латинского порядка только для трех из них не
  обнаружится при поиске слова на основе минимального количества
  перестановок букв). Итого 177 букв, computer20.euro.ru/ru/u.htm.
  
  
  Объединенный Латинско-Кириллический Алфавит по Д.Тюрину
  
  
  
   alf_u_11 [Д.Тюрин]alf_ur_12 [Д.Тюрин]
  
  
  alf_ul_12 [Д.Тюрин]alf_u_middle [Д.Тюрин]alf_ul_13 [Д.Тюрин]alf_ul_21 [Д.Тюрин]alf_ur_14 [Д.Тюрин]
  alf_ul_22 [Д.Тюрин]
  
  
  alf_ul_23 [Д.Тюрин]alf_ur_21 [Д.Тюрин]alf_ul_24 [Д.Тюрин]alf_ur_23 [Д.Тюрин]alf_ul_25 [Д.Тюрин]
  
  
  alf_ul_31 [Д.Тюрин]alf_ur_25 [Д.Тюрин]alf_ul_33 [Д.Тюрин]
  
  
  alf_ur_31 [Д.Тюрин]alf_u_last [Д.Тюрин]
  
  
  Тюрин Дмитрий, sql50@narod.ru
  
  
  
  Букву 'o' удалим из греческого, часть алфавита до нее (14 букв) разместим перед латинско-кириллическим, а часть (9 букв) - после. Начертание буквы "сигма" пусть зависит от настроек ОС, вместо того, чтобы присутствовать этой букве в двух местах алфавита - как уже было сказано, не надо путать кодировку и шрифт, кодировка должна быть одна для всех начертаний, обозначающих одну и ту же букву.
  
  
  
  Математические символы и спец-символы расположим не на той же странице, где алфавит
  науки (греческий), а на отдельной странице, т.к. их количество будет
  все время увеличиваться, и неизвестно, какие же из них будут в разные
  моменты времени наиболее употребительными.
  
  
  На каждой странице и в одних и тех же местах расположены цифры; знаки припинания; в т.ч. спецсимвол для обозначения ударений, отличный от диакретиков; знаки арифметических операций; скобки; управляющие символы, чтобы не переключать страницы только из-за этих символов при переписке на одном алфавите. Каждое из этих подмножеств не перемежается с другими, чтобы можно было определять принадлежность символа к подмножеству всего двумя операциями сравнения (для верхней
  и нижней границ). Исключения составляют, с одной стороны, знаки "имя собственное" и "аббревиатура", с другой - "перевернутые" восклицательный и вопросительный знаки. Первые существуют только на латинско-кириллико-греческой и армянской страницах; а перевернутые знаки, встречающиеся только в испанском и к тому же одновременно с нормальными, существуют только на латинско-кириллико-греческой странице.
  
  
  
  И будем использовать два символа-переключателя страницы подряд для перехода на двухбайтную кодировку - для иероглифов и букв, перемежающихся с иероглифами, т.е. кроме хираганы и катаканы в
  двухбайтной кодировке закодированы еще раз корейский и латинница (смесь последней с иероглифами встречается во вьетнамском). Разумеется, в двухбайтной кодировке какой-то символ должен переключать назад в однобайтную.
  
  
  
  Цвет, наклон, подчеркивание, размера шрифта и жирность - еще 3 новых управляющих символа
  
  
  
  Давайте посмотрим правде в глаза - текст не обходится без разметки. То там нужно жирностью выделить, то здесь нужно гипер-ссылку поставить. Однако ни один из многочисленных языков разметки или проприетарных форматов файлов невозможно скормить видео-карте непосредственно, что ложится лишней головной болью и ОС, и на ПО, и не везде можно эти языки и проприетарные форматы применить. Предлагаю для цвета, наклона, подчеркивания, размера шрифта и жирности как для действительно используемых ввести обозначение прямо в текстовом файле. Давайте перестанем сопротивляться и примем необходимое (а не "всё", как боятся некоторые самозабвенные критики). Пояснения требует разве что изменение размера шрифта посреди текста. Есть такое понятие - агрессивный пейзаж. Это - длинная повторяющаяся последовательность, например, одинаково окрашенные окна на однотонной стене (вы заметили, строители разукрашивают стены как матрешки?), или череда гипер-ссылок шрифтом одного размера. Да-да, именно поэтому вы периодически встречаете сайты, на которых куча ссылок дана шрифтами разного размера - чтобы глаз имел опорные знаки внутри этого участка текста.
  
  
  
  Перед выделяемой фразой разместим управляющие символы "начало фракции" b.gif [Д.Тюрин]
  и "середина фракции" m.gif [Д.Тюрин], а после нее - символ "конец фракции" e.gif [Д.Тюрин].
  Между первыми двумя управляющими символами находятся байт-предсказатель и (опционально) фракционная запись. В байте-предсказателе используются семь бит, первые три из которых указывают, какие поля присутствуют во фракционной записи (если все три бита равны нулю, значит длина фракционной записи равна нулю, т.е. ее нет совсем). А содержать она может целочисленные цвет, размер шрифта и некоторый идентификатор, которым метится данный участок текста (этот идентификатор выполняет ту же роль, что и якорь HTML, и сообщается видеокартой программному обеспечению, когда пользователь кликает на фразу). Последние четыре бита байта-предсказателя указывают, что фраза подчеркнута, жирная, наклонная или имеет тень. Условимся участок текста от символа "начало фракции" до символа "конец фракции" называть фракцией, и договоримся, что фракции не могут быть вложенными - для упрощения аппаратуры, отображающей текст.
  
  
   Дмитрий Тюрин, DmitryTurin.narod.ru

Связаться с программистом сайта.

Новые книги авторов СИ, вышедшие из печати:
О.Болдырева "Крадуш. Чужие души" М.Николаев "Вторжение на Землю"

Как попасть в этoт список
Сайт - "Художники" .. || .. Доска об'явлений "Книги"