О текстовой объектной модели
Объектная модель текста (TOM) определяет набор интерфейсов обработки текста, которые поддерживаются в различных уровнях несколькими текстовыми решениями Майкрософт, включая элемент управления расширенными изменениями. В этом разделе представлен общий обзор TOM. В ней рассматриваются следующие темы.
- Объекты TOM версии 2
- Соглашения об интерфейсе TOM
- Тип tomBool
- Математические сборки и сборка вниз
- TOM RTF
- Поиск форматированного текста
- Специальные возможности TOM
- Наборы совпадений символов
Объекты TOM версии 2
TOM версии 2 (TOM 2) расширяет исходную текстовую объектную модель; новые интерфейсы являются производными от старых. Обновленный API TOM включает поддержку новых свойств формата символов и абзаца, табличную модель, несколько выделения и встроенную поддержку объектов для математических и ruby.
Объект TOM 2 верхнего уровня определяется интерфейсом ITextDocument2 , который имеет методы для создания и извлечения объектов ниже в иерархии объектов. Для простой обработки обычного текста можно получить объект ITextRange2 из объекта ITextDocument2 и сделать все с этим. Если необходимо добавить форматирование форматированного текста, можно получить объекты ITextFont2 и ITextPara2 из объекта ITextRange2. ITextFont2 предоставляет эквивалент программирования диалогового окна форматирования Microsoft Word, а ITextPara2 — эквивалент диалогового окна формата Word.
Помимо этих трех объектов нижнего уровня, TOM 2 имеет объект выбора (ITextSelection2), который является объектом ITextRange2 с выделением выделения и некоторыми методами, ориентированными на пользовательский интерфейс.
Объекты диапазона и выделения включают экранно-ориентированные методы, позволяющие программам проверять текст на экране или текст, который можно прокрутить на экране. Эти возможности помогают сделать текст доступным для людей с нарушениями зрения, например.
Каждый интерфейс с суффиксом 2 наследуется от соответствующего интерфейса без суффикса 2. Например, ITextDocument2 наследует от ITextDocument.
Объекты TOM 2 имеют следующую иерархию.
ITextDocument2 Top-level editing object
ITextRange2 Primary text interface: a range of text
ITextFont2 Character-attribute interface
ITextPara2 Paragraph-attribute interface
ITextRow Table interface
ITextSelection2 Screen highlighted text range
ITextRange2 Selection inherits all range methods
ITextDisplays Displays collection (not yet defined)
ITextStrings Rich-text strings collection
ITextStoryRanges2 Enumerator for stories in document
Объект ITextDocument2 описывает один или несколько смежных диапазонов текста, называемых историями. Истории представляют различные части документа, такие как основной текст документа, верхние и нижние колонтитулы, сноски, заметки и сносы, а также колонтитулы с форматированным текстом. История с нуля используется при переводе между линейно отформатированными математическими выражениями и созданной формой. История с нуля также используется при сохранении содержимого диапазона, который является текущим источником копирования при изменении содержимого.
Объект ITextRange2 определяется своими смещениями положения начального и конечного символов и объектом истории. Он не существует независимо от родительского объекта истории, хотя его текст можно скопировать в буфер обмена или в другие целевые объекты. Объект диапазона текста отличается от электронных таблиц и других объектов диапазона, которые определяются другими типами смещения; например, положение строки или столбца или графики (x, y). Объект диапазона текста может изменять себя различными способами, может возвращать дубликат самого себя, и его можно командовать для копирования позиций начального и конечного символа и указателя истории на текущий выделенный фрагмент.
Явный объект истории не нужен, так как объект ITextRange всегда может быть создан для представления любой конкретной истории. В частности, объект ITextDocument может создать объект ITextStoryRanges для перечисления историй в документе с точки зрения диапазонов с значениями положения начального и конечного символов, описывающими полные истории (например, 0 и tomForward).
При использовании объекта ITextStoryRanges2 явный объект истории не нужен, так как каждая история описывается объектом ITextRange2. В частности, объект ITextDocument2 может создать объект ITextStoryRanges2 для перечисления историй в документе с точки зрения диапазонов с значениями позиции начального и конечного символов, описывающими полные истории (например, 0 и tomForward).
Интерфейс ITextRow вместе с методами ITextRange::Move и ITextRange::Expand предоставляет возможность вставки, запроса и изменения таблиц.
Соглашения об интерфейсе TOM
Все методы TOM возвращают значения HRESULT . Как правило, методы TOM возвращают следующие стандартные значения.
- E_OUTOFMEMORY
- E_INVALIDARG
- E_NOTIMPL
- E_FILENOTFOUND
- E_ACCESSDENIED
- E_FAIL
- CO_E_RELEASED
- NOERROR (аналогично S_OK)
- S_FALSE
Помните, что если экземпляр редактирования, связанный с объектом TOM, например ITextRange , удаляется, объект TOM становится бесполезным, а все его методы возвращают CO_E_RELEASED.
Помимо возвращаемых значений HRESULT, многие методы включают параметры, которые являются указателями, используемыми для возврата значений. Для всех интерфейсов следует проверка все параметры указателя, чтобы убедиться, что они не являются ненулевой, прежде чем использовать их. При передаче значения NULL методу, требующего допустимого указателя, метод возвращает E_INVALIDARG. Необязательные указатели с значениями NULL игнорируются.
Используйте методы с префиксами Get и Set для получения и задания свойств. Логические переменные используют tomFalse (0) для FALSE и tomTrue (-1) для TRUE.
Константы TOM определяются в типе перечисления tomConstants и начинаются с префикса тома, например tomWord.
Тип tomBool
Многие методы TOM используют специальный тип переменной с именем tomBool для атрибутов форматированного текста, имеющих двоичные состояния. Тип tomBool отличается от логического типа, так как он может принимать четыре значения: tomTrue, tomFalse, tomToggle и tomUndefined. Значения tomTrue и tomFalse указывают значение true и false. Значение tomToggle используется для переключения свойства. Значение tomUndefined , более традиционно называемое NINCH, — это специальное значение no-input, no-change, которое работает с длинными, плавающими и COLORREFs. Для строк tomUndefined (или NINCH) представлена строкой NULL. Для операций настройки свойств использование tomUndefined не изменяет целевое свойство. Для операций получения свойств tomUndefined означает, что символы в диапазоне имеют разные значения (он предоставляет серый проверка поля в диалоговых окнах свойств).
Математические сборки и сборка вниз
Метод ITextRange2::BuildUpMath можно использовать для преобразования математических выражений линейного форматирования в встроенные версии. Метод ITextRange2::Linearize выполняет противоположное преобразование, называемое линейнализацией или сборкой, для преобразования встроенных версий математических выражений обратно в линейный формат. Возможность создания математических сборок полезна, если необходимо экспортировать обычный текст или включить определенные типы редактирования.
TOM RTF
В TOM обмен форматированным текстом можно выполнить с помощью наборов явных вызовов методов или передачи форматированного текста в формате RTF. В этом разделе приведены таблицы слов элемента управления RTF для свойств абзаца и свойств символов.
Слова элемента управления абзацами TOM RTF
Элемент управления словом | Значение |
---|---|
\ fi n | Отступ первой строки (значение по умолчанию равно нулю). |
\Держать | Сохранить абзац нетронутым. |
\ keepn | Следите за следующим абзацем. |
\ li n | Отступ слева (значение по умолчанию равно нулю). |
\ noline | Нумеровка строки отсутствует. |
\ nowidctlpar | Отключите элемент управления вдовой или сиротой. |
\ pagebb | Страница останова перед абзацем. |
\Пар | Новый абзац. |
\Приятель | Сбрасывается в свойства абзаца по умолчанию. |
\Ql | По левому краю (по умолчанию). |
\Qr | Выровнено по правому краю. |
\Qj | Оправдано. |
\Qc | Центре. |
\ ri n | Отступ справа (значение по умолчанию равно нулю). |
\ s n | Стиль n. |
\ sa n | Пробел после (значение по умолчанию равно нулю). |
\ sb n | Пробел до (значение по умолчанию равно нулю). |
\ sl n | Если отсутствует или если n=1000, интервалы строк определяются самым высоким символом в строке (однострочный интервал); если нуль, по крайней мере этот размер используется; если n> равно < нулю, точно |используется n| . Интервалы строк — это интервал с несколькими строками, если \ slmult 1 следует. |
\ slmult m | Следует \ sl. m = ноль: по крайней мере или точное интервалы строк, как описано в \sl n. m = 1: интервалы строк = n/240 раз однострочный интервал. |
\ тб n | Позиция вкладки "Линейчатая панель" (в поворотах) из левого поля. |
\ tldot | Точки лидера табуляции. |
\ tleq | Знак равенства лидера табуляции. |
\ tlhyph | Дефисы лидера табуляции. |
\ tlth | Толстая линия табуляции. |
\ tlul | Подчеркивание лидера табуляции. |
\ tqc | По центру вкладки. |
\ tqdec | Десятичная вкладка. |
\ tqr | Вкладка flush-right. |
\ tx n | Позиция табуляции в поворотах с левого поля. |
Слова элемента управления форматом символов TOM RTF
Элемент управления словом | Значение |
---|---|
\ анимация n | Задает тип анимации на n. |
\b | Bold. |
\Шапки | Все столицы. |
\ cf n | Цвет переднего плана (по умолчанию — tomAutocolor). |
\ cs n | Стиль символа n. |
\ dn n | Позиция подстрока в полуочках (значение по умолчанию — 6). |
\ embo | Тиснением. |
\ f n | Номер шрифта, n относится к записи в таблице шрифтов. |
\ fs n | Размер шрифта в полуочках (по умолчанию — 24). |
\ выделение n | Цвет фона (по умолчанию — tomAutocolor). |
\Я | Курсив. |
\ impr | Отпечаток. |
\ lang n | Применяет язык к символу. n — это число, соответствующее языку. Слово \обычного элемента управления сбрасывает свойство языка на язык, определенный \ deflang n в свойствах документа. |
\ nosupersub | Отключает надстрочный или подстрочный знак. |
\ outl | Контур. |
\Простой | Сбрасывает свойства форматирования символов в значение по умолчанию, определенное приложением. Также сбрасываются связанные свойства форматирования символов (описанные в разделе "Связанные свойства символов" в спецификации RTF). |
\ scaps | Небольшие столицы. |
\Шад | Тень. |
\Забастовку | Зачеркнутый. |
\Sub | Применяет подстрок к тексту и уменьшает размер точки в соответствии с сведениями о шрифте. |
\Супер | Применяет надстрочный знак к тексту и уменьшает размер точки в соответствии с сведениями о шрифте. |
\Ул | Непрерывное подчеркивание. \ ul0 отключает все подчеркивание. |
\Uld | Пунктирное подчеркивание. |
\ uldb | Двойное подчеркивание. |
\ ulnone | Останавливает все подчеркивание. |
\ ulw | Подчеркивание слова. |
\ up n | Позиция надстроек в полуочках (значение по умолчанию — 6). |
\v | Скрытый текст. |
Поиск форматированного текста
Методы TOM можно использовать для поиска форматированного текста в соответствии с диапазоном текста. Поиск такого форматированного текста часто требуется в обработке слов, хотя он никогда не был выполнен в "то, что вы видите, что вы получаете" (WYSIWYG) текстовый процессор. Существует явно больший домен сопоставления форматированного текста, который позволяет игнорировать некоторые свойства форматирования символов (или включать форматирование абзаца и /или содержимое объекта), но такие обобщения выходят за рамки область этого раздела.
Одна из целей этой функции — использовать диалоговое окно "Поиск форматированного текста" для определения форматированного текста, который требуется найти в документе. Диалоговое окно будет реализовано с помощью расширенного элемента управления редактирования, а методы TOM будут использоваться для выполнения поиска по документу. Вы можете скопировать нужный форматированный текст из документа в диалоговое окно "Найти " или ввести и отформатировать его непосредственно в диалоговом окне "Поиск ".
В следующем примере показано, как использовать методы TOM для поиска текста, содержащего сочетания точного форматирования символов. Алгоритм ищет обычный текст в диапазоне совпадений, который называется pr1
. Если найден обычный текст, он указывает на диапазон пробных версий, который называется pr2
. Затем два диапазона точек вставки (prip1
и prip2
) используются для обхода пробного диапазона, сравнивающего его форматирование символов с pr1
таким. Если они совпадают точно, входной диапазон (заданный ppr
) обновляется до точки в тексте пробного диапазона, а функция возвращает количество символов в сопоставленном диапазоне. Два объекта pf1
ITextFont и pf2
используются в сравнении с форматированием символов. Они присоединяются к диапазонам точек вставки prip1
и prip2
.
LONG FindRichText (
ITextRange **ppr, // Ptr to range to search
ITextRange *pr1) // Range with rich text to find
{
BSTR bstr; // pr1 plain-text to search for
LONG cch; // Text string count
LONG cch1, cch2; // tomCharFormat run char counts
LONG cchMatch = 0; // Nothing matched yet
LONG cp; // Handy char position
LONG cpFirst1; // pr1 cpFirst
LONG cpFirst2; // pr2 cpFirst
ITextFont * pf1, *pf // Fonts corresponding to IPs prip1 and prip2
ITextRange *pr2; // Range duplicate to search with
ITextRange *prip1, *prip // Insertion points to walk pr1, pr2
if (!ppr || !*ppr || !pr1)
return E_INVALIDARG;
// Initialize range and font objects used in search
if ((*ppr)->GetDuplicate(&pr2) != NOERROR ||
pr1->GetDuplicate(&prip1) != NOERROR ||
pr2->GetDuplicate(&prip2) != NOERROR ||
prip1->GetFont(&pf1) != NOERROR ||
prip2->GetFont(&pf2) != NOERROR ||
pr1->GetText(&bstr) != NOERROR )
{
return E_OUTOFMEMORY;
}
pr1->GetStart(&cpFirst1);
// Keep searching till rich text is matched or no more plain-text hits
while(!cchMatch && pr2->FindText(bstr, tomForward, 0, &cch) == NOERROR)
{
pr2->GetStart(&cpFirst2); // pr2 is a new trial range
prip1->SetRange(cpFirst1, cpFirst1); // Set up IPs to scan match
prip2->SetRange(cpFirst2, cpFirst2); // and trial ranges
while(cch > 0 &&
pf1->IsEqual(pf2, NULL) == NOERROR) // Walk match & trial ranges
{ // together comparing font
prip1->GetStart(&cch1); // properties
prip1->Move(tomCharFormat, 1, NULL);
prip1->GetStart(&cp);
cch1 = cp - cch1; // cch of next match font run
prip2->GetStart(&cch2);
prip2->Move(tomCharFormat, 1, NULL);
prip2->GetStart(&cp);
cch2 = cp - cch2; // cch of next trial font run
if(cch1 < cch) // There is more to compare
{
if(cch1 != cch2) // Different run lengths:
break; // no formatting match
cch = cch - cch1; // Matched format run
}
else if(cch2 < cch) // Trial range format run too
break; // short
else // Both match and trial runs
{ // reach at least to match
pr2->GetEnd(&cp); // text end: rich-text match
(*ppr)->SetRange(cpFirst2, cp) // Set input range to hit
cchMatch = cp - cpFirst2; // coordinates and return
break; // length of matched string
}
}
}
pr2->Release();
prip1->Release();
prip2->Release();
pf1->Release();
pf2->Release();
SysFreeString(bstr);
return cchMatch;
}
Специальные возможности TOM
TOM обеспечивает поддержку специальных возможностей через интерфейсы ITextSelection и ITextRange. В этом разделе описываются методы, которые полезны для специальных возможностей, а также как программа может определить положение экрана x, y объекта.
Так как программы специальных возможностей на основе пользовательского интерфейса обычно работают с экраном и мышью, часто волнует поиск соответствующего интерфейса ITextDocument для текущего расположения мыши (в координатах экрана). В следующих разделах представлены два способа определения правильного интерфейса:
- В таблице запускаемых объектов
- Через сообщение EM_GETOLEINTERFACE, которое работает для экземпляров расширенных возможностей редактирования окна, если клиент находится в том же пространстве процесса (маршалинг не требуется)
Дополнительные сведения см. в спецификации Microsoft Active Accessibility. Получив объект из положения экрана, можно использовать для интерфейса ITextDocument и вызвать метод RangeFromPoint, чтобы получить пустой объект диапазона в cp, соответствующий положению экрана.
Интерфейс из запущенной таблицы объектов
Запущенная таблица объектов (ROT) указывает, какие экземпляры объектов активны. Запросив эту таблицу, можно ускорить процесс подключения клиента к объекту, когда объект уже запущен. Прежде чем программы смогут получить доступ к интерфейсам TOM через запущенную таблицу объектов, экземпляр TOM с окном должен зарегистрировать в ROT с помощью моникера. Вы создаете моникер из строки, содержащей шестнадцатеричное значение его HWND. В следующем примере кода показано, как это сделать.
// This TOM implementation code is executed when a new windowed
// instance starts up.
// Variables with leading underscores are members of this class.
HRESULT hr;
OLECHAR szBuf[10]; // Place to put moniker
MONIKER *pmk;
hr = StringCchPrintf(szBuff, 10, "%x", _hwnd);
if (FAILED(hr))
{
//
// TODO: write error handler
//
}
CreateFileMoniker(szBuf, &pmk);
OleStdRegisterAsRunning(this, pmk, &_dwROTcookie);
....................
// Accessibility Client:
// Find hwnd for window pointed to by mouse cursor.
GetCursorPos(&pt);
hwnd = WindowFromPoint(pt);
// Look in ROT (running object table) for an object attached to hwnd
hr = StringCchPrintf(szBuff, 10, "%x", hwnd);
if (FAILED(hr))
{
//
// TODO: write error handler
//
}
CreateFileMoniker(szBuf, &pmk);
CreateBindContext(0, &pbc);
pmk->BindToObject(pbc, NULL, IID_ITextDocument, &pDoc);
pbc->Release();
if( pDoc )
{
pDoc->RangeFromPoint(pt.x, pt.y, &pRange);
// ...now do whatever with the range pRange
}
Интерфейс из сообщений окна
Сообщение EM_GETOLEINTERFACE предоставляет другой способ получения интерфейса IUnknown для объекта в заданной позиции экрана. Как описано в интерфейсе из таблицы запущенных объектов, вы получите HWND для положения экрана, а затем отправьте это сообщение в это HWND. Сообщение EM_GETOLEINTERFACE имеет широкий характер редактирования и возвращает указатель на интерфейс IRichEditOle в переменной, адресованной lParam.
Совет, если возвращается указатель (не забудьте задать объект, которому lParam указывает значение NULL перед отправкой сообщения), можно вызвать его метод IUnknown::QueryInterface для получения интерфейса ITextDocument. Этот подход показан в следующем примере кода.
HWND hwnd;
ITextDocument *pDoc;
ITextRange *pRange;
POINT pt;
IUnknown *pUnk = NULL;
GetCursorPos(&pt);
hwnd = WindowFromPoint(pt);
SendMessage(hwnd, EM_GETOLEINTERFACE, 0, (LPARAM)&pUnk);
if(pUnk &&
pUnk->QueryInterface(IID_ITextDocument, &pDoc) == NOERROR)
{
pDoc->RangeFromPoint(pt.x, pt.y, &pRange);
// ... continue with rest of program
}
Специальные методы
Некоторые методы TOM особенно полезны для навигации по экрану, а другие методы TOM улучшают то, что можно сделать при поступлении в интересующие места. В следующей таблице описаны наиболее полезные методы.
Способ | Повышение специальных возможностей |
---|---|
GetSelection | Этот метод получает активный выбор, который можно использовать для различных целей, ориентированных на представление, таких как выделение текста и прокрутка. |
RangeFromPoint | При использовании активного выделения этот метод гарантированно получает диапазон, связанный с определенным представлением. |
Развертывание | Увеличивает текстовый диапазон, чтобы все частичные единицы, содержащиеся в нем, полностью содержали. Например, расширяет диапазон, Expand(tomWindow) чтобы включить видимую часть истории диапазона. |
GetDuplicate | При использовании активного выделения этот метод гарантированно получает диапазон, связанный с определенным представлением. См. описание RangeFromPoint. |
GetPoint | Возвращает координаты экрана для позиции начального или конечного символа в текстовом диапазоне. |
ScrollIntoView | Прокручивает текстовый диапазон в представление. |
Уставка | Выбирает текст в указанной точке или вверх. |
Наборы совпадений символов
Параметр варианта различных методов Move* в ITextRange, таких как MoveTime и MoveUntil, может принимать явную строку или 32-разрядный индекс сопоставления символов. Индексы определяются диапазонами Юникода или наборами символов GetStringTypeEx. Диапазон Юникода начиная с n и длины l (< 32768) получает индекс n + (l << 16) + 0x80000000. Например, базовые греческие буквы определяются CR_Greek = 0x805f0370 и печатными символами ASCII определяются CR_ASCIIPrint = 0x805e0020. Кроме того, методы MoveTime и MoveUntil позволяют быстро обойти диапазон символов в любом наборе символов GetStringTypeEx или в диапазоне символов, не входящих в один из этих наборов символов.
Наборы GetStringTypeEx задаются значениями для Ctype1, Ctype2 и Ctype3 и определяются следующим образом.
Cset | Значение |
---|---|
Ctype1 | Сочетание типов CT_CTYPE1. |
Ctype2 + tomCType2 | Любой тип CT_CTYPE2. |
Ctype3 + tomCType3 | Сочетание типов CT_CTYPE3. |
В частности, Ctype1 может быть любым сочетанием следующего.
Имя Ctype1 | Значение | Значение |
---|---|---|
C1_UPPER | 0x0001 | Прописные. |
C1_LOWER | 0x0002 | Строчные. |
C1_DIGIT | 0x0004 | Десятичные цифры. |
C1_SPACE | 0x0008 | Пробелы. |
C1_PUNCT | 0x0010 | Пунктуация. |
C1_CNTRL | 0x0020 | Управляющие символы. |
C1_BLANK | 0x0040 | Пустые символы. |
C1_XDIGIT | 0x0080 | Шестнадцатеричные цифры. |
C1_ALPHA | 0x0100 | Любой лингвистический символ (алфавитный, сильлабарий или идеографический). |
C1_DEFINED | 0x0200 | Определенный символ, но не один из других типов C1_*. |
Типы Ctype2 поддерживают правильный макет текста Юникода. Атрибуты направления назначаются таким образом, чтобы алгоритм двунаправленного макета, стандартизированный Юникодом, выдает точные результаты. Эти типы являются взаимоисключающими. Дополнительные сведения об использовании этих атрибутов см. в разделе "Стандарт Юникода: кодировка символов по всему миру", тома 1 и 2, addison-Wesley Publishing Company: 1991, 1992.
Имя CType2 | Значение | Значение |
---|---|---|
Строго. | ||
C2_LEFTTORIGHT | 0x1 | Слева направо. |
C2_RIGHTTOLEFT | 0x2 | Справа налево. |
Слабым: | ||
C2_EUROPENUМБ ER | 0x3 | Европейское число, европейская цифра. |
C2_EUROPESEPARATOR | 0x4 | Европейский числовой разделитель. |
C2_EUROPETERMINATOR | 0x5 | Европейский числовой терминатор. |
C2_ARABICNUМБ ER | 0x6 | Арабский номер. |
C2_COMMONSEPARATOR | 0x7 | Общий числовой разделитель. |
Нейтральный: | ||
C2_BLOCKSEPARATOR | 0x8 | Разделитель блоков. |
C2_SEGMENTSEPARATOR | 0x9 | Разделитель сегментов. |
C2_WHITESPACE | 0xA | Пробелы. |
C2_OTHERNEUTRAL | 0xB | Другие нейтральные. |
Неприменимо: | ||
C2_NOTAPPLICABLE | 0x0 | Нет неявного направления. |
Типы Ctype3 предназначены для заполнителей для расширений типов POSIX, необходимых для общей обработки текста или стандартных функций библиотекИ C.
Имя CType3 | Значение | Значение |
---|---|---|
C3_NONSPACING | 0x1 | Неспециационная отметка. |
C3_DIACRITIC | 0x2 | Diacritic nonspacing mark. |
C3_VOWELMARK | 0x4 | Гласный знак, отличный от знака. |
C3_SYМБ OL | 0x8 | Символ. |
C3_KATAKANA | 0x10 | Символ Катакана. |
C3_HIRAGANA | 0x20 | Символ Хираганы. |
C3_HALFWIDTH | 0x40 | Символ половины ширины. |
C3_FULLWIDTH | 0x80 | Символ полной ширины. |
C3_IDEOGRAPH | 0x100 | Идеографический символ. |
C3_KASHIDA | 0x200 | Арабский символ Кашида. |
C3_ALPHA | 0x8000 | Все лингвистические символы (алфавитный, сильлабарий и идеографический). |
C3_NOTAPPLICABLE | 0x0 | Неприменимо. |
Пакет средств разработки для редактирования (EDK) может включать определения индекса pVar для следующих диапазонов, описанных в Стандарте Юникода.
Набор знаков | Диапазон Юникода | Набор знаков | Диапазон Юникода |
---|---|---|---|
ASCII | 0x0 — 0x7f | ANSI | 0x0 — 0xff |
ASCIIPrint | 0x20 — 0x7e | Латиница1 | 0x20— 0xff |
Latin1Supp | 0xa0 — 0xff | LatinXA | 0x100 — 0x17f |
LatinXB | 0x180 — 0x24f | IPAX | 0x250 — 0x2af |
SpaceMod | 0x2b0 — 0x2ff | Объединения | 0x300 — 0x36f |
Греческий | 0x370 — 0x3ff | BasicGreek | 0x370 — 0x3cf |
Греческие Симболы | 0x3d0 — 0x3ff | Кириллица | 0x400— 0x4ff |
Армянский | 0x530 — 0x58f | Иврит | 0x590 — 0x5ff |
BasicHebrew | 0x5d0— 0x5ea | Иврит КСА | 0x590 — 0x5cf |
ИвритXB | 0x5eb — 0x5ff | Арабский | 0x600— 0x6ff |
BasicArabic | 0x600 — 0x652 | Арабский | 0x653 — 0x6ff |
Девангари | 0x900 — 0x97f | Бангла (ранее Бенгали) | 0x980 — 0x9ff |
Гурмукхи | 0xa00 — 0xa7f | Гуджарати | 0xa80— 0xaff |
Одия (ранее Ория) | 0xb00— 0xb7f | Тамильский | 0xb80 — 0xbff |
Телуга | 0xc00 — 0xc7f | Каннада | 0xc80 — 0xcff |
Малаялам | 0xd00 — 0xd7f | Тайский | 0xe00 — 0xe7f |
Лаосский | 0xe80 — 0xeff | Грузин | 0x10a0 — 0xa0cf |
BascGeorgian | 0x10d0— 0x10ff | Джамо | 0x1100 — 0x11ff |
LatinXAdd | 0x1e00— 0x1eff | Греческий | 0x1f00 — 0x1fff |
GenPunct | 0x2000 — 0x206f | Надстрочный индекс | 0x2070 — 0x207f |
Подстрочный индекс | 0x2080— 0x208f | SuperSubscript | 0x2070— 0x209f |
Валюта | 0x20a0 — 0x20cf | CombMarkSym | 0x20d0— 0x20ff |
LetterLike | 0x2100 — 0x214f | NumberForms | 0x2150 — 0x218f |
Стрелки | 0x2190— 0x21ff | MathOps | 0x2200 — 0x22ff |
MiscTech | 0x2300 — 0x23ff | CtrlPictures | 0x2400 — 0x243f |
OptCharRecog | 0x2440 — 0x245f | ЭнклAlphaNum | 0x2460 — x24ff |
BoxDrawing | 0x2500 — 0x257f | BlockElement | 0x2580 — 0x259f |
GeometShapes | 0x25a0— 0x25ff | MiscSymbols | 0x2600 — 0x26ff |
Дингбаты | 0x2700— 0x27bf | CJKSymPunct | 0x3000— 0x303f |
Хирагана | 0x3040— 0x309f | Катакана | 0x30a0 — 0x30ff |
Бопомофо | 0x3100 — 0x312f | HangulJamo | 0x3130 — 0x318f |
CJLMisc | 0x3190 — 0x319f | ЭнклCJK | 0x3200 — 0x32ff |
CJKCompatibl | 0x3300— 0x33ff | Хан | 0x3400 — 0xabff |
Символы Хангула (Hangul) | 0xac00 — 0xd7ff | UTF16Lead | 0xd800 — 0xdbff |
UTF16Trail | 0xdc00— 0xdfff | PrivateUse | 0xe000 — 0xf800 |
CJKCompIdeog | 0xf900— 0xfaff | AlphaPres | 0xfb00 — 0xfb4f |
АрабскоеpresA | 0xfb50 — 0xfdff | CombHalfMark | 0xfe20— 0xfe2f |
CJKCompForm | 0xfe30 — 0xfe4f | SmallFormVar | 0xfe50 — 0xfe6f |
АрабскийPresB | 0xfe70 — 0xfefe | HalfFullForm | 0xff00 — 0xffef |
Специальные | 0xfff0— 0xfffd |