Таблица перевода — это таблица символов (см. Таблицы символов), которая определяет отображение символов в символы. Эти таблицы используются при кодировании и декодировании, а также для других целей. Некоторые системы кодирования определяют свои собственные специальные таблицы перевода; существуют также таблицы перевода по умолчанию, которые применяются ко всем другим системам кодирования.
Таблица перевода имеет два дополнительных слота. Первый либо nil, либо таблица
перевода, выполняющая обратный перевод; второй — максимальное количество символов для поиска
при переводе последовательностей символов (см. описание
make-translation-table-from-alist ниже).
Эта функция возвращает таблицу перевода на основе аргумента
translations. Каждый элемент translations должен быть
списком элементов вида (from . to); это
означает перевод символа from в to.
Аргументы и формы в каждом аргументе обрабатываются по порядку, и если предыдущая форма уже переводит to в какой-либо другой символ, скажем to-alt, from также переводится в to-alt.
Во время декодирования применяются переводы из таблицы перевода к символам, полученным
обычным декодированием. Если система кодирования имеет свойство
:decode-translation-table, которое указывает таблицу перевода для
использования, или список таблиц перевода для последовательного применения. (Это свойство
системы кодирования, возвращаемое coding-system-get, а не свойство
имени символа системы кодирования. См. Основные
понятия систем кодирования.) Наконец, если
standard-translation-table-for-decode не равен nil,
результирующие символы переводятся этой таблицей.
Во время кодирования применяются переводы из таблицы перевода к символам в буфере, и
результат перевода фактически кодируется. Если система кодирования имеет свойство
:encode-translation-table, которое указывает таблицу перевода для
использования, или список таблиц перевода для последовательного применения. Кроме того, если
переменная standard-translation-table-for-encode не равна nil,
она указывает таблицу перевода, используемую для перевода результата.
Это таблица перевода по умолчанию для декодирования. Если система кодирования
определяет свои собственные таблицы перевода, таблица, являющаяся значением этой
переменной, если она не равна nil, применяется после них.
Это таблица перевода по умолчанию для кодирования. Если система кодирования
определяет свои собственные таблицы перевода, таблица, являющаяся значением этой
переменной, если она не равна nil, применяется после них.
Самовставляемые символы переводятся через эту таблицу перевода перед вставкой. Команды поиска также переводят свой ввод через эту таблицу, чтобы они могли более надежно сравниваться с тем, что находится в буфере.
Эта переменная автоматически становится локальной для буфера при установке.
Эта функция возвращает таблицу перевода, созданную из vec, которая
является массивом из 256 элементов для сопоставления байтов (значения от 0 до #xFF)
с символами. Элементы могут быть nil для непереведенных байтов.
Возвращаемая таблица имеет таблицу перевода для обратного сопоставления в первом
дополнительном слоте и значение 1 во втором дополнительном слоте.
Эта функция предоставляет простой способ создания частной системы кодирования, которая
отображает каждый байт на определенный символ. Вы можете указать возвращаемую
таблицу и таблицу обратного перевода, используя свойства
:decode-translation-table и :encode-translation-table
соответственно в аргументе props функции
define-coding-system.
Эта функция похожа на make-translation-table, но возвращает
сложную таблицу перевода, а не простое одно-к-одному сопоставление. Каждый элемент
alist имеет вид (from
. to), где from и to
являются либо символами, либо векторами, определяющими последовательность символов.
Если from — это символ, этот символ переводится в to
(т.е. в символ или последовательность символов). Если from — это
вектор символов, эта последовательность переводится в to. Возвращаемая
таблица имеет таблицу перевода для обратного сопоставления в первом дополнительном
слоте и максимальную длину всех последовательностей символов from
во втором дополнительном слоте.