Сведения о текстовой объектной модели
Текстовая объектная модель (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. Необязательные указатели с пустыми значениями игнорируются.
Используйте методы с префиксами 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, — это специальное значение без ввода, без изменения, которое работает с longs, floats и COLORREFs. Для строк значение tomUndefined (или NINCH) представлено пустой строкой. Для операций настройки свойств использование tomUndefined не изменяет целевое свойство. Для операций получения свойств tomUndefined означает, что символы в диапазоне имеют разные значения (он предоставляет серый флажок в диалоговых окнах свойств).
Математические сборки и сборка
Метод ITextRange2::BuildUpMath можно использовать для преобразования математических выражений линейного форматирования в встроенные версии. Метод ITextRange2::Linearize выполняет противоположное преобразование, называемое линеализацией или построением, для преобразования встроенных версий математических выражений обратно в линейный формат. Возможность математического построения полезна, если необходимо экспортировать обычный текст или включить определенные типы редактирования.
TOM RTF
В TOM обмен форматированным текстом можно выполнить с помощью наборов явных вызовов методов или передачи форматированного текста в формате RTF. В этом разделе приведены таблицы элементов управления RTF для свойств абзаца и свойств символов.
Слова элемента управления абзацами TOM RTF
Элемент управления словом | Значение |
---|---|
\ fi n | Отступ первой строки (значение по умолчанию равно нулю). |
\ keep | Сохранить абзац нетронутым. |
\ keepn | Следите за следующим абзацем. |
\ 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 | Вкладка справа от очистки. |
\ tx n | Позиция табуляции ( в витках) из левого поля. |
Слова элемента управления форматом символов TOM RTF
Элемент управления словом | Значение |
---|---|
\ анимация n | Задает тип анимации в значение n. |
\ b | Полужирный. |
\ caps | Все столицы. |
\ cf n | Цвет переднего плана (по умолчанию — tomAutocolor). |
\ cs n | Стиль символа n. |
\ dn n | Позиция подстрока в полуочках (по умолчанию — 6). |
\ embo | Приподнятый. |
\ f n | Номер шрифта, n ссылается на запись в таблице шрифтов. |
\ fs n | Размер шрифта в полуочках (значение по умолчанию — 24). |
\ выделение n | Цвет фона (по умолчанию — tomAutocolor). |
\ i | Курсив. |
\ impr | Отпечаток. |
\ lang n | Применяет язык к символу. n — это число, соответствующее языку. Слово \plain control сбрасывает свойство языка на язык, определенный \ deflang n в свойствах документа. |
\ nosupersub | Отключает надстрочный или подстрочный. |
\ outl | Контур. |
\ обычный | Сбрасывает свойства форматирования символов до значения по умолчанию, определенного приложением. Также сбрасываются связанные свойства форматирования символов (описанные в разделе "Связанные свойства символов" в спецификации RTF). |
\ scaps | Малые столицы. |
\ shad | Тень. |
\ забастовка | Зачеркивание. |
\ sub | Применяет подстрок к тексту и уменьшает размер точки в соответствии со сведениями о шрифте. |
\ super | Применяет надстрочный знак к тексту и уменьшает размер точки в соответствии с сведениями о шрифте. |
\ ul | Непрерывное подчеркивание. \ ul0 отключает все подчеркивания. |
\ uld | Пунктирное подчеркивание. |
\ uldb | Двойное подчеркивание. |
\ ulnone | Останавливает все подчеркивание. |
\ ulw | Подчеркивание слова. |
\ вверх 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 | Прокручивает текстовый диапазон в представление. |
Уставка | Выделяет текст в указанной точке или вверх по ней. |
Наборы совпадений символов
Параметр variant различных методов 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 издательская компания: 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 | Diacritic nonspacing mark. |
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 | Неприменимо. |
Пакет средств разработки edit (EDK) может включать определения индекса pVar для следующих диапазонов, описанных в стандарте Юникода.
Набор знаков | Диапазон Юникода | Набор знаков | Диапазон Юникода |
---|---|---|---|
ASCII | 0x0 — 0x7f | ANSI | 0x0 — 0xff |
ASCIIPrint | 0x20 — 0x7e | Latin1 | 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 | GeorgianX | 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 | EnclAlphaNum | 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 | EnclCJK | 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 |