Кодированные наборы символов, как определено в Модели кодирования символов Unicode, сопоставляют символы с неотрицательными целыми числами (например, СТРОЧНАЯ ЛАТИНСКАЯ БУКВА A до 97, как в традиционном ASCII, так и в UCS).
Примечание. Существует разница между символами и абстрактными символами: последний термин более точно относится к нашему понятию символа, тогда как первый представляет собой концепцию в контексте кодированных наборов символов. . Некоторые абстрактные символы представлены более чем одним символом. Статья о Unicode в Википедии приводит пример:
Например, строчная латинская буква «i» с огонеком, точкой вверху и острым ударением [абстрактный символ], которая требуется в литовском языке, представлена последовательностью символов U+012F, U+0307, U+ 0301.
UCS (Универсальный набор кодированных символов) — это набор кодированных символов, определенный международным стандартом ISO/IEC 10646, который для справки можно загрузить через эта официальная ссылка.
Наша задача состоит в том, чтобы определить, сопоставляется ли данное неотрицательное целое число символу с помощью UCS strong>, универсальный кодированный набор символов.
Рассмотрим сначала неотрицательные целые числа, которым не присвоен символ, хотя они фактически зарезервированы UCS. UCS (§ 6.3.1, Классификация, таблица 1; страница 19 связанного документа) перечисляет три возможности, основанные на соответствующем им базовом типе:
- суррогат (диапазон D800–DFFF)
- #P7# #P8# <блочная цитата> #P9# блочная цитата> #P10#
- зарезервировано (я не нашел, какие неотрицательные целые числа относятся к этой категории)
С другой стороны, кодовые точки, базовый тип которых является одним из следующих:
- графика
- формат
- управление
- частное использование
присваиваются персонажам. Однако это открыто для обсуждения. Например, следует ли считать кодовые точки частного использования фактически назначенными каким-либо символам? Сама UCS (§ 6.3.5, Символы личного пользования; стр. 20 связанного документа) определяет их как:
Символы частного использования никоим образом не ограничиваются настоящим международным стандартом. Символы частного использования могут использоваться для предоставления пользовательских символов.
Кроме того, я хотел бы знать диапазон неотрицательных целых чисел, которые UCS отображает или резервирует. Каково максимальное значение? На некоторых страницах я обнаружил, что весь диапазон неотрицательных целых чисел, отображаемых UCS, — предположительно — 0–0x10FFFF. Это правда?
В идеале эта информация должна быть общедоступна в машиночитаемом формате, на основе которого можно было бы строить алгоритмы. Это случайно?
Для ясности: мне нужна функция, которая принимает неотрицательное целое число в качестве аргумента и возвращает, сопоставлено ли оно с символом UCS. Кроме того, я бы предпочел, чтобы он основывался на официальной машиночитаемой информации. Чтобы ответить на этот вопрос, достаточно указать на один такой ресурс, на котором я мог бы сам построить функцию.