Какие неотрицательные целые числа не назначены символ в UCS?

Наборы кодированных символов, как определено моделью кодирования символов Unicode, отображают символы в неотрицательные целые числа (например, LATIN SMALL LETTER A - 97, как в традиционном ASCII, так и в UCS).

Примечание: есть разница между символами и абстрактными символами: последний термин более тесно связан с нашим понятием символа, а первый - это понятие в контексте наборов кодированных символов. Некоторые абстрактные символы представлены более чем одним символом. Статья в Юникоде в Википедии приводит пример:

Например, латинская строчная буква "i" с огонеком, точкой сверху и острым акцентом [абстрактный символ], который требуется на литовском языке, представлена ​​последовательностью символов U+012F, U+0307, ​​U+0301.

UCS (универсальный набор кодированных символов) - это набор кодированных символов, определенный международным стандартом ISO/IEC 10646, который, для справки, можно загрузить по этой официальной ссылке.

Задача состоит в том, чтобы сказать, сопоставлено ли данное неотрицательное целое число с символом UCS, универсальным набором кодированных символов.

Давайте сначала рассмотрим неотрицательные целые числа, которым не присвоен символ, даже если они фактически зарезервированы UCS. UCS (§ 6.3.1, Классификация, Таблица 1; страница 19 связанного документа) перечисляет три возможности, основанные на базовом типе, который им соответствует:

  • суррогат (диапазон D800–DFFF)
  • нехарактер (диапазон FDD0–FDEF плюс любая кодовая точка, заканчивающаяся значением FFFE или FFFF)

    Стандарт Unicode определяет нехарактеры следующим образом:

    Номера символов - это кодовые точки, которые зарезервированы навсегда и им никогда не будут назначаться символы.

    Эта страница перечисляет нехарактерные символы более точно.

  • зарезервировано (я не нашел, какие неотрицательные целые числа относятся к этой категории)

С другой стороны, кодовые точки, основным типом которых является любой из:

  • графический
  • формат
  • контроль
  • личное использование

присваиваются персонажам. Это, однако, открыто для обсуждения. Например, следует ли считать кодовые точки частного использования фактически назначенными какими-либо символами? Сама UCS (§ 6.3.5, Персональные символы использования; страница 20 связанного документа) определяет их как:

Символы частного использования никоим образом не ограничены настоящим международным стандартом. Персональные символы могут использоваться для предоставления пользовательских символов.

Кроме того, я хотел бы знать диапазон неотрицательных целых чисел, которые UCS отображает или резервирует. Какое максимальное значение? На некоторых страницах я обнаружил, что весь диапазон неотрицательных целых чисел, который отображает UCS, - вероятно - 0–0x10FFFF. Это правда?

В идеале эта информация должна быть публично предложена в машиночитаемом формате, на котором можно строить алгоритмы. Это случайно?


Для ясности: мне нужна функция, которая принимает неотрицательное целое число в качестве аргумента и возвращает, сопоставлено ли оно символу с помощью ПСК. Кроме того, я бы предпочел, чтобы это основывалось на официальной, машиночитаемой информации. Чтобы ответить на этот вопрос, было бы достаточно указать на один такой ресурс, на котором я мог бы сам построить эту функцию.

1 ответ

Решение

База данных символов Unicode (UCD) доступна на сайте unicode.org; это конечно машиночитаемый. Он содержит список всех назначенных символов. (Конечно, набор назначенных кодовых точек увеличивается с каждой новой версией Unicode.) Полная документация по различным файлам, которые составляют UCD, также связана со страницей UCD.

Диапазон возможных кодов, как вы подозреваете, составляет 0-0x10FFFF. Из них не-символы и суррогатные блоки никогда не будут назначены в качестве кодовых точек любому символу. Коды в личных областях использования могут быть назначены символам только по взаимному согласию между приложениями; они никогда не будут назначены персонажам самим Юникодом. Любой другой код может быть.

Другие вопросы по тегам