34.7 Наборы символов

Набор символов Emacs, или charset, — это множество символов, в котором каждому символу присвоен числовой код. (Стандарт Unicode называет это кодированным набором символов.) Каждый набор символов Emacs имеет имя, являющееся символом. Один символ может принадлежать любому количеству различных наборов символов, но обычно он имеет разные коды в каждом наборе. Примерами наборов символов являются ascii, iso-8859-1, greek-iso8859-7 и windows-1255. Код, присвоенный символу в наборе, обычно отличается от его кода, используемого в буферах и строках Emacs.

Emacs определяет несколько специальных наборов символов. Набор символов unicode включает все символы, коды Emacs которых находятся в диапазоне 0..#x10FFFF. Набор символов emacs включает все ASCII и не-ASCII символы. Наконец, набор eight-bit включает 8-битные сырые байты; Emacs использует его для представления сырых байтов, встречающихся в тексте.

Функция: charsetp объект

Возвращает t, если объект является символом, именующим набор символов, и nil в противном случае.

Переменная: charset-list

Значением является список всех определённых имён наборов символов.

Функция: charset-priority-list &optional наивысший

Эта функция возвращает список всех определённых наборов символов, упорядоченных по их приоритету. Если наивысший не равен nil, функция возвращает один набор символов с наивысшим приоритетом.

Функция: set-charset-priority &rest наборы-символов

Эта функция делает наборы-символов наборами символов с наивысшим приоритетом.

Функция: char-charset символ &optional ограничение

Эта функция возвращает имя набора символов с наивысшим приоритетом, которому принадлежит символ. ASCII символы являются исключением: для них эта функция всегда возвращает ascii.

Если ограничение не равно nil, это должен быть список наборов символов для поиска. Альтернативно, это может быть система кодирования, в этом случае возвращаемый набор символов должен поддерживаться этой системой кодирования (см. Системы кодирования).

Функция: charset-plist набор-символов

Эта функция возвращает список свойств набора символов набор-символов. Хотя набор-символов является символом, это не то же самое, что список свойств этого символа. Свойства набора символов включают важную информацию о наборе, такую как его строка документации, краткое имя и т. д.

Функция: put-charset-property набор-символов имя-свойства значение

Эта функция устанавливает свойство имя-свойства набора набор-символов в заданное значение.

Функция: get-charset-property набор-символов имя-свойства

Эта функция возвращает значение свойства имя-свойства набора набор-символов.

Команда: list-charset-chars набор-символов

Эта команда отображает список символов в наборе символов набор-символов.

Emacs может преобразовывать внутреннее представление символа в код этого символа в конкретном наборе и обратно. Следующие две функции поддерживают эти преобразования.

Функция: decode-char набор-символов код

Эта функция декодирует символ, которому назначен код в набор-символов, в соответствующий символ Emacs и возвращает его. Если набор-символов не содержит символа с таким кодом, значением будет nil.

Для обратной совместимости, если код не помещается в фикснум Lisp (см. most-positive-fixnum), его можно задать как cons-ячейку (старший . младший), где младший — это младшие 16 бит значения, а старший — это старшие 16 бит. Это использование устарело.

Функция: encode-char символ набор-символов

Эта функция возвращает код, назначенный символу символ в набор-символов. Если набор-символов не имеет кода для символ, значением будет nil.

Следующая функция полезна для применения некоторой функции ко всем или части символов в наборе:

Функция: map-charset-chars функция набор-символов &optional арг от-кода до-кода

Вызывает функцию для символов в набор-символов. функция вызывается с двумя аргументами. Первый — это cons-ячейка (от . до), где от и до указывают диапазон символов, содержащихся в набор-символов. Второй аргумент, передаваемый функции — это арг или nil, если арг опущен.

По умолчанию диапазон кодов, передаваемый функции, включает все символы в набор-символов, но необязательные аргументы от-кода и до-кода ограничивают его диапазоном символов между этими двумя кодами набор-символов. Если любой из них равен nil, он по умолчанию равен первому или последнему коду набор-символов, соответственно. Обратите внимание, что от-кода и до-кода — это коды набор-символов, а не коды Emacs символов; напротив, значения от и до в cons-ячейке, передаваемой функции, являются кодами символов Emacs. Эти коды символов Emacs являются либо кодовыми точками Unicode, либо внутренними кодами Emacs, расширяющими Unicode и выходящими за пределы диапазона символов Unicode 0..#x10FFFF (см. Текстовые представления). Последнее случается редко, с устаревшими наборы символов CJK для кодов набор-символов, которые определяют символы, ещё не унифицированные с Unicode.