Поделиться через


Функция ScriptPlaceOpenType (usp10.h)

Создает глифы и визуальные атрибуты для выполнения Юникода со сведениями OpenType из выходных данных ScriptShapeOpenType.

Синтаксис

HRESULT ScriptPlaceOpenType(
  [in, optional]  HDC                    hdc,
  [in, out]       SCRIPT_CACHE           *psc,
  [in, out]       SCRIPT_ANALYSIS        *psa,
  [in]            OPENTYPE_TAG           tagScript,
  [in]            OPENTYPE_TAG           tagLangSys,
  [in, optional]  int                    *rcRangeChars,
  [in, optional]  TEXTRANGE_PROPERTIES   **rpRangeProperties,
  [in]            int                    cRanges,
  [in]            const WCHAR            *pwcChars,
  [in]            WORD                   *pwLogClust,
  [in]            SCRIPT_CHARPROP        *pCharProps,
  [in]            int                    cChars,
  [in]            const WORD             *pwGlyphs,
  [in]            const SCRIPT_GLYPHPROP *pGlyphProps,
  [in]            int                    cGlyphs,
  [out]           int                    *piAdvance,
  [out]           GOFFSET                *pGoffset,
  [out, optional] ABC                    *pABC
);

Параметры

[in, optional] hdc

Дескриптор контекста устройства. Дополнительные сведения см. в разделе Кэширование.

[in, out] psc

Указатель на структуру SCRIPT_CACHE , определяющую кэш скриптов.

[in, out] psa

Указатель на структуру SCRIPT_ANALYSIS , полученную из предыдущего вызова ScriptItemizeOpenType. Эти структуры идентифицируют подсистему формирования, которая управляет созданным списком глифов и связанными с ними ширинами, а также смещениями размещения x и y.

Кроме того, приложение может присвоить этому параметру значение NULL , чтобы получать неотфильтрованные результаты.

[in] tagScript

Структура OPENTYPE_TAG , содержащая тег скрипта OpenType для используемой системы записи.

[in] tagLangSys

Структура OPENTYPE_TAG , содержащая тег языка OpenType для системы записи.

[in, optional] rcRangeChars

Массив количества символов в каждом диапазоне. Количество элементов указывается в параметре cRanges . Общее количество значений должно быть равно значению cChars.

[in, optional] rpRangeProperties

Массив TEXTRANGE_PROPERTIES структур, определяющих свойства для каждого диапазона. Количество элементов определяется параметром cRanges .

[in] cRanges

Количество диапазонов функций OpenType.

[in] pwcChars

Указатель на массив символов Юникода, содержащий выполнение. Количество элементов определяется параметром cRanges .

[in] pwLogClust

Указатель на массив сведений о логическом кластере. Каждый элемент в массиве соответствует символу в массиве, определенном pwcChars. Значение каждого элемента — это смещение от первого глифа в выполнении до первого глифа в кластере, содержающем соответствующий символ. Обратите внимание, что если элемент fRTLструктуры SCRIPT_ANALYSIS имеет значение TRUE, элементы в pwLogClust уменьшаются по мере считывания массива.

[in] pCharProps

Указатель на массив значений свойств символов в выполнении Юникода.

[in] cChars

Количество символов в выполнении Юникода.

[in] pwGlyphs

Указатель на буфер глифов, полученный из предыдущего вызова функции ScriptShapeOpenType .

[in] pGlyphProps

Указатель на массив атрибутов для каждого извлекаемого глифа. Число значений равно значению cGlyphs. Так как для каждого глифа существует одно свойство глифа, этот параметр содержит количество элементов, указанных cGlyphs.

[in] cGlyphs

Количество глифов в буфере массива глифов.

[out] piAdvance

Указатель на массив длиной, указанной cGlyphs, в котором эта функция извлекает сведения о ширине.

[out] pGoffset

Указатель на массив структур GOFFSET , в котором эта структура извлекает смещения x и y объединения глифов. Этот массив должен иметь длину, указанную cGlyphs.

[out, optional] pABC

Указатель на структуру ABC , в которой эта функция получает ширину ABC для всего выполнения.

Возвращаемое значение

Возвращает 0 в случае успеха. Функция возвращает ненулевое значение HRESULT, если не удалось. Во всех случаях ошибок выходные значения не определены. Приложение может проверить возвращаемое значение с помощью макросов SUCCEEDED и FAILED .

Функция возвращает E_OUTOFMEMORY, если длина выходного буфера, указанная cGlyphs , слишком мала. Приложение может повторить вызов с большими буферами.

Функция возвращает E_PENDING, если кэш скрипта, указанный параметром psc , не содержит достаточно сведений для размещения глифов, а параметр hdc передается как NULL , поэтому функция не может завершить процесс размещения. Приложение должно настроить правильный контекст устройства для запуска и снова вызвать эту функцию с соответствующим значением в hdc и со всеми остальными параметрами.

Комментарии

Эта функция является предпочтительной по сравнению со старой функцией ScriptPlace . Ниже перечислены некоторые преимущества ScriptPlaceOpenType .

  • Параметры напрямую соответствуют тегам OpenType в таблицах макетов шрифтов.
  • Параметры определяют признаки, применяемые к каждому символу. Входные данные делятся на диапазоны, и каждый диапазон имеет связанные с ним свойства OpenType.
Ширина составного ABC для всего элемента определяет, сколько глифов свес слева от начальной позиции и справа от длины, подразумеваемой суммой ширины заранее. Общая ширина линии в точности равна abcA+abcB+abcC. Значения abcA и abcC сохраняются в виде пропорций высоты ячейки, представленной в 8 битах, и, таким образом, примерно +/-1 процента. Общая ширина, которая является суммой значений abcA+abcB+abcC, указанных piAdvance, точно соответствует разрешению подсистемы формирования TrueType.

Все массивы находятся в визуальном порядке, если только элемент fLogicalOrder не задан в структуре SCRIPT_ANALYSIS , указанной параметром psa .

Важно Начиная с Windows 8: чтобы поддерживать возможность запуска в Windows 7, модуль, использующий Uniscribe, должен указать Usp10.lib перед gdi32.lib в списке библиотек.
 

Требования

   
Минимальная версия клиента Windows Vista [только классические приложения]
Минимальная версия сервера Windows Server 2008 [только классические приложения]
Целевая платформа Windows
Header usp10.h
Библиотека Usp10.lib
DLL Usp10.dll
Распространяемые компоненты Usp10.dll версии 1.600 или более поздней в Windows XP

См. также раздел

Отображение текста с использованием uniscribe

GOFFSET

OPENTYPE_TAG

SCRIPT_ANALYSIS

SCRIPT_CACHE

SCRIPT_CHARPROP

SCRIPT_GLYPHPROP

ScriptItemizeOpenType

ScriptPlace

ScriptShapeOpenType

TEXTRANGE_PROPERTIES

Функции uniscribe