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

Кодированные наборы символов, как определено в Модели кодирования символов Unicode, сопоставляют символы с неотрицательными целыми числами (например, СТРОЧНАЯ ЛАТИНСКАЯ БУКВА A до 97, как в традиционном ASCII, так и в UCS).

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

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

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

Наша задача состоит в том, чтобы определить, сопоставляется ли данное неотрицательное целое число символу с помощью UCS, универсальный кодированный набор символов.

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

  • суррогат (диапазон D800–DFFF)
  • #P7# #P8# <блочная цитата> #P9# #P10#
  • зарезервировано (я не нашел, какие неотрицательные целые числа относятся к этой категории)

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

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

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

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

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

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


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


person Kalrish    schedule 26.03.2016    source источник


Ответы (1)


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

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

person rici    schedule 26.03.2016
comment
Спасибо, это именно то, что мне было нужно. Я чувствую себя глупо, что не нашел его в стольких поисках… - person Kalrish; 26.03.2016