О текстовой объектной модели
Объектная модель текста (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 и начинаются с префикса tom, например tomWord.
Тип tomBool
Многие методы TOM используют специальный тип переменной с именем tomBool для атрибутов форматированного текста, имеющих двоичные состояния. Тип tomBool отличается от логического типа, так как он может принимать четыре значения: tomTrue, tomFalse, tomToggleи tomUndefined. Значения tomTrue и tomFalse указывают значение true и false. Значение tomToggle используется для переключения свойства. Значение tomUndefined, более традиционно называемое NINCH, представляет собой специальное значение без ввода и без изменений, которое работает с типами long, с плавающей точкой и COLORREF. Для строк tomUndefined (или NINCH) представлена строкой NULL. Для операций с параметрами свойств использование tomUndefined не изменяет целевое свойство. Для операций получения свойств tomUndefined означает, что символы в диапазоне имеют разные значения (это представлено в виде серого флажка в диалоговых окнах свойств).
Увеличение и уменьшение в математике
Вы можете использовать метод ITextRange2::BuildUpMath для преобразования линейных математических выражений в встроенные версии. Метод ITextRange2::Linearize выполняет противоположное преобразование, называемое линеаризацией или разверткой, для преобразования сложных версий математических выражений обратно в линейный формат. Возможность создания математических сборок полезна, если необходимо экспортировать обычный текст или включить определенные типы редактирования.
TOM RTF
В TOM обмен форматированным текстом можно выполнить с помощью наборов явных вызовов методов или передачи форматированного текста в формате RTF. В этом разделе приведены таблицы слов элемента управления RTF для свойств абзаца и свойств символов.
управляющие слова абзацев TOM RTF
Управляющее слово | Значение |
---|---|
\ fi n | Отступ первой строки (значение по умолчанию равно нулю). |
\хранить | Сохранить абзац нетронутым. |
хранение | Следите за следующим абзацем. |
\ li n | Отступ слева (значение по умолчанию равно нулю). |
\ noline | Нумеровка строки отсутствует. |
\ nowidctlpar | Отключите элемент управления вдовой или сиротой. |
\ pagebb | Разрыв страницы перед абзацем. |
\par | Новый абзац. |
\pard | Сбрасывает свойства абзаца на значения по умолчанию. |
\ ql | По левому краю (по умолчанию). |
\ qr | Выровнено по правому краю. |
\ qj | Оправданный. |
\ qc | Центрированный. |
\ ri n | Отступ справа (значение по умолчанию равно нулю). |
\ s n | Стиль n. |
\ sa n | Пробел после (значение по умолчанию равно нулю). |
\ sb n | Пробел перед текстом (по умолчанию — ноль). |
\ sl n | Если отсутствует или если n=1000, интервалы строк определяются самым высоким символом в строке (междустрочный интервал); Значение , если n> ноль, используется по крайней мере этот размер; Если 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 | Смелый. |
\прописные буквы | Все столицы. |
\ cf n | Цвет переднего плана (по умолчанию используется tomAutocolor). |
\ cs n | Стиль символов n. |
\ dn n | Позиция подстрочного индекса в полуторных пунктах (значение по умолчанию — 6). |
эмбо | Рельефный. |
\ f n | Номер шрифта, n ссылается на запись в таблице шрифтов. |
\ fs n | Размер шрифта в полуочках (по умолчанию — 24). |
\ выделение n | Цвет фона (по умолчанию используется tomAutocolor). |
\ i | Курсив. |
\ impr | Отпечаток. |
\ lang n | Применяет язык к символу. n — это число, соответствующее языку. Слово управления \plain сбрасывает свойство языка на язык, определенный \deflang n в свойствах документа. |
\ nosupersub | Выключает режим надстрочного или подстрочного написания. |
\ outl | Очертание. |
\равнина | Сбрасывает свойства форматирования символов в значение по умолчанию, определенное приложением. Также сбрасываются связанные свойства форматирования символов (описанные в разделе "Связанные свойства символов" в спецификации RTF). |
\ scaps | Малые заглавные буквы. |
\шэд | Тень. |
\забастовка | Зачеркнутый текст. |
\суб | Применяет нижний индекс к тексту и уменьшает размер шрифта в соответствии с сведениями о шрифте. |
\супер | Применяет надстрочный знак к тексту и уменьшает размер точки в соответствии с сведениями о шрифте. |
\ ul | Непрерывное подчеркивание. \ ul0 отключает все подчеркивание. |
\ uld | Точечное подчеркивание. |
\ uldb | Двойное подчеркивание. |
\ ulnone | Прекращает всё подчеркивание. |
\ ulw | Подчеркивание слова. |
\ вверх n | Позиция надстрочного текста в половинных пунктах (по умолчанию — 6). |
\ v | Скрытый текст. |
Поиск форматированного текста
Методы TOM можно использовать для поиска форматированного текста в соответствии с диапазоном текста. Поиск такого форматированного текста часто требуется в обработке текстов, хотя он никогда не был реализован в текстовом редакторе с функцией WYSIWYG. Существует явно больший домен сопоставления форматированного текста, который позволяет игнорировать некоторые свойства форматирования символов (или включать форматирование абзаца и /или содержимое объекта), но такие обобщения выходят за рамки этого раздела.
Одной из целей этой функции является использование диалогового окна поиска с форматированным текстом для определения текста, который вы хотите найти в документе. Диалоговое окно будет реализовано с помощью расширенного элемента управления редактирования, а методы TOM будут использоваться для выполнения поиска по документу. Вы можете скопировать нужный форматированный текст из документа в диалоговое окно Поиск или ввести и отформатировать его непосредственно в диалоговом окне Поиск.
В следующем примере показано, как использовать методы TOM для поиска текста, содержащего сочетания точного форматирования символов. Алгоритм выполняет поиск обычного текста в диапазоне совпадений, который называется pr1
. Если найден обычный текст, он указывает на диапазон тестирования, который называется pr2
. Затем два диапазона точек вставки (prip1
и prip2
) используются для обхода пробного диапазона, сравнивающего форматирование символов с pr1
. Если они совпадают точно, входной диапазон (заданный ppr
) обновляется, чтобы указывать на текст пробного диапазона, и функция возвращает количество символов в совпадающем диапазоне. Два объекта ITextFont, pf1
и 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 | Этот метод получает активный выбор, который можно использовать для различных целей, ориентированных на представление, таких как выделение текста и прокрутка. |
ДиапазонОтТочки | При активном выделении этот метод гарантирует получение диапазона, связанного с определенным представлением. |
развернуть | Увеличивает текстовый диапазон так, чтобы содержащиеся в нем частичные единицы были полностью охвачены. Например, Expand(tomWindow) расширяет диапазон, чтобы включить видимую часть истории диапазона. |
ПолучитьДубликат | При использовании активного выделения этот метод гарантированно предоставляет диапазон, связанный с конкретным представлением. См. описание RangeFromPoint. |
GetPoint | Возвращает координаты экрана для позиции начального или конечного символа в текстовом диапазоне. |
ScrollIntoView | Прокручивает текстовый диапазон в видимую область. |
SetPoint | Выделяет текст до указанной точки включительно. |
Наборы совпадений символов
Параметр различных методов Move* в ITextRange, таких как MoveWhile и MoveUntil, может принимать явную строку или 32-битный индекс для сопоставления символов. Индексы определяются диапазонами Юникода или наборами символов GetStringTypeEx. Диапазон Юникода, начиная с n и длины l (< 32768), присваивается индексом n + (l << 16) + 0x80000000. Например, базовые греческие буквы определяются CR_Greek = 0x805f0370 и печатными символами ASCII определяются CR_ASCIIPrint = 0x805e0020. Кроме того, методы MoveWhile и 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 издательская компания: 1991, 1992.
Название CType2 | Ценность | Значение |
---|---|---|
Сильный: | ||
C2_LEFTTORIGHT | 0x1 | Слева направо. |
C2_RIGHTTOLEFT | 0x2 | Справа налево. |
Слабый: | ||
C2_EUROPENUMBER | 0x3 | Европейское число, европейская цифра. |
C2_EUROPESEPARATOR | 0x4 | Европейский числовой разделитель. |
C2_EUROPETERMINATOR | 0x5 | Европейский числовой терминатор. |
C2_ARABICNUMBER | 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 | диакритический знак без отступа |
C3_VOWELMARK | 0x4 | Неразделяющий знак гласной. |
C3_SYMBOL | 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 | Иврит XA | 0x590 — 0x5cf |
ИвритXB | 0x5eb — 0x5ff | Арабский | 0x600— 0x6ff |
BasicArabic | 0x600 — 0x652 | ArabicX | 0x653 — 0x6ff |
Девангари | 0x900 — 0x97f | Бангла (ранее Бенгали) | 0x980 — 0x9ff |
Гурмухи | 0xa00 — 0xa7f | Гуджарати | 0xa80—0xaff |
Одия (ранее Ория) | 0xb00—0xb7f | Тамильский | 0xb80 — 0xbff |
Телуга | 0xc00 — 0xc7f | Каннада | 0xc80 — 0xcff |
Малаялам | 0xd00 — 0xd7f | Тайский | 0xe00 — 0xe7f |
Лаосский | 0xe80 — 0xeff | ГрузинX | 0x10a0 — 0xa0cf |
BascGeorgian | 0x10d0— 0x10ff | Джамо | 0x1100 — 0x11ff |
LatinXAdd | 0x1e00—0x1eff | ГрикИкс | 0x1f00 — 0x1fff |
GenPunct | 0x2000 — 0x206f | Надстрочный | 0x2070 — 0x207f |
Подстрочный | 0x2080— 0x208f | SuperSubscript | 0x2070— 0x209f |
Валюта | 0x20a0 — 0x20cf | КомбМаркиСим | 0x20d0— 0x20ff |
LetterLike | 0x2100 — 0x214f | NumberForms | 0x2150 — 0x218f |
Стрелки | 0x2190— 0x21ff | MathOps | 0x2200 — 0x22ff |
MiscTech | 0x2300 — 0x23ff | CtrlPictures | 0x2400 — 0x243f |
Оптическое Распознавание Символов | 0x2440 — 0x245f | ЭнклAlphaNum | 0x2460 — x24ff |
Рисование рамок | 0x2500 — 0x257f | BlockElement | 0x2580 — 0x259f |
GeometShapes | 0x25a0— 0x25ff | Разные символы | 0x2600 — 0x26ff |
Дингбаты | 0x2700— 0x27bf | CJKSymPunct | 0x3000— 0x303f |
Хирагана | 0x3040— 0x309f | Катакана | 0x30a0 — 0x30ff |
Bopomofo | 0x3100 — 0x312f | HangulJamo | 0x3130 — 0x318f |
CJLMisc | 0x3190 — 0x319f | ЭнклCJK | 0x3200 — 0x32ff |
CJKCompatibl | 0x3300— 0x33ff | Хан | 0x3400 — 0xabff |
Хангыль | 0xac00 — 0xd7ff | UTF16Lead | 0xd800 — 0xdbff |
UTF16Trail | 0xdc00—0xdfff | Частное использование | 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 |