From 1b6a04ca5504955c571d1c97504fb45ea0befee4 Mon Sep 17 00:00:00 2001
From: Valentin Popov <valentin@popov.link>
Date: Mon, 8 Jan 2024 01:21:28 +0400
Subject: Initial vendor packages

Signed-off-by: Valentin Popov <valentin@popov.link>
---
 vendor/winapi/src/um/usp10.rs | 560 ++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 560 insertions(+)
 create mode 100644 vendor/winapi/src/um/usp10.rs

(limited to 'vendor/winapi/src/um/usp10.rs')

diff --git a/vendor/winapi/src/um/usp10.rs b/vendor/winapi/src/um/usp10.rs
new file mode 100644
index 0000000..b2f24be
--- /dev/null
+++ b/vendor/winapi/src/um/usp10.rs
@@ -0,0 +1,560 @@
+// Licensed under the Apache License, Version 2.0
+// <LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your option.
+// All files in the project carrying such notice may not be copied, modified, or distributed
+// except according to those terms.
+//! Unicode Complex Script processor API declarations
+use ctypes::{c_int, c_long, c_void};
+use shared::minwindef::{BOOL, BYTE, DWORD, UINT, ULONG, WORD};
+use shared::ntdef::LCID;
+use shared::windef::{HDC, RECT, SIZE};
+use shared::winerror::{FACILITY_ITF, SEVERITY_ERROR};
+use um::wingdi::ABC;
+use um::winnt::{HRESULT, LONG, WCHAR};
+pub const SCRIPT_UNDEFINED: WORD = 0;
+pub const USP_E_SCRIPT_NOT_IN_FONT: HRESULT = MAKE_HRESULT!(SEVERITY_ERROR, FACILITY_ITF, 0x200);
+DECLARE_HANDLE!{SCRIPT_CACHE, SCRIPT_CACHE__}
+extern "system" {
+    pub fn ScriptFreeCache(
+        psc: *mut SCRIPT_CACHE,
+    ) -> HRESULT;
+}
+STRUCT!{struct SCRIPT_CONTROL {
+    bit_fields: DWORD,
+}}
+BITFIELD!{SCRIPT_CONTROL bit_fields: DWORD [
+    uDefaultLanguage set_uDefaultLanguage[0..16],
+    fContextDigits set_fContextDigits[16..17],
+    fInvertPreBoundDir set_fInvertPreBoundDir[17..18],
+    fInvertPostBoundDir set_fInvertPostBoundDir[18..19],
+    fLinkStringBefore set_fLinkStringBefore[19..20],
+    fLinkStringAfter set_fLinkStringAfter[20..21],
+    fNeutralOverride set_fNeutralOverride[21..22],
+    fNumericOverride set_fNumericOverride[22..23],
+    fLegacyBidiClass set_fLegacyBidiClass[23..24],
+    fMergeNeutralItems set_fMergeNeutralItems[24..25],
+    fReserved set_fReserved[25..32],
+]}
+STRUCT!{struct SCRIPT_STATE {
+    bit_fields: WORD,
+}}
+BITFIELD!{SCRIPT_STATE bit_fields: WORD [
+    uBidiLevel set_uBidiLevel[0..5],
+    fOverrideDirection set_fOverrideDirection[5..6],
+    fInhibitSymSwap set_fInhibitSymSwap[6..7],
+    fCharShape set_fCharShape[7..8],
+    fDigitSubstitute set_fDigitSubstitute[8..9],
+    fInhibitLigate set_fInhibitLigate[9..10],
+    fDisplayZWG set_fDisplayZWG[10..11],
+    fArabicNumContext set_fArabicNumContext[11..12],
+    fGcpClusters set_fGcpClusters[12..13],
+    fReserved set_fReserved[13..14],
+    fEngineReserved set_fEngineReserved[14..16],
+]}
+STRUCT!{struct SCRIPT_ANALYSIS {
+    bit_fields: WORD,
+    s: SCRIPT_STATE,
+}}
+BITFIELD!{SCRIPT_ANALYSIS bit_fields: WORD [
+    eScript set_eScript[0..10],
+    fRTL set_fRTL[10..11],
+    fLayoutRTL set_fLayoutRTL[11..12],
+    fLinkBefore set_fLinkBefore[12..13],
+    fLinkAfter set_fLinkAfter[13..14],
+    fLogicalOrder set_fLogicalOrder[14..15],
+    fNoGlyphIndex set_fNoGlyphIndex[15..16],
+]}
+STRUCT!{struct SCRIPT_ITEM {
+    iCharPos: c_int,
+    a: SCRIPT_ANALYSIS,
+}}
+extern "system" {
+    pub fn ScriptItemize(
+        pwcInChars: *const WCHAR,
+        cInChars: c_int,
+        cMaxItems: c_int,
+        psControl: *const SCRIPT_CONTROL,
+        psState: *const SCRIPT_STATE,
+        pItems: *mut SCRIPT_ITEM,
+        pcItems: *mut c_int,
+    ) -> HRESULT;
+    pub fn ScriptLayout(
+        cRuns: c_int,
+        pbLevel: *const BYTE,
+        piVisualToLogical: *mut c_int,
+        piLogicalToVisual: *mut c_int,
+    ) -> HRESULT;
+}
+pub const SCRIPT_JUSTIFY_NONE: WORD = 0;
+pub const SCRIPT_JUSTIFY_ARABIC_BLANK: WORD = 1;
+pub const SCRIPT_JUSTIFY_CHARACTER: WORD = 2;
+pub const SCRIPT_JUSTIFY_RESERVED1: WORD = 3;
+pub const SCRIPT_JUSTIFY_BLANK: WORD = 4;
+pub const SCRIPT_JUSTIFY_RESERVED2: WORD = 5;
+pub const SCRIPT_JUSTIFY_RESERVED3: WORD = 6;
+pub const SCRIPT_JUSTIFY_ARABIC_NORMAL: WORD = 7;
+pub const SCRIPT_JUSTIFY_ARABIC_KASHIDA: WORD = 8;
+pub const SCRIPT_JUSTIFY_ARABIC_ALEF: WORD = 9;
+pub const SCRIPT_JUSTIFY_ARABIC_HA: WORD = 10;
+pub const SCRIPT_JUSTIFY_ARABIC_RA: WORD = 11;
+pub const SCRIPT_JUSTIFY_ARABIC_BA: WORD = 12;
+pub const SCRIPT_JUSTIFY_ARABIC_BARA: WORD = 13;
+pub const SCRIPT_JUSTIFY_ARABIC_SEEN: WORD = 14;
+pub const SCRIPT_JUSTIFY_ARABIC_SEEN_M: WORD = 15;
+STRUCT!{struct SCRIPT_VISATTR {
+    bit_fields: WORD,
+}}
+BITFIELD!{SCRIPT_VISATTR bit_fields: WORD [
+    uJustification set_uJustification[0..4],
+    fClusterStart set_fClusterStart[4..5],
+    fDiacritic set_fDiacritic[5..6],
+    fZeroWidth set_fZeroWidth[6..7],
+    fReserved set_fReserved[7..8],
+    fShapeReserved set_fShapeReserved[8..16],
+]}
+extern "system" {
+    pub fn ScriptShape(
+        hdc: HDC,
+        psc: *mut SCRIPT_CACHE,
+        pwcChars: *const WCHAR,
+        cChars: c_int,
+        cMaxGlyphs: c_int,
+        psa: *mut SCRIPT_ANALYSIS,
+        pwOutGlyphs: *mut WORD,
+        pwLogClust: *mut WORD,
+        psva: *mut SCRIPT_VISATTR,
+        pcGlyphs: *mut c_int,
+    ) -> HRESULT;
+}
+STRUCT!{struct GOFFSET {
+    du: LONG,
+    dv: LONG,
+}}
+extern "system" {
+    pub fn ScriptPlace(
+        hdc: HDC,
+        psc: *mut SCRIPT_CACHE,
+        pwGlyphs: *const WORD,
+        cGlyphs: c_int,
+        psva: *const SCRIPT_VISATTR,
+        psa: *mut SCRIPT_ANALYSIS,
+        piAdvance: *mut c_int,
+        pGoffset: *mut GOFFSET,
+        pABC: *mut ABC,
+    ) -> HRESULT;
+    pub fn ScriptTextOut(
+        hdc: HDC,
+        psc: *mut SCRIPT_CACHE,
+        x: c_int,
+        y: c_int,
+        fuOptions: UINT,
+        lprc: *const RECT,
+        psa: *const SCRIPT_ANALYSIS,
+        pwcReserved: *const WCHAR,
+        iReserved: c_int,
+        pwGlyphs: *const WORD,
+        cGlyphs: c_int,
+        piAdvance: *const c_int,
+        piJustify: *const c_int,
+        pGoffset: *const GOFFSET,
+    ) -> HRESULT;
+    pub fn ScriptJustify(
+        psva: *const SCRIPT_VISATTR,
+        piAdvance: *const c_int,
+        cGlyphs: c_int,
+        iDx: c_int,
+        iMinKashida: c_int,
+        piJustify: *mut c_int,
+    ) -> HRESULT;
+}
+STRUCT!{struct SCRIPT_LOGATTR {
+    bit_fields: BYTE,
+}}
+BITFIELD!{SCRIPT_LOGATTR bit_fields: BYTE [
+    fSoftBreak set_fSoftBreak[0..1],
+    fWhiteSpace set_fWhiteSpace[1..2],
+    fCharStop set_fCharStop[2..3],
+    fWordStop set_fWordStop[3..4],
+    fInvalid set_fInvalid[4..5],
+    fReserved set_fReserved[5..8],
+]}
+extern "system" {
+    pub fn ScriptBreak(
+        pwcChars: *const WCHAR,
+        cChars: c_int,
+        psa: *const SCRIPT_ANALYSIS,
+        psla: *mut SCRIPT_LOGATTR,
+    ) -> HRESULT;
+    pub fn ScriptCPtoX(
+        iCP: c_int,
+        fTrailing: BOOL,
+        cChars: c_int,
+        cGlyphs: c_int,
+        pwLogClust: *const WORD,
+        psva: *const SCRIPT_VISATTR,
+        piAdvance: *const c_int,
+        psa: *const SCRIPT_ANALYSIS,
+        piX: *mut c_int,
+    ) -> HRESULT;
+    pub fn ScriptXtoCP(
+        iX: c_int,
+        cChars: c_int,
+        cGlyphs: c_int,
+        pwLogClust: *const WORD,
+        psva: *const SCRIPT_VISATTR,
+        piAdvance: *const c_int,
+        psa: *const SCRIPT_ANALYSIS,
+        piCP: *mut c_int,
+        piTrailing: *mut c_int,
+    ) -> HRESULT;
+    pub fn ScriptGetLogicalWidths(
+        psa: *const SCRIPT_ANALYSIS,
+        cChars: c_int,
+        cGlyphs: c_int,
+        piGlyphWidth: *const c_int,
+        pwLogClust: *const WORD,
+        psva: *const SCRIPT_VISATTR,
+        piDx: *mut c_int,
+    ) -> HRESULT;
+    pub fn ScriptApplyLogicalWidth(
+        piDx: *const c_int,
+        cChars: c_int,
+        cGlyphs: c_int,
+        pwLogClust: *const WORD,
+        psva: *const SCRIPT_VISATTR,
+        piAdvance: *const c_int,
+        psa: *const SCRIPT_ANALYSIS,
+        pABC: *mut ABC,
+        piJustify: *mut c_int,
+    ) -> HRESULT;
+}
+pub const SGCM_RTL: DWORD = 0x00000001;
+extern "system" {
+    pub fn ScriptGetCMap(
+        hdc: HDC,
+        psc: *mut SCRIPT_CACHE,
+        pwcInChars: *const WCHAR,
+        cChars: c_int,
+        dwFlags: DWORD,
+        pwOutGlyphs: *mut WORD,
+    ) -> HRESULT;
+    pub fn ScriptGetGlyphABCWidth(
+        hdc: HDC,
+        psc: *mut SCRIPT_CACHE,
+        wGlyph: WORD,
+        pABC: *mut ABC,
+    ) -> HRESULT;
+}
+STRUCT!{struct SCRIPT_PROPERTIES {
+    bit_fields1: DWORD,
+    bit_fields2: DWORD,
+}}
+BITFIELD!{SCRIPT_PROPERTIES bit_fields1: DWORD [
+    langid set_langid[0..16],
+    fNumeric set_fNumeric[16..17],
+    fComplex set_fComplex[17..18],
+    fNeedsWordBreaking set_fNeedsWordBreaking[18..19],
+    fNeedsCaretInfo set_fNeedsCaretInfo[19..20],
+    bCharSet set_bCharSet[20..28],
+    fControl set_fControl[28..29],
+    fPrivateUseArea set_fPrivateUseArea[29..30],
+    fNeedsCharacterJustify set_fNeedsCharacterJustify[30..31],
+    fInvalidGlyph set_fInvalidGlyph[31..32],
+]}
+BITFIELD!{SCRIPT_PROPERTIES bit_fields2: DWORD [
+    fInvalidLogAttr set_fInvalidLogAttr[0..1],
+    fCDM set_fCDM[1..2],
+    fAmbiguousCharSet set_fAmbiguousCharSet[2..3],
+    fClusterSizeVaries set_fClusterSizeVaries[3..4],
+    fRejectInvalid set_fRejectInvalid[4..5],
+]}
+extern "system" {
+    pub fn ScriptGetProperties(
+        ppSp: *mut *mut *const SCRIPT_PROPERTIES,
+        piNumScripts: *mut c_int,
+    ) -> HRESULT;
+}
+STRUCT!{struct SCRIPT_FONTPROPERTIES {
+    cBytes: c_int,
+    wgBlank: WORD,
+    wgDefault: WORD,
+    wgInvalid: WORD,
+    wgKashida: WORD,
+    iKashidaWidth: c_int,
+}}
+extern "system" {
+    pub fn ScriptGetFontProperties(
+        hdc: HDC,
+        psc: *mut SCRIPT_CACHE,
+        sfp: *mut SCRIPT_FONTPROPERTIES,
+    ) -> HRESULT;
+    pub fn ScriptCacheGetHeight(
+        hdc: HDC,
+        psc: *mut SCRIPT_CACHE,
+        tmHeight: *mut c_long,
+    ) -> HRESULT;
+}
+pub const SSA_PASSWORD: DWORD = 0x00000001;
+pub const SSA_TAB: DWORD = 0x00000002;
+pub const SSA_CLIP: DWORD = 0x00000004;
+pub const SSA_FIT: DWORD = 0x00000008;
+pub const SSA_DZWG: DWORD = 0x00000010;
+pub const SSA_FALLBACK: DWORD = 0x00000020;
+pub const SSA_BREAK: DWORD = 0x00000040;
+pub const SSA_GLYPHS: DWORD = 0x00000080;
+pub const SSA_RTL: DWORD = 0x00000100;
+pub const SSA_GCP: DWORD = 0x00000200;
+pub const SSA_HOTKEY: DWORD = 0x00000400;
+pub const SSA_METAFILE: DWORD = 0x00000800;
+pub const SSA_LINK: DWORD = 0x00001000;
+pub const SSA_HIDEHOTKEY: DWORD = 0x00002000;
+pub const SSA_HOTKEYONLY: DWORD = 0x00002400;
+pub const SSA_FULLMEASURE: DWORD = 0x04000000;
+pub const SSA_LPKANSIFALLBACK: DWORD = 0x08000000;
+pub const SSA_PIDX: DWORD = 0x10000000;
+pub const SSA_LAYOUTRTL: DWORD = 0x20000000;
+pub const SSA_DONTGLYPH: DWORD = 0x40000000;
+pub const SSA_NOKASHIDA: DWORD = 0x80000000;
+STRUCT!{struct SCRIPT_TABDEF {
+    cTabStops: c_int,
+    iScale: c_int,
+    pTabStops: *mut c_int,
+    iTabOrigin: c_int,
+}}
+DECLARE_HANDLE!{SCRIPT_STRING_ANALYSIS, SCRIPT_STRING_ANALYSIS__}
+extern "system" {
+    pub fn ScriptStringAnalyse(
+        hdc: HDC,
+        pString: *const c_void,
+        cString: c_int,
+        cGlyphs: c_int,
+        iCharset: c_int,
+        dwFlags: DWORD,
+        iReqWidth: c_int,
+        psControl: *mut SCRIPT_CONTROL,
+        psState: *mut SCRIPT_STATE,
+        piDx: *const c_int,
+        pTabdef: *mut SCRIPT_TABDEF,
+        pbInClass: *const BYTE,
+        pssa: *mut SCRIPT_STRING_ANALYSIS,
+    ) -> HRESULT;
+    pub fn ScriptStringFree(
+        pssa: *mut SCRIPT_STRING_ANALYSIS,
+    ) -> HRESULT;
+    pub fn ScriptString_pSize(
+        ssa: SCRIPT_STRING_ANALYSIS,
+    ) -> *const SIZE;
+    pub fn ScriptString_pcOutChars(
+        ssa: SCRIPT_STRING_ANALYSIS,
+    ) -> *const c_int;
+    pub fn ScriptString_pLogAttr(
+        ssa: SCRIPT_STRING_ANALYSIS,
+    ) -> *const SCRIPT_LOGATTR;
+    pub fn ScriptStringGetOrder(
+        ssa: SCRIPT_STRING_ANALYSIS,
+        puOrder: *mut UINT,
+    ) -> HRESULT;
+    pub fn ScriptStringCPtoX(
+        ssa: SCRIPT_STRING_ANALYSIS,
+        icp: c_int,
+        fTrailing: BOOL,
+        pX: *mut c_int,
+    ) -> HRESULT;
+    pub fn ScriptStringXtoCP(
+        ssa: SCRIPT_STRING_ANALYSIS,
+        iX: c_int,
+        piCh: *mut c_int,
+        piTrailing: *mut c_int,
+    ) -> HRESULT;
+    pub fn ScriptStringGetLogicalWidths(
+        ssa: SCRIPT_STRING_ANALYSIS,
+        dpiDx: *mut c_int,
+    ) -> HRESULT;
+    pub fn ScriptStringValidate(
+        ssa: SCRIPT_STRING_ANALYSIS,
+    ) -> HRESULT;
+    pub fn ScriptStringOut(
+        ssa: SCRIPT_STRING_ANALYSIS,
+        iX: c_int,
+        iY: c_int,
+        uOptions: UINT,
+        prc: *const RECT,
+        iMinSel: c_int,
+        iMaxSel: c_int,
+        fDisabled: BOOL,
+    ) -> HRESULT;
+}
+pub const SIC_COMPLEX: DWORD = 1;
+pub const SIC_ASCIIDIGIT: DWORD = 2;
+pub const SIC_NEUTRAL: DWORD = 4;
+extern "system" {
+    pub fn ScriptIsComplex(
+        pwcInChars: *const WCHAR,
+        cInChars: c_int,
+        dwFlags: DWORD,
+    ) -> HRESULT;
+}
+STRUCT!{struct SCRIPT_DIGITSUBSTITUTE {
+    bit_fields1: DWORD,
+    bit_fields2: DWORD,
+    dwReserved: DWORD,
+}}
+BITFIELD!{SCRIPT_DIGITSUBSTITUTE bit_fields1: DWORD [
+    NationalDigitLanguage set_NationalDigitLanguage[0..16],
+    TraditionalDigitLanguage set_TraditionalDigitLanguage[16..32],
+]}
+BITFIELD!{SCRIPT_DIGITSUBSTITUTE bit_fields2: DWORD [
+    DigitSubstitute set_DigitSubstitute[0..8],
+]}
+extern "system" {
+    pub fn ScriptRecordDigitSubstitution(
+        Locale: LCID,
+        psds: *mut SCRIPT_DIGITSUBSTITUTE,
+    ) -> HRESULT;
+}
+pub const SCRIPT_DIGITSUBSTITUTE_CONTEXT: BYTE = 0;
+pub const SCRIPT_DIGITSUBSTITUTE_NONE: BYTE = 1;
+pub const SCRIPT_DIGITSUBSTITUTE_NATIONAL: BYTE = 2;
+pub const SCRIPT_DIGITSUBSTITUTE_TRADITIONAL: BYTE = 3;
+extern "system" {
+    pub fn ScriptApplyDigitSubstitution(
+        psds: *const SCRIPT_DIGITSUBSTITUTE,
+        psc: *mut SCRIPT_CONTROL,
+        pss: *mut SCRIPT_STATE,
+    ) -> HRESULT;
+}
+pub type OPENTYPE_TAG = ULONG;
+pub const SCRIPT_TAG_UNKNOWN: OPENTYPE_TAG = 0x00000000;
+STRUCT!{struct OPENTYPE_FEATURE_RECORD {
+    tagFeature: OPENTYPE_TAG,
+    lParameter: LONG,
+}}
+STRUCT!{struct TEXTRANGE_PROPERTIES {
+    potfRecords: *mut OPENTYPE_FEATURE_RECORD,
+    cotfRecords: c_int,
+}}
+STRUCT!{struct SCRIPT_CHARPROP {
+    bit_fields: WORD,
+}}
+BITFIELD!{SCRIPT_CHARPROP bit_fields: WORD [
+    fCanGlyphAlone set_fCanGlyphAlone[0..1],
+    reserved set_reserved[1..16],
+]}
+STRUCT!{struct SCRIPT_GLYPHPROP {
+    sva: SCRIPT_VISATTR,
+    reserved: WORD,
+}}
+extern "system" {
+    pub fn ScriptShapeOpenType(
+        hdc: HDC,
+        psc: *mut SCRIPT_CACHE,
+        psa: *mut SCRIPT_ANALYSIS,
+        tagScript: OPENTYPE_TAG,
+        tagLangSys: OPENTYPE_TAG,
+        rcRangeChars: *mut c_int,
+        rpRangeProperties: *mut *mut TEXTRANGE_PROPERTIES,
+        cRanges: c_int,
+        pwcChars: *const WCHAR,
+        cChars: c_int,
+        cMaxGlyphs: c_int,
+        pwLogClust: *mut WORD,
+        pCharProps: *mut SCRIPT_CHARPROP,
+        pwOutGlyphs: *mut WORD,
+        pOutGlyphProps: *mut SCRIPT_GLYPHPROP,
+        pcGlyphs: *mut c_int,
+    ) -> HRESULT;
+    pub fn ScriptPlaceOpenType(
+        hdc: HDC,
+        psc: *mut SCRIPT_CACHE,
+        psa: *mut SCRIPT_ANALYSIS,
+        tagScript: OPENTYPE_TAG,
+        tagLangSys: OPENTYPE_TAG,
+        rcRangeChars: *mut c_int,
+        rpRangeProperties: *mut *mut TEXTRANGE_PROPERTIES,
+        cRanges: c_int,
+        pwcChars: *const WCHAR,
+        pwLogClust: *mut WORD,
+        pCharProps: *mut SCRIPT_CHARPROP,
+        cChars: c_int,
+        pwGlyphs: *const WORD,
+        pGlyphProps: *const SCRIPT_GLYPHPROP,
+        cGlyphs: c_int,
+        piAdvance: *mut c_int,
+        pGoffset: *mut GOFFSET,
+        pABC: *mut ABC,
+    ) -> HRESULT;
+    pub fn ScriptItemizeOpenType(
+        pwcInChars: *const WCHAR,
+        cInChars: c_int,
+        cMaxItems: c_int,
+        psControl: *const SCRIPT_CONTROL,
+        psState: *const SCRIPT_STATE,
+        pItems: *mut SCRIPT_ITEM,
+        pScriptTags: *mut OPENTYPE_TAG,
+        pcItems: *mut c_int,
+    ) -> HRESULT;
+    pub fn ScriptGetFontScriptTags(
+        hdc: HDC,
+        psc: *mut SCRIPT_CACHE,
+        psa: *mut SCRIPT_ANALYSIS,
+        cMaxTags: c_int,
+        pScriptTags: *mut OPENTYPE_TAG,
+        pcTags: *mut c_int,
+    ) -> HRESULT;
+    pub fn ScriptGetFontLanguageTags(
+        hdc: HDC,
+        psc: *mut SCRIPT_CACHE,
+        psa: *mut SCRIPT_ANALYSIS,
+        tagScript: OPENTYPE_TAG,
+        cMaxTags: c_int,
+        pLangsysTags: *mut OPENTYPE_TAG,
+        pcTags: *mut c_int,
+    ) -> HRESULT;
+    pub fn ScriptGetFontFeatureTags(
+        hdc: HDC,
+        psc: *mut SCRIPT_CACHE,
+        psa: *mut SCRIPT_ANALYSIS,
+        tagScript: OPENTYPE_TAG,
+        tagLangSys: OPENTYPE_TAG,
+        cMaxTags: c_int,
+        pFeatureTags: *mut OPENTYPE_TAG,
+        pcTags: *mut c_int,
+    ) -> HRESULT;
+    pub fn ScriptGetFontAlternateGlyphs(
+        hdc: HDC,
+        psc: *mut SCRIPT_CACHE,
+        psa: *mut SCRIPT_ANALYSIS,
+        tagScript: OPENTYPE_TAG,
+        tagLangSys: OPENTYPE_TAG,
+        tagFeature: OPENTYPE_TAG,
+        wGlyphId: WORD,
+        cMaxAlternates: c_int,
+        pAlternateGlyphs: *mut WORD,
+        pcAlternates: *mut c_int,
+    ) -> HRESULT;
+    pub fn ScriptSubstituteSingleGlyph(
+        hdc: HDC,
+        psc: *mut SCRIPT_CACHE,
+        psa: *mut SCRIPT_ANALYSIS,
+        tagScript: OPENTYPE_TAG,
+        tagLangSys: OPENTYPE_TAG,
+        tagFeature: OPENTYPE_TAG,
+        lParameter: LONG,
+        wGlyphId: WORD,
+        pwOutGlyphId: *mut WORD,
+    ) -> HRESULT;
+    pub fn ScriptPositionSingleGlyph(
+        hdc: HDC,
+        psc: *mut SCRIPT_CACHE,
+        psa: *mut SCRIPT_ANALYSIS,
+        tagScript: OPENTYPE_TAG,
+        tagLangSys: OPENTYPE_TAG,
+        tagFeature: OPENTYPE_TAG,
+        lParameter: LONG,
+        wGlyphId: WORD,
+        iAdvance: c_int,
+        GOffset: GOFFSET,
+        piOutAdvance: *mut c_int,
+        pOutGoffset: *mut GOFFSET,
+    ) -> HRESULT;
+}
-- 
cgit v1.2.3