1 // Copyright © 2015, Jordan Miner
2 // Licensed under the MIT License <LICENSE.md>
3 //! Uniscribe structure declarations and constant definitions
4 pub const SCRIPT_UNDEFINED
: ::WORD
= 0;
5 pub const USP_E_SCRIPT_NOT_IN_FONT
: ::HRESULT
= MAKE_HRESULT
!(
6 ::SEVERITY_ERROR
, ::FACILITY_ITF
, 0x200
8 DECLARE_HANDLE
!(SCRIPT_CACHE
, SCRIPT_CACHE__
);
9 STRUCT
!{struct SCRIPT_CONTROL
{
12 BITFIELD
!(SCRIPT_CONTROL bit_fields
: ::DWORD
[
13 uDefaultLanguage set_uDefaultLanguage
[0..16],
14 fContextDigits set_fContextDigits
[16..17],
15 fInvertPreBoundDir set_fInvertPreBoundDir
[17..18],
16 fInvertPostBoundDir set_fInvertPostBoundDir
[18..19],
17 fLinkStringBefore set_fLinkStringBefore
[19..20],
18 fLinkStringAfter set_fLinkStringAfter
[20..21],
19 fNeutralOverride set_fNeutralOverride
[21..22],
20 fNumericOverride set_fNumericOverride
[22..23],
21 fLegacyBidiClass set_fLegacyBidiClass
[23..24],
22 fMergeNeutralItems set_fMergeNeutralItems
[24..25],
23 fReserved set_fReserved
[25..32],
25 STRUCT
!{struct SCRIPT_STATE
{
28 BITFIELD
!(SCRIPT_STATE bit_fields
: ::WORD
[
29 uBidiLevel set_uBidiLevel
[0..5],
30 fOverrideDirection set_fOverrideDirection
[5..6],
31 fInhibitSymSwap set_fInhibitSymSwap
[6..7],
32 fCharShape set_fCharShape
[7..8],
33 fDigitSubstitute set_fDigitSubstitute
[8..9],
34 fInhibitLigate set_fInhibitLigate
[9..10],
35 fDisplayZWG set_fDisplayZWG
[10..11],
36 fArabicNumContext set_fArabicNumContext
[11..12],
37 fGcpClusters set_fGcpClusters
[12..13],
38 fReserved set_fReserved
[13..14],
39 fEngineReserved set_fEngineReserved
[14..16],
41 STRUCT
!{struct SCRIPT_ANALYSIS
{
45 BITFIELD
!(SCRIPT_ANALYSIS bit_fields
: ::WORD
[
46 eScript set_eScript
[0..10],
47 fRTL set_fRTL
[10..11],
48 fLayoutRTL set_fLayoutRTL
[11..12],
49 fLinkBefore set_fLinkBefore
[12..13],
50 fLinkAfter set_fLinkAfter
[13..14],
51 fLogicalOrder set_fLogicalOrder
[14..15],
52 fNoGlyphIndex set_fNoGlyphIndex
[15..16],
54 STRUCT
!{struct SCRIPT_ITEM
{
59 pub const SCRIPT_JUSTIFY_NONE
: ::WORD
= 0;
60 pub const SCRIPT_JUSTIFY_ARABIC_BLANK
: ::WORD
= 1;
61 pub const SCRIPT_JUSTIFY_CHARACTER
: ::WORD
= 2;
62 pub const SCRIPT_JUSTIFY_RESERVED1
: ::WORD
= 3;
63 pub const SCRIPT_JUSTIFY_BLANK
: ::WORD
= 4;
64 pub const SCRIPT_JUSTIFY_RESERVED2
: ::WORD
= 5;
65 pub const SCRIPT_JUSTIFY_RESERVED3
: ::WORD
= 6;
66 pub const SCRIPT_JUSTIFY_ARABIC_NORMAL
: ::WORD
= 7;
67 pub const SCRIPT_JUSTIFY_ARABIC_KASHIDA
: ::WORD
= 8;
68 pub const SCRIPT_JUSTIFY_ARABIC_ALEF
: ::WORD
= 9;
69 pub const SCRIPT_JUSTIFY_ARABIC_HA
: ::WORD
= 10;
70 pub const SCRIPT_JUSTIFY_ARABIC_RA
: ::WORD
= 11;
71 pub const SCRIPT_JUSTIFY_ARABIC_BA
: ::WORD
= 12;
72 pub const SCRIPT_JUSTIFY_ARABIC_BARA
: ::WORD
= 13;
73 pub const SCRIPT_JUSTIFY_ARABIC_SEEN
: ::WORD
= 14;
74 pub const SCRIPT_JUSTIFY_ARABIC_SEEN_M
: ::WORD
= 15;
75 STRUCT
!{struct SCRIPT_VISATTR
{
78 BITFIELD
!(SCRIPT_VISATTR bit_fields
: ::WORD
[
79 uJustification set_uJustification
[0..4],
80 fClusterStart set_fClusterStart
[4..5],
81 fDiacritic set_fDiacritic
[5..6],
82 fZeroWidth set_fZeroWidth
[6..7],
83 fReserved set_fReserved
[7..8],
84 fShapeReserved set_fShapeReserved
[8..16],
86 STRUCT
!{struct GOFFSET
{
90 STRUCT
!{struct SCRIPT_LOGATTR
{
93 BITFIELD
!(SCRIPT_LOGATTR bit_fields
: ::BYTE
[
94 fSoftBreak set_fSoftBreak
[0..1],
95 fWhiteSpace set_fWhiteSpace
[1..2],
96 fCharStop set_fCharStop
[2..3],
97 fWordStop set_fWordStop
[3..4],
98 fInvalid set_fInvalid
[4..5],
99 fReserved set_fReserved
[5..8],
101 pub const SGCM_RTL
: ::DWORD
= 0x00000001;
102 STRUCT
!{struct SCRIPT_PROPERTIES
{
103 bit_fields1
: ::DWORD
,
104 bit_fields2
: ::DWORD
,
106 BITFIELD
!(SCRIPT_PROPERTIES bit_fields1
: ::DWORD
[
107 langid set_langid
[0..16],
108 fNumeric set_fNumeric
[16..17],
109 fComplex set_fComplex
[17..18],
110 fNeedsWordBreaking set_fNeedsWordBreaking
[18..19],
111 fNeedsCaretInfo set_fNeedsCaretInfo
[19..20],
112 bCharSet set_bCharSet
[20..28],
113 fControl set_fControl
[28..29],
114 fPrivateUseArea set_fPrivateUseArea
[29..30],
115 fNeedsCharacterJustify set_fNeedsCharacterJustify
[30..31],
116 fInvalidGlyph set_fInvalidGlyph
[31..32],
118 BITFIELD
!(SCRIPT_PROPERTIES bit_fields2
: ::DWORD
[
119 fInvalidLogAttr set_fInvalidLogAttr
[0..1],
121 fAmbiguousCharSet set_fAmbiguousCharSet
[2..3],
122 fClusterSizeVaries set_fClusterSizeVaries
[3..4],
123 fRejectInvalid set_fRejectInvalid
[4..5],
125 STRUCT
!{struct SCRIPT_FONTPROPERTIES
{
131 iKashidaWidth
: ::c_int
,
134 pub const SSA_PASSWORD
: ::DWORD
= 0x00000001;
135 pub const SSA_TAB
: ::DWORD
= 0x00000002;
136 pub const SSA_CLIP
: ::DWORD
= 0x00000004;
137 pub const SSA_FIT
: ::DWORD
= 0x00000008;
138 pub const SSA_DZWG
: ::DWORD
= 0x00000010;
139 pub const SSA_FALLBACK
: ::DWORD
= 0x00000020;
140 pub const SSA_BREAK
: ::DWORD
= 0x00000040;
141 pub const SSA_GLYPHS
: ::DWORD
= 0x00000080;
142 pub const SSA_RTL
: ::DWORD
= 0x00000100;
143 pub const SSA_GCP
: ::DWORD
= 0x00000200;
144 pub const SSA_HOTKEY
: ::DWORD
= 0x00000400;
145 pub const SSA_METAFILE
: ::DWORD
= 0x00000800;
146 pub const SSA_LINK
: ::DWORD
= 0x00001000;
147 pub const SSA_HIDEHOTKEY
: ::DWORD
= 0x00002000;
148 pub const SSA_HOTKEYONLY
: ::DWORD
= 0x00002400;
149 pub const SSA_FULLMEASURE
: ::DWORD
= 0x04000000;
150 pub const SSA_LPKANSIFALLBACK
: ::DWORD
= 0x08000000;
151 pub const SSA_PIDX
: ::DWORD
= 0x10000000;
152 pub const SSA_LAYOUTRTL
: ::DWORD
= 0x20000000;
153 pub const SSA_DONTGLYPH
: ::DWORD
= 0x40000000;
154 pub const SSA_NOKASHIDA
: ::DWORD
= 0x80000000;
155 STRUCT
!{struct SCRIPT_TABDEF
{
158 pTabStops
: *mut ::c_int
,
161 DECLARE_HANDLE
!(SCRIPT_STRING_ANALYSIS
, SCRIPT_STRING_ANALYSIS__
);
162 pub const SIC_COMPLEX
: ::DWORD
= 1;
163 pub const SIC_ASCIIDIGIT
: ::DWORD
= 2;
164 pub const SIC_NEUTRAL
: ::DWORD
= 4;
165 STRUCT
!{struct SCRIPT_DIGITSUBSTITUTE
{
166 bit_fields1
: ::DWORD
,
167 bit_fields2
: ::DWORD
,
170 BITFIELD
!(SCRIPT_DIGITSUBSTITUTE bit_fields1
: ::DWORD
[
171 NationalDigitLanguage set_NationalDigitLanguage
[0..16],
172 TraditionalDigitLanguage set_TraditionalDigitLanguage
[16..32],
174 BITFIELD
!(SCRIPT_DIGITSUBSTITUTE bit_fields2
: ::DWORD
[
175 DigitSubstitute set_DigitSubstitute
[0..8],
177 pub const SCRIPT_DIGITSUBSTITUTE_CONTEXT
: ::BYTE
= 0;
178 pub const SCRIPT_DIGITSUBSTITUTE_NONE
: ::BYTE
= 1;
179 pub const SCRIPT_DIGITSUBSTITUTE_NATIONAL
: ::BYTE
= 2;
180 pub const SCRIPT_DIGITSUBSTITUTE_TRADITIONAL
: ::BYTE
= 3;
181 pub type OPENTYPE_TAG
= ::ULONG
;
182 pub const SCRIPT_TAG_UNKNOWN
: OPENTYPE_TAG
= 0x00000000;
183 STRUCT
!{struct OPENTYPE_FEATURE_RECORD
{
184 tagFeature
: OPENTYPE_TAG
,
187 STRUCT
!{struct TEXTRANGE_PROPERTIES
{
188 potfRecords
: *mut OPENTYPE_FEATURE_RECORD
,
189 cotfRecords
: ::c_int
,
191 STRUCT
!{struct SCRIPT_CHARPROP
{
194 BITFIELD
!(SCRIPT_CHARPROP bit_fields
: ::WORD
[
195 fCanGlyphAlone set_fCanGlyphAlone
[0..1],
196 reserved set_reserved
[1..16],
198 STRUCT
!{struct SCRIPT_GLYPHPROP
{