-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/


-- | HarfBuzz bindings
--   
--   Bindings for HarfBuzz, autogenerated by haskell-gi.
@package gi-harfbuzz
@version 0.0.10


-- | Build time configuration used during code generation.
module GI.HarfBuzz.Config

-- | Overrides used when generating these bindings.
overrides :: Text

-- | Modules in this package
modules :: [Text]


module GI.HarfBuzz.Constants

-- | <i>No description available in the introspection data.</i>
pattern VERSION_STRING :: Text

-- | <i>No description available in the introspection data.</i>
pattern VERSION_MINOR :: Int32

-- | <i>No description available in the introspection data.</i>
pattern VERSION_MICRO :: Int32

-- | <i>No description available in the introspection data.</i>
pattern VERSION_MAJOR :: Int32

-- | See Unicode 6.1 for details on the maximum decomposition length.

-- | <i>Deprecated: (Since version 2.0.0)</i>
pattern UNICODE_MAX_DECOMPOSITION_LEN :: Int32

-- | Maximum valid Unicode code point.
--   
--   <i>Since: 1.9.0</i>
pattern UNICODE_MAX :: Int32

-- | <ul>
--   <li><i>Tibetan</i></li>
--   </ul>

-- | <i>Deprecated: (Since version 7.2.0)</i>
pattern UNICODE_COMBINING_CLASS_CCC133 :: Int32

-- | Do not use.
--   
--   <i>Since: 1.4.2</i>

-- | <i>Deprecated: (Since version 2.2.0)</i>
pattern OT_VAR_NO_AXIS_INDEX :: Int32

-- | Maximum number of OpenType tags that can correspond to a give
--   <a>ScriptT</a>.
--   
--   <i>Since: 2.0.0</i>
pattern OT_MAX_TAGS_PER_SCRIPT :: Int32

-- | Maximum number of OpenType tags that can correspond to a give
--   <a>LanguageT</a>.
--   
--   <i>Since: 2.0.0</i>
pattern OT_MAX_TAGS_PER_LANGUAGE :: Int32

-- | Special value for variations index indicating unsupported variation.
pattern OT_LAYOUT_NO_VARIATIONS_INDEX :: Int32

-- | Special value for script index indicating unsupported script.
pattern OT_LAYOUT_NO_SCRIPT_INDEX :: Int32

-- | Special value for feature index indicating unsupported feature.
pattern OT_LAYOUT_NO_FEATURE_INDEX :: Int32

-- | Special value for language index indicating default or unsupported
--   language.
pattern OT_LAYOUT_DEFAULT_LANGUAGE_INDEX :: Int32

-- | Constant signifying that a font does not have any named-instance index
--   set. This is the default of a font.
--   
--   <i>Since: 7.0.0</i>
pattern FONT_NO_VAR_NAMED_INSTANCE :: Int32

-- | Special setting for <a>FeatureT</a>.<tt><i>start</i></tt> to apply the
--   feature from the start of the buffer.
--   
--   <i>Since: 2.0.0</i>
pattern FEATURE_GLOBAL_START :: Int32

-- | Unused <tt><i>hb_codepoint_t</i></tt> value.
--   
--   <i>Since: 8.0.0</i>
pattern CODEPOINT_INVALID :: Word32

-- | The default code point for replacing invalid characters in a given
--   encoding. Set to U+FFFD REPLACEMENT CHARACTER.
--   
--   <i>Since: 0.9.31</i>
pattern BUFFER_REPLACEMENT_CODEPOINT_DEFAULT :: Int32

-- | Used when getting or setting AAT feature selectors. Indicates that
--   there is no selector index corresponding to the selector of interest.
pattern AAT_LAYOUT_NO_SELECTOR_INDEX :: Int32


module GI.HarfBuzz.Enums

-- | The selectors defined for specifying AAT feature settings.
--   
--   <i>Since: 2.2.0</i>
data AatLayoutFeatureSelectorT

-- | Initial, unset feature selector
AatLayoutFeatureSelectorTInvalid :: AatLayoutFeatureSelectorT

-- | for <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_ALL_TYPOGRAPHIC</i></tt>
AatLayoutFeatureSelectorTAllTypeFeaturesOn :: AatLayoutFeatureSelectorT

-- | for <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_ALL_TYPOGRAPHIC</i></tt>
AatLayoutFeatureSelectorTAllTypeFeaturesOff :: AatLayoutFeatureSelectorT

-- | for <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_LIGATURES</i></tt>
AatLayoutFeatureSelectorTRequiredLigaturesOn :: AatLayoutFeatureSelectorT

-- | for <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_LIGATURES</i></tt>
AatLayoutFeatureSelectorTRequiredLigaturesOff :: AatLayoutFeatureSelectorT

-- | for <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_LIGATURES</i></tt>
AatLayoutFeatureSelectorTCommonLigaturesOn :: AatLayoutFeatureSelectorT

-- | for <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_LIGATURES</i></tt>
AatLayoutFeatureSelectorTCommonLigaturesOff :: AatLayoutFeatureSelectorT

-- | for <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_LIGATURES</i></tt>
AatLayoutFeatureSelectorTRareLigaturesOn :: AatLayoutFeatureSelectorT

-- | for <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_LIGATURES</i></tt>
AatLayoutFeatureSelectorTRareLigaturesOff :: AatLayoutFeatureSelectorT

-- | for <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_LIGATURES</i></tt>
AatLayoutFeatureSelectorTLogosOn :: AatLayoutFeatureSelectorT

-- | for <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_LIGATURES</i></tt>
AatLayoutFeatureSelectorTLogosOff :: AatLayoutFeatureSelectorT

-- | for <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_LIGATURES</i></tt>
AatLayoutFeatureSelectorTRebusPicturesOn :: AatLayoutFeatureSelectorT

-- | for <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_LIGATURES</i></tt>
AatLayoutFeatureSelectorTRebusPicturesOff :: AatLayoutFeatureSelectorT

-- | for <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_LIGATURES</i></tt>
AatLayoutFeatureSelectorTDiphthongLigaturesOn :: AatLayoutFeatureSelectorT

-- | for <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_LIGATURES</i></tt>
AatLayoutFeatureSelectorTDiphthongLigaturesOff :: AatLayoutFeatureSelectorT

-- | for <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_LIGATURES</i></tt>
AatLayoutFeatureSelectorTSquaredLigaturesOn :: AatLayoutFeatureSelectorT

-- | for <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_LIGATURES</i></tt>
AatLayoutFeatureSelectorTSquaredLigaturesOff :: AatLayoutFeatureSelectorT

-- | for <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_LIGATURES</i></tt>
AatLayoutFeatureSelectorTAbbrevSquaredLigaturesOn :: AatLayoutFeatureSelectorT

-- | for <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_LIGATURES</i></tt>
AatLayoutFeatureSelectorTAbbrevSquaredLigaturesOff :: AatLayoutFeatureSelectorT

-- | for <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_LIGATURES</i></tt>
AatLayoutFeatureSelectorTSymbolLigaturesOn :: AatLayoutFeatureSelectorT

-- | for <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_LIGATURES</i></tt>
AatLayoutFeatureSelectorTSymbolLigaturesOff :: AatLayoutFeatureSelectorT

-- | for <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_LIGATURES</i></tt>
AatLayoutFeatureSelectorTContextualLigaturesOn :: AatLayoutFeatureSelectorT

-- | for <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_LIGATURES</i></tt>
AatLayoutFeatureSelectorTContextualLigaturesOff :: AatLayoutFeatureSelectorT

-- | for <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_LIGATURES</i></tt>
AatLayoutFeatureSelectorTHistoricalLigaturesOn :: AatLayoutFeatureSelectorT

-- | for <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_LIGATURES</i></tt>
AatLayoutFeatureSelectorTHistoricalLigaturesOff :: AatLayoutFeatureSelectorT

-- | for <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_LIGATURES</i></tt>
AatLayoutFeatureSelectorTUnconnected :: AatLayoutFeatureSelectorT

-- | for <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_LIGATURES</i></tt>
AatLayoutFeatureSelectorTPartiallyConnected :: AatLayoutFeatureSelectorT

-- | for <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_LIGATURES</i></tt>
AatLayoutFeatureSelectorTCursive :: AatLayoutFeatureSelectorT

-- | Deprecated
AatLayoutFeatureSelectorTUpperAndLowerCase :: AatLayoutFeatureSelectorT

-- | Deprecated
AatLayoutFeatureSelectorTAllCaps :: AatLayoutFeatureSelectorT

-- | Deprecated
AatLayoutFeatureSelectorTAllLowerCase :: AatLayoutFeatureSelectorT

-- | Deprecated
AatLayoutFeatureSelectorTSmallCaps :: AatLayoutFeatureSelectorT

-- | Deprecated
AatLayoutFeatureSelectorTInitialCaps :: AatLayoutFeatureSelectorT

-- | Deprecated
AatLayoutFeatureSelectorTInitialCapsAndSmallCaps :: AatLayoutFeatureSelectorT

-- | for <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_VERTICAL_SUBSTITUTION</i></tt>
AatLayoutFeatureSelectorTSubstituteVerticalFormsOn :: AatLayoutFeatureSelectorT

-- | for <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_VERTICAL_SUBSTITUTION</i></tt>
AatLayoutFeatureSelectorTSubstituteVerticalFormsOff :: AatLayoutFeatureSelectorT

-- | for
--   <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_LINGUISTIC_REARRANGEMENT</i></tt>
AatLayoutFeatureSelectorTLinguisticRearrangementOn :: AatLayoutFeatureSelectorT

-- | for
--   <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_LINGUISTIC_REARRANGEMENT</i></tt>
AatLayoutFeatureSelectorTLinguisticRearrangementOff :: AatLayoutFeatureSelectorT

-- | for <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_NUMBER_SPACING</i></tt>
AatLayoutFeatureSelectorTMonospacedNumbers :: AatLayoutFeatureSelectorT

-- | for <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_NUMBER_SPACING</i></tt>
AatLayoutFeatureSelectorTProportionalNumbers :: AatLayoutFeatureSelectorT

-- | for <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_NUMBER_SPACING</i></tt>
AatLayoutFeatureSelectorTThirdWidthNumbers :: AatLayoutFeatureSelectorT

-- | for <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_NUMBER_SPACING</i></tt>
AatLayoutFeatureSelectorTQuarterWidthNumbers :: AatLayoutFeatureSelectorT

-- | for <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_SMART_SWASH_TYPE</i></tt>
AatLayoutFeatureSelectorTWordInitialSwashesOn :: AatLayoutFeatureSelectorT

-- | for <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_SMART_SWASH_TYPE</i></tt>
AatLayoutFeatureSelectorTWordInitialSwashesOff :: AatLayoutFeatureSelectorT

-- | for <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_SMART_SWASH_TYPE</i></tt>
AatLayoutFeatureSelectorTWordFinalSwashesOn :: AatLayoutFeatureSelectorT

-- | for <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_SMART_SWASH_TYPE</i></tt>
AatLayoutFeatureSelectorTWordFinalSwashesOff :: AatLayoutFeatureSelectorT

-- | for <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_SMART_SWASH_TYPE</i></tt>
AatLayoutFeatureSelectorTLineInitialSwashesOn :: AatLayoutFeatureSelectorT

-- | for <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_SMART_SWASH_TYPE</i></tt>
AatLayoutFeatureSelectorTLineInitialSwashesOff :: AatLayoutFeatureSelectorT

-- | for <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_SMART_SWASH_TYPE</i></tt>
AatLayoutFeatureSelectorTLineFinalSwashesOn :: AatLayoutFeatureSelectorT

-- | for <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_SMART_SWASH_TYPE</i></tt>
AatLayoutFeatureSelectorTLineFinalSwashesOff :: AatLayoutFeatureSelectorT

-- | for <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_SMART_SWASH_TYPE</i></tt>
AatLayoutFeatureSelectorTNonFinalSwashesOn :: AatLayoutFeatureSelectorT

-- | for <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_SMART_SWASH_TYPE</i></tt>
AatLayoutFeatureSelectorTNonFinalSwashesOff :: AatLayoutFeatureSelectorT

-- | for <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_DIACRITICS_TYPE</i></tt>
AatLayoutFeatureSelectorTShowDiacritics :: AatLayoutFeatureSelectorT

-- | for <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_DIACRITICS_TYPE</i></tt>
AatLayoutFeatureSelectorTHideDiacritics :: AatLayoutFeatureSelectorT

-- | for <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_DIACRITICS_TYPE</i></tt>
AatLayoutFeatureSelectorTDecomposeDiacritics :: AatLayoutFeatureSelectorT

-- | for <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_VERTICAL_POSITION</i></tt>
AatLayoutFeatureSelectorTNormalPosition :: AatLayoutFeatureSelectorT

-- | for <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_VERTICAL_POSITION</i></tt>
AatLayoutFeatureSelectorTSuperiors :: AatLayoutFeatureSelectorT

-- | for <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_VERTICAL_POSITION</i></tt>
AatLayoutFeatureSelectorTInferiors :: AatLayoutFeatureSelectorT

-- | for <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_VERTICAL_POSITION</i></tt>
AatLayoutFeatureSelectorTOrdinals :: AatLayoutFeatureSelectorT

-- | for <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_VERTICAL_POSITION</i></tt>
AatLayoutFeatureSelectorTScientificInferiors :: AatLayoutFeatureSelectorT

-- | for <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_FRACTIONS</i></tt>
AatLayoutFeatureSelectorTNoFractions :: AatLayoutFeatureSelectorT

-- | for <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_FRACTIONS</i></tt>
AatLayoutFeatureSelectorTVerticalFractions :: AatLayoutFeatureSelectorT

-- | for <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_FRACTIONS</i></tt>
AatLayoutFeatureSelectorTDiagonalFractions :: AatLayoutFeatureSelectorT

-- | for
--   <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_OVERLAPPING_CHARACTERS_TYPE</i></tt>
AatLayoutFeatureSelectorTPreventOverlapOn :: AatLayoutFeatureSelectorT

-- | for
--   <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_OVERLAPPING_CHARACTERS_TYPE</i></tt>
AatLayoutFeatureSelectorTPreventOverlapOff :: AatLayoutFeatureSelectorT

-- | for <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_TYPOGRAPHIC_EXTRAS</i></tt>
AatLayoutFeatureSelectorTHyphensToEmDashOn :: AatLayoutFeatureSelectorT

-- | for <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_TYPOGRAPHIC_EXTRAS</i></tt>
AatLayoutFeatureSelectorTHyphensToEmDashOff :: AatLayoutFeatureSelectorT

-- | for <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_TYPOGRAPHIC_EXTRAS</i></tt>
AatLayoutFeatureSelectorTHyphenToEnDashOn :: AatLayoutFeatureSelectorT

-- | for <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_TYPOGRAPHIC_EXTRAS</i></tt>
AatLayoutFeatureSelectorTHyphenToEnDashOff :: AatLayoutFeatureSelectorT

-- | for <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_TYPOGRAPHIC_EXTRAS</i></tt>
AatLayoutFeatureSelectorTSlashedZeroOn :: AatLayoutFeatureSelectorT

-- | for <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_TYPOGRAPHIC_EXTRAS</i></tt>
AatLayoutFeatureSelectorTSlashedZeroOff :: AatLayoutFeatureSelectorT

-- | for <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_TYPOGRAPHIC_EXTRAS</i></tt>
AatLayoutFeatureSelectorTFormInterrobangOn :: AatLayoutFeatureSelectorT

-- | for <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_TYPOGRAPHIC_EXTRAS</i></tt>
AatLayoutFeatureSelectorTFormInterrobangOff :: AatLayoutFeatureSelectorT

-- | for <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_TYPOGRAPHIC_EXTRAS</i></tt>
AatLayoutFeatureSelectorTSmartQuotesOn :: AatLayoutFeatureSelectorT

-- | for <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_TYPOGRAPHIC_EXTRAS</i></tt>
AatLayoutFeatureSelectorTSmartQuotesOff :: AatLayoutFeatureSelectorT

-- | for <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_TYPOGRAPHIC_EXTRAS</i></tt>
AatLayoutFeatureSelectorTPeriodsToEllipsisOn :: AatLayoutFeatureSelectorT

-- | for <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_TYPOGRAPHIC_EXTRAS</i></tt>
AatLayoutFeatureSelectorTPeriodsToEllipsisOff :: AatLayoutFeatureSelectorT

-- | for <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_MATHEMATICAL_EXTRAS</i></tt>
AatLayoutFeatureSelectorTHyphenToMinusOn :: AatLayoutFeatureSelectorT

-- | for <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_MATHEMATICAL_EXTRAS</i></tt>
AatLayoutFeatureSelectorTHyphenToMinusOff :: AatLayoutFeatureSelectorT

-- | for <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_MATHEMATICAL_EXTRAS</i></tt>
AatLayoutFeatureSelectorTAsteriskToMultiplyOn :: AatLayoutFeatureSelectorT

-- | for <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_MATHEMATICAL_EXTRAS</i></tt>
AatLayoutFeatureSelectorTAsteriskToMultiplyOff :: AatLayoutFeatureSelectorT

-- | for <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_MATHEMATICAL_EXTRAS</i></tt>
AatLayoutFeatureSelectorTSlashToDivideOn :: AatLayoutFeatureSelectorT

-- | for <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_MATHEMATICAL_EXTRAS</i></tt>
AatLayoutFeatureSelectorTSlashToDivideOff :: AatLayoutFeatureSelectorT

-- | for <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_MATHEMATICAL_EXTRAS</i></tt>
AatLayoutFeatureSelectorTInequalityLigaturesOn :: AatLayoutFeatureSelectorT

-- | for <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_MATHEMATICAL_EXTRAS</i></tt>
AatLayoutFeatureSelectorTInequalityLigaturesOff :: AatLayoutFeatureSelectorT

-- | for <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_MATHEMATICAL_EXTRAS</i></tt>
AatLayoutFeatureSelectorTExponentsOn :: AatLayoutFeatureSelectorT

-- | for <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_MATHEMATICAL_EXTRAS</i></tt>
AatLayoutFeatureSelectorTExponentsOff :: AatLayoutFeatureSelectorT

-- | for <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_MATHEMATICAL_EXTRAS</i></tt>
AatLayoutFeatureSelectorTMathematicalGreekOn :: AatLayoutFeatureSelectorT

-- | for <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_MATHEMATICAL_EXTRAS</i></tt>
AatLayoutFeatureSelectorTMathematicalGreekOff :: AatLayoutFeatureSelectorT

-- | for <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_ORNAMENT_SETS_TYPE</i></tt>
AatLayoutFeatureSelectorTNoOrnaments :: AatLayoutFeatureSelectorT

-- | for <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_ORNAMENT_SETS_TYPE</i></tt>
AatLayoutFeatureSelectorTDingbats :: AatLayoutFeatureSelectorT

-- | for <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_ORNAMENT_SETS_TYPE</i></tt>
AatLayoutFeatureSelectorTPiCharacters :: AatLayoutFeatureSelectorT

-- | for <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_ORNAMENT_SETS_TYPE</i></tt>
AatLayoutFeatureSelectorTFleurons :: AatLayoutFeatureSelectorT

-- | for <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_ORNAMENT_SETS_TYPE</i></tt>
AatLayoutFeatureSelectorTDecorativeBorders :: AatLayoutFeatureSelectorT

-- | for <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_ORNAMENT_SETS_TYPE</i></tt>
AatLayoutFeatureSelectorTInternationalSymbols :: AatLayoutFeatureSelectorT

-- | for <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_ORNAMENT_SETS_TYPE</i></tt>
AatLayoutFeatureSelectorTMathSymbols :: AatLayoutFeatureSelectorT

-- | for <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_CHARACTER_ALTERNATIVES</i></tt>
AatLayoutFeatureSelectorTNoAlternates :: AatLayoutFeatureSelectorT

-- | for <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_DESIGN_COMPLEXITY_TYPE</i></tt>
AatLayoutFeatureSelectorTDesignLevel1 :: AatLayoutFeatureSelectorT

-- | for <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_DESIGN_COMPLEXITY_TYPE</i></tt>
AatLayoutFeatureSelectorTDesignLevel2 :: AatLayoutFeatureSelectorT

-- | for <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_DESIGN_COMPLEXITY_TYPE</i></tt>
AatLayoutFeatureSelectorTDesignLevel3 :: AatLayoutFeatureSelectorT

-- | for <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_DESIGN_COMPLEXITY_TYPE</i></tt>
AatLayoutFeatureSelectorTDesignLevel4 :: AatLayoutFeatureSelectorT

-- | for <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_DESIGN_COMPLEXITY_TYPE</i></tt>
AatLayoutFeatureSelectorTDesignLevel5 :: AatLayoutFeatureSelectorT

-- | for <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_STYLE_OPTIONS</i></tt>
AatLayoutFeatureSelectorTNoStyleOptions :: AatLayoutFeatureSelectorT

-- | for <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_STYLE_OPTIONS</i></tt>
AatLayoutFeatureSelectorTDisplayText :: AatLayoutFeatureSelectorT

-- | for <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_STYLE_OPTIONS</i></tt>
AatLayoutFeatureSelectorTEngravedText :: AatLayoutFeatureSelectorT

-- | for <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_STYLE_OPTIONS</i></tt>
AatLayoutFeatureSelectorTIlluminatedCaps :: AatLayoutFeatureSelectorT

-- | for <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_STYLE_OPTIONS</i></tt>
AatLayoutFeatureSelectorTTitlingCaps :: AatLayoutFeatureSelectorT

-- | for <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_STYLE_OPTIONS</i></tt>
AatLayoutFeatureSelectorTTallCaps :: AatLayoutFeatureSelectorT

-- | for <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_CHARACTER_SHAPE</i></tt>
AatLayoutFeatureSelectorTTraditionalCharacters :: AatLayoutFeatureSelectorT

-- | for <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_CHARACTER_SHAPE</i></tt>
AatLayoutFeatureSelectorTSimplifiedCharacters :: AatLayoutFeatureSelectorT

-- | for <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_CHARACTER_SHAPE</i></tt>
AatLayoutFeatureSelectorTJis1978Characters :: AatLayoutFeatureSelectorT

-- | for <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_CHARACTER_SHAPE</i></tt>
AatLayoutFeatureSelectorTJis1983Characters :: AatLayoutFeatureSelectorT

-- | for <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_CHARACTER_SHAPE</i></tt>
AatLayoutFeatureSelectorTJis1990Characters :: AatLayoutFeatureSelectorT

-- | for <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_CHARACTER_SHAPE</i></tt>
AatLayoutFeatureSelectorTTraditionalAltOne :: AatLayoutFeatureSelectorT

-- | for <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_CHARACTER_SHAPE</i></tt>
AatLayoutFeatureSelectorTTraditionalAltTwo :: AatLayoutFeatureSelectorT

-- | for <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_CHARACTER_SHAPE</i></tt>
AatLayoutFeatureSelectorTTraditionalAltThree :: AatLayoutFeatureSelectorT

-- | for <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_CHARACTER_SHAPE</i></tt>
AatLayoutFeatureSelectorTTraditionalAltFour :: AatLayoutFeatureSelectorT

-- | for <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_CHARACTER_SHAPE</i></tt>
AatLayoutFeatureSelectorTTraditionalAltFive :: AatLayoutFeatureSelectorT

-- | for <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_CHARACTER_SHAPE</i></tt>
AatLayoutFeatureSelectorTExpertCharacters :: AatLayoutFeatureSelectorT

-- | for <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_CHARACTER_SHAPE</i></tt>
AatLayoutFeatureSelectorTJis2004Characters :: AatLayoutFeatureSelectorT

-- | for <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_CHARACTER_SHAPE</i></tt>
AatLayoutFeatureSelectorTHojoCharacters :: AatLayoutFeatureSelectorT

-- | for <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_CHARACTER_SHAPE</i></tt>
AatLayoutFeatureSelectorTNlccharacters :: AatLayoutFeatureSelectorT

-- | for <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_CHARACTER_SHAPE</i></tt>
AatLayoutFeatureSelectorTTraditionalNamesCharacters :: AatLayoutFeatureSelectorT

-- | for <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_NUMBER_CASE</i></tt>
AatLayoutFeatureSelectorTLowerCaseNumbers :: AatLayoutFeatureSelectorT

-- | for <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_NUMBER_CASE</i></tt>
AatLayoutFeatureSelectorTUpperCaseNumbers :: AatLayoutFeatureSelectorT

-- | for <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_TEXT_SPACING</i></tt>
AatLayoutFeatureSelectorTProportionalText :: AatLayoutFeatureSelectorT

-- | for <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_TEXT_SPACING</i></tt>
AatLayoutFeatureSelectorTMonospacedText :: AatLayoutFeatureSelectorT

-- | for <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_TEXT_SPACING</i></tt>
AatLayoutFeatureSelectorTHalfWidthText :: AatLayoutFeatureSelectorT

-- | for <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_TEXT_SPACING</i></tt>
AatLayoutFeatureSelectorTThirdWidthText :: AatLayoutFeatureSelectorT

-- | for <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_TEXT_SPACING</i></tt>
AatLayoutFeatureSelectorTQuarterWidthText :: AatLayoutFeatureSelectorT

-- | for <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_TEXT_SPACING</i></tt>
AatLayoutFeatureSelectorTAltProportionalText :: AatLayoutFeatureSelectorT

-- | for <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_TEXT_SPACING</i></tt>
AatLayoutFeatureSelectorTAltHalfWidthText :: AatLayoutFeatureSelectorT

-- | for <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_TRANSLITERATION</i></tt>
AatLayoutFeatureSelectorTNoTransliteration :: AatLayoutFeatureSelectorT

-- | for <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_TRANSLITERATION</i></tt>
AatLayoutFeatureSelectorTHanjaToHangul :: AatLayoutFeatureSelectorT

-- | for <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_TRANSLITERATION</i></tt>
AatLayoutFeatureSelectorTHiraganaToKatakana :: AatLayoutFeatureSelectorT

-- | for <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_TRANSLITERATION</i></tt>
AatLayoutFeatureSelectorTKatakanaToHiragana :: AatLayoutFeatureSelectorT

-- | for <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_TRANSLITERATION</i></tt>
AatLayoutFeatureSelectorTKanaToRomanization :: AatLayoutFeatureSelectorT

-- | for <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_TRANSLITERATION</i></tt>
AatLayoutFeatureSelectorTRomanizationToHiragana :: AatLayoutFeatureSelectorT

-- | for <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_TRANSLITERATION</i></tt>
AatLayoutFeatureSelectorTRomanizationToKatakana :: AatLayoutFeatureSelectorT

-- | for <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_TRANSLITERATION</i></tt>
AatLayoutFeatureSelectorTHanjaToHangulAltOne :: AatLayoutFeatureSelectorT

-- | for <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_TRANSLITERATION</i></tt>
AatLayoutFeatureSelectorTHanjaToHangulAltTwo :: AatLayoutFeatureSelectorT

-- | for <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_TRANSLITERATION</i></tt>
AatLayoutFeatureSelectorTHanjaToHangulAltThree :: AatLayoutFeatureSelectorT

-- | for <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_ANNOTATION_TYPE</i></tt>
AatLayoutFeatureSelectorTNoAnnotation :: AatLayoutFeatureSelectorT

-- | for <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_ANNOTATION_TYPE</i></tt>
AatLayoutFeatureSelectorTBoxAnnotation :: AatLayoutFeatureSelectorT

-- | for <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_ANNOTATION_TYPE</i></tt>
AatLayoutFeatureSelectorTRoundedBoxAnnotation :: AatLayoutFeatureSelectorT

-- | for <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_ANNOTATION_TYPE</i></tt>
AatLayoutFeatureSelectorTCircleAnnotation :: AatLayoutFeatureSelectorT

-- | for <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_ANNOTATION_TYPE</i></tt>
AatLayoutFeatureSelectorTInvertedCircleAnnotation :: AatLayoutFeatureSelectorT

-- | for <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_ANNOTATION_TYPE</i></tt>
AatLayoutFeatureSelectorTParenthesisAnnotation :: AatLayoutFeatureSelectorT

-- | for <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_ANNOTATION_TYPE</i></tt>
AatLayoutFeatureSelectorTPeriodAnnotation :: AatLayoutFeatureSelectorT

-- | for <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_ANNOTATION_TYPE</i></tt>
AatLayoutFeatureSelectorTRomanNumeralAnnotation :: AatLayoutFeatureSelectorT

-- | for <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_ANNOTATION_TYPE</i></tt>
AatLayoutFeatureSelectorTDiamondAnnotation :: AatLayoutFeatureSelectorT

-- | for <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_ANNOTATION_TYPE</i></tt>
AatLayoutFeatureSelectorTInvertedBoxAnnotation :: AatLayoutFeatureSelectorT

-- | for <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_ANNOTATION_TYPE</i></tt>
AatLayoutFeatureSelectorTInvertedRoundedBoxAnnotation :: AatLayoutFeatureSelectorT

-- | for <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_KANA_SPACING_TYPE</i></tt>
AatLayoutFeatureSelectorTFullWidthKana :: AatLayoutFeatureSelectorT

-- | for <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_KANA_SPACING_TYPE</i></tt>
AatLayoutFeatureSelectorTProportionalKana :: AatLayoutFeatureSelectorT

-- | for
--   <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_IDEOGRAPHIC_SPACING_TYPE</i></tt>
AatLayoutFeatureSelectorTFullWidthIdeographs :: AatLayoutFeatureSelectorT

-- | for
--   <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_IDEOGRAPHIC_SPACING_TYPE</i></tt>
AatLayoutFeatureSelectorTProportionalIdeographs :: AatLayoutFeatureSelectorT

-- | for
--   <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_IDEOGRAPHIC_SPACING_TYPE</i></tt>
AatLayoutFeatureSelectorTHalfWidthIdeographs :: AatLayoutFeatureSelectorT

-- | for
--   <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_UNICODE_DECOMPOSITION_TYPE</i></tt>
AatLayoutFeatureSelectorTCanonicalCompositionOn :: AatLayoutFeatureSelectorT

-- | for
--   <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_UNICODE_DECOMPOSITION_TYPE</i></tt>
AatLayoutFeatureSelectorTCanonicalCompositionOff :: AatLayoutFeatureSelectorT

-- | for
--   <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_UNICODE_DECOMPOSITION_TYPE</i></tt>
AatLayoutFeatureSelectorTCompatibilityCompositionOn :: AatLayoutFeatureSelectorT

-- | for
--   <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_UNICODE_DECOMPOSITION_TYPE</i></tt>
AatLayoutFeatureSelectorTCompatibilityCompositionOff :: AatLayoutFeatureSelectorT

-- | for
--   <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_UNICODE_DECOMPOSITION_TYPE</i></tt>
AatLayoutFeatureSelectorTTranscodingCompositionOn :: AatLayoutFeatureSelectorT

-- | for
--   <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_UNICODE_DECOMPOSITION_TYPE</i></tt>
AatLayoutFeatureSelectorTTranscodingCompositionOff :: AatLayoutFeatureSelectorT

-- | Deprecated; use
--   <tt><i>HB_AAT_LAYOUT_FEATURE_SELECTOR_RUBY_KANA_OFF</i></tt> instead
AatLayoutFeatureSelectorTNoRubyKana :: AatLayoutFeatureSelectorT

-- | Deprecated; use
--   <tt><i>HB_AAT_LAYOUT_FEATURE_SELECTOR_RUBY_KANA_ON</i></tt> instead
AatLayoutFeatureSelectorTRubyKana :: AatLayoutFeatureSelectorT

-- | for <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_RUBY_KANA</i></tt>
AatLayoutFeatureSelectorTRubyKanaOn :: AatLayoutFeatureSelectorT

-- | for <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_RUBY_KANA</i></tt>
AatLayoutFeatureSelectorTRubyKanaOff :: AatLayoutFeatureSelectorT

-- | for
--   <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_CJK_SYMBOL_ALTERNATIVES_TYPE</i></tt>
AatLayoutFeatureSelectorTNoCjkSymbolAlternatives :: AatLayoutFeatureSelectorT

-- | for
--   <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_CJK_SYMBOL_ALTERNATIVES_TYPE</i></tt>
AatLayoutFeatureSelectorTCjkSymbolAltOne :: AatLayoutFeatureSelectorT

-- | for
--   <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_CJK_SYMBOL_ALTERNATIVES_TYPE</i></tt>
AatLayoutFeatureSelectorTCjkSymbolAltTwo :: AatLayoutFeatureSelectorT

-- | for
--   <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_CJK_SYMBOL_ALTERNATIVES_TYPE</i></tt>
AatLayoutFeatureSelectorTCjkSymbolAltThree :: AatLayoutFeatureSelectorT

-- | for
--   <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_CJK_SYMBOL_ALTERNATIVES_TYPE</i></tt>
AatLayoutFeatureSelectorTCjkSymbolAltFour :: AatLayoutFeatureSelectorT

-- | for
--   <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_CJK_SYMBOL_ALTERNATIVES_TYPE</i></tt>
AatLayoutFeatureSelectorTCjkSymbolAltFive :: AatLayoutFeatureSelectorT

-- | for
--   <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_IDEOGRAPHIC_ALTERNATIVES_TYPE</i></tt>
AatLayoutFeatureSelectorTNoIdeographicAlternatives :: AatLayoutFeatureSelectorT

-- | for
--   <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_IDEOGRAPHIC_ALTERNATIVES_TYPE</i></tt>
AatLayoutFeatureSelectorTIdeographicAltOne :: AatLayoutFeatureSelectorT

-- | for
--   <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_IDEOGRAPHIC_ALTERNATIVES_TYPE</i></tt>
AatLayoutFeatureSelectorTIdeographicAltTwo :: AatLayoutFeatureSelectorT

-- | for
--   <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_IDEOGRAPHIC_ALTERNATIVES_TYPE</i></tt>
AatLayoutFeatureSelectorTIdeographicAltThree :: AatLayoutFeatureSelectorT

-- | for
--   <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_IDEOGRAPHIC_ALTERNATIVES_TYPE</i></tt>
AatLayoutFeatureSelectorTIdeographicAltFour :: AatLayoutFeatureSelectorT

-- | for
--   <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_IDEOGRAPHIC_ALTERNATIVES_TYPE</i></tt>
AatLayoutFeatureSelectorTIdeographicAltFive :: AatLayoutFeatureSelectorT

-- | for
--   <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_CJK_VERTICAL_ROMAN_PLACEMENT_TYPE</i></tt>
AatLayoutFeatureSelectorTCjkVerticalRomanCentered :: AatLayoutFeatureSelectorT

-- | for
--   <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_CJK_VERTICAL_ROMAN_PLACEMENT_TYPE</i></tt>
AatLayoutFeatureSelectorTCjkVerticalRomanHbaseline :: AatLayoutFeatureSelectorT

-- | Deprecated; use
--   <tt><i>HB_AAT_LAYOUT_FEATURE_SELECTOR_CJK_ITALIC_ROMAN_OFF</i></tt>
--   instead
AatLayoutFeatureSelectorTNoCjkItalicRoman :: AatLayoutFeatureSelectorT

-- | Deprecated; use
--   <tt><i>HB_AAT_LAYOUT_FEATURE_SELECTOR_CJK_ITALIC_ROMAN_ON</i></tt>
--   instead
AatLayoutFeatureSelectorTCjkItalicRoman :: AatLayoutFeatureSelectorT

-- | for <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_ITALIC_CJK_ROMAN</i></tt>
AatLayoutFeatureSelectorTCjkItalicRomanOn :: AatLayoutFeatureSelectorT

-- | for <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_ITALIC_CJK_ROMAN</i></tt>
AatLayoutFeatureSelectorTCjkItalicRomanOff :: AatLayoutFeatureSelectorT

-- | for <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_CASE_SENSITIVE_LAYOUT</i></tt>
AatLayoutFeatureSelectorTCaseSensitiveLayoutOn :: AatLayoutFeatureSelectorT

-- | for <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_CASE_SENSITIVE_LAYOUT</i></tt>
AatLayoutFeatureSelectorTCaseSensitiveLayoutOff :: AatLayoutFeatureSelectorT

-- | for <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_CASE_SENSITIVE_LAYOUT</i></tt>
AatLayoutFeatureSelectorTCaseSensitiveSpacingOn :: AatLayoutFeatureSelectorT

-- | for <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_CASE_SENSITIVE_LAYOUT</i></tt>
AatLayoutFeatureSelectorTCaseSensitiveSpacingOff :: AatLayoutFeatureSelectorT

-- | for <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_ALTERNATE_KANA</i></tt>
AatLayoutFeatureSelectorTAlternateHorizKanaOn :: AatLayoutFeatureSelectorT

-- | for <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_ALTERNATE_KANA</i></tt>
AatLayoutFeatureSelectorTAlternateHorizKanaOff :: AatLayoutFeatureSelectorT

-- | for <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_ALTERNATE_KANA</i></tt>
AatLayoutFeatureSelectorTAlternateVertKanaOn :: AatLayoutFeatureSelectorT

-- | for <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_ALTERNATE_KANA</i></tt>
AatLayoutFeatureSelectorTAlternateVertKanaOff :: AatLayoutFeatureSelectorT

-- | for <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES</i></tt>
AatLayoutFeatureSelectorTNoStylisticAlternates :: AatLayoutFeatureSelectorT

-- | for <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES</i></tt>
AatLayoutFeatureSelectorTStylisticAltOneOn :: AatLayoutFeatureSelectorT

-- | for <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES</i></tt>
AatLayoutFeatureSelectorTStylisticAltOneOff :: AatLayoutFeatureSelectorT

-- | for <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES</i></tt>
AatLayoutFeatureSelectorTStylisticAltTwoOn :: AatLayoutFeatureSelectorT

-- | for <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES</i></tt>
AatLayoutFeatureSelectorTStylisticAltTwoOff :: AatLayoutFeatureSelectorT

-- | for <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES</i></tt>
AatLayoutFeatureSelectorTStylisticAltThreeOn :: AatLayoutFeatureSelectorT

-- | for <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES</i></tt>
AatLayoutFeatureSelectorTStylisticAltThreeOff :: AatLayoutFeatureSelectorT

-- | for <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES</i></tt>
AatLayoutFeatureSelectorTStylisticAltFourOn :: AatLayoutFeatureSelectorT

-- | for <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES</i></tt>
AatLayoutFeatureSelectorTStylisticAltFourOff :: AatLayoutFeatureSelectorT

-- | for <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES</i></tt>
AatLayoutFeatureSelectorTStylisticAltFiveOn :: AatLayoutFeatureSelectorT

-- | for <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES</i></tt>
AatLayoutFeatureSelectorTStylisticAltFiveOff :: AatLayoutFeatureSelectorT

-- | for <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES</i></tt>
AatLayoutFeatureSelectorTStylisticAltSixOn :: AatLayoutFeatureSelectorT

-- | for <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES</i></tt>
AatLayoutFeatureSelectorTStylisticAltSixOff :: AatLayoutFeatureSelectorT

-- | for <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES</i></tt>
AatLayoutFeatureSelectorTStylisticAltSevenOn :: AatLayoutFeatureSelectorT

-- | for <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES</i></tt>
AatLayoutFeatureSelectorTStylisticAltSevenOff :: AatLayoutFeatureSelectorT

-- | for <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES</i></tt>
AatLayoutFeatureSelectorTStylisticAltEightOn :: AatLayoutFeatureSelectorT

-- | for <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES</i></tt>
AatLayoutFeatureSelectorTStylisticAltEightOff :: AatLayoutFeatureSelectorT

-- | for <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES</i></tt>
AatLayoutFeatureSelectorTStylisticAltNineOn :: AatLayoutFeatureSelectorT

-- | for <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES</i></tt>
AatLayoutFeatureSelectorTStylisticAltNineOff :: AatLayoutFeatureSelectorT

-- | for <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES</i></tt>
AatLayoutFeatureSelectorTStylisticAltTenOn :: AatLayoutFeatureSelectorT

-- | for <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES</i></tt>
AatLayoutFeatureSelectorTStylisticAltTenOff :: AatLayoutFeatureSelectorT

-- | for <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES</i></tt>
AatLayoutFeatureSelectorTStylisticAltElevenOn :: AatLayoutFeatureSelectorT

-- | for <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES</i></tt>
AatLayoutFeatureSelectorTStylisticAltElevenOff :: AatLayoutFeatureSelectorT

-- | for <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES</i></tt>
AatLayoutFeatureSelectorTStylisticAltTwelveOn :: AatLayoutFeatureSelectorT

-- | for <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES</i></tt>
AatLayoutFeatureSelectorTStylisticAltTwelveOff :: AatLayoutFeatureSelectorT

-- | for <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES</i></tt>
AatLayoutFeatureSelectorTStylisticAltThirteenOn :: AatLayoutFeatureSelectorT

-- | for <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES</i></tt>
AatLayoutFeatureSelectorTStylisticAltThirteenOff :: AatLayoutFeatureSelectorT

-- | for <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES</i></tt>
AatLayoutFeatureSelectorTStylisticAltFourteenOn :: AatLayoutFeatureSelectorT

-- | for <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES</i></tt>
AatLayoutFeatureSelectorTStylisticAltFourteenOff :: AatLayoutFeatureSelectorT

-- | for <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES</i></tt>
AatLayoutFeatureSelectorTStylisticAltFifteenOn :: AatLayoutFeatureSelectorT

-- | for <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES</i></tt>
AatLayoutFeatureSelectorTStylisticAltFifteenOff :: AatLayoutFeatureSelectorT

-- | for <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES</i></tt>
AatLayoutFeatureSelectorTStylisticAltSixteenOn :: AatLayoutFeatureSelectorT

-- | for <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES</i></tt>
AatLayoutFeatureSelectorTStylisticAltSixteenOff :: AatLayoutFeatureSelectorT

-- | for <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES</i></tt>
AatLayoutFeatureSelectorTStylisticAltSeventeenOn :: AatLayoutFeatureSelectorT

-- | for <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES</i></tt>
AatLayoutFeatureSelectorTStylisticAltSeventeenOff :: AatLayoutFeatureSelectorT

-- | for <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES</i></tt>
AatLayoutFeatureSelectorTStylisticAltEighteenOn :: AatLayoutFeatureSelectorT

-- | for <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES</i></tt>
AatLayoutFeatureSelectorTStylisticAltEighteenOff :: AatLayoutFeatureSelectorT

-- | for <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES</i></tt>
AatLayoutFeatureSelectorTStylisticAltNineteenOn :: AatLayoutFeatureSelectorT

-- | for <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES</i></tt>
AatLayoutFeatureSelectorTStylisticAltNineteenOff :: AatLayoutFeatureSelectorT

-- | for <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES</i></tt>
AatLayoutFeatureSelectorTStylisticAltTwentyOn :: AatLayoutFeatureSelectorT

-- | for <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES</i></tt>
AatLayoutFeatureSelectorTStylisticAltTwentyOff :: AatLayoutFeatureSelectorT

-- | for <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_CONTEXTUAL_ALTERNATIVES</i></tt>
AatLayoutFeatureSelectorTContextualAlternatesOn :: AatLayoutFeatureSelectorT

-- | for <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_CONTEXTUAL_ALTERNATIVES</i></tt>
AatLayoutFeatureSelectorTContextualAlternatesOff :: AatLayoutFeatureSelectorT

-- | for <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_CONTEXTUAL_ALTERNATIVES</i></tt>
AatLayoutFeatureSelectorTSwashAlternatesOn :: AatLayoutFeatureSelectorT

-- | for <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_CONTEXTUAL_ALTERNATIVES</i></tt>
AatLayoutFeatureSelectorTSwashAlternatesOff :: AatLayoutFeatureSelectorT

-- | for <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_CONTEXTUAL_ALTERNATIVES</i></tt>
AatLayoutFeatureSelectorTContextualSwashAlternatesOn :: AatLayoutFeatureSelectorT

-- | for <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_CONTEXTUAL_ALTERNATIVES</i></tt>
AatLayoutFeatureSelectorTContextualSwashAlternatesOff :: AatLayoutFeatureSelectorT

-- | for <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_LOWER_CASE</i></tt>
AatLayoutFeatureSelectorTDefaultLowerCase :: AatLayoutFeatureSelectorT

-- | for <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_LOWER_CASE</i></tt>
AatLayoutFeatureSelectorTLowerCaseSmallCaps :: AatLayoutFeatureSelectorT

-- | for <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_LOWER_CASE</i></tt>
AatLayoutFeatureSelectorTLowerCasePetiteCaps :: AatLayoutFeatureSelectorT

-- | for <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_UPPER_CASE</i></tt>
AatLayoutFeatureSelectorTDefaultUpperCase :: AatLayoutFeatureSelectorT

-- | for <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_UPPER_CASE</i></tt>
AatLayoutFeatureSelectorTUpperCaseSmallCaps :: AatLayoutFeatureSelectorT

-- | for <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_UPPER_CASE</i></tt>
AatLayoutFeatureSelectorTUpperCasePetiteCaps :: AatLayoutFeatureSelectorT

-- | for <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_CJK_ROMAN_SPACING_TYPE</i></tt>
AatLayoutFeatureSelectorTHalfWidthCjkRoman :: AatLayoutFeatureSelectorT

-- | for <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_CJK_ROMAN_SPACING_TYPE</i></tt>
AatLayoutFeatureSelectorTProportionalCjkRoman :: AatLayoutFeatureSelectorT

-- | for <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_CJK_ROMAN_SPACING_TYPE</i></tt>
AatLayoutFeatureSelectorTDefaultCjkRoman :: AatLayoutFeatureSelectorT

-- | for <tt><i>HB_AAT_LAYOUT_FEATURE_TYPE_CJK_ROMAN_SPACING_TYPE</i></tt>
AatLayoutFeatureSelectorTFullWidthCjkRoman :: AatLayoutFeatureSelectorT

-- | Catch-all for unknown values
AnotherAatLayoutFeatureSelectorT :: Int -> AatLayoutFeatureSelectorT

-- | The possible feature types defined for AAT shaping, from Apple <a>Font
--   Feature Registry</a>.
--   
--   <i>Since: 2.2.0</i>
data AatLayoutFeatureTypeT

-- | Initial, unset feature type
AatLayoutFeatureTypeTInvalid :: AatLayoutFeatureTypeT

-- | <a>All Typographic Features</a>
AatLayoutFeatureTypeTAllTypographic :: AatLayoutFeatureTypeT

-- | <a>Ligatures</a>
AatLayoutFeatureTypeTLigatures :: AatLayoutFeatureTypeT

-- | <a>Cursive Connection</a>
AatLayoutFeatureTypeTCursiveConnection :: AatLayoutFeatureTypeT

-- | <a>Letter Case</a>
AatLayoutFeatureTypeTLetterCase :: AatLayoutFeatureTypeT

-- | <a>Vertical Substitution</a>
AatLayoutFeatureTypeTVerticalSubstitution :: AatLayoutFeatureTypeT

-- | <a>Linguistic Rearrangement</a>
AatLayoutFeatureTypeTLinguisticRearrangement :: AatLayoutFeatureTypeT

-- | <a>Number Spacing</a>
AatLayoutFeatureTypeTNumberSpacing :: AatLayoutFeatureTypeT

-- | <a>Smart Swash</a>
AatLayoutFeatureTypeTSmartSwashType :: AatLayoutFeatureTypeT

-- | <a>Diacritics</a>
AatLayoutFeatureTypeTDiacriticsType :: AatLayoutFeatureTypeT

-- | <a>Vertical Position</a>
AatLayoutFeatureTypeTVerticalPosition :: AatLayoutFeatureTypeT

-- | <a>Fractions</a>
AatLayoutFeatureTypeTFractions :: AatLayoutFeatureTypeT

-- | <a>Overlapping Characters</a>
AatLayoutFeatureTypeTOverlappingCharactersType :: AatLayoutFeatureTypeT

-- | <a>Typographic Extras</a>
AatLayoutFeatureTypeTTypographicExtras :: AatLayoutFeatureTypeT

-- | <a>Mathematical Extras</a>
AatLayoutFeatureTypeTMathematicalExtras :: AatLayoutFeatureTypeT

-- | <a>Ornament Sets</a>
AatLayoutFeatureTypeTOrnamentSetsType :: AatLayoutFeatureTypeT

-- | <a>Character Alternatives</a>
AatLayoutFeatureTypeTCharacterAlternatives :: AatLayoutFeatureTypeT

-- | <a>Design Complexity</a>
AatLayoutFeatureTypeTDesignComplexityType :: AatLayoutFeatureTypeT

-- | <a>Style Options</a>
AatLayoutFeatureTypeTStyleOptions :: AatLayoutFeatureTypeT

-- | <a>Character Shape</a>
AatLayoutFeatureTypeTCharacterShape :: AatLayoutFeatureTypeT

-- | <a>Number Case</a>
AatLayoutFeatureTypeTNumberCase :: AatLayoutFeatureTypeT

-- | <a>Text Spacing</a>
AatLayoutFeatureTypeTTextSpacing :: AatLayoutFeatureTypeT

-- | <a>Transliteration</a>
AatLayoutFeatureTypeTTransliteration :: AatLayoutFeatureTypeT

-- | <a>Annotation</a>
AatLayoutFeatureTypeTAnnotationType :: AatLayoutFeatureTypeT

-- | <a>Kana Spacing</a>
AatLayoutFeatureTypeTKanaSpacingType :: AatLayoutFeatureTypeT

-- | <a>Ideographic Spacing</a>
AatLayoutFeatureTypeTIdeographicSpacingType :: AatLayoutFeatureTypeT

-- | <a>Unicode Decomposition</a>
AatLayoutFeatureTypeTUnicodeDecompositionType :: AatLayoutFeatureTypeT

-- | <a>Ruby Kana</a>
AatLayoutFeatureTypeTRubyKana :: AatLayoutFeatureTypeT

-- | <a>CJK Symbol Alternatives</a>
AatLayoutFeatureTypeTCjkSymbolAlternativesType :: AatLayoutFeatureTypeT

-- | <a>Ideographic Alternatives</a>
AatLayoutFeatureTypeTIdeographicAlternativesType :: AatLayoutFeatureTypeT

-- | <a>CJK Vertical Roman Placement</a>
AatLayoutFeatureTypeTCjkVerticalRomanPlacementType :: AatLayoutFeatureTypeT

-- | <a>Italic CJK Roman</a>
AatLayoutFeatureTypeTItalicCjkRoman :: AatLayoutFeatureTypeT

-- | <a>Case Sensitive Layout</a>
AatLayoutFeatureTypeTCaseSensitiveLayout :: AatLayoutFeatureTypeT

-- | <a>Alternate Kana</a>
AatLayoutFeatureTypeTAlternateKana :: AatLayoutFeatureTypeT

-- | <a>Stylistic Alternatives</a>
AatLayoutFeatureTypeTStylisticAlternatives :: AatLayoutFeatureTypeT

-- | <a>Contextual Alternatives</a>
AatLayoutFeatureTypeTContextualAlternatives :: AatLayoutFeatureTypeT

-- | <a>Lower Case</a>
AatLayoutFeatureTypeTLowerCase :: AatLayoutFeatureTypeT

-- | <a>Upper Case</a>
AatLayoutFeatureTypeTUpperCase :: AatLayoutFeatureTypeT

-- | <a>Language Tag</a>
AatLayoutFeatureTypeTLanguageTagType :: AatLayoutFeatureTypeT

-- | <a>CJK Roman Spacing</a>
AatLayoutFeatureTypeTCjkRomanSpacingType :: AatLayoutFeatureTypeT

-- | Catch-all for unknown values
AnotherAatLayoutFeatureTypeT :: Int -> AatLayoutFeatureTypeT

-- | Data type for holding HarfBuzz's clustering behavior options. The
--   cluster level dictates one aspect of how HarfBuzz will treat non-base
--   characters during shaping.
--   
--   In <i><tt>hBBUFFERCLUSTERLEVELMONOTONEGRAPHEMES</tt></i>, non-base
--   characters are merged into the cluster of the base character that
--   precedes them. There is also cluster merging every time the clusters
--   will otherwise become non-monotone.
--   
--   In <i><tt>hBBUFFERCLUSTERLEVELMONOTONECHARACTERS</tt></i>, non-base
--   characters are initially assigned their own cluster values, which are
--   not merged into preceding base clusters. This allows HarfBuzz to
--   perform additional operations like reorder sequences of adjacent
--   marks. The output is still monotone, but the cluster values are more
--   granular.
--   
--   In <i><tt>hBBUFFERCLUSTERLEVELCHARACTERS</tt></i>, non-base characters
--   are assigned their own cluster values, which are not merged into
--   preceding base clusters. Moreover, the cluster values are not merged
--   into monotone order. This is the most granular cluster level, and it
--   is useful for clients that need to know the exact cluster values of
--   each character, but is harder to use for clients, since clusters might
--   appear in any order.
--   
--   In <i><tt>hBBUFFERCLUSTERLEVELGRAPHEMES</tt></i>, non-base characters
--   are merged into the cluster of the base character that precedes them.
--   This is similar to the Unicode Grapheme Cluster algorithm, but it is
--   not exactly the same. The output is not forced to be monotone. This is
--   useful for clients that want to use HarfBuzz as a cheap implementation
--   of the Unicode Grapheme Cluster algorithm.
--   
--   <i><tt>hBBUFFERCLUSTERLEVELMONOTONEGRAPHEMES</tt></i> is the default,
--   because it maintains backward compatibility with older versions of
--   HarfBuzz. New client programs that do not need to maintain such
--   backward compatibility are recommended to use
--   <i><tt>hBBUFFERCLUSTERLEVELMONOTONECHARACTERS</tt></i> instead of the
--   default.
--   
--   <i>Since: 0.9.42</i>
data BufferClusterLevelT

-- | Return cluster values grouped by graphemes into monotone order.
BufferClusterLevelTMonotoneGraphemes :: BufferClusterLevelT

-- | Return cluster values grouped into monotone order.
BufferClusterLevelTMonotoneCharacters :: BufferClusterLevelT

-- | Don't group cluster values.
BufferClusterLevelTCharacters :: BufferClusterLevelT

-- | Only group clusters, but don't enforce monotone order.
BufferClusterLevelTGraphemes :: BufferClusterLevelT

-- | Default cluster level, equal to
--   <i><tt>hBBUFFERCLUSTERLEVELMONOTONEGRAPHEMES</tt></i>.
BufferClusterLevelTDefault :: BufferClusterLevelT

-- | Catch-all for unknown values
AnotherBufferClusterLevelT :: Int -> BufferClusterLevelT

-- | The type of <a>BufferT</a> contents.
data BufferContentTypeT

-- | Initial value for new buffer.
BufferContentTypeTInvalid :: BufferContentTypeT

-- | The buffer contains input characters (before shaping).
BufferContentTypeTUnicode :: BufferContentTypeT

-- | The buffer contains output glyphs (after shaping).
BufferContentTypeTGlyphs :: BufferContentTypeT

-- | Catch-all for unknown values
AnotherBufferContentTypeT :: Int -> BufferContentTypeT

-- | The buffer serialization and de-serialization format used in
--   <a>bufferSerializeGlyphs</a> and <a>bufferDeserializeGlyphs</a>.
--   
--   <i>Since: 0.9.2</i>
data BufferSerializeFormatT

-- | a human-readable, plain text format.
BufferSerializeFormatTText :: BufferSerializeFormatT

-- | a machine-readable JSON format.
BufferSerializeFormatTJson :: BufferSerializeFormatT

-- | invalid format.
BufferSerializeFormatTInvalid :: BufferSerializeFormatT

-- | Catch-all for unknown values
AnotherBufferSerializeFormatT :: Int -> BufferSerializeFormatT

-- | The direction of a text segment or buffer.
--   
--   A segment can also be tested for horizontal or vertical orientation
--   (irrespective of specific direction) with
--   <tt><i>HB_DIRECTION_IS_HORIZONTAL()</i></tt> or
--   <tt><i>HB_DIRECTION_IS_VERTICAL()</i></tt>.
data DirectionT

-- | Initial, unset direction.
DirectionTInvalid :: DirectionT

-- | Text is set horizontally from left to right.
DirectionTLtr :: DirectionT

-- | Text is set horizontally from right to left.
DirectionTRtl :: DirectionT

-- | Text is set vertically from top to bottom.
DirectionTTtb :: DirectionT

-- | Text is set vertically from bottom to top.
DirectionTBtt :: DirectionT

-- | Catch-all for unknown values
AnotherDirectionT :: Int -> DirectionT

-- | Data type holding the memory modes available to client programs.
--   
--   Regarding these various memory-modes:
--   
--   <ul>
--   <li>In no case shall the HarfBuzz client modify memory that is passed
--   to HarfBuzz in a blob. If there is any such possibility,
--   <i><tt>hBMEMORYMODEDUPLICATE</tt></i> should be used such that
--   HarfBuzz makes a copy immediately,</li>
--   <li>Use <i><tt>hBMEMORYMODEREADONLY</tt></i> otherwise, unless you
--   really really really know what you are doing,</li>
--   <li><i><tt>hBMEMORYMODEWRITABLE</tt></i> is appropriate if you really
--   made a copy of data solely for the purpose of passing to HarfBuzz and
--   doing that just once (no reuse!),</li>
--   <li>If the font is <tt><i>mmap()</i></tt>ed, it's okay to use
--   <i><tt>hBMEMORYMODEREADONLYMAYMAKEWRITABLE</tt></i>, however, using
--   that mode correctly is very tricky. Use
--   <i><tt>hBMEMORYMODEREADONLY</tt></i> instead.</li>
--   </ul>
data MemoryModeT

-- | HarfBuzz immediately makes a copy of the data.
MemoryModeTDuplicate :: MemoryModeT

-- | HarfBuzz client will never modify the data, and HarfBuzz will never
--   modify the data.
MemoryModeTReadonly :: MemoryModeT

-- | HarfBuzz client made a copy of the data solely for HarfBuzz, so
--   HarfBuzz may modify the data.
MemoryModeTWritable :: MemoryModeT

-- | See above
MemoryModeTReadonlyMayMakeWritable :: MemoryModeT

-- | Catch-all for unknown values
AnotherMemoryModeT :: Int -> MemoryModeT

-- | Baseline tags from <a>Baseline Tags</a> registry.
--   
--   <i>Since: 2.6.0</i>
data OtLayoutBaselineTagT

-- | The baseline used by alphabetic scripts such as Latin, Cyrillic and
--   Greek. In vertical writing mode, the alphabetic baseline for
--   characters rotated 90 degrees clockwise. (This would not apply to
--   alphabetic characters that remain upright in vertical writing mode,
--   since these characters are not rotated.)
OtLayoutBaselineTagTRoman :: OtLayoutBaselineTagT

-- | The hanging baseline. In horizontal direction, this is the horizontal
--   line from which syllables seem, to hang in Tibetan and other similar
--   scripts. In vertical writing mode, for Tibetan (or some other similar
--   script) characters rotated 90 degrees clockwise.
OtLayoutBaselineTagTHanging :: OtLayoutBaselineTagT

-- | Ideographic character face bottom or left edge, if the direction is
--   horizontal or vertical, respectively.
OtLayoutBaselineTagTIdeoFaceBottomOrLeft :: OtLayoutBaselineTagT

-- | Ideographic character face top or right edge, if the direction is
--   horizontal or vertical, respectively.
OtLayoutBaselineTagTIdeoFaceTopOrRight :: OtLayoutBaselineTagT

-- | The center of the ideographic character face. Since: 4.0.0
OtLayoutBaselineTagTIdeoFaceCentral :: OtLayoutBaselineTagT

-- | Ideographic em-box bottom or left edge, if the direction is horizontal
--   or vertical, respectively.
OtLayoutBaselineTagTIdeoEmboxBottomOrLeft :: OtLayoutBaselineTagT

-- | Ideographic em-box top or right edge baseline,
OtLayoutBaselineTagTIdeoEmboxTopOrRight :: OtLayoutBaselineTagT

-- | The center of the ideographic em-box. Since: 4.0.0 if the direction is
--   horizontal or vertical, respectively.
OtLayoutBaselineTagTIdeoEmboxCentral :: OtLayoutBaselineTagT

-- | The baseline about which mathematical characters are centered. In
--   vertical writing mode when mathematical characters rotated 90 degrees
--   clockwise, are centered.
OtLayoutBaselineTagTMath :: OtLayoutBaselineTagT

-- | Catch-all for unknown values
AnotherOtLayoutBaselineTagT :: Int -> OtLayoutBaselineTagT

-- | The GDEF classes defined for glyphs.
data OtLayoutGlyphClassT

-- | Glyphs not matching the other classifications
OtLayoutGlyphClassTUnclassified :: OtLayoutGlyphClassT

-- | Spacing, single characters, capable of accepting marks
OtLayoutGlyphClassTBaseGlyph :: OtLayoutGlyphClassT

-- | Glyphs that represent ligation of multiple characters
OtLayoutGlyphClassTLigature :: OtLayoutGlyphClassT

-- | Non-spacing, combining glyphs that represent marks
OtLayoutGlyphClassTMark :: OtLayoutGlyphClassT

-- | Spacing glyphs that represent part of a single character
OtLayoutGlyphClassTComponent :: OtLayoutGlyphClassT

-- | Catch-all for unknown values
AnotherOtLayoutGlyphClassT :: Int -> OtLayoutGlyphClassT

-- | The 'MATH' table constants, refer to <a>OpenType documentation</a> For
--   more explanations.
--   
--   <i>Since: 1.3.3</i>
data OtMathConstantT

-- | scriptPercentScaleDown
OtMathConstantTScriptPercentScaleDown :: OtMathConstantT

-- | scriptScriptPercentScaleDown
OtMathConstantTScriptScriptPercentScaleDown :: OtMathConstantT

-- | delimitedSubFormulaMinHeight
OtMathConstantTDelimitedSubFormulaMinHeight :: OtMathConstantT

-- | displayOperatorMinHeight
OtMathConstantTDisplayOperatorMinHeight :: OtMathConstantT

-- | mathLeading
OtMathConstantTMathLeading :: OtMathConstantT

-- | axisHeight
OtMathConstantTAxisHeight :: OtMathConstantT

-- | accentBaseHeight
OtMathConstantTAccentBaseHeight :: OtMathConstantT

-- | flattenedAccentBaseHeight
OtMathConstantTFlattenedAccentBaseHeight :: OtMathConstantT

-- | subscriptShiftDown
OtMathConstantTSubscriptShiftDown :: OtMathConstantT

-- | subscriptTopMax
OtMathConstantTSubscriptTopMax :: OtMathConstantT

-- | subscriptBaselineDropMin
OtMathConstantTSubscriptBaselineDropMin :: OtMathConstantT

-- | superscriptShiftUp
OtMathConstantTSuperscriptShiftUp :: OtMathConstantT

-- | superscriptShiftUpCramped
OtMathConstantTSuperscriptShiftUpCramped :: OtMathConstantT

-- | superscriptBottomMin
OtMathConstantTSuperscriptBottomMin :: OtMathConstantT

-- | superscriptBaselineDropMax
OtMathConstantTSuperscriptBaselineDropMax :: OtMathConstantT

-- | subSuperscriptGapMin
OtMathConstantTSubSuperscriptGapMin :: OtMathConstantT

-- | superscriptBottomMaxWithSubscript
OtMathConstantTSuperscriptBottomMaxWithSubscript :: OtMathConstantT

-- | spaceAfterScript
OtMathConstantTSpaceAfterScript :: OtMathConstantT

-- | upperLimitGapMin
OtMathConstantTUpperLimitGapMin :: OtMathConstantT

-- | upperLimitBaselineRiseMin
OtMathConstantTUpperLimitBaselineRiseMin :: OtMathConstantT

-- | lowerLimitGapMin
OtMathConstantTLowerLimitGapMin :: OtMathConstantT

-- | lowerLimitBaselineDropMin
OtMathConstantTLowerLimitBaselineDropMin :: OtMathConstantT

-- | stackTopShiftUp
OtMathConstantTStackTopShiftUp :: OtMathConstantT

-- | stackTopDisplayStyleShiftUp
OtMathConstantTStackTopDisplayStyleShiftUp :: OtMathConstantT

-- | stackBottomShiftDown
OtMathConstantTStackBottomShiftDown :: OtMathConstantT

-- | stackBottomDisplayStyleShiftDown
OtMathConstantTStackBottomDisplayStyleShiftDown :: OtMathConstantT

-- | stackGapMin
OtMathConstantTStackGapMin :: OtMathConstantT

-- | stackDisplayStyleGapMin
OtMathConstantTStackDisplayStyleGapMin :: OtMathConstantT

-- | stretchStackTopShiftUp
OtMathConstantTStretchStackTopShiftUp :: OtMathConstantT

-- | stretchStackBottomShiftDown
OtMathConstantTStretchStackBottomShiftDown :: OtMathConstantT

-- | stretchStackGapAboveMin
OtMathConstantTStretchStackGapAboveMin :: OtMathConstantT

-- | stretchStackGapBelowMin
OtMathConstantTStretchStackGapBelowMin :: OtMathConstantT

-- | fractionNumeratorShiftUp
OtMathConstantTFractionNumeratorShiftUp :: OtMathConstantT

-- | fractionNumeratorDisplayStyleShiftUp
OtMathConstantTFractionNumeratorDisplayStyleShiftUp :: OtMathConstantT

-- | fractionDenominatorShiftDown
OtMathConstantTFractionDenominatorShiftDown :: OtMathConstantT

-- | fractionDenominatorDisplayStyleShiftDown
OtMathConstantTFractionDenominatorDisplayStyleShiftDown :: OtMathConstantT

-- | fractionNumeratorGapMin
OtMathConstantTFractionNumeratorGapMin :: OtMathConstantT

-- | fractionNumDisplayStyleGapMin
OtMathConstantTFractionNumDisplayStyleGapMin :: OtMathConstantT

-- | fractionRuleThickness
OtMathConstantTFractionRuleThickness :: OtMathConstantT

-- | fractionDenominatorGapMin
OtMathConstantTFractionDenominatorGapMin :: OtMathConstantT

-- | fractionDenomDisplayStyleGapMin
OtMathConstantTFractionDenomDisplayStyleGapMin :: OtMathConstantT

-- | skewedFractionHorizontalGap
OtMathConstantTSkewedFractionHorizontalGap :: OtMathConstantT

-- | skewedFractionVerticalGap
OtMathConstantTSkewedFractionVerticalGap :: OtMathConstantT

-- | overbarVerticalGap
OtMathConstantTOverbarVerticalGap :: OtMathConstantT

-- | overbarRuleThickness
OtMathConstantTOverbarRuleThickness :: OtMathConstantT

-- | overbarExtraAscender
OtMathConstantTOverbarExtraAscender :: OtMathConstantT

-- | underbarVerticalGap
OtMathConstantTUnderbarVerticalGap :: OtMathConstantT

-- | underbarRuleThickness
OtMathConstantTUnderbarRuleThickness :: OtMathConstantT

-- | underbarExtraDescender
OtMathConstantTUnderbarExtraDescender :: OtMathConstantT

-- | radicalVerticalGap
OtMathConstantTRadicalVerticalGap :: OtMathConstantT

-- | radicalDisplayStyleVerticalGap
OtMathConstantTRadicalDisplayStyleVerticalGap :: OtMathConstantT

-- | radicalRuleThickness
OtMathConstantTRadicalRuleThickness :: OtMathConstantT

-- | radicalExtraAscender
OtMathConstantTRadicalExtraAscender :: OtMathConstantT

-- | radicalKernBeforeDegree
OtMathConstantTRadicalKernBeforeDegree :: OtMathConstantT

-- | radicalKernAfterDegree
OtMathConstantTRadicalKernAfterDegree :: OtMathConstantT

-- | radicalDegreeBottomRaisePercent
OtMathConstantTRadicalDegreeBottomRaisePercent :: OtMathConstantT

-- | Catch-all for unknown values
AnotherOtMathConstantT :: Int -> OtMathConstantT

-- | The math kerning-table types defined for the four corners of a glyph.
--   
--   <i>Since: 1.3.3</i>
data OtMathKernT

-- | The top right corner of the glyph.
OtMathKernTTopRight :: OtMathKernT

-- | The top left corner of the glyph.
OtMathKernTTopLeft :: OtMathKernT

-- | The bottom right corner of the glyph.
OtMathKernTBottomRight :: OtMathKernT

-- | The bottom left corner of the glyph.
OtMathKernTBottomLeft :: OtMathKernT

-- | Catch-all for unknown values
AnotherOtMathKernT :: Int -> OtMathKernT

-- | Known metadata tags from
--   https://docs.microsoft.com/en-us/typography/opentype/spec/meta
--   
--   <i>Since: 2.6.0</i>
data OtMetaTagT

-- | Design languages. Text, using only Basic Latin (ASCII) characters.
--   Indicates languages and/or scripts for the user audiences that the
--   font was primarily designed for.
OtMetaTagTDesignLanguages :: OtMetaTagT

-- | Supported languages. Text, using only Basic Latin (ASCII) characters.
--   Indicates languages and/or scripts that the font is declared to be
--   capable of supporting.
OtMetaTagTSupportedLanguages :: OtMetaTagT

-- | Catch-all for unknown values
AnotherOtMetaTagT :: Int -> OtMetaTagT

-- | Metric tags corresponding to
--   &lt;<a>https://docs.microsoft.com/en-us/typography/opentype/spec/mvar#value-tags</a>
--   MVAR Value Tags&gt;
--   
--   <i>Since: 2.6.0</i>
data OtMetricsTagT

-- | horizontal ascender.
OtMetricsTagTHorizontalAscender :: OtMetricsTagT

-- | horizontal descender.
OtMetricsTagTHorizontalDescender :: OtMetricsTagT

-- | horizontal line gap.
OtMetricsTagTHorizontalLineGap :: OtMetricsTagT

-- | horizontal clipping ascent.
OtMetricsTagTHorizontalClippingAscent :: OtMetricsTagT

-- | horizontal clipping descent.
OtMetricsTagTHorizontalClippingDescent :: OtMetricsTagT

-- | vertical ascender.
OtMetricsTagTVerticalAscender :: OtMetricsTagT

-- | vertical descender.
OtMetricsTagTVerticalDescender :: OtMetricsTagT

-- | vertical line gap.
OtMetricsTagTVerticalLineGap :: OtMetricsTagT

-- | horizontal caret rise.
OtMetricsTagTHorizontalCaretRise :: OtMetricsTagT

-- | horizontal caret run.
OtMetricsTagTHorizontalCaretRun :: OtMetricsTagT

-- | horizontal caret offset.
OtMetricsTagTHorizontalCaretOffset :: OtMetricsTagT

-- | vertical caret rise.
OtMetricsTagTVerticalCaretRise :: OtMetricsTagT

-- | vertical caret run.
OtMetricsTagTVerticalCaretRun :: OtMetricsTagT

-- | vertical caret offset.
OtMetricsTagTVerticalCaretOffset :: OtMetricsTagT

-- | x height.
OtMetricsTagTXHeight :: OtMetricsTagT

-- | cap height.
OtMetricsTagTCapHeight :: OtMetricsTagT

-- | subscript em x size.
OtMetricsTagTSubscriptEmXSize :: OtMetricsTagT

-- | subscript em y size.
OtMetricsTagTSubscriptEmYSize :: OtMetricsTagT

-- | subscript em x offset.
OtMetricsTagTSubscriptEmXOffset :: OtMetricsTagT

-- | subscript em y offset.
OtMetricsTagTSubscriptEmYOffset :: OtMetricsTagT

-- | superscript em x size.
OtMetricsTagTSuperscriptEmXSize :: OtMetricsTagT

-- | superscript em y size.
OtMetricsTagTSuperscriptEmYSize :: OtMetricsTagT

-- | superscript em x offset.
OtMetricsTagTSuperscriptEmXOffset :: OtMetricsTagT

-- | superscript em y offset.
OtMetricsTagTSuperscriptEmYOffset :: OtMetricsTagT

-- | strikeout size.
OtMetricsTagTStrikeoutSize :: OtMetricsTagT

-- | strikeout offset.
OtMetricsTagTStrikeoutOffset :: OtMetricsTagT

-- | underline size.
OtMetricsTagTUnderlineSize :: OtMetricsTagT

-- | underline offset.
OtMetricsTagTUnderlineOffset :: OtMetricsTagT

-- | Catch-all for unknown values
AnotherOtMetricsTagT :: Int -> OtMetricsTagT

-- | An enum type representing the pre-defined name IDs.
--   
--   For more information on these fields, see the <a>OpenType spec</a>.
--   
--   <i>Since: 7.0.0</i>
data OtNameIdPredefinedT

-- | Copyright notice
OtNameIdPredefinedTCopyright :: OtNameIdPredefinedT

-- | Font Family name
OtNameIdPredefinedTFontFamily :: OtNameIdPredefinedT

-- | Font Subfamily name
OtNameIdPredefinedTFontSubfamily :: OtNameIdPredefinedT

-- | Unique font identifier
OtNameIdPredefinedTUniqueId :: OtNameIdPredefinedT

-- | Full font name that reflects all family and relevant subfamily
--   descriptors
OtNameIdPredefinedTFullName :: OtNameIdPredefinedT

-- | Version string
OtNameIdPredefinedTVersionString :: OtNameIdPredefinedT

-- | PostScript name for the font
OtNameIdPredefinedTPostscriptName :: OtNameIdPredefinedT

-- | Trademark
OtNameIdPredefinedTTrademark :: OtNameIdPredefinedT

-- | Manufacturer Name
OtNameIdPredefinedTManufacturer :: OtNameIdPredefinedT

-- | Designer
OtNameIdPredefinedTDesigner :: OtNameIdPredefinedT

-- | Description
OtNameIdPredefinedTDescription :: OtNameIdPredefinedT

-- | URL of font vendor
OtNameIdPredefinedTVendorUrl :: OtNameIdPredefinedT

-- | URL of typeface designer
OtNameIdPredefinedTDesignerUrl :: OtNameIdPredefinedT

-- | License Description
OtNameIdPredefinedTLicense :: OtNameIdPredefinedT

-- | URL where additional licensing information can be found
OtNameIdPredefinedTLicenseUrl :: OtNameIdPredefinedT

-- | Typographic Family name
OtNameIdPredefinedTTypographicFamily :: OtNameIdPredefinedT

-- | Typographic Subfamily name
OtNameIdPredefinedTTypographicSubfamily :: OtNameIdPredefinedT

-- | Compatible Full Name for MacOS
OtNameIdPredefinedTMacFullName :: OtNameIdPredefinedT

-- | Sample text
OtNameIdPredefinedTSampleText :: OtNameIdPredefinedT

-- | PostScript CID findfont name
OtNameIdPredefinedTCidFindfontName :: OtNameIdPredefinedT

-- | WWS Family Name
OtNameIdPredefinedTWwsFamily :: OtNameIdPredefinedT

-- | WWS Subfamily Name
OtNameIdPredefinedTWwsSubfamily :: OtNameIdPredefinedT

-- | Light Background Palette
OtNameIdPredefinedTLightBackground :: OtNameIdPredefinedT

-- | Dark Background Palette
OtNameIdPredefinedTDarkBackground :: OtNameIdPredefinedT

-- | Variations PostScript Name Prefix
OtNameIdPredefinedTVariationsPsPrefix :: OtNameIdPredefinedT

-- | Value to represent a nonexistent name ID.
OtNameIdPredefinedTInvalid :: OtNameIdPredefinedT

-- | Catch-all for unknown values
AnotherOtNameIdPredefinedT :: Int -> OtNameIdPredefinedT

-- | The values of this enumeration describe the compositing modes that can
--   be used when combining temporary redirected drawing with the backdrop.
--   
--   See the OpenType spec <a>COLR</a> section for details.
--   
--   <i>Since: 7.0.0</i>
data PaintCompositeModeT

-- | clear destination layer (bounded)
PaintCompositeModeTClear :: PaintCompositeModeT

-- | replace destination layer (bounded)
PaintCompositeModeTSrc :: PaintCompositeModeT

-- | ignore the source
PaintCompositeModeTDest :: PaintCompositeModeT

-- | draw source layer on top of destination layer (bounded)
PaintCompositeModeTSrcOver :: PaintCompositeModeT

-- | draw destination on top of source
PaintCompositeModeTDestOver :: PaintCompositeModeT

-- | draw source where there was destination content (unbounded)
PaintCompositeModeTSrcIn :: PaintCompositeModeT

-- | leave destination only where there was source content (unbounded)
PaintCompositeModeTDestIn :: PaintCompositeModeT

-- | draw source where there was no destination content (unbounded)
PaintCompositeModeTSrcOut :: PaintCompositeModeT

-- | leave destination only where there was no source content
PaintCompositeModeTDestOut :: PaintCompositeModeT

-- | draw source on top of destination content and only there
PaintCompositeModeTSrcAtop :: PaintCompositeModeT

-- | leave destination on top of source content and only there (unbounded)
PaintCompositeModeTDestAtop :: PaintCompositeModeT

-- | source and destination are shown where there is only one of them
PaintCompositeModeTXor :: PaintCompositeModeT

-- | source and destination layers are accumulated
PaintCompositeModeTPlus :: PaintCompositeModeT

-- | source and destination are complemented and multiplied. This causes
--   the result to be at least as light as the lighter inputs.
PaintCompositeModeTScreen :: PaintCompositeModeT

-- | multiplies or screens, depending on the lightness of the destination
--   color.
PaintCompositeModeTOverlay :: PaintCompositeModeT

-- | replaces the destination with the source if it is darker, otherwise
--   keeps the source.
PaintCompositeModeTDarken :: PaintCompositeModeT

-- | replaces the destination with the source if it is lighter, otherwise
--   keeps the source.
PaintCompositeModeTLighten :: PaintCompositeModeT

-- | brightens the destination color to reflect the source color.
PaintCompositeModeTColorDodge :: PaintCompositeModeT

-- | darkens the destination color to reflect the source color.
PaintCompositeModeTColorBurn :: PaintCompositeModeT

-- | Multiplies or screens, dependent on source color.
PaintCompositeModeTHardLight :: PaintCompositeModeT

-- | Darkens or lightens, dependent on source color.
PaintCompositeModeTSoftLight :: PaintCompositeModeT

-- | Takes the difference of the source and destination color.
PaintCompositeModeTDifference :: PaintCompositeModeT

-- | Produces an effect similar to difference, but with lower contrast.
PaintCompositeModeTExclusion :: PaintCompositeModeT

-- | source and destination layers are multiplied. This causes the result
--   to be at least as dark as the darker inputs.
PaintCompositeModeTMultiply :: PaintCompositeModeT

-- | Creates a color with the hue of the source and the saturation and
--   luminosity of the target.
PaintCompositeModeTHslHue :: PaintCompositeModeT

-- | Creates a color with the saturation of the source and the hue and
--   luminosity of the target. Painting with this mode onto a gray area
--   produces no change.
PaintCompositeModeTHslSaturation :: PaintCompositeModeT

-- | Creates a color with the hue and saturation of the source and the
--   luminosity of the target. This preserves the gray levels of the target
--   and is useful for coloring monochrome images or tinting color images.
PaintCompositeModeTHslColor :: PaintCompositeModeT

-- | Creates a color with the luminosity of the source and the hue and
--   saturation of the target. This produces an inverse effect to
--   <i><tt>hBPAINTCOMPOSITEMODEHSLCOLOR</tt></i>.
PaintCompositeModeTHslLuminosity :: PaintCompositeModeT

-- | Catch-all for unknown values
AnotherPaintCompositeModeT :: Int -> PaintCompositeModeT

-- | The values of this enumeration determine how color values outside the
--   minimum and maximum defined offset on a <a>ColorLineT</a> are
--   determined.
--   
--   See the OpenType spec <a>COLR</a> section for details.
--   
--   <i>Since: 7.0.0</i>
data PaintExtendT

-- | Outside the defined interval, the color of the closest color stop is
--   used.
PaintExtendTPad :: PaintExtendT

-- | The color line is repeated over repeated multiples of the defined
--   interval
PaintExtendTRepeat :: PaintExtendT

-- | The color line is repeated over repeated intervals, as for the repeat
--   mode. However, in each repeated interval, the ordering of color stops
--   is the reverse of the adjacent interval.
PaintExtendTReflect :: PaintExtendT

-- | Catch-all for unknown values
AnotherPaintExtendT :: Int -> PaintExtendT

-- | Data type for scripts. Each <a>ScriptT</a>'s value is an
--   <tt><i>hb_tag_t</i></tt> corresponding to the four-letter values
--   defined by <a>ISO 15924</a>.
--   
--   See also the Script (sc) property of the Unicode Character Database.
data ScriptT

-- | <pre>
--   Zyyy
--   </pre>
ScriptTCommon :: ScriptT

-- | <pre>
--   Zinh
--   </pre>
ScriptTInherited :: ScriptT

-- | <pre>
--   Zzzz
--   </pre>
ScriptTUnknown :: ScriptT

-- | <pre>
--   Arab
--   </pre>
ScriptTArabic :: ScriptT

-- | <pre>
--   Armn
--   </pre>
ScriptTArmenian :: ScriptT

-- | <pre>
--   Beng
--   </pre>
ScriptTBengali :: ScriptT

-- | <pre>
--   Cyrl
--   </pre>
ScriptTCyrillic :: ScriptT

-- | <pre>
--   Deva
--   </pre>
ScriptTDevanagari :: ScriptT

-- | <pre>
--   Geor
--   </pre>
ScriptTGeorgian :: ScriptT

-- | <pre>
--   Grek
--   </pre>
ScriptTGreek :: ScriptT

-- | <pre>
--   Gujr
--   </pre>
ScriptTGujarati :: ScriptT

-- | <pre>
--   Guru
--   </pre>
ScriptTGurmukhi :: ScriptT

-- | <pre>
--   Hang
--   </pre>
ScriptTHangul :: ScriptT

-- | <pre>
--   Hani
--   </pre>
ScriptTHan :: ScriptT

-- | <pre>
--   Hebr
--   </pre>
ScriptTHebrew :: ScriptT

-- | <pre>
--   Hira
--   </pre>
ScriptTHiragana :: ScriptT

-- | <pre>
--   Knda
--   </pre>
ScriptTKannada :: ScriptT

-- | <pre>
--   Kana
--   </pre>
ScriptTKatakana :: ScriptT

-- | <pre>
--   Laoo
--   </pre>
ScriptTLao :: ScriptT

-- | <pre>
--   Latn
--   </pre>
ScriptTLatin :: ScriptT

-- | <pre>
--   Mlym
--   </pre>
ScriptTMalayalam :: ScriptT

-- | <pre>
--   Orya
--   </pre>
ScriptTOriya :: ScriptT

-- | <pre>
--   Taml
--   </pre>
ScriptTTamil :: ScriptT

-- | <pre>
--   Telu
--   </pre>
ScriptTTelugu :: ScriptT

-- | <pre>
--   Thai
--   </pre>
ScriptTThai :: ScriptT

-- | <pre>
--   Tibt
--   </pre>
ScriptTTibetan :: ScriptT

-- | <pre>
--   Bopo
--   </pre>
ScriptTBopomofo :: ScriptT

-- | <pre>
--   Brai
--   </pre>
ScriptTBraille :: ScriptT

-- | <pre>
--   Cans
--   </pre>
ScriptTCanadianSyllabics :: ScriptT

-- | <pre>
--   Cher
--   </pre>
ScriptTCherokee :: ScriptT

-- | <pre>
--   Ethi
--   </pre>
ScriptTEthiopic :: ScriptT

-- | <pre>
--   Khmr
--   </pre>
ScriptTKhmer :: ScriptT

-- | <pre>
--   Mong
--   </pre>
ScriptTMongolian :: ScriptT

-- | <pre>
--   Mymr
--   </pre>
ScriptTMyanmar :: ScriptT

-- | <pre>
--   Ogam
--   </pre>
ScriptTOgham :: ScriptT

-- | <pre>
--   Runr
--   </pre>
ScriptTRunic :: ScriptT

-- | <pre>
--   Sinh
--   </pre>
ScriptTSinhala :: ScriptT

-- | <pre>
--   Syrc
--   </pre>
ScriptTSyriac :: ScriptT

-- | <pre>
--   Thaa
--   </pre>
ScriptTThaana :: ScriptT

-- | <pre>
--   Yiii
--   </pre>
ScriptTYi :: ScriptT

-- | <pre>
--   Dsrt
--   </pre>
ScriptTDeseret :: ScriptT

-- | <pre>
--   Goth
--   </pre>
ScriptTGothic :: ScriptT

-- | <pre>
--   Ital
--   </pre>
ScriptTOldItalic :: ScriptT

-- | <pre>
--   Buhd
--   </pre>
ScriptTBuhid :: ScriptT

-- | <pre>
--   Hano
--   </pre>
ScriptTHanunoo :: ScriptT

-- | <pre>
--   Tglg
--   </pre>
ScriptTTagalog :: ScriptT

-- | <pre>
--   Tagb
--   </pre>
ScriptTTagbanwa :: ScriptT

-- | <pre>
--   Cprt
--   </pre>
ScriptTCypriot :: ScriptT

-- | <pre>
--   Limb
--   </pre>
ScriptTLimbu :: ScriptT

-- | <pre>
--   Linb
--   </pre>
ScriptTLinearB :: ScriptT

-- | <pre>
--   Osma
--   </pre>
ScriptTOsmanya :: ScriptT

-- | <pre>
--   Shaw
--   </pre>
ScriptTShavian :: ScriptT

-- | <pre>
--   Tale
--   </pre>
ScriptTTaiLe :: ScriptT

-- | <pre>
--   Ugar
--   </pre>
ScriptTUgaritic :: ScriptT

-- | <pre>
--   Bugi
--   </pre>
ScriptTBuginese :: ScriptT

-- | <pre>
--   Copt
--   </pre>
ScriptTCoptic :: ScriptT

-- | <pre>
--   Glag
--   </pre>
ScriptTGlagolitic :: ScriptT

-- | <pre>
--   Khar
--   </pre>
ScriptTKharoshthi :: ScriptT

-- | <pre>
--   Talu
--   </pre>
ScriptTNewTaiLue :: ScriptT

-- | <pre>
--   Xpeo
--   </pre>
ScriptTOldPersian :: ScriptT

-- | <pre>
--   Sylo
--   </pre>
ScriptTSylotiNagri :: ScriptT

-- | <pre>
--   Tfng
--   </pre>
ScriptTTifinagh :: ScriptT

-- | <pre>
--   Bali
--   </pre>
ScriptTBalinese :: ScriptT

-- | <pre>
--   Xsux
--   </pre>
ScriptTCuneiform :: ScriptT

-- | <pre>
--   Nkoo
--   </pre>
ScriptTNko :: ScriptT

-- | <pre>
--   Phag
--   </pre>
ScriptTPhagsPa :: ScriptT

-- | <pre>
--   Phnx
--   </pre>
ScriptTPhoenician :: ScriptT

-- | <pre>
--   Cari
--   </pre>
ScriptTCarian :: ScriptT

-- | <pre>
--   Cham
--   </pre>
ScriptTCham :: ScriptT

-- | <pre>
--   Kali
--   </pre>
ScriptTKayahLi :: ScriptT

-- | <pre>
--   Lepc
--   </pre>
ScriptTLepcha :: ScriptT

-- | <pre>
--   Lyci
--   </pre>
ScriptTLycian :: ScriptT

-- | <pre>
--   Lydi
--   </pre>
ScriptTLydian :: ScriptT

-- | <pre>
--   Olck
--   </pre>
ScriptTOlChiki :: ScriptT

-- | <pre>
--   Rjng
--   </pre>
ScriptTRejang :: ScriptT

-- | <pre>
--   Saur
--   </pre>
ScriptTSaurashtra :: ScriptT

-- | <pre>
--   Sund
--   </pre>
ScriptTSundanese :: ScriptT

-- | <pre>
--   Vaii
--   </pre>
ScriptTVai :: ScriptT

-- | <pre>
--   Avst
--   </pre>
ScriptTAvestan :: ScriptT

-- | <pre>
--   Bamu
--   </pre>
ScriptTBamum :: ScriptT

-- | <pre>
--   Egyp
--   </pre>
ScriptTEgyptianHieroglyphs :: ScriptT

-- | <pre>
--   Armi
--   </pre>
ScriptTImperialAramaic :: ScriptT

-- | <pre>
--   Phli
--   </pre>
ScriptTInscriptionalPahlavi :: ScriptT

-- | <pre>
--   Prti
--   </pre>
ScriptTInscriptionalParthian :: ScriptT

-- | <pre>
--   Java
--   </pre>
ScriptTJavanese :: ScriptT

-- | <pre>
--   Kthi
--   </pre>
ScriptTKaithi :: ScriptT

-- | <pre>
--   Lisu
--   </pre>
ScriptTLisu :: ScriptT

-- | <pre>
--   Mtei
--   </pre>
ScriptTMeeteiMayek :: ScriptT

-- | <pre>
--   Sarb
--   </pre>
ScriptTOldSouthArabian :: ScriptT

-- | <pre>
--   Orkh
--   </pre>
ScriptTOldTurkic :: ScriptT

-- | <pre>
--   Samr
--   </pre>
ScriptTSamaritan :: ScriptT

-- | <pre>
--   Lana
--   </pre>
ScriptTTaiTham :: ScriptT

-- | <pre>
--   Tavt
--   </pre>
ScriptTTaiViet :: ScriptT

-- | <pre>
--   Batk
--   </pre>
ScriptTBatak :: ScriptT

-- | <pre>
--   Brah
--   </pre>
ScriptTBrahmi :: ScriptT

-- | <pre>
--   Mand
--   </pre>
ScriptTMandaic :: ScriptT

-- | <pre>
--   Cakm
--   </pre>
ScriptTChakma :: ScriptT

-- | <pre>
--   Merc
--   </pre>
ScriptTMeroiticCursive :: ScriptT

-- | <pre>
--   Mero
--   </pre>
ScriptTMeroiticHieroglyphs :: ScriptT

-- | <pre>
--   Plrd
--   </pre>
ScriptTMiao :: ScriptT

-- | <pre>
--   Shrd
--   </pre>
ScriptTSharada :: ScriptT

-- | <pre>
--   Sora
--   </pre>
ScriptTSoraSompeng :: ScriptT

-- | <pre>
--   Takr
--   </pre>
ScriptTTakri :: ScriptT

-- | <tt>Bass</tt>, Since: 0.9.30
ScriptTBassaVah :: ScriptT

-- | <tt>Aghb</tt>, Since: 0.9.30
ScriptTCaucasianAlbanian :: ScriptT

-- | <tt>Dupl</tt>, Since: 0.9.30
ScriptTDuployan :: ScriptT

-- | <tt>Elba</tt>, Since: 0.9.30
ScriptTElbasan :: ScriptT

-- | <tt>Gran</tt>, Since: 0.9.30
ScriptTGrantha :: ScriptT

-- | <tt>Khoj</tt>, Since: 0.9.30
ScriptTKhojki :: ScriptT

-- | <tt>Sind</tt>, Since: 0.9.30
ScriptTKhudawadi :: ScriptT

-- | <tt>Lina</tt>, Since: 0.9.30
ScriptTLinearA :: ScriptT

-- | <tt>Mahj</tt>, Since: 0.9.30
ScriptTMahajani :: ScriptT

-- | <tt>Mani</tt>, Since: 0.9.30
ScriptTManichaean :: ScriptT

-- | <tt>Mend</tt>, Since: 0.9.30
ScriptTMendeKikakui :: ScriptT

-- | <tt>Modi</tt>, Since: 0.9.30
ScriptTModi :: ScriptT

-- | <tt>Mroo</tt>, Since: 0.9.30
ScriptTMro :: ScriptT

-- | <tt>Nbat</tt>, Since: 0.9.30
ScriptTNabataean :: ScriptT

-- | <tt>Narb</tt>, Since: 0.9.30
ScriptTOldNorthArabian :: ScriptT

-- | <tt>Perm</tt>, Since: 0.9.30
ScriptTOldPermic :: ScriptT

-- | <tt>Hmng</tt>, Since: 0.9.30
ScriptTPahawhHmong :: ScriptT

-- | <tt>Palm</tt>, Since: 0.9.30
ScriptTPalmyrene :: ScriptT

-- | <tt>Pauc</tt>, Since: 0.9.30
ScriptTPauCinHau :: ScriptT

-- | <tt>Phlp</tt>, Since: 0.9.30
ScriptTPsalterPahlavi :: ScriptT

-- | <tt>Sidd</tt>, Since: 0.9.30
ScriptTSiddham :: ScriptT

-- | <tt>Tirh</tt>, Since: 0.9.30
ScriptTTirhuta :: ScriptT

-- | <tt>Wara</tt>, Since: 0.9.30
ScriptTWarangCiti :: ScriptT

-- | <tt>Ahom</tt>, Since: 0.9.30
ScriptTAhom :: ScriptT

-- | <tt>Hluw</tt>, Since: 0.9.30
ScriptTAnatolianHieroglyphs :: ScriptT

-- | <tt>Hatr</tt>, Since: 0.9.30
ScriptTHatran :: ScriptT

-- | <tt>Mult</tt>, Since: 0.9.30
ScriptTMultani :: ScriptT

-- | <tt>Hung</tt>, Since: 0.9.30
ScriptTOldHungarian :: ScriptT

-- | <tt>Sgnw</tt>, Since: 0.9.30
ScriptTSignwriting :: ScriptT

-- | <tt>Adlm</tt>, Since: 1.3.0
ScriptTAdlam :: ScriptT

-- | <tt>Bhks</tt>, Since: 1.3.0
ScriptTBhaiksuki :: ScriptT

-- | <tt>Marc</tt>, Since: 1.3.0
ScriptTMarchen :: ScriptT

-- | <tt>Osge</tt>, Since: 1.3.0
ScriptTOsage :: ScriptT

-- | <tt>Tang</tt>, Since: 1.3.0
ScriptTTangut :: ScriptT

-- | <tt>Newa</tt>, Since: 1.3.0
ScriptTNewa :: ScriptT

-- | <tt>Gonm</tt>, Since: 1.6.0
ScriptTMasaramGondi :: ScriptT

-- | <tt>Nshu</tt>, Since: 1.6.0
ScriptTNushu :: ScriptT

-- | <tt>Soyo</tt>, Since: 1.6.0
ScriptTSoyombo :: ScriptT

-- | <tt>Zanb</tt>, Since: 1.6.0
ScriptTZanabazarSquare :: ScriptT

-- | <tt>Dogr</tt>, Since: 1.8.0
ScriptTDogra :: ScriptT

-- | <tt>Gong</tt>, Since: 1.8.0
ScriptTGunjalaGondi :: ScriptT

-- | <tt>Rohg</tt>, Since: 1.8.0
ScriptTHanifiRohingya :: ScriptT

-- | <tt>Maka</tt>, Since: 1.8.0
ScriptTMakasar :: ScriptT

-- | <tt>Medf</tt>, Since: 1.8.0
ScriptTMedefaidrin :: ScriptT

-- | <tt>Sogo</tt>, Since: 1.8.0
ScriptTOldSogdian :: ScriptT

-- | <tt>Sogd</tt>, Since: 1.8.0
ScriptTSogdian :: ScriptT

-- | <tt>Elym</tt>, Since: 2.4.0
ScriptTElymaic :: ScriptT

-- | <tt>Nand</tt>, Since: 2.4.0
ScriptTNandinagari :: ScriptT

-- | <tt>Hmnp</tt>, Since: 2.4.0
ScriptTNyiakengPuachueHmong :: ScriptT

-- | <tt>Wcho</tt>, Since: 2.4.0
ScriptTWancho :: ScriptT

-- | <tt>Chrs</tt>, Since: 2.6.7
ScriptTChorasmian :: ScriptT

-- | <tt>Diak</tt>, Since: 2.6.7
ScriptTDivesAkuru :: ScriptT

-- | <tt>Kits</tt>, Since: 2.6.7
ScriptTKhitanSmallScript :: ScriptT

-- | <tt>Yezi</tt>, Since: 2.6.7
ScriptTYezidi :: ScriptT

-- | <tt>Cpmn</tt>, Since: 3.0.0
ScriptTCyproMinoan :: ScriptT

-- | <tt>Ougr</tt>, Since: 3.0.0
ScriptTOldUyghur :: ScriptT

-- | <tt>Tnsa</tt>, Since: 3.0.0
ScriptTTangsa :: ScriptT

-- | <tt>Toto</tt>, Since: 3.0.0
ScriptTToto :: ScriptT

-- | <tt>Vith</tt>, Since: 3.0.0
ScriptTVithkuqi :: ScriptT

-- | <tt>Zmth</tt>, Since: 3.4.0
ScriptTMath :: ScriptT

-- | <tt>Kawi</tt>, Since: 5.2.0
ScriptTKawi :: ScriptT

-- | <tt>Nagm</tt>, Since: 5.2.0
ScriptTNagMundari :: ScriptT

-- | <tt>Gara</tt>, Since: 10.0.0
ScriptTGaray :: ScriptT

-- | <tt>Gukh</tt>, Since: 10.0.0
ScriptTGurungKhema :: ScriptT

-- | <tt>Krai</tt>, Since: 10.0.0
ScriptTKiratRai :: ScriptT

-- | <tt>Onao</tt>, Since: 10.0.0
ScriptTOlOnal :: ScriptT

-- | <tt>Sunu</tt>, Since: 10.0.0
ScriptTSunuwar :: ScriptT

-- | <tt>Todr</tt>, Since: 10.0.0
ScriptTTodhri :: ScriptT

-- | <tt>Tutg</tt>, Since: 10.0.0
ScriptTTuluTigalari :: ScriptT

-- | <tt>Berf</tt>, Since: 11.5.0
ScriptTBeriaErfe :: ScriptT

-- | <tt>Sidt</tt>, Since: 11.5.0
ScriptTSidetic :: ScriptT

-- | <tt>Tayo</tt>, Since: 11.5.0
ScriptTTaiYo :: ScriptT

-- | <tt>Tols</tt>, Since: 11.5.0
ScriptTTolongSiki :: ScriptT

-- | No script set
ScriptTInvalid :: ScriptT

-- | Catch-all for unknown values
AnotherScriptT :: Int -> ScriptT

-- | Defined by <a>OpenType Design-Variation Axis Tag Registry</a>.
--   
--   <i>Since: 3.0.0</i>
data StyleTagT

-- | Used to vary between non-italic and italic. A value of 0 can be
--   interpreted as "Roman" (non-italic); a value of 1 can be interpreted
--   as (fully) italic.
StyleTagTItalic :: StyleTagT

-- | Used to vary design to suit different text sizes. Non-zero. Values can
--   be interpreted as text size, in points.
StyleTagTOpticalSize :: StyleTagT

-- | Used to vary between upright and slanted text. Values must be greater
--   than -90 and less than +90. Values can be interpreted as the angle, in
--   counter-clockwise degrees, of oblique slant from whatever the designer
--   considers to be upright for that font design. Typical right-leaning
--   Italic fonts have a negative slant angle (typically around -12)
StyleTagTSlantAngle :: StyleTagT

-- | same as <i><tt>hBSTYLETAGSLANTANGLE</tt></i> expression as ratio.
--   Typical right-leaning Italic fonts have a positive slant ratio
--   (typically around 0.2)
StyleTagTSlantRatio :: StyleTagT

-- | Used to vary width of text from narrower to wider. Non-zero. Values
--   can be interpreted as a percentage of whatever the font designer
--   considers “normal width” for that font design.
StyleTagTWidth :: StyleTagT

-- | Used to vary stroke thicknesses or other design details to give
--   variation from lighter to blacker. Values can be interpreted in direct
--   comparison to values for usWeightClass in the OS/2 table, or the CSS
--   font-weight property.
StyleTagTWeight :: StyleTagT

-- | Catch-all for unknown values
AnotherStyleTagT :: Int -> StyleTagT

-- | Data type for the Canonical_Combining_Class (ccc) property from the
--   Unicode Character Database.
--   
--   &lt;note&gt;Note: newer versions of Unicode may add new values. Client
--   programs should be ready to handle any value in the 0..254 range being
--   returned from <a>unicodeCombiningClass</a>.&lt;/note&gt;
data UnicodeCombiningClassT

-- | Spacing and enclosing marks; also many vowel and consonant signs, even
--   if nonspacing
UnicodeCombiningClassTNotReordered :: UnicodeCombiningClassT

-- | Marks which overlay a base letter or symbol
UnicodeCombiningClassTOverlay :: UnicodeCombiningClassT

-- | Diacritic nukta marks in Brahmi-derived scripts
UnicodeCombiningClassTNukta :: UnicodeCombiningClassT

-- | Hiragana/Katakana voicing marks
UnicodeCombiningClassTKanaVoicing :: UnicodeCombiningClassT

-- | Viramas
UnicodeCombiningClassTVirama :: UnicodeCombiningClassT

-- | <ul>
--   <li><i>Hebrew</i></li>
--   </ul>
UnicodeCombiningClassTCcc10 :: UnicodeCombiningClassT

-- | <ul>
--   <li><i>Hebrew</i></li>
--   </ul>
UnicodeCombiningClassTCcc11 :: UnicodeCombiningClassT

-- | <ul>
--   <li><i>Hebrew</i></li>
--   </ul>
UnicodeCombiningClassTCcc12 :: UnicodeCombiningClassT

-- | <ul>
--   <li><i>Hebrew</i></li>
--   </ul>
UnicodeCombiningClassTCcc13 :: UnicodeCombiningClassT

-- | <ul>
--   <li><i>Hebrew</i></li>
--   </ul>
UnicodeCombiningClassTCcc14 :: UnicodeCombiningClassT

-- | <ul>
--   <li><i>Hebrew</i></li>
--   </ul>
UnicodeCombiningClassTCcc15 :: UnicodeCombiningClassT

-- | <ul>
--   <li><i>Hebrew</i></li>
--   </ul>
UnicodeCombiningClassTCcc16 :: UnicodeCombiningClassT

-- | <ul>
--   <li><i>Hebrew</i></li>
--   </ul>
UnicodeCombiningClassTCcc17 :: UnicodeCombiningClassT

-- | <ul>
--   <li><i>Hebrew</i></li>
--   </ul>
UnicodeCombiningClassTCcc18 :: UnicodeCombiningClassT

-- | <ul>
--   <li><i>Hebrew</i></li>
--   </ul>
UnicodeCombiningClassTCcc19 :: UnicodeCombiningClassT

-- | <ul>
--   <li><i>Hebrew</i></li>
--   </ul>
UnicodeCombiningClassTCcc20 :: UnicodeCombiningClassT

-- | <ul>
--   <li><i>Hebrew</i></li>
--   </ul>
UnicodeCombiningClassTCcc21 :: UnicodeCombiningClassT

-- | <ul>
--   <li><i>Hebrew</i></li>
--   </ul>
UnicodeCombiningClassTCcc22 :: UnicodeCombiningClassT

-- | <ul>
--   <li><i>Hebrew</i></li>
--   </ul>
UnicodeCombiningClassTCcc23 :: UnicodeCombiningClassT

-- | <ul>
--   <li><i>Hebrew</i></li>
--   </ul>
UnicodeCombiningClassTCcc24 :: UnicodeCombiningClassT

-- | <ul>
--   <li><i>Hebrew</i></li>
--   </ul>
UnicodeCombiningClassTCcc25 :: UnicodeCombiningClassT

-- | <ul>
--   <li><i>Hebrew</i></li>
--   </ul>
UnicodeCombiningClassTCcc26 :: UnicodeCombiningClassT

-- | <ul>
--   <li><i>Arabic</i></li>
--   </ul>
UnicodeCombiningClassTCcc27 :: UnicodeCombiningClassT

-- | <ul>
--   <li><i>Arabic</i></li>
--   </ul>
UnicodeCombiningClassTCcc28 :: UnicodeCombiningClassT

-- | <ul>
--   <li><i>Arabic</i></li>
--   </ul>
UnicodeCombiningClassTCcc29 :: UnicodeCombiningClassT

-- | <ul>
--   <li><i>Arabic</i></li>
--   </ul>
UnicodeCombiningClassTCcc30 :: UnicodeCombiningClassT

-- | <ul>
--   <li><i>Arabic</i></li>
--   </ul>
UnicodeCombiningClassTCcc31 :: UnicodeCombiningClassT

-- | <ul>
--   <li><i>Arabic</i></li>
--   </ul>
UnicodeCombiningClassTCcc32 :: UnicodeCombiningClassT

-- | <ul>
--   <li><i>Arabic</i></li>
--   </ul>
UnicodeCombiningClassTCcc33 :: UnicodeCombiningClassT

-- | <ul>
--   <li><i>Arabic</i></li>
--   </ul>
UnicodeCombiningClassTCcc34 :: UnicodeCombiningClassT

-- | <ul>
--   <li><i>Arabic</i></li>
--   </ul>
UnicodeCombiningClassTCcc35 :: UnicodeCombiningClassT

-- | <ul>
--   <li><i>Syriac</i></li>
--   </ul>
UnicodeCombiningClassTCcc36 :: UnicodeCombiningClassT

-- | <ul>
--   <li><i>Telugu</i></li>
--   </ul>
UnicodeCombiningClassTCcc84 :: UnicodeCombiningClassT

-- | <ul>
--   <li><i>Telugu</i></li>
--   </ul>
UnicodeCombiningClassTCcc91 :: UnicodeCombiningClassT

-- | <ul>
--   <li><i>Thai</i></li>
--   </ul>
UnicodeCombiningClassTCcc103 :: UnicodeCombiningClassT

-- | <ul>
--   <li><i>Thai</i></li>
--   </ul>
UnicodeCombiningClassTCcc107 :: UnicodeCombiningClassT

-- | <ul>
--   <li><i>Lao</i></li>
--   </ul>
UnicodeCombiningClassTCcc118 :: UnicodeCombiningClassT

-- | <ul>
--   <li><i>Lao</i></li>
--   </ul>
UnicodeCombiningClassTCcc122 :: UnicodeCombiningClassT

-- | <ul>
--   <li><i>Tibetan</i></li>
--   </ul>
UnicodeCombiningClassTCcc129 :: UnicodeCombiningClassT

-- | <ul>
--   <li><i>Tibetan</i></li>
--   </ul>
UnicodeCombiningClassTCcc130 :: UnicodeCombiningClassT

-- | <ul>
--   <li><i>Tibetan</i> Since: 7.2.0</li>
--   </ul>
UnicodeCombiningClassTCcc132 :: UnicodeCombiningClassT

-- | Marks attached at the bottom left
UnicodeCombiningClassTAttachedBelowLeft :: UnicodeCombiningClassT

-- | Marks attached directly below
UnicodeCombiningClassTAttachedBelow :: UnicodeCombiningClassT

-- | Marks attached directly above
UnicodeCombiningClassTAttachedAbove :: UnicodeCombiningClassT

-- | Marks attached at the top right
UnicodeCombiningClassTAttachedAboveRight :: UnicodeCombiningClassT

-- | Distinct marks at the bottom left
UnicodeCombiningClassTBelowLeft :: UnicodeCombiningClassT

-- | Distinct marks directly below
UnicodeCombiningClassTBelow :: UnicodeCombiningClassT

-- | Distinct marks at the bottom right
UnicodeCombiningClassTBelowRight :: UnicodeCombiningClassT

-- | Distinct marks to the left
UnicodeCombiningClassTLeft :: UnicodeCombiningClassT

-- | Distinct marks to the right
UnicodeCombiningClassTRight :: UnicodeCombiningClassT

-- | Distinct marks at the top left
UnicodeCombiningClassTAboveLeft :: UnicodeCombiningClassT

-- | Distinct marks directly above
UnicodeCombiningClassTAbove :: UnicodeCombiningClassT

-- | Distinct marks at the top right
UnicodeCombiningClassTAboveRight :: UnicodeCombiningClassT

-- | Distinct marks subtending two bases
UnicodeCombiningClassTDoubleBelow :: UnicodeCombiningClassT

-- | Distinct marks extending above two bases
UnicodeCombiningClassTDoubleAbove :: UnicodeCombiningClassT

-- | Greek iota subscript only
UnicodeCombiningClassTIotaSubscript :: UnicodeCombiningClassT

-- | Invalid combining class
UnicodeCombiningClassTInvalid :: UnicodeCombiningClassT

-- | Catch-all for unknown values
AnotherUnicodeCombiningClassT :: Int -> UnicodeCombiningClassT

-- | Data type for the "General_Category" (gc) property from the Unicode
--   Character Database.
data UnicodeGeneralCategoryT

-- | <ul>
--   <li><i>Cc</i></li>
--   </ul>
UnicodeGeneralCategoryTControl :: UnicodeGeneralCategoryT

-- | <ul>
--   <li><i>Cf</i></li>
--   </ul>
UnicodeGeneralCategoryTFormat :: UnicodeGeneralCategoryT

-- | <ul>
--   <li><i>Cn</i></li>
--   </ul>
UnicodeGeneralCategoryTUnassigned :: UnicodeGeneralCategoryT

-- | <ul>
--   <li><i>Co</i></li>
--   </ul>
UnicodeGeneralCategoryTPrivateUse :: UnicodeGeneralCategoryT

-- | <ul>
--   <li><i>Cs</i></li>
--   </ul>
UnicodeGeneralCategoryTSurrogate :: UnicodeGeneralCategoryT

-- | <ul>
--   <li><i>Ll</i></li>
--   </ul>
UnicodeGeneralCategoryTLowercaseLetter :: UnicodeGeneralCategoryT

-- | <ul>
--   <li><i>Lm</i></li>
--   </ul>
UnicodeGeneralCategoryTModifierLetter :: UnicodeGeneralCategoryT

-- | <ul>
--   <li><i>Lo</i></li>
--   </ul>
UnicodeGeneralCategoryTOtherLetter :: UnicodeGeneralCategoryT

-- | <ul>
--   <li><i>Lt</i></li>
--   </ul>
UnicodeGeneralCategoryTTitlecaseLetter :: UnicodeGeneralCategoryT

-- | <ul>
--   <li><i>Lu</i></li>
--   </ul>
UnicodeGeneralCategoryTUppercaseLetter :: UnicodeGeneralCategoryT

-- | <ul>
--   <li><i>Mc</i></li>
--   </ul>
UnicodeGeneralCategoryTSpacingMark :: UnicodeGeneralCategoryT

-- | <ul>
--   <li><i>Me</i></li>
--   </ul>
UnicodeGeneralCategoryTEnclosingMark :: UnicodeGeneralCategoryT

-- | <ul>
--   <li><i>Mn</i></li>
--   </ul>
UnicodeGeneralCategoryTNonSpacingMark :: UnicodeGeneralCategoryT

-- | <ul>
--   <li><i>Nd</i></li>
--   </ul>
UnicodeGeneralCategoryTDecimalNumber :: UnicodeGeneralCategoryT

-- | <ul>
--   <li><i>Nl</i></li>
--   </ul>
UnicodeGeneralCategoryTLetterNumber :: UnicodeGeneralCategoryT

-- | <ul>
--   <li><i>No</i></li>
--   </ul>
UnicodeGeneralCategoryTOtherNumber :: UnicodeGeneralCategoryT

-- | <ul>
--   <li><i>Pc</i></li>
--   </ul>
UnicodeGeneralCategoryTConnectPunctuation :: UnicodeGeneralCategoryT

-- | <ul>
--   <li><i>Pd</i></li>
--   </ul>
UnicodeGeneralCategoryTDashPunctuation :: UnicodeGeneralCategoryT

-- | <ul>
--   <li><i>Pe</i></li>
--   </ul>
UnicodeGeneralCategoryTClosePunctuation :: UnicodeGeneralCategoryT

-- | <ul>
--   <li><i>Pf</i></li>
--   </ul>
UnicodeGeneralCategoryTFinalPunctuation :: UnicodeGeneralCategoryT

-- | <ul>
--   <li><i>Pi</i></li>
--   </ul>
UnicodeGeneralCategoryTInitialPunctuation :: UnicodeGeneralCategoryT

-- | <ul>
--   <li><i>Po</i></li>
--   </ul>
UnicodeGeneralCategoryTOtherPunctuation :: UnicodeGeneralCategoryT

-- | <ul>
--   <li><i>Ps</i></li>
--   </ul>
UnicodeGeneralCategoryTOpenPunctuation :: UnicodeGeneralCategoryT

-- | <ul>
--   <li><i>Sc</i></li>
--   </ul>
UnicodeGeneralCategoryTCurrencySymbol :: UnicodeGeneralCategoryT

-- | <ul>
--   <li><i>Sk</i></li>
--   </ul>
UnicodeGeneralCategoryTModifierSymbol :: UnicodeGeneralCategoryT

-- | <ul>
--   <li><i>Sm</i></li>
--   </ul>
UnicodeGeneralCategoryTMathSymbol :: UnicodeGeneralCategoryT

-- | <ul>
--   <li><i>So</i></li>
--   </ul>
UnicodeGeneralCategoryTOtherSymbol :: UnicodeGeneralCategoryT

-- | <ul>
--   <li><i>Zl</i></li>
--   </ul>
UnicodeGeneralCategoryTLineSeparator :: UnicodeGeneralCategoryT

-- | <ul>
--   <li><i>Zp</i></li>
--   </ul>
UnicodeGeneralCategoryTParagraphSeparator :: UnicodeGeneralCategoryT

-- | <ul>
--   <li><i>Zs</i></li>
--   </ul>
UnicodeGeneralCategoryTSpaceSeparator :: UnicodeGeneralCategoryT

-- | Catch-all for unknown values
AnotherUnicodeGeneralCategoryT :: Int -> UnicodeGeneralCategoryT
instance Data.GI.Base.BasicTypes.BoxedEnum GI.HarfBuzz.Enums.AatLayoutFeatureSelectorT
instance Data.GI.Base.BasicTypes.BoxedEnum GI.HarfBuzz.Enums.AatLayoutFeatureTypeT
instance Data.GI.Base.BasicTypes.BoxedEnum GI.HarfBuzz.Enums.BufferClusterLevelT
instance Data.GI.Base.BasicTypes.BoxedEnum GI.HarfBuzz.Enums.BufferContentTypeT
instance Data.GI.Base.BasicTypes.BoxedEnum GI.HarfBuzz.Enums.BufferSerializeFormatT
instance Data.GI.Base.BasicTypes.BoxedEnum GI.HarfBuzz.Enums.DirectionT
instance Data.GI.Base.BasicTypes.BoxedEnum GI.HarfBuzz.Enums.MemoryModeT
instance Data.GI.Base.BasicTypes.BoxedEnum GI.HarfBuzz.Enums.OtLayoutBaselineTagT
instance Data.GI.Base.BasicTypes.BoxedEnum GI.HarfBuzz.Enums.OtLayoutGlyphClassT
instance Data.GI.Base.BasicTypes.BoxedEnum GI.HarfBuzz.Enums.OtMathConstantT
instance Data.GI.Base.BasicTypes.BoxedEnum GI.HarfBuzz.Enums.OtMathKernT
instance Data.GI.Base.BasicTypes.BoxedEnum GI.HarfBuzz.Enums.OtMetaTagT
instance Data.GI.Base.BasicTypes.BoxedEnum GI.HarfBuzz.Enums.OtMetricsTagT
instance Data.GI.Base.BasicTypes.BoxedEnum GI.HarfBuzz.Enums.OtNameIdPredefinedT
instance Data.GI.Base.BasicTypes.BoxedEnum GI.HarfBuzz.Enums.PaintCompositeModeT
instance Data.GI.Base.BasicTypes.BoxedEnum GI.HarfBuzz.Enums.PaintExtendT
instance Data.GI.Base.BasicTypes.BoxedEnum GI.HarfBuzz.Enums.ScriptT
instance Data.GI.Base.BasicTypes.BoxedEnum GI.HarfBuzz.Enums.StyleTagT
instance Data.GI.Base.BasicTypes.BoxedEnum GI.HarfBuzz.Enums.UnicodeCombiningClassT
instance Data.GI.Base.BasicTypes.BoxedEnum GI.HarfBuzz.Enums.UnicodeGeneralCategoryT
instance GHC.Internal.Enum.Enum GI.HarfBuzz.Enums.AatLayoutFeatureSelectorT
instance GHC.Internal.Enum.Enum GI.HarfBuzz.Enums.AatLayoutFeatureTypeT
instance GHC.Internal.Enum.Enum GI.HarfBuzz.Enums.BufferClusterLevelT
instance GHC.Internal.Enum.Enum GI.HarfBuzz.Enums.BufferContentTypeT
instance GHC.Internal.Enum.Enum GI.HarfBuzz.Enums.BufferSerializeFormatT
instance GHC.Internal.Enum.Enum GI.HarfBuzz.Enums.DirectionT
instance GHC.Internal.Enum.Enum GI.HarfBuzz.Enums.MemoryModeT
instance GHC.Internal.Enum.Enum GI.HarfBuzz.Enums.OtLayoutBaselineTagT
instance GHC.Internal.Enum.Enum GI.HarfBuzz.Enums.OtLayoutGlyphClassT
instance GHC.Internal.Enum.Enum GI.HarfBuzz.Enums.OtMathConstantT
instance GHC.Internal.Enum.Enum GI.HarfBuzz.Enums.OtMathKernT
instance GHC.Internal.Enum.Enum GI.HarfBuzz.Enums.OtMetaTagT
instance GHC.Internal.Enum.Enum GI.HarfBuzz.Enums.OtMetricsTagT
instance GHC.Internal.Enum.Enum GI.HarfBuzz.Enums.OtNameIdPredefinedT
instance GHC.Internal.Enum.Enum GI.HarfBuzz.Enums.PaintCompositeModeT
instance GHC.Internal.Enum.Enum GI.HarfBuzz.Enums.PaintExtendT
instance GHC.Internal.Enum.Enum GI.HarfBuzz.Enums.ScriptT
instance GHC.Internal.Enum.Enum GI.HarfBuzz.Enums.StyleTagT
instance GHC.Internal.Enum.Enum GI.HarfBuzz.Enums.UnicodeCombiningClassT
instance GHC.Internal.Enum.Enum GI.HarfBuzz.Enums.UnicodeGeneralCategoryT
instance GHC.Classes.Eq GI.HarfBuzz.Enums.AatLayoutFeatureSelectorT
instance GHC.Classes.Eq GI.HarfBuzz.Enums.AatLayoutFeatureTypeT
instance GHC.Classes.Eq GI.HarfBuzz.Enums.BufferClusterLevelT
instance GHC.Classes.Eq GI.HarfBuzz.Enums.BufferContentTypeT
instance GHC.Classes.Eq GI.HarfBuzz.Enums.BufferSerializeFormatT
instance GHC.Classes.Eq GI.HarfBuzz.Enums.DirectionT
instance GHC.Classes.Eq GI.HarfBuzz.Enums.MemoryModeT
instance GHC.Classes.Eq GI.HarfBuzz.Enums.OtLayoutBaselineTagT
instance GHC.Classes.Eq GI.HarfBuzz.Enums.OtLayoutGlyphClassT
instance GHC.Classes.Eq GI.HarfBuzz.Enums.OtMathConstantT
instance GHC.Classes.Eq GI.HarfBuzz.Enums.OtMathKernT
instance GHC.Classes.Eq GI.HarfBuzz.Enums.OtMetaTagT
instance GHC.Classes.Eq GI.HarfBuzz.Enums.OtMetricsTagT
instance GHC.Classes.Eq GI.HarfBuzz.Enums.OtNameIdPredefinedT
instance GHC.Classes.Eq GI.HarfBuzz.Enums.PaintCompositeModeT
instance GHC.Classes.Eq GI.HarfBuzz.Enums.PaintExtendT
instance GHC.Classes.Eq GI.HarfBuzz.Enums.ScriptT
instance GHC.Classes.Eq GI.HarfBuzz.Enums.StyleTagT
instance GHC.Classes.Eq GI.HarfBuzz.Enums.UnicodeCombiningClassT
instance GHC.Classes.Eq GI.HarfBuzz.Enums.UnicodeGeneralCategoryT
instance Data.GI.Base.Overloading.HasParentTypes GI.HarfBuzz.Enums.AatLayoutFeatureSelectorT
instance Data.GI.Base.Overloading.HasParentTypes GI.HarfBuzz.Enums.AatLayoutFeatureTypeT
instance Data.GI.Base.Overloading.HasParentTypes GI.HarfBuzz.Enums.BufferClusterLevelT
instance Data.GI.Base.Overloading.HasParentTypes GI.HarfBuzz.Enums.BufferContentTypeT
instance Data.GI.Base.Overloading.HasParentTypes GI.HarfBuzz.Enums.BufferSerializeFormatT
instance Data.GI.Base.Overloading.HasParentTypes GI.HarfBuzz.Enums.DirectionT
instance Data.GI.Base.Overloading.HasParentTypes GI.HarfBuzz.Enums.MemoryModeT
instance Data.GI.Base.Overloading.HasParentTypes GI.HarfBuzz.Enums.OtLayoutBaselineTagT
instance Data.GI.Base.Overloading.HasParentTypes GI.HarfBuzz.Enums.OtLayoutGlyphClassT
instance Data.GI.Base.Overloading.HasParentTypes GI.HarfBuzz.Enums.OtMathConstantT
instance Data.GI.Base.Overloading.HasParentTypes GI.HarfBuzz.Enums.OtMathKernT
instance Data.GI.Base.Overloading.HasParentTypes GI.HarfBuzz.Enums.OtMetaTagT
instance Data.GI.Base.Overloading.HasParentTypes GI.HarfBuzz.Enums.OtMetricsTagT
instance Data.GI.Base.Overloading.HasParentTypes GI.HarfBuzz.Enums.OtNameIdPredefinedT
instance Data.GI.Base.Overloading.HasParentTypes GI.HarfBuzz.Enums.PaintCompositeModeT
instance Data.GI.Base.Overloading.HasParentTypes GI.HarfBuzz.Enums.PaintExtendT
instance Data.GI.Base.Overloading.HasParentTypes GI.HarfBuzz.Enums.ScriptT
instance Data.GI.Base.Overloading.HasParentTypes GI.HarfBuzz.Enums.StyleTagT
instance Data.GI.Base.Overloading.HasParentTypes GI.HarfBuzz.Enums.UnicodeCombiningClassT
instance Data.GI.Base.Overloading.HasParentTypes GI.HarfBuzz.Enums.UnicodeGeneralCategoryT
instance GHC.Classes.Ord GI.HarfBuzz.Enums.AatLayoutFeatureSelectorT
instance GHC.Classes.Ord GI.HarfBuzz.Enums.AatLayoutFeatureTypeT
instance GHC.Classes.Ord GI.HarfBuzz.Enums.BufferClusterLevelT
instance GHC.Classes.Ord GI.HarfBuzz.Enums.BufferContentTypeT
instance GHC.Classes.Ord GI.HarfBuzz.Enums.BufferSerializeFormatT
instance GHC.Classes.Ord GI.HarfBuzz.Enums.DirectionT
instance GHC.Classes.Ord GI.HarfBuzz.Enums.MemoryModeT
instance GHC.Classes.Ord GI.HarfBuzz.Enums.OtLayoutBaselineTagT
instance GHC.Classes.Ord GI.HarfBuzz.Enums.OtLayoutGlyphClassT
instance GHC.Classes.Ord GI.HarfBuzz.Enums.OtMathConstantT
instance GHC.Classes.Ord GI.HarfBuzz.Enums.OtMathKernT
instance GHC.Classes.Ord GI.HarfBuzz.Enums.OtMetaTagT
instance GHC.Classes.Ord GI.HarfBuzz.Enums.OtMetricsTagT
instance GHC.Classes.Ord GI.HarfBuzz.Enums.OtNameIdPredefinedT
instance GHC.Classes.Ord GI.HarfBuzz.Enums.PaintCompositeModeT
instance GHC.Classes.Ord GI.HarfBuzz.Enums.PaintExtendT
instance GHC.Classes.Ord GI.HarfBuzz.Enums.ScriptT
instance GHC.Classes.Ord GI.HarfBuzz.Enums.StyleTagT
instance GHC.Classes.Ord GI.HarfBuzz.Enums.UnicodeCombiningClassT
instance GHC.Classes.Ord GI.HarfBuzz.Enums.UnicodeGeneralCategoryT
instance GHC.Internal.Show.Show GI.HarfBuzz.Enums.AatLayoutFeatureSelectorT
instance GHC.Internal.Show.Show GI.HarfBuzz.Enums.AatLayoutFeatureTypeT
instance GHC.Internal.Show.Show GI.HarfBuzz.Enums.BufferClusterLevelT
instance GHC.Internal.Show.Show GI.HarfBuzz.Enums.BufferContentTypeT
instance GHC.Internal.Show.Show GI.HarfBuzz.Enums.BufferSerializeFormatT
instance GHC.Internal.Show.Show GI.HarfBuzz.Enums.DirectionT
instance GHC.Internal.Show.Show GI.HarfBuzz.Enums.MemoryModeT
instance GHC.Internal.Show.Show GI.HarfBuzz.Enums.OtLayoutBaselineTagT
instance GHC.Internal.Show.Show GI.HarfBuzz.Enums.OtLayoutGlyphClassT
instance GHC.Internal.Show.Show GI.HarfBuzz.Enums.OtMathConstantT
instance GHC.Internal.Show.Show GI.HarfBuzz.Enums.OtMathKernT
instance GHC.Internal.Show.Show GI.HarfBuzz.Enums.OtMetaTagT
instance GHC.Internal.Show.Show GI.HarfBuzz.Enums.OtMetricsTagT
instance GHC.Internal.Show.Show GI.HarfBuzz.Enums.OtNameIdPredefinedT
instance GHC.Internal.Show.Show GI.HarfBuzz.Enums.PaintCompositeModeT
instance GHC.Internal.Show.Show GI.HarfBuzz.Enums.PaintExtendT
instance GHC.Internal.Show.Show GI.HarfBuzz.Enums.ScriptT
instance GHC.Internal.Show.Show GI.HarfBuzz.Enums.StyleTagT
instance GHC.Internal.Show.Show GI.HarfBuzz.Enums.UnicodeCombiningClassT
instance GHC.Internal.Show.Show GI.HarfBuzz.Enums.UnicodeGeneralCategoryT
instance Data.GI.Base.BasicTypes.TypedObject GI.HarfBuzz.Enums.AatLayoutFeatureSelectorT
instance Data.GI.Base.BasicTypes.TypedObject GI.HarfBuzz.Enums.AatLayoutFeatureTypeT
instance Data.GI.Base.BasicTypes.TypedObject GI.HarfBuzz.Enums.BufferClusterLevelT
instance Data.GI.Base.BasicTypes.TypedObject GI.HarfBuzz.Enums.BufferContentTypeT
instance Data.GI.Base.BasicTypes.TypedObject GI.HarfBuzz.Enums.BufferSerializeFormatT
instance Data.GI.Base.BasicTypes.TypedObject GI.HarfBuzz.Enums.DirectionT
instance Data.GI.Base.BasicTypes.TypedObject GI.HarfBuzz.Enums.MemoryModeT
instance Data.GI.Base.BasicTypes.TypedObject GI.HarfBuzz.Enums.OtLayoutBaselineTagT
instance Data.GI.Base.BasicTypes.TypedObject GI.HarfBuzz.Enums.OtLayoutGlyphClassT
instance Data.GI.Base.BasicTypes.TypedObject GI.HarfBuzz.Enums.OtMathConstantT
instance Data.GI.Base.BasicTypes.TypedObject GI.HarfBuzz.Enums.OtMathKernT
instance Data.GI.Base.BasicTypes.TypedObject GI.HarfBuzz.Enums.OtMetaTagT
instance Data.GI.Base.BasicTypes.TypedObject GI.HarfBuzz.Enums.OtMetricsTagT
instance Data.GI.Base.BasicTypes.TypedObject GI.HarfBuzz.Enums.OtNameIdPredefinedT
instance Data.GI.Base.BasicTypes.TypedObject GI.HarfBuzz.Enums.PaintCompositeModeT
instance Data.GI.Base.BasicTypes.TypedObject GI.HarfBuzz.Enums.PaintExtendT
instance Data.GI.Base.BasicTypes.TypedObject GI.HarfBuzz.Enums.ScriptT
instance Data.GI.Base.BasicTypes.TypedObject GI.HarfBuzz.Enums.StyleTagT
instance Data.GI.Base.BasicTypes.TypedObject GI.HarfBuzz.Enums.UnicodeCombiningClassT
instance Data.GI.Base.BasicTypes.TypedObject GI.HarfBuzz.Enums.UnicodeGeneralCategoryT


module GI.HarfBuzz.Flags

-- | Flags from comparing two <a>BufferT</a>'s.
--   
--   Buffer with different <a>BufferContentTypeT</a> cannot be meaningfully
--   compared in any further detail.
--   
--   For buffers with differing length, the per-glyph comparison is not
--   attempted, though we do still scan reference buffer for dotted circle
--   and <tt>.notdef</tt> glyphs.
--   
--   If the buffers have the same length, we compare them glyph-by-glyph
--   and report which aspect(s) of the glyph info/position are different.
--   
--   <i>Since: 1.5.0</i>
data BufferDiffFlagsT

-- | equal buffers.
BufferDiffFlagsTEqual :: BufferDiffFlagsT

-- | buffers with different <a>BufferContentTypeT</a>.
BufferDiffFlagsTContentTypeMismatch :: BufferDiffFlagsT

-- | buffers with differing length.
BufferDiffFlagsTLengthMismatch :: BufferDiffFlagsT

-- | <tt>.notdef</tt> glyph is present in the reference buffer.
BufferDiffFlagsTNotdefPresent :: BufferDiffFlagsT

-- | dotted circle glyph is present in the reference buffer.
BufferDiffFlagsTDottedCirclePresent :: BufferDiffFlagsT

-- | difference in <a>GlyphInfoT</a>.<tt><i>codepoint</i></tt>
BufferDiffFlagsTCodepointMismatch :: BufferDiffFlagsT

-- | difference in <a>GlyphInfoT</a>.<tt><i>cluster</i></tt>
BufferDiffFlagsTClusterMismatch :: BufferDiffFlagsT

-- | difference in <a>GlyphFlagsT</a>.
BufferDiffFlagsTGlyphFlagsMismatch :: BufferDiffFlagsT

-- | difference in <a>GlyphPositionT</a>.
BufferDiffFlagsTPositionMismatch :: BufferDiffFlagsT

-- | Catch-all for unknown values
AnotherBufferDiffFlagsT :: Int -> BufferDiffFlagsT

-- | Flags for <a>BufferT</a>.
--   
--   <i>Since: 0.9.20</i>
data BufferFlagsT

-- | the default buffer flag.
BufferFlagsTDefault :: BufferFlagsT

-- | flag indicating that special handling of the beginning of text
--   paragraph can be applied to this buffer. Should usually be set, unless
--   you are passing to the buffer only part of the text without the full
--   context.
BufferFlagsTBot :: BufferFlagsT

-- | flag indicating that special handling of the end of text paragraph can
--   be applied to this buffer, similar to <i><tt>hBBUFFERFLAGBOT</tt></i>.
BufferFlagsTEot :: BufferFlagsT

-- | flag indication that character with Default_Ignorable Unicode property
--   should use the corresponding glyph from the font, instead of hiding
--   them (done by replacing them with the space glyph and zeroing the
--   advance width.) This flag takes precedence over
--   <i><tt>hBBUFFERFLAGREMOVEDEFAULTIGNORABLES</tt></i>.
BufferFlagsTPreserveDefaultIgnorables :: BufferFlagsT

-- | flag indication that character with Default_Ignorable Unicode property
--   should be removed from glyph string instead of hiding them (done by
--   replacing them with the space glyph and zeroing the advance width.)
--   <i><tt>hBBUFFERFLAGPRESERVEDEFAULTIGNORABLES</tt></i> takes precedence
--   over this flag. Since: 1.8.0
BufferFlagsTRemoveDefaultIgnorables :: BufferFlagsT

-- | flag indicating that a dotted circle should not be inserted in the
--   rendering of incorrect character sequences (such at &lt;0905
--   093E&gt;). Since: 2.4.0
BufferFlagsTDoNotInsertDottedCircle :: BufferFlagsT

-- | flag indicating that the <a>shape</a> call and its variants should
--   perform various verification processes on the results of the shaping
--   operation on the buffer. If the verification fails, then either a
--   buffer message is sent, if a message handler is installed on the
--   buffer, or a message is written to standard error. In either case, the
--   shaping result might be modified to show the failed output. Since:
--   3.4.0
BufferFlagsTVerify :: BufferFlagsT

-- | flag indicating that the <i><tt>hBGLYPHFLAGUNSAFETOCONCAT</tt></i>
--   glyph-flag should be produced by the shaper. By default it will not be
--   produced since it incurs a cost. Since: 4.0.0
BufferFlagsTProduceUnsafeToConcat :: BufferFlagsT

-- | flag indicating that the
--   <i><tt>hBGLYPHFLAGSAFETOINSERTTATWEEL</tt></i> glyph-flag should be
--   produced by the shaper. By default it will not be produced. Since:
--   5.1.0
BufferFlagsTProduceSafeToInsertTatweel :: BufferFlagsT

-- | All currently defined flags: Since: 4.4.0
BufferFlagsTDefined :: BufferFlagsT

-- | Catch-all for unknown values
AnotherBufferFlagsT :: Int -> BufferFlagsT

-- | Flags that control what glyph information are serialized in
--   <a>bufferSerializeGlyphs</a>.
--   
--   <i>Since: 0.9.20</i>
data BufferSerializeFlagsT

-- | serialize glyph names, clusters and positions.
BufferSerializeFlagsTDefault :: BufferSerializeFlagsT

-- | do not serialize glyph cluster.
BufferSerializeFlagsTNoClusters :: BufferSerializeFlagsT

-- | do not serialize glyph position information.
BufferSerializeFlagsTNoPositions :: BufferSerializeFlagsT

-- | do no serialize glyph name.
BufferSerializeFlagsTNoGlyphNames :: BufferSerializeFlagsT

-- | serialize glyph extents.
BufferSerializeFlagsTGlyphExtents :: BufferSerializeFlagsT

-- | serialize glyph flags. Since: 1.5.0
BufferSerializeFlagsTGlyphFlags :: BufferSerializeFlagsT

-- | do not serialize glyph advances, glyph offsets will reflect absolute
--   glyph positions. Since: 1.8.0
BufferSerializeFlagsTNoAdvances :: BufferSerializeFlagsT

-- | All currently defined flags. Since: 4.4.0
BufferSerializeFlagsTDefined :: BufferSerializeFlagsT

-- | Catch-all for unknown values
AnotherBufferSerializeFlagsT :: Int -> BufferSerializeFlagsT

-- | Flags for <a>GlyphInfoT</a>.
--   
--   <i>Since: 1.5.0</i>
data GlyphFlagsT

-- | Indicates that if input text is broken at the beginning of the cluster
--   this glyph is part of, then both sides need to be re-shaped, as the
--   result might be different. On the flip side, it means that when this
--   flag is not present, then it is safe to break the glyph-run at the
--   beginning of this cluster, and the two sides will represent the exact
--   same result one would get if breaking input text at the beginning of
--   this cluster and shaping the two sides separately. This can be used to
--   optimize paragraph layout, by avoiding re-shaping of each line after
--   line-breaking.
GlyphFlagsTUnsafeToBreak :: GlyphFlagsT

-- | Indicates that if input text is changed on one side of the beginning
--   of the cluster this glyph is part of, then the shaping results for the
--   other side might change. Note that the absence of this flag will NOT
--   by itself mean that it IS safe to concat text. Only two pieces of text
--   both of which clear of this flag can be concatenated safely. This can
--   be used to optimize paragraph layout, by avoiding re-shaping of each
--   line after line-breaking, by limiting the reshaping to a small piece
--   around the breaking position only, even if the breaking position
--   carries the <tt><i>HB_GLYPH_FLAG_UNSAFE_TO_BREAK</i></tt> or when
--   hyphenation or other text transformation happens at line-break
--   position, in the following way: 1. Iterate back from the line-break
--   position until the first cluster start position that is NOT
--   unsafe-to-concat, 2. shape the segment from there till the end of
--   line, 3. check whether the resulting glyph-run also is clear of the
--   unsafe-to-concat at its start-of-text position; if it is, just splice
--   it into place and the line is shaped; If not, move on to a position
--   further back that is clear of unsafe-to-concat and retry from there,
--   and repeat. At the start of next line a similar algorithm can be
--   implemented. That is: 1. Iterate forward from the line-break position
--   until the first cluster start position that is NOT unsafe-to-concat,
--   2. shape the segment from beginning of the line to that position, 3.
--   check whether the resulting glyph-run also is clear of the
--   unsafe-to-concat at its end-of-text position; if it is, just splice it
--   into place and the beginning is shaped; If not, move on to a position
--   further forward that is clear of unsafe-to-concat and retry up to
--   there, and repeat. A slight complication will arise in the
--   implementation of the algorithm above, because while our buffer API
--   has a way to return flags for position corresponding to start-of-text,
--   there is currently no position corresponding to end-of-text. This
--   limitation can be alleviated by shaping more text than needed and
--   looking for unsafe-to-concat flag within text clusters. The
--   <tt><i>HB_GLYPH_FLAG_UNSAFE_TO_BREAK</i></tt> flag will always imply
--   this flag.
--   
--   To use this flag, you must enable the buffer flag
--   <i><tt>hBBUFFERFLAGPRODUCEUNSAFETOCONCAT</tt></i> during shaping,
--   otherwise the buffer flag will not be reliably produced. Since: 4.0.0
GlyphFlagsTUnsafeToConcat :: GlyphFlagsT

-- | In scripts that use elongation (Arabic, Mongolian, Syriac, etc.), this
--   flag signifies that it is safe to insert a U+0640 TATWEEL character
--   before this cluster for elongation. This flag does not determine the
--   script-specific elongation places, but only when it is safe to do the
--   elongation without interrupting text shaping. Since: 5.1.0
GlyphFlagsTSafeToInsertTatweel :: GlyphFlagsT

-- | All the currently defined flags.
GlyphFlagsTDefined :: GlyphFlagsT

-- | Catch-all for unknown values
AnotherGlyphFlagsT :: Int -> GlyphFlagsT

-- | Flags that describe the properties of color palette.
--   
--   <i>Since: 2.1.0</i>
data OtColorPaletteFlagsT

-- | Default indicating that there is nothing special to note about a color
--   palette.
OtColorPaletteFlagsTDefault :: OtColorPaletteFlagsT

-- | Flag indicating that the color palette is appropriate to use when
--   displaying the font on a light background such as white.
OtColorPaletteFlagsTUsableWithLightBackground :: OtColorPaletteFlagsT

-- | Flag indicating that the color palette is appropriate to use when
--   displaying the font on a dark background such as black.
OtColorPaletteFlagsTUsableWithDarkBackground :: OtColorPaletteFlagsT

-- | Catch-all for unknown values
AnotherOtColorPaletteFlagsT :: Int -> OtColorPaletteFlagsT

-- | Flags for math glyph parts.
--   
--   <i>Since: 1.3.3</i>
data OtMathGlyphPartFlagsT

-- | This is an extender glyph part that can be repeated to reach the
--   desired length.
OtMathGlyphPartFlagsTExtender :: OtMathGlyphPartFlagsT

-- | Catch-all for unknown values
AnotherOtMathGlyphPartFlagsT :: Int -> OtMathGlyphPartFlagsT

-- | Flags for <a>OtVarAxisInfoT</a>.
--   
--   <i>Since: 2.2.0</i>
data OtVarAxisFlagsT

-- | The axis should not be exposed directly in user interfaces.
OtVarAxisFlagsTHidden :: OtVarAxisFlagsT

-- | Catch-all for unknown values
AnotherOtVarAxisFlagsT :: Int -> OtVarAxisFlagsT
instance Data.GI.Base.BasicTypes.BoxedFlags GI.HarfBuzz.Flags.BufferDiffFlagsT
instance Data.GI.Base.BasicTypes.BoxedFlags GI.HarfBuzz.Flags.BufferFlagsT
instance Data.GI.Base.BasicTypes.BoxedFlags GI.HarfBuzz.Flags.BufferSerializeFlagsT
instance Data.GI.Base.BasicTypes.BoxedFlags GI.HarfBuzz.Flags.GlyphFlagsT
instance Data.GI.Base.BasicTypes.BoxedFlags GI.HarfBuzz.Flags.OtColorPaletteFlagsT
instance Data.GI.Base.BasicTypes.BoxedFlags GI.HarfBuzz.Flags.OtMathGlyphPartFlagsT
instance Data.GI.Base.BasicTypes.BoxedFlags GI.HarfBuzz.Flags.OtVarAxisFlagsT
instance GHC.Internal.Enum.Enum GI.HarfBuzz.Flags.BufferDiffFlagsT
instance GHC.Internal.Enum.Enum GI.HarfBuzz.Flags.BufferFlagsT
instance GHC.Internal.Enum.Enum GI.HarfBuzz.Flags.BufferSerializeFlagsT
instance GHC.Internal.Enum.Enum GI.HarfBuzz.Flags.GlyphFlagsT
instance GHC.Internal.Enum.Enum GI.HarfBuzz.Flags.OtColorPaletteFlagsT
instance GHC.Internal.Enum.Enum GI.HarfBuzz.Flags.OtMathGlyphPartFlagsT
instance GHC.Internal.Enum.Enum GI.HarfBuzz.Flags.OtVarAxisFlagsT
instance GHC.Classes.Eq GI.HarfBuzz.Flags.BufferDiffFlagsT
instance GHC.Classes.Eq GI.HarfBuzz.Flags.BufferFlagsT
instance GHC.Classes.Eq GI.HarfBuzz.Flags.BufferSerializeFlagsT
instance GHC.Classes.Eq GI.HarfBuzz.Flags.GlyphFlagsT
instance GHC.Classes.Eq GI.HarfBuzz.Flags.OtColorPaletteFlagsT
instance GHC.Classes.Eq GI.HarfBuzz.Flags.OtMathGlyphPartFlagsT
instance GHC.Classes.Eq GI.HarfBuzz.Flags.OtVarAxisFlagsT
instance Data.GI.Base.Overloading.HasParentTypes GI.HarfBuzz.Flags.BufferDiffFlagsT
instance Data.GI.Base.Overloading.HasParentTypes GI.HarfBuzz.Flags.BufferFlagsT
instance Data.GI.Base.Overloading.HasParentTypes GI.HarfBuzz.Flags.BufferSerializeFlagsT
instance Data.GI.Base.Overloading.HasParentTypes GI.HarfBuzz.Flags.GlyphFlagsT
instance Data.GI.Base.Overloading.HasParentTypes GI.HarfBuzz.Flags.OtColorPaletteFlagsT
instance Data.GI.Base.Overloading.HasParentTypes GI.HarfBuzz.Flags.OtMathGlyphPartFlagsT
instance Data.GI.Base.Overloading.HasParentTypes GI.HarfBuzz.Flags.OtVarAxisFlagsT
instance Data.GI.Base.BasicTypes.IsGFlag GI.HarfBuzz.Flags.BufferDiffFlagsT
instance Data.GI.Base.BasicTypes.IsGFlag GI.HarfBuzz.Flags.BufferFlagsT
instance Data.GI.Base.BasicTypes.IsGFlag GI.HarfBuzz.Flags.BufferSerializeFlagsT
instance Data.GI.Base.BasicTypes.IsGFlag GI.HarfBuzz.Flags.GlyphFlagsT
instance Data.GI.Base.BasicTypes.IsGFlag GI.HarfBuzz.Flags.OtColorPaletteFlagsT
instance Data.GI.Base.BasicTypes.IsGFlag GI.HarfBuzz.Flags.OtMathGlyphPartFlagsT
instance Data.GI.Base.BasicTypes.IsGFlag GI.HarfBuzz.Flags.OtVarAxisFlagsT
instance GHC.Classes.Ord GI.HarfBuzz.Flags.BufferDiffFlagsT
instance GHC.Classes.Ord GI.HarfBuzz.Flags.BufferFlagsT
instance GHC.Classes.Ord GI.HarfBuzz.Flags.BufferSerializeFlagsT
instance GHC.Classes.Ord GI.HarfBuzz.Flags.GlyphFlagsT
instance GHC.Classes.Ord GI.HarfBuzz.Flags.OtColorPaletteFlagsT
instance GHC.Classes.Ord GI.HarfBuzz.Flags.OtMathGlyphPartFlagsT
instance GHC.Classes.Ord GI.HarfBuzz.Flags.OtVarAxisFlagsT
instance GHC.Internal.Show.Show GI.HarfBuzz.Flags.BufferDiffFlagsT
instance GHC.Internal.Show.Show GI.HarfBuzz.Flags.BufferFlagsT
instance GHC.Internal.Show.Show GI.HarfBuzz.Flags.BufferSerializeFlagsT
instance GHC.Internal.Show.Show GI.HarfBuzz.Flags.GlyphFlagsT
instance GHC.Internal.Show.Show GI.HarfBuzz.Flags.OtColorPaletteFlagsT
instance GHC.Internal.Show.Show GI.HarfBuzz.Flags.OtMathGlyphPartFlagsT
instance GHC.Internal.Show.Show GI.HarfBuzz.Flags.OtVarAxisFlagsT
instance Data.GI.Base.BasicTypes.TypedObject GI.HarfBuzz.Flags.BufferDiffFlagsT
instance Data.GI.Base.BasicTypes.TypedObject GI.HarfBuzz.Flags.BufferFlagsT
instance Data.GI.Base.BasicTypes.TypedObject GI.HarfBuzz.Flags.BufferSerializeFlagsT
instance Data.GI.Base.BasicTypes.TypedObject GI.HarfBuzz.Flags.GlyphFlagsT
instance Data.GI.Base.BasicTypes.TypedObject GI.HarfBuzz.Flags.OtColorPaletteFlagsT
instance Data.GI.Base.BasicTypes.TypedObject GI.HarfBuzz.Flags.OtMathGlyphPartFlagsT
instance Data.GI.Base.BasicTypes.TypedObject GI.HarfBuzz.Flags.OtVarAxisFlagsT


-- | Structure representing a setting for an <a>AatLayoutFeatureTypeT</a>.
module GI.HarfBuzz.Structs.AatLayoutFeatureSelectorInfoT

-- | Memory-managed wrapper type.
newtype AatLayoutFeatureSelectorInfoT
AatLayoutFeatureSelectorInfoT :: ManagedPtr AatLayoutFeatureSelectorInfoT -> AatLayoutFeatureSelectorInfoT

-- | Construct a <a>AatLayoutFeatureSelectorInfoT</a> struct initialized to
--   zero.
newZeroAatLayoutFeatureSelectorInfoT :: MonadIO m => m AatLayoutFeatureSelectorInfoT

-- | Get the value of the “<tt>disable</tt>” field. When <a>overloading</a>
--   is enabled, this is equivalent to
--   
--   <pre>
--   <a>get</a> aatLayoutFeatureSelectorInfoT #disable
--   </pre>
getAatLayoutFeatureSelectorInfoTDisable :: MonadIO m => AatLayoutFeatureSelectorInfoT -> m AatLayoutFeatureSelectorT

-- | Set the value of the “<tt>disable</tt>” field. When <a>overloading</a>
--   is enabled, this is equivalent to
--   
--   <pre>
--   <a>set</a> aatLayoutFeatureSelectorInfoT [ #disable <a>:=</a> value ]
--   </pre>
setAatLayoutFeatureSelectorInfoTDisable :: MonadIO m => AatLayoutFeatureSelectorInfoT -> AatLayoutFeatureSelectorT -> m ()

-- | Get the value of the “<tt>enable</tt>” field. When <a>overloading</a>
--   is enabled, this is equivalent to
--   
--   <pre>
--   <a>get</a> aatLayoutFeatureSelectorInfoT #enable
--   </pre>
getAatLayoutFeatureSelectorInfoTEnable :: MonadIO m => AatLayoutFeatureSelectorInfoT -> m AatLayoutFeatureSelectorT

-- | Set the value of the “<tt>enable</tt>” field. When <a>overloading</a>
--   is enabled, this is equivalent to
--   
--   <pre>
--   <a>set</a> aatLayoutFeatureSelectorInfoT [ #enable <a>:=</a> value ]
--   </pre>
setAatLayoutFeatureSelectorInfoTEnable :: MonadIO m => AatLayoutFeatureSelectorInfoT -> AatLayoutFeatureSelectorT -> m ()

-- | Get the value of the “<tt>name_id</tt>” field. When <a>overloading</a>
--   is enabled, this is equivalent to
--   
--   <pre>
--   <a>get</a> aatLayoutFeatureSelectorInfoT #nameId
--   </pre>
getAatLayoutFeatureSelectorInfoTNameId :: MonadIO m => AatLayoutFeatureSelectorInfoT -> m Word32

-- | Set the value of the “<tt>name_id</tt>” field. When <a>overloading</a>
--   is enabled, this is equivalent to
--   
--   <pre>
--   <a>set</a> aatLayoutFeatureSelectorInfoT [ #nameId <a>:=</a> value ]
--   </pre>
setAatLayoutFeatureSelectorInfoTNameId :: MonadIO m => AatLayoutFeatureSelectorInfoT -> Word32 -> m ()
instance Data.GI.Base.BasicTypes.BoxedPtr GI.HarfBuzz.Structs.AatLayoutFeatureSelectorInfoT.AatLayoutFeatureSelectorInfoT
instance Data.GI.Base.BasicTypes.CallocPtr GI.HarfBuzz.Structs.AatLayoutFeatureSelectorInfoT.AatLayoutFeatureSelectorInfoT
instance (tag GHC.Types.~ 'Data.GI.Base.Attributes.AttrSet) => Data.GI.Base.Constructible.Constructible GI.HarfBuzz.Structs.AatLayoutFeatureSelectorInfoT.AatLayoutFeatureSelectorInfoT tag
instance GHC.Classes.Eq GI.HarfBuzz.Structs.AatLayoutFeatureSelectorInfoT.AatLayoutFeatureSelectorInfoT
instance Data.GI.Base.BasicTypes.ManagedPtrNewtype GI.HarfBuzz.Structs.AatLayoutFeatureSelectorInfoT.AatLayoutFeatureSelectorInfoT


-- | Data type for blobs. A blob wraps a chunk of binary data and
--   facilitates its lifecycle management between a client program and
--   HarfBuzz.
module GI.HarfBuzz.Structs.BlobT

-- | Memory-managed wrapper type.
newtype BlobT
BlobT :: ManagedPtr BlobT -> BlobT
instance GHC.Classes.Eq GI.HarfBuzz.Structs.BlobT.BlobT
instance Data.GI.Base.BasicTypes.GBoxed GI.HarfBuzz.Structs.BlobT.BlobT
instance Data.GI.Base.Overloading.HasParentTypes GI.HarfBuzz.Structs.BlobT.BlobT
instance Data.GI.Base.GValue.IsGValue (GHC.Internal.Maybe.Maybe GI.HarfBuzz.Structs.BlobT.BlobT)
instance Data.GI.Base.BasicTypes.ManagedPtrNewtype GI.HarfBuzz.Structs.BlobT.BlobT
instance Data.GI.Base.BasicTypes.TypedObject GI.HarfBuzz.Structs.BlobT.BlobT


-- | The main structure holding the input text and its properties before
--   shaping, and output glyphs and their information after shaping.
module GI.HarfBuzz.Structs.BufferT

-- | Memory-managed wrapper type.
newtype BufferT
BufferT :: ManagedPtr BufferT -> BufferT
instance GHC.Classes.Eq GI.HarfBuzz.Structs.BufferT.BufferT
instance Data.GI.Base.BasicTypes.GBoxed GI.HarfBuzz.Structs.BufferT.BufferT
instance Data.GI.Base.Overloading.HasParentTypes GI.HarfBuzz.Structs.BufferT.BufferT
instance Data.GI.Base.GValue.IsGValue (GHC.Internal.Maybe.Maybe GI.HarfBuzz.Structs.BufferT.BufferT)
instance Data.GI.Base.BasicTypes.ManagedPtrNewtype GI.HarfBuzz.Structs.BufferT.BufferT
instance Data.GI.Base.BasicTypes.TypedObject GI.HarfBuzz.Structs.BufferT.BufferT


-- | Information about a color stop on a color line.
--   
--   Color lines typically have offsets ranging between 0 and 1, but that
--   is not required.
--   
--   Note: despite <i><tt>color</tt></i> being unpremultiplied here,
--   interpolation in gradients shall happen in premultiplied space. See
--   the OpenType spec <a>COLR</a> section for details.
--   
--   <i>Since: 7.0.0</i>
module GI.HarfBuzz.Structs.ColorStopT

-- | Memory-managed wrapper type.
newtype ColorStopT
ColorStopT :: ManagedPtr ColorStopT -> ColorStopT

-- | Construct a <a>ColorStopT</a> struct initialized to zero.
newZeroColorStopT :: MonadIO m => m ColorStopT

-- | Get the value of the “<tt>color</tt>” field. When <a>overloading</a>
--   is enabled, this is equivalent to
--   
--   <pre>
--   <a>get</a> colorStopT #color
--   </pre>
getColorStopTColor :: MonadIO m => ColorStopT -> m Word32

-- | Set the value of the “<tt>color</tt>” field. When <a>overloading</a>
--   is enabled, this is equivalent to
--   
--   <pre>
--   <a>set</a> colorStopT [ #color <a>:=</a> value ]
--   </pre>
setColorStopTColor :: MonadIO m => ColorStopT -> Word32 -> m ()

-- | Get the value of the “<tt>is_foreground</tt>” field. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>get</a> colorStopT #isForeground
--   </pre>
getColorStopTIsForeground :: MonadIO m => ColorStopT -> m Int32

-- | Set the value of the “<tt>is_foreground</tt>” field. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>set</a> colorStopT [ #isForeground <a>:=</a> value ]
--   </pre>
setColorStopTIsForeground :: MonadIO m => ColorStopT -> Int32 -> m ()

-- | Get the value of the “<tt>offset</tt>” field. When <a>overloading</a>
--   is enabled, this is equivalent to
--   
--   <pre>
--   <a>get</a> colorStopT #offset
--   </pre>
getColorStopTOffset :: MonadIO m => ColorStopT -> m Float

-- | Set the value of the “<tt>offset</tt>” field. When <a>overloading</a>
--   is enabled, this is equivalent to
--   
--   <pre>
--   <a>set</a> colorStopT [ #offset <a>:=</a> value ]
--   </pre>
setColorStopTOffset :: MonadIO m => ColorStopT -> Float -> m ()
instance (tag GHC.Types.~ 'Data.GI.Base.Attributes.AttrSet) => Data.GI.Base.Constructible.Constructible GI.HarfBuzz.Structs.ColorStopT.ColorStopT tag
instance GHC.Classes.Eq GI.HarfBuzz.Structs.ColorStopT.ColorStopT
instance Data.GI.Base.BasicTypes.GBoxed GI.HarfBuzz.Structs.ColorStopT.ColorStopT
instance Data.GI.Base.Overloading.HasParentTypes GI.HarfBuzz.Structs.ColorStopT.ColorStopT
instance Data.GI.Base.GValue.IsGValue (GHC.Internal.Maybe.Maybe GI.HarfBuzz.Structs.ColorStopT.ColorStopT)
instance Data.GI.Base.BasicTypes.ManagedPtrNewtype GI.HarfBuzz.Structs.ColorStopT.ColorStopT
instance Data.GI.Base.BasicTypes.TypedObject GI.HarfBuzz.Structs.ColorStopT.ColorStopT


-- | Glyph draw callbacks.
--   
--   <a>DrawMoveToFuncT</a>, <a>DrawLineToFuncT</a> and
--   <a>DrawCubicToFuncT</a> calls are necessary to be defined but we
--   translate <a>DrawQuadraticToFuncT</a> calls to <a>DrawCubicToFuncT</a>
--   if the callback isn't defined.
--   
--   <i>Since: 4.0.0</i>
module GI.HarfBuzz.Structs.DrawFuncsT

-- | Memory-managed wrapper type.
newtype DrawFuncsT
DrawFuncsT :: ManagedPtr DrawFuncsT -> DrawFuncsT
instance GHC.Classes.Eq GI.HarfBuzz.Structs.DrawFuncsT.DrawFuncsT
instance Data.GI.Base.BasicTypes.GBoxed GI.HarfBuzz.Structs.DrawFuncsT.DrawFuncsT
instance Data.GI.Base.Overloading.HasParentTypes GI.HarfBuzz.Structs.DrawFuncsT.DrawFuncsT
instance Data.GI.Base.GValue.IsGValue (GHC.Internal.Maybe.Maybe GI.HarfBuzz.Structs.DrawFuncsT.DrawFuncsT)
instance Data.GI.Base.BasicTypes.ManagedPtrNewtype GI.HarfBuzz.Structs.DrawFuncsT.DrawFuncsT
instance Data.GI.Base.BasicTypes.TypedObject GI.HarfBuzz.Structs.DrawFuncsT.DrawFuncsT


-- | Current drawing state.
--   
--   <i>Since: 4.0.0</i>
module GI.HarfBuzz.Structs.DrawStateT

-- | Memory-managed wrapper type.
newtype DrawStateT
DrawStateT :: ManagedPtr DrawStateT -> DrawStateT

-- | Construct a <a>DrawStateT</a> struct initialized to zero.
newZeroDrawStateT :: MonadIO m => m DrawStateT

-- | Get the value of the “<tt>current_x</tt>” field. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>get</a> drawStateT #currentX
--   </pre>
getDrawStateTCurrentX :: MonadIO m => DrawStateT -> m Float

-- | Set the value of the “<tt>current_x</tt>” field. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>set</a> drawStateT [ #currentX <a>:=</a> value ]
--   </pre>
setDrawStateTCurrentX :: MonadIO m => DrawStateT -> Float -> m ()

-- | Get the value of the “<tt>current_y</tt>” field. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>get</a> drawStateT #currentY
--   </pre>
getDrawStateTCurrentY :: MonadIO m => DrawStateT -> m Float

-- | Set the value of the “<tt>current_y</tt>” field. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>set</a> drawStateT [ #currentY <a>:=</a> value ]
--   </pre>
setDrawStateTCurrentY :: MonadIO m => DrawStateT -> Float -> m ()

-- | Get the value of the “<tt>path_open</tt>” field. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>get</a> drawStateT #pathOpen
--   </pre>
getDrawStateTPathOpen :: MonadIO m => DrawStateT -> m Int32

-- | Set the value of the “<tt>path_open</tt>” field. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>set</a> drawStateT [ #pathOpen <a>:=</a> value ]
--   </pre>
setDrawStateTPathOpen :: MonadIO m => DrawStateT -> Int32 -> m ()

-- | Get the value of the “<tt>path_start_x</tt>” field. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>get</a> drawStateT #pathStartX
--   </pre>
getDrawStateTPathStartX :: MonadIO m => DrawStateT -> m Float

-- | Set the value of the “<tt>path_start_x</tt>” field. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>set</a> drawStateT [ #pathStartX <a>:=</a> value ]
--   </pre>
setDrawStateTPathStartX :: MonadIO m => DrawStateT -> Float -> m ()

-- | Get the value of the “<tt>path_start_y</tt>” field. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>get</a> drawStateT #pathStartY
--   </pre>
getDrawStateTPathStartY :: MonadIO m => DrawStateT -> m Float

-- | Set the value of the “<tt>path_start_y</tt>” field. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>set</a> drawStateT [ #pathStartY <a>:=</a> value ]
--   </pre>
setDrawStateTPathStartY :: MonadIO m => DrawStateT -> Float -> m ()
instance (tag GHC.Types.~ 'Data.GI.Base.Attributes.AttrSet) => Data.GI.Base.Constructible.Constructible GI.HarfBuzz.Structs.DrawStateT.DrawStateT tag
instance GHC.Classes.Eq GI.HarfBuzz.Structs.DrawStateT.DrawStateT
instance Data.GI.Base.BasicTypes.GBoxed GI.HarfBuzz.Structs.DrawStateT.DrawStateT
instance Data.GI.Base.Overloading.HasParentTypes GI.HarfBuzz.Structs.DrawStateT.DrawStateT
instance Data.GI.Base.GValue.IsGValue (GHC.Internal.Maybe.Maybe GI.HarfBuzz.Structs.DrawStateT.DrawStateT)
instance Data.GI.Base.BasicTypes.ManagedPtrNewtype GI.HarfBuzz.Structs.DrawStateT.DrawStateT
instance Data.GI.Base.BasicTypes.TypedObject GI.HarfBuzz.Structs.DrawStateT.DrawStateT


-- | Data type for holding font faces.
module GI.HarfBuzz.Structs.FaceT

-- | Memory-managed wrapper type.
newtype FaceT
FaceT :: ManagedPtr FaceT -> FaceT
instance GHC.Classes.Eq GI.HarfBuzz.Structs.FaceT.FaceT
instance Data.GI.Base.BasicTypes.GBoxed GI.HarfBuzz.Structs.FaceT.FaceT
instance Data.GI.Base.Overloading.HasParentTypes GI.HarfBuzz.Structs.FaceT.FaceT
instance Data.GI.Base.GValue.IsGValue (GHC.Internal.Maybe.Maybe GI.HarfBuzz.Structs.FaceT.FaceT)
instance Data.GI.Base.BasicTypes.ManagedPtrNewtype GI.HarfBuzz.Structs.FaceT.FaceT
instance Data.GI.Base.BasicTypes.TypedObject GI.HarfBuzz.Structs.FaceT.FaceT


-- | The <a>FeatureT</a> is the structure that holds information about
--   requested feature application. The feature will be applied with the
--   given value to all glyphs which are in clusters between
--   <i><tt>start</tt></i> (inclusive) and <i><tt>end</tt></i> (exclusive).
--   Setting start to <a>FEATURE_GLOBAL_START</a> and end to
--   <tt><i>HB_FEATURE_GLOBAL_END</i></tt> specifies that the feature
--   always applies to the entire buffer.
module GI.HarfBuzz.Structs.FeatureT

-- | Memory-managed wrapper type.
newtype FeatureT
FeatureT :: ManagedPtr FeatureT -> FeatureT

-- | Construct a <a>FeatureT</a> struct initialized to zero.
newZeroFeatureT :: MonadIO m => m FeatureT

-- | Get the value of the “<tt>end</tt>” field. When <a>overloading</a> is
--   enabled, this is equivalent to
--   
--   <pre>
--   <a>get</a> featureT #end
--   </pre>
getFeatureTEnd :: MonadIO m => FeatureT -> m Word32

-- | Set the value of the “<tt>end</tt>” field. When <a>overloading</a> is
--   enabled, this is equivalent to
--   
--   <pre>
--   <a>set</a> featureT [ #end <a>:=</a> value ]
--   </pre>
setFeatureTEnd :: MonadIO m => FeatureT -> Word32 -> m ()

-- | Get the value of the “<tt>start</tt>” field. When <a>overloading</a>
--   is enabled, this is equivalent to
--   
--   <pre>
--   <a>get</a> featureT #start
--   </pre>
getFeatureTStart :: MonadIO m => FeatureT -> m Word32

-- | Set the value of the “<tt>start</tt>” field. When <a>overloading</a>
--   is enabled, this is equivalent to
--   
--   <pre>
--   <a>set</a> featureT [ #start <a>:=</a> value ]
--   </pre>
setFeatureTStart :: MonadIO m => FeatureT -> Word32 -> m ()

-- | Get the value of the “<tt>tag</tt>” field. When <a>overloading</a> is
--   enabled, this is equivalent to
--   
--   <pre>
--   <a>get</a> featureT #tag
--   </pre>
getFeatureTTag :: MonadIO m => FeatureT -> m Word32

-- | Set the value of the “<tt>tag</tt>” field. When <a>overloading</a> is
--   enabled, this is equivalent to
--   
--   <pre>
--   <a>set</a> featureT [ #tag <a>:=</a> value ]
--   </pre>
setFeatureTTag :: MonadIO m => FeatureT -> Word32 -> m ()

-- | Get the value of the “<tt>value</tt>” field. When <a>overloading</a>
--   is enabled, this is equivalent to
--   
--   <pre>
--   <a>get</a> featureT #value
--   </pre>
getFeatureTValue :: MonadIO m => FeatureT -> m Word32

-- | Set the value of the “<tt>value</tt>” field. When <a>overloading</a>
--   is enabled, this is equivalent to
--   
--   <pre>
--   <a>set</a> featureT [ #value <a>:=</a> value ]
--   </pre>
setFeatureTValue :: MonadIO m => FeatureT -> Word32 -> m ()
instance (tag GHC.Types.~ 'Data.GI.Base.Attributes.AttrSet) => Data.GI.Base.Constructible.Constructible GI.HarfBuzz.Structs.FeatureT.FeatureT tag
instance GHC.Classes.Eq GI.HarfBuzz.Structs.FeatureT.FeatureT
instance Data.GI.Base.BasicTypes.GBoxed GI.HarfBuzz.Structs.FeatureT.FeatureT
instance Data.GI.Base.Overloading.HasParentTypes GI.HarfBuzz.Structs.FeatureT.FeatureT
instance Data.GI.Base.GValue.IsGValue (GHC.Internal.Maybe.Maybe GI.HarfBuzz.Structs.FeatureT.FeatureT)
instance Data.GI.Base.BasicTypes.ManagedPtrNewtype GI.HarfBuzz.Structs.FeatureT.FeatureT
instance Data.GI.Base.BasicTypes.TypedObject GI.HarfBuzz.Structs.FeatureT.FeatureT


-- | Font-wide extent values, measured in scaled units.
--   
--   Note that typically <i><tt>ascender</tt></i> is positive and
--   <i><tt>descender</tt></i> negative, in coordinate systems that grow
--   up.
module GI.HarfBuzz.Structs.FontExtentsT

-- | Memory-managed wrapper type.
newtype FontExtentsT
FontExtentsT :: ManagedPtr FontExtentsT -> FontExtentsT

-- | Construct a <a>FontExtentsT</a> struct initialized to zero.
newZeroFontExtentsT :: MonadIO m => m FontExtentsT

-- | Get the value of the “<tt>ascender</tt>” field. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>get</a> fontExtentsT #ascender
--   </pre>
getFontExtentsTAscender :: MonadIO m => FontExtentsT -> m Int32

-- | Set the value of the “<tt>ascender</tt>” field. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>set</a> fontExtentsT [ #ascender <a>:=</a> value ]
--   </pre>
setFontExtentsTAscender :: MonadIO m => FontExtentsT -> Int32 -> m ()

-- | Get the value of the “<tt>descender</tt>” field. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>get</a> fontExtentsT #descender
--   </pre>
getFontExtentsTDescender :: MonadIO m => FontExtentsT -> m Int32

-- | Set the value of the “<tt>descender</tt>” field. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>set</a> fontExtentsT [ #descender <a>:=</a> value ]
--   </pre>
setFontExtentsTDescender :: MonadIO m => FontExtentsT -> Int32 -> m ()

-- | Get the value of the “<tt>line_gap</tt>” field. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>get</a> fontExtentsT #lineGap
--   </pre>
getFontExtentsTLineGap :: MonadIO m => FontExtentsT -> m Int32

-- | Set the value of the “<tt>line_gap</tt>” field. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>set</a> fontExtentsT [ #lineGap <a>:=</a> value ]
--   </pre>
setFontExtentsTLineGap :: MonadIO m => FontExtentsT -> Int32 -> m ()
instance Data.GI.Base.BasicTypes.BoxedPtr GI.HarfBuzz.Structs.FontExtentsT.FontExtentsT
instance Data.GI.Base.BasicTypes.CallocPtr GI.HarfBuzz.Structs.FontExtentsT.FontExtentsT
instance (tag GHC.Types.~ 'Data.GI.Base.Attributes.AttrSet) => Data.GI.Base.Constructible.Constructible GI.HarfBuzz.Structs.FontExtentsT.FontExtentsT tag
instance GHC.Classes.Eq GI.HarfBuzz.Structs.FontExtentsT.FontExtentsT
instance Data.GI.Base.BasicTypes.ManagedPtrNewtype GI.HarfBuzz.Structs.FontExtentsT.FontExtentsT


-- | Data type containing a set of virtual methods used for working on
--   <a>FontT</a> font objects.
--   
--   HarfBuzz provides a lightweight default function for each of the
--   methods in <a>FontFuncsT</a>. Client programs can implement their own
--   replacements for the individual font functions, as needed, and replace
--   the default by calling the setter for a method.
module GI.HarfBuzz.Structs.FontFuncsT

-- | Memory-managed wrapper type.
newtype FontFuncsT
FontFuncsT :: ManagedPtr FontFuncsT -> FontFuncsT
instance GHC.Classes.Eq GI.HarfBuzz.Structs.FontFuncsT.FontFuncsT
instance Data.GI.Base.BasicTypes.GBoxed GI.HarfBuzz.Structs.FontFuncsT.FontFuncsT
instance Data.GI.Base.Overloading.HasParentTypes GI.HarfBuzz.Structs.FontFuncsT.FontFuncsT
instance Data.GI.Base.GValue.IsGValue (GHC.Internal.Maybe.Maybe GI.HarfBuzz.Structs.FontFuncsT.FontFuncsT)
instance Data.GI.Base.BasicTypes.ManagedPtrNewtype GI.HarfBuzz.Structs.FontFuncsT.FontFuncsT
instance Data.GI.Base.BasicTypes.TypedObject GI.HarfBuzz.Structs.FontFuncsT.FontFuncsT


-- | Data type for holding fonts.
module GI.HarfBuzz.Structs.FontT

-- | Memory-managed wrapper type.
newtype FontT
FontT :: ManagedPtr FontT -> FontT
instance GHC.Classes.Eq GI.HarfBuzz.Structs.FontT.FontT
instance Data.GI.Base.BasicTypes.GBoxed GI.HarfBuzz.Structs.FontT.FontT
instance Data.GI.Base.Overloading.HasParentTypes GI.HarfBuzz.Structs.FontT.FontT
instance Data.GI.Base.GValue.IsGValue (GHC.Internal.Maybe.Maybe GI.HarfBuzz.Structs.FontT.FontT)
instance Data.GI.Base.BasicTypes.ManagedPtrNewtype GI.HarfBuzz.Structs.FontT.FontT
instance Data.GI.Base.BasicTypes.TypedObject GI.HarfBuzz.Structs.FontT.FontT


-- | Glyph extent values, measured in font units.
--   
--   Note that <i><tt>height</tt></i> is negative, in coordinate systems
--   that grow up.
module GI.HarfBuzz.Structs.GlyphExtentsT

-- | Memory-managed wrapper type.
newtype GlyphExtentsT
GlyphExtentsT :: ManagedPtr GlyphExtentsT -> GlyphExtentsT

-- | Construct a <a>GlyphExtentsT</a> struct initialized to zero.
newZeroGlyphExtentsT :: MonadIO m => m GlyphExtentsT

-- | Get the value of the “<tt>height</tt>” field. When <a>overloading</a>
--   is enabled, this is equivalent to
--   
--   <pre>
--   <a>get</a> glyphExtentsT #height
--   </pre>
getGlyphExtentsTHeight :: MonadIO m => GlyphExtentsT -> m Int32

-- | Set the value of the “<tt>height</tt>” field. When <a>overloading</a>
--   is enabled, this is equivalent to
--   
--   <pre>
--   <a>set</a> glyphExtentsT [ #height <a>:=</a> value ]
--   </pre>
setGlyphExtentsTHeight :: MonadIO m => GlyphExtentsT -> Int32 -> m ()

-- | Get the value of the “<tt>width</tt>” field. When <a>overloading</a>
--   is enabled, this is equivalent to
--   
--   <pre>
--   <a>get</a> glyphExtentsT #width
--   </pre>
getGlyphExtentsTWidth :: MonadIO m => GlyphExtentsT -> m Int32

-- | Set the value of the “<tt>width</tt>” field. When <a>overloading</a>
--   is enabled, this is equivalent to
--   
--   <pre>
--   <a>set</a> glyphExtentsT [ #width <a>:=</a> value ]
--   </pre>
setGlyphExtentsTWidth :: MonadIO m => GlyphExtentsT -> Int32 -> m ()

-- | Get the value of the “<tt>x_bearing</tt>” field. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>get</a> glyphExtentsT #xBearing
--   </pre>
getGlyphExtentsTXBearing :: MonadIO m => GlyphExtentsT -> m Int32

-- | Set the value of the “<tt>x_bearing</tt>” field. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>set</a> glyphExtentsT [ #xBearing <a>:=</a> value ]
--   </pre>
setGlyphExtentsTXBearing :: MonadIO m => GlyphExtentsT -> Int32 -> m ()

-- | Get the value of the “<tt>y_bearing</tt>” field. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>get</a> glyphExtentsT #yBearing
--   </pre>
getGlyphExtentsTYBearing :: MonadIO m => GlyphExtentsT -> m Int32

-- | Set the value of the “<tt>y_bearing</tt>” field. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>set</a> glyphExtentsT [ #yBearing <a>:=</a> value ]
--   </pre>
setGlyphExtentsTYBearing :: MonadIO m => GlyphExtentsT -> Int32 -> m ()
instance Data.GI.Base.BasicTypes.BoxedPtr GI.HarfBuzz.Structs.GlyphExtentsT.GlyphExtentsT
instance Data.GI.Base.BasicTypes.CallocPtr GI.HarfBuzz.Structs.GlyphExtentsT.GlyphExtentsT
instance (tag GHC.Types.~ 'Data.GI.Base.Attributes.AttrSet) => Data.GI.Base.Constructible.Constructible GI.HarfBuzz.Structs.GlyphExtentsT.GlyphExtentsT tag
instance GHC.Classes.Eq GI.HarfBuzz.Structs.GlyphExtentsT.GlyphExtentsT
instance Data.GI.Base.BasicTypes.ManagedPtrNewtype GI.HarfBuzz.Structs.GlyphExtentsT.GlyphExtentsT


-- | The <a>GlyphInfoT</a> is the structure that holds information about
--   the glyphs and their relation to input text.
module GI.HarfBuzz.Structs.GlyphInfoT

-- | Memory-managed wrapper type.
newtype GlyphInfoT
GlyphInfoT :: ManagedPtr GlyphInfoT -> GlyphInfoT

-- | Construct a <a>GlyphInfoT</a> struct initialized to zero.
newZeroGlyphInfoT :: MonadIO m => m GlyphInfoT

-- | Get the value of the “<tt>cluster</tt>” field. When <a>overloading</a>
--   is enabled, this is equivalent to
--   
--   <pre>
--   <a>get</a> glyphInfoT #cluster
--   </pre>
getGlyphInfoTCluster :: MonadIO m => GlyphInfoT -> m Word32

-- | Set the value of the “<tt>cluster</tt>” field. When <a>overloading</a>
--   is enabled, this is equivalent to
--   
--   <pre>
--   <a>set</a> glyphInfoT [ #cluster <a>:=</a> value ]
--   </pre>
setGlyphInfoTCluster :: MonadIO m => GlyphInfoT -> Word32 -> m ()

-- | Get the value of the “<tt>codepoint</tt>” field. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>get</a> glyphInfoT #codepoint
--   </pre>
getGlyphInfoTCodepoint :: MonadIO m => GlyphInfoT -> m Word32

-- | Set the value of the “<tt>codepoint</tt>” field. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>set</a> glyphInfoT [ #codepoint <a>:=</a> value ]
--   </pre>
setGlyphInfoTCodepoint :: MonadIO m => GlyphInfoT -> Word32 -> m ()
instance (tag GHC.Types.~ 'Data.GI.Base.Attributes.AttrSet) => Data.GI.Base.Constructible.Constructible GI.HarfBuzz.Structs.GlyphInfoT.GlyphInfoT tag
instance GHC.Classes.Eq GI.HarfBuzz.Structs.GlyphInfoT.GlyphInfoT
instance Data.GI.Base.BasicTypes.GBoxed GI.HarfBuzz.Structs.GlyphInfoT.GlyphInfoT
instance Data.GI.Base.Overloading.HasParentTypes GI.HarfBuzz.Structs.GlyphInfoT.GlyphInfoT
instance Data.GI.Base.GValue.IsGValue (GHC.Internal.Maybe.Maybe GI.HarfBuzz.Structs.GlyphInfoT.GlyphInfoT)
instance Data.GI.Base.BasicTypes.ManagedPtrNewtype GI.HarfBuzz.Structs.GlyphInfoT.GlyphInfoT
instance Data.GI.Base.BasicTypes.TypedObject GI.HarfBuzz.Structs.GlyphInfoT.GlyphInfoT


-- | The <a>GlyphPositionT</a> is the structure that holds the positions of
--   the glyph in both horizontal and vertical directions. All positions in
--   <a>GlyphPositionT</a> are relative to the current point.
module GI.HarfBuzz.Structs.GlyphPositionT

-- | Memory-managed wrapper type.
newtype GlyphPositionT
GlyphPositionT :: ManagedPtr GlyphPositionT -> GlyphPositionT

-- | Construct a <a>GlyphPositionT</a> struct initialized to zero.
newZeroGlyphPositionT :: MonadIO m => m GlyphPositionT

-- | Get the value of the “<tt>x_advance</tt>” field. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>get</a> glyphPositionT #xAdvance
--   </pre>
getGlyphPositionTXAdvance :: MonadIO m => GlyphPositionT -> m Int32

-- | Set the value of the “<tt>x_advance</tt>” field. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>set</a> glyphPositionT [ #xAdvance <a>:=</a> value ]
--   </pre>
setGlyphPositionTXAdvance :: MonadIO m => GlyphPositionT -> Int32 -> m ()

-- | Get the value of the “<tt>x_offset</tt>” field. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>get</a> glyphPositionT #xOffset
--   </pre>
getGlyphPositionTXOffset :: MonadIO m => GlyphPositionT -> m Int32

-- | Set the value of the “<tt>x_offset</tt>” field. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>set</a> glyphPositionT [ #xOffset <a>:=</a> value ]
--   </pre>
setGlyphPositionTXOffset :: MonadIO m => GlyphPositionT -> Int32 -> m ()

-- | Get the value of the “<tt>y_advance</tt>” field. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>get</a> glyphPositionT #yAdvance
--   </pre>
getGlyphPositionTYAdvance :: MonadIO m => GlyphPositionT -> m Int32

-- | Set the value of the “<tt>y_advance</tt>” field. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>set</a> glyphPositionT [ #yAdvance <a>:=</a> value ]
--   </pre>
setGlyphPositionTYAdvance :: MonadIO m => GlyphPositionT -> Int32 -> m ()

-- | Get the value of the “<tt>y_offset</tt>” field. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>get</a> glyphPositionT #yOffset
--   </pre>
getGlyphPositionTYOffset :: MonadIO m => GlyphPositionT -> m Int32

-- | Set the value of the “<tt>y_offset</tt>” field. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>set</a> glyphPositionT [ #yOffset <a>:=</a> value ]
--   </pre>
setGlyphPositionTYOffset :: MonadIO m => GlyphPositionT -> Int32 -> m ()
instance (tag GHC.Types.~ 'Data.GI.Base.Attributes.AttrSet) => Data.GI.Base.Constructible.Constructible GI.HarfBuzz.Structs.GlyphPositionT.GlyphPositionT tag
instance GHC.Classes.Eq GI.HarfBuzz.Structs.GlyphPositionT.GlyphPositionT
instance Data.GI.Base.BasicTypes.GBoxed GI.HarfBuzz.Structs.GlyphPositionT.GlyphPositionT
instance Data.GI.Base.Overloading.HasParentTypes GI.HarfBuzz.Structs.GlyphPositionT.GlyphPositionT
instance Data.GI.Base.GValue.IsGValue (GHC.Internal.Maybe.Maybe GI.HarfBuzz.Structs.GlyphPositionT.GlyphPositionT)
instance Data.GI.Base.BasicTypes.ManagedPtrNewtype GI.HarfBuzz.Structs.GlyphPositionT.GlyphPositionT
instance Data.GI.Base.BasicTypes.TypedObject GI.HarfBuzz.Structs.GlyphPositionT.GlyphPositionT


-- | Data type for languages. Each <a>LanguageT</a> corresponds to a BCP 47
--   language tag.
module GI.HarfBuzz.Structs.LanguageT

-- | Memory-managed wrapper type.
newtype LanguageT
LanguageT :: ManagedPtr LanguageT -> LanguageT
instance Data.GI.Base.BasicTypes.BoxedPtr GI.HarfBuzz.Structs.LanguageT.LanguageT
instance GHC.Classes.Eq GI.HarfBuzz.Structs.LanguageT.LanguageT
instance Data.GI.Base.BasicTypes.ManagedPtrNewtype GI.HarfBuzz.Structs.LanguageT.LanguageT


-- | Data type for holding integer-to-integer hash maps.
module GI.HarfBuzz.Structs.MapT

-- | Memory-managed wrapper type.
newtype MapT
MapT :: ManagedPtr MapT -> MapT
instance GHC.Classes.Eq GI.HarfBuzz.Structs.MapT.MapT
instance Data.GI.Base.BasicTypes.GBoxed GI.HarfBuzz.Structs.MapT.MapT
instance Data.GI.Base.Overloading.HasParentTypes GI.HarfBuzz.Structs.MapT.MapT
instance Data.GI.Base.GValue.IsGValue (GHC.Internal.Maybe.Maybe GI.HarfBuzz.Structs.MapT.MapT)
instance Data.GI.Base.BasicTypes.ManagedPtrNewtype GI.HarfBuzz.Structs.MapT.MapT
instance Data.GI.Base.BasicTypes.TypedObject GI.HarfBuzz.Structs.MapT.MapT


-- | Pairs of glyph and color index.
--   
--   A color index of 0xFFFF does not refer to a palette color, but
--   indicates that the foreground color should be used.
--   
--   <i>Since: 2.1.0</i>
module GI.HarfBuzz.Structs.OtColorLayerT

-- | Memory-managed wrapper type.
newtype OtColorLayerT
OtColorLayerT :: ManagedPtr OtColorLayerT -> OtColorLayerT

-- | Construct a <a>OtColorLayerT</a> struct initialized to zero.
newZeroOtColorLayerT :: MonadIO m => m OtColorLayerT

-- | Get the value of the “<tt>color_index</tt>” field. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>get</a> otColorLayerT #colorIndex
--   </pre>
getOtColorLayerTColorIndex :: MonadIO m => OtColorLayerT -> m Word32

-- | Set the value of the “<tt>color_index</tt>” field. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>set</a> otColorLayerT [ #colorIndex <a>:=</a> value ]
--   </pre>
setOtColorLayerTColorIndex :: MonadIO m => OtColorLayerT -> Word32 -> m ()

-- | Get the value of the “<tt>glyph</tt>” field. When <a>overloading</a>
--   is enabled, this is equivalent to
--   
--   <pre>
--   <a>get</a> otColorLayerT #glyph
--   </pre>
getOtColorLayerTGlyph :: MonadIO m => OtColorLayerT -> m Word32

-- | Set the value of the “<tt>glyph</tt>” field. When <a>overloading</a>
--   is enabled, this is equivalent to
--   
--   <pre>
--   <a>set</a> otColorLayerT [ #glyph <a>:=</a> value ]
--   </pre>
setOtColorLayerTGlyph :: MonadIO m => OtColorLayerT -> Word32 -> m ()
instance Data.GI.Base.BasicTypes.BoxedPtr GI.HarfBuzz.Structs.OtColorLayerT.OtColorLayerT
instance Data.GI.Base.BasicTypes.CallocPtr GI.HarfBuzz.Structs.OtColorLayerT.OtColorLayerT
instance (tag GHC.Types.~ 'Data.GI.Base.Attributes.AttrSet) => Data.GI.Base.Constructible.Constructible GI.HarfBuzz.Structs.OtColorLayerT.OtColorLayerT tag
instance GHC.Classes.Eq GI.HarfBuzz.Structs.OtColorLayerT.OtColorLayerT
instance Data.GI.Base.BasicTypes.ManagedPtrNewtype GI.HarfBuzz.Structs.OtColorLayerT.OtColorLayerT


-- | Data type to hold information for a "part" component of a math-variant
--   glyph. Large variants for stretchable math glyphs (such as
--   parentheses) can be constructed on the fly from parts.
--   
--   <i>Since: 1.3.3</i>
module GI.HarfBuzz.Structs.OtMathGlyphPartT

-- | Memory-managed wrapper type.
newtype OtMathGlyphPartT
OtMathGlyphPartT :: ManagedPtr OtMathGlyphPartT -> OtMathGlyphPartT

-- | Construct a <a>OtMathGlyphPartT</a> struct initialized to zero.
newZeroOtMathGlyphPartT :: MonadIO m => m OtMathGlyphPartT

-- | Get the value of the “<tt>end_connector_length</tt>” field. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>get</a> otMathGlyphPartT #endConnectorLength
--   </pre>
getOtMathGlyphPartTEndConnectorLength :: MonadIO m => OtMathGlyphPartT -> m Int32

-- | Set the value of the “<tt>end_connector_length</tt>” field. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>set</a> otMathGlyphPartT [ #endConnectorLength <a>:=</a> value ]
--   </pre>
setOtMathGlyphPartTEndConnectorLength :: MonadIO m => OtMathGlyphPartT -> Int32 -> m ()

-- | Get the value of the “<tt>flags</tt>” field. When <a>overloading</a>
--   is enabled, this is equivalent to
--   
--   <pre>
--   <a>get</a> otMathGlyphPartT #flags
--   </pre>
getOtMathGlyphPartTFlags :: MonadIO m => OtMathGlyphPartT -> m [OtMathGlyphPartFlagsT]

-- | Set the value of the “<tt>flags</tt>” field. When <a>overloading</a>
--   is enabled, this is equivalent to
--   
--   <pre>
--   <a>set</a> otMathGlyphPartT [ #flags <a>:=</a> value ]
--   </pre>
setOtMathGlyphPartTFlags :: MonadIO m => OtMathGlyphPartT -> [OtMathGlyphPartFlagsT] -> m ()

-- | Get the value of the “<tt>full_advance</tt>” field. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>get</a> otMathGlyphPartT #fullAdvance
--   </pre>
getOtMathGlyphPartTFullAdvance :: MonadIO m => OtMathGlyphPartT -> m Int32

-- | Set the value of the “<tt>full_advance</tt>” field. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>set</a> otMathGlyphPartT [ #fullAdvance <a>:=</a> value ]
--   </pre>
setOtMathGlyphPartTFullAdvance :: MonadIO m => OtMathGlyphPartT -> Int32 -> m ()

-- | Get the value of the “<tt>glyph</tt>” field. When <a>overloading</a>
--   is enabled, this is equivalent to
--   
--   <pre>
--   <a>get</a> otMathGlyphPartT #glyph
--   </pre>
getOtMathGlyphPartTGlyph :: MonadIO m => OtMathGlyphPartT -> m Word32

-- | Set the value of the “<tt>glyph</tt>” field. When <a>overloading</a>
--   is enabled, this is equivalent to
--   
--   <pre>
--   <a>set</a> otMathGlyphPartT [ #glyph <a>:=</a> value ]
--   </pre>
setOtMathGlyphPartTGlyph :: MonadIO m => OtMathGlyphPartT -> Word32 -> m ()

-- | Get the value of the “<tt>start_connector_length</tt>” field. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>get</a> otMathGlyphPartT #startConnectorLength
--   </pre>
getOtMathGlyphPartTStartConnectorLength :: MonadIO m => OtMathGlyphPartT -> m Int32

-- | Set the value of the “<tt>start_connector_length</tt>” field. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>set</a> otMathGlyphPartT [ #startConnectorLength <a>:=</a> value ]
--   </pre>
setOtMathGlyphPartTStartConnectorLength :: MonadIO m => OtMathGlyphPartT -> Int32 -> m ()
instance (tag GHC.Types.~ 'Data.GI.Base.Attributes.AttrSet) => Data.GI.Base.Constructible.Constructible GI.HarfBuzz.Structs.OtMathGlyphPartT.OtMathGlyphPartT tag
instance GHC.Classes.Eq GI.HarfBuzz.Structs.OtMathGlyphPartT.OtMathGlyphPartT
instance Data.GI.Base.BasicTypes.GBoxed GI.HarfBuzz.Structs.OtMathGlyphPartT.OtMathGlyphPartT
instance Data.GI.Base.Overloading.HasParentTypes GI.HarfBuzz.Structs.OtMathGlyphPartT.OtMathGlyphPartT
instance Data.GI.Base.GValue.IsGValue (GHC.Internal.Maybe.Maybe GI.HarfBuzz.Structs.OtMathGlyphPartT.OtMathGlyphPartT)
instance Data.GI.Base.BasicTypes.ManagedPtrNewtype GI.HarfBuzz.Structs.OtMathGlyphPartT.OtMathGlyphPartT
instance Data.GI.Base.BasicTypes.TypedObject GI.HarfBuzz.Structs.OtMathGlyphPartT.OtMathGlyphPartT


-- | Data type to hold math-variant information for a glyph.
--   
--   <i>Since: 1.3.3</i>
module GI.HarfBuzz.Structs.OtMathGlyphVariantT

-- | Memory-managed wrapper type.
newtype OtMathGlyphVariantT
OtMathGlyphVariantT :: ManagedPtr OtMathGlyphVariantT -> OtMathGlyphVariantT

-- | Construct a <a>OtMathGlyphVariantT</a> struct initialized to zero.
newZeroOtMathGlyphVariantT :: MonadIO m => m OtMathGlyphVariantT

-- | Get the value of the “<tt>advance</tt>” field. When <a>overloading</a>
--   is enabled, this is equivalent to
--   
--   <pre>
--   <a>get</a> otMathGlyphVariantT #advance
--   </pre>
getOtMathGlyphVariantTAdvance :: MonadIO m => OtMathGlyphVariantT -> m Int32

-- | Set the value of the “<tt>advance</tt>” field. When <a>overloading</a>
--   is enabled, this is equivalent to
--   
--   <pre>
--   <a>set</a> otMathGlyphVariantT [ #advance <a>:=</a> value ]
--   </pre>
setOtMathGlyphVariantTAdvance :: MonadIO m => OtMathGlyphVariantT -> Int32 -> m ()

-- | Get the value of the “<tt>glyph</tt>” field. When <a>overloading</a>
--   is enabled, this is equivalent to
--   
--   <pre>
--   <a>get</a> otMathGlyphVariantT #glyph
--   </pre>
getOtMathGlyphVariantTGlyph :: MonadIO m => OtMathGlyphVariantT -> m Word32

-- | Set the value of the “<tt>glyph</tt>” field. When <a>overloading</a>
--   is enabled, this is equivalent to
--   
--   <pre>
--   <a>set</a> otMathGlyphVariantT [ #glyph <a>:=</a> value ]
--   </pre>
setOtMathGlyphVariantTGlyph :: MonadIO m => OtMathGlyphVariantT -> Word32 -> m ()
instance (tag GHC.Types.~ 'Data.GI.Base.Attributes.AttrSet) => Data.GI.Base.Constructible.Constructible GI.HarfBuzz.Structs.OtMathGlyphVariantT.OtMathGlyphVariantT tag
instance GHC.Classes.Eq GI.HarfBuzz.Structs.OtMathGlyphVariantT.OtMathGlyphVariantT
instance Data.GI.Base.BasicTypes.GBoxed GI.HarfBuzz.Structs.OtMathGlyphVariantT.OtMathGlyphVariantT
instance Data.GI.Base.Overloading.HasParentTypes GI.HarfBuzz.Structs.OtMathGlyphVariantT.OtMathGlyphVariantT
instance Data.GI.Base.GValue.IsGValue (GHC.Internal.Maybe.Maybe GI.HarfBuzz.Structs.OtMathGlyphVariantT.OtMathGlyphVariantT)
instance Data.GI.Base.BasicTypes.ManagedPtrNewtype GI.HarfBuzz.Structs.OtMathGlyphVariantT.OtMathGlyphVariantT
instance Data.GI.Base.BasicTypes.TypedObject GI.HarfBuzz.Structs.OtMathGlyphVariantT.OtMathGlyphVariantT


-- | Data type to hold math kerning (cut-in) information for a glyph.
--   
--   <i>Since: 3.4.0</i>
module GI.HarfBuzz.Structs.OtMathKernEntryT

-- | Memory-managed wrapper type.
newtype OtMathKernEntryT
OtMathKernEntryT :: ManagedPtr OtMathKernEntryT -> OtMathKernEntryT

-- | Construct a <a>OtMathKernEntryT</a> struct initialized to zero.
newZeroOtMathKernEntryT :: MonadIO m => m OtMathKernEntryT

-- | Get the value of the “<tt>kern_value</tt>” field. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>get</a> otMathKernEntryT #kernValue
--   </pre>
getOtMathKernEntryTKernValue :: MonadIO m => OtMathKernEntryT -> m Int32

-- | Set the value of the “<tt>kern_value</tt>” field. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>set</a> otMathKernEntryT [ #kernValue <a>:=</a> value ]
--   </pre>
setOtMathKernEntryTKernValue :: MonadIO m => OtMathKernEntryT -> Int32 -> m ()

-- | Get the value of the “<tt>max_correction_height</tt>” field. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>get</a> otMathKernEntryT #maxCorrectionHeight
--   </pre>
getOtMathKernEntryTMaxCorrectionHeight :: MonadIO m => OtMathKernEntryT -> m Int32

-- | Set the value of the “<tt>max_correction_height</tt>” field. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>set</a> otMathKernEntryT [ #maxCorrectionHeight <a>:=</a> value ]
--   </pre>
setOtMathKernEntryTMaxCorrectionHeight :: MonadIO m => OtMathKernEntryT -> Int32 -> m ()
instance Data.GI.Base.BasicTypes.BoxedPtr GI.HarfBuzz.Structs.OtMathKernEntryT.OtMathKernEntryT
instance Data.GI.Base.BasicTypes.CallocPtr GI.HarfBuzz.Structs.OtMathKernEntryT.OtMathKernEntryT
instance (tag GHC.Types.~ 'Data.GI.Base.Attributes.AttrSet) => Data.GI.Base.Constructible.Constructible GI.HarfBuzz.Structs.OtMathKernEntryT.OtMathKernEntryT tag
instance GHC.Classes.Eq GI.HarfBuzz.Structs.OtMathKernEntryT.OtMathKernEntryT
instance Data.GI.Base.BasicTypes.ManagedPtrNewtype GI.HarfBuzz.Structs.OtMathKernEntryT.OtMathKernEntryT


-- | Structure representing a name ID in a particular language.
--   
--   <i>Since: 2.1.0</i>
module GI.HarfBuzz.Structs.OtNameEntryT

-- | Memory-managed wrapper type.
newtype OtNameEntryT
OtNameEntryT :: ManagedPtr OtNameEntryT -> OtNameEntryT

-- | Construct a <a>OtNameEntryT</a> struct initialized to zero.
newZeroOtNameEntryT :: MonadIO m => m OtNameEntryT

-- | Get the value of the “<tt>language</tt>” field. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>get</a> otNameEntryT #language
--   </pre>
getOtNameEntryTLanguage :: MonadIO m => OtNameEntryT -> m LanguageT

-- | Get the value of the “<tt>name_id</tt>” field. When <a>overloading</a>
--   is enabled, this is equivalent to
--   
--   <pre>
--   <a>get</a> otNameEntryT #nameId
--   </pre>
getOtNameEntryTNameId :: MonadIO m => OtNameEntryT -> m Word32

-- | Set the value of the “<tt>name_id</tt>” field. When <a>overloading</a>
--   is enabled, this is equivalent to
--   
--   <pre>
--   <a>set</a> otNameEntryT [ #nameId <a>:=</a> value ]
--   </pre>
setOtNameEntryTNameId :: MonadIO m => OtNameEntryT -> Word32 -> m ()
instance Data.GI.Base.BasicTypes.BoxedPtr GI.HarfBuzz.Structs.OtNameEntryT.OtNameEntryT
instance Data.GI.Base.BasicTypes.CallocPtr GI.HarfBuzz.Structs.OtNameEntryT.OtNameEntryT
instance (tag GHC.Types.~ 'Data.GI.Base.Attributes.AttrSet) => Data.GI.Base.Constructible.Constructible GI.HarfBuzz.Structs.OtNameEntryT.OtNameEntryT tag
instance GHC.Classes.Eq GI.HarfBuzz.Structs.OtNameEntryT.OtNameEntryT
instance Data.GI.Base.BasicTypes.ManagedPtrNewtype GI.HarfBuzz.Structs.OtNameEntryT.OtNameEntryT


-- | Data type for holding variation-axis values.
--   
--   The minimum, default, and maximum values are in un-normalized, user
--   scales.
--   
--   &lt;note&gt;Note: at present, the only flag defined for
--   <i><tt>flags</tt></i> is
--   <tt><i>HB_OT_VAR_AXIS_FLAG_HIDDEN</i></tt>.&lt;/note&gt;
--   
--   <i>Since: 2.2.0</i>
module GI.HarfBuzz.Structs.OtVarAxisInfoT

-- | Memory-managed wrapper type.
newtype OtVarAxisInfoT
OtVarAxisInfoT :: ManagedPtr OtVarAxisInfoT -> OtVarAxisInfoT

-- | Construct a <a>OtVarAxisInfoT</a> struct initialized to zero.
newZeroOtVarAxisInfoT :: MonadIO m => m OtVarAxisInfoT

-- | Get the value of the “<tt>axis_index</tt>” field. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>get</a> otVarAxisInfoT #axisIndex
--   </pre>
getOtVarAxisInfoTAxisIndex :: MonadIO m => OtVarAxisInfoT -> m Word32

-- | Set the value of the “<tt>axis_index</tt>” field. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>set</a> otVarAxisInfoT [ #axisIndex <a>:=</a> value ]
--   </pre>
setOtVarAxisInfoTAxisIndex :: MonadIO m => OtVarAxisInfoT -> Word32 -> m ()

-- | Get the value of the “<tt>default_value</tt>” field. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>get</a> otVarAxisInfoT #defaultValue
--   </pre>
getOtVarAxisInfoTDefaultValue :: MonadIO m => OtVarAxisInfoT -> m Float

-- | Set the value of the “<tt>default_value</tt>” field. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>set</a> otVarAxisInfoT [ #defaultValue <a>:=</a> value ]
--   </pre>
setOtVarAxisInfoTDefaultValue :: MonadIO m => OtVarAxisInfoT -> Float -> m ()

-- | Get the value of the “<tt>flags</tt>” field. When <a>overloading</a>
--   is enabled, this is equivalent to
--   
--   <pre>
--   <a>get</a> otVarAxisInfoT #flags
--   </pre>
getOtVarAxisInfoTFlags :: MonadIO m => OtVarAxisInfoT -> m [OtVarAxisFlagsT]

-- | Set the value of the “<tt>flags</tt>” field. When <a>overloading</a>
--   is enabled, this is equivalent to
--   
--   <pre>
--   <a>set</a> otVarAxisInfoT [ #flags <a>:=</a> value ]
--   </pre>
setOtVarAxisInfoTFlags :: MonadIO m => OtVarAxisInfoT -> [OtVarAxisFlagsT] -> m ()

-- | Get the value of the “<tt>max_value</tt>” field. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>get</a> otVarAxisInfoT #maxValue
--   </pre>
getOtVarAxisInfoTMaxValue :: MonadIO m => OtVarAxisInfoT -> m Float

-- | Set the value of the “<tt>max_value</tt>” field. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>set</a> otVarAxisInfoT [ #maxValue <a>:=</a> value ]
--   </pre>
setOtVarAxisInfoTMaxValue :: MonadIO m => OtVarAxisInfoT -> Float -> m ()

-- | Get the value of the “<tt>min_value</tt>” field. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>get</a> otVarAxisInfoT #minValue
--   </pre>
getOtVarAxisInfoTMinValue :: MonadIO m => OtVarAxisInfoT -> m Float

-- | Set the value of the “<tt>min_value</tt>” field. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>set</a> otVarAxisInfoT [ #minValue <a>:=</a> value ]
--   </pre>
setOtVarAxisInfoTMinValue :: MonadIO m => OtVarAxisInfoT -> Float -> m ()

-- | Get the value of the “<tt>name_id</tt>” field. When <a>overloading</a>
--   is enabled, this is equivalent to
--   
--   <pre>
--   <a>get</a> otVarAxisInfoT #nameId
--   </pre>
getOtVarAxisInfoTNameId :: MonadIO m => OtVarAxisInfoT -> m Word32

-- | Set the value of the “<tt>name_id</tt>” field. When <a>overloading</a>
--   is enabled, this is equivalent to
--   
--   <pre>
--   <a>set</a> otVarAxisInfoT [ #nameId <a>:=</a> value ]
--   </pre>
setOtVarAxisInfoTNameId :: MonadIO m => OtVarAxisInfoT -> Word32 -> m ()

-- | Get the value of the “<tt>tag</tt>” field. When <a>overloading</a> is
--   enabled, this is equivalent to
--   
--   <pre>
--   <a>get</a> otVarAxisInfoT #tag
--   </pre>
getOtVarAxisInfoTTag :: MonadIO m => OtVarAxisInfoT -> m Word32

-- | Set the value of the “<tt>tag</tt>” field. When <a>overloading</a> is
--   enabled, this is equivalent to
--   
--   <pre>
--   <a>set</a> otVarAxisInfoT [ #tag <a>:=</a> value ]
--   </pre>
setOtVarAxisInfoTTag :: MonadIO m => OtVarAxisInfoT -> Word32 -> m ()
instance (tag GHC.Types.~ 'Data.GI.Base.Attributes.AttrSet) => Data.GI.Base.Constructible.Constructible GI.HarfBuzz.Structs.OtVarAxisInfoT.OtVarAxisInfoT tag
instance GHC.Classes.Eq GI.HarfBuzz.Structs.OtVarAxisInfoT.OtVarAxisInfoT
instance Data.GI.Base.BasicTypes.GBoxed GI.HarfBuzz.Structs.OtVarAxisInfoT.OtVarAxisInfoT
instance Data.GI.Base.Overloading.HasParentTypes GI.HarfBuzz.Structs.OtVarAxisInfoT.OtVarAxisInfoT
instance Data.GI.Base.GValue.IsGValue (GHC.Internal.Maybe.Maybe GI.HarfBuzz.Structs.OtVarAxisInfoT.OtVarAxisInfoT)
instance Data.GI.Base.BasicTypes.ManagedPtrNewtype GI.HarfBuzz.Structs.OtVarAxisInfoT.OtVarAxisInfoT
instance Data.GI.Base.BasicTypes.TypedObject GI.HarfBuzz.Structs.OtVarAxisInfoT.OtVarAxisInfoT


-- | Use <a>OtVarAxisInfoT</a> instead.
--   
--   <i>Since: 1.4.2</i>
module GI.HarfBuzz.Structs.OtVarAxisT

-- | Memory-managed wrapper type.
newtype OtVarAxisT
OtVarAxisT :: ManagedPtr OtVarAxisT -> OtVarAxisT

-- | Construct a <a>OtVarAxisT</a> struct initialized to zero.
newZeroOtVarAxisT :: MonadIO m => m OtVarAxisT

-- | Get the value of the “<tt>default_value</tt>” field. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>get</a> otVarAxisT #defaultValue
--   </pre>
getOtVarAxisTDefaultValue :: MonadIO m => OtVarAxisT -> m Float

-- | Set the value of the “<tt>default_value</tt>” field. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>set</a> otVarAxisT [ #defaultValue <a>:=</a> value ]
--   </pre>
setOtVarAxisTDefaultValue :: MonadIO m => OtVarAxisT -> Float -> m ()

-- | Get the value of the “<tt>max_value</tt>” field. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>get</a> otVarAxisT #maxValue
--   </pre>
getOtVarAxisTMaxValue :: MonadIO m => OtVarAxisT -> m Float

-- | Set the value of the “<tt>max_value</tt>” field. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>set</a> otVarAxisT [ #maxValue <a>:=</a> value ]
--   </pre>
setOtVarAxisTMaxValue :: MonadIO m => OtVarAxisT -> Float -> m ()

-- | Get the value of the “<tt>min_value</tt>” field. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>get</a> otVarAxisT #minValue
--   </pre>
getOtVarAxisTMinValue :: MonadIO m => OtVarAxisT -> m Float

-- | Set the value of the “<tt>min_value</tt>” field. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>set</a> otVarAxisT [ #minValue <a>:=</a> value ]
--   </pre>
setOtVarAxisTMinValue :: MonadIO m => OtVarAxisT -> Float -> m ()

-- | Get the value of the “<tt>name_id</tt>” field. When <a>overloading</a>
--   is enabled, this is equivalent to
--   
--   <pre>
--   <a>get</a> otVarAxisT #nameId
--   </pre>
getOtVarAxisTNameId :: MonadIO m => OtVarAxisT -> m Word32

-- | Set the value of the “<tt>name_id</tt>” field. When <a>overloading</a>
--   is enabled, this is equivalent to
--   
--   <pre>
--   <a>set</a> otVarAxisT [ #nameId <a>:=</a> value ]
--   </pre>
setOtVarAxisTNameId :: MonadIO m => OtVarAxisT -> Word32 -> m ()

-- | Get the value of the “<tt>tag</tt>” field. When <a>overloading</a> is
--   enabled, this is equivalent to
--   
--   <pre>
--   <a>get</a> otVarAxisT #tag
--   </pre>
getOtVarAxisTTag :: MonadIO m => OtVarAxisT -> m Word32

-- | Set the value of the “<tt>tag</tt>” field. When <a>overloading</a> is
--   enabled, this is equivalent to
--   
--   <pre>
--   <a>set</a> otVarAxisT [ #tag <a>:=</a> value ]
--   </pre>
setOtVarAxisTTag :: MonadIO m => OtVarAxisT -> Word32 -> m ()
instance Data.GI.Base.BasicTypes.BoxedPtr GI.HarfBuzz.Structs.OtVarAxisT.OtVarAxisT
instance Data.GI.Base.BasicTypes.CallocPtr GI.HarfBuzz.Structs.OtVarAxisT.OtVarAxisT
instance (tag GHC.Types.~ 'Data.GI.Base.Attributes.AttrSet) => Data.GI.Base.Constructible.Constructible GI.HarfBuzz.Structs.OtVarAxisT.OtVarAxisT tag
instance GHC.Classes.Eq GI.HarfBuzz.Structs.OtVarAxisT.OtVarAxisT
instance Data.GI.Base.BasicTypes.ManagedPtrNewtype GI.HarfBuzz.Structs.OtVarAxisT.OtVarAxisT


-- | Glyph paint callbacks.
--   
--   The callbacks assume that the caller maintains a stack of current
--   transforms, clips and intermediate surfaces, as evidenced by the pairs
--   of push/pop callbacks. The push/pop calls will be properly nested, so
--   it is fine to store the different kinds of object on a single stack.
--   
--   Not all callbacks are required for all kinds of glyphs. For rendering
--   COLRv0 or non-color outline glyphs, the gradient callbacks are not
--   needed, and the composite callback only needs to handle simple alpha
--   compositing (<tt><i>HB_PAINT_COMPOSITE_MODE_SRC_OVER</i></tt>).
--   
--   The paint-image callback is only needed for glyphs with image blobs in
--   the CBDT, sbix or SVG tables.
--   
--   The custom-palette-color callback is only necessary if you want to
--   override colors from the font palette with custom colors.
--   
--   <i>Since: 7.0.0</i>
module GI.HarfBuzz.Structs.PaintFuncsT

-- | Memory-managed wrapper type.
newtype PaintFuncsT
PaintFuncsT :: ManagedPtr PaintFuncsT -> PaintFuncsT
instance GHC.Classes.Eq GI.HarfBuzz.Structs.PaintFuncsT.PaintFuncsT
instance Data.GI.Base.BasicTypes.GBoxed GI.HarfBuzz.Structs.PaintFuncsT.PaintFuncsT
instance Data.GI.Base.Overloading.HasParentTypes GI.HarfBuzz.Structs.PaintFuncsT.PaintFuncsT
instance Data.GI.Base.GValue.IsGValue (GHC.Internal.Maybe.Maybe GI.HarfBuzz.Structs.PaintFuncsT.PaintFuncsT)
instance Data.GI.Base.BasicTypes.ManagedPtrNewtype GI.HarfBuzz.Structs.PaintFuncsT.PaintFuncsT
instance Data.GI.Base.BasicTypes.TypedObject GI.HarfBuzz.Structs.PaintFuncsT.PaintFuncsT


-- | The structure that holds various text properties of an <a>BufferT</a>.
--   Can be set and retrieved using <a>bufferSetSegmentProperties</a> and
--   <a>bufferGetSegmentProperties</a>, respectively.
module GI.HarfBuzz.Structs.SegmentPropertiesT

-- | Memory-managed wrapper type.
newtype SegmentPropertiesT
SegmentPropertiesT :: ManagedPtr SegmentPropertiesT -> SegmentPropertiesT

-- | Construct a <a>SegmentPropertiesT</a> struct initialized to zero.
newZeroSegmentPropertiesT :: MonadIO m => m SegmentPropertiesT

-- | Get the value of the “<tt>direction</tt>” field. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>get</a> segmentPropertiesT #direction
--   </pre>
getSegmentPropertiesTDirection :: MonadIO m => SegmentPropertiesT -> m DirectionT

-- | Set the value of the “<tt>direction</tt>” field. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>set</a> segmentPropertiesT [ #direction <a>:=</a> value ]
--   </pre>
setSegmentPropertiesTDirection :: MonadIO m => SegmentPropertiesT -> DirectionT -> m ()

-- | Get the value of the “<tt>language</tt>” field. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>get</a> segmentPropertiesT #language
--   </pre>
getSegmentPropertiesTLanguage :: MonadIO m => SegmentPropertiesT -> m LanguageT

-- | Get the value of the “<tt>script</tt>” field. When <a>overloading</a>
--   is enabled, this is equivalent to
--   
--   <pre>
--   <a>get</a> segmentPropertiesT #script
--   </pre>
getSegmentPropertiesTScript :: MonadIO m => SegmentPropertiesT -> m ScriptT

-- | Set the value of the “<tt>script</tt>” field. When <a>overloading</a>
--   is enabled, this is equivalent to
--   
--   <pre>
--   <a>set</a> segmentPropertiesT [ #script <a>:=</a> value ]
--   </pre>
setSegmentPropertiesTScript :: MonadIO m => SegmentPropertiesT -> ScriptT -> m ()
instance (tag GHC.Types.~ 'Data.GI.Base.Attributes.AttrSet) => Data.GI.Base.Constructible.Constructible GI.HarfBuzz.Structs.SegmentPropertiesT.SegmentPropertiesT tag
instance GHC.Classes.Eq GI.HarfBuzz.Structs.SegmentPropertiesT.SegmentPropertiesT
instance Data.GI.Base.BasicTypes.GBoxed GI.HarfBuzz.Structs.SegmentPropertiesT.SegmentPropertiesT
instance Data.GI.Base.Overloading.HasParentTypes GI.HarfBuzz.Structs.SegmentPropertiesT.SegmentPropertiesT
instance Data.GI.Base.GValue.IsGValue (GHC.Internal.Maybe.Maybe GI.HarfBuzz.Structs.SegmentPropertiesT.SegmentPropertiesT)
instance Data.GI.Base.BasicTypes.ManagedPtrNewtype GI.HarfBuzz.Structs.SegmentPropertiesT.SegmentPropertiesT
instance Data.GI.Base.BasicTypes.TypedObject GI.HarfBuzz.Structs.SegmentPropertiesT.SegmentPropertiesT


-- | Data type for holding a set of integers. <a>SetT</a>'s are used to
--   gather and contain glyph IDs, Unicode code points, and various other
--   collections of discrete values.
module GI.HarfBuzz.Structs.SetT

-- | Memory-managed wrapper type.
newtype SetT
SetT :: ManagedPtr SetT -> SetT
instance GHC.Classes.Eq GI.HarfBuzz.Structs.SetT.SetT
instance Data.GI.Base.BasicTypes.GBoxed GI.HarfBuzz.Structs.SetT.SetT
instance Data.GI.Base.Overloading.HasParentTypes GI.HarfBuzz.Structs.SetT.SetT
instance Data.GI.Base.GValue.IsGValue (GHC.Internal.Maybe.Maybe GI.HarfBuzz.Structs.SetT.SetT)
instance Data.GI.Base.BasicTypes.ManagedPtrNewtype GI.HarfBuzz.Structs.SetT.SetT
instance Data.GI.Base.BasicTypes.TypedObject GI.HarfBuzz.Structs.SetT.SetT


-- | Data type for holding a shaping plan.
--   
--   Shape plans contain information about how HarfBuzz will shape a
--   particular text segment, based on the segment's properties and the
--   capabilities in the font face in use.
--   
--   Shape plans can be queried about how shaping will perform, given a set
--   of specific input parameters (script, language, direction, features,
--   etc.).
module GI.HarfBuzz.Structs.ShapePlanT

-- | Memory-managed wrapper type.
newtype ShapePlanT
ShapePlanT :: ManagedPtr ShapePlanT -> ShapePlanT
instance GHC.Classes.Eq GI.HarfBuzz.Structs.ShapePlanT.ShapePlanT
instance Data.GI.Base.BasicTypes.GBoxed GI.HarfBuzz.Structs.ShapePlanT.ShapePlanT
instance Data.GI.Base.Overloading.HasParentTypes GI.HarfBuzz.Structs.ShapePlanT.ShapePlanT
instance Data.GI.Base.GValue.IsGValue (GHC.Internal.Maybe.Maybe GI.HarfBuzz.Structs.ShapePlanT.ShapePlanT)
instance Data.GI.Base.BasicTypes.ManagedPtrNewtype GI.HarfBuzz.Structs.ShapePlanT.ShapePlanT
instance Data.GI.Base.BasicTypes.TypedObject GI.HarfBuzz.Structs.ShapePlanT.ShapePlanT


-- | Data type containing a set of virtual methods used for accessing
--   various Unicode character properties.
--   
--   HarfBuzz provides a default function for each of the methods in
--   <a>UnicodeFuncsT</a>. Client programs can implement their own
--   replacements for the individual Unicode functions, as needed, and
--   replace the default by calling the setter for a method.
module GI.HarfBuzz.Structs.UnicodeFuncsT

-- | Memory-managed wrapper type.
newtype UnicodeFuncsT
UnicodeFuncsT :: ManagedPtr UnicodeFuncsT -> UnicodeFuncsT
instance GHC.Classes.Eq GI.HarfBuzz.Structs.UnicodeFuncsT.UnicodeFuncsT
instance Data.GI.Base.BasicTypes.GBoxed GI.HarfBuzz.Structs.UnicodeFuncsT.UnicodeFuncsT
instance Data.GI.Base.Overloading.HasParentTypes GI.HarfBuzz.Structs.UnicodeFuncsT.UnicodeFuncsT
instance Data.GI.Base.GValue.IsGValue (GHC.Internal.Maybe.Maybe GI.HarfBuzz.Structs.UnicodeFuncsT.UnicodeFuncsT)
instance Data.GI.Base.BasicTypes.ManagedPtrNewtype GI.HarfBuzz.Structs.UnicodeFuncsT.UnicodeFuncsT
instance Data.GI.Base.BasicTypes.TypedObject GI.HarfBuzz.Structs.UnicodeFuncsT.UnicodeFuncsT


module GI.HarfBuzz.Callbacks

-- | A callback method for <a>BufferT</a>. The method gets called with the
--   <a>BufferT</a> it was set on, the <a>FontT</a> the buffer is shaped
--   with and a message describing what step of the shaping process will be
--   performed. Returning <tt>false</tt> from this method will skip this
--   shaping step and move to the next one.
--   
--   <i>Since: 1.1.3</i>
type BufferMessageFuncT = BufferT -> FontT -> Text -> IO Int32

-- | A callback method for <a>BufferT</a>. The method gets called with the
--   <a>BufferT</a> it was set on, the <a>FontT</a> the buffer is shaped
--   with and a message describing what step of the shaping process will be
--   performed. Returning <tt>false</tt> from this method will skip this
--   shaping step and move to the next one.
--   
--   <i>Since: 1.1.3</i>
type BufferMessageFuncT_WithClosures = BufferT -> FontT -> Text -> Ptr () -> IO Int32

-- | Type for the callback on the (unwrapped) C side.
type C_BufferMessageFuncT = Ptr BufferT -> Ptr FontT -> CString -> Ptr () -> IO Int32

-- | A simple wrapper that ignores the closure arguments.
drop_closures_BufferMessageFuncT :: BufferMessageFuncT -> BufferMessageFuncT_WithClosures

-- | Given a pointer to a foreign C function, wrap it into a function
--   callable from Haskell.
dynamic_BufferMessageFuncT :: (HasCallStack, MonadIO m) => FunPtr C_BufferMessageFuncT -> BufferT -> FontT -> Text -> Ptr () -> m Int32

-- | Wrap the callback into a <a>GClosure</a>.
genClosure_BufferMessageFuncT :: MonadIO m => BufferMessageFuncT -> m (GClosure C_BufferMessageFuncT)

-- | Generate a function pointer callable from C code, from a
--   <a>C_BufferMessageFuncT</a>.
mk_BufferMessageFuncT :: C_BufferMessageFuncT -> IO (FunPtr C_BufferMessageFuncT)

-- | A convenience synonym for <tt><a>Nothing</a> :: <a>Maybe</a>
--   <a>BufferMessageFuncT</a></tt>.
noBufferMessageFuncT :: Maybe BufferMessageFuncT

-- | A convenience synonym for <tt><a>Nothing</a> :: <a>Maybe</a>
--   <a>BufferMessageFuncT_WithClosures</a></tt>.
noBufferMessageFuncT_WithClosures :: Maybe BufferMessageFuncT_WithClosures

-- | Wrap a <a>BufferMessageFuncT</a> into a <a>C_BufferMessageFuncT</a>.
wrap_BufferMessageFuncT :: Maybe (Ptr (FunPtr C_BufferMessageFuncT)) -> BufferMessageFuncT_WithClosures -> C_BufferMessageFuncT

-- | Type for the callback on the (unwrapped) C side.
type C_ColorLineGetColorStopsFuncT = Ptr ColorLineT -> Ptr () -> Word32 -> Word32 -> Ptr ColorStopT -> Ptr () -> IO Word32

-- | A virtual method for the <a>ColorLineT</a> to fetch color stops.
--   
--   <i>Since: 7.0.0</i>
type ColorLineGetColorStopsFuncT = ColorLineT -> Ptr () -> Word32 -> [ColorStopT] -> IO (Word32, [ColorStopT])

-- | A virtual method for the <a>ColorLineT</a> to fetch color stops.
--   
--   <i>Since: 7.0.0</i>
type ColorLineGetColorStopsFuncT_WithClosures = ColorLineT -> Ptr () -> Word32 -> [ColorStopT] -> Ptr () -> IO (Word32, [ColorStopT])

-- | A simple wrapper that ignores the closure arguments.
drop_closures_ColorLineGetColorStopsFuncT :: ColorLineGetColorStopsFuncT -> ColorLineGetColorStopsFuncT_WithClosures

-- | Given a pointer to a foreign C function, wrap it into a function
--   callable from Haskell.
dynamic_ColorLineGetColorStopsFuncT :: (HasCallStack, MonadIO m) => FunPtr C_ColorLineGetColorStopsFuncT -> ColorLineT -> Ptr () -> Word32 -> [ColorStopT] -> Ptr () -> m (Word32, [ColorStopT])

-- | Wrap the callback into a <a>GClosure</a>.
genClosure_ColorLineGetColorStopsFuncT :: MonadIO m => ColorLineGetColorStopsFuncT -> m (GClosure C_ColorLineGetColorStopsFuncT)

-- | Generate a function pointer callable from C code, from a
--   <a>C_ColorLineGetColorStopsFuncT</a>.
mk_ColorLineGetColorStopsFuncT :: C_ColorLineGetColorStopsFuncT -> IO (FunPtr C_ColorLineGetColorStopsFuncT)

-- | A convenience synonym for <tt><a>Nothing</a> :: <a>Maybe</a>
--   <a>ColorLineGetColorStopsFuncT</a></tt>.
noColorLineGetColorStopsFuncT :: Maybe ColorLineGetColorStopsFuncT

-- | A convenience synonym for <tt><a>Nothing</a> :: <a>Maybe</a>
--   <a>ColorLineGetColorStopsFuncT_WithClosures</a></tt>.
noColorLineGetColorStopsFuncT_WithClosures :: Maybe ColorLineGetColorStopsFuncT_WithClosures

-- | Wrap a <a>ColorLineGetColorStopsFuncT</a> into a
--   <a>C_ColorLineGetColorStopsFuncT</a>.
wrap_ColorLineGetColorStopsFuncT :: Maybe (Ptr (FunPtr C_ColorLineGetColorStopsFuncT)) -> ColorLineGetColorStopsFuncT_WithClosures -> C_ColorLineGetColorStopsFuncT

-- | Type for the callback on the (unwrapped) C side.
type C_ColorLineGetExtendFuncT = Ptr ColorLineT -> Ptr () -> Ptr () -> IO CUInt

-- | A virtual method for the <i><tt>hbColorLineT</tt></i> to fetches the
--   extend mode.
--   
--   <i>Since: 7.0.0</i>
type ColorLineGetExtendFuncT = ColorLineT -> Ptr () -> IO PaintExtendT

-- | A virtual method for the <i><tt>hbColorLineT</tt></i> to fetches the
--   extend mode.
--   
--   <i>Since: 7.0.0</i>
type ColorLineGetExtendFuncT_WithClosures = ColorLineT -> Ptr () -> Ptr () -> IO PaintExtendT

-- | A simple wrapper that ignores the closure arguments.
drop_closures_ColorLineGetExtendFuncT :: ColorLineGetExtendFuncT -> ColorLineGetExtendFuncT_WithClosures

-- | Given a pointer to a foreign C function, wrap it into a function
--   callable from Haskell.
dynamic_ColorLineGetExtendFuncT :: (HasCallStack, MonadIO m) => FunPtr C_ColorLineGetExtendFuncT -> ColorLineT -> Ptr () -> Ptr () -> m PaintExtendT

-- | Wrap the callback into a <a>GClosure</a>.
genClosure_ColorLineGetExtendFuncT :: MonadIO m => ColorLineGetExtendFuncT -> m (GClosure C_ColorLineGetExtendFuncT)

-- | Generate a function pointer callable from C code, from a
--   <a>C_ColorLineGetExtendFuncT</a>.
mk_ColorLineGetExtendFuncT :: C_ColorLineGetExtendFuncT -> IO (FunPtr C_ColorLineGetExtendFuncT)

-- | A convenience synonym for <tt><a>Nothing</a> :: <a>Maybe</a>
--   <a>ColorLineGetExtendFuncT</a></tt>.
noColorLineGetExtendFuncT :: Maybe ColorLineGetExtendFuncT

-- | A convenience synonym for <tt><a>Nothing</a> :: <a>Maybe</a>
--   <a>ColorLineGetExtendFuncT_WithClosures</a></tt>.
noColorLineGetExtendFuncT_WithClosures :: Maybe ColorLineGetExtendFuncT_WithClosures

-- | Wrap a <a>ColorLineGetExtendFuncT</a> into a
--   <a>C_ColorLineGetExtendFuncT</a>.
wrap_ColorLineGetExtendFuncT :: Maybe (Ptr (FunPtr C_ColorLineGetExtendFuncT)) -> ColorLineGetExtendFuncT_WithClosures -> C_ColorLineGetExtendFuncT

-- | Type for the callback on the (unwrapped) C side.
type C_DestroyFuncT = Ptr () -> IO ()

-- | A virtual method for destroy user-data callbacks.
type DestroyFuncT = IO ()

-- | A virtual method for destroy user-data callbacks.
type DestroyFuncT_WithClosures = Ptr () -> IO ()

-- | A simple wrapper that ignores the closure arguments.
drop_closures_DestroyFuncT :: DestroyFuncT -> DestroyFuncT_WithClosures

-- | Given a pointer to a foreign C function, wrap it into a function
--   callable from Haskell.
dynamic_DestroyFuncT :: (HasCallStack, MonadIO m) => FunPtr C_DestroyFuncT -> Ptr () -> m ()

-- | Wrap the callback into a <a>GClosure</a>.
genClosure_DestroyFuncT :: MonadIO m => DestroyFuncT -> m (GClosure C_DestroyFuncT)

-- | Generate a function pointer callable from C code, from a
--   <a>C_DestroyFuncT</a>.
mk_DestroyFuncT :: C_DestroyFuncT -> IO (FunPtr C_DestroyFuncT)

-- | A convenience synonym for <tt><a>Nothing</a> :: <a>Maybe</a>
--   <a>DestroyFuncT</a></tt>.
noDestroyFuncT :: Maybe DestroyFuncT

-- | A convenience synonym for <tt><a>Nothing</a> :: <a>Maybe</a>
--   <a>DestroyFuncT_WithClosures</a></tt>.
noDestroyFuncT_WithClosures :: Maybe DestroyFuncT_WithClosures

-- | Wrap a <a>DestroyFuncT</a> into a <a>C_DestroyFuncT</a>.
wrap_DestroyFuncT :: Maybe (Ptr (FunPtr C_DestroyFuncT)) -> DestroyFuncT_WithClosures -> C_DestroyFuncT

-- | Type for the callback on the (unwrapped) C side.
type C_DrawClosePathFuncT = Ptr DrawFuncsT -> Ptr () -> Ptr DrawStateT -> Ptr () -> IO ()

-- | A virtual method for the <a>DrawFuncsT</a> to perform a "close-path"
--   draw operation.
--   
--   <i>Since: 4.0.0</i>
type DrawClosePathFuncT = DrawFuncsT -> Ptr () -> DrawStateT -> IO ()

-- | A virtual method for the <a>DrawFuncsT</a> to perform a "close-path"
--   draw operation.
--   
--   <i>Since: 4.0.0</i>
type DrawClosePathFuncT_WithClosures = DrawFuncsT -> Ptr () -> DrawStateT -> Ptr () -> IO ()

-- | A simple wrapper that ignores the closure arguments.
drop_closures_DrawClosePathFuncT :: DrawClosePathFuncT -> DrawClosePathFuncT_WithClosures

-- | Given a pointer to a foreign C function, wrap it into a function
--   callable from Haskell.
dynamic_DrawClosePathFuncT :: (HasCallStack, MonadIO m) => FunPtr C_DrawClosePathFuncT -> DrawFuncsT -> Ptr () -> DrawStateT -> Ptr () -> m ()

-- | Wrap the callback into a <a>GClosure</a>.
genClosure_DrawClosePathFuncT :: MonadIO m => DrawClosePathFuncT -> m (GClosure C_DrawClosePathFuncT)

-- | Generate a function pointer callable from C code, from a
--   <a>C_DrawClosePathFuncT</a>.
mk_DrawClosePathFuncT :: C_DrawClosePathFuncT -> IO (FunPtr C_DrawClosePathFuncT)

-- | A convenience synonym for <tt><a>Nothing</a> :: <a>Maybe</a>
--   <a>DrawClosePathFuncT</a></tt>.
noDrawClosePathFuncT :: Maybe DrawClosePathFuncT

-- | A convenience synonym for <tt><a>Nothing</a> :: <a>Maybe</a>
--   <a>DrawClosePathFuncT_WithClosures</a></tt>.
noDrawClosePathFuncT_WithClosures :: Maybe DrawClosePathFuncT_WithClosures

-- | Wrap a <a>DrawClosePathFuncT</a> into a <a>C_DrawClosePathFuncT</a>.
wrap_DrawClosePathFuncT :: Maybe (Ptr (FunPtr C_DrawClosePathFuncT)) -> DrawClosePathFuncT_WithClosures -> C_DrawClosePathFuncT

-- | Type for the callback on the (unwrapped) C side.
type C_DrawCubicToFuncT = Ptr DrawFuncsT -> Ptr () -> Ptr DrawStateT -> CFloat -> CFloat -> CFloat -> CFloat -> CFloat -> CFloat -> Ptr () -> IO ()

-- | A virtual method for the <a>DrawFuncsT</a> to perform a "cubic-to"
--   draw operation.
--   
--   <i>Since: 4.0.0</i>
type DrawCubicToFuncT = DrawFuncsT -> Ptr () -> DrawStateT -> Float -> Float -> Float -> Float -> Float -> Float -> IO ()

-- | A virtual method for the <a>DrawFuncsT</a> to perform a "cubic-to"
--   draw operation.
--   
--   <i>Since: 4.0.0</i>
type DrawCubicToFuncT_WithClosures = DrawFuncsT -> Ptr () -> DrawStateT -> Float -> Float -> Float -> Float -> Float -> Float -> Ptr () -> IO ()

-- | A simple wrapper that ignores the closure arguments.
drop_closures_DrawCubicToFuncT :: DrawCubicToFuncT -> DrawCubicToFuncT_WithClosures

-- | Given a pointer to a foreign C function, wrap it into a function
--   callable from Haskell.
dynamic_DrawCubicToFuncT :: (HasCallStack, MonadIO m) => FunPtr C_DrawCubicToFuncT -> DrawFuncsT -> Ptr () -> DrawStateT -> Float -> Float -> Float -> Float -> Float -> Float -> Ptr () -> m ()

-- | Wrap the callback into a <a>GClosure</a>.
genClosure_DrawCubicToFuncT :: MonadIO m => DrawCubicToFuncT -> m (GClosure C_DrawCubicToFuncT)

-- | Generate a function pointer callable from C code, from a
--   <a>C_DrawCubicToFuncT</a>.
mk_DrawCubicToFuncT :: C_DrawCubicToFuncT -> IO (FunPtr C_DrawCubicToFuncT)

-- | A convenience synonym for <tt><a>Nothing</a> :: <a>Maybe</a>
--   <a>DrawCubicToFuncT</a></tt>.
noDrawCubicToFuncT :: Maybe DrawCubicToFuncT

-- | A convenience synonym for <tt><a>Nothing</a> :: <a>Maybe</a>
--   <a>DrawCubicToFuncT_WithClosures</a></tt>.
noDrawCubicToFuncT_WithClosures :: Maybe DrawCubicToFuncT_WithClosures

-- | Wrap a <a>DrawCubicToFuncT</a> into a <a>C_DrawCubicToFuncT</a>.
wrap_DrawCubicToFuncT :: Maybe (Ptr (FunPtr C_DrawCubicToFuncT)) -> DrawCubicToFuncT_WithClosures -> C_DrawCubicToFuncT

-- | Type for the callback on the (unwrapped) C side.
type C_DrawLineToFuncT = Ptr DrawFuncsT -> Ptr () -> Ptr DrawStateT -> CFloat -> CFloat -> Ptr () -> IO ()

-- | A virtual method for the <a>DrawFuncsT</a> to perform a "line-to" draw
--   operation.
--   
--   <i>Since: 4.0.0</i>
type DrawLineToFuncT = DrawFuncsT -> Ptr () -> DrawStateT -> Float -> Float -> IO ()

-- | A virtual method for the <a>DrawFuncsT</a> to perform a "line-to" draw
--   operation.
--   
--   <i>Since: 4.0.0</i>
type DrawLineToFuncT_WithClosures = DrawFuncsT -> Ptr () -> DrawStateT -> Float -> Float -> Ptr () -> IO ()

-- | A simple wrapper that ignores the closure arguments.
drop_closures_DrawLineToFuncT :: DrawLineToFuncT -> DrawLineToFuncT_WithClosures

-- | Given a pointer to a foreign C function, wrap it into a function
--   callable from Haskell.
dynamic_DrawLineToFuncT :: (HasCallStack, MonadIO m) => FunPtr C_DrawLineToFuncT -> DrawFuncsT -> Ptr () -> DrawStateT -> Float -> Float -> Ptr () -> m ()

-- | Wrap the callback into a <a>GClosure</a>.
genClosure_DrawLineToFuncT :: MonadIO m => DrawLineToFuncT -> m (GClosure C_DrawLineToFuncT)

-- | Generate a function pointer callable from C code, from a
--   <a>C_DrawLineToFuncT</a>.
mk_DrawLineToFuncT :: C_DrawLineToFuncT -> IO (FunPtr C_DrawLineToFuncT)

-- | A convenience synonym for <tt><a>Nothing</a> :: <a>Maybe</a>
--   <a>DrawLineToFuncT</a></tt>.
noDrawLineToFuncT :: Maybe DrawLineToFuncT

-- | A convenience synonym for <tt><a>Nothing</a> :: <a>Maybe</a>
--   <a>DrawLineToFuncT_WithClosures</a></tt>.
noDrawLineToFuncT_WithClosures :: Maybe DrawLineToFuncT_WithClosures

-- | Wrap a <a>DrawLineToFuncT</a> into a <a>C_DrawLineToFuncT</a>.
wrap_DrawLineToFuncT :: Maybe (Ptr (FunPtr C_DrawLineToFuncT)) -> DrawLineToFuncT_WithClosures -> C_DrawLineToFuncT

-- | Type for the callback on the (unwrapped) C side.
type C_DrawMoveToFuncT = Ptr DrawFuncsT -> Ptr () -> Ptr DrawStateT -> CFloat -> CFloat -> Ptr () -> IO ()

-- | A virtual method for the <a>DrawFuncsT</a> to perform a "move-to" draw
--   operation.
--   
--   <i>Since: 4.0.0</i>
type DrawMoveToFuncT = DrawFuncsT -> Ptr () -> DrawStateT -> Float -> Float -> IO ()

-- | A virtual method for the <a>DrawFuncsT</a> to perform a "move-to" draw
--   operation.
--   
--   <i>Since: 4.0.0</i>
type DrawMoveToFuncT_WithClosures = DrawFuncsT -> Ptr () -> DrawStateT -> Float -> Float -> Ptr () -> IO ()

-- | A simple wrapper that ignores the closure arguments.
drop_closures_DrawMoveToFuncT :: DrawMoveToFuncT -> DrawMoveToFuncT_WithClosures

-- | Given a pointer to a foreign C function, wrap it into a function
--   callable from Haskell.
dynamic_DrawMoveToFuncT :: (HasCallStack, MonadIO m) => FunPtr C_DrawMoveToFuncT -> DrawFuncsT -> Ptr () -> DrawStateT -> Float -> Float -> Ptr () -> m ()

-- | Wrap the callback into a <a>GClosure</a>.
genClosure_DrawMoveToFuncT :: MonadIO m => DrawMoveToFuncT -> m (GClosure C_DrawMoveToFuncT)

-- | Generate a function pointer callable from C code, from a
--   <a>C_DrawMoveToFuncT</a>.
mk_DrawMoveToFuncT :: C_DrawMoveToFuncT -> IO (FunPtr C_DrawMoveToFuncT)

-- | A convenience synonym for <tt><a>Nothing</a> :: <a>Maybe</a>
--   <a>DrawMoveToFuncT</a></tt>.
noDrawMoveToFuncT :: Maybe DrawMoveToFuncT

-- | A convenience synonym for <tt><a>Nothing</a> :: <a>Maybe</a>
--   <a>DrawMoveToFuncT_WithClosures</a></tt>.
noDrawMoveToFuncT_WithClosures :: Maybe DrawMoveToFuncT_WithClosures

-- | Wrap a <a>DrawMoveToFuncT</a> into a <a>C_DrawMoveToFuncT</a>.
wrap_DrawMoveToFuncT :: Maybe (Ptr (FunPtr C_DrawMoveToFuncT)) -> DrawMoveToFuncT_WithClosures -> C_DrawMoveToFuncT

-- | Type for the callback on the (unwrapped) C side.
type C_DrawQuadraticToFuncT = Ptr DrawFuncsT -> Ptr () -> Ptr DrawStateT -> CFloat -> CFloat -> CFloat -> CFloat -> Ptr () -> IO ()

-- | A virtual method for the <a>DrawFuncsT</a> to perform a "quadratic-to"
--   draw operation.
--   
--   <i>Since: 4.0.0</i>
type DrawQuadraticToFuncT = DrawFuncsT -> Ptr () -> DrawStateT -> Float -> Float -> Float -> Float -> IO ()

-- | A virtual method for the <a>DrawFuncsT</a> to perform a "quadratic-to"
--   draw operation.
--   
--   <i>Since: 4.0.0</i>
type DrawQuadraticToFuncT_WithClosures = DrawFuncsT -> Ptr () -> DrawStateT -> Float -> Float -> Float -> Float -> Ptr () -> IO ()

-- | A simple wrapper that ignores the closure arguments.
drop_closures_DrawQuadraticToFuncT :: DrawQuadraticToFuncT -> DrawQuadraticToFuncT_WithClosures

-- | Given a pointer to a foreign C function, wrap it into a function
--   callable from Haskell.
dynamic_DrawQuadraticToFuncT :: (HasCallStack, MonadIO m) => FunPtr C_DrawQuadraticToFuncT -> DrawFuncsT -> Ptr () -> DrawStateT -> Float -> Float -> Float -> Float -> Ptr () -> m ()

-- | Wrap the callback into a <a>GClosure</a>.
genClosure_DrawQuadraticToFuncT :: MonadIO m => DrawQuadraticToFuncT -> m (GClosure C_DrawQuadraticToFuncT)

-- | Generate a function pointer callable from C code, from a
--   <a>C_DrawQuadraticToFuncT</a>.
mk_DrawQuadraticToFuncT :: C_DrawQuadraticToFuncT -> IO (FunPtr C_DrawQuadraticToFuncT)

-- | A convenience synonym for <tt><a>Nothing</a> :: <a>Maybe</a>
--   <a>DrawQuadraticToFuncT</a></tt>.
noDrawQuadraticToFuncT :: Maybe DrawQuadraticToFuncT

-- | A convenience synonym for <tt><a>Nothing</a> :: <a>Maybe</a>
--   <a>DrawQuadraticToFuncT_WithClosures</a></tt>.
noDrawQuadraticToFuncT_WithClosures :: Maybe DrawQuadraticToFuncT_WithClosures

-- | Wrap a <a>DrawQuadraticToFuncT</a> into a
--   <a>C_DrawQuadraticToFuncT</a>.
wrap_DrawQuadraticToFuncT :: Maybe (Ptr (FunPtr C_DrawQuadraticToFuncT)) -> DrawQuadraticToFuncT_WithClosures -> C_DrawQuadraticToFuncT

-- | Type for the callback on the (unwrapped) C side.
type C_FontDrawGlyphFuncT = Ptr FontT -> Ptr () -> Word32 -> Ptr DrawFuncsT -> Ptr () -> Ptr () -> IO ()

-- | A virtual method for the <a>FontFuncsT</a> of an <a>FontT</a> object.
--   
--   <i>Since: 7.0.0</i>

-- | <i>Deprecated: (Since version 11.2.0)Use
--   hb_font_draw_glyph_func_or_fail_t instead.</i>
type FontDrawGlyphFuncT = FontT -> Ptr () -> Word32 -> DrawFuncsT -> Ptr () -> IO ()

-- | A virtual method for the <a>FontFuncsT</a> of an <a>FontT</a> object.
--   
--   <i>Since: 7.0.0</i>
type FontDrawGlyphFuncT_WithClosures = FontT -> Ptr () -> Word32 -> DrawFuncsT -> Ptr () -> Ptr () -> IO ()

-- | A simple wrapper that ignores the closure arguments.
drop_closures_FontDrawGlyphFuncT :: FontDrawGlyphFuncT -> FontDrawGlyphFuncT_WithClosures

-- | Given a pointer to a foreign C function, wrap it into a function
--   callable from Haskell.
dynamic_FontDrawGlyphFuncT :: (HasCallStack, MonadIO m) => FunPtr C_FontDrawGlyphFuncT -> FontT -> Ptr () -> Word32 -> DrawFuncsT -> Ptr () -> Ptr () -> m ()

-- | Wrap the callback into a <a>GClosure</a>.
genClosure_FontDrawGlyphFuncT :: MonadIO m => FontDrawGlyphFuncT -> m (GClosure C_FontDrawGlyphFuncT)

-- | Generate a function pointer callable from C code, from a
--   <a>C_FontDrawGlyphFuncT</a>.
mk_FontDrawGlyphFuncT :: C_FontDrawGlyphFuncT -> IO (FunPtr C_FontDrawGlyphFuncT)

-- | A convenience synonym for <tt><a>Nothing</a> :: <a>Maybe</a>
--   <a>FontDrawGlyphFuncT</a></tt>.
noFontDrawGlyphFuncT :: Maybe FontDrawGlyphFuncT

-- | A convenience synonym for <tt><a>Nothing</a> :: <a>Maybe</a>
--   <a>FontDrawGlyphFuncT_WithClosures</a></tt>.
noFontDrawGlyphFuncT_WithClosures :: Maybe FontDrawGlyphFuncT_WithClosures

-- | Wrap a <a>FontDrawGlyphFuncT</a> into a <a>C_FontDrawGlyphFuncT</a>.
wrap_FontDrawGlyphFuncT :: Maybe (Ptr (FunPtr C_FontDrawGlyphFuncT)) -> FontDrawGlyphFuncT_WithClosures -> C_FontDrawGlyphFuncT

-- | Type for the callback on the (unwrapped) C side.
type C_FontDrawGlyphOrFailFuncT = Ptr FontT -> Ptr () -> Word32 -> Ptr DrawFuncsT -> Ptr () -> Ptr () -> IO Int32

-- | A virtual method for the <a>FontFuncsT</a> of an <a>FontT</a> object.
--   
--   <i>Since: 11.2.0</i>
type FontDrawGlyphOrFailFuncT = FontT -> Ptr () -> Word32 -> DrawFuncsT -> Ptr () -> IO Int32

-- | A virtual method for the <a>FontFuncsT</a> of an <a>FontT</a> object.
--   
--   <i>Since: 11.2.0</i>
type FontDrawGlyphOrFailFuncT_WithClosures = FontT -> Ptr () -> Word32 -> DrawFuncsT -> Ptr () -> Ptr () -> IO Int32

-- | A simple wrapper that ignores the closure arguments.
drop_closures_FontDrawGlyphOrFailFuncT :: FontDrawGlyphOrFailFuncT -> FontDrawGlyphOrFailFuncT_WithClosures

-- | Given a pointer to a foreign C function, wrap it into a function
--   callable from Haskell.
dynamic_FontDrawGlyphOrFailFuncT :: (HasCallStack, MonadIO m) => FunPtr C_FontDrawGlyphOrFailFuncT -> FontT -> Ptr () -> Word32 -> DrawFuncsT -> Ptr () -> Ptr () -> m Int32

-- | Wrap the callback into a <a>GClosure</a>.
genClosure_FontDrawGlyphOrFailFuncT :: MonadIO m => FontDrawGlyphOrFailFuncT -> m (GClosure C_FontDrawGlyphOrFailFuncT)

-- | Generate a function pointer callable from C code, from a
--   <a>C_FontDrawGlyphOrFailFuncT</a>.
mk_FontDrawGlyphOrFailFuncT :: C_FontDrawGlyphOrFailFuncT -> IO (FunPtr C_FontDrawGlyphOrFailFuncT)

-- | A convenience synonym for <tt><a>Nothing</a> :: <a>Maybe</a>
--   <a>FontDrawGlyphOrFailFuncT</a></tt>.
noFontDrawGlyphOrFailFuncT :: Maybe FontDrawGlyphOrFailFuncT

-- | A convenience synonym for <tt><a>Nothing</a> :: <a>Maybe</a>
--   <a>FontDrawGlyphOrFailFuncT_WithClosures</a></tt>.
noFontDrawGlyphOrFailFuncT_WithClosures :: Maybe FontDrawGlyphOrFailFuncT_WithClosures

-- | Wrap a <a>FontDrawGlyphOrFailFuncT</a> into a
--   <a>C_FontDrawGlyphOrFailFuncT</a>.
wrap_FontDrawGlyphOrFailFuncT :: Maybe (Ptr (FunPtr C_FontDrawGlyphOrFailFuncT)) -> FontDrawGlyphOrFailFuncT_WithClosures -> C_FontDrawGlyphOrFailFuncT

-- | Type for the callback on the (unwrapped) C side.
type C_FontGetFontExtentsFuncT = Ptr FontT -> Ptr () -> Ptr FontExtentsT -> Ptr () -> IO Int32

-- | This method should retrieve the extents for a font.
type FontGetFontExtentsFuncT = FontT -> Ptr () -> IO (Int32, FontExtentsT)

-- | This method should retrieve the extents for a font.
type FontGetFontExtentsFuncT_WithClosures = FontT -> Ptr () -> Ptr () -> IO (Int32, FontExtentsT)

-- | A simple wrapper that ignores the closure arguments.
drop_closures_FontGetFontExtentsFuncT :: FontGetFontExtentsFuncT -> FontGetFontExtentsFuncT_WithClosures

-- | Given a pointer to a foreign C function, wrap it into a function
--   callable from Haskell.
dynamic_FontGetFontExtentsFuncT :: (HasCallStack, MonadIO m) => FunPtr C_FontGetFontExtentsFuncT -> FontT -> Ptr () -> Ptr () -> m (Int32, FontExtentsT)

-- | Wrap the callback into a <a>GClosure</a>.
genClosure_FontGetFontExtentsFuncT :: MonadIO m => FontGetFontExtentsFuncT -> m (GClosure C_FontGetFontExtentsFuncT)

-- | Generate a function pointer callable from C code, from a
--   <a>C_FontGetFontExtentsFuncT</a>.
mk_FontGetFontExtentsFuncT :: C_FontGetFontExtentsFuncT -> IO (FunPtr C_FontGetFontExtentsFuncT)

-- | A convenience synonym for <tt><a>Nothing</a> :: <a>Maybe</a>
--   <a>FontGetFontExtentsFuncT</a></tt>.
noFontGetFontExtentsFuncT :: Maybe FontGetFontExtentsFuncT

-- | A convenience synonym for <tt><a>Nothing</a> :: <a>Maybe</a>
--   <a>FontGetFontExtentsFuncT_WithClosures</a></tt>.
noFontGetFontExtentsFuncT_WithClosures :: Maybe FontGetFontExtentsFuncT_WithClosures

-- | Wrap a <a>FontGetFontExtentsFuncT</a> into a
--   <a>C_FontGetFontExtentsFuncT</a>.
wrap_FontGetFontExtentsFuncT :: Maybe (Ptr (FunPtr C_FontGetFontExtentsFuncT)) -> FontGetFontExtentsFuncT_WithClosures -> C_FontGetFontExtentsFuncT

-- | Type for the callback on the (unwrapped) C side.
type C_FontGetGlyphAdvanceFuncT = Ptr FontT -> Ptr () -> Word32 -> Ptr () -> IO Int32

-- | A virtual method for the <a>FontFuncsT</a> of an <a>FontT</a> object.
--   
--   This method should retrieve the advance for a specified glyph. The
--   method must return an <tt><i>hb_position_t</i></tt>.
type FontGetGlyphAdvanceFuncT = FontT -> Ptr () -> Word32 -> IO Int32

-- | A virtual method for the <a>FontFuncsT</a> of an <a>FontT</a> object.
--   
--   This method should retrieve the advance for a specified glyph. The
--   method must return an <tt><i>hb_position_t</i></tt>.
type FontGetGlyphAdvanceFuncT_WithClosures = FontT -> Ptr () -> Word32 -> Ptr () -> IO Int32

-- | A simple wrapper that ignores the closure arguments.
drop_closures_FontGetGlyphAdvanceFuncT :: FontGetGlyphAdvanceFuncT -> FontGetGlyphAdvanceFuncT_WithClosures

-- | Given a pointer to a foreign C function, wrap it into a function
--   callable from Haskell.
dynamic_FontGetGlyphAdvanceFuncT :: (HasCallStack, MonadIO m) => FunPtr C_FontGetGlyphAdvanceFuncT -> FontT -> Ptr () -> Word32 -> Ptr () -> m Int32

-- | Wrap the callback into a <a>GClosure</a>.
genClosure_FontGetGlyphAdvanceFuncT :: MonadIO m => FontGetGlyphAdvanceFuncT -> m (GClosure C_FontGetGlyphAdvanceFuncT)

-- | Generate a function pointer callable from C code, from a
--   <a>C_FontGetGlyphAdvanceFuncT</a>.
mk_FontGetGlyphAdvanceFuncT :: C_FontGetGlyphAdvanceFuncT -> IO (FunPtr C_FontGetGlyphAdvanceFuncT)

-- | A convenience synonym for <tt><a>Nothing</a> :: <a>Maybe</a>
--   <a>FontGetGlyphAdvanceFuncT</a></tt>.
noFontGetGlyphAdvanceFuncT :: Maybe FontGetGlyphAdvanceFuncT

-- | A convenience synonym for <tt><a>Nothing</a> :: <a>Maybe</a>
--   <a>FontGetGlyphAdvanceFuncT_WithClosures</a></tt>.
noFontGetGlyphAdvanceFuncT_WithClosures :: Maybe FontGetGlyphAdvanceFuncT_WithClosures

-- | Wrap a <a>FontGetGlyphAdvanceFuncT</a> into a
--   <a>C_FontGetGlyphAdvanceFuncT</a>.
wrap_FontGetGlyphAdvanceFuncT :: Maybe (Ptr (FunPtr C_FontGetGlyphAdvanceFuncT)) -> FontGetGlyphAdvanceFuncT_WithClosures -> C_FontGetGlyphAdvanceFuncT

-- | Type for the callback on the (unwrapped) C side.
type C_FontGetGlyphAdvancesFuncT = Ptr FontT -> Ptr () -> Word32 -> Word32 -> Word32 -> Ptr Int32 -> Word32 -> Ptr () -> IO ()

-- | A virtual method for the <a>FontFuncsT</a> of an <a>FontT</a> object.
--   
--   This method should retrieve the advances for a sequence of glyphs.
type FontGetGlyphAdvancesFuncT = FontT -> Ptr () -> Word32 -> Word32 -> Word32 -> Word32 -> IO Int32

-- | A virtual method for the <a>FontFuncsT</a> of an <a>FontT</a> object.
--   
--   This method should retrieve the advances for a sequence of glyphs.
type FontGetGlyphAdvancesFuncT_WithClosures = FontT -> Ptr () -> Word32 -> Word32 -> Word32 -> Word32 -> Ptr () -> IO Int32

-- | A simple wrapper that ignores the closure arguments.
drop_closures_FontGetGlyphAdvancesFuncT :: FontGetGlyphAdvancesFuncT -> FontGetGlyphAdvancesFuncT_WithClosures

-- | Given a pointer to a foreign C function, wrap it into a function
--   callable from Haskell.
dynamic_FontGetGlyphAdvancesFuncT :: (HasCallStack, MonadIO m) => FunPtr C_FontGetGlyphAdvancesFuncT -> FontT -> Ptr () -> Word32 -> Word32 -> Word32 -> Word32 -> Ptr () -> m Int32

-- | Wrap the callback into a <a>GClosure</a>.
genClosure_FontGetGlyphAdvancesFuncT :: MonadIO m => FontGetGlyphAdvancesFuncT -> m (GClosure C_FontGetGlyphAdvancesFuncT)

-- | Generate a function pointer callable from C code, from a
--   <a>C_FontGetGlyphAdvancesFuncT</a>.
mk_FontGetGlyphAdvancesFuncT :: C_FontGetGlyphAdvancesFuncT -> IO (FunPtr C_FontGetGlyphAdvancesFuncT)

-- | A convenience synonym for <tt><a>Nothing</a> :: <a>Maybe</a>
--   <a>FontGetGlyphAdvancesFuncT</a></tt>.
noFontGetGlyphAdvancesFuncT :: Maybe FontGetGlyphAdvancesFuncT

-- | A convenience synonym for <tt><a>Nothing</a> :: <a>Maybe</a>
--   <a>FontGetGlyphAdvancesFuncT_WithClosures</a></tt>.
noFontGetGlyphAdvancesFuncT_WithClosures :: Maybe FontGetGlyphAdvancesFuncT_WithClosures

-- | Wrap a <a>FontGetGlyphAdvancesFuncT</a> into a
--   <a>C_FontGetGlyphAdvancesFuncT</a>.
wrap_FontGetGlyphAdvancesFuncT :: Maybe (Ptr (FunPtr C_FontGetGlyphAdvancesFuncT)) -> FontGetGlyphAdvancesFuncT_WithClosures -> C_FontGetGlyphAdvancesFuncT

-- | Type for the callback on the (unwrapped) C side.
type C_FontGetGlyphContourPointFuncT = Ptr FontT -> Ptr () -> Word32 -> Word32 -> Ptr Int32 -> Ptr Int32 -> Ptr () -> IO Int32

-- | A virtual method for the <a>FontFuncsT</a> of an <a>FontT</a> object.
--   
--   This method should retrieve the (X,Y) coordinates (in scaled units)
--   for a specified contour point in a glyph. Each coordinate must be
--   returned as an <tt><i>hb_position_t</i></tt> output parameter.
type FontGetGlyphContourPointFuncT = FontT -> Ptr () -> Word32 -> Word32 -> IO (Int32, Int32, Int32)

-- | A virtual method for the <a>FontFuncsT</a> of an <a>FontT</a> object.
--   
--   This method should retrieve the (X,Y) coordinates (in scaled units)
--   for a specified contour point in a glyph. Each coordinate must be
--   returned as an <tt><i>hb_position_t</i></tt> output parameter.
type FontGetGlyphContourPointFuncT_WithClosures = FontT -> Ptr () -> Word32 -> Word32 -> Ptr () -> IO (Int32, Int32, Int32)

-- | A simple wrapper that ignores the closure arguments.
drop_closures_FontGetGlyphContourPointFuncT :: FontGetGlyphContourPointFuncT -> FontGetGlyphContourPointFuncT_WithClosures

-- | Given a pointer to a foreign C function, wrap it into a function
--   callable from Haskell.
dynamic_FontGetGlyphContourPointFuncT :: (HasCallStack, MonadIO m) => FunPtr C_FontGetGlyphContourPointFuncT -> FontT -> Ptr () -> Word32 -> Word32 -> Ptr () -> m (Int32, Int32, Int32)

-- | Wrap the callback into a <a>GClosure</a>.
genClosure_FontGetGlyphContourPointFuncT :: MonadIO m => FontGetGlyphContourPointFuncT -> m (GClosure C_FontGetGlyphContourPointFuncT)

-- | Generate a function pointer callable from C code, from a
--   <a>C_FontGetGlyphContourPointFuncT</a>.
mk_FontGetGlyphContourPointFuncT :: C_FontGetGlyphContourPointFuncT -> IO (FunPtr C_FontGetGlyphContourPointFuncT)

-- | A convenience synonym for <tt><a>Nothing</a> :: <a>Maybe</a>
--   <a>FontGetGlyphContourPointFuncT</a></tt>.
noFontGetGlyphContourPointFuncT :: Maybe FontGetGlyphContourPointFuncT

-- | A convenience synonym for <tt><a>Nothing</a> :: <a>Maybe</a>
--   <a>FontGetGlyphContourPointFuncT_WithClosures</a></tt>.
noFontGetGlyphContourPointFuncT_WithClosures :: Maybe FontGetGlyphContourPointFuncT_WithClosures

-- | Wrap a <a>FontGetGlyphContourPointFuncT</a> into a
--   <a>C_FontGetGlyphContourPointFuncT</a>.
wrap_FontGetGlyphContourPointFuncT :: Maybe (Ptr (FunPtr C_FontGetGlyphContourPointFuncT)) -> FontGetGlyphContourPointFuncT_WithClosures -> C_FontGetGlyphContourPointFuncT

-- | Type for the callback on the (unwrapped) C side.
type C_FontGetGlyphExtentsFuncT = Ptr FontT -> Ptr () -> Word32 -> Ptr GlyphExtentsT -> Ptr () -> IO Int32

-- | A virtual method for the <a>FontFuncsT</a> of an <a>FontT</a> object.
--   
--   This method should retrieve the extents for a specified glyph. Extents
--   must be returned in an <tt><i>hb_glyph_extents</i></tt> output
--   parameter.
type FontGetGlyphExtentsFuncT = FontT -> Ptr () -> Word32 -> IO (Int32, GlyphExtentsT)

-- | A virtual method for the <a>FontFuncsT</a> of an <a>FontT</a> object.
--   
--   This method should retrieve the extents for a specified glyph. Extents
--   must be returned in an <tt><i>hb_glyph_extents</i></tt> output
--   parameter.
type FontGetGlyphExtentsFuncT_WithClosures = FontT -> Ptr () -> Word32 -> Ptr () -> IO (Int32, GlyphExtentsT)

-- | A simple wrapper that ignores the closure arguments.
drop_closures_FontGetGlyphExtentsFuncT :: FontGetGlyphExtentsFuncT -> FontGetGlyphExtentsFuncT_WithClosures

-- | Given a pointer to a foreign C function, wrap it into a function
--   callable from Haskell.
dynamic_FontGetGlyphExtentsFuncT :: (HasCallStack, MonadIO m) => FunPtr C_FontGetGlyphExtentsFuncT -> FontT -> Ptr () -> Word32 -> Ptr () -> m (Int32, GlyphExtentsT)

-- | Wrap the callback into a <a>GClosure</a>.
genClosure_FontGetGlyphExtentsFuncT :: MonadIO m => FontGetGlyphExtentsFuncT -> m (GClosure C_FontGetGlyphExtentsFuncT)

-- | Generate a function pointer callable from C code, from a
--   <a>C_FontGetGlyphExtentsFuncT</a>.
mk_FontGetGlyphExtentsFuncT :: C_FontGetGlyphExtentsFuncT -> IO (FunPtr C_FontGetGlyphExtentsFuncT)

-- | A convenience synonym for <tt><a>Nothing</a> :: <a>Maybe</a>
--   <a>FontGetGlyphExtentsFuncT</a></tt>.
noFontGetGlyphExtentsFuncT :: Maybe FontGetGlyphExtentsFuncT

-- | A convenience synonym for <tt><a>Nothing</a> :: <a>Maybe</a>
--   <a>FontGetGlyphExtentsFuncT_WithClosures</a></tt>.
noFontGetGlyphExtentsFuncT_WithClosures :: Maybe FontGetGlyphExtentsFuncT_WithClosures

-- | Wrap a <a>FontGetGlyphExtentsFuncT</a> into a
--   <a>C_FontGetGlyphExtentsFuncT</a>.
wrap_FontGetGlyphExtentsFuncT :: Maybe (Ptr (FunPtr C_FontGetGlyphExtentsFuncT)) -> FontGetGlyphExtentsFuncT_WithClosures -> C_FontGetGlyphExtentsFuncT

-- | Type for the callback on the (unwrapped) C side.
type C_FontGetGlyphFromNameFuncT = Ptr FontT -> Ptr () -> Ptr CString -> Int32 -> Ptr Word32 -> Ptr () -> IO Int32

-- | A virtual method for the <a>FontFuncsT</a> of an <a>FontT</a> object.
--   
--   This method should retrieve the glyph ID that corresponds to a
--   glyph-name string.
type FontGetGlyphFromNameFuncT = FontT -> Ptr () -> [Text] -> IO (Int32, Word32)

-- | A virtual method for the <a>FontFuncsT</a> of an <a>FontT</a> object.
--   
--   This method should retrieve the glyph ID that corresponds to a
--   glyph-name string.
type FontGetGlyphFromNameFuncT_WithClosures = FontT -> Ptr () -> [Text] -> Ptr () -> IO (Int32, Word32)

-- | A simple wrapper that ignores the closure arguments.
drop_closures_FontGetGlyphFromNameFuncT :: FontGetGlyphFromNameFuncT -> FontGetGlyphFromNameFuncT_WithClosures

-- | Given a pointer to a foreign C function, wrap it into a function
--   callable from Haskell.
dynamic_FontGetGlyphFromNameFuncT :: (HasCallStack, MonadIO m) => FunPtr C_FontGetGlyphFromNameFuncT -> FontT -> Ptr () -> [Text] -> Ptr () -> m (Int32, Word32)

-- | Wrap the callback into a <a>GClosure</a>.
genClosure_FontGetGlyphFromNameFuncT :: MonadIO m => FontGetGlyphFromNameFuncT -> m (GClosure C_FontGetGlyphFromNameFuncT)

-- | Generate a function pointer callable from C code, from a
--   <a>C_FontGetGlyphFromNameFuncT</a>.
mk_FontGetGlyphFromNameFuncT :: C_FontGetGlyphFromNameFuncT -> IO (FunPtr C_FontGetGlyphFromNameFuncT)

-- | A convenience synonym for <tt><a>Nothing</a> :: <a>Maybe</a>
--   <a>FontGetGlyphFromNameFuncT</a></tt>.
noFontGetGlyphFromNameFuncT :: Maybe FontGetGlyphFromNameFuncT

-- | A convenience synonym for <tt><a>Nothing</a> :: <a>Maybe</a>
--   <a>FontGetGlyphFromNameFuncT_WithClosures</a></tt>.
noFontGetGlyphFromNameFuncT_WithClosures :: Maybe FontGetGlyphFromNameFuncT_WithClosures

-- | Wrap a <a>FontGetGlyphFromNameFuncT</a> into a
--   <a>C_FontGetGlyphFromNameFuncT</a>.
wrap_FontGetGlyphFromNameFuncT :: Maybe (Ptr (FunPtr C_FontGetGlyphFromNameFuncT)) -> FontGetGlyphFromNameFuncT_WithClosures -> C_FontGetGlyphFromNameFuncT

-- | Type for the callback on the (unwrapped) C side.
type C_FontGetGlyphFuncT = Ptr FontT -> Ptr () -> Word32 -> Word32 -> Ptr Word32 -> Ptr () -> IO Int32

-- | A virtual method for the <a>FontFuncsT</a> of an <a>FontT</a> object.
--   
--   This method should retrieve the glyph ID for a specified Unicode code
--   point font, with an optional variation selector.

-- | <i>Deprecated: (Since version 1.2.3)</i>
type FontGetGlyphFuncT = FontT -> Ptr () -> Word32 -> Word32 -> IO (Int32, Word32)

-- | A virtual method for the <a>FontFuncsT</a> of an <a>FontT</a> object.
--   
--   This method should retrieve the glyph ID for a specified Unicode code
--   point font, with an optional variation selector.
type FontGetGlyphFuncT_WithClosures = FontT -> Ptr () -> Word32 -> Word32 -> Ptr () -> IO (Int32, Word32)

-- | A simple wrapper that ignores the closure arguments.
drop_closures_FontGetGlyphFuncT :: FontGetGlyphFuncT -> FontGetGlyphFuncT_WithClosures

-- | Given a pointer to a foreign C function, wrap it into a function
--   callable from Haskell.
dynamic_FontGetGlyphFuncT :: (HasCallStack, MonadIO m) => FunPtr C_FontGetGlyphFuncT -> FontT -> Ptr () -> Word32 -> Word32 -> Ptr () -> m (Int32, Word32)

-- | Wrap the callback into a <a>GClosure</a>.
genClosure_FontGetGlyphFuncT :: MonadIO m => FontGetGlyphFuncT -> m (GClosure C_FontGetGlyphFuncT)

-- | Generate a function pointer callable from C code, from a
--   <a>C_FontGetGlyphFuncT</a>.
mk_FontGetGlyphFuncT :: C_FontGetGlyphFuncT -> IO (FunPtr C_FontGetGlyphFuncT)

-- | A convenience synonym for <tt><a>Nothing</a> :: <a>Maybe</a>
--   <a>FontGetGlyphFuncT</a></tt>.
noFontGetGlyphFuncT :: Maybe FontGetGlyphFuncT

-- | A convenience synonym for <tt><a>Nothing</a> :: <a>Maybe</a>
--   <a>FontGetGlyphFuncT_WithClosures</a></tt>.
noFontGetGlyphFuncT_WithClosures :: Maybe FontGetGlyphFuncT_WithClosures

-- | Wrap a <a>FontGetGlyphFuncT</a> into a <a>C_FontGetGlyphFuncT</a>.
wrap_FontGetGlyphFuncT :: Maybe (Ptr (FunPtr C_FontGetGlyphFuncT)) -> FontGetGlyphFuncT_WithClosures -> C_FontGetGlyphFuncT

-- | Type for the callback on the (unwrapped) C side.
type C_FontGetGlyphKerningFuncT = Ptr FontT -> Ptr () -> Word32 -> Word32 -> Ptr () -> IO Int32

-- | This method should retrieve the kerning-adjustment value for a
--   glyph-pair in the specified font, for horizontal text segments.
type FontGetGlyphKerningFuncT = FontT -> Ptr () -> Word32 -> Word32 -> IO Int32

-- | This method should retrieve the kerning-adjustment value for a
--   glyph-pair in the specified font, for horizontal text segments.
type FontGetGlyphKerningFuncT_WithClosures = FontT -> Ptr () -> Word32 -> Word32 -> Ptr () -> IO Int32

-- | A simple wrapper that ignores the closure arguments.
drop_closures_FontGetGlyphKerningFuncT :: FontGetGlyphKerningFuncT -> FontGetGlyphKerningFuncT_WithClosures

-- | Given a pointer to a foreign C function, wrap it into a function
--   callable from Haskell.
dynamic_FontGetGlyphKerningFuncT :: (HasCallStack, MonadIO m) => FunPtr C_FontGetGlyphKerningFuncT -> FontT -> Ptr () -> Word32 -> Word32 -> Ptr () -> m Int32

-- | Wrap the callback into a <a>GClosure</a>.
genClosure_FontGetGlyphKerningFuncT :: MonadIO m => FontGetGlyphKerningFuncT -> m (GClosure C_FontGetGlyphKerningFuncT)

-- | Generate a function pointer callable from C code, from a
--   <a>C_FontGetGlyphKerningFuncT</a>.
mk_FontGetGlyphKerningFuncT :: C_FontGetGlyphKerningFuncT -> IO (FunPtr C_FontGetGlyphKerningFuncT)

-- | A convenience synonym for <tt><a>Nothing</a> :: <a>Maybe</a>
--   <a>FontGetGlyphKerningFuncT</a></tt>.
noFontGetGlyphKerningFuncT :: Maybe FontGetGlyphKerningFuncT

-- | A convenience synonym for <tt><a>Nothing</a> :: <a>Maybe</a>
--   <a>FontGetGlyphKerningFuncT_WithClosures</a></tt>.
noFontGetGlyphKerningFuncT_WithClosures :: Maybe FontGetGlyphKerningFuncT_WithClosures

-- | Wrap a <a>FontGetGlyphKerningFuncT</a> into a
--   <a>C_FontGetGlyphKerningFuncT</a>.
wrap_FontGetGlyphKerningFuncT :: Maybe (Ptr (FunPtr C_FontGetGlyphKerningFuncT)) -> FontGetGlyphKerningFuncT_WithClosures -> C_FontGetGlyphKerningFuncT

-- | Type for the callback on the (unwrapped) C side.
type C_FontGetGlyphNameFuncT = Ptr FontT -> Ptr () -> Word32 -> Ptr Ptr CString -> Ptr Word32 -> Ptr () -> IO Int32

-- | A virtual method for the <a>FontFuncsT</a> of an <a>FontT</a> object.
--   
--   This method should retrieve the glyph name that corresponds to a glyph
--   ID. The name should be returned in a string output parameter.
type FontGetGlyphNameFuncT = FontT -> Ptr () -> Word32 -> IO (Int32, [Text])

-- | A virtual method for the <a>FontFuncsT</a> of an <a>FontT</a> object.
--   
--   This method should retrieve the glyph name that corresponds to a glyph
--   ID. The name should be returned in a string output parameter.
type FontGetGlyphNameFuncT_WithClosures = FontT -> Ptr () -> Word32 -> Ptr () -> IO (Int32, [Text])

-- | A simple wrapper that ignores the closure arguments.
drop_closures_FontGetGlyphNameFuncT :: FontGetGlyphNameFuncT -> FontGetGlyphNameFuncT_WithClosures

-- | Given a pointer to a foreign C function, wrap it into a function
--   callable from Haskell.
dynamic_FontGetGlyphNameFuncT :: (HasCallStack, MonadIO m) => FunPtr C_FontGetGlyphNameFuncT -> FontT -> Ptr () -> Word32 -> Ptr () -> m (Int32, [Text])

-- | Wrap the callback into a <a>GClosure</a>.
genClosure_FontGetGlyphNameFuncT :: MonadIO m => FontGetGlyphNameFuncT -> m (GClosure C_FontGetGlyphNameFuncT)

-- | Generate a function pointer callable from C code, from a
--   <a>C_FontGetGlyphNameFuncT</a>.
mk_FontGetGlyphNameFuncT :: C_FontGetGlyphNameFuncT -> IO (FunPtr C_FontGetGlyphNameFuncT)

-- | A convenience synonym for <tt><a>Nothing</a> :: <a>Maybe</a>
--   <a>FontGetGlyphNameFuncT</a></tt>.
noFontGetGlyphNameFuncT :: Maybe FontGetGlyphNameFuncT

-- | A convenience synonym for <tt><a>Nothing</a> :: <a>Maybe</a>
--   <a>FontGetGlyphNameFuncT_WithClosures</a></tt>.
noFontGetGlyphNameFuncT_WithClosures :: Maybe FontGetGlyphNameFuncT_WithClosures

-- | Wrap a <a>FontGetGlyphNameFuncT</a> into a
--   <a>C_FontGetGlyphNameFuncT</a>.
wrap_FontGetGlyphNameFuncT :: Maybe (Ptr (FunPtr C_FontGetGlyphNameFuncT)) -> FontGetGlyphNameFuncT_WithClosures -> C_FontGetGlyphNameFuncT

-- | Type for the callback on the (unwrapped) C side.
type C_FontGetGlyphOriginFuncT = Ptr FontT -> Ptr () -> Word32 -> Ptr Int32 -> Ptr Int32 -> Ptr () -> IO Int32

-- | A virtual method for the <a>FontFuncsT</a> of an <a>FontT</a> object.
--   
--   This method should retrieve the (X,Y) coordinates (in scaled units) of
--   the origin for a glyph. Each coordinate must be returned in an
--   <tt><i>hb_position_t</i></tt> output parameter.
type FontGetGlyphOriginFuncT = FontT -> Ptr () -> Word32 -> IO (Int32, Int32, Int32)

-- | A virtual method for the <a>FontFuncsT</a> of an <a>FontT</a> object.
--   
--   This method should retrieve the (X,Y) coordinates (in scaled units) of
--   the origin for a glyph. Each coordinate must be returned in an
--   <tt><i>hb_position_t</i></tt> output parameter.
type FontGetGlyphOriginFuncT_WithClosures = FontT -> Ptr () -> Word32 -> Ptr () -> IO (Int32, Int32, Int32)

-- | A simple wrapper that ignores the closure arguments.
drop_closures_FontGetGlyphOriginFuncT :: FontGetGlyphOriginFuncT -> FontGetGlyphOriginFuncT_WithClosures

-- | Given a pointer to a foreign C function, wrap it into a function
--   callable from Haskell.
dynamic_FontGetGlyphOriginFuncT :: (HasCallStack, MonadIO m) => FunPtr C_FontGetGlyphOriginFuncT -> FontT -> Ptr () -> Word32 -> Ptr () -> m (Int32, Int32, Int32)

-- | Wrap the callback into a <a>GClosure</a>.
genClosure_FontGetGlyphOriginFuncT :: MonadIO m => FontGetGlyphOriginFuncT -> m (GClosure C_FontGetGlyphOriginFuncT)

-- | Generate a function pointer callable from C code, from a
--   <a>C_FontGetGlyphOriginFuncT</a>.
mk_FontGetGlyphOriginFuncT :: C_FontGetGlyphOriginFuncT -> IO (FunPtr C_FontGetGlyphOriginFuncT)

-- | A convenience synonym for <tt><a>Nothing</a> :: <a>Maybe</a>
--   <a>FontGetGlyphOriginFuncT</a></tt>.
noFontGetGlyphOriginFuncT :: Maybe FontGetGlyphOriginFuncT

-- | A convenience synonym for <tt><a>Nothing</a> :: <a>Maybe</a>
--   <a>FontGetGlyphOriginFuncT_WithClosures</a></tt>.
noFontGetGlyphOriginFuncT_WithClosures :: Maybe FontGetGlyphOriginFuncT_WithClosures

-- | Wrap a <a>FontGetGlyphOriginFuncT</a> into a
--   <a>C_FontGetGlyphOriginFuncT</a>.
wrap_FontGetGlyphOriginFuncT :: Maybe (Ptr (FunPtr C_FontGetGlyphOriginFuncT)) -> FontGetGlyphOriginFuncT_WithClosures -> C_FontGetGlyphOriginFuncT

-- | Type for the callback on the (unwrapped) C side.
type C_FontGetGlyphOriginsFuncT = Ptr FontT -> Ptr () -> Word32 -> Word32 -> Word32 -> Ptr Int32 -> Word32 -> Ptr Int32 -> Word32 -> Ptr () -> IO Int32

-- | A virtual method for the <a>FontFuncsT</a> of an <a>FontT</a> object.
--   
--   This method should retrieve the (X,Y) coordinates (in scaled units) of
--   the origin for each requested glyph. Each coordinate value must be
--   returned in an <tt><i>hb_position_t</i></tt> in the two output
--   parameters.
--   
--   <i>Since: 11.3.0</i>
type FontGetGlyphOriginsFuncT = FontT -> Ptr () -> Word32 -> Word32 -> Word32 -> Word32 -> Word32 -> IO (Int32, Int32, Int32)

-- | A virtual method for the <a>FontFuncsT</a> of an <a>FontT</a> object.
--   
--   This method should retrieve the (X,Y) coordinates (in scaled units) of
--   the origin for each requested glyph. Each coordinate value must be
--   returned in an <tt><i>hb_position_t</i></tt> in the two output
--   parameters.
--   
--   <i>Since: 11.3.0</i>
type FontGetGlyphOriginsFuncT_WithClosures = FontT -> Ptr () -> Word32 -> Word32 -> Word32 -> Word32 -> Word32 -> Ptr () -> IO (Int32, Int32, Int32)

-- | A simple wrapper that ignores the closure arguments.
drop_closures_FontGetGlyphOriginsFuncT :: FontGetGlyphOriginsFuncT -> FontGetGlyphOriginsFuncT_WithClosures

-- | Given a pointer to a foreign C function, wrap it into a function
--   callable from Haskell.
dynamic_FontGetGlyphOriginsFuncT :: (HasCallStack, MonadIO m) => FunPtr C_FontGetGlyphOriginsFuncT -> FontT -> Ptr () -> Word32 -> Word32 -> Word32 -> Word32 -> Word32 -> Ptr () -> m (Int32, Int32, Int32)

-- | Wrap the callback into a <a>GClosure</a>.
genClosure_FontGetGlyphOriginsFuncT :: MonadIO m => FontGetGlyphOriginsFuncT -> m (GClosure C_FontGetGlyphOriginsFuncT)

-- | Generate a function pointer callable from C code, from a
--   <a>C_FontGetGlyphOriginsFuncT</a>.
mk_FontGetGlyphOriginsFuncT :: C_FontGetGlyphOriginsFuncT -> IO (FunPtr C_FontGetGlyphOriginsFuncT)

-- | A convenience synonym for <tt><a>Nothing</a> :: <a>Maybe</a>
--   <a>FontGetGlyphOriginsFuncT</a></tt>.
noFontGetGlyphOriginsFuncT :: Maybe FontGetGlyphOriginsFuncT

-- | A convenience synonym for <tt><a>Nothing</a> :: <a>Maybe</a>
--   <a>FontGetGlyphOriginsFuncT_WithClosures</a></tt>.
noFontGetGlyphOriginsFuncT_WithClosures :: Maybe FontGetGlyphOriginsFuncT_WithClosures

-- | Wrap a <a>FontGetGlyphOriginsFuncT</a> into a
--   <a>C_FontGetGlyphOriginsFuncT</a>.
wrap_FontGetGlyphOriginsFuncT :: Maybe (Ptr (FunPtr C_FontGetGlyphOriginsFuncT)) -> FontGetGlyphOriginsFuncT_WithClosures -> C_FontGetGlyphOriginsFuncT

-- | Type for the callback on the (unwrapped) C side.
type C_FontGetGlyphShapeFuncT = Ptr FontT -> Ptr () -> Word32 -> Ptr DrawFuncsT -> Ptr () -> Ptr () -> IO ()

-- | A virtual method for the <a>FontFuncsT</a> of an <a>FontT</a> object.
--   
--   <i>Since: 4.0.0</i>

-- | <i>Deprecated: (Since version 7.0.0)Use <a>FontDrawGlyphFuncT</a>
--   instead</i>
type FontGetGlyphShapeFuncT = FontT -> Ptr () -> Word32 -> DrawFuncsT -> Ptr () -> IO ()

-- | A virtual method for the <a>FontFuncsT</a> of an <a>FontT</a> object.
--   
--   <i>Since: 4.0.0</i>
type FontGetGlyphShapeFuncT_WithClosures = FontT -> Ptr () -> Word32 -> DrawFuncsT -> Ptr () -> Ptr () -> IO ()

-- | A simple wrapper that ignores the closure arguments.
drop_closures_FontGetGlyphShapeFuncT :: FontGetGlyphShapeFuncT -> FontGetGlyphShapeFuncT_WithClosures

-- | Given a pointer to a foreign C function, wrap it into a function
--   callable from Haskell.
dynamic_FontGetGlyphShapeFuncT :: (HasCallStack, MonadIO m) => FunPtr C_FontGetGlyphShapeFuncT -> FontT -> Ptr () -> Word32 -> DrawFuncsT -> Ptr () -> Ptr () -> m ()

-- | Wrap the callback into a <a>GClosure</a>.
genClosure_FontGetGlyphShapeFuncT :: MonadIO m => FontGetGlyphShapeFuncT -> m (GClosure C_FontGetGlyphShapeFuncT)

-- | Generate a function pointer callable from C code, from a
--   <a>C_FontGetGlyphShapeFuncT</a>.
mk_FontGetGlyphShapeFuncT :: C_FontGetGlyphShapeFuncT -> IO (FunPtr C_FontGetGlyphShapeFuncT)

-- | A convenience synonym for <tt><a>Nothing</a> :: <a>Maybe</a>
--   <a>FontGetGlyphShapeFuncT</a></tt>.
noFontGetGlyphShapeFuncT :: Maybe FontGetGlyphShapeFuncT

-- | A convenience synonym for <tt><a>Nothing</a> :: <a>Maybe</a>
--   <a>FontGetGlyphShapeFuncT_WithClosures</a></tt>.
noFontGetGlyphShapeFuncT_WithClosures :: Maybe FontGetGlyphShapeFuncT_WithClosures

-- | Wrap a <a>FontGetGlyphShapeFuncT</a> into a
--   <a>C_FontGetGlyphShapeFuncT</a>.
wrap_FontGetGlyphShapeFuncT :: Maybe (Ptr (FunPtr C_FontGetGlyphShapeFuncT)) -> FontGetGlyphShapeFuncT_WithClosures -> C_FontGetGlyphShapeFuncT

-- | Type for the callback on the (unwrapped) C side.
type C_FontGetNominalGlyphFuncT = Ptr FontT -> Ptr () -> Word32 -> Ptr Word32 -> Ptr () -> IO Int32

-- | A virtual method for the <a>FontFuncsT</a> of an <a>FontT</a> object.
--   
--   This method should retrieve the nominal glyph ID for a specified
--   Unicode code point. Glyph IDs must be returned in a
--   <tt><i>hb_codepoint_t</i></tt> output parameter.
type FontGetNominalGlyphFuncT = FontT -> Ptr () -> Word32 -> IO (Int32, Word32)

-- | A virtual method for the <a>FontFuncsT</a> of an <a>FontT</a> object.
--   
--   This method should retrieve the nominal glyph ID for a specified
--   Unicode code point. Glyph IDs must be returned in a
--   <tt><i>hb_codepoint_t</i></tt> output parameter.
type FontGetNominalGlyphFuncT_WithClosures = FontT -> Ptr () -> Word32 -> Ptr () -> IO (Int32, Word32)

-- | A simple wrapper that ignores the closure arguments.
drop_closures_FontGetNominalGlyphFuncT :: FontGetNominalGlyphFuncT -> FontGetNominalGlyphFuncT_WithClosures

-- | Given a pointer to a foreign C function, wrap it into a function
--   callable from Haskell.
dynamic_FontGetNominalGlyphFuncT :: (HasCallStack, MonadIO m) => FunPtr C_FontGetNominalGlyphFuncT -> FontT -> Ptr () -> Word32 -> Ptr () -> m (Int32, Word32)

-- | Wrap the callback into a <a>GClosure</a>.
genClosure_FontGetNominalGlyphFuncT :: MonadIO m => FontGetNominalGlyphFuncT -> m (GClosure C_FontGetNominalGlyphFuncT)

-- | Generate a function pointer callable from C code, from a
--   <a>C_FontGetNominalGlyphFuncT</a>.
mk_FontGetNominalGlyphFuncT :: C_FontGetNominalGlyphFuncT -> IO (FunPtr C_FontGetNominalGlyphFuncT)

-- | A convenience synonym for <tt><a>Nothing</a> :: <a>Maybe</a>
--   <a>FontGetNominalGlyphFuncT</a></tt>.
noFontGetNominalGlyphFuncT :: Maybe FontGetNominalGlyphFuncT

-- | A convenience synonym for <tt><a>Nothing</a> :: <a>Maybe</a>
--   <a>FontGetNominalGlyphFuncT_WithClosures</a></tt>.
noFontGetNominalGlyphFuncT_WithClosures :: Maybe FontGetNominalGlyphFuncT_WithClosures

-- | Wrap a <a>FontGetNominalGlyphFuncT</a> into a
--   <a>C_FontGetNominalGlyphFuncT</a>.
wrap_FontGetNominalGlyphFuncT :: Maybe (Ptr (FunPtr C_FontGetNominalGlyphFuncT)) -> FontGetNominalGlyphFuncT_WithClosures -> C_FontGetNominalGlyphFuncT

-- | Type for the callback on the (unwrapped) C side.
type C_FontGetNominalGlyphsFuncT = Ptr FontT -> Ptr () -> Word32 -> Word32 -> Word32 -> Ptr Word32 -> Word32 -> Ptr () -> IO Word32

-- | A virtual method for the <a>FontFuncsT</a> of an <a>FontT</a> object.
--   
--   This method should retrieve the nominal glyph IDs for a sequence of
--   Unicode code points. Glyph IDs must be returned in a
--   <tt><i>hb_codepoint_t</i></tt> output parameter.
type FontGetNominalGlyphsFuncT = FontT -> Ptr () -> Word32 -> Word32 -> Word32 -> Word32 -> IO (Word32, Word32)

-- | A virtual method for the <a>FontFuncsT</a> of an <a>FontT</a> object.
--   
--   This method should retrieve the nominal glyph IDs for a sequence of
--   Unicode code points. Glyph IDs must be returned in a
--   <tt><i>hb_codepoint_t</i></tt> output parameter.
type FontGetNominalGlyphsFuncT_WithClosures = FontT -> Ptr () -> Word32 -> Word32 -> Word32 -> Word32 -> Ptr () -> IO (Word32, Word32)

-- | A simple wrapper that ignores the closure arguments.
drop_closures_FontGetNominalGlyphsFuncT :: FontGetNominalGlyphsFuncT -> FontGetNominalGlyphsFuncT_WithClosures

-- | Given a pointer to a foreign C function, wrap it into a function
--   callable from Haskell.
dynamic_FontGetNominalGlyphsFuncT :: (HasCallStack, MonadIO m) => FunPtr C_FontGetNominalGlyphsFuncT -> FontT -> Ptr () -> Word32 -> Word32 -> Word32 -> Word32 -> Ptr () -> m (Word32, Word32)

-- | Wrap the callback into a <a>GClosure</a>.
genClosure_FontGetNominalGlyphsFuncT :: MonadIO m => FontGetNominalGlyphsFuncT -> m (GClosure C_FontGetNominalGlyphsFuncT)

-- | Generate a function pointer callable from C code, from a
--   <a>C_FontGetNominalGlyphsFuncT</a>.
mk_FontGetNominalGlyphsFuncT :: C_FontGetNominalGlyphsFuncT -> IO (FunPtr C_FontGetNominalGlyphsFuncT)

-- | A convenience synonym for <tt><a>Nothing</a> :: <a>Maybe</a>
--   <a>FontGetNominalGlyphsFuncT</a></tt>.
noFontGetNominalGlyphsFuncT :: Maybe FontGetNominalGlyphsFuncT

-- | A convenience synonym for <tt><a>Nothing</a> :: <a>Maybe</a>
--   <a>FontGetNominalGlyphsFuncT_WithClosures</a></tt>.
noFontGetNominalGlyphsFuncT_WithClosures :: Maybe FontGetNominalGlyphsFuncT_WithClosures

-- | Wrap a <a>FontGetNominalGlyphsFuncT</a> into a
--   <a>C_FontGetNominalGlyphsFuncT</a>.
wrap_FontGetNominalGlyphsFuncT :: Maybe (Ptr (FunPtr C_FontGetNominalGlyphsFuncT)) -> FontGetNominalGlyphsFuncT_WithClosures -> C_FontGetNominalGlyphsFuncT

-- | Type for the callback on the (unwrapped) C side.
type C_FontGetVariationGlyphFuncT = Ptr FontT -> Ptr () -> Word32 -> Word32 -> Ptr Word32 -> Ptr () -> IO Int32

-- | A virtual method for the <a>FontFuncsT</a> of an <a>FontT</a> object.
--   
--   This method should retrieve the glyph ID for a specified Unicode code
--   point followed by a specified Variation Selector code point. Glyph IDs
--   must be returned in a <tt><i>hb_codepoint_t</i></tt> output parameter.
type FontGetVariationGlyphFuncT = FontT -> Ptr () -> Word32 -> Word32 -> IO (Int32, Word32)

-- | A virtual method for the <a>FontFuncsT</a> of an <a>FontT</a> object.
--   
--   This method should retrieve the glyph ID for a specified Unicode code
--   point followed by a specified Variation Selector code point. Glyph IDs
--   must be returned in a <tt><i>hb_codepoint_t</i></tt> output parameter.
type FontGetVariationGlyphFuncT_WithClosures = FontT -> Ptr () -> Word32 -> Word32 -> Ptr () -> IO (Int32, Word32)

-- | A simple wrapper that ignores the closure arguments.
drop_closures_FontGetVariationGlyphFuncT :: FontGetVariationGlyphFuncT -> FontGetVariationGlyphFuncT_WithClosures

-- | Given a pointer to a foreign C function, wrap it into a function
--   callable from Haskell.
dynamic_FontGetVariationGlyphFuncT :: (HasCallStack, MonadIO m) => FunPtr C_FontGetVariationGlyphFuncT -> FontT -> Ptr () -> Word32 -> Word32 -> Ptr () -> m (Int32, Word32)

-- | Wrap the callback into a <a>GClosure</a>.
genClosure_FontGetVariationGlyphFuncT :: MonadIO m => FontGetVariationGlyphFuncT -> m (GClosure C_FontGetVariationGlyphFuncT)

-- | Generate a function pointer callable from C code, from a
--   <a>C_FontGetVariationGlyphFuncT</a>.
mk_FontGetVariationGlyphFuncT :: C_FontGetVariationGlyphFuncT -> IO (FunPtr C_FontGetVariationGlyphFuncT)

-- | A convenience synonym for <tt><a>Nothing</a> :: <a>Maybe</a>
--   <a>FontGetVariationGlyphFuncT</a></tt>.
noFontGetVariationGlyphFuncT :: Maybe FontGetVariationGlyphFuncT

-- | A convenience synonym for <tt><a>Nothing</a> :: <a>Maybe</a>
--   <a>FontGetVariationGlyphFuncT_WithClosures</a></tt>.
noFontGetVariationGlyphFuncT_WithClosures :: Maybe FontGetVariationGlyphFuncT_WithClosures

-- | Wrap a <a>FontGetVariationGlyphFuncT</a> into a
--   <a>C_FontGetVariationGlyphFuncT</a>.
wrap_FontGetVariationGlyphFuncT :: Maybe (Ptr (FunPtr C_FontGetVariationGlyphFuncT)) -> FontGetVariationGlyphFuncT_WithClosures -> C_FontGetVariationGlyphFuncT

-- | Type for the callback on the (unwrapped) C side.
type C_FontPaintGlyphFuncT = Ptr FontT -> Ptr () -> Word32 -> Ptr PaintFuncsT -> Ptr () -> Word32 -> Word32 -> Ptr () -> IO Int32

-- | A virtual method for the <a>FontFuncsT</a> of an <a>FontT</a> object.
--   
--   <i>Since: 7.0.0</i>

-- | <i>Deprecated: (Since version 11.2.0)Use
--   hb_font_paint_glyph_or_fail_func_t instead.</i>
type FontPaintGlyphFuncT = FontT -> Ptr () -> Word32 -> PaintFuncsT -> Ptr () -> Word32 -> Word32 -> IO Int32

-- | A virtual method for the <a>FontFuncsT</a> of an <a>FontT</a> object.
--   
--   <i>Since: 7.0.0</i>
type FontPaintGlyphFuncT_WithClosures = FontT -> Ptr () -> Word32 -> PaintFuncsT -> Ptr () -> Word32 -> Word32 -> Ptr () -> IO Int32

-- | A simple wrapper that ignores the closure arguments.
drop_closures_FontPaintGlyphFuncT :: FontPaintGlyphFuncT -> FontPaintGlyphFuncT_WithClosures

-- | Given a pointer to a foreign C function, wrap it into a function
--   callable from Haskell.
dynamic_FontPaintGlyphFuncT :: (HasCallStack, MonadIO m) => FunPtr C_FontPaintGlyphFuncT -> FontT -> Ptr () -> Word32 -> PaintFuncsT -> Ptr () -> Word32 -> Word32 -> Ptr () -> m Int32

-- | Wrap the callback into a <a>GClosure</a>.
genClosure_FontPaintGlyphFuncT :: MonadIO m => FontPaintGlyphFuncT -> m (GClosure C_FontPaintGlyphFuncT)

-- | Generate a function pointer callable from C code, from a
--   <a>C_FontPaintGlyphFuncT</a>.
mk_FontPaintGlyphFuncT :: C_FontPaintGlyphFuncT -> IO (FunPtr C_FontPaintGlyphFuncT)

-- | A convenience synonym for <tt><a>Nothing</a> :: <a>Maybe</a>
--   <a>FontPaintGlyphFuncT</a></tt>.
noFontPaintGlyphFuncT :: Maybe FontPaintGlyphFuncT

-- | A convenience synonym for <tt><a>Nothing</a> :: <a>Maybe</a>
--   <a>FontPaintGlyphFuncT_WithClosures</a></tt>.
noFontPaintGlyphFuncT_WithClosures :: Maybe FontPaintGlyphFuncT_WithClosures

-- | Wrap a <a>FontPaintGlyphFuncT</a> into a <a>C_FontPaintGlyphFuncT</a>.
wrap_FontPaintGlyphFuncT :: Maybe (Ptr (FunPtr C_FontPaintGlyphFuncT)) -> FontPaintGlyphFuncT_WithClosures -> C_FontPaintGlyphFuncT

-- | Type for the callback on the (unwrapped) C side.
type C_FontPaintGlyphOrFailFuncT = Ptr FontT -> Ptr () -> Word32 -> Ptr PaintFuncsT -> Ptr () -> Word32 -> Word32 -> Ptr () -> IO Int32

-- | A virtual method for the <a>FontFuncsT</a> of an <a>FontT</a> object.
--   
--   <i>Since: 11.2.0</i>
type FontPaintGlyphOrFailFuncT = FontT -> Ptr () -> Word32 -> PaintFuncsT -> Ptr () -> Word32 -> Word32 -> IO Int32

-- | A virtual method for the <a>FontFuncsT</a> of an <a>FontT</a> object.
--   
--   <i>Since: 11.2.0</i>
type FontPaintGlyphOrFailFuncT_WithClosures = FontT -> Ptr () -> Word32 -> PaintFuncsT -> Ptr () -> Word32 -> Word32 -> Ptr () -> IO Int32

-- | A simple wrapper that ignores the closure arguments.
drop_closures_FontPaintGlyphOrFailFuncT :: FontPaintGlyphOrFailFuncT -> FontPaintGlyphOrFailFuncT_WithClosures

-- | Given a pointer to a foreign C function, wrap it into a function
--   callable from Haskell.
dynamic_FontPaintGlyphOrFailFuncT :: (HasCallStack, MonadIO m) => FunPtr C_FontPaintGlyphOrFailFuncT -> FontT -> Ptr () -> Word32 -> PaintFuncsT -> Ptr () -> Word32 -> Word32 -> Ptr () -> m Int32

-- | Wrap the callback into a <a>GClosure</a>.
genClosure_FontPaintGlyphOrFailFuncT :: MonadIO m => FontPaintGlyphOrFailFuncT -> m (GClosure C_FontPaintGlyphOrFailFuncT)

-- | Generate a function pointer callable from C code, from a
--   <a>C_FontPaintGlyphOrFailFuncT</a>.
mk_FontPaintGlyphOrFailFuncT :: C_FontPaintGlyphOrFailFuncT -> IO (FunPtr C_FontPaintGlyphOrFailFuncT)

-- | A convenience synonym for <tt><a>Nothing</a> :: <a>Maybe</a>
--   <a>FontPaintGlyphOrFailFuncT</a></tt>.
noFontPaintGlyphOrFailFuncT :: Maybe FontPaintGlyphOrFailFuncT

-- | A convenience synonym for <tt><a>Nothing</a> :: <a>Maybe</a>
--   <a>FontPaintGlyphOrFailFuncT_WithClosures</a></tt>.
noFontPaintGlyphOrFailFuncT_WithClosures :: Maybe FontPaintGlyphOrFailFuncT_WithClosures

-- | Wrap a <a>FontPaintGlyphOrFailFuncT</a> into a
--   <a>C_FontPaintGlyphOrFailFuncT</a>.
wrap_FontPaintGlyphOrFailFuncT :: Maybe (Ptr (FunPtr C_FontPaintGlyphOrFailFuncT)) -> FontPaintGlyphOrFailFuncT_WithClosures -> C_FontPaintGlyphOrFailFuncT

-- | Type for the callback on the (unwrapped) C side.
type C_GetTableTagsFuncT = Ptr FaceT -> Word32 -> Ptr Word32 -> Ptr Ptr Word32 -> Ptr () -> IO Word32

-- | Callback function for <a>faceGetTableTags</a>.
--   
--   <i>Since: 10.0.0</i>
type GetTableTagsFuncT = FaceT -> Word32 -> IO (Word32, [Word32])

-- | Callback function for <a>faceGetTableTags</a>.
--   
--   <i>Since: 10.0.0</i>
type GetTableTagsFuncT_WithClosures = FaceT -> Word32 -> Ptr () -> IO (Word32, [Word32])

-- | A simple wrapper that ignores the closure arguments.
drop_closures_GetTableTagsFuncT :: GetTableTagsFuncT -> GetTableTagsFuncT_WithClosures

-- | Given a pointer to a foreign C function, wrap it into a function
--   callable from Haskell.
dynamic_GetTableTagsFuncT :: (HasCallStack, MonadIO m) => FunPtr C_GetTableTagsFuncT -> FaceT -> Word32 -> Ptr () -> m (Word32, [Word32])

-- | Wrap the callback into a <a>GClosure</a>.
genClosure_GetTableTagsFuncT :: MonadIO m => GetTableTagsFuncT -> m (GClosure C_GetTableTagsFuncT)

-- | Generate a function pointer callable from C code, from a
--   <a>C_GetTableTagsFuncT</a>.
mk_GetTableTagsFuncT :: C_GetTableTagsFuncT -> IO (FunPtr C_GetTableTagsFuncT)

-- | A convenience synonym for <tt><a>Nothing</a> :: <a>Maybe</a>
--   <a>GetTableTagsFuncT</a></tt>.
noGetTableTagsFuncT :: Maybe GetTableTagsFuncT

-- | A convenience synonym for <tt><a>Nothing</a> :: <a>Maybe</a>
--   <a>GetTableTagsFuncT_WithClosures</a></tt>.
noGetTableTagsFuncT_WithClosures :: Maybe GetTableTagsFuncT_WithClosures

-- | Wrap a <a>GetTableTagsFuncT</a> into a <a>C_GetTableTagsFuncT</a>.
wrap_GetTableTagsFuncT :: Maybe (Ptr (FunPtr C_GetTableTagsFuncT)) -> GetTableTagsFuncT_WithClosures -> C_GetTableTagsFuncT

-- | Type for the callback on the (unwrapped) C side.
type C_PaintColorFuncT = Ptr PaintFuncsT -> Ptr () -> Int32 -> Word32 -> Ptr () -> IO ()

-- | A virtual method for the <a>PaintFuncsT</a> to paint a color
--   everywhere within the current clip.
--   
--   <i>Since: 7.0.0</i>
type PaintColorFuncT = PaintFuncsT -> Ptr () -> Int32 -> Word32 -> IO ()

-- | A virtual method for the <a>PaintFuncsT</a> to paint a color
--   everywhere within the current clip.
--   
--   <i>Since: 7.0.0</i>
type PaintColorFuncT_WithClosures = PaintFuncsT -> Ptr () -> Int32 -> Word32 -> Ptr () -> IO ()

-- | A simple wrapper that ignores the closure arguments.
drop_closures_PaintColorFuncT :: PaintColorFuncT -> PaintColorFuncT_WithClosures

-- | Given a pointer to a foreign C function, wrap it into a function
--   callable from Haskell.
dynamic_PaintColorFuncT :: (HasCallStack, MonadIO m) => FunPtr C_PaintColorFuncT -> PaintFuncsT -> Ptr () -> Int32 -> Word32 -> Ptr () -> m ()

-- | Wrap the callback into a <a>GClosure</a>.
genClosure_PaintColorFuncT :: MonadIO m => PaintColorFuncT -> m (GClosure C_PaintColorFuncT)

-- | Generate a function pointer callable from C code, from a
--   <a>C_PaintColorFuncT</a>.
mk_PaintColorFuncT :: C_PaintColorFuncT -> IO (FunPtr C_PaintColorFuncT)

-- | A convenience synonym for <tt><a>Nothing</a> :: <a>Maybe</a>
--   <a>PaintColorFuncT</a></tt>.
noPaintColorFuncT :: Maybe PaintColorFuncT

-- | A convenience synonym for <tt><a>Nothing</a> :: <a>Maybe</a>
--   <a>PaintColorFuncT_WithClosures</a></tt>.
noPaintColorFuncT_WithClosures :: Maybe PaintColorFuncT_WithClosures

-- | Wrap a <a>PaintColorFuncT</a> into a <a>C_PaintColorFuncT</a>.
wrap_PaintColorFuncT :: Maybe (Ptr (FunPtr C_PaintColorFuncT)) -> PaintColorFuncT_WithClosures -> C_PaintColorFuncT

-- | Type for the callback on the (unwrapped) C side.
type C_PaintColorGlyphFuncT = Ptr PaintFuncsT -> Ptr () -> Word32 -> Ptr FontT -> Ptr () -> IO Int32

-- | A virtual method for the <a>PaintFuncsT</a> to render a color glyph by
--   glyph index.
--   
--   <i>Since: 8.2.0</i>
type PaintColorGlyphFuncT = PaintFuncsT -> Ptr () -> Word32 -> FontT -> IO Int32

-- | A virtual method for the <a>PaintFuncsT</a> to render a color glyph by
--   glyph index.
--   
--   <i>Since: 8.2.0</i>
type PaintColorGlyphFuncT_WithClosures = PaintFuncsT -> Ptr () -> Word32 -> FontT -> Ptr () -> IO Int32

-- | A simple wrapper that ignores the closure arguments.
drop_closures_PaintColorGlyphFuncT :: PaintColorGlyphFuncT -> PaintColorGlyphFuncT_WithClosures

-- | Given a pointer to a foreign C function, wrap it into a function
--   callable from Haskell.
dynamic_PaintColorGlyphFuncT :: (HasCallStack, MonadIO m) => FunPtr C_PaintColorGlyphFuncT -> PaintFuncsT -> Ptr () -> Word32 -> FontT -> Ptr () -> m Int32

-- | Wrap the callback into a <a>GClosure</a>.
genClosure_PaintColorGlyphFuncT :: MonadIO m => PaintColorGlyphFuncT -> m (GClosure C_PaintColorGlyphFuncT)

-- | Generate a function pointer callable from C code, from a
--   <a>C_PaintColorGlyphFuncT</a>.
mk_PaintColorGlyphFuncT :: C_PaintColorGlyphFuncT -> IO (FunPtr C_PaintColorGlyphFuncT)

-- | A convenience synonym for <tt><a>Nothing</a> :: <a>Maybe</a>
--   <a>PaintColorGlyphFuncT</a></tt>.
noPaintColorGlyphFuncT :: Maybe PaintColorGlyphFuncT

-- | A convenience synonym for <tt><a>Nothing</a> :: <a>Maybe</a>
--   <a>PaintColorGlyphFuncT_WithClosures</a></tt>.
noPaintColorGlyphFuncT_WithClosures :: Maybe PaintColorGlyphFuncT_WithClosures

-- | Wrap a <a>PaintColorGlyphFuncT</a> into a
--   <a>C_PaintColorGlyphFuncT</a>.
wrap_PaintColorGlyphFuncT :: Maybe (Ptr (FunPtr C_PaintColorGlyphFuncT)) -> PaintColorGlyphFuncT_WithClosures -> C_PaintColorGlyphFuncT

-- | Type for the callback on the (unwrapped) C side.
type C_PaintCustomPaletteColorFuncT = Ptr PaintFuncsT -> Ptr () -> Word32 -> Ptr Word32 -> Ptr () -> IO Int32

-- | A virtual method for the <a>PaintFuncsT</a> to fetch a color from the
--   custom color palette.
--   
--   Custom palette colors override the colors from the fonts selected
--   color palette. It is not necessary to override all palette entries;
--   for entries that should be taken from the font palette, return
--   <tt>false</tt>.
--   
--   This function might get called multiple times, but the custom palette
--   is expected to remain unchanged for duration of a
--   <a>fontPaintGlyph</a> call.
--   
--   <i>Since: 7.0.0</i>
type PaintCustomPaletteColorFuncT = PaintFuncsT -> Ptr () -> Word32 -> IO (Int32, Word32)

-- | A virtual method for the <a>PaintFuncsT</a> to fetch a color from the
--   custom color palette.
--   
--   Custom palette colors override the colors from the fonts selected
--   color palette. It is not necessary to override all palette entries;
--   for entries that should be taken from the font palette, return
--   <tt>false</tt>.
--   
--   This function might get called multiple times, but the custom palette
--   is expected to remain unchanged for duration of a
--   <a>fontPaintGlyph</a> call.
--   
--   <i>Since: 7.0.0</i>
type PaintCustomPaletteColorFuncT_WithClosures = PaintFuncsT -> Ptr () -> Word32 -> Ptr () -> IO (Int32, Word32)

-- | A simple wrapper that ignores the closure arguments.
drop_closures_PaintCustomPaletteColorFuncT :: PaintCustomPaletteColorFuncT -> PaintCustomPaletteColorFuncT_WithClosures

-- | Given a pointer to a foreign C function, wrap it into a function
--   callable from Haskell.
dynamic_PaintCustomPaletteColorFuncT :: (HasCallStack, MonadIO m) => FunPtr C_PaintCustomPaletteColorFuncT -> PaintFuncsT -> Ptr () -> Word32 -> Ptr () -> m (Int32, Word32)

-- | Wrap the callback into a <a>GClosure</a>.
genClosure_PaintCustomPaletteColorFuncT :: MonadIO m => PaintCustomPaletteColorFuncT -> m (GClosure C_PaintCustomPaletteColorFuncT)

-- | Generate a function pointer callable from C code, from a
--   <a>C_PaintCustomPaletteColorFuncT</a>.
mk_PaintCustomPaletteColorFuncT :: C_PaintCustomPaletteColorFuncT -> IO (FunPtr C_PaintCustomPaletteColorFuncT)

-- | A convenience synonym for <tt><a>Nothing</a> :: <a>Maybe</a>
--   <a>PaintCustomPaletteColorFuncT</a></tt>.
noPaintCustomPaletteColorFuncT :: Maybe PaintCustomPaletteColorFuncT

-- | A convenience synonym for <tt><a>Nothing</a> :: <a>Maybe</a>
--   <a>PaintCustomPaletteColorFuncT_WithClosures</a></tt>.
noPaintCustomPaletteColorFuncT_WithClosures :: Maybe PaintCustomPaletteColorFuncT_WithClosures

-- | Wrap a <a>PaintCustomPaletteColorFuncT</a> into a
--   <a>C_PaintCustomPaletteColorFuncT</a>.
wrap_PaintCustomPaletteColorFuncT :: Maybe (Ptr (FunPtr C_PaintCustomPaletteColorFuncT)) -> PaintCustomPaletteColorFuncT_WithClosures -> C_PaintCustomPaletteColorFuncT

-- | Type for the callback on the (unwrapped) C side.
type C_PaintImageFuncT = Ptr PaintFuncsT -> Ptr () -> Ptr BlobT -> Word32 -> Word32 -> Word32 -> CFloat -> Ptr GlyphExtentsT -> Ptr () -> IO Int32

-- | A virtual method for the <a>PaintFuncsT</a> to paint a glyph image.
--   
--   This method is called for glyphs with image blobs in the CBDT, sbix or
--   SVG tables. The <i><tt>format</tt></i> identifies the kind of data
--   that is contained in <i><tt>image</tt></i>. Possible values include
--   <tt><i>HB_PAINT_IMAGE_FORMAT_PNG</i></tt>,
--   <tt><i>HB_PAINT_IMAGE_FORMAT_SVG</i></tt> and
--   <tt><i>HB_PAINT_IMAGE_FORMAT_BGRA</i></tt>.
--   
--   The image dimensions and glyph extents are provided if available, and
--   should be used to size and position the image.
--   
--   <i>Since: 7.0.0</i>
type PaintImageFuncT = PaintFuncsT -> Ptr () -> BlobT -> Word32 -> Word32 -> Word32 -> Float -> Maybe GlyphExtentsT -> IO Int32

-- | A virtual method for the <a>PaintFuncsT</a> to paint a glyph image.
--   
--   This method is called for glyphs with image blobs in the CBDT, sbix or
--   SVG tables. The <i><tt>format</tt></i> identifies the kind of data
--   that is contained in <i><tt>image</tt></i>. Possible values include
--   <tt><i>HB_PAINT_IMAGE_FORMAT_PNG</i></tt>,
--   <tt><i>HB_PAINT_IMAGE_FORMAT_SVG</i></tt> and
--   <tt><i>HB_PAINT_IMAGE_FORMAT_BGRA</i></tt>.
--   
--   The image dimensions and glyph extents are provided if available, and
--   should be used to size and position the image.
--   
--   <i>Since: 7.0.0</i>
type PaintImageFuncT_WithClosures = PaintFuncsT -> Ptr () -> BlobT -> Word32 -> Word32 -> Word32 -> Float -> Maybe GlyphExtentsT -> Ptr () -> IO Int32

-- | A simple wrapper that ignores the closure arguments.
drop_closures_PaintImageFuncT :: PaintImageFuncT -> PaintImageFuncT_WithClosures

-- | Given a pointer to a foreign C function, wrap it into a function
--   callable from Haskell.
dynamic_PaintImageFuncT :: (HasCallStack, MonadIO m) => FunPtr C_PaintImageFuncT -> PaintFuncsT -> Ptr () -> BlobT -> Word32 -> Word32 -> Word32 -> Float -> Maybe GlyphExtentsT -> Ptr () -> m Int32

-- | Wrap the callback into a <a>GClosure</a>.
genClosure_PaintImageFuncT :: MonadIO m => PaintImageFuncT -> m (GClosure C_PaintImageFuncT)

-- | Generate a function pointer callable from C code, from a
--   <a>C_PaintImageFuncT</a>.
mk_PaintImageFuncT :: C_PaintImageFuncT -> IO (FunPtr C_PaintImageFuncT)

-- | A convenience synonym for <tt><a>Nothing</a> :: <a>Maybe</a>
--   <a>PaintImageFuncT</a></tt>.
noPaintImageFuncT :: Maybe PaintImageFuncT

-- | A convenience synonym for <tt><a>Nothing</a> :: <a>Maybe</a>
--   <a>PaintImageFuncT_WithClosures</a></tt>.
noPaintImageFuncT_WithClosures :: Maybe PaintImageFuncT_WithClosures

-- | Wrap a <a>PaintImageFuncT</a> into a <a>C_PaintImageFuncT</a>.
wrap_PaintImageFuncT :: Maybe (Ptr (FunPtr C_PaintImageFuncT)) -> PaintImageFuncT_WithClosures -> C_PaintImageFuncT

-- | Type for the callback on the (unwrapped) C side.
type C_PaintLinearGradientFuncT = Ptr PaintFuncsT -> Ptr () -> Ptr ColorLineT -> CFloat -> CFloat -> CFloat -> CFloat -> CFloat -> CFloat -> Ptr () -> IO ()

-- | A virtual method for the <a>PaintFuncsT</a> to paint a linear gradient
--   everywhere within the current clip.
--   
--   The <i><tt>colorLine</tt></i> object contains information about the
--   colors of the gradients. It is only valid for the duration of the
--   callback, you cannot keep it around.
--   
--   The coordinates of the points are interpreted according to the current
--   transform.
--   
--   See the OpenType spec <a>COLR</a> section for details on how the
--   points define the direction of the gradient, and how to interpret the
--   <i><tt>colorLine</tt></i>.
--   
--   <i>Since: 7.0.0</i>
type PaintLinearGradientFuncT = PaintFuncsT -> Ptr () -> ColorLineT -> Float -> Float -> Float -> Float -> Float -> Float -> IO ()

-- | A virtual method for the <a>PaintFuncsT</a> to paint a linear gradient
--   everywhere within the current clip.
--   
--   The <i><tt>colorLine</tt></i> object contains information about the
--   colors of the gradients. It is only valid for the duration of the
--   callback, you cannot keep it around.
--   
--   The coordinates of the points are interpreted according to the current
--   transform.
--   
--   See the OpenType spec <a>COLR</a> section for details on how the
--   points define the direction of the gradient, and how to interpret the
--   <i><tt>colorLine</tt></i>.
--   
--   <i>Since: 7.0.0</i>
type PaintLinearGradientFuncT_WithClosures = PaintFuncsT -> Ptr () -> ColorLineT -> Float -> Float -> Float -> Float -> Float -> Float -> Ptr () -> IO ()

-- | A simple wrapper that ignores the closure arguments.
drop_closures_PaintLinearGradientFuncT :: PaintLinearGradientFuncT -> PaintLinearGradientFuncT_WithClosures

-- | Given a pointer to a foreign C function, wrap it into a function
--   callable from Haskell.
dynamic_PaintLinearGradientFuncT :: (HasCallStack, MonadIO m) => FunPtr C_PaintLinearGradientFuncT -> PaintFuncsT -> Ptr () -> ColorLineT -> Float -> Float -> Float -> Float -> Float -> Float -> Ptr () -> m ()

-- | Wrap the callback into a <a>GClosure</a>.
genClosure_PaintLinearGradientFuncT :: MonadIO m => PaintLinearGradientFuncT -> m (GClosure C_PaintLinearGradientFuncT)

-- | Generate a function pointer callable from C code, from a
--   <a>C_PaintLinearGradientFuncT</a>.
mk_PaintLinearGradientFuncT :: C_PaintLinearGradientFuncT -> IO (FunPtr C_PaintLinearGradientFuncT)

-- | A convenience synonym for <tt><a>Nothing</a> :: <a>Maybe</a>
--   <a>PaintLinearGradientFuncT</a></tt>.
noPaintLinearGradientFuncT :: Maybe PaintLinearGradientFuncT

-- | A convenience synonym for <tt><a>Nothing</a> :: <a>Maybe</a>
--   <a>PaintLinearGradientFuncT_WithClosures</a></tt>.
noPaintLinearGradientFuncT_WithClosures :: Maybe PaintLinearGradientFuncT_WithClosures

-- | Wrap a <a>PaintLinearGradientFuncT</a> into a
--   <a>C_PaintLinearGradientFuncT</a>.
wrap_PaintLinearGradientFuncT :: Maybe (Ptr (FunPtr C_PaintLinearGradientFuncT)) -> PaintLinearGradientFuncT_WithClosures -> C_PaintLinearGradientFuncT

-- | Type for the callback on the (unwrapped) C side.
type C_PaintPopClipFuncT = Ptr PaintFuncsT -> Ptr () -> Ptr () -> IO ()

-- | A virtual method for the <a>PaintFuncsT</a> to undo the effect of a
--   prior call to the
--   <tt><i>hb_paint_funcs_push_clip_glyph_func_t</i></tt> or
--   <tt><i>hb_paint_funcs_push_clip_rectangle_func_t</i></tt> vfuncs.
--   
--   <i>Since: 7.0.0</i>
type PaintPopClipFuncT = PaintFuncsT -> Ptr () -> IO ()

-- | A virtual method for the <a>PaintFuncsT</a> to undo the effect of a
--   prior call to the
--   <tt><i>hb_paint_funcs_push_clip_glyph_func_t</i></tt> or
--   <tt><i>hb_paint_funcs_push_clip_rectangle_func_t</i></tt> vfuncs.
--   
--   <i>Since: 7.0.0</i>
type PaintPopClipFuncT_WithClosures = PaintFuncsT -> Ptr () -> Ptr () -> IO ()

-- | A simple wrapper that ignores the closure arguments.
drop_closures_PaintPopClipFuncT :: PaintPopClipFuncT -> PaintPopClipFuncT_WithClosures

-- | Given a pointer to a foreign C function, wrap it into a function
--   callable from Haskell.
dynamic_PaintPopClipFuncT :: (HasCallStack, MonadIO m) => FunPtr C_PaintPopClipFuncT -> PaintFuncsT -> Ptr () -> Ptr () -> m ()

-- | Wrap the callback into a <a>GClosure</a>.
genClosure_PaintPopClipFuncT :: MonadIO m => PaintPopClipFuncT -> m (GClosure C_PaintPopClipFuncT)

-- | Generate a function pointer callable from C code, from a
--   <a>C_PaintPopClipFuncT</a>.
mk_PaintPopClipFuncT :: C_PaintPopClipFuncT -> IO (FunPtr C_PaintPopClipFuncT)

-- | A convenience synonym for <tt><a>Nothing</a> :: <a>Maybe</a>
--   <a>PaintPopClipFuncT</a></tt>.
noPaintPopClipFuncT :: Maybe PaintPopClipFuncT

-- | A convenience synonym for <tt><a>Nothing</a> :: <a>Maybe</a>
--   <a>PaintPopClipFuncT_WithClosures</a></tt>.
noPaintPopClipFuncT_WithClosures :: Maybe PaintPopClipFuncT_WithClosures

-- | Wrap a <a>PaintPopClipFuncT</a> into a <a>C_PaintPopClipFuncT</a>.
wrap_PaintPopClipFuncT :: Maybe (Ptr (FunPtr C_PaintPopClipFuncT)) -> PaintPopClipFuncT_WithClosures -> C_PaintPopClipFuncT

-- | Type for the callback on the (unwrapped) C side.
type C_PaintPopGroupFuncT = Ptr PaintFuncsT -> Ptr () -> CUInt -> Ptr () -> IO ()

-- | A virtual method for the <a>PaintFuncsT</a> to undo the effect of a
--   prior call to the <tt><i>hb_paint_funcs_push_group_func_t</i></tt>
--   vfunc.
--   
--   This call stops the redirection to the intermediate surface, and then
--   composites it on the previous surface, using the compositing mode
--   passed to this call.
--   
--   <i>Since: 7.0.0</i>
type PaintPopGroupFuncT = PaintFuncsT -> Ptr () -> PaintCompositeModeT -> IO ()

-- | A virtual method for the <a>PaintFuncsT</a> to undo the effect of a
--   prior call to the <tt><i>hb_paint_funcs_push_group_func_t</i></tt>
--   vfunc.
--   
--   This call stops the redirection to the intermediate surface, and then
--   composites it on the previous surface, using the compositing mode
--   passed to this call.
--   
--   <i>Since: 7.0.0</i>
type PaintPopGroupFuncT_WithClosures = PaintFuncsT -> Ptr () -> PaintCompositeModeT -> Ptr () -> IO ()

-- | A simple wrapper that ignores the closure arguments.
drop_closures_PaintPopGroupFuncT :: PaintPopGroupFuncT -> PaintPopGroupFuncT_WithClosures

-- | Given a pointer to a foreign C function, wrap it into a function
--   callable from Haskell.
dynamic_PaintPopGroupFuncT :: (HasCallStack, MonadIO m) => FunPtr C_PaintPopGroupFuncT -> PaintFuncsT -> Ptr () -> PaintCompositeModeT -> Ptr () -> m ()

-- | Wrap the callback into a <a>GClosure</a>.
genClosure_PaintPopGroupFuncT :: MonadIO m => PaintPopGroupFuncT -> m (GClosure C_PaintPopGroupFuncT)

-- | Generate a function pointer callable from C code, from a
--   <a>C_PaintPopGroupFuncT</a>.
mk_PaintPopGroupFuncT :: C_PaintPopGroupFuncT -> IO (FunPtr C_PaintPopGroupFuncT)

-- | A convenience synonym for <tt><a>Nothing</a> :: <a>Maybe</a>
--   <a>PaintPopGroupFuncT</a></tt>.
noPaintPopGroupFuncT :: Maybe PaintPopGroupFuncT

-- | A convenience synonym for <tt><a>Nothing</a> :: <a>Maybe</a>
--   <a>PaintPopGroupFuncT_WithClosures</a></tt>.
noPaintPopGroupFuncT_WithClosures :: Maybe PaintPopGroupFuncT_WithClosures

-- | Wrap a <a>PaintPopGroupFuncT</a> into a <a>C_PaintPopGroupFuncT</a>.
wrap_PaintPopGroupFuncT :: Maybe (Ptr (FunPtr C_PaintPopGroupFuncT)) -> PaintPopGroupFuncT_WithClosures -> C_PaintPopGroupFuncT

-- | Type for the callback on the (unwrapped) C side.
type C_PaintPopTransformFuncT = Ptr PaintFuncsT -> Ptr () -> Ptr () -> IO ()

-- | A virtual method for the <a>PaintFuncsT</a> to undo the effect of a
--   prior call to the <tt><i>hb_paint_funcs_push_transform_func_t</i></tt>
--   vfunc.
--   
--   <i>Since: 7.0.0</i>
type PaintPopTransformFuncT = PaintFuncsT -> Ptr () -> IO ()

-- | A virtual method for the <a>PaintFuncsT</a> to undo the effect of a
--   prior call to the <tt><i>hb_paint_funcs_push_transform_func_t</i></tt>
--   vfunc.
--   
--   <i>Since: 7.0.0</i>
type PaintPopTransformFuncT_WithClosures = PaintFuncsT -> Ptr () -> Ptr () -> IO ()

-- | A simple wrapper that ignores the closure arguments.
drop_closures_PaintPopTransformFuncT :: PaintPopTransformFuncT -> PaintPopTransformFuncT_WithClosures

-- | Given a pointer to a foreign C function, wrap it into a function
--   callable from Haskell.
dynamic_PaintPopTransformFuncT :: (HasCallStack, MonadIO m) => FunPtr C_PaintPopTransformFuncT -> PaintFuncsT -> Ptr () -> Ptr () -> m ()

-- | Wrap the callback into a <a>GClosure</a>.
genClosure_PaintPopTransformFuncT :: MonadIO m => PaintPopTransformFuncT -> m (GClosure C_PaintPopTransformFuncT)

-- | Generate a function pointer callable from C code, from a
--   <a>C_PaintPopTransformFuncT</a>.
mk_PaintPopTransformFuncT :: C_PaintPopTransformFuncT -> IO (FunPtr C_PaintPopTransformFuncT)

-- | A convenience synonym for <tt><a>Nothing</a> :: <a>Maybe</a>
--   <a>PaintPopTransformFuncT</a></tt>.
noPaintPopTransformFuncT :: Maybe PaintPopTransformFuncT

-- | A convenience synonym for <tt><a>Nothing</a> :: <a>Maybe</a>
--   <a>PaintPopTransformFuncT_WithClosures</a></tt>.
noPaintPopTransformFuncT_WithClosures :: Maybe PaintPopTransformFuncT_WithClosures

-- | Wrap a <a>PaintPopTransformFuncT</a> into a
--   <a>C_PaintPopTransformFuncT</a>.
wrap_PaintPopTransformFuncT :: Maybe (Ptr (FunPtr C_PaintPopTransformFuncT)) -> PaintPopTransformFuncT_WithClosures -> C_PaintPopTransformFuncT

-- | Type for the callback on the (unwrapped) C side.
type C_PaintPushClipGlyphFuncT = Ptr PaintFuncsT -> Ptr () -> Word32 -> Ptr FontT -> Ptr () -> IO ()

-- | A virtual method for the <a>PaintFuncsT</a> to clip subsequent paint
--   calls to the outline of a glyph.
--   
--   The coordinates of the glyph outline are expected in the current
--   <i><tt>font</tt></i> scale (ie. the results of calling
--   <a>fontDrawGlyph</a> with <i><tt>font</tt></i>). The outline is
--   transformed by the current transform.
--   
--   This clip is applied in addition to the current clip, and remains in
--   effect until a matching call to the
--   <tt><i>hb_paint_funcs_pop_clip_func_t</i></tt> vfunc.
--   
--   <i>Since: 7.0.0</i>
type PaintPushClipGlyphFuncT = PaintFuncsT -> Ptr () -> Word32 -> FontT -> IO ()

-- | A virtual method for the <a>PaintFuncsT</a> to clip subsequent paint
--   calls to the outline of a glyph.
--   
--   The coordinates of the glyph outline are expected in the current
--   <i><tt>font</tt></i> scale (ie. the results of calling
--   <a>fontDrawGlyph</a> with <i><tt>font</tt></i>). The outline is
--   transformed by the current transform.
--   
--   This clip is applied in addition to the current clip, and remains in
--   effect until a matching call to the
--   <tt><i>hb_paint_funcs_pop_clip_func_t</i></tt> vfunc.
--   
--   <i>Since: 7.0.0</i>
type PaintPushClipGlyphFuncT_WithClosures = PaintFuncsT -> Ptr () -> Word32 -> FontT -> Ptr () -> IO ()

-- | A simple wrapper that ignores the closure arguments.
drop_closures_PaintPushClipGlyphFuncT :: PaintPushClipGlyphFuncT -> PaintPushClipGlyphFuncT_WithClosures

-- | Given a pointer to a foreign C function, wrap it into a function
--   callable from Haskell.
dynamic_PaintPushClipGlyphFuncT :: (HasCallStack, MonadIO m) => FunPtr C_PaintPushClipGlyphFuncT -> PaintFuncsT -> Ptr () -> Word32 -> FontT -> Ptr () -> m ()

-- | Wrap the callback into a <a>GClosure</a>.
genClosure_PaintPushClipGlyphFuncT :: MonadIO m => PaintPushClipGlyphFuncT -> m (GClosure C_PaintPushClipGlyphFuncT)

-- | Generate a function pointer callable from C code, from a
--   <a>C_PaintPushClipGlyphFuncT</a>.
mk_PaintPushClipGlyphFuncT :: C_PaintPushClipGlyphFuncT -> IO (FunPtr C_PaintPushClipGlyphFuncT)

-- | A convenience synonym for <tt><a>Nothing</a> :: <a>Maybe</a>
--   <a>PaintPushClipGlyphFuncT</a></tt>.
noPaintPushClipGlyphFuncT :: Maybe PaintPushClipGlyphFuncT

-- | A convenience synonym for <tt><a>Nothing</a> :: <a>Maybe</a>
--   <a>PaintPushClipGlyphFuncT_WithClosures</a></tt>.
noPaintPushClipGlyphFuncT_WithClosures :: Maybe PaintPushClipGlyphFuncT_WithClosures

-- | Wrap a <a>PaintPushClipGlyphFuncT</a> into a
--   <a>C_PaintPushClipGlyphFuncT</a>.
wrap_PaintPushClipGlyphFuncT :: Maybe (Ptr (FunPtr C_PaintPushClipGlyphFuncT)) -> PaintPushClipGlyphFuncT_WithClosures -> C_PaintPushClipGlyphFuncT

-- | Type for the callback on the (unwrapped) C side.
type C_PaintPushClipRectangleFuncT = Ptr PaintFuncsT -> Ptr () -> CFloat -> CFloat -> CFloat -> CFloat -> Ptr () -> IO ()

-- | A virtual method for the <a>PaintFuncsT</a> to clip subsequent paint
--   calls to a rectangle.
--   
--   The coordinates of the rectangle are interpreted according to the
--   current transform.
--   
--   This clip is applied in addition to the current clip, and remains in
--   effect until a matching call to the
--   <tt><i>hb_paint_funcs_pop_clip_func_t</i></tt> vfunc.
--   
--   <i>Since: 7.0.0</i>
type PaintPushClipRectangleFuncT = PaintFuncsT -> Ptr () -> Float -> Float -> Float -> Float -> IO ()

-- | A virtual method for the <a>PaintFuncsT</a> to clip subsequent paint
--   calls to a rectangle.
--   
--   The coordinates of the rectangle are interpreted according to the
--   current transform.
--   
--   This clip is applied in addition to the current clip, and remains in
--   effect until a matching call to the
--   <tt><i>hb_paint_funcs_pop_clip_func_t</i></tt> vfunc.
--   
--   <i>Since: 7.0.0</i>
type PaintPushClipRectangleFuncT_WithClosures = PaintFuncsT -> Ptr () -> Float -> Float -> Float -> Float -> Ptr () -> IO ()

-- | A simple wrapper that ignores the closure arguments.
drop_closures_PaintPushClipRectangleFuncT :: PaintPushClipRectangleFuncT -> PaintPushClipRectangleFuncT_WithClosures

-- | Given a pointer to a foreign C function, wrap it into a function
--   callable from Haskell.
dynamic_PaintPushClipRectangleFuncT :: (HasCallStack, MonadIO m) => FunPtr C_PaintPushClipRectangleFuncT -> PaintFuncsT -> Ptr () -> Float -> Float -> Float -> Float -> Ptr () -> m ()

-- | Wrap the callback into a <a>GClosure</a>.
genClosure_PaintPushClipRectangleFuncT :: MonadIO m => PaintPushClipRectangleFuncT -> m (GClosure C_PaintPushClipRectangleFuncT)

-- | Generate a function pointer callable from C code, from a
--   <a>C_PaintPushClipRectangleFuncT</a>.
mk_PaintPushClipRectangleFuncT :: C_PaintPushClipRectangleFuncT -> IO (FunPtr C_PaintPushClipRectangleFuncT)

-- | A convenience synonym for <tt><a>Nothing</a> :: <a>Maybe</a>
--   <a>PaintPushClipRectangleFuncT</a></tt>.
noPaintPushClipRectangleFuncT :: Maybe PaintPushClipRectangleFuncT

-- | A convenience synonym for <tt><a>Nothing</a> :: <a>Maybe</a>
--   <a>PaintPushClipRectangleFuncT_WithClosures</a></tt>.
noPaintPushClipRectangleFuncT_WithClosures :: Maybe PaintPushClipRectangleFuncT_WithClosures

-- | Wrap a <a>PaintPushClipRectangleFuncT</a> into a
--   <a>C_PaintPushClipRectangleFuncT</a>.
wrap_PaintPushClipRectangleFuncT :: Maybe (Ptr (FunPtr C_PaintPushClipRectangleFuncT)) -> PaintPushClipRectangleFuncT_WithClosures -> C_PaintPushClipRectangleFuncT

-- | Type for the callback on the (unwrapped) C side.
type C_PaintPushGroupFuncT = Ptr PaintFuncsT -> Ptr () -> Ptr () -> IO ()

-- | A virtual method for the <a>PaintFuncsT</a> to use an intermediate
--   surface for subsequent paint calls.
--   
--   The drawing will be redirected to an intermediate surface until a
--   matching call to the <tt><i>hb_paint_funcs_pop_group_func_t</i></tt>
--   vfunc.
--   
--   <i>Since: 7.0.0</i>
type PaintPushGroupFuncT = PaintFuncsT -> Ptr () -> IO ()

-- | A virtual method for the <a>PaintFuncsT</a> to use an intermediate
--   surface for subsequent paint calls.
--   
--   The drawing will be redirected to an intermediate surface until a
--   matching call to the <tt><i>hb_paint_funcs_pop_group_func_t</i></tt>
--   vfunc.
--   
--   <i>Since: 7.0.0</i>
type PaintPushGroupFuncT_WithClosures = PaintFuncsT -> Ptr () -> Ptr () -> IO ()

-- | A simple wrapper that ignores the closure arguments.
drop_closures_PaintPushGroupFuncT :: PaintPushGroupFuncT -> PaintPushGroupFuncT_WithClosures

-- | Given a pointer to a foreign C function, wrap it into a function
--   callable from Haskell.
dynamic_PaintPushGroupFuncT :: (HasCallStack, MonadIO m) => FunPtr C_PaintPushGroupFuncT -> PaintFuncsT -> Ptr () -> Ptr () -> m ()

-- | Wrap the callback into a <a>GClosure</a>.
genClosure_PaintPushGroupFuncT :: MonadIO m => PaintPushGroupFuncT -> m (GClosure C_PaintPushGroupFuncT)

-- | Generate a function pointer callable from C code, from a
--   <a>C_PaintPushGroupFuncT</a>.
mk_PaintPushGroupFuncT :: C_PaintPushGroupFuncT -> IO (FunPtr C_PaintPushGroupFuncT)

-- | A convenience synonym for <tt><a>Nothing</a> :: <a>Maybe</a>
--   <a>PaintPushGroupFuncT</a></tt>.
noPaintPushGroupFuncT :: Maybe PaintPushGroupFuncT

-- | A convenience synonym for <tt><a>Nothing</a> :: <a>Maybe</a>
--   <a>PaintPushGroupFuncT_WithClosures</a></tt>.
noPaintPushGroupFuncT_WithClosures :: Maybe PaintPushGroupFuncT_WithClosures

-- | Wrap a <a>PaintPushGroupFuncT</a> into a <a>C_PaintPushGroupFuncT</a>.
wrap_PaintPushGroupFuncT :: Maybe (Ptr (FunPtr C_PaintPushGroupFuncT)) -> PaintPushGroupFuncT_WithClosures -> C_PaintPushGroupFuncT

-- | Type for the callback on the (unwrapped) C side.
type C_PaintPushTransformFuncT = Ptr PaintFuncsT -> Ptr () -> CFloat -> CFloat -> CFloat -> CFloat -> CFloat -> CFloat -> Ptr () -> IO ()

-- | A virtual method for the <a>PaintFuncsT</a> to apply a transform to
--   subsequent paint calls.
--   
--   This transform is applied after the current transform, and remains in
--   effect until a matching call to the
--   <tt><i>hb_paint_funcs_pop_transform_func_t</i></tt> vfunc.
--   
--   <i>Since: 7.0.0</i>
type PaintPushTransformFuncT = PaintFuncsT -> Ptr () -> Float -> Float -> Float -> Float -> Float -> Float -> IO ()

-- | A virtual method for the <a>PaintFuncsT</a> to apply a transform to
--   subsequent paint calls.
--   
--   This transform is applied after the current transform, and remains in
--   effect until a matching call to the
--   <tt><i>hb_paint_funcs_pop_transform_func_t</i></tt> vfunc.
--   
--   <i>Since: 7.0.0</i>
type PaintPushTransformFuncT_WithClosures = PaintFuncsT -> Ptr () -> Float -> Float -> Float -> Float -> Float -> Float -> Ptr () -> IO ()

-- | A simple wrapper that ignores the closure arguments.
drop_closures_PaintPushTransformFuncT :: PaintPushTransformFuncT -> PaintPushTransformFuncT_WithClosures

-- | Given a pointer to a foreign C function, wrap it into a function
--   callable from Haskell.
dynamic_PaintPushTransformFuncT :: (HasCallStack, MonadIO m) => FunPtr C_PaintPushTransformFuncT -> PaintFuncsT -> Ptr () -> Float -> Float -> Float -> Float -> Float -> Float -> Ptr () -> m ()

-- | Wrap the callback into a <a>GClosure</a>.
genClosure_PaintPushTransformFuncT :: MonadIO m => PaintPushTransformFuncT -> m (GClosure C_PaintPushTransformFuncT)

-- | Generate a function pointer callable from C code, from a
--   <a>C_PaintPushTransformFuncT</a>.
mk_PaintPushTransformFuncT :: C_PaintPushTransformFuncT -> IO (FunPtr C_PaintPushTransformFuncT)

-- | A convenience synonym for <tt><a>Nothing</a> :: <a>Maybe</a>
--   <a>PaintPushTransformFuncT</a></tt>.
noPaintPushTransformFuncT :: Maybe PaintPushTransformFuncT

-- | A convenience synonym for <tt><a>Nothing</a> :: <a>Maybe</a>
--   <a>PaintPushTransformFuncT_WithClosures</a></tt>.
noPaintPushTransformFuncT_WithClosures :: Maybe PaintPushTransformFuncT_WithClosures

-- | Wrap a <a>PaintPushTransformFuncT</a> into a
--   <a>C_PaintPushTransformFuncT</a>.
wrap_PaintPushTransformFuncT :: Maybe (Ptr (FunPtr C_PaintPushTransformFuncT)) -> PaintPushTransformFuncT_WithClosures -> C_PaintPushTransformFuncT

-- | Type for the callback on the (unwrapped) C side.
type C_PaintRadialGradientFuncT = Ptr PaintFuncsT -> Ptr () -> Ptr ColorLineT -> CFloat -> CFloat -> CFloat -> CFloat -> CFloat -> CFloat -> Ptr () -> IO ()

-- | A virtual method for the <a>PaintFuncsT</a> to paint a radial gradient
--   everywhere within the current clip.
--   
--   The <i><tt>colorLine</tt></i> object contains information about the
--   colors of the gradients. It is only valid for the duration of the
--   callback, you cannot keep it around.
--   
--   The coordinates of the points are interpreted according to the current
--   transform.
--   
--   See the OpenType spec <a>COLR</a> section for details on how the
--   points define the direction of the gradient, and how to interpret the
--   <i><tt>colorLine</tt></i>.
--   
--   <i>Since: 7.0.0</i>
type PaintRadialGradientFuncT = PaintFuncsT -> Ptr () -> ColorLineT -> Float -> Float -> Float -> Float -> Float -> Float -> IO ()

-- | A virtual method for the <a>PaintFuncsT</a> to paint a radial gradient
--   everywhere within the current clip.
--   
--   The <i><tt>colorLine</tt></i> object contains information about the
--   colors of the gradients. It is only valid for the duration of the
--   callback, you cannot keep it around.
--   
--   The coordinates of the points are interpreted according to the current
--   transform.
--   
--   See the OpenType spec <a>COLR</a> section for details on how the
--   points define the direction of the gradient, and how to interpret the
--   <i><tt>colorLine</tt></i>.
--   
--   <i>Since: 7.0.0</i>
type PaintRadialGradientFuncT_WithClosures = PaintFuncsT -> Ptr () -> ColorLineT -> Float -> Float -> Float -> Float -> Float -> Float -> Ptr () -> IO ()

-- | A simple wrapper that ignores the closure arguments.
drop_closures_PaintRadialGradientFuncT :: PaintRadialGradientFuncT -> PaintRadialGradientFuncT_WithClosures

-- | Given a pointer to a foreign C function, wrap it into a function
--   callable from Haskell.
dynamic_PaintRadialGradientFuncT :: (HasCallStack, MonadIO m) => FunPtr C_PaintRadialGradientFuncT -> PaintFuncsT -> Ptr () -> ColorLineT -> Float -> Float -> Float -> Float -> Float -> Float -> Ptr () -> m ()

-- | Wrap the callback into a <a>GClosure</a>.
genClosure_PaintRadialGradientFuncT :: MonadIO m => PaintRadialGradientFuncT -> m (GClosure C_PaintRadialGradientFuncT)

-- | Generate a function pointer callable from C code, from a
--   <a>C_PaintRadialGradientFuncT</a>.
mk_PaintRadialGradientFuncT :: C_PaintRadialGradientFuncT -> IO (FunPtr C_PaintRadialGradientFuncT)

-- | A convenience synonym for <tt><a>Nothing</a> :: <a>Maybe</a>
--   <a>PaintRadialGradientFuncT</a></tt>.
noPaintRadialGradientFuncT :: Maybe PaintRadialGradientFuncT

-- | A convenience synonym for <tt><a>Nothing</a> :: <a>Maybe</a>
--   <a>PaintRadialGradientFuncT_WithClosures</a></tt>.
noPaintRadialGradientFuncT_WithClosures :: Maybe PaintRadialGradientFuncT_WithClosures

-- | Wrap a <a>PaintRadialGradientFuncT</a> into a
--   <a>C_PaintRadialGradientFuncT</a>.
wrap_PaintRadialGradientFuncT :: Maybe (Ptr (FunPtr C_PaintRadialGradientFuncT)) -> PaintRadialGradientFuncT_WithClosures -> C_PaintRadialGradientFuncT

-- | Type for the callback on the (unwrapped) C side.
type C_PaintSweepGradientFuncT = Ptr PaintFuncsT -> Ptr () -> Ptr ColorLineT -> CFloat -> CFloat -> CFloat -> CFloat -> Ptr () -> IO ()

-- | A virtual method for the <a>PaintFuncsT</a> to paint a sweep gradient
--   everywhere within the current clip.
--   
--   The <i><tt>colorLine</tt></i> object contains information about the
--   colors of the gradients. It is only valid for the duration of the
--   callback, you cannot keep it around.
--   
--   The coordinates of the points are interpreted according to the current
--   transform.
--   
--   See the OpenType spec <a>COLR</a> section for details on how the
--   points define the direction of the gradient, and how to interpret the
--   <i><tt>colorLine</tt></i>.
--   
--   <i>Since: 7.0.0</i>
type PaintSweepGradientFuncT = PaintFuncsT -> Ptr () -> ColorLineT -> Float -> Float -> Float -> Float -> IO ()

-- | A virtual method for the <a>PaintFuncsT</a> to paint a sweep gradient
--   everywhere within the current clip.
--   
--   The <i><tt>colorLine</tt></i> object contains information about the
--   colors of the gradients. It is only valid for the duration of the
--   callback, you cannot keep it around.
--   
--   The coordinates of the points are interpreted according to the current
--   transform.
--   
--   See the OpenType spec <a>COLR</a> section for details on how the
--   points define the direction of the gradient, and how to interpret the
--   <i><tt>colorLine</tt></i>.
--   
--   <i>Since: 7.0.0</i>
type PaintSweepGradientFuncT_WithClosures = PaintFuncsT -> Ptr () -> ColorLineT -> Float -> Float -> Float -> Float -> Ptr () -> IO ()

-- | A simple wrapper that ignores the closure arguments.
drop_closures_PaintSweepGradientFuncT :: PaintSweepGradientFuncT -> PaintSweepGradientFuncT_WithClosures

-- | Given a pointer to a foreign C function, wrap it into a function
--   callable from Haskell.
dynamic_PaintSweepGradientFuncT :: (HasCallStack, MonadIO m) => FunPtr C_PaintSweepGradientFuncT -> PaintFuncsT -> Ptr () -> ColorLineT -> Float -> Float -> Float -> Float -> Ptr () -> m ()

-- | Wrap the callback into a <a>GClosure</a>.
genClosure_PaintSweepGradientFuncT :: MonadIO m => PaintSweepGradientFuncT -> m (GClosure C_PaintSweepGradientFuncT)

-- | Generate a function pointer callable from C code, from a
--   <a>C_PaintSweepGradientFuncT</a>.
mk_PaintSweepGradientFuncT :: C_PaintSweepGradientFuncT -> IO (FunPtr C_PaintSweepGradientFuncT)

-- | A convenience synonym for <tt><a>Nothing</a> :: <a>Maybe</a>
--   <a>PaintSweepGradientFuncT</a></tt>.
noPaintSweepGradientFuncT :: Maybe PaintSweepGradientFuncT

-- | A convenience synonym for <tt><a>Nothing</a> :: <a>Maybe</a>
--   <a>PaintSweepGradientFuncT_WithClosures</a></tt>.
noPaintSweepGradientFuncT_WithClosures :: Maybe PaintSweepGradientFuncT_WithClosures

-- | Wrap a <a>PaintSweepGradientFuncT</a> into a
--   <a>C_PaintSweepGradientFuncT</a>.
wrap_PaintSweepGradientFuncT :: Maybe (Ptr (FunPtr C_PaintSweepGradientFuncT)) -> PaintSweepGradientFuncT_WithClosures -> C_PaintSweepGradientFuncT

-- | Type for the callback on the (unwrapped) C side.
type C_ReferenceTableFuncT = Ptr FaceT -> Word32 -> Ptr () -> IO Ptr BlobT

-- | Callback function for <a>faceCreateForTables</a>. The
--   <i><tt>tag</tt></i> is the tag of the table to reference, and the
--   special tag <tt><i>HB_TAG_NONE</i></tt> is used to reference the blob
--   of the face itself. If referencing the face blob is not possible, it
--   is recommended to set hb_get_table_tags_func_t on the
--   <i><tt>face</tt></i> to allow <a>faceReferenceBlob</a> to create a
--   face blob out of individual table blobs.
--   
--   <i>Since: 0.9.2</i>
type ReferenceTableFuncT = FaceT -> Word32 -> IO BlobT

-- | Callback function for <a>faceCreateForTables</a>. The
--   <i><tt>tag</tt></i> is the tag of the table to reference, and the
--   special tag <tt><i>HB_TAG_NONE</i></tt> is used to reference the blob
--   of the face itself. If referencing the face blob is not possible, it
--   is recommended to set hb_get_table_tags_func_t on the
--   <i><tt>face</tt></i> to allow <a>faceReferenceBlob</a> to create a
--   face blob out of individual table blobs.
--   
--   <i>Since: 0.9.2</i>
type ReferenceTableFuncT_WithClosures = FaceT -> Word32 -> Ptr () -> IO BlobT

-- | A simple wrapper that ignores the closure arguments.
drop_closures_ReferenceTableFuncT :: ReferenceTableFuncT -> ReferenceTableFuncT_WithClosures

-- | Given a pointer to a foreign C function, wrap it into a function
--   callable from Haskell.
dynamic_ReferenceTableFuncT :: (HasCallStack, MonadIO m) => FunPtr C_ReferenceTableFuncT -> FaceT -> Word32 -> Ptr () -> m BlobT

-- | Wrap the callback into a <a>GClosure</a>.
genClosure_ReferenceTableFuncT :: MonadIO m => ReferenceTableFuncT -> m (GClosure C_ReferenceTableFuncT)

-- | Generate a function pointer callable from C code, from a
--   <a>C_ReferenceTableFuncT</a>.
mk_ReferenceTableFuncT :: C_ReferenceTableFuncT -> IO (FunPtr C_ReferenceTableFuncT)

-- | A convenience synonym for <tt><a>Nothing</a> :: <a>Maybe</a>
--   <a>ReferenceTableFuncT</a></tt>.
noReferenceTableFuncT :: Maybe ReferenceTableFuncT

-- | A convenience synonym for <tt><a>Nothing</a> :: <a>Maybe</a>
--   <a>ReferenceTableFuncT_WithClosures</a></tt>.
noReferenceTableFuncT_WithClosures :: Maybe ReferenceTableFuncT_WithClosures

-- | Wrap a <a>ReferenceTableFuncT</a> into a <a>C_ReferenceTableFuncT</a>.
wrap_ReferenceTableFuncT :: Maybe (Ptr (FunPtr C_ReferenceTableFuncT)) -> ReferenceTableFuncT_WithClosures -> C_ReferenceTableFuncT

-- | Type for the callback on the (unwrapped) C side.
type C_UnicodeCombiningClassFuncT = Ptr UnicodeFuncsT -> Word32 -> Ptr () -> IO CUInt

-- | A virtual method for the <a>UnicodeFuncsT</a> structure.
--   
--   This method should retrieve the Canonical Combining Class (ccc)
--   property for a specified Unicode code point.
type UnicodeCombiningClassFuncT = UnicodeFuncsT -> Word32 -> IO UnicodeCombiningClassT

-- | A virtual method for the <a>UnicodeFuncsT</a> structure.
--   
--   This method should retrieve the Canonical Combining Class (ccc)
--   property for a specified Unicode code point.
type UnicodeCombiningClassFuncT_WithClosures = UnicodeFuncsT -> Word32 -> Ptr () -> IO UnicodeCombiningClassT

-- | A simple wrapper that ignores the closure arguments.
drop_closures_UnicodeCombiningClassFuncT :: UnicodeCombiningClassFuncT -> UnicodeCombiningClassFuncT_WithClosures

-- | Given a pointer to a foreign C function, wrap it into a function
--   callable from Haskell.
dynamic_UnicodeCombiningClassFuncT :: (HasCallStack, MonadIO m) => FunPtr C_UnicodeCombiningClassFuncT -> UnicodeFuncsT -> Word32 -> Ptr () -> m UnicodeCombiningClassT

-- | Wrap the callback into a <a>GClosure</a>.
genClosure_UnicodeCombiningClassFuncT :: MonadIO m => UnicodeCombiningClassFuncT -> m (GClosure C_UnicodeCombiningClassFuncT)

-- | Generate a function pointer callable from C code, from a
--   <a>C_UnicodeCombiningClassFuncT</a>.
mk_UnicodeCombiningClassFuncT :: C_UnicodeCombiningClassFuncT -> IO (FunPtr C_UnicodeCombiningClassFuncT)

-- | A convenience synonym for <tt><a>Nothing</a> :: <a>Maybe</a>
--   <a>UnicodeCombiningClassFuncT</a></tt>.
noUnicodeCombiningClassFuncT :: Maybe UnicodeCombiningClassFuncT

-- | A convenience synonym for <tt><a>Nothing</a> :: <a>Maybe</a>
--   <a>UnicodeCombiningClassFuncT_WithClosures</a></tt>.
noUnicodeCombiningClassFuncT_WithClosures :: Maybe UnicodeCombiningClassFuncT_WithClosures

-- | Wrap a <a>UnicodeCombiningClassFuncT</a> into a
--   <a>C_UnicodeCombiningClassFuncT</a>.
wrap_UnicodeCombiningClassFuncT :: Maybe (Ptr (FunPtr C_UnicodeCombiningClassFuncT)) -> UnicodeCombiningClassFuncT_WithClosures -> C_UnicodeCombiningClassFuncT

-- | Type for the callback on the (unwrapped) C side.
type C_UnicodeComposeFuncT = Ptr UnicodeFuncsT -> Word32 -> Word32 -> Ptr Word32 -> Ptr () -> IO Int32

-- | A virtual method for the <a>UnicodeFuncsT</a> structure.
--   
--   This method should compose a sequence of two input Unicode code points
--   by canonical equivalence, returning the composed code point in a
--   <tt><i>hb_codepoint_t</i></tt> output parameter (if successful). The
--   method must return an <tt><i>hb_bool_t</i></tt> indicating the success
--   of the composition.
type UnicodeComposeFuncT = UnicodeFuncsT -> Word32 -> Word32 -> IO (Int32, Word32)

-- | A virtual method for the <a>UnicodeFuncsT</a> structure.
--   
--   This method should compose a sequence of two input Unicode code points
--   by canonical equivalence, returning the composed code point in a
--   <tt><i>hb_codepoint_t</i></tt> output parameter (if successful). The
--   method must return an <tt><i>hb_bool_t</i></tt> indicating the success
--   of the composition.
type UnicodeComposeFuncT_WithClosures = UnicodeFuncsT -> Word32 -> Word32 -> Ptr () -> IO (Int32, Word32)

-- | A simple wrapper that ignores the closure arguments.
drop_closures_UnicodeComposeFuncT :: UnicodeComposeFuncT -> UnicodeComposeFuncT_WithClosures

-- | Given a pointer to a foreign C function, wrap it into a function
--   callable from Haskell.
dynamic_UnicodeComposeFuncT :: (HasCallStack, MonadIO m) => FunPtr C_UnicodeComposeFuncT -> UnicodeFuncsT -> Word32 -> Word32 -> Ptr () -> m (Int32, Word32)

-- | Wrap the callback into a <a>GClosure</a>.
genClosure_UnicodeComposeFuncT :: MonadIO m => UnicodeComposeFuncT -> m (GClosure C_UnicodeComposeFuncT)

-- | Generate a function pointer callable from C code, from a
--   <a>C_UnicodeComposeFuncT</a>.
mk_UnicodeComposeFuncT :: C_UnicodeComposeFuncT -> IO (FunPtr C_UnicodeComposeFuncT)

-- | A convenience synonym for <tt><a>Nothing</a> :: <a>Maybe</a>
--   <a>UnicodeComposeFuncT</a></tt>.
noUnicodeComposeFuncT :: Maybe UnicodeComposeFuncT

-- | A convenience synonym for <tt><a>Nothing</a> :: <a>Maybe</a>
--   <a>UnicodeComposeFuncT_WithClosures</a></tt>.
noUnicodeComposeFuncT_WithClosures :: Maybe UnicodeComposeFuncT_WithClosures

-- | Wrap a <a>UnicodeComposeFuncT</a> into a <a>C_UnicodeComposeFuncT</a>.
wrap_UnicodeComposeFuncT :: Maybe (Ptr (FunPtr C_UnicodeComposeFuncT)) -> UnicodeComposeFuncT_WithClosures -> C_UnicodeComposeFuncT

-- | Type for the callback on the (unwrapped) C side.
type C_UnicodeDecomposeCompatibilityFuncT = Ptr UnicodeFuncsT -> Word32 -> Word32 -> Ptr () -> IO Word32

-- | Fully decompose <i><tt>u</tt></i> to its Unicode compatibility
--   decomposition. The codepoints of the decomposition will be written to
--   <i><tt>decomposed</tt></i>. The complete length of the decomposition
--   will be returned.
--   
--   If <i><tt>u</tt></i> has no compatibility decomposition, zero should
--   be returned.
--   
--   The Unicode standard guarantees that a buffer of length
--   <a>UNICODE_MAX_DECOMPOSITION_LEN</a> codepoints will always be
--   sufficient for any compatibility decomposition plus an terminating
--   value of 0. Consequently, <i><tt>decompose</tt></i> must be allocated
--   by the caller to be at least this length. Implementations of this
--   function type must ensure that they do not write past the provided
--   array.

-- | <i>Deprecated: (Since version 2.0.0)</i>
type UnicodeDecomposeCompatibilityFuncT = UnicodeFuncsT -> Word32 -> Word32 -> IO Word32

-- | Fully decompose <i><tt>u</tt></i> to its Unicode compatibility
--   decomposition. The codepoints of the decomposition will be written to
--   <i><tt>decomposed</tt></i>. The complete length of the decomposition
--   will be returned.
--   
--   If <i><tt>u</tt></i> has no compatibility decomposition, zero should
--   be returned.
--   
--   The Unicode standard guarantees that a buffer of length
--   <a>UNICODE_MAX_DECOMPOSITION_LEN</a> codepoints will always be
--   sufficient for any compatibility decomposition plus an terminating
--   value of 0. Consequently, <i><tt>decompose</tt></i> must be allocated
--   by the caller to be at least this length. Implementations of this
--   function type must ensure that they do not write past the provided
--   array.
type UnicodeDecomposeCompatibilityFuncT_WithClosures = UnicodeFuncsT -> Word32 -> Word32 -> Ptr () -> IO Word32

-- | A simple wrapper that ignores the closure arguments.
drop_closures_UnicodeDecomposeCompatibilityFuncT :: UnicodeDecomposeCompatibilityFuncT -> UnicodeDecomposeCompatibilityFuncT_WithClosures

-- | Given a pointer to a foreign C function, wrap it into a function
--   callable from Haskell.
dynamic_UnicodeDecomposeCompatibilityFuncT :: (HasCallStack, MonadIO m) => FunPtr C_UnicodeDecomposeCompatibilityFuncT -> UnicodeFuncsT -> Word32 -> Word32 -> Ptr () -> m Word32

-- | Wrap the callback into a <a>GClosure</a>.
genClosure_UnicodeDecomposeCompatibilityFuncT :: MonadIO m => UnicodeDecomposeCompatibilityFuncT -> m (GClosure C_UnicodeDecomposeCompatibilityFuncT)

-- | Generate a function pointer callable from C code, from a
--   <a>C_UnicodeDecomposeCompatibilityFuncT</a>.
mk_UnicodeDecomposeCompatibilityFuncT :: C_UnicodeDecomposeCompatibilityFuncT -> IO (FunPtr C_UnicodeDecomposeCompatibilityFuncT)

-- | A convenience synonym for <tt><a>Nothing</a> :: <a>Maybe</a>
--   <a>UnicodeDecomposeCompatibilityFuncT</a></tt>.
noUnicodeDecomposeCompatibilityFuncT :: Maybe UnicodeDecomposeCompatibilityFuncT

-- | A convenience synonym for <tt><a>Nothing</a> :: <a>Maybe</a>
--   <a>UnicodeDecomposeCompatibilityFuncT_WithClosures</a></tt>.
noUnicodeDecomposeCompatibilityFuncT_WithClosures :: Maybe UnicodeDecomposeCompatibilityFuncT_WithClosures

-- | Wrap a <a>UnicodeDecomposeCompatibilityFuncT</a> into a
--   <a>C_UnicodeDecomposeCompatibilityFuncT</a>.
wrap_UnicodeDecomposeCompatibilityFuncT :: Maybe (Ptr (FunPtr C_UnicodeDecomposeCompatibilityFuncT)) -> UnicodeDecomposeCompatibilityFuncT_WithClosures -> C_UnicodeDecomposeCompatibilityFuncT

-- | Type for the callback on the (unwrapped) C side.
type C_UnicodeDecomposeFuncT = Ptr UnicodeFuncsT -> Word32 -> Ptr Word32 -> Ptr Word32 -> Ptr () -> IO Int32

-- | A virtual method for the <a>UnicodeFuncsT</a> structure.
--   
--   This method should decompose an input Unicode code point, returning
--   the two decomposed code points in <tt><i>hb_codepoint_t</i></tt>
--   output parameters (if successful). The method must return an
--   <tt><i>hb_bool_t</i></tt> indicating the success of the composition.
type UnicodeDecomposeFuncT = UnicodeFuncsT -> Word32 -> IO (Int32, Word32, Word32)

-- | A virtual method for the <a>UnicodeFuncsT</a> structure.
--   
--   This method should decompose an input Unicode code point, returning
--   the two decomposed code points in <tt><i>hb_codepoint_t</i></tt>
--   output parameters (if successful). The method must return an
--   <tt><i>hb_bool_t</i></tt> indicating the success of the composition.
type UnicodeDecomposeFuncT_WithClosures = UnicodeFuncsT -> Word32 -> Ptr () -> IO (Int32, Word32, Word32)

-- | A simple wrapper that ignores the closure arguments.
drop_closures_UnicodeDecomposeFuncT :: UnicodeDecomposeFuncT -> UnicodeDecomposeFuncT_WithClosures

-- | Given a pointer to a foreign C function, wrap it into a function
--   callable from Haskell.
dynamic_UnicodeDecomposeFuncT :: (HasCallStack, MonadIO m) => FunPtr C_UnicodeDecomposeFuncT -> UnicodeFuncsT -> Word32 -> Ptr () -> m (Int32, Word32, Word32)

-- | Wrap the callback into a <a>GClosure</a>.
genClosure_UnicodeDecomposeFuncT :: MonadIO m => UnicodeDecomposeFuncT -> m (GClosure C_UnicodeDecomposeFuncT)

-- | Generate a function pointer callable from C code, from a
--   <a>C_UnicodeDecomposeFuncT</a>.
mk_UnicodeDecomposeFuncT :: C_UnicodeDecomposeFuncT -> IO (FunPtr C_UnicodeDecomposeFuncT)

-- | A convenience synonym for <tt><a>Nothing</a> :: <a>Maybe</a>
--   <a>UnicodeDecomposeFuncT</a></tt>.
noUnicodeDecomposeFuncT :: Maybe UnicodeDecomposeFuncT

-- | A convenience synonym for <tt><a>Nothing</a> :: <a>Maybe</a>
--   <a>UnicodeDecomposeFuncT_WithClosures</a></tt>.
noUnicodeDecomposeFuncT_WithClosures :: Maybe UnicodeDecomposeFuncT_WithClosures

-- | Wrap a <a>UnicodeDecomposeFuncT</a> into a
--   <a>C_UnicodeDecomposeFuncT</a>.
wrap_UnicodeDecomposeFuncT :: Maybe (Ptr (FunPtr C_UnicodeDecomposeFuncT)) -> UnicodeDecomposeFuncT_WithClosures -> C_UnicodeDecomposeFuncT

-- | Type for the callback on the (unwrapped) C side.
type C_UnicodeEastasianWidthFuncT = Ptr UnicodeFuncsT -> Word32 -> Ptr () -> IO Word32

-- | A virtual method for the <a>UnicodeFuncsT</a> structure.

-- | <i>Deprecated: (Since version 2.0.0)</i>
type UnicodeEastasianWidthFuncT = UnicodeFuncsT -> Word32 -> IO Word32

-- | A virtual method for the <a>UnicodeFuncsT</a> structure.
type UnicodeEastasianWidthFuncT_WithClosures = UnicodeFuncsT -> Word32 -> Ptr () -> IO Word32

-- | A simple wrapper that ignores the closure arguments.
drop_closures_UnicodeEastasianWidthFuncT :: UnicodeEastasianWidthFuncT -> UnicodeEastasianWidthFuncT_WithClosures

-- | Given a pointer to a foreign C function, wrap it into a function
--   callable from Haskell.
dynamic_UnicodeEastasianWidthFuncT :: (HasCallStack, MonadIO m) => FunPtr C_UnicodeEastasianWidthFuncT -> UnicodeFuncsT -> Word32 -> Ptr () -> m Word32

-- | Wrap the callback into a <a>GClosure</a>.
genClosure_UnicodeEastasianWidthFuncT :: MonadIO m => UnicodeEastasianWidthFuncT -> m (GClosure C_UnicodeEastasianWidthFuncT)

-- | Generate a function pointer callable from C code, from a
--   <a>C_UnicodeEastasianWidthFuncT</a>.
mk_UnicodeEastasianWidthFuncT :: C_UnicodeEastasianWidthFuncT -> IO (FunPtr C_UnicodeEastasianWidthFuncT)

-- | A convenience synonym for <tt><a>Nothing</a> :: <a>Maybe</a>
--   <a>UnicodeEastasianWidthFuncT</a></tt>.
noUnicodeEastasianWidthFuncT :: Maybe UnicodeEastasianWidthFuncT

-- | A convenience synonym for <tt><a>Nothing</a> :: <a>Maybe</a>
--   <a>UnicodeEastasianWidthFuncT_WithClosures</a></tt>.
noUnicodeEastasianWidthFuncT_WithClosures :: Maybe UnicodeEastasianWidthFuncT_WithClosures

-- | Wrap a <a>UnicodeEastasianWidthFuncT</a> into a
--   <a>C_UnicodeEastasianWidthFuncT</a>.
wrap_UnicodeEastasianWidthFuncT :: Maybe (Ptr (FunPtr C_UnicodeEastasianWidthFuncT)) -> UnicodeEastasianWidthFuncT_WithClosures -> C_UnicodeEastasianWidthFuncT

-- | Type for the callback on the (unwrapped) C side.
type C_UnicodeGeneralCategoryFuncT = Ptr UnicodeFuncsT -> Word32 -> Ptr () -> IO CUInt

-- | A virtual method for the <a>UnicodeFuncsT</a> structure.
--   
--   This method should retrieve the General Category property for a
--   specified Unicode code point.
type UnicodeGeneralCategoryFuncT = UnicodeFuncsT -> Word32 -> IO UnicodeGeneralCategoryT

-- | A virtual method for the <a>UnicodeFuncsT</a> structure.
--   
--   This method should retrieve the General Category property for a
--   specified Unicode code point.
type UnicodeGeneralCategoryFuncT_WithClosures = UnicodeFuncsT -> Word32 -> Ptr () -> IO UnicodeGeneralCategoryT

-- | A simple wrapper that ignores the closure arguments.
drop_closures_UnicodeGeneralCategoryFuncT :: UnicodeGeneralCategoryFuncT -> UnicodeGeneralCategoryFuncT_WithClosures

-- | Given a pointer to a foreign C function, wrap it into a function
--   callable from Haskell.
dynamic_UnicodeGeneralCategoryFuncT :: (HasCallStack, MonadIO m) => FunPtr C_UnicodeGeneralCategoryFuncT -> UnicodeFuncsT -> Word32 -> Ptr () -> m UnicodeGeneralCategoryT

-- | Wrap the callback into a <a>GClosure</a>.
genClosure_UnicodeGeneralCategoryFuncT :: MonadIO m => UnicodeGeneralCategoryFuncT -> m (GClosure C_UnicodeGeneralCategoryFuncT)

-- | Generate a function pointer callable from C code, from a
--   <a>C_UnicodeGeneralCategoryFuncT</a>.
mk_UnicodeGeneralCategoryFuncT :: C_UnicodeGeneralCategoryFuncT -> IO (FunPtr C_UnicodeGeneralCategoryFuncT)

-- | A convenience synonym for <tt><a>Nothing</a> :: <a>Maybe</a>
--   <a>UnicodeGeneralCategoryFuncT</a></tt>.
noUnicodeGeneralCategoryFuncT :: Maybe UnicodeGeneralCategoryFuncT

-- | A convenience synonym for <tt><a>Nothing</a> :: <a>Maybe</a>
--   <a>UnicodeGeneralCategoryFuncT_WithClosures</a></tt>.
noUnicodeGeneralCategoryFuncT_WithClosures :: Maybe UnicodeGeneralCategoryFuncT_WithClosures

-- | Wrap a <a>UnicodeGeneralCategoryFuncT</a> into a
--   <a>C_UnicodeGeneralCategoryFuncT</a>.
wrap_UnicodeGeneralCategoryFuncT :: Maybe (Ptr (FunPtr C_UnicodeGeneralCategoryFuncT)) -> UnicodeGeneralCategoryFuncT_WithClosures -> C_UnicodeGeneralCategoryFuncT

-- | Type for the callback on the (unwrapped) C side.
type C_UnicodeMirroringFuncT = Ptr UnicodeFuncsT -> Word32 -> Ptr () -> IO Word32

-- | A virtual method for the <a>UnicodeFuncsT</a> structure.
--   
--   This method should retrieve the Bi-Directional Mirroring Glyph code
--   point for a specified Unicode code point.
--   
--   &lt;note&gt;Note: If a code point does not have a specified
--   Bi-Directional Mirroring Glyph defined, the method should return the
--   original code point.&lt;/note&gt;
type UnicodeMirroringFuncT = UnicodeFuncsT -> Word32 -> IO Word32

-- | A virtual method for the <a>UnicodeFuncsT</a> structure.
--   
--   This method should retrieve the Bi-Directional Mirroring Glyph code
--   point for a specified Unicode code point.
--   
--   &lt;note&gt;Note: If a code point does not have a specified
--   Bi-Directional Mirroring Glyph defined, the method should return the
--   original code point.&lt;/note&gt;
type UnicodeMirroringFuncT_WithClosures = UnicodeFuncsT -> Word32 -> Ptr () -> IO Word32

-- | A simple wrapper that ignores the closure arguments.
drop_closures_UnicodeMirroringFuncT :: UnicodeMirroringFuncT -> UnicodeMirroringFuncT_WithClosures

-- | Given a pointer to a foreign C function, wrap it into a function
--   callable from Haskell.
dynamic_UnicodeMirroringFuncT :: (HasCallStack, MonadIO m) => FunPtr C_UnicodeMirroringFuncT -> UnicodeFuncsT -> Word32 -> Ptr () -> m Word32

-- | Wrap the callback into a <a>GClosure</a>.
genClosure_UnicodeMirroringFuncT :: MonadIO m => UnicodeMirroringFuncT -> m (GClosure C_UnicodeMirroringFuncT)

-- | Generate a function pointer callable from C code, from a
--   <a>C_UnicodeMirroringFuncT</a>.
mk_UnicodeMirroringFuncT :: C_UnicodeMirroringFuncT -> IO (FunPtr C_UnicodeMirroringFuncT)

-- | A convenience synonym for <tt><a>Nothing</a> :: <a>Maybe</a>
--   <a>UnicodeMirroringFuncT</a></tt>.
noUnicodeMirroringFuncT :: Maybe UnicodeMirroringFuncT

-- | A convenience synonym for <tt><a>Nothing</a> :: <a>Maybe</a>
--   <a>UnicodeMirroringFuncT_WithClosures</a></tt>.
noUnicodeMirroringFuncT_WithClosures :: Maybe UnicodeMirroringFuncT_WithClosures

-- | Wrap a <a>UnicodeMirroringFuncT</a> into a
--   <a>C_UnicodeMirroringFuncT</a>.
wrap_UnicodeMirroringFuncT :: Maybe (Ptr (FunPtr C_UnicodeMirroringFuncT)) -> UnicodeMirroringFuncT_WithClosures -> C_UnicodeMirroringFuncT

-- | Type for the callback on the (unwrapped) C side.
type C_UnicodeScriptFuncT = Ptr UnicodeFuncsT -> Word32 -> Ptr () -> IO CUInt

-- | A virtual method for the <a>UnicodeFuncsT</a> structure.
--   
--   This method should retrieve the Script property for a specified
--   Unicode code point.
type UnicodeScriptFuncT = UnicodeFuncsT -> Word32 -> IO ScriptT

-- | A virtual method for the <a>UnicodeFuncsT</a> structure.
--   
--   This method should retrieve the Script property for a specified
--   Unicode code point.
type UnicodeScriptFuncT_WithClosures = UnicodeFuncsT -> Word32 -> Ptr () -> IO ScriptT

-- | A simple wrapper that ignores the closure arguments.
drop_closures_UnicodeScriptFuncT :: UnicodeScriptFuncT -> UnicodeScriptFuncT_WithClosures

-- | Given a pointer to a foreign C function, wrap it into a function
--   callable from Haskell.
dynamic_UnicodeScriptFuncT :: (HasCallStack, MonadIO m) => FunPtr C_UnicodeScriptFuncT -> UnicodeFuncsT -> Word32 -> Ptr () -> m ScriptT

-- | Wrap the callback into a <a>GClosure</a>.
genClosure_UnicodeScriptFuncT :: MonadIO m => UnicodeScriptFuncT -> m (GClosure C_UnicodeScriptFuncT)

-- | Generate a function pointer callable from C code, from a
--   <a>C_UnicodeScriptFuncT</a>.
mk_UnicodeScriptFuncT :: C_UnicodeScriptFuncT -> IO (FunPtr C_UnicodeScriptFuncT)

-- | A convenience synonym for <tt><a>Nothing</a> :: <a>Maybe</a>
--   <a>UnicodeScriptFuncT</a></tt>.
noUnicodeScriptFuncT :: Maybe UnicodeScriptFuncT

-- | A convenience synonym for <tt><a>Nothing</a> :: <a>Maybe</a>
--   <a>UnicodeScriptFuncT_WithClosures</a></tt>.
noUnicodeScriptFuncT_WithClosures :: Maybe UnicodeScriptFuncT_WithClosures

-- | Wrap a <a>UnicodeScriptFuncT</a> into a <a>C_UnicodeScriptFuncT</a>.
wrap_UnicodeScriptFuncT :: Maybe (Ptr (FunPtr C_UnicodeScriptFuncT)) -> UnicodeScriptFuncT_WithClosures -> C_UnicodeScriptFuncT


-- | A struct containing color information for a gradient.
--   
--   <i>Since: 7.0.0</i>
module GI.HarfBuzz.Structs.ColorLineT

-- | Memory-managed wrapper type.
newtype ColorLineT
ColorLineT :: ManagedPtr ColorLineT -> ColorLineT

-- | Construct a <a>ColorLineT</a> struct initialized to zero.
newZeroColorLineT :: MonadIO m => m ColorLineT

-- | Set the value of the “<tt>data</tt>” field to <a>Nothing</a>. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>clear</a> #data
--   </pre>
clearColorLineTData :: MonadIO m => ColorLineT -> m ()

-- | Get the value of the “<tt>data</tt>” field. When <a>overloading</a> is
--   enabled, this is equivalent to
--   
--   <pre>
--   <a>get</a> colorLineT #data
--   </pre>
getColorLineTData :: MonadIO m => ColorLineT -> m (Ptr ())

-- | Set the value of the “<tt>data</tt>” field. When <a>overloading</a> is
--   enabled, this is equivalent to
--   
--   <pre>
--   <a>set</a> colorLineT [ #data <a>:=</a> value ]
--   </pre>
setColorLineTData :: MonadIO m => ColorLineT -> Ptr () -> m ()

-- | Set the value of the “<tt>get_color_stops</tt>” field to
--   <a>Nothing</a>. When <a>overloading</a> is enabled, this is equivalent
--   to
--   
--   <pre>
--   <a>clear</a> #getColorStops
--   </pre>
clearColorLineTGetColorStops :: MonadIO m => ColorLineT -> m ()

-- | Get the value of the “<tt>get_color_stops</tt>” field. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>get</a> colorLineT #getColorStops
--   </pre>
getColorLineTGetColorStops :: MonadIO m => ColorLineT -> m (Maybe ColorLineGetColorStopsFuncT_WithClosures)

-- | Set the value of the “<tt>get_color_stops</tt>” field. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>set</a> colorLineT [ #getColorStops <a>:=</a> value ]
--   </pre>
setColorLineTGetColorStops :: MonadIO m => ColorLineT -> FunPtr C_ColorLineGetColorStopsFuncT -> m ()

-- | Set the value of the “<tt>get_color_stops_user_data</tt>” field to
--   <a>Nothing</a>. When <a>overloading</a> is enabled, this is equivalent
--   to
--   
--   <pre>
--   <a>clear</a> #getColorStopsUserData
--   </pre>
clearColorLineTGetColorStopsUserData :: MonadIO m => ColorLineT -> m ()

-- | Get the value of the “<tt>get_color_stops_user_data</tt>” field. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>get</a> colorLineT #getColorStopsUserData
--   </pre>
getColorLineTGetColorStopsUserData :: MonadIO m => ColorLineT -> m (Ptr ())

-- | Set the value of the “<tt>get_color_stops_user_data</tt>” field. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>set</a> colorLineT [ #getColorStopsUserData <a>:=</a> value ]
--   </pre>
setColorLineTGetColorStopsUserData :: MonadIO m => ColorLineT -> Ptr () -> m ()

-- | Set the value of the “<tt>get_extend</tt>” field to <a>Nothing</a>.
--   When <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>clear</a> #getExtend
--   </pre>
clearColorLineTGetExtend :: MonadIO m => ColorLineT -> m ()

-- | Get the value of the “<tt>get_extend</tt>” field. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>get</a> colorLineT #getExtend
--   </pre>
getColorLineTGetExtend :: MonadIO m => ColorLineT -> m (Maybe ColorLineGetExtendFuncT_WithClosures)

-- | Set the value of the “<tt>get_extend</tt>” field. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>set</a> colorLineT [ #getExtend <a>:=</a> value ]
--   </pre>
setColorLineTGetExtend :: MonadIO m => ColorLineT -> FunPtr C_ColorLineGetExtendFuncT -> m ()

-- | Set the value of the “<tt>get_extend_user_data</tt>” field to
--   <a>Nothing</a>. When <a>overloading</a> is enabled, this is equivalent
--   to
--   
--   <pre>
--   <a>clear</a> #getExtendUserData
--   </pre>
clearColorLineTGetExtendUserData :: MonadIO m => ColorLineT -> m ()

-- | Get the value of the “<tt>get_extend_user_data</tt>” field. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>get</a> colorLineT #getExtendUserData
--   </pre>
getColorLineTGetExtendUserData :: MonadIO m => ColorLineT -> m (Ptr ())

-- | Set the value of the “<tt>get_extend_user_data</tt>” field. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>set</a> colorLineT [ #getExtendUserData <a>:=</a> value ]
--   </pre>
setColorLineTGetExtendUserData :: MonadIO m => ColorLineT -> Ptr () -> m ()

-- | Set the value of the “<tt>reserved0</tt>” field to <a>Nothing</a>.
--   When <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>clear</a> #reserved0
--   </pre>
clearColorLineTReserved0 :: MonadIO m => ColorLineT -> m ()

-- | Get the value of the “<tt>reserved0</tt>” field. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>get</a> colorLineT #reserved0
--   </pre>
getColorLineTReserved0 :: MonadIO m => ColorLineT -> m (Ptr ())

-- | Set the value of the “<tt>reserved0</tt>” field. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>set</a> colorLineT [ #reserved0 <a>:=</a> value ]
--   </pre>
setColorLineTReserved0 :: MonadIO m => ColorLineT -> Ptr () -> m ()

-- | Set the value of the “<tt>reserved1</tt>” field to <a>Nothing</a>.
--   When <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>clear</a> #reserved1
--   </pre>
clearColorLineTReserved1 :: MonadIO m => ColorLineT -> m ()

-- | Get the value of the “<tt>reserved1</tt>” field. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>get</a> colorLineT #reserved1
--   </pre>
getColorLineTReserved1 :: MonadIO m => ColorLineT -> m (Ptr ())

-- | Set the value of the “<tt>reserved1</tt>” field. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>set</a> colorLineT [ #reserved1 <a>:=</a> value ]
--   </pre>
setColorLineTReserved1 :: MonadIO m => ColorLineT -> Ptr () -> m ()

-- | Set the value of the “<tt>reserved2</tt>” field to <a>Nothing</a>.
--   When <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>clear</a> #reserved2
--   </pre>
clearColorLineTReserved2 :: MonadIO m => ColorLineT -> m ()

-- | Get the value of the “<tt>reserved2</tt>” field. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>get</a> colorLineT #reserved2
--   </pre>
getColorLineTReserved2 :: MonadIO m => ColorLineT -> m (Ptr ())

-- | Set the value of the “<tt>reserved2</tt>” field. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>set</a> colorLineT [ #reserved2 <a>:=</a> value ]
--   </pre>
setColorLineTReserved2 :: MonadIO m => ColorLineT -> Ptr () -> m ()

-- | Set the value of the “<tt>reserved3</tt>” field to <a>Nothing</a>.
--   When <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>clear</a> #reserved3
--   </pre>
clearColorLineTReserved3 :: MonadIO m => ColorLineT -> m ()

-- | Get the value of the “<tt>reserved3</tt>” field. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>get</a> colorLineT #reserved3
--   </pre>
getColorLineTReserved3 :: MonadIO m => ColorLineT -> m (Ptr ())

-- | Set the value of the “<tt>reserved3</tt>” field. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>set</a> colorLineT [ #reserved3 <a>:=</a> value ]
--   </pre>
setColorLineTReserved3 :: MonadIO m => ColorLineT -> Ptr () -> m ()

-- | Set the value of the “<tt>reserved5</tt>” field to <a>Nothing</a>.
--   When <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>clear</a> #reserved5
--   </pre>
clearColorLineTReserved5 :: MonadIO m => ColorLineT -> m ()

-- | Get the value of the “<tt>reserved5</tt>” field. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>get</a> colorLineT #reserved5
--   </pre>
getColorLineTReserved5 :: MonadIO m => ColorLineT -> m (Ptr ())

-- | Set the value of the “<tt>reserved5</tt>” field. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>set</a> colorLineT [ #reserved5 <a>:=</a> value ]
--   </pre>
setColorLineTReserved5 :: MonadIO m => ColorLineT -> Ptr () -> m ()

-- | Set the value of the “<tt>reserved6</tt>” field to <a>Nothing</a>.
--   When <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>clear</a> #reserved6
--   </pre>
clearColorLineTReserved6 :: MonadIO m => ColorLineT -> m ()

-- | Get the value of the “<tt>reserved6</tt>” field. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>get</a> colorLineT #reserved6
--   </pre>
getColorLineTReserved6 :: MonadIO m => ColorLineT -> m (Ptr ())

-- | Set the value of the “<tt>reserved6</tt>” field. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>set</a> colorLineT [ #reserved6 <a>:=</a> value ]
--   </pre>
setColorLineTReserved6 :: MonadIO m => ColorLineT -> Ptr () -> m ()

-- | Set the value of the “<tt>reserved7</tt>” field to <a>Nothing</a>.
--   When <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>clear</a> #reserved7
--   </pre>
clearColorLineTReserved7 :: MonadIO m => ColorLineT -> m ()

-- | Get the value of the “<tt>reserved7</tt>” field. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>get</a> colorLineT #reserved7
--   </pre>
getColorLineTReserved7 :: MonadIO m => ColorLineT -> m (Ptr ())

-- | Set the value of the “<tt>reserved7</tt>” field. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>set</a> colorLineT [ #reserved7 <a>:=</a> value ]
--   </pre>
setColorLineTReserved7 :: MonadIO m => ColorLineT -> Ptr () -> m ()

-- | Set the value of the “<tt>reserved8</tt>” field to <a>Nothing</a>.
--   When <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>clear</a> #reserved8
--   </pre>
clearColorLineTReserved8 :: MonadIO m => ColorLineT -> m ()

-- | Get the value of the “<tt>reserved8</tt>” field. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>get</a> colorLineT #reserved8
--   </pre>
getColorLineTReserved8 :: MonadIO m => ColorLineT -> m (Ptr ())

-- | Set the value of the “<tt>reserved8</tt>” field. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>set</a> colorLineT [ #reserved8 <a>:=</a> value ]
--   </pre>
setColorLineTReserved8 :: MonadIO m => ColorLineT -> Ptr () -> m ()
instance (tag GHC.Types.~ 'Data.GI.Base.Attributes.AttrSet) => Data.GI.Base.Constructible.Constructible GI.HarfBuzz.Structs.ColorLineT.ColorLineT tag
instance GHC.Classes.Eq GI.HarfBuzz.Structs.ColorLineT.ColorLineT
instance Data.GI.Base.BasicTypes.GBoxed GI.HarfBuzz.Structs.ColorLineT.ColorLineT
instance Data.GI.Base.Overloading.HasParentTypes GI.HarfBuzz.Structs.ColorLineT.ColorLineT
instance Data.GI.Base.GValue.IsGValue (GHC.Internal.Maybe.Maybe GI.HarfBuzz.Structs.ColorLineT.ColorLineT)
instance Data.GI.Base.BasicTypes.ManagedPtrNewtype GI.HarfBuzz.Structs.ColorLineT.ColorLineT
instance Data.GI.Base.BasicTypes.TypedObject GI.HarfBuzz.Structs.ColorLineT.ColorLineT


-- | Data structure for holding user-data keys.
module GI.HarfBuzz.Structs.UserDataKeyT

-- | Memory-managed wrapper type.
newtype UserDataKeyT
UserDataKeyT :: ManagedPtr UserDataKeyT -> UserDataKeyT

-- | Construct a <a>UserDataKeyT</a> struct initialized to zero.
newZeroUserDataKeyT :: MonadIO m => m UserDataKeyT
instance (tag GHC.Types.~ 'Data.GI.Base.Attributes.AttrSet) => Data.GI.Base.Constructible.Constructible GI.HarfBuzz.Structs.UserDataKeyT.UserDataKeyT tag
instance GHC.Classes.Eq GI.HarfBuzz.Structs.UserDataKeyT.UserDataKeyT
instance Data.GI.Base.BasicTypes.GBoxed GI.HarfBuzz.Structs.UserDataKeyT.UserDataKeyT
instance Data.GI.Base.Overloading.HasParentTypes GI.HarfBuzz.Structs.UserDataKeyT.UserDataKeyT
instance Data.GI.Base.GValue.IsGValue (GHC.Internal.Maybe.Maybe GI.HarfBuzz.Structs.UserDataKeyT.UserDataKeyT)
instance Data.GI.Base.BasicTypes.ManagedPtrNewtype GI.HarfBuzz.Structs.UserDataKeyT.UserDataKeyT
instance Data.GI.Base.BasicTypes.TypedObject GI.HarfBuzz.Structs.UserDataKeyT.UserDataKeyT


-- | Data type for holding variation data. Registered OpenType
--   variation-axis tags are listed in <a>OpenType Axis Tag Registry</a>.
--   
--   <i>Since: 1.4.2</i>
module GI.HarfBuzz.Structs.VariationT

-- | Memory-managed wrapper type.
newtype VariationT
VariationT :: ManagedPtr VariationT -> VariationT

-- | Construct a <a>VariationT</a> struct initialized to zero.
newZeroVariationT :: MonadIO m => m VariationT

-- | Get the value of the “<tt>tag</tt>” field. When <a>overloading</a> is
--   enabled, this is equivalent to
--   
--   <pre>
--   <a>get</a> variationT #tag
--   </pre>
getVariationTTag :: MonadIO m => VariationT -> m Word32

-- | Set the value of the “<tt>tag</tt>” field. When <a>overloading</a> is
--   enabled, this is equivalent to
--   
--   <pre>
--   <a>set</a> variationT [ #tag <a>:=</a> value ]
--   </pre>
setVariationTTag :: MonadIO m => VariationT -> Word32 -> m ()

-- | Get the value of the “<tt>value</tt>” field. When <a>overloading</a>
--   is enabled, this is equivalent to
--   
--   <pre>
--   <a>get</a> variationT #value
--   </pre>
getVariationTValue :: MonadIO m => VariationT -> m Float

-- | Set the value of the “<tt>value</tt>” field. When <a>overloading</a>
--   is enabled, this is equivalent to
--   
--   <pre>
--   <a>set</a> variationT [ #value <a>:=</a> value ]
--   </pre>
setVariationTValue :: MonadIO m => VariationT -> Float -> m ()
instance Data.GI.Base.BasicTypes.BoxedPtr GI.HarfBuzz.Structs.VariationT.VariationT
instance Data.GI.Base.BasicTypes.CallocPtr GI.HarfBuzz.Structs.VariationT.VariationT
instance (tag GHC.Types.~ 'Data.GI.Base.Attributes.AttrSet) => Data.GI.Base.Constructible.Constructible GI.HarfBuzz.Structs.VariationT.VariationT tag
instance GHC.Classes.Eq GI.HarfBuzz.Structs.VariationT.VariationT
instance Data.GI.Base.BasicTypes.ManagedPtrNewtype GI.HarfBuzz.Structs.VariationT.VariationT


module GI.HarfBuzz.Structs


module GI.HarfBuzz.Functions

-- | Fetches the name identifier of the specified feature type in the
--   face's <tt>name</tt> table.
--   
--   <i>Since: 2.2.0</i>
aatLayoutFeatureTypeGetNameId :: (HasCallStack, MonadIO m) => FaceT -> AatLayoutFeatureTypeT -> m Word32

-- | Fetches a list of the selectors available for the specified feature in
--   the given face.
--   
--   If upon return, <i><tt>defaultIndex</tt></i> is set to
--   <a>AAT_LAYOUT_NO_SELECTOR_INDEX</a>, then the feature type is
--   non-exclusive. Otherwise, <i><tt>defaultIndex</tt></i> is the index of
--   the selector that is selected by default.
--   
--   <i>Since: 2.2.0</i>
aatLayoutFeatureTypeGetSelectorInfos :: (HasCallStack, MonadIO m) => FaceT -> AatLayoutFeatureTypeT -> Word32 -> [AatLayoutFeatureSelectorInfoT] -> m (Word32, [AatLayoutFeatureSelectorInfoT], Word32)

-- | Fetches a list of the AAT feature types included in the specified
--   face.
--   
--   <i>Since: 2.2.0</i>
aatLayoutGetFeatureTypes :: (HasCallStack, MonadIO m) => FaceT -> Word32 -> [AatLayoutFeatureTypeT] -> m (Word32, [AatLayoutFeatureTypeT])

-- | Tests whether the specified face includes any positioning information
--   in the <tt>kerx</tt> table.
--   
--   &lt;note&gt;Note: does not examine the <tt>GPOS</tt>
--   table.&lt;/note&gt;
--   
--   <i>Since: 2.3.0</i>
aatLayoutHasPositioning :: (HasCallStack, MonadIO m) => FaceT -> m Int32

-- | Tests whether the specified face includes any substitutions in the
--   <tt>morx</tt> or <tt>mort</tt> tables.
--   
--   &lt;note&gt;Note: does not examine the <tt>GSUB</tt>
--   table.&lt;/note&gt;
--   
--   <i>Since: 2.3.0</i>
aatLayoutHasSubstitution :: (HasCallStack, MonadIO m) => FaceT -> m Int32

-- | Tests whether the specified face includes any tracking information in
--   the <tt>trak</tt> table.
--   
--   <i>Since: 2.3.0</i>
aatLayoutHasTracking :: (HasCallStack, MonadIO m) => FaceT -> m Int32

-- | Makes a writable copy of <i><tt>blob</tt></i>.
--   
--   <i>Since: 1.8.0</i>
blobCopyWritableOrFail :: (HasCallStack, MonadIO m) => BlobT -> m BlobT

-- | Creates a new blob containing the data from the specified binary font
--   file.
--   
--   The filename is passed directly to the system on all platforms, except
--   on Windows, where the filename is interpreted as UTF-8. Only if the
--   filename is not valid UTF-8, it will be interpreted according to the
--   system codepage.
--   
--   <i>Since: 1.7.7</i>
blobCreateFromFile :: (HasCallStack, MonadIO m) => Text -> m BlobT

-- | Creates a new blob containing the data from the specified file.
--   
--   The filename is passed directly to the system on all platforms, except
--   on Windows, where the filename is interpreted as UTF-8. Only if the
--   filename is not valid UTF-8, it will be interpreted according to the
--   system codepage.
--   
--   <i>Since: 2.8.2</i>
blobCreateFromFileOrFail :: (HasCallStack, MonadIO m) => Text -> m BlobT

-- | Returns a blob that represents a range of bytes in
--   <i><tt>parent</tt></i>. The new blob is always created with
--   <tt><i>HB_MEMORY_MODE_READONLY</i></tt>, meaning that it will never
--   modify data in the parent blob. The parent data is not expected to be
--   modified, and will result in undefined behavior if it is.
--   
--   Makes <i><tt>parent</tt></i> immutable.
--   
--   <i>Since: 0.9.2</i>
blobCreateSubBlob :: (HasCallStack, MonadIO m) => BlobT -> Word32 -> Word32 -> m BlobT

-- | Fetches the data from a blob.
--   
--   <i>Since: 0.9.2</i>
blobGetData :: (HasCallStack, MonadIO m) => BlobT -> m (Maybe [Text])

-- | Tries to make blob data writable (possibly copying it) and return
--   pointer to data.
--   
--   Fails if blob has been made immutable, or if memory allocation fails.
--   
--   <i>Since: 0.9.2</i>
blobGetDataWritable :: (HasCallStack, MonadIO m) => BlobT -> m [Text]

-- | Returns the singleton empty blob.
--   
--   See TODO:link object types for more information.
--   
--   <i>Since: 0.9.2</i>
blobGetEmpty :: (HasCallStack, MonadIO m) => m BlobT

-- | Fetches the length of a blob's data.
--   
--   <i>Since: 0.9.2</i>
blobGetLength :: (HasCallStack, MonadIO m) => BlobT -> m Word32

-- | Tests whether a blob is immutable.
--   
--   <i>Since: 0.9.2</i>
blobIsImmutable :: (HasCallStack, MonadIO m) => BlobT -> m Int32

-- | Makes a blob immutable.
--   
--   <i>Since: 0.9.2</i>
blobMakeImmutable :: (HasCallStack, MonadIO m) => BlobT -> m ()

-- | Appends a character with the Unicode value of
--   <i><tt>codepoint</tt></i> to <i><tt>buffer</tt></i>, and gives it the
--   initial cluster value of <i><tt>cluster</tt></i>. Clusters can be any
--   thing the client wants, they are usually used to refer to the index of
--   the character in the input text stream and are output in
--   <a>GlyphInfoT</a>.<tt><i>cluster</i></tt> field.
--   
--   This function does not check the validity of
--   <i><tt>codepoint</tt></i>, it is up to the caller to ensure it is a
--   valid Unicode code point.
--   
--   <i>Since: 0.9.7</i>
bufferAdd :: (HasCallStack, MonadIO m) => BufferT -> Word32 -> Word32 -> m ()

-- | Appends characters from <i><tt>text</tt></i> array to
--   <i><tt>buffer</tt></i>. The <i><tt>itemOffset</tt></i> is the position
--   of the first character from <i><tt>text</tt></i> that will be
--   appended, and <i><tt>itemLength</tt></i> is the number of character.
--   When shaping part of a larger text (e.g. a run of text from a
--   paragraph), instead of passing just the substring corresponding to the
--   run, it is preferable to pass the whole paragraph and specify the run
--   start and length as <i><tt>itemOffset</tt></i> and
--   <i><tt>itemLength</tt></i>, respectively, to give HarfBuzz the full
--   context to be able, for example, to do cross-run Arabic shaping or
--   properly handle combining marks at stat of run.
--   
--   This function does not check the validity of <i><tt>text</tt></i>, it
--   is up to the caller to ensure it contains a valid Unicode scalar
--   values. In contrast, <a>bufferAddUtf32</a> can be used that takes
--   similar input but performs sanity-check on the input.
--   
--   <i>Since: 0.9.31</i>
bufferAddCodepoints :: (HasCallStack, MonadIO m) => BufferT -> [Word32] -> Word32 -> Int32 -> m ()

-- | Similar to <a>bufferAddCodepoints</a>, but allows only access to first
--   256 Unicode code points that can fit in 8-bit strings.
--   
--   &lt;note&gt;Has nothing to do with non-Unicode Latin-1
--   encoding.&lt;/note&gt;
--   
--   <i>Since: 0.9.39</i>
bufferAddLatin1 :: (HasCallStack, MonadIO m) => BufferT -> ByteString -> Word32 -> Int32 -> m ()

-- | See <a>bufferAddCodepoints</a>.
--   
--   Replaces invalid UTF-16 characters with the <i><tt>buffer</tt></i>
--   replacement code point, see <a>bufferSetReplacementCodepoint</a>.
--   
--   <i>Since: 0.9.2</i>
bufferAddUtf16 :: (HasCallStack, MonadIO m) => BufferT -> [Word16] -> Word32 -> Int32 -> m ()

-- | See <a>bufferAddCodepoints</a>.
--   
--   Replaces invalid UTF-32 characters with the <i><tt>buffer</tt></i>
--   replacement code point, see <a>bufferSetReplacementCodepoint</a>.
--   
--   <i>Since: 0.9.2</i>
bufferAddUtf32 :: (HasCallStack, MonadIO m) => BufferT -> [Word32] -> Word32 -> Int32 -> m ()

-- | See <a>bufferAddCodepoints</a>.
--   
--   Replaces invalid UTF-8 characters with the <i><tt>buffer</tt></i>
--   replacement code point, see <a>bufferSetReplacementCodepoint</a>.
--   
--   <i>Since: 0.9.2</i>
bufferAddUtf8 :: (HasCallStack, MonadIO m) => BufferT -> ByteString -> Word32 -> Int32 -> m ()

-- | Check if allocating memory for the buffer succeeded.
--   
--   <i>Since: 0.9.2</i>
bufferAllocationSuccessful :: (HasCallStack, MonadIO m) => BufferT -> m Int32

-- | Append (part of) contents of another buffer to this buffer.
--   
--   <i>Since: 1.5.0</i>
bufferAppend :: (HasCallStack, MonadIO m) => BufferT -> BufferT -> Word32 -> Word32 -> m ()

-- | Similar to <a>bufferReset</a>, but does not clear the Unicode
--   functions and the replacement code point.
--   
--   <i>Since: 0.9.11</i>
bufferClearContents :: (HasCallStack, MonadIO m) => BufferT -> m ()

-- | Creates a new <a>BufferT</a> with all properties to defaults.
--   
--   <i>Since: 0.9.2</i>
bufferCreate :: (HasCallStack, MonadIO m) => m BufferT

-- | Creates a new <a>BufferT</a>, similar to <a>bufferCreate</a>. The only
--   difference is that the buffer is configured similarly to
--   <i><tt>src</tt></i>.
--   
--   <i>Since: 3.3.0</i>
bufferCreateSimilar :: (HasCallStack, MonadIO m) => BufferT -> m BufferT

-- | Deserializes glyphs <i><tt>buffer</tt></i> from textual representation
--   in the format produced by <a>bufferSerializeGlyphs</a>.
--   
--   <i>Since: 0.9.7</i>
bufferDeserializeGlyphs :: (HasCallStack, MonadIO m) => BufferT -> [Text] -> Maybe FontT -> BufferSerializeFormatT -> m (Int32, Text)

-- | Deserializes Unicode <i><tt>buffer</tt></i> from textual
--   representation in the format produced by
--   <a>bufferSerializeUnicode</a>.
--   
--   <i>Since: 2.7.3</i>
bufferDeserializeUnicode :: (HasCallStack, MonadIO m) => BufferT -> [Text] -> BufferSerializeFormatT -> m (Int32, Text)

-- | If dottedcircle_glyph is (hb_codepoint_t) -1 then
--   <tt><i>HB_BUFFER_DIFF_FLAG_DOTTED_CIRCLE_PRESENT</i></tt> and
--   <tt><i>HB_BUFFER_DIFF_FLAG_NOTDEF_PRESENT</i></tt> are never returned.
--   This should be used by most callers if just comparing two buffers is
--   needed.
--   
--   <i>Since: 1.5.0</i>
bufferDiff :: (HasCallStack, MonadIO m) => BufferT -> BufferT -> Word32 -> Word32 -> m [BufferDiffFlagsT]

-- | Fetches the cluster level of a buffer. The <a>BufferClusterLevelT</a>
--   dictates one aspect of how HarfBuzz will treat non-base characters
--   during shaping.
--   
--   <i>Since: 0.9.42</i>
bufferGetClusterLevel :: (HasCallStack, MonadIO m) => BufferT -> m BufferClusterLevelT

-- | Fetches the type of <i><tt>buffer</tt></i> contents. Buffers are
--   either empty, contain characters (before shaping), or contain glyphs
--   (the result of shaping).
--   
--   <i>Since: 0.9.5</i>
bufferGetContentType :: (HasCallStack, MonadIO m) => BufferT -> m BufferContentTypeT

-- | See <a>bufferSetDirection</a>
--   
--   <i>Since: 0.9.2</i>
bufferGetDirection :: (HasCallStack, MonadIO m) => BufferT -> m DirectionT

-- | Fetches an empty <a>BufferT</a>.
--   
--   <i>Since: 0.9.2</i>
bufferGetEmpty :: (HasCallStack, MonadIO m) => m BufferT

-- | Fetches the <a>BufferFlagsT</a> of <i><tt>buffer</tt></i>.
--   
--   <i>Since: 0.9.7</i>
bufferGetFlags :: (HasCallStack, MonadIO m) => BufferT -> m [BufferFlagsT]

-- | Returns <i><tt>buffer</tt></i> glyph information array. Returned
--   pointer is valid as long as <i><tt>buffer</tt></i> contents are not
--   modified.
--   
--   <i>Since: 0.9.2</i>
bufferGetGlyphInfos :: (HasCallStack, MonadIO m) => BufferT -> m [GlyphInfoT]

-- | Returns <i><tt>buffer</tt></i> glyph position array. Returned pointer
--   is valid as long as <i><tt>buffer</tt></i> contents are not modified.
--   
--   If buffer did not have positions before, the positions will be
--   initialized to zeros, unless this function is called from within a
--   buffer message callback (see <a>bufferSetMessageFunc</a>), in which
--   case <tt>NULL</tt> is returned.
--   
--   <i>Since: 0.9.2</i>
bufferGetGlyphPositions :: (HasCallStack, MonadIO m) => BufferT -> m [GlyphPositionT]

-- | See <a>bufferSetInvisibleGlyph</a>.
--   
--   <i>Since: 2.0.0</i>
bufferGetInvisibleGlyph :: (HasCallStack, MonadIO m) => BufferT -> m Word32

-- | See <a>bufferSetLanguage</a>.
--   
--   <i>Since: 0.9.2</i>
bufferGetLanguage :: (HasCallStack, MonadIO m) => BufferT -> m LanguageT

-- | Returns the number of items in the buffer.
--   
--   <i>Since: 0.9.2</i>
bufferGetLength :: (HasCallStack, MonadIO m) => BufferT -> m Word32

-- | See <a>bufferSetNotFoundGlyph</a>.
--   
--   <i>Since: 3.1.0</i>
bufferGetNotFoundGlyph :: (HasCallStack, MonadIO m) => BufferT -> m Word32

-- | See <a>bufferSetNotFoundVariationSelectorGlyph</a>.
--   
--   <i>Since: 10.0.0</i>
bufferGetNotFoundVariationSelectorGlyph :: (HasCallStack, MonadIO m) => BufferT -> m Word32

-- | See <a>bufferSetRandomState</a>.
--   
--   <i>Since: 8.4.0</i>
bufferGetRandomState :: (HasCallStack, MonadIO m) => BufferT -> m Word32

-- | Fetches the <tt><i>hb_codepoint_t</i></tt> that replaces invalid
--   entries for a given encoding when adding text to
--   <i><tt>buffer</tt></i>.
--   
--   <i>Since: 0.9.31</i>
bufferGetReplacementCodepoint :: (HasCallStack, MonadIO m) => BufferT -> m Word32

-- | Fetches the script of <i><tt>buffer</tt></i>.
--   
--   <i>Since: 0.9.2</i>
bufferGetScript :: (HasCallStack, MonadIO m) => BufferT -> m ScriptT

-- | Sets <i><tt>props</tt></i> to the <a>SegmentPropertiesT</a> of
--   <i><tt>buffer</tt></i>.
--   
--   <i>Since: 0.9.7</i>
bufferGetSegmentProperties :: (HasCallStack, MonadIO m) => BufferT -> m SegmentPropertiesT

-- | Fetches the Unicode-functions structure of a buffer.
--   
--   <i>Since: 0.9.2</i>
bufferGetUnicodeFuncs :: (HasCallStack, MonadIO m) => BufferT -> m UnicodeFuncsT

-- | Sets unset buffer segment properties based on buffer Unicode contents.
--   If buffer is not empty, it must have content type
--   <tt><i>HB_BUFFER_CONTENT_TYPE_UNICODE</i></tt>.
--   
--   If buffer script is not set (ie. is
--   <tt><i>HB_SCRIPT_INVALID</i></tt>), it will be set to the Unicode
--   script of the first character in the buffer that has a script other
--   than <tt><i>HB_SCRIPT_COMMON</i></tt>,
--   <tt><i>HB_SCRIPT_INHERITED</i></tt>, and
--   <tt><i>HB_SCRIPT_UNKNOWN</i></tt>.
--   
--   Next, if buffer direction is not set (ie. is
--   <tt><i>HB_DIRECTION_INVALID</i></tt>), it will be set to the natural
--   horizontal direction of the buffer script as returned by
--   <a>scriptGetHorizontalDirection</a>. If
--   <a>scriptGetHorizontalDirection</a> returns
--   <tt><i>HB_DIRECTION_INVALID</i></tt>, then
--   <tt><i>HB_DIRECTION_LTR</i></tt> is used.
--   
--   Finally, if buffer language is not set (ie. is
--   <a>LANGUAGE_INVALID</a>), it will be set to the process's default
--   language as returned by <a>languageGetDefault</a>. This may change in
--   the future by taking buffer script into consideration when choosing a
--   language. Note that <a>languageGetDefault</a> is NOT threadsafe the
--   first time it is called. See documentation for that function for
--   details.
--   
--   <i>Since: 0.9.7</i>
bufferGuessSegmentProperties :: (HasCallStack, MonadIO m) => BufferT -> m ()

-- | Returns whether <i><tt>buffer</tt></i> has glyph position data. A
--   buffer gains position data when <a>bufferGetGlyphPositions</a> is
--   called on it, and cleared of position data when
--   <a>bufferClearContents</a> is called.
--   
--   <i>Since: 2.7.3</i>
bufferHasPositions :: (HasCallStack, MonadIO m) => BufferT -> m Int32

-- | Reorders a glyph buffer to have canonical in-cluster glyph order /
--   position. The resulting clusters should behave identical to
--   pre-reordering clusters.
--   
--   &lt;note&gt;This has nothing to do with Unicode
--   normalization.&lt;/note&gt;
--   
--   <i>Since: 0.9.2</i>
bufferNormalizeGlyphs :: (HasCallStack, MonadIO m) => BufferT -> m ()

-- | Pre allocates memory for <i><tt>buffer</tt></i> to fit at least
--   <i><tt>size</tt></i> number of items.
--   
--   <i>Since: 0.9.2</i>
bufferPreAllocate :: (HasCallStack, MonadIO m) => BufferT -> Word32 -> m Int32

-- | Resets the buffer to its initial status, as if it was just newly
--   created with <a>bufferCreate</a>.
--   
--   <i>Since: 0.9.2</i>
bufferReset :: (HasCallStack, MonadIO m) => BufferT -> m ()

-- | Reverses buffer contents.
--   
--   <i>Since: 0.9.2</i>
bufferReverse :: (HasCallStack, MonadIO m) => BufferT -> m ()

-- | Reverses buffer clusters. That is, the buffer contents are reversed,
--   then each cluster (consecutive items having the same cluster number)
--   are reversed again.
--   
--   <i>Since: 0.9.2</i>
bufferReverseClusters :: (HasCallStack, MonadIO m) => BufferT -> m ()

-- | Reverses buffer contents between <i><tt>start</tt></i> and
--   <i><tt>end</tt></i>.
--   
--   <i>Since: 0.9.41</i>
bufferReverseRange :: (HasCallStack, MonadIO m) => BufferT -> Word32 -> Word32 -> m ()

-- | Serializes <i><tt>buffer</tt></i> into a textual representation of its
--   content, whether Unicode codepoints or glyph identifiers and
--   positioning information. This is useful for showing the contents of
--   the buffer, for example during debugging. See the documentation of
--   <a>bufferSerializeUnicode</a> and <a>bufferSerializeGlyphs</a> for a
--   description of the output format.
--   
--   <i>Since: 2.7.3</i>
bufferSerialize :: (HasCallStack, MonadIO m) => BufferT -> Word32 -> Word32 -> Maybe FontT -> BufferSerializeFormatT -> [BufferSerializeFlagsT] -> m (Word32, ByteString, Word32)

-- | Parses a string into an <a>BufferSerializeFormatT</a>. Does not check
--   if <i><tt>str</tt></i> is a valid buffer serialization format, use
--   <a>bufferSerializeListFormats</a> to get the list of supported
--   formats.
--   
--   <i>Since: 0.9.7</i>
bufferSerializeFormatFromString :: (HasCallStack, MonadIO m) => ByteString -> m BufferSerializeFormatT

-- | Converts <i><tt>format</tt></i> to the string corresponding it, or
--   <tt>NULL</tt> if it is not a valid <a>BufferSerializeFormatT</a>.
--   
--   <i>Since: 0.9.7</i>
bufferSerializeFormatToString :: (HasCallStack, MonadIO m) => BufferSerializeFormatT -> m Text

-- | Serializes <i><tt>buffer</tt></i> into a textual representation of its
--   glyph content, useful for showing the contents of the buffer, for
--   example during debugging. There are currently two supported
--   serialization formats:
--   
--   <h2>text</h2>
--   
--   A human-readable, plain text format. The serialized glyphs will look
--   something like:
--   
--   <pre>
--   [uni0651=0@518,0+0|uni0628=0+1897]
--   </pre>
--   
--   <ul>
--   <li>The serialized glyphs are delimited with <tt>[</tt> and
--   <tt>]</tt>.</li>
--   <li>Glyphs are separated with <tt>|</tt></li>
--   <li>Each glyph starts with glyph name, or glyph index if
--   <tt><i>HB_BUFFER_SERIALIZE_FLAG_NO_GLYPH_NAMES</i></tt> flag is set.
--   Then,</li>
--   <li>If <tt><i>HB_BUFFER_SERIALIZE_FLAG_NO_CLUSTERS</i></tt> is not
--   set, <tt>=</tt> then <a>GlyphInfoT</a>.<tt><i>cluster</i></tt>.</li>
--   <li>If <tt><i>HB_BUFFER_SERIALIZE_FLAG_NO_POSITIONS</i></tt> is not
--   set, the <a>GlyphPositionT</a> in the format:</li>
--   <li>If <a>GlyphPositionT</a>.<tt><i>x_offset</i></tt> and
--   <a>GlyphPositionT</a>.<tt><i>y_offset</i></tt> are not both 0,
--   <tt>@x_offset,y_offset</tt>. Then,</li>
--   <li><tt>+x_advance</tt>, then <tt>,y_advance</tt> if
--   <a>GlyphPositionT</a>.<tt><i>y_advance</i></tt> is not 0. Then,</li>
--   <li>If <tt><i>HB_BUFFER_SERIALIZE_FLAG_GLYPH_EXTENTS</i></tt> is set,
--   the <a>GlyphExtentsT</a> in the format
--   <tt>&lt;x_bearing,y_bearing,width,height&gt;</tt></li>
--   </ul>
--   
--   <h2>json</h2>
--   
--   A machine-readable, structured format. The serialized glyphs will look
--   something like:
--   
--   <pre>
--   [{"g":"uni0651","cl":0,"dx":518,"dy":0,"ax":0,"ay":0},
--   {"g":"uni0628","cl":0,"dx":0,"dy":0,"ax":1897,"ay":0}]
--   </pre>
--   
--   Each glyph is a JSON object, with the following properties: *
--   <tt>g</tt>: the glyph name or glyph index if
--   <tt><i>HB_BUFFER_SERIALIZE_FLAG_NO_GLYPH_NAMES</i></tt> flag is set. *
--   <tt>cl</tt>: <a>GlyphInfoT</a>.<tt><i>cluster</i></tt> if
--   <tt><i>HB_BUFFER_SERIALIZE_FLAG_NO_CLUSTERS</i></tt> is not set. *
--   <tt>dx</tt>,<tt>dy</tt>,<tt>ax</tt>,<tt>ay</tt>:
--   <a>GlyphPositionT</a>.<tt><i>x_offset</i></tt>,
--   <a>GlyphPositionT</a>.<tt><i>y_offset</i></tt>,
--   <a>GlyphPositionT</a>.<tt><i>x_advance</i></tt> and
--   <a>GlyphPositionT</a>.<tt><i>y_advance</i></tt> respectively, if
--   <tt><i>HB_BUFFER_SERIALIZE_FLAG_NO_POSITIONS</i></tt> is not set. *
--   <tt>xb</tt>,<tt>yb</tt>,<tt>w</tt>,<tt>h</tt>:
--   <a>GlyphExtentsT</a>.<tt><i>x_bearing</i></tt>,
--   <a>GlyphExtentsT</a>.<tt><i>y_bearing</i></tt>,
--   <a>GlyphExtentsT</a>.<tt><i>width</i></tt> and
--   <a>GlyphExtentsT</a>.<tt><i>height</i></tt> respectively if
--   <tt><i>HB_BUFFER_SERIALIZE_FLAG_GLYPH_EXTENTS</i></tt> is set.
--   
--   <i>Since: 0.9.7</i>
bufferSerializeGlyphs :: (HasCallStack, MonadIO m) => BufferT -> Word32 -> Word32 -> Maybe FontT -> BufferSerializeFormatT -> [BufferSerializeFlagsT] -> m (Word32, ByteString, Word32)

-- | Returns a list of supported buffer serialization formats.
--   
--   <i>Since: 0.9.7</i>
bufferSerializeListFormats :: (HasCallStack, MonadIO m) => m [Text]

-- | Serializes <i><tt>buffer</tt></i> into a textual representation of its
--   content, when the buffer contains Unicode codepoints (i.e., before
--   shaping). This is useful for showing the contents of the buffer, for
--   example during debugging. There are currently two supported
--   serialization formats:
--   
--   <h2>text</h2>
--   
--   A human-readable, plain text format. The serialized codepoints will
--   look something like:
--   
--   <pre>
--   &lt;U+0651=0|U+0628=1&gt;
--   </pre>
--   
--   <ul>
--   <li>Glyphs are separated with <tt>|</tt></li>
--   <li>Unicode codepoints are expressed as zero-padded four (or more)
--   digit hexadecimal numbers preceded by <tt>U+</tt></li>
--   <li>If <tt><i>HB_BUFFER_SERIALIZE_FLAG_NO_CLUSTERS</i></tt> is not
--   set, the cluster will be indicated with a <tt>=</tt> then
--   <a>GlyphInfoT</a>.<tt><i>cluster</i></tt>.</li>
--   </ul>
--   
--   <h2>json</h2>
--   
--   A machine-readable, structured format. The serialized codepoints will
--   be a list of objects with the following properties: * <tt>u</tt>: the
--   Unicode codepoint as a decimal integer * <tt>cl</tt>:
--   <a>GlyphInfoT</a>.<tt><i>cluster</i></tt> if
--   <tt><i>HB_BUFFER_SERIALIZE_FLAG_NO_CLUSTERS</i></tt> is not set.
--   
--   For example:
--   
--   <pre>
--   [{u:1617,cl:0},{u:1576,cl:1}]
--   </pre>
--   
--   <i>Since: 2.7.3</i>
bufferSerializeUnicode :: (HasCallStack, MonadIO m) => BufferT -> Word32 -> Word32 -> BufferSerializeFormatT -> [BufferSerializeFlagsT] -> m (Word32, ByteString, Word32)

-- | Sets the cluster level of a buffer. The <a>BufferClusterLevelT</a>
--   dictates one aspect of how HarfBuzz will treat non-base characters
--   during shaping.
--   
--   <i>Since: 0.9.42</i>
bufferSetClusterLevel :: (HasCallStack, MonadIO m) => BufferT -> BufferClusterLevelT -> m ()

-- | Sets the type of <i><tt>buffer</tt></i> contents. Buffers are either
--   empty, contain characters (before shaping), or contain glyphs (the
--   result of shaping).
--   
--   You rarely need to call this function, since a number of other
--   functions transition the content type for you. Namely:
--   
--   <ul>
--   <li>A newly created buffer starts with content type
--   <a>BufferContentTypeTInvalid</a>. Calling <a>bufferReset</a>,
--   <a>bufferClearContents</a>, as well as calling <a>bufferSetLength</a>
--   with an argument of zero all set the buffer content type to invalid as
--   well.</li>
--   <li>Calling <a>bufferAddUtf8</a>, <a>bufferAddUtf16</a>,
--   <a>bufferAddUtf32</a>, <a>bufferAddCodepoints</a> and
--   <a>bufferAddLatin1</a> expect that buffer is either empty and have a
--   content type of invalid, or that buffer content type is
--   <a>BufferContentTypeTUnicode</a>, and they also set the content type
--   to Unicode if they added anything to an empty buffer.</li>
--   <li>Finally <a>shape</a> and <a>shapeFull</a> expect that the buffer
--   is either empty and have content type of invalid, or that buffer
--   content type is <a>BufferContentTypeTUnicode</a>, and upon success
--   they set the buffer content type to
--   <a>BufferContentTypeTGlyphs</a>.</li>
--   </ul>
--   
--   The above transitions are designed such that one can use a buffer in a
--   loop of "reset : add-text : shape" without needing to ever modify the
--   content type manually.
--   
--   <i>Since: 0.9.5</i>
bufferSetContentType :: (HasCallStack, MonadIO m) => BufferT -> BufferContentTypeT -> m ()

-- | Set the text flow direction of the buffer. No shaping can happen
--   without setting <i><tt>buffer</tt></i> direction, and it controls the
--   visual direction for the output glyphs; for RTL direction the glyphs
--   will be reversed. Many layout features depend on the proper setting of
--   the direction, for example, reversing RTL text before shaping, then
--   shaping with LTR direction is not the same as keeping the text in
--   logical order and shaping with RTL direction.
--   
--   <i>Since: 0.9.2</i>
bufferSetDirection :: (HasCallStack, MonadIO m) => BufferT -> DirectionT -> m ()

-- | Sets <i><tt>buffer</tt></i> flags to <i><tt>flags</tt></i>. See
--   <a>BufferFlagsT</a>.
--   
--   <i>Since: 0.9.7</i>
bufferSetFlags :: (HasCallStack, MonadIO m) => BufferT -> [BufferFlagsT] -> m ()

-- | Sets the <tt><i>hb_codepoint_t</i></tt> that replaces invisible
--   characters in the shaping result. If set to zero (default), the glyph
--   for the U+0020 SPACE character is used. Otherwise, this value is used
--   verbatim.
--   
--   <i>Since: 2.0.0</i>
bufferSetInvisibleGlyph :: (HasCallStack, MonadIO m) => BufferT -> Word32 -> m ()

-- | Sets the language of <i><tt>buffer</tt></i> to
--   <i><tt>language</tt></i>.
--   
--   Languages are crucial for selecting which OpenType feature to apply to
--   the buffer which can result in applying language-specific behaviour.
--   Languages are orthogonal to the scripts, and though they are related,
--   they are different concepts and should not be confused with each
--   other.
--   
--   Use <a>languageFromString</a> to convert from BCP 47 language tags to
--   <a>LanguageT</a>.
--   
--   <i>Since: 0.9.2</i>
bufferSetLanguage :: (HasCallStack, MonadIO m) => BufferT -> LanguageT -> m ()

-- | Similar to <a>bufferPreAllocate</a>, but clears any new items added at
--   the end.
--   
--   <i>Since: 0.9.2</i>
bufferSetLength :: (HasCallStack, MonadIO m) => BufferT -> Word32 -> m Int32

-- | Sets the <tt><i>hb_codepoint_t</i></tt> that replaces characters not
--   found in the font during shaping.
--   
--   The not-found glyph defaults to zero, sometimes known as the ".notdef"
--   glyph. This API allows for differentiating the two.
--   
--   <i>Since: 3.1.0</i>
bufferSetNotFoundGlyph :: (HasCallStack, MonadIO m) => BufferT -> Word32 -> m ()

-- | Sets the <tt><i>hb_codepoint_t</i></tt> that replaces
--   variation-selector characters not resolved in the font during shaping.
--   
--   The not-found-variation-selector glyph defaults to
--   <a>CODEPOINT_INVALID</a>, in which case an unresolved
--   variation-selector will be removed from the glyph string during
--   shaping. This API allows for changing that and retaining a glyph, such
--   that the situation can be detected by the client and handled
--   accordingly (e.g. by using a different font).
--   
--   <i>Since: 10.0.0</i>
bufferSetNotFoundVariationSelectorGlyph :: (HasCallStack, MonadIO m) => BufferT -> Word32 -> m ()

-- | Sets the random state of the buffer. The state changes every time a
--   glyph uses randomness (eg. the <tt>rand</tt> OpenType feature). This
--   function together with <a>bufferGetRandomState</a> allow for
--   transferring the current random state to a subsequent buffer, to get
--   better randomness distribution.
--   
--   Defaults to 1 and when buffer contents are cleared. A value of 0
--   disables randomness during shaping.
--   
--   <i>Since: 8.4.0</i>
bufferSetRandomState :: (HasCallStack, MonadIO m) => BufferT -> Word32 -> m ()

-- | Sets the <tt><i>hb_codepoint_t</i></tt> that replaces invalid entries
--   for a given encoding when adding text to <i><tt>buffer</tt></i>.
--   
--   Default is <a>BUFFER_REPLACEMENT_CODEPOINT_DEFAULT</a>.
--   
--   <i>Since: 0.9.31</i>
bufferSetReplacementCodepoint :: (HasCallStack, MonadIO m) => BufferT -> Word32 -> m ()

-- | Sets the script of <i><tt>buffer</tt></i> to <i><tt>script</tt></i>.
--   
--   Script is crucial for choosing the proper shaping behaviour for
--   scripts that require it (e.g. Arabic) and the which OpenType features
--   defined in the font to be applied.
--   
--   You can pass one of the predefined <a>ScriptT</a> values, or use
--   <a>scriptFromString</a> or <a>scriptFromIso15924Tag</a> to get the
--   corresponding script from an ISO 15924 script tag.
--   
--   <i>Since: 0.9.2</i>
bufferSetScript :: (HasCallStack, MonadIO m) => BufferT -> ScriptT -> m ()

-- | Sets the segment properties of the buffer, a shortcut for calling
--   <a>bufferSetDirection</a>, <a>bufferSetScript</a> and
--   <a>bufferSetLanguage</a> individually.
--   
--   <i>Since: 0.9.7</i>
bufferSetSegmentProperties :: (HasCallStack, MonadIO m) => BufferT -> SegmentPropertiesT -> m ()

-- | Sets the Unicode-functions structure of a buffer to
--   <i><tt>unicodeFuncs</tt></i>.
--   
--   <i>Since: 0.9.2</i>
bufferSetUnicodeFuncs :: (HasCallStack, MonadIO m) => BufferT -> UnicodeFuncsT -> m ()

-- | Allocates <i><tt>nmemb</tt></i> elements of <i><tt>size</tt></i> bytes
--   each, initialized to zero, using the allocator set at compile-time.
--   Typically just <tt><i>calloc()</i></tt>.
--   
--   <i>Since: 11.0.0</i>
calloc :: (HasCallStack, MonadIO m) => CSize -> CSize -> m (Ptr ())

-- | Fetches the alpha channel of the given <i><tt>color</tt></i>.
--   
--   <i>Since: 2.1.0</i>
colorGetAlpha :: (HasCallStack, MonadIO m) => Word32 -> m Word8

-- | Fetches the blue channel of the given <i><tt>color</tt></i>.
--   
--   <i>Since: 2.1.0</i>
colorGetBlue :: (HasCallStack, MonadIO m) => Word32 -> m Word8

-- | Fetches the green channel of the given <i><tt>color</tt></i>.
--   
--   <i>Since: 2.1.0</i>
colorGetGreen :: (HasCallStack, MonadIO m) => Word32 -> m Word8

-- | Fetches the red channel of the given <i><tt>color</tt></i>.
--   
--   <i>Since: 2.1.0</i>
colorGetRed :: (HasCallStack, MonadIO m) => Word32 -> m Word8

-- | Fetches a list of color stops from the given color line object.
--   
--   Note that due to variations being applied, the returned color stops
--   may be out of order. It is the callers responsibility to ensure that
--   color stops are sorted by their offset before they are used.
--   
--   <i>Since: 7.0.0</i>
colorLineGetColorStops :: (HasCallStack, MonadIO m) => ColorLineT -> Word32 -> [ColorStopT] -> m (Word32, [ColorStopT])

-- | Fetches the extend mode of the color line object.
--   
--   <i>Since: 7.0.0</i>
colorLineGetExtend :: (HasCallStack, MonadIO m) => ColorLineT -> m PaintExtendT

-- | Converts a string to an <a>DirectionT</a>.
--   
--   Matching is loose and applies only to the first letter. For examples,
--   "LTR" and "left-to-right" will both return
--   <tt><i>HB_DIRECTION_LTR</i></tt>.
--   
--   Unmatched strings will return <tt><i>HB_DIRECTION_INVALID</i></tt>.
--   
--   <i>Since: 0.9.2</i>
directionFromString :: (HasCallStack, MonadIO m) => ByteString -> m DirectionT

-- | Converts an <a>DirectionT</a> to a string.
--   
--   <i>Since: 0.9.2</i>
directionToString :: (HasCallStack, MonadIO m) => DirectionT -> m Text

-- | Perform a "close-path" draw operation.
--   
--   <i>Since: 4.0.0</i>
drawClosePath :: (HasCallStack, MonadIO m) => DrawFuncsT -> Ptr () -> DrawStateT -> m ()

-- | Perform a "cubic-to" draw operation.
--   
--   <i>Since: 4.0.0</i>
drawCubicTo :: (HasCallStack, MonadIO m) => DrawFuncsT -> Ptr () -> DrawStateT -> Float -> Float -> Float -> Float -> Float -> Float -> m ()

-- | Creates a new draw callbacks object.
--   
--   <i>Since: 4.0.0</i>
drawFuncsCreate :: (HasCallStack, MonadIO m) => m DrawFuncsT

-- | Fetches the singleton empty draw-functions structure.
--   
--   <i>Since: 7.0.0</i>
drawFuncsGetEmpty :: (HasCallStack, MonadIO m) => m DrawFuncsT

-- | Checks whether <i><tt>dfuncs</tt></i> is immutable.
--   
--   <i>Since: 4.0.0</i>
drawFuncsIsImmutable :: (HasCallStack, MonadIO m) => DrawFuncsT -> m Int32

-- | Makes <i><tt>dfuncs</tt></i> object immutable.
--   
--   <i>Since: 4.0.0</i>
drawFuncsMakeImmutable :: (HasCallStack, MonadIO m) => DrawFuncsT -> m ()

-- | Perform a "line-to" draw operation.
--   
--   <i>Since: 4.0.0</i>
drawLineTo :: (HasCallStack, MonadIO m) => DrawFuncsT -> Ptr () -> DrawStateT -> Float -> Float -> m ()

-- | Perform a "move-to" draw operation.
--   
--   <i>Since: 4.0.0</i>
drawMoveTo :: (HasCallStack, MonadIO m) => DrawFuncsT -> Ptr () -> DrawStateT -> Float -> Float -> m ()

-- | Perform a "quadratic-to" draw operation.
--   
--   <i>Since: 4.0.0</i>
drawQuadraticTo :: (HasCallStack, MonadIO m) => DrawFuncsT -> Ptr () -> DrawStateT -> Float -> Float -> Float -> Float -> m ()

-- | Add table for <i><tt>tag</tt></i> with data provided by
--   <i><tt>blob</tt></i> to the face. <i><tt>face</tt></i> must be created
--   using <a>faceBuilderCreate</a>.
--   
--   <i>Since: 1.9.0</i>
faceBuilderAddTable :: (HasCallStack, MonadIO m) => FaceT -> Word32 -> BlobT -> m Int32

-- | Creates a <a>FaceT</a> that can be used with
--   <a>faceBuilderAddTable</a>. After tables are added to the face, it can
--   be compiled to a binary font file by calling <a>faceReferenceBlob</a>.
--   
--   <i>Since: 1.9.0</i>
faceBuilderCreate :: (HasCallStack, MonadIO m) => m FaceT

-- | Set the ordering of tables for serialization. Any tables not specified
--   in the tags list will be ordered after the tables in tags, ordered by
--   the default sort ordering.
--   
--   <i>Since: 5.3.0</i>
faceBuilderSortTables :: (HasCallStack, MonadIO m) => FaceT -> [Word32] -> m ()

-- | Fetches the number of faces in a blob.
--   
--   <i>Since: 1.7.7</i>
faceCount :: (HasCallStack, MonadIO m) => BlobT -> m Word32

-- | Constructs a new face object from the specified blob and a face index
--   into that blob.
--   
--   The face index is used for blobs of file formats such as TTC and DFont
--   that can contain more than one face. Face indices within such
--   collections are zero-based.
--   
--   &lt;note&gt;Note: If the blob font format is not a collection,
--   <i><tt>index</tt></i> is ignored. Otherwise, only the lower 16-bits of
--   <i><tt>index</tt></i> are used. The unmodified <i><tt>index</tt></i>
--   can be accessed via <a>faceGetIndex</a>.&lt;/note&gt;
--   
--   &lt;note&gt;Note: The high 16-bits of <i><tt>index</tt></i>, if
--   non-zero, are used by <a>fontCreate</a> to load named-instances in
--   variable fonts. See <a>fontCreate</a> for details.&lt;/note&gt;
--   
--   <i>Since: 0.9.2</i>
faceCreate :: (HasCallStack, MonadIO m) => BlobT -> Word32 -> m FaceT

-- | A thin wrapper around <a>blobCreateFromFileOrFail</a> followed by
--   <a>faceCreateOrFail</a>.
--   
--   <i>Since: 10.1.0</i>
faceCreateFromFileOrFail :: (HasCallStack, MonadIO m) => Text -> Word32 -> m FaceT

-- | A thin wrapper around the face loader functions registered with
--   HarfBuzz. If <i><tt>loaderName</tt></i> is <tt>NULL</tt> or the empty
--   string, the first available loader is used.
--   
--   For example, the FreeType ("ft") loader might be able to load WOFF and
--   WOFF2 files if FreeType is built with those features, whereas the
--   OpenType ("ot") loader will not.
--   
--   <i>Since: 11.0.0</i>
faceCreateFromFileOrFailUsing :: (HasCallStack, MonadIO m) => Text -> Word32 -> Maybe Text -> m FaceT

-- | Like <a>faceCreate</a>, but returns <tt>NULL</tt> if the blob data
--   contains no usable font face at the specified index.
--   
--   <i>Since: 10.1.0</i>
faceCreateOrFail :: (HasCallStack, MonadIO m) => BlobT -> Word32 -> m FaceT

-- | A thin wrapper around the face loader functions registered with
--   HarfBuzz. If <i><tt>loaderName</tt></i> is <tt>NULL</tt> or the empty
--   string, the first available loader is used.
--   
--   For example, the FreeType ("ft") loader might be able to load WOFF and
--   WOFF2 files if FreeType is built with those features, whereas the
--   OpenType ("ot") loader will not.
--   
--   <i>Since: 11.0.0</i>
faceCreateOrFailUsing :: (HasCallStack, MonadIO m) => BlobT -> Word32 -> Maybe Text -> m FaceT

-- | Fetches the singleton empty face object.
--   
--   <i>Since: 0.9.2</i>
faceGetEmpty :: (HasCallStack, MonadIO m) => m FaceT

-- | Fetches the glyph-count value of the specified face object.
--   
--   <i>Since: 0.9.7</i>
faceGetGlyphCount :: (HasCallStack, MonadIO m) => FaceT -> m Word32

-- | Fetches the face-index corresponding to the given face.
--   
--   &lt;note&gt;Note: face indices within a collection are
--   zero-based.&lt;/note&gt;
--   
--   <i>Since: 0.9.2</i>
faceGetIndex :: (HasCallStack, MonadIO m) => FaceT -> m Word32

-- | Fetches a list of all table tags for a face, if possible. The list
--   returned will begin at the offset provided
--   
--   <i>Since: 1.6.0</i>
faceGetTableTags :: (HasCallStack, MonadIO m) => FaceT -> Word32 -> m (Word32, [Word32])

-- | Fetches the units-per-em (UPEM) value of the specified face object.
--   
--   Typical UPEM values for fonts are 1000, or 2048, but any value in
--   between 16 and 16,384 is allowed for OpenType fonts.
--   
--   <i>Since: 0.9.2</i>
faceGetUpem :: (HasCallStack, MonadIO m) => FaceT -> m Word32

-- | Tests whether the given face object is immutable.
--   
--   <i>Since: 0.9.2</i>
faceIsImmutable :: (HasCallStack, MonadIO m) => FaceT -> m Int32

-- | Retrieves the list of face loaders supported by HarfBuzz.
--   
--   <i>Since: 11.0.0</i>
faceListLoaders :: (HasCallStack, MonadIO m) => m [Text]

-- | Makes the given face object immutable.
--   
--   <i>Since: 0.9.2</i>
faceMakeImmutable :: (HasCallStack, MonadIO m) => FaceT -> m ()

-- | Fetches a pointer to the binary blob that contains the specified face.
--   If referencing the face data is not possible, this function creates a
--   blob out of individual table blobs if <a>faceGetTableTags</a> works
--   with this face, otherwise it returns an empty blob.
--   
--   <i>Since: 0.9.2</i>
faceReferenceBlob :: (HasCallStack, MonadIO m) => FaceT -> m BlobT

-- | Fetches a reference to the specified table within the specified face.
--   Returns an empty blob if referencing table data is not possible.
--   
--   <i>Since: 0.9.2</i>
faceReferenceTable :: (HasCallStack, MonadIO m) => FaceT -> Word32 -> m BlobT

-- | Sets the glyph count for a face object to the specified value.
--   
--   This API is used in rare circumstances.
--   
--   <i>Since: 0.9.7</i>
faceSetGlyphCount :: (HasCallStack, MonadIO m) => FaceT -> Word32 -> m ()

-- | Assigns the specified face-index to <i><tt>face</tt></i>. Fails if the
--   face is immutable.
--   
--   &lt;note&gt;Note: changing the index has no effect on the face itself
--   This only changes the value returned by
--   <a>faceGetIndex</a>.&lt;/note&gt;
--   
--   <i>Since: 0.9.2</i>
faceSetIndex :: (HasCallStack, MonadIO m) => FaceT -> Word32 -> m ()

-- | Sets the units-per-em (upem) for a face object to the specified value.
--   
--   This API is used in rare circumstances.
--   
--   <i>Since: 0.9.2</i>
faceSetUpem :: (HasCallStack, MonadIO m) => FaceT -> Word32 -> m ()

-- | Parses a string into a <a>FeatureT</a>.
--   
--   The format for specifying feature strings follows. All valid CSS
--   font-feature-settings values other than 'normal' and the global values
--   are also accepted, though not documented below. CSS string escapes are
--   not supported.
--   
--   The range indices refer to the positions between Unicode characters.
--   The position before the first character is always 0.
--   
--   The format is Python-esque. Here is how it all works:
--   
--   &lt;informaltable pgwide='1' align='left' frame='none'&gt; &lt;tgroup
--   cols='5'&gt; &lt;thead&gt;
--   &lt;row&gt;&lt;entry&gt;Syntax&lt;/entry&gt;
--   &lt;entry&gt;Value&lt;/entry&gt; &lt;entry&gt;Start&lt;/entry&gt;
--   &lt;entry&gt;End&lt;/entry&gt;&lt;/row&gt; &lt;/thead&gt;
--   &lt;tbody&gt; &lt;row&gt;&lt;entry&gt;Setting
--   value:&lt;/entry&gt;&lt;/row&gt;
--   &lt;row&gt;&lt;entry&gt;kern&lt;/entry&gt;
--   &lt;entry&gt;1&lt;/entry&gt; &lt;entry&gt;0&lt;/entry&gt;
--   &lt;entry&gt;∞&lt;/entry&gt; &lt;entry&gt;Turn feature
--   on&lt;/entry&gt;&lt;/row&gt;
--   &lt;row&gt;&lt;entry&gt;+kern&lt;/entry&gt;
--   &lt;entry&gt;1&lt;/entry&gt; &lt;entry&gt;0&lt;/entry&gt;
--   &lt;entry&gt;∞&lt;/entry&gt; &lt;entry&gt;Turn feature
--   on&lt;/entry&gt;&lt;/row&gt;
--   &lt;row&gt;&lt;entry&gt;-kern&lt;/entry&gt;
--   &lt;entry&gt;0&lt;/entry&gt; &lt;entry&gt;0&lt;/entry&gt;
--   &lt;entry&gt;∞&lt;/entry&gt; &lt;entry&gt;Turn feature
--   off&lt;/entry&gt;&lt;/row&gt;
--   &lt;row&gt;&lt;entry&gt;kern=0&lt;/entry&gt;
--   &lt;entry&gt;0&lt;/entry&gt; &lt;entry&gt;0&lt;/entry&gt;
--   &lt;entry&gt;∞&lt;/entry&gt; &lt;entry&gt;Turn feature
--   off&lt;/entry&gt;&lt;/row&gt;
--   &lt;row&gt;&lt;entry&gt;kern=1&lt;/entry&gt;
--   &lt;entry&gt;1&lt;/entry&gt; &lt;entry&gt;0&lt;/entry&gt;
--   &lt;entry&gt;∞&lt;/entry&gt; &lt;entry&gt;Turn feature
--   on&lt;/entry&gt;&lt;/row&gt;
--   &lt;row&gt;&lt;entry&gt;aalt=2&lt;/entry&gt;
--   &lt;entry&gt;2&lt;/entry&gt; &lt;entry&gt;0&lt;/entry&gt;
--   &lt;entry&gt;∞&lt;/entry&gt; &lt;entry&gt;Choose 2nd
--   alternate&lt;/entry&gt;&lt;/row&gt; &lt;row&gt;&lt;entry&gt;Setting
--   index:&lt;/entry&gt;&lt;/row&gt;
--   &lt;row&gt;&lt;entry&gt;kern[]&lt;/entry&gt;
--   &lt;entry&gt;1&lt;/entry&gt; &lt;entry&gt;0&lt;/entry&gt;
--   &lt;entry&gt;∞&lt;/entry&gt; &lt;entry&gt;Turn feature
--   on&lt;/entry&gt;&lt;/row&gt;
--   &lt;row&gt;&lt;entry&gt;kern[:]&lt;/entry&gt;
--   &lt;entry&gt;1&lt;/entry&gt; &lt;entry&gt;0&lt;/entry&gt;
--   &lt;entry&gt;∞&lt;/entry&gt; &lt;entry&gt;Turn feature
--   on&lt;/entry&gt;&lt;/row&gt;
--   &lt;row&gt;&lt;entry&gt;kern[5:]&lt;/entry&gt;
--   &lt;entry&gt;1&lt;/entry&gt; &lt;entry&gt;5&lt;/entry&gt;
--   &lt;entry&gt;∞&lt;/entry&gt; &lt;entry&gt;Turn feature on,
--   partial&lt;/entry&gt;&lt;/row&gt;
--   &lt;row&gt;&lt;entry&gt;kern[:5]&lt;/entry&gt;
--   &lt;entry&gt;1&lt;/entry&gt; &lt;entry&gt;0&lt;/entry&gt;
--   &lt;entry&gt;5&lt;/entry&gt; &lt;entry&gt;Turn feature on,
--   partial&lt;/entry&gt;&lt;/row&gt;
--   &lt;row&gt;&lt;entry&gt;kern[3:5]&lt;/entry&gt;
--   &lt;entry&gt;1&lt;/entry&gt; &lt;entry&gt;3&lt;/entry&gt;
--   &lt;entry&gt;5&lt;/entry&gt; &lt;entry&gt;Turn feature on,
--   range&lt;/entry&gt;&lt;/row&gt;
--   &lt;row&gt;&lt;entry&gt;kern[3]&lt;/entry&gt;
--   &lt;entry&gt;1&lt;/entry&gt; &lt;entry&gt;3&lt;/entry&gt;
--   &lt;entry&gt;3+1&lt;/entry&gt; &lt;entry&gt;Turn feature on, single
--   char&lt;/entry&gt;&lt;/row&gt; &lt;row&gt;&lt;entry&gt;Mixing it
--   all:&lt;/entry&gt;&lt;/row&gt;
--   &lt;row&gt;&lt;entry&gt;aalt[3:5]=2&lt;/entry&gt;
--   &lt;entry&gt;2&lt;/entry&gt; &lt;entry&gt;3&lt;/entry&gt;
--   &lt;entry&gt;5&lt;/entry&gt; &lt;entry&gt;Turn 2nd alternate on for
--   range&lt;/entry&gt;&lt;/row&gt; &lt;/tbody&gt; &lt;/tgroup&gt;
--   &lt;/informaltable&gt;
--   
--   <i>Since: 0.9.5</i>
featureFromString :: (HasCallStack, MonadIO m) => ByteString -> m (Int32, FeatureT)

-- | Converts a <a>FeatureT</a> into a <tt>NULL</tt>-terminated string in
--   the format understood by <a>featureFromString</a>. The client in
--   responsible for allocating big enough size for <i><tt>buf</tt></i>,
--   128 bytes is more than enough.
--   
--   Note that the feature value will be omitted if it is '1', but the
--   string won't include any whitespace.
--   
--   <i>Since: 0.9.5</i>
featureToString :: (HasCallStack, MonadIO m) => FeatureT -> m [Text]

-- | Adds the origin coordinates to an (X,Y) point coordinate, in the
--   specified glyph ID in the specified font.
--   
--   Calls the appropriate direction-specific variant (horizontal or
--   vertical) depending on the value of <i><tt>direction</tt></i>.
--   
--   <i>Since: 0.9.2</i>
fontAddGlyphOriginForDirection :: (HasCallStack, MonadIO m) => FontT -> Word32 -> DirectionT -> Int32 -> Int32 -> m (Int32, Int32)

-- | Notifies the <i><tt>font</tt></i> that underlying font data has
--   changed. This has the effect of increasing the serial as returned by
--   <a>fontGetSerial</a>, which invalidates internal caches.
--   
--   <i>Since: 4.4.0</i>
fontChanged :: (HasCallStack, MonadIO m) => FontT -> m ()

-- | Constructs a new font object from the specified face.
--   
--   &lt;note&gt;Note: If <i><tt>face</tt></i>'s index value (as passed to
--   <a>faceCreate</a> has non-zero top 16-bits, those bits minus one are
--   passed to <a>fontSetVarNamedInstance</a>, effectively loading a
--   named-instance of a variable font, instead of the default-instance.
--   This allows specifying which named-instance to load by default when
--   creating the face.&lt;/note&gt;
--   
--   <i>Since: 0.9.2</i>
fontCreate :: (HasCallStack, MonadIO m) => FaceT -> m FontT

-- | Constructs a sub-font font object from the specified
--   <i><tt>parent</tt></i> font, replicating the parent's properties.
--   
--   <i>Since: 0.9.2</i>
fontCreateSubFont :: (HasCallStack, MonadIO m) => FontT -> m FontT

-- | Draws the outline that corresponds to a glyph in the specified
--   <i><tt>font</tt></i>.
--   
--   This is an older name for <a>fontDrawGlyphOrFail</a>, with no return
--   value.
--   
--   The outline is returned by way of calls to the callbacks of the
--   <i><tt>dfuncs</tt></i> objects, with <i><tt>drawData</tt></i> passed
--   to them.
--   
--   <i>Since: 7.0.0</i>
fontDrawGlyph :: (HasCallStack, MonadIO m) => FontT -> Word32 -> DrawFuncsT -> Ptr () -> m ()

-- | Draws the outline that corresponds to a glyph in the specified
--   <i><tt>font</tt></i>.
--   
--   This is a newer name for <a>fontDrawGlyph</a>, that returns
--   <tt>false</tt> if the font has no outlines for the glyph.
--   
--   The outline is returned by way of calls to the callbacks of the
--   <i><tt>dfuncs</tt></i> objects, with <i><tt>drawData</tt></i> passed
--   to them.
--   
--   <i>Since: 11.2.0</i>
fontDrawGlyphOrFail :: (HasCallStack, MonadIO m) => FontT -> Word32 -> DrawFuncsT -> Ptr () -> m Int32

-- | Creates a new <a>FontFuncsT</a> structure of font functions.
--   
--   <i>Since: 0.9.2</i>
fontFuncsCreate :: (HasCallStack, MonadIO m) => m FontFuncsT

-- | Fetches an empty font-functions structure.
--   
--   <i>Since: 0.9.2</i>
fontFuncsGetEmpty :: (HasCallStack, MonadIO m) => m FontFuncsT

-- | Tests whether a font-functions structure is immutable.
--   
--   <i>Since: 0.9.2</i>
fontFuncsIsImmutable :: (HasCallStack, MonadIO m) => FontFuncsT -> m Int32

-- | Makes a font-functions structure immutable.
--   
--   <i>Since: 0.9.2</i>
fontFuncsMakeImmutable :: (HasCallStack, MonadIO m) => FontFuncsT -> m ()

-- | Fetches the empty font object.
--   
--   <i>Since: 0.9.2</i>
fontGetEmpty :: (HasCallStack, MonadIO m) => m FontT

-- | Fetches the extents for a font in a text segment of the specified
--   direction.
--   
--   Calls the appropriate direction-specific variant (horizontal or
--   vertical) depending on the value of <i><tt>direction</tt></i>.
--   
--   <i>Since: 1.1.3</i>
fontGetExtentsForDirection :: (HasCallStack, MonadIO m) => FontT -> DirectionT -> m FontExtentsT

-- | Fetches the face associated with the specified font object.
--   
--   <i>Since: 0.9.2</i>
fontGetFace :: (HasCallStack, MonadIO m) => FontT -> m FaceT

-- | Fetches the glyph ID for a Unicode code point in the specified font,
--   with an optional variation selector.
--   
--   If <i><tt>variationSelector</tt></i> is 0, calls
--   <a>fontGetNominalGlyph</a>; otherwise calls
--   <a>fontGetVariationGlyph</a>.
--   
--   <i>Since: 0.9.2</i>
fontGetGlyph :: (HasCallStack, MonadIO m) => FontT -> Word32 -> Word32 -> m (Int32, Word32)

-- | Fetches the advance for a glyph ID from the specified font, in a text
--   segment of the specified direction.
--   
--   Calls the appropriate direction-specific variant (horizontal or
--   vertical) depending on the value of <i><tt>direction</tt></i>.
--   
--   <i>Since: 0.9.2</i>
fontGetGlyphAdvanceForDirection :: (HasCallStack, MonadIO m) => FontT -> Word32 -> DirectionT -> m (Int32, Int32)

-- | Fetches the advances for a sequence of glyph IDs in the specified
--   font, in a text segment of the specified direction.
--   
--   Calls the appropriate direction-specific variant (horizontal or
--   vertical) depending on the value of <i><tt>direction</tt></i>.
--   
--   <i>Since: 1.8.6</i>
fontGetGlyphAdvancesForDirection :: (HasCallStack, MonadIO m) => FontT -> DirectionT -> Word32 -> Word32 -> Word32 -> m (Int32, Word32)

-- | Fetches the (x,y) coordinates of a specified contour-point index in
--   the specified glyph, within the specified font.
--   
--   <i>Since: 0.9.2</i>
fontGetGlyphContourPoint :: (HasCallStack, MonadIO m) => FontT -> Word32 -> Word32 -> m (Int32, Int32, Int32)

-- | Fetches the (X,Y) coordinates of a specified contour-point index in
--   the specified glyph ID in the specified font, with respect to the
--   origin in a text segment in the specified direction.
--   
--   Calls the appropriate direction-specific variant (horizontal or
--   vertical) depending on the value of <i><tt>direction</tt></i>.
--   
--   <i>Since: 0.9.2</i>
fontGetGlyphContourPointForOrigin :: (HasCallStack, MonadIO m) => FontT -> Word32 -> Word32 -> DirectionT -> m (Int32, Int32, Int32)

-- | Fetches the <a>GlyphExtentsT</a> data for a glyph ID in the specified
--   font.
--   
--   <i>Since: 0.9.2</i>
fontGetGlyphExtents :: (HasCallStack, MonadIO m) => FontT -> Word32 -> m (Int32, GlyphExtentsT)

-- | Fetches the <a>GlyphExtentsT</a> data for a glyph ID in the specified
--   font, with respect to the origin in a text segment in the specified
--   direction.
--   
--   Calls the appropriate direction-specific variant (horizontal or
--   vertical) depending on the value of <i><tt>direction</tt></i>.
--   
--   <i>Since: 0.9.2</i>
fontGetGlyphExtentsForOrigin :: (HasCallStack, MonadIO m) => FontT -> Word32 -> DirectionT -> m (Int32, GlyphExtentsT)

-- | Fetches the glyph ID that corresponds to a name string in the
--   specified <i><tt>font</tt></i>.
--   
--   &lt;note&gt;Note: <i><tt>len</tt></i> == -1 means the name string is
--   null-terminated.&lt;/note&gt;
--   
--   <i>Since: 0.9.2</i>
fontGetGlyphFromName :: (HasCallStack, MonadIO m) => FontT -> [Text] -> m (Int32, Word32)

-- | Fetches the advance for a glyph ID in the specified font, for
--   horizontal text segments.
--   
--   <i>Since: 0.9.2</i>
fontGetGlyphHAdvance :: (HasCallStack, MonadIO m) => FontT -> Word32 -> m Int32

-- | Fetches the advances for a sequence of glyph IDs in the specified
--   font, for horizontal text segments.
--   
--   <i>Since: 1.8.6</i>
fontGetGlyphHAdvances :: (HasCallStack, MonadIO m) => FontT -> Word32 -> Word32 -> Word32 -> Word32 -> m Int32

-- | Fetches the kerning-adjustment value for a glyph-pair in the specified
--   font, for horizontal text segments.
--   
--   &lt;note&gt;It handles legacy kerning only (as returned by the
--   corresponding <a>FontFuncsT</a> function).&lt;/note&gt;
--   
--   <i>Since: 0.9.2</i>
fontGetGlyphHKerning :: (HasCallStack, MonadIO m) => FontT -> Word32 -> Word32 -> m Int32

-- | Fetches the (X,Y) coordinates of the origin for a glyph ID in the
--   specified font, for horizontal text segments.
--   
--   <i>Since: 0.9.2</i>
fontGetGlyphHOrigin :: (HasCallStack, MonadIO m) => FontT -> Word32 -> m (Int32, Int32, Int32)

-- | Fetches the (X,Y) coordinates of the origin for requested glyph IDs in
--   the specified font, for horizontal text segments.
--   
--   <i>Since: 11.3.0</i>
fontGetGlyphHOrigins :: (HasCallStack, MonadIO m) => FontT -> Word32 -> Word32 -> Word32 -> Word32 -> Word32 -> m (Int32, Int32, Int32)

-- | Fetches the kerning-adjustment value for a glyph-pair in the specified
--   font.
--   
--   Calls the appropriate direction-specific variant (horizontal or
--   vertical) depending on the value of <i><tt>direction</tt></i>.
--   
--   <i>Since: 0.9.2</i>
fontGetGlyphKerningForDirection :: (HasCallStack, MonadIO m) => FontT -> Word32 -> Word32 -> DirectionT -> m (Int32, Int32)

-- | Fetches the glyph-name string for a glyph ID in the specified
--   <i><tt>font</tt></i>.
--   
--   According to the OpenType specification, glyph names are limited to 63
--   characters and can only contain (a subset of) ASCII.
--   
--   <i>Since: 0.9.2</i>
fontGetGlyphName :: (HasCallStack, MonadIO m) => FontT -> Word32 -> m (Int32, [Text])

-- | Fetches the (X,Y) coordinates of the origin for a glyph in the
--   specified font.
--   
--   Calls the appropriate direction-specific variant (horizontal or
--   vertical) depending on the value of <i><tt>direction</tt></i>.
--   
--   <i>Since: 0.9.2</i>
fontGetGlyphOriginForDirection :: (HasCallStack, MonadIO m) => FontT -> Word32 -> DirectionT -> m (Int32, Int32)

-- | Fetches the glyph shape that corresponds to a glyph in the specified
--   <i><tt>font</tt></i>. The shape is returned by way of calls to the
--   callbacks of the <i><tt>dfuncs</tt></i> objects, with
--   <i><tt>drawData</tt></i> passed to them.
--   
--   <i>Since: 4.0.0</i>

-- | <i>Deprecated: (Since version 7.0.0)Use <a>fontDrawGlyph</a>
--   instead</i>
fontGetGlyphShape :: (HasCallStack, MonadIO m) => FontT -> Word32 -> DrawFuncsT -> Ptr () -> m ()

-- | Fetches the advance for a glyph ID in the specified font, for vertical
--   text segments.
--   
--   <i>Since: 0.9.2</i>
fontGetGlyphVAdvance :: (HasCallStack, MonadIO m) => FontT -> Word32 -> m Int32

-- | Fetches the advances for a sequence of glyph IDs in the specified
--   font, for vertical text segments.
--   
--   <i>Since: 1.8.6</i>
fontGetGlyphVAdvances :: (HasCallStack, MonadIO m) => FontT -> Word32 -> Word32 -> Word32 -> m (Int32, Word32)

-- | Fetches the kerning-adjustment value for a glyph-pair in the specified
--   font, for vertical text segments.
--   
--   &lt;note&gt;It handles legacy kerning only (as returned by the
--   corresponding <a>FontFuncsT</a> function).&lt;/note&gt;
--   
--   <i>Since: 0.9.2</i>

-- | <i>Deprecated: (Since version 2.0.0)</i>
fontGetGlyphVKerning :: (HasCallStack, MonadIO m) => FontT -> Word32 -> Word32 -> m Int32

-- | Fetches the (X,Y) coordinates of the origin for a glyph ID in the
--   specified font, for vertical text segments.
--   
--   <i>Since: 0.9.2</i>
fontGetGlyphVOrigin :: (HasCallStack, MonadIO m) => FontT -> Word32 -> m (Int32, Int32, Int32)

-- | Fetches the (X,Y) coordinates of the origin for requested glyph IDs in
--   the specified font, for vertical text segments.
--   
--   <i>Since: 11.3.0</i>
fontGetGlyphVOrigins :: (HasCallStack, MonadIO m) => FontT -> Word32 -> Word32 -> Word32 -> Word32 -> Word32 -> m (Int32, Int32, Int32)

-- | Fetches the extents for a specified font, for horizontal text
--   segments.
--   
--   <i>Since: 1.1.3</i>
fontGetHExtents :: (HasCallStack, MonadIO m) => FontT -> m (Int32, FontExtentsT)

-- | Fetches the nominal glyph ID for a Unicode code point in the specified
--   font.
--   
--   This version of the function should not be used to fetch glyph IDs for
--   code points modified by variation selectors. For variation-selector
--   support, user <a>fontGetVariationGlyph</a> or use <a>fontGetGlyph</a>.
--   
--   <i>Since: 1.2.3</i>
fontGetNominalGlyph :: (HasCallStack, MonadIO m) => FontT -> Word32 -> m (Int32, Word32)

-- | Fetches the nominal glyph IDs for a sequence of Unicode code points.
--   Glyph IDs must be returned in a <tt><i>hb_codepoint_t</i></tt> output
--   parameter. Stops at the first unsupported glyph ID.
--   
--   <i>Since: 2.6.3</i>
fontGetNominalGlyphs :: (HasCallStack, MonadIO m) => FontT -> Word32 -> Word32 -> Word32 -> Word32 -> m (Word32, Word32)

-- | Fetches the parent font of <i><tt>font</tt></i>.
--   
--   <i>Since: 0.9.2</i>
fontGetParent :: (HasCallStack, MonadIO m) => FontT -> m FontT

-- | Fetches the horizontal and vertical points-per-em (ppem) of a font.
--   
--   <i>Since: 0.9.2</i>
fontGetPpem :: (HasCallStack, MonadIO m) => FontT -> m (Word32, Word32)

-- | Fetches the "point size" of a font. Used in CoreText to implement
--   optical sizing.
--   
--   <i>Since: 1.6.0</i>
fontGetPtem :: (HasCallStack, MonadIO m) => FontT -> m Float

-- | Fetches the horizontal and vertical scale of a font.
--   
--   <i>Since: 0.9.2</i>
fontGetScale :: (HasCallStack, MonadIO m) => FontT -> m (Int32, Int32)

-- | Returns the internal serial number of the font. The serial number is
--   increased every time a setting on the font is changed, using a setter
--   function.
--   
--   <i>Since: 4.4.0</i>
fontGetSerial :: (HasCallStack, MonadIO m) => FontT -> m Word32

-- | Fetches the "synthetic boldness" parameters of a font.
--   
--   <i>Since: 7.0.0</i>
fontGetSyntheticBold :: (HasCallStack, MonadIO m) => FontT -> m (Float, Float, Int32)

-- | Fetches the "synthetic slant" of a font.
--   
--   <i>Since: 3.3.0</i>
fontGetSyntheticSlant :: (HasCallStack, MonadIO m) => FontT -> m Float

-- | Fetches the extents for a specified font, for vertical text segments.
--   
--   <i>Since: 1.1.3</i>
fontGetVExtents :: (HasCallStack, MonadIO m) => FontT -> m (Int32, FontExtentsT)

-- | Fetches the list of variation coordinates (in design-space units)
--   currently set on a font.
--   
--   &lt;note&gt;Note that if no variation coordinates are set, this
--   function may return <a>Nothing</a>.&lt;/note&gt;
--   
--   &lt;note&gt;If variations have been set on the font using normalized
--   coordinates (i.e. via <a>fontSetVarCoordsNormalized</a>), the design
--   coordinates will have NaN (Not a Number) values.&lt;/note&gt;
--   
--   Return value is valid as long as variation coordinates of the font are
--   not modified.
--   
--   <i>Since: 3.3.0</i>
fontGetVarCoordsDesign :: (HasCallStack, MonadIO m) => FontT -> m (Float, Word32)

-- | Fetches the list of normalized variation coordinates currently set on
--   a font.
--   
--   &lt;note&gt;Note that if no variation coordinates are set, this
--   function may return <a>Nothing</a>.&lt;/note&gt;
--   
--   Return value is valid as long as variation coordinates of the font are
--   not modified.
--   
--   <i>Since: 1.4.2</i>
fontGetVarCoordsNormalized :: (HasCallStack, MonadIO m) => FontT -> m (Int32, Word32)

-- | Returns the currently-set named-instance index of the font.
--   
--   <i>Since: 7.0.0</i>
fontGetVarNamedInstance :: (HasCallStack, MonadIO m) => FontT -> m Word32

-- | Fetches the glyph ID for a Unicode code point when followed by by the
--   specified variation-selector code point, in the specified font.
--   
--   <i>Since: 1.2.3</i>
fontGetVariationGlyph :: (HasCallStack, MonadIO m) => FontT -> Word32 -> Word32 -> m (Int32, Word32)

-- | Fetches the glyph ID from <i><tt>font</tt></i> that matches the
--   specified string. Strings of the format <tt>gidDDD</tt> or
--   <tt>uniUUUU</tt> are parsed automatically.
--   
--   &lt;note&gt;Note: <i><tt>len</tt></i> == -1 means the string is
--   null-terminated.&lt;/note&gt;
--   
--   <i>Since: 0.9.2</i>
fontGlyphFromString :: (HasCallStack, MonadIO m) => FontT -> ByteString -> m (Int32, Word32)

-- | Fetches the name of the specified glyph ID in <i><tt>font</tt></i> and
--   returns it in string <i><tt>s</tt></i>.
--   
--   If the glyph ID has no name in <i><tt>font</tt></i>, a string of the
--   form <tt>gidDDD</tt> is generated, with <tt>DDD</tt> being the glyph
--   ID.
--   
--   According to the OpenType specification, glyph names are limited to 63
--   characters and can only contain (a subset of) ASCII.
--   
--   <i>Since: 0.9.2</i>
fontGlyphToString :: (HasCallStack, MonadIO m) => FontT -> Word32 -> m [Text]

-- | Tests whether a font object is immutable.
--   
--   <i>Since: 0.9.2</i>
fontIsImmutable :: (HasCallStack, MonadIO m) => FontT -> m Int32

-- | Tests whether a font is synthetic. A synthetic font is one that has
--   either synthetic slant or synthetic bold set on it.
--   
--   <i>Since: 11.2.0</i>
fontIsSynthetic :: (HasCallStack, MonadIO m) => FontT -> m Int32

-- | Retrieves the list of font functions supported by HarfBuzz.
--   
--   <i>Since: 11.0.0</i>
fontListFuncs :: (HasCallStack, MonadIO m) => m [Text]

-- | Makes <i><tt>font</tt></i> immutable.
--   
--   <i>Since: 0.9.2</i>
fontMakeImmutable :: (HasCallStack, MonadIO m) => FontT -> m ()

-- | Paints the glyph. This function is similar to
--   <a>fontPaintGlyphOrFail</a>, but if painting a color glyph failed, it
--   will fall back to painting an outline monochrome glyph.
--   
--   The painting instructions are returned by way of calls to the
--   callbacks of the <i><tt>funcs</tt></i> object, with
--   <i><tt>paintData</tt></i> passed to them.
--   
--   If the font has color palettes (see <a>otColorHasPalettes</a>), then
--   <i><tt>paletteIndex</tt></i> selects the palette to use. If the font
--   only has one palette, this will be 0.
--   
--   <i>Since: 7.0.0</i>
fontPaintGlyph :: (HasCallStack, MonadIO m) => FontT -> Word32 -> PaintFuncsT -> Ptr () -> Word32 -> Word32 -> m ()

-- | Paints a color glyph.
--   
--   This function is similar to, but lower-level than,
--   <a>fontPaintGlyph</a>. It is suitable for clients that need more
--   control. If there are no color glyphs available, it will return
--   <tt>false</tt>. The client can then fall back to
--   <a>fontDrawGlyphOrFail</a> for the monochrome outline glyph.
--   
--   The painting instructions are returned by way of calls to the
--   callbacks of the <i><tt>funcs</tt></i> object, with
--   <i><tt>paintData</tt></i> passed to them.
--   
--   If the font has color palettes (see <a>otColorHasPalettes</a>), then
--   <i><tt>paletteIndex</tt></i> selects the palette to use. If the font
--   only has one palette, this will be 0.
--   
--   <i>Since: 11.2.0</i>
fontPaintGlyphOrFail :: (HasCallStack, MonadIO m) => FontT -> Word32 -> PaintFuncsT -> Ptr () -> Word32 -> Word32 -> m Int32

-- | Sets <i><tt>face</tt></i> as the font-face value of
--   <i><tt>font</tt></i>.
--   
--   <i>Since: 1.4.3</i>
fontSetFace :: (HasCallStack, MonadIO m) => FontT -> FaceT -> m ()

-- | Sets the font-functions structure to use for a font, based on the
--   specified name.
--   
--   If <i><tt>name</tt></i> is <tt>NULL</tt> or the empty string, the
--   default (first) functioning font-functions are used. This default can
--   be changed by setting the <tt>HB_FONT_FUNCS</tt> environment variable
--   to the name of the desired font-functions.
--   
--   <i>Since: 11.0.0</i>
fontSetFuncsUsing :: (HasCallStack, MonadIO m) => FontT -> Text -> m Int32

-- | Sets the parent font of <i><tt>font</tt></i>.
--   
--   <i>Since: 1.0.5</i>
fontSetParent :: (HasCallStack, MonadIO m) => FontT -> FontT -> m ()

-- | Sets the horizontal and vertical pixels-per-em (PPEM) of a font.
--   
--   These values are used for pixel-size-specific adjustment to shaping
--   and draw results, though for the most part they are unused and can be
--   left unset.
--   
--   <i>Since: 0.9.2</i>
fontSetPpem :: (HasCallStack, MonadIO m) => FontT -> Word32 -> Word32 -> m ()

-- | Sets the "point size" of a font. Set to zero to unset. Used in
--   CoreText to implement optical sizing.
--   
--   &lt;note&gt;Note: There are 72 points in an inch.&lt;/note&gt;
--   
--   <i>Since: 1.6.0</i>
fontSetPtem :: (HasCallStack, MonadIO m) => FontT -> Float -> m ()

-- | Sets the horizontal and vertical scale of a font.
--   
--   The font scale is a number related to, but not the same as, font size.
--   Typically the client establishes a scale factor to be used between the
--   two. For example, 64, or 256, which would be the fractional-precision
--   part of the font scale. This is necessary because
--   <tt><i>hb_position_t</i></tt> values are integer types and you need to
--   leave room for fractional values in there.
--   
--   For example, to set the font size to 20, with 64 levels of fractional
--   precision you would call <tt>hb_font_set_scale(font, 20 * 64, 20 *
--   64)</tt>.
--   
--   In the example above, even what font size 20 means is up to you. It
--   might be 20 pixels, or 20 points, or 20 millimeters. HarfBuzz does not
--   care about that. You can set the point size of the font using
--   <a>fontSetPtem</a>, and the pixel size using <a>fontSetPpem</a>.
--   
--   The choice of scale is yours but needs to be consistent between what
--   you set here, and what you expect out of <tt><i>hb_position_t</i></tt>
--   as well has draw / paint API output values.
--   
--   Fonts default to a scale equal to the UPEM value of their face. A font
--   with this setting is sometimes called an "unscaled" font.
--   
--   <i>Since: 0.9.2</i>
fontSetScale :: (HasCallStack, MonadIO m) => FontT -> Int32 -> Int32 -> m ()

-- | Sets the "synthetic boldness" of a font.
--   
--   Positive values for <i><tt>xEmbolden</tt></i> /
--   <i><tt>yEmbolden</tt></i> make a font bolder, negative values thinner.
--   Typical values are in the 0.01 to 0.05 range. The default value is
--   zero.
--   
--   Synthetic boldness is applied by offsetting the contour points of the
--   glyph shape.
--   
--   Synthetic boldness is applied when rendering a glyph via
--   <a>fontDrawGlyphOrFail</a>.
--   
--   If <i><tt>inPlace</tt></i> is <tt>false</tt>, then glyph
--   advance-widths are also adjusted, otherwise they are not. The in-place
--   mode is useful for simulating <a>font grading</a>.
--   
--   <i>Since: 7.0.0</i>
fontSetSyntheticBold :: (HasCallStack, MonadIO m) => FontT -> Float -> Float -> Int32 -> m ()

-- | Sets the "synthetic slant" of a font. By default is zero. Synthetic
--   slant is the graphical skew applied to the font at rendering time.
--   
--   HarfBuzz needs to know this value to adjust shaping results, metrics,
--   and style values to match the slanted rendering.
--   
--   &lt;note&gt;Note: The glyph shape fetched via the
--   <a>fontDrawGlyphOrFail</a> function is slanted to reflect this value
--   as well.&lt;/note&gt;
--   
--   &lt;note&gt;Note: The slant value is a ratio. For example, a 20% slant
--   would be represented as a 0.2 value.&lt;/note&gt;
--   
--   <i>Since: 3.3.0</i>
fontSetSyntheticSlant :: (HasCallStack, MonadIO m) => FontT -> Float -> m ()

-- | Applies a list of variation coordinates (in design-space units) to a
--   font.
--   
--   Note that this overrides all existing variations set on
--   <i><tt>font</tt></i>. Axes not included in <i><tt>coords</tt></i> will
--   be effectively set to their default values.
--   
--   <i>Since: 1.4.2</i>
fontSetVarCoordsDesign :: (HasCallStack, MonadIO m) => FontT -> [Float] -> m ()

-- | Applies a list of variation coordinates (in normalized units) to a
--   font.
--   
--   Note that this overrides all existing variations set on
--   <i><tt>font</tt></i>. Axes not included in <i><tt>coords</tt></i> will
--   be effectively set to their default values.
--   
--   &lt;note&gt;Note: Coordinates should be normalized to
--   2.14.&lt;/note&gt;
--   
--   <i>Since: 1.4.2</i>
fontSetVarCoordsNormalized :: (HasCallStack, MonadIO m) => FontT -> [Int32] -> m ()

-- | Sets design coords of a font from a named-instance index.
--   
--   <i>Since: 2.6.0</i>
fontSetVarNamedInstance :: (HasCallStack, MonadIO m) => FontT -> Word32 -> m ()

-- | Change the value of one variation axis on the font.
--   
--   Note: This function is expensive to be called repeatedly. If you want
--   to set multiple variation axes at the same time, use
--   <a>fontSetVariations</a> instead.
--   
--   <i>Since: 7.1.0</i>
fontSetVariation :: (HasCallStack, MonadIO m) => FontT -> Word32 -> Float -> m ()

-- | Applies a list of font-variation settings to a font.
--   
--   Note that this overrides all existing variations set on
--   <i><tt>font</tt></i>. Axes not included in <i><tt>variations</tt></i>
--   will be effectively set to their default values.
--   
--   <i>Since: 1.4.2</i>
fontSetVariations :: (HasCallStack, MonadIO m) => FontT -> [VariationT] -> m ()

-- | Subtracts the origin coordinates from an (X,Y) point coordinate, in
--   the specified glyph ID in the specified font.
--   
--   Calls the appropriate direction-specific variant (horizontal or
--   vertical) depending on the value of <i><tt>direction</tt></i>.
--   
--   <i>Since: 0.9.2</i>
fontSubtractGlyphOriginForDirection :: (HasCallStack, MonadIO m) => FontT -> Word32 -> DirectionT -> Int32 -> Int32 -> m (Int32, Int32)

-- | Frees the memory pointed to by <i><tt>ptr</tt></i>, using the
--   allocator set at compile-time. Typically just <tt><i>free()</i></tt>.
--   
--   <i>Since: 11.0.0</i>
free :: (HasCallStack, MonadIO m) => Ptr () -> m ()

-- | Creates an <a>FaceT</a> face object from the specified FT_Face.
--   
--   Note that this is using the FT_Face object just to get at the
--   underlying font data, and fonts created from the returned <a>FaceT</a>
--   will use the native HarfBuzz font implementation, unless you call
--   <a>ftFontSetFuncs</a> on them.
--   
--   This variant of the function caches the newly created <a>FaceT</a>
--   face object, using the <i><tt>generic</tt></i> pointer of
--   <i><tt>ftFace</tt></i>. Subsequent function calls that are passed the
--   same <i><tt>ftFace</tt></i> parameter will have the same <a>FaceT</a>
--   returned to them, and that <a>FaceT</a> will be correctly reference
--   counted.
--   
--   However, client programs are still responsible for destroying
--   <i><tt>ftFace</tt></i> after the last <a>FaceT</a> face object has
--   been destroyed.
--   
--   <i>Since: 0.9.2</i>
ftFaceCreateCached :: (HasCallStack, MonadIO m) => Face -> m FaceT

-- | Creates an <a>FaceT</a> face object from the specified font blob and
--   face index.
--   
--   This is similar in functionality to
--   <tt><i>hb_face_create_from_blob_or_fail()</i></tt>, but uses the
--   FreeType library for loading the font blob. This can be useful, for
--   example, to load WOFF and WOFF2 font data.
--   
--   <i>Since: 11.0.0</i>
ftFaceCreateFromBlobOrFail :: (HasCallStack, MonadIO m) => BlobT -> Word32 -> m FaceT

-- | Creates an <a>FaceT</a> face object from the specified font file and
--   face index.
--   
--   This is similar in functionality to <a>faceCreateFromFileOrFail</a>,
--   but uses the FreeType library for loading the font file. This can be
--   useful, for example, to load WOFF and WOFF2 font data.
--   
--   <i>Since: 10.1.0</i>
ftFaceCreateFromFileOrFail :: (HasCallStack, MonadIO m) => Text -> Word32 -> m FaceT

-- | Creates an <a>FaceT</a> face object from the specified FT_Face.
--   
--   Note that this is using the FT_Face object just to get at the
--   underlying font data, and fonts created from the returned <a>FaceT</a>
--   will use the native HarfBuzz font implementation, unless you call
--   <a>ftFontSetFuncs</a> on them.
--   
--   This is the preferred variant of the hb_ft_face_create* function
--   family, because it calls <tt><i>FT_Reference_Face()</i></tt> on
--   <i><tt>ftFace</tt></i>, ensuring that <i><tt>ftFace</tt></i> remains
--   alive as long as the resulting <a>FaceT</a> face object remains alive.
--   Also calls <tt><i>FT_Done_Face()</i></tt> when the <a>FaceT</a> face
--   object is destroyed.
--   
--   Use this version unless you know you have good reasons not to.
--   
--   <i>Since: 0.9.38</i>
ftFaceCreateReferenced :: (HasCallStack, MonadIO m) => Face -> m FaceT

-- | Refreshes the state of <i><tt>font</tt></i> when the underlying
--   FT_Face has changed. This function should be called after changing the
--   size or variation-axis settings on the FT_Face.
--   
--   <i>Since: 1.0.5</i>
ftFontChanged :: (HasCallStack, MonadIO m) => FontT -> m ()

-- | Creates an <a>FontT</a> font object from the specified FT_Face.
--   
--   &lt;note&gt;Note: You must set the face size on <i><tt>ftFace</tt></i>
--   before calling <a>ftFontCreateReferenced</a> on it. HarfBuzz assumes
--   size is always set and will access <tt>size</tt> member of FT_Face
--   unconditionally.&lt;/note&gt;
--   
--   This is the preferred variant of the hb_ft_font_create* function
--   family, because it calls <tt><i>FT_Reference_Face()</i></tt> on
--   <i><tt>ftFace</tt></i>, ensuring that <i><tt>ftFace</tt></i> remains
--   alive as long as the resulting <a>FontT</a> font object remains alive.
--   
--   Use this version unless you know you have good reasons not to.
--   
--   <i>Since: 0.9.38</i>
ftFontCreateReferenced :: (HasCallStack, MonadIO m) => Face -> m FontT

-- | Fetches the FT_Load_Glyph load flags of the specified <a>FontT</a>.
--   
--   For more information, see
--   &lt;https://freetype.org/freetype2/docs/reference/ft2-glyph_retrieval.html<tt><i>ft_load_xxx</i></tt>&gt;
--   
--   This function works with <a>FontT</a> objects created by
--   <tt><i>hb_ft_font_create()</i></tt> or <a>ftFontCreateReferenced</a>.
--   
--   <i>Since: 1.0.5</i>
ftFontGetLoadFlags :: (HasCallStack, MonadIO m) => FontT -> m Int32

-- | Configures the font-functions structure of the specified <a>FontT</a>
--   font object to use FreeType font functions.
--   
--   In particular, you can use this function to configure an existing
--   <a>FaceT</a> face object for use with FreeType font functions even if
--   that <a>FaceT</a> face object was initially created with
--   <a>faceCreate</a>, and therefore was not initially configured to use
--   FreeType font functions.
--   
--   An <a>FontT</a> object created with
--   <tt><i>hb_ft_font_create()</i></tt> is preconfigured for FreeType font
--   functions and does not require this function to be used.
--   
--   Note that if you modify the underlying <a>FontT</a> after calling this
--   function, you need to call <a>ftHbFontChanged</a> to update the
--   underlying FT_Face.
--   
--   &lt;note&gt;Note: Internally, this function creates an FT_Face.
--   &lt;/note&gt;
--   
--   <i>Since: 1.0.5</i>
ftFontSetFuncs :: (HasCallStack, MonadIO m) => FontT -> m ()

-- | Sets the FT_Load_Glyph load flags for the specified <a>FontT</a>.
--   
--   For more information, see
--   &lt;https://freetype.org/freetype2/docs/reference/ft2-glyph_retrieval.html<tt><i>ft_load_xxx</i></tt>&gt;
--   
--   This function works with <a>FontT</a> objects created by
--   <tt><i>hb_ft_font_create()</i></tt> or <a>ftFontCreateReferenced</a>.
--   
--   <i>Since: 1.0.5</i>
ftFontSetLoadFlags :: (HasCallStack, MonadIO m) => FontT -> Int32 -> m ()

-- | Refreshes the state of the underlying FT_Face of <i><tt>font</tt></i>
--   when the hb_font_t <i><tt>font</tt></i> has changed. This function
--   should be called after changing the size or variation-axis settings on
--   the <i><tt>font</tt></i>. This call is fast if nothing has changed on
--   <i><tt>font</tt></i>.
--   
--   Note that as of version 11.0.0, calling this function is not
--   necessary, as HarfBuzz will automatically detect changes to the font
--   and update the underlying FT_Face as needed.
--   
--   <i>Since: 4.4.0</i>
ftHbFontChanged :: (HasCallStack, MonadIO m) => FontT -> m Int32

-- | Creates an <a>BlobT</a> blob from the specified GBytes data structure.
--   
--   <i>Since: 0.9.38</i>
glibBlobCreate :: (HasCallStack, MonadIO m) => Bytes -> m BlobT

-- | Fetches a Unicode-functions structure that is populated with the
--   appropriate GLib function for each method.
--   
--   <i>Since: 0.9.38</i>
glibGetUnicodeFuncs :: (HasCallStack, MonadIO m) => m UnicodeFuncsT

-- | Fetches the GUnicodeScript identifier that corresponds to the
--   specified <a>ScriptT</a> script.
--   
--   <i>Since: 0.9.38</i>
glibScriptFromScript :: (HasCallStack, MonadIO m) => ScriptT -> m UnicodeScript

-- | Fetches the <a>ScriptT</a> script that corresponds to the specified
--   GUnicodeScript identifier.
--   
--   <i>Since: 0.9.38</i>
glibScriptToScript :: (HasCallStack, MonadIO m) => UnicodeScript -> m ScriptT

-- | Returns glyph flags encoded within a <a>GlyphInfoT</a>.
--   
--   <i>Since: 1.5.0</i>
glyphInfoGetGlyphFlags :: (HasCallStack, MonadIO m) => GlyphInfoT -> m [GlyphFlagsT]

-- | Converts <i><tt>str</tt></i> representing a BCP 47 language tag to the
--   corresponding <a>LanguageT</a>.
--   
--   <i>Since: 0.9.2</i>
languageFromString :: (HasCallStack, MonadIO m) => ByteString -> m LanguageT

-- | Fetch the default language from current locale.
--   
--   &lt;note&gt;Note that the first time this function is called, it calls
--   "setlocale (LC_CTYPE, nullptr)" to fetch current locale. The
--   underlying setlocale function is, in many implementations, NOT
--   threadsafe. To avoid problems, call this function once before multiple
--   threads can call it. This function is only used from
--   <a>bufferGuessSegmentProperties</a> by HarfBuzz itself.&lt;/note&gt;
--   
--   <i>Since: 0.9.2</i>
languageGetDefault :: (HasCallStack, MonadIO m) => m LanguageT

-- | Check whether a second language tag is the same or a more specific
--   version of the provided language tag. For example, "fa_IR.utf8" is a
--   more specific tag for "fa" or for "fa_IR".
--   
--   <i>Since: 5.0.0</i>
languageMatches :: (HasCallStack, MonadIO m) => LanguageT -> LanguageT -> m Int32

-- | Converts an <a>LanguageT</a> to a string.
--   
--   <i>Since: 0.9.2</i>
languageToString :: (HasCallStack, MonadIO m) => LanguageT -> m Text

-- | Allocates <i><tt>size</tt></i> bytes of memory, using the allocator
--   set at compile-time. Typically just <tt><i>malloc()</i></tt>.
--   
--   <i>Since: 11.0.0</i>
malloc :: (HasCallStack, MonadIO m) => CSize -> m (Ptr ())

-- | Tests whether memory allocation for a set was successful.
--   
--   <i>Since: 1.7.7</i>
mapAllocationSuccessful :: (HasCallStack, MonadIO m) => MapT -> m Int32

-- | Clears out the contents of <i><tt>map</tt></i>.
--   
--   <i>Since: 1.7.7</i>
mapClear :: (HasCallStack, MonadIO m) => MapT -> m ()

-- | Allocate a copy of <i><tt>map</tt></i>.
--   
--   <i>Since: 4.4.0</i>
mapCopy :: (HasCallStack, MonadIO m) => MapT -> m MapT

-- | Creates a new, initially empty map.
--   
--   <i>Since: 1.7.7</i>
mapCreate :: (HasCallStack, MonadIO m) => m MapT

-- | Removes <i><tt>key</tt></i> and its stored value from
--   <i><tt>map</tt></i>.
--   
--   <i>Since: 1.7.7</i>
mapDel :: (HasCallStack, MonadIO m) => MapT -> Word32 -> m ()

-- | Fetches the value stored for <i><tt>key</tt></i> in
--   <i><tt>map</tt></i>.
--   
--   <i>Since: 1.7.7</i>
mapGet :: (HasCallStack, MonadIO m) => MapT -> Word32 -> m Word32

-- | Fetches the singleton empty <a>MapT</a>.
--   
--   <i>Since: 1.7.7</i>
mapGetEmpty :: (HasCallStack, MonadIO m) => m MapT

-- | Returns the number of key-value pairs in the map.
--   
--   <i>Since: 1.7.7</i>
mapGetPopulation :: (HasCallStack, MonadIO m) => MapT -> m Word32

-- | Tests whether <i><tt>key</tt></i> is an element of
--   <i><tt>map</tt></i>.
--   
--   <i>Since: 1.7.7</i>
mapHas :: (HasCallStack, MonadIO m) => MapT -> Word32 -> m Int32

-- | Creates a hash representing <i><tt>map</tt></i>.
--   
--   <i>Since: 4.4.0</i>
mapHash :: (HasCallStack, MonadIO m) => MapT -> m Word32

-- | Tests whether <i><tt>map</tt></i> is empty (contains no elements).
--   
--   <i>Since: 1.7.7</i>
mapIsEmpty :: (HasCallStack, MonadIO m) => MapT -> m Int32

-- | Tests whether <i><tt>map</tt></i> and <i><tt>other</tt></i> are equal
--   (contain the same elements).
--   
--   <i>Since: 4.3.0</i>
mapIsEqual :: (HasCallStack, MonadIO m) => MapT -> MapT -> m Int32

-- | Add the keys of <i><tt>map</tt></i> to <i><tt>keys</tt></i>.
--   
--   <i>Since: 7.0.0</i>
mapKeys :: (HasCallStack, MonadIO m) => MapT -> SetT -> m ()

-- | Fetches the next key/value pair in <i><tt>map</tt></i>.
--   
--   Set <i><tt>idx</tt></i> to -1 to get started.
--   
--   If the map is modified during iteration, the behavior is undefined.
--   
--   The order in which the key/values are returned is undefined.
--   
--   <i>Since: 7.0.0</i>
mapNext :: (HasCallStack, MonadIO m) => MapT -> Int32 -> m (Int32, Int32, Word32, Word32)

-- | Stores <i><tt>key</tt></i>:<i><tt>value</tt></i> in the map.
--   
--   <i>Since: 1.7.7</i>
mapSet :: (HasCallStack, MonadIO m) => MapT -> Word32 -> Word32 -> m ()

-- | Add the contents of <i><tt>other</tt></i> to <i><tt>map</tt></i>.
--   
--   <i>Since: 7.0.0</i>
mapUpdate :: (HasCallStack, MonadIO m) => MapT -> MapT -> m ()

-- | Add the values of <i><tt>map</tt></i> to <i><tt>values</tt></i>.
--   
--   <i>Since: 7.0.0</i>
mapValues :: (HasCallStack, MonadIO m) => MapT -> SetT -> m ()

-- | Fetches a list of all color layers for the specified glyph index in
--   the specified face. The list returned will begin at the offset
--   provided.
--   
--   <i>Since: 2.1.0</i>
otColorGlyphGetLayers :: (HasCallStack, MonadIO m) => FaceT -> Word32 -> Word32 -> Maybe [OtColorLayerT] -> m (Word32, Maybe [OtColorLayerT])

-- | Tests where a face includes COLRv1 paint data for
--   <i><tt>glyph</tt></i>.
--   
--   <i>Since: 7.0.0</i>
otColorGlyphHasPaint :: (HasCallStack, MonadIO m) => FaceT -> Word32 -> m Int32

-- | Fetches the PNG image for a glyph. This function takes a font object,
--   not a face object, as input. To get an optimally sized PNG blob, the
--   PPEM values must be set on the <i><tt>font</tt></i> object. If PPEM is
--   unset, the blob returned will be the largest PNG available.
--   
--   If the glyph has no PNG image, the singleton empty blob is returned.
--   
--   <i>Since: 2.1.0</i>
otColorGlyphReferencePng :: (HasCallStack, MonadIO m) => FontT -> Word32 -> m BlobT

-- | Fetches the SVG document for a glyph. The blob may be either plain
--   text or gzip-encoded.
--   
--   If the glyph has no SVG document, the singleton empty blob is
--   returned.
--   
--   <i>Since: 2.1.0</i>
otColorGlyphReferenceSvg :: (HasCallStack, MonadIO m) => FaceT -> Word32 -> m BlobT

-- | Tests whether a face includes a <tt>COLR</tt> table with data
--   according to COLRv0.
--   
--   <i>Since: 2.1.0</i>
otColorHasLayers :: (HasCallStack, MonadIO m) => FaceT -> m Int32

-- | Tests where a face includes a <tt>COLR</tt> table with data according
--   to COLRv1.
--   
--   <i>Since: 7.0.0</i>
otColorHasPaint :: (HasCallStack, MonadIO m) => FaceT -> m Int32

-- | Tests whether a face includes a <tt>CPAL</tt> color-palette table.
--   
--   <i>Since: 2.1.0</i>
otColorHasPalettes :: (HasCallStack, MonadIO m) => FaceT -> m Int32

-- | Tests whether a face has PNG glyph images (either in <tt>CBDT</tt> or
--   <tt>sbix</tt> tables).
--   
--   <i>Since: 2.1.0</i>
otColorHasPng :: (HasCallStack, MonadIO m) => FaceT -> m Int32

-- | Tests whether a face includes any <tt>SVG</tt> glyph images.
--   
--   <i>Since: 2.1.0</i>
otColorHasSvg :: (HasCallStack, MonadIO m) => FaceT -> m Int32

-- | Fetches the <tt>name</tt> table Name ID that provides display names
--   for the specified color in a face's <tt>CPAL</tt> color palette.
--   
--   Display names can be generic (e.g., "Background") or specific (e.g.,
--   "Eye color").
--   
--   <i>Since: 2.1.0</i>
otColorPaletteColorGetNameId :: (HasCallStack, MonadIO m) => FaceT -> Word32 -> m Word32

-- | Fetches a list of the colors in a color palette.
--   
--   After calling this function, <i><tt>colors</tt></i> will be filled
--   with the palette colors. If <i><tt>colors</tt></i> is NULL, the
--   function will just return the number of total colors without storing
--   any actual colors; this can be used for allocating a buffer of
--   suitable size before calling <a>otColorPaletteGetColors</a> a second
--   time.
--   
--   The RGBA values in the palette are unpremultiplied. See the OpenType
--   spec <a>CPAL</a> section for details.
--   
--   <i>Since: 2.1.0</i>
otColorPaletteGetColors :: (HasCallStack, MonadIO m) => FaceT -> Word32 -> Word32 -> m (Word32, Maybe [Word32])

-- | Fetches the number of color palettes in a face.
--   
--   <i>Since: 2.1.0</i>
otColorPaletteGetCount :: (HasCallStack, MonadIO m) => FaceT -> m Word32

-- | Fetches the flags defined for a color palette.
--   
--   <i>Since: 2.1.0</i>
otColorPaletteGetFlags :: (HasCallStack, MonadIO m) => FaceT -> Word32 -> m [OtColorPaletteFlagsT]

-- | Fetches the <tt>name</tt> table Name ID that provides display names
--   for a <tt>CPAL</tt> color palette.
--   
--   Palette display names can be generic (e.g., "Default") or provide
--   specific, themed names (e.g., "Spring", "Summer", "Fall", and
--   "Winter").
--   
--   <i>Since: 2.1.0</i>
otColorPaletteGetNameId :: (HasCallStack, MonadIO m) => FaceT -> Word32 -> m Word32

-- | Sets the font functions to use when working with <i><tt>font</tt></i>
--   to the HarfBuzz's native implementation. This is the default for fonts
--   newly created.
--   
--   <i>Since: 0.9.28</i>
otFontSetFuncs :: (HasCallStack, MonadIO m) => FontT -> m ()

-- | Fetches a list of the characters defined as having a variant under the
--   specified "Character Variant" ("cvXX") feature tag.
--   
--   <i>Since: 2.0.0</i>
otLayoutFeatureGetCharacters :: (HasCallStack, MonadIO m) => FaceT -> Word32 -> Word32 -> Word32 -> [Word32] -> m (Word32, [Word32])

-- | Fetches a list of all lookups enumerated for the specified feature, in
--   the specified face's GSUB table or GPOS table. The list returned will
--   begin at the offset provided.
--   
--   <i>Since: 0.9.7</i>
otLayoutFeatureGetLookups :: (HasCallStack, MonadIO m) => FaceT -> Word32 -> Word32 -> Word32 -> m (Word32, [Word32])

-- | Fetches name indices from feature parameters for "Stylistic Set"
--   ('ssXX') or "Character Variant" ('cvXX') features.
--   
--   <i>Since: 2.0.0</i>
otLayoutFeatureGetNameIds :: (HasCallStack, MonadIO m) => FaceT -> Word32 -> Word32 -> m (Int32, Word32, Word32, Word32, Word32, Word32)

-- | Fetches a list of all lookups enumerated for the specified feature, in
--   the specified face's GSUB table or GPOS table, enabled at the
--   specified variations index. The list returned will begin at the offset
--   provided.
--   
--   <i>Since: 1.4.0</i>
otLayoutFeatureWithVariationsGetLookups :: (HasCallStack, MonadIO m) => FaceT -> Word32 -> Word32 -> Word32 -> Word32 -> m (Word32, [Word32])

-- | Fetches a list of all attachment points for the specified glyph in the
--   GDEF table of the face. The list returned will begin at the offset
--   provided.
--   
--   Useful if the client program wishes to cache the list.
otLayoutGetAttachPoints :: (HasCallStack, MonadIO m) => FaceT -> Word32 -> Word32 -> m (Word32, [Word32])

-- | Fetches a baseline value from the face.
--   
--   <i>Since: 2.6.0</i>
otLayoutGetBaseline :: (HasCallStack, MonadIO m) => FontT -> OtLayoutBaselineTagT -> DirectionT -> Word32 -> Word32 -> m (Int32, Int32)

-- | Fetches a baseline value from the face.
--   
--   This function is like <a>otLayoutGetBaseline</a> but takes
--   <a>ScriptT</a> and <a>LanguageT</a> instead of OpenType
--   <tt><i>hb_tag_t</i></tt>.
--   
--   <i>Since: 8.0.0</i>
otLayoutGetBaseline2 :: (HasCallStack, MonadIO m) => FontT -> OtLayoutBaselineTagT -> DirectionT -> ScriptT -> Maybe LanguageT -> m (Int32, Int32)

-- | Fetches a baseline value from the face, and synthesizes it if the font
--   does not have it.
--   
--   <i>Since: 4.0.0</i>
otLayoutGetBaselineWithFallback :: (HasCallStack, MonadIO m) => FontT -> OtLayoutBaselineTagT -> DirectionT -> Word32 -> Word32 -> m Int32

-- | Fetches a baseline value from the face, and synthesizes it if the font
--   does not have it.
--   
--   This function is like <a>otLayoutGetBaselineWithFallback</a> but takes
--   <a>ScriptT</a> and <a>LanguageT</a> instead of OpenType
--   <tt><i>hb_tag_t</i></tt>.
--   
--   <i>Since: 8.0.0</i>
otLayoutGetBaselineWithFallback2 :: (HasCallStack, MonadIO m) => FontT -> OtLayoutBaselineTagT -> DirectionT -> ScriptT -> Maybe LanguageT -> m Int32

-- | Fetches script/language-specific font extents. These values are looked
--   up in the <tt>BASE</tt> table's <tt>MinMax</tt> records.
--   
--   If no such extents are found, the default extents for the font are
--   fetched. As such, the return value of this function can for the most
--   part be ignored. Note that the per-script/language extents do not have
--   a line-gap value, and the line-gap is set to zero in that case.
--   
--   <i>Since: 8.0.0</i>
otLayoutGetFontExtents :: (HasCallStack, MonadIO m) => FontT -> DirectionT -> Word32 -> Word32 -> m (Int32, Maybe FontExtentsT)

-- | Fetches script/language-specific font extents. These values are looked
--   up in the <tt>BASE</tt> table's <tt>MinMax</tt> records.
--   
--   If no such extents are found, the default extents for the font are
--   fetched. As such, the return value of this function can for the most
--   part be ignored. Note that the per-script/language extents do not have
--   a line-gap value, and the line-gap is set to zero in that case.
--   
--   This function is like <a>otLayoutGetFontExtents</a> but takes
--   <a>ScriptT</a> and <a>LanguageT</a> instead of OpenType
--   <tt><i>hb_tag_t</i></tt>.
--   
--   <i>Since: 8.0.0</i>
otLayoutGetFontExtents2 :: (HasCallStack, MonadIO m) => FontT -> DirectionT -> ScriptT -> Maybe LanguageT -> m (Int32, Maybe FontExtentsT)

-- | Fetches the GDEF class of the requested glyph in the specified face.
--   
--   <i>Since: 0.9.7</i>
otLayoutGetGlyphClass :: (HasCallStack, MonadIO m) => FaceT -> Word32 -> m OtLayoutGlyphClassT

-- | Fetches the dominant horizontal baseline tag used by
--   <i><tt>script</tt></i>.
--   
--   <i>Since: 4.0.0</i>
otLayoutGetHorizontalBaselineTagForScript :: (HasCallStack, MonadIO m) => ScriptT -> m OtLayoutBaselineTagT

-- | Fetches a list of the caret positions defined for a ligature glyph in
--   the GDEF table of the font. The list returned will begin at the offset
--   provided.
--   
--   Note that a ligature that is formed from n characters will have n-1
--   caret positions. The first character is not represented in the array,
--   since its caret position is the glyph position.
--   
--   The positions returned by this function are 'unshaped', and will have
--   to be fixed up for kerning that may be applied to the ligature glyph.
otLayoutGetLigatureCarets :: (HasCallStack, MonadIO m) => FontT -> DirectionT -> Word32 -> Word32 -> m (Word32, [Int32])

-- | Fetches optical-size feature data (i.e., the <tt>size</tt> feature
--   from GPOS). Note that the subfamily_id and the subfamily name string
--   (accessible via the subfamily_name_id) as used here are defined as
--   pertaining only to fonts within a font family that differ specifically
--   in their respective size ranges; other ways to differentiate fonts
--   within a subfamily are not covered by the <tt>size</tt> feature.
--   
--   For more information on this distinction, see the
--   &lt;<a>http://developer.gnome.org/harfbuzz/stable/</a>
--   <a>https://docs.microsoft.com/en-us/typography/opentype/spec/features_pt#tag-size</a>
--   <tt>size</tt> feature documentation&gt;.
--   
--   <i>Since: 0.9.10</i>
otLayoutGetSizeParams :: (HasCallStack, MonadIO m) => FaceT -> m (Int32, Word32, Word32, Word32, Word32, Word32)

-- | Tests whether a face has any glyph classes defined in its GDEF table.
otLayoutHasGlyphClasses :: (HasCallStack, MonadIO m) => FaceT -> m Int32

-- | Tests whether the specified face includes any GPOS positioning.
otLayoutHasPositioning :: (HasCallStack, MonadIO m) => FaceT -> m Int32

-- | Tests whether the specified face includes any GSUB substitutions.
--   
--   <i>Since: 0.6.0</i>
otLayoutHasSubstitution :: (HasCallStack, MonadIO m) => FaceT -> m Int32

-- | Fetches the index of a given feature tag in the specified face's GSUB
--   table or GPOS table, underneath the specified script and language.
--   
--   <i>Since: 0.6.0</i>
otLayoutLanguageFindFeature :: (HasCallStack, MonadIO m) => FaceT -> Word32 -> Word32 -> Word32 -> Word32 -> m (Int32, Word32)

-- | Fetches a list of all features in the specified face's GSUB table or
--   GPOS table, underneath the specified script and language. The list
--   returned will begin at the offset provided.
--   
--   <i>Since: 0.6.0</i>
otLayoutLanguageGetFeatureIndexes :: (HasCallStack, MonadIO m) => FaceT -> Word32 -> Word32 -> Word32 -> Word32 -> m (Word32, [Word32])

-- | Fetches a list of all features in the specified face's GSUB table or
--   GPOS table, underneath the specified script and language. The list
--   returned will begin at the offset provided.
--   
--   <i>Since: 0.6.0</i>
otLayoutLanguageGetFeatureTags :: (HasCallStack, MonadIO m) => FaceT -> Word32 -> Word32 -> Word32 -> Word32 -> m (Word32, [Word32])

-- | Fetches the tag of a requested feature index in the given face's GSUB
--   or GPOS table, underneath the specified script and language.
--   
--   <i>Since: 0.9.30</i>
otLayoutLanguageGetRequiredFeature :: (HasCallStack, MonadIO m) => FaceT -> Word32 -> Word32 -> Word32 -> m (Int32, Word32, Word32)

-- | Fetches the index of a requested feature in the given face's GSUB or
--   GPOS table, underneath the specified script and language.
--   
--   <i>Since: 0.6.0</i>
otLayoutLanguageGetRequiredFeatureIndex :: (HasCallStack, MonadIO m) => FaceT -> Word32 -> Word32 -> Word32 -> m (Int32, Word32)

-- | Fetches alternates of a glyph from a given GSUB lookup index. Note
--   that for one-to-one GSUB glyph substitutions, this function fetches
--   the substituted glyph.
--   
--   <i>Since: 2.6.8</i>
otLayoutLookupGetGlyphAlternates :: (HasCallStack, MonadIO m) => FaceT -> Word32 -> Word32 -> Word32 -> [Word32] -> m (Word32, [Word32])

-- | Fetches the optical bound of a glyph positioned at the margin of text.
--   The direction identifies which edge of the glyph to query.
--   
--   <i>Since: 5.3.0</i>
otLayoutLookupGetOpticalBound :: (HasCallStack, MonadIO m) => FontT -> Word32 -> DirectionT -> Word32 -> m Int32

-- | Tests whether a specified lookup in the specified face would trigger a
--   substitution on the given glyph sequence.
--   
--   <i>Since: 0.9.7</i>
otLayoutLookupWouldSubstitute :: (HasCallStack, MonadIO m) => FaceT -> Word32 -> Word32 -> Word32 -> Int32 -> m Int32

-- | Fetches the index of a given language tag in the specified face's GSUB
--   table or GPOS table, underneath the specified script tag.
--   
--   <i>Since: 0.6.0</i>

-- | <i>Deprecated: (Since version 2.0.0)</i>
otLayoutScriptFindLanguage :: (HasCallStack, MonadIO m) => FaceT -> Word32 -> Word32 -> Word32 -> Word32 -> m Int32

-- | Fetches a list of language tags in the given face's GSUB or GPOS
--   table, underneath the specified script index. The list returned will
--   begin at the offset provided.
--   
--   <i>Since: 0.6.0</i>
otLayoutScriptGetLanguageTags :: (HasCallStack, MonadIO m) => FaceT -> Word32 -> Word32 -> Word32 -> m (Word32, [Word32])

-- | Fetches the index of the first language tag fom
--   <i><tt>languageTags</tt></i> that is present in the specified face's
--   GSUB or GPOS table, underneath the specified script index.
--   
--   If none of the given language tags is found, <tt>false</tt> is
--   returned and <i><tt>languageIndex</tt></i> is set to the default
--   language index.
--   
--   <i>Since: 2.0.0</i>
otLayoutScriptSelectLanguage :: (HasCallStack, MonadIO m) => FaceT -> Word32 -> Word32 -> Word32 -> Word32 -> m (Int32, Word32)

-- | Fetches the index of the first language tag fom
--   <i><tt>languageTags</tt></i> that is present in the specified face's
--   GSUB or GPOS table, underneath the specified script index.
--   
--   If none of the given language tags is found, <tt>false</tt> is
--   returned and <i><tt>languageIndex</tt></i> is set to
--   <a>OT_LAYOUT_DEFAULT_LANGUAGE_INDEX</a> and
--   <i><tt>chosenLanguage</tt></i> is set to <tt><i>HB_TAG_NONE</i></tt>.
--   
--   <i>Since: 7.0.0</i>
otLayoutScriptSelectLanguage2 :: (HasCallStack, MonadIO m) => FaceT -> Word32 -> Word32 -> Word32 -> Word32 -> m (Int32, Word32, Word32)

-- | Deprecated since 2.0.0
otLayoutTableChooseScript :: (HasCallStack, MonadIO m) => FaceT -> Word32 -> Word32 -> m (Int32, Word32, Word32)

-- | Fetches a list of feature variations in the specified face's GSUB
--   table or GPOS table, at the specified variation coordinates.
--   
--   <i>Since: 1.4.0</i>
otLayoutTableFindFeatureVariations :: (HasCallStack, MonadIO m) => FaceT -> Word32 -> Int32 -> Word32 -> m (Int32, Word32)

-- | Fetches the index if a given script tag in the specified face's GSUB
--   table or GPOS table.
otLayoutTableFindScript :: (HasCallStack, MonadIO m) => FaceT -> Word32 -> Word32 -> m (Int32, Word32)

-- | Fetches a list of all feature tags in the given face's GSUB or GPOS
--   table. Note that there might be duplicate feature tags, belonging to
--   different script/language-system pairs of the table.
--   
--   <i>Since: 0.6.0</i>
otLayoutTableGetFeatureTags :: (HasCallStack, MonadIO m) => FaceT -> Word32 -> Word32 -> m (Word32, [Word32])

-- | Fetches the total number of lookups enumerated in the specified face's
--   GSUB table or GPOS table.
--   
--   <i>Since: 0.9.22</i>
otLayoutTableGetLookupCount :: (HasCallStack, MonadIO m) => FaceT -> Word32 -> m Word32

-- | Fetches a list of all scripts enumerated in the specified face's GSUB
--   table or GPOS table. The list returned will begin at the offset
--   provided.
otLayoutTableGetScriptTags :: (HasCallStack, MonadIO m) => FaceT -> Word32 -> Word32 -> m (Word32, [Word32])

-- | Selects an OpenType script for <i><tt>tableTag</tt></i> from the
--   <i><tt>scriptTags</tt></i> array.
--   
--   If the table does not have any of the requested scripts, then
--   <tt>DFLT</tt>, <tt>dflt</tt>, and <tt>latn</tt> tags are tried in that
--   order. If the table still does not have any of these scripts,
--   <i><tt>scriptIndex</tt></i> is set to <a>OT_LAYOUT_NO_SCRIPT_INDEX</a>
--   and <i><tt>chosenScript</tt></i> is set to
--   <tt><i>HB_TAG_NONE</i></tt>.
--   
--   <i>Since: 2.0.0</i>
otLayoutTableSelectScript :: (HasCallStack, MonadIO m) => FaceT -> Word32 -> Word32 -> Word32 -> m (Int32, Word32, Word32)

-- | Fetches the specified math constant. For most constants, the value
--   returned is an <tt><i>hb_position_t</i></tt>.
--   
--   However, if the requested constant is
--   <tt><i>HB_OT_MATH_CONSTANT_SCRIPT_PERCENT_SCALE_DOWN</i></tt>,
--   <tt><i>HB_OT_MATH_CONSTANT_SCRIPT_SCRIPT_PERCENT_SCALE_DOWN</i></tt>
--   or
--   <tt><i>HB_OT_MATH_CONSTANT_RADICAL_DEGREE_BOTTOM_RAISE_PERCENT</i></tt>,
--   then the return value is an integer between 0 and 100 representing
--   that percentage.
--   
--   <i>Since: 1.3.3</i>
otMathGetConstant :: (HasCallStack, MonadIO m) => FontT -> OtMathConstantT -> m Int32

-- | Fetches the GlyphAssembly for the specified font, glyph index, and
--   direction. Returned are a list of <a>OtMathGlyphPartT</a> glyph parts
--   that can be used to draw the glyph and an italics-correction value (if
--   one is defined in the font).
--   
--   &lt;note&gt;The <i><tt>direction</tt></i> parameter is only used to
--   select between horizontal or vertical directions for the construction.
--   Even though all <a>DirectionT</a> values are accepted, only the result
--   of <tt><i>HB_DIRECTION_IS_HORIZONTAL</i></tt> is
--   considered.&lt;/note&gt;
--   
--   <i>Since: 1.3.3</i>
otMathGetGlyphAssembly :: (HasCallStack, MonadIO m) => FontT -> Word32 -> DirectionT -> Word32 -> [OtMathGlyphPartT] -> m (Word32, [OtMathGlyphPartT], Int32)

-- | Fetches an italics-correction value (if one exists) for the specified
--   glyph index.
--   
--   <i>Since: 1.3.3</i>
otMathGetGlyphItalicsCorrection :: (HasCallStack, MonadIO m) => FontT -> Word32 -> m Int32

-- | Fetches the math kerning (cut-ins) value for the specified font, glyph
--   index, and <i><tt>kern</tt></i>.
--   
--   If the MathKern table is found, the function examines it to find a
--   height value that is greater or equal to
--   <i><tt>correctionHeight</tt></i>. If such a height value is found,
--   corresponding kerning value from the table is returned. If no such
--   height value is found, the last kerning value is returned.
--   
--   <i>Since: 1.3.3</i>
otMathGetGlyphKerning :: (HasCallStack, MonadIO m) => FontT -> Word32 -> OtMathKernT -> Int32 -> m Int32

-- | Fetches the raw MathKern (cut-in) data for the specified font, glyph
--   index, and <i><tt>kern</tt></i>. The corresponding list of kern values
--   and correction heights is returned as a list of
--   <a>OtMathKernEntryT</a> structs.
--   
--   See also <tt><i>hb_ot_math_get_glyph_kerning</i></tt>, which handles
--   selecting the appropriate kern value for a given correction height.
--   
--   &lt;note&gt;For a glyph with <i><tt>n</tt></i> defined kern values
--   (where <i><tt>n</tt></i> &gt; 0), there are only <i><tt>n</tt></i>−1
--   defined correction heights, as each correction height defines a
--   boundary past which the next kern value should be selected. Therefore,
--   only the <a>OtMathKernEntryT</a>.<tt><i>kern_value</i></tt> of the
--   uppermost <a>OtMathKernEntryT</a> actually comes from the font; its
--   corresponding
--   <a>OtMathKernEntryT</a>.<tt><i>max_correction_height</i></tt> is
--   always set to &lt;code&gt;INT32_MAX&lt;/code&gt;.&lt;/note&gt;
--   
--   <i>Since: 3.4.0</i>
otMathGetGlyphKernings :: (HasCallStack, MonadIO m) => FontT -> Word32 -> OtMathKernT -> Word32 -> [OtMathKernEntryT] -> m (Word32, [OtMathKernEntryT])

-- | Fetches a top-accent-attachment value (if one exists) for the
--   specified glyph index.
--   
--   For any glyph that does not have a top-accent-attachment value - that
--   is, a glyph not covered by the <tt>MathTopAccentAttachment</tt> table
--   (or, when <i><tt>font</tt></i> has no <tt>MathTopAccentAttachment</tt>
--   table or no <tt>MATH</tt> table, any glyph) - the function synthesizes
--   a value, returning the position at one-half the glyph's advance width.
--   
--   <i>Since: 1.3.3</i>
otMathGetGlyphTopAccentAttachment :: (HasCallStack, MonadIO m) => FontT -> Word32 -> m Int32

-- | Fetches the MathGlyphConstruction for the specified font, glyph index,
--   and direction. The corresponding list of size variants is returned as
--   a list of <a>OtMathGlyphVariantT</a> structs.
--   
--   &lt;note&gt;The <i><tt>direction</tt></i> parameter is only used to
--   select between horizontal or vertical directions for the construction.
--   Even though all <a>DirectionT</a> values are accepted, only the result
--   of <tt><i>HB_DIRECTION_IS_HORIZONTAL</i></tt> is
--   considered.&lt;/note&gt;
--   
--   <i>Since: 1.3.3</i>
otMathGetGlyphVariants :: (HasCallStack, MonadIO m) => FontT -> Word32 -> DirectionT -> Word32 -> [OtMathGlyphVariantT] -> m (Word32, [OtMathGlyphVariantT])

-- | Fetches the MathVariants table for the specified font and returns the
--   minimum overlap of connecting glyphs that are required to draw a glyph
--   assembly in the specified direction.
--   
--   &lt;note&gt;The <i><tt>direction</tt></i> parameter is only used to
--   select between horizontal or vertical directions for the construction.
--   Even though all <a>DirectionT</a> values are accepted, only the result
--   of <tt><i>HB_DIRECTION_IS_HORIZONTAL</i></tt> is
--   considered.&lt;/note&gt;
--   
--   <i>Since: 1.3.3</i>
otMathGetMinConnectorOverlap :: (HasCallStack, MonadIO m) => FontT -> DirectionT -> m Int32

-- | Tests whether a face has a <tt>MATH</tt> table.
--   
--   <i>Since: 1.3.3</i>
otMathHasData :: (HasCallStack, MonadIO m) => FaceT -> m Int32

-- | Tests whether the given glyph index is an extended shape in the face.
--   
--   <i>Since: 1.3.3</i>
otMathIsGlyphExtendedShape :: (HasCallStack, MonadIO m) => FaceT -> Word32 -> m Int32

-- | Fetches all available feature types.
--   
--   <i>Since: 2.6.0</i>
otMetaGetEntryTags :: (HasCallStack, MonadIO m) => FaceT -> Word32 -> [OtMetaTagT] -> m (Word32, [OtMetaTagT])

-- | It fetches metadata entry of a given tag from a font.
--   
--   <i>Since: 2.6.0</i>
otMetaReferenceEntry :: (HasCallStack, MonadIO m) => FaceT -> OtMetaTagT -> m BlobT

-- | Fetches metrics value corresponding to <i><tt>metricsTag</tt></i> from
--   <i><tt>font</tt></i>.
--   
--   <i>Since: 2.6.0</i>
otMetricsGetPosition :: (HasCallStack, MonadIO m) => FontT -> OtMetricsTagT -> m (Int32, Int32)

-- | Fetches metrics value corresponding to <i><tt>metricsTag</tt></i> from
--   <i><tt>font</tt></i>, and synthesizes a value if it the value is
--   missing in the font.
--   
--   <i>Since: 4.0.0</i>
otMetricsGetPositionWithFallback :: (HasCallStack, MonadIO m) => FontT -> OtMetricsTagT -> m Int32

-- | Fetches metrics value corresponding to <i><tt>metricsTag</tt></i> from
--   <i><tt>font</tt></i> with the current font variation settings applied.
--   
--   <i>Since: 2.6.0</i>
otMetricsGetVariation :: (HasCallStack, MonadIO m) => FontT -> OtMetricsTagT -> m Float

-- | Fetches horizontal metrics value corresponding to
--   <i><tt>metricsTag</tt></i> from <i><tt>font</tt></i> with the current
--   font variation settings applied.
--   
--   <i>Since: 2.6.0</i>
otMetricsGetXVariation :: (HasCallStack, MonadIO m) => FontT -> OtMetricsTagT -> m Int32

-- | Fetches vertical metrics value corresponding to
--   <i><tt>metricsTag</tt></i> from <i><tt>font</tt></i> with the current
--   font variation settings applied.
--   
--   <i>Since: 2.6.0</i>
otMetricsGetYVariation :: (HasCallStack, MonadIO m) => FontT -> OtMetricsTagT -> m Int32

-- | Fetches a font name from the OpenType 'name' table. If
--   <i><tt>language</tt></i> is <a>LANGUAGE_INVALID</a>, English ("en") is
--   assumed. Returns string in UTF-16 encoding. A NUL terminator is always
--   written for convenience, and isn't included in the output
--   <i><tt>textSize</tt></i>.
--   
--   <i>Since: 2.1.0</i>
otNameGetUtf16 :: (HasCallStack, MonadIO m) => FaceT -> Word32 -> LanguageT -> [Word16] -> m (Word32, [Word16])

-- | Fetches a font name from the OpenType 'name' table. If
--   <i><tt>language</tt></i> is <a>LANGUAGE_INVALID</a>, English ("en") is
--   assumed. Returns string in UTF-32 encoding. A NUL terminator is always
--   written for convenience, and isn't included in the output
--   <i><tt>textSize</tt></i>.
--   
--   <i>Since: 2.1.0</i>
otNameGetUtf32 :: (HasCallStack, MonadIO m) => FaceT -> Word32 -> LanguageT -> [Word32] -> m (Word32, [Word32])

-- | Fetches a font name from the OpenType 'name' table. If
--   <i><tt>language</tt></i> is <a>LANGUAGE_INVALID</a>, English ("en") is
--   assumed. Returns string in UTF-8 encoding. A NUL terminator is always
--   written for convenience, and isn't included in the output
--   <i><tt>textSize</tt></i>.
--   
--   <i>Since: 2.1.0</i>
otNameGetUtf8 :: (HasCallStack, MonadIO m) => FaceT -> Word32 -> LanguageT -> [Text] -> m (Word32, [Text])

-- | Enumerates all available name IDs and language combinations. Returned
--   array is owned by the <i><tt>face</tt></i> and should not be modified.
--   It can be used as long as <i><tt>face</tt></i> is alive.
--   
--   <i>Since: 2.1.0</i>
otNameListNames :: (HasCallStack, MonadIO m) => FaceT -> m [OtNameEntryT]

-- | Fetches the list of OpenType feature tags enabled for a shaping plan,
--   if possible.
--   
--   <i>Since: 10.3.0</i>
otShapePlanGetFeatureTags :: (HasCallStack, MonadIO m) => ShapePlanT -> Word32 -> m (Word32, [Word32])

-- | Converts an <a>LanguageT</a> to an <tt><i>hb_tag_t</i></tt>.
--   
--   <i>Since: 0.6.0</i>

-- | <i>Deprecated: (Since version 2.0.0)use
--   <a>otTagsFromScriptAndLanguage</a> instead</i>
otTagFromLanguage :: (HasCallStack, MonadIO m) => LanguageT -> m Word32

-- | Converts a language tag to an <a>LanguageT</a>.
--   
--   <i>Since: 0.9.2</i>
otTagToLanguage :: (HasCallStack, MonadIO m) => Word32 -> m (Maybe LanguageT)

-- | Converts a script tag to an <a>ScriptT</a>.
otTagToScript :: (HasCallStack, MonadIO m) => Word32 -> m ScriptT

-- | Converts an <a>ScriptT</a> to script tags.
--   
--   <i>Since: 0.6.0</i>

-- | <i>Deprecated: (Since version 2.0.0)use
--   <a>otTagsFromScriptAndLanguage</a> instead</i>
otTagsFromScript :: (HasCallStack, MonadIO m) => ScriptT -> m (Word32, Word32)

-- | Converts an <a>ScriptT</a> and an <a>LanguageT</a> to script and
--   language tags.
--   
--   <i>Since: 2.0.0</i>
otTagsFromScriptAndLanguage :: (HasCallStack, MonadIO m) => ScriptT -> Maybe LanguageT -> Word32 -> Word32 -> m (Word32, Word32, Word32, Word32)

-- | Fetches the variation-axis information corresponding to the specified
--   axis tag in the specified face.
--   
--   <i>Since: 1.4.2</i>

-- | <i>Deprecated: (Since version 2.2.0)use <a>otVarFindAxisInfo</a>
--   instead</i>
otVarFindAxis :: (HasCallStack, MonadIO m) => FaceT -> Word32 -> Word32 -> m (Int32, OtVarAxisT)

-- | Fetches the variation-axis information corresponding to the specified
--   axis tag in the specified face.
--   
--   <i>Since: 2.2.0</i>
otVarFindAxisInfo :: (HasCallStack, MonadIO m) => FaceT -> Word32 -> m (Int32, OtVarAxisInfoT)

-- | Fetches a list of all variation axes in the specified face. The list
--   returned will begin at the offset provided.
--   
--   <i>Since: 1.4.2</i>

-- | <i>Deprecated: (Since version 2.2.0)use <a>otVarGetAxisInfos</a>
--   instead</i>
otVarGetAxes :: (HasCallStack, MonadIO m) => FaceT -> Word32 -> [OtVarAxisT] -> m (Word32, [OtVarAxisT])

-- | Fetches the number of OpenType variation axes included in the face.
--   
--   <i>Since: 1.4.2</i>
otVarGetAxisCount :: (HasCallStack, MonadIO m) => FaceT -> m Word32

-- | Fetches a list of all variation axes in the specified face. The list
--   returned will begin at the offset provided.
--   
--   <i>Since: 2.2.0</i>
otVarGetAxisInfos :: (HasCallStack, MonadIO m) => FaceT -> Word32 -> [OtVarAxisInfoT] -> m (Word32, [OtVarAxisInfoT])

-- | Fetches the number of named instances included in the face.
--   
--   <i>Since: 2.2.0</i>
otVarGetNamedInstanceCount :: (HasCallStack, MonadIO m) => FaceT -> m Word32

-- | Tests whether a face includes any OpenType variation data in the
--   <tt>fvar</tt> table.
--   
--   <i>Since: 1.4.2</i>
otVarHasData :: (HasCallStack, MonadIO m) => FaceT -> m Int32

-- | Fetches the design-space coordinates corresponding to the given named
--   instance in the face.
--   
--   <i>Since: 2.2.0</i>
otVarNamedInstanceGetDesignCoords :: (HasCallStack, MonadIO m) => FaceT -> Word32 -> m (Word32, [Float])

-- | Fetches the <tt>name</tt> table Name ID that provides display names
--   for the "PostScript name" defined for the given named instance in the
--   face.
--   
--   <i>Since: 2.2.0</i>
otVarNamedInstanceGetPostscriptNameId :: (HasCallStack, MonadIO m) => FaceT -> Word32 -> m Word32

-- | Fetches the <tt>name</tt> table Name ID that provides display names
--   for the "Subfamily name" defined for the given named instance in the
--   face.
--   
--   <i>Since: 2.2.0</i>
otVarNamedInstanceGetSubfamilyNameId :: (HasCallStack, MonadIO m) => FaceT -> Word32 -> m Word32

-- | Normalizes the given design-space coordinates. The minimum and maximum
--   values for the axis are mapped to the interval [-1,1], with the
--   default axis value mapped to 0.
--   
--   The normalized values have 14 bits of fixed-point sub-integer
--   precision as per OpenType specification.
--   
--   Any additional scaling defined in the face's <tt>avar</tt> table is
--   also applied, as described at
--   https://docs.microsoft.com/en-us/typography/opentype/spec/avar
--   
--   Note: <i><tt>coordsLength</tt></i> must be the same as the number of
--   axes in the face, as for example returned by <a>otVarGetAxisCount</a>.
--   Otherwise, the behavior is undefined.
--   
--   <i>Since: 1.4.2</i>
otVarNormalizeCoords :: (HasCallStack, MonadIO m) => FaceT -> Word32 -> Float -> m Int32

-- | Normalizes all of the coordinates in the given list of variation axes.
--   
--   <i>Since: 1.4.2</i>
otVarNormalizeVariations :: (HasCallStack, MonadIO m) => FaceT -> VariationT -> Word32 -> m [Int32]

-- | Perform a "color" paint operation.
--   
--   <i>Since: 7.0.0</i>
paintColor :: (HasCallStack, MonadIO m) => PaintFuncsT -> Ptr () -> Int32 -> Word32 -> m ()

-- | Perform a "color-glyph" paint operation.
--   
--   <i>Since: 8.2.0</i>
paintColorGlyph :: (HasCallStack, MonadIO m) => PaintFuncsT -> Ptr () -> Word32 -> FontT -> m Int32

-- | Gets the custom palette color for <i><tt>colorIndex</tt></i>.
--   
--   <i>Since: 7.0.0</i>
paintCustomPaletteColor :: (HasCallStack, MonadIO m) => PaintFuncsT -> Ptr () -> Word32 -> m (Int32, Word32)

-- | Creates a new <a>PaintFuncsT</a> structure of paint functions.
--   
--   The initial reference count of 1 should be released with
--   <tt><i>hb_paint_funcs_destroy()</i></tt> when you are done using the
--   <a>PaintFuncsT</a>. This function never returns <tt>NULL</tt>. If
--   memory cannot be allocated, a special singleton <a>PaintFuncsT</a>
--   object will be returned.
--   
--   <i>Since: 7.0.0</i>
paintFuncsCreate :: (HasCallStack, MonadIO m) => m PaintFuncsT

-- | Fetches the singleton empty paint-functions structure.
--   
--   <i>Since: 7.0.0</i>
paintFuncsGetEmpty :: (HasCallStack, MonadIO m) => m PaintFuncsT

-- | Tests whether a paint-functions structure is immutable.
--   
--   <i>Since: 7.0.0</i>
paintFuncsIsImmutable :: (HasCallStack, MonadIO m) => PaintFuncsT -> m Int32

-- | Makes a paint-functions structure immutable.
--   
--   After this call, all attempts to set one of the callbacks on
--   <i><tt>funcs</tt></i> will fail.
--   
--   <i>Since: 7.0.0</i>
paintFuncsMakeImmutable :: (HasCallStack, MonadIO m) => PaintFuncsT -> m ()

-- | Perform a "image" paint operation.
--   
--   <i>Since: 7.0.0</i>
paintImage :: (HasCallStack, MonadIO m) => PaintFuncsT -> Ptr () -> BlobT -> Word32 -> Word32 -> Word32 -> Float -> Maybe GlyphExtentsT -> m ()

-- | Perform a "linear-gradient" paint operation.
--   
--   <i>Since: 7.0.0</i>
paintLinearGradient :: (HasCallStack, MonadIO m) => PaintFuncsT -> Ptr () -> ColorLineT -> Float -> Float -> Float -> Float -> Float -> Float -> m ()

-- | Perform a "pop-clip" paint operation.
--   
--   <i>Since: 7.0.0</i>
paintPopClip :: (HasCallStack, MonadIO m) => PaintFuncsT -> Ptr () -> m ()

-- | Perform a "pop-group" paint operation.
--   
--   <i>Since: 7.0.0</i>
paintPopGroup :: (HasCallStack, MonadIO m) => PaintFuncsT -> Ptr () -> PaintCompositeModeT -> m ()

-- | Perform a "pop-transform" paint operation.
--   
--   <i>Since: 7.0.0</i>
paintPopTransform :: (HasCallStack, MonadIO m) => PaintFuncsT -> Ptr () -> m ()

-- | Perform a "push-clip-glyph" paint operation.
--   
--   <i>Since: 7.0.0</i>
paintPushClipGlyph :: (HasCallStack, MonadIO m) => PaintFuncsT -> Ptr () -> Word32 -> FontT -> m ()

-- | Perform a "push-clip-rect" paint operation.
--   
--   <i>Since: 7.0.0</i>
paintPushClipRectangle :: (HasCallStack, MonadIO m) => PaintFuncsT -> Ptr () -> Float -> Float -> Float -> Float -> m ()

-- | Push the transform reflecting the font's scale and slant settings onto
--   the paint functions.
--   
--   <i>Since: 11.0.0</i>
paintPushFontTransform :: (HasCallStack, MonadIO m) => PaintFuncsT -> Ptr () -> FontT -> m ()

-- | Perform a "push-group" paint operation.
--   
--   <i>Since: 7.0.0</i>
paintPushGroup :: (HasCallStack, MonadIO m) => PaintFuncsT -> Ptr () -> m ()

-- | Push the inverse of the transform reflecting the font's scale and
--   slant settings onto the paint functions.
--   
--   <i>Since: 11.0.0</i>
paintPushInverseFontTransform :: (HasCallStack, MonadIO m) => PaintFuncsT -> Ptr () -> FontT -> m ()

-- | Perform a "push-transform" paint operation.
--   
--   <i>Since: 7.0.0</i>
paintPushTransform :: (HasCallStack, MonadIO m) => PaintFuncsT -> Ptr () -> Float -> Float -> Float -> Float -> Float -> Float -> m ()

-- | Perform a "radial-gradient" paint operation.
--   
--   <i>Since: 7.0.0</i>
paintRadialGradient :: (HasCallStack, MonadIO m) => PaintFuncsT -> Ptr () -> ColorLineT -> Float -> Float -> Float -> Float -> Float -> Float -> m ()

-- | Perform a "sweep-gradient" paint operation.
--   
--   <i>Since: 7.0.0</i>
paintSweepGradient :: (HasCallStack, MonadIO m) => PaintFuncsT -> Ptr () -> ColorLineT -> Float -> Float -> Float -> Float -> m ()

-- | Reallocates the memory pointed to by <i><tt>ptr</tt></i> to
--   <i><tt>size</tt></i> bytes, using the allocator set at compile-time.
--   Typically just <tt><i>realloc()</i></tt>.
--   
--   <i>Since: 11.0.0</i>
realloc :: (HasCallStack, MonadIO m) => Ptr () -> CSize -> m (Ptr ())

-- | Converts an ISO 15924 script tag to a corresponding <a>ScriptT</a>.
--   
--   <i>Since: 0.9.2</i>
scriptFromIso15924Tag :: (HasCallStack, MonadIO m) => Word32 -> m ScriptT

-- | Converts a string <i><tt>str</tt></i> representing an ISO 15924 script
--   tag to a corresponding <a>ScriptT</a>. Shorthand for
--   <a>tagFromString</a> then <a>scriptFromIso15924Tag</a>.
--   
--   <i>Since: 0.9.2</i>
scriptFromString :: (HasCallStack, MonadIO m) => ByteString -> m ScriptT

-- | Fetches the <a>DirectionT</a> of a script when it is set horizontally.
--   All right-to-left scripts will return
--   <tt><i>HB_DIRECTION_RTL</i></tt>. All left-to-right scripts will
--   return <tt><i>HB_DIRECTION_LTR</i></tt>.
--   
--   Scripts that can be written either right-to-left or left-to-right will
--   return <tt><i>HB_DIRECTION_INVALID</i></tt>.
--   
--   Unknown scripts will return <tt><i>HB_DIRECTION_LTR</i></tt>.
--   
--   <i>Since: 0.9.2</i>
scriptGetHorizontalDirection :: (HasCallStack, MonadIO m) => ScriptT -> m DirectionT

-- | Converts an <a>ScriptT</a> to a corresponding ISO 15924 script tag.
--   
--   <i>Since: 0.9.2</i>
scriptToIso15924Tag :: (HasCallStack, MonadIO m) => ScriptT -> m Word32

-- | Checks the equality of two <a>SegmentPropertiesT</a>'s.
--   
--   <i>Since: 0.9.7</i>
segmentPropertiesEqual :: (HasCallStack, MonadIO m) => SegmentPropertiesT -> SegmentPropertiesT -> m Int32

-- | Creates a hash representing <i><tt>p</tt></i>.
--   
--   <i>Since: 0.9.7</i>
segmentPropertiesHash :: (HasCallStack, MonadIO m) => SegmentPropertiesT -> m Word32

-- | Fills in missing fields of <i><tt>p</tt></i> from <i><tt>src</tt></i>
--   in a considered manner.
--   
--   First, if <i><tt>p</tt></i> does not have direction set, direction is
--   copied from <i><tt>src</tt></i>.
--   
--   Next, if <i><tt>p</tt></i> and <i><tt>src</tt></i> have the same
--   direction (which can be unset), if <i><tt>p</tt></i> does not have
--   script set, script is copied from <i><tt>src</tt></i>.
--   
--   Finally, if <i><tt>p</tt></i> and <i><tt>src</tt></i> have the same
--   direction and script (which either can be unset), if <i><tt>p</tt></i>
--   does not have language set, language is copied from
--   <i><tt>src</tt></i>.
--   
--   <i>Since: 3.3.0</i>
segmentPropertiesOverlay :: (HasCallStack, MonadIO m) => SegmentPropertiesT -> SegmentPropertiesT -> m ()

-- | Adds <i><tt>codepoint</tt></i> to <i><tt>set</tt></i>.
--   
--   <i>Since: 0.9.2</i>
setAdd :: (HasCallStack, MonadIO m) => SetT -> Word32 -> m ()

-- | Adds all of the elements from <i><tt>first</tt></i> to
--   <i><tt>last</tt></i> (inclusive) to <i><tt>set</tt></i>.
--   
--   <i>Since: 0.9.7</i>
setAddRange :: (HasCallStack, MonadIO m) => SetT -> Word32 -> Word32 -> m ()

-- | Adds <i><tt>numCodepoints</tt></i> codepoints to a set at once. The
--   codepoints array must be in increasing order, with size at least
--   <i><tt>numCodepoints</tt></i>.
--   
--   <i>Since: 4.1.0</i>
setAddSortedArray :: (HasCallStack, MonadIO m) => SetT -> [Word32] -> m ()

-- | Tests whether memory allocation for a set was successful.
--   
--   <i>Since: 0.9.2</i>
setAllocationSuccessful :: (HasCallStack, MonadIO m) => SetT -> m Int32

-- | Clears out the contents of a set.
--   
--   <i>Since: 0.9.2</i>
setClear :: (HasCallStack, MonadIO m) => SetT -> m ()

-- | Allocate a copy of <i><tt>set</tt></i>.
--   
--   <i>Since: 2.8.2</i>
setCopy :: (HasCallStack, MonadIO m) => SetT -> m SetT

-- | Creates a new, initially empty set.
--   
--   <i>Since: 0.9.2</i>
setCreate :: (HasCallStack, MonadIO m) => m SetT

-- | Removes <i><tt>codepoint</tt></i> from <i><tt>set</tt></i>.
--   
--   <i>Since: 0.9.2</i>
setDel :: (HasCallStack, MonadIO m) => SetT -> Word32 -> m ()

-- | Removes all of the elements from <i><tt>first</tt></i> to
--   <i><tt>last</tt></i> (inclusive) from <i><tt>set</tt></i>.
--   
--   If <i><tt>last</tt></i> is <tt><i>HB_SET_VALUE_INVALID</i></tt>, then
--   all values greater than or equal to <i><tt>first</tt></i> are removed.
--   
--   <i>Since: 0.9.7</i>
setDelRange :: (HasCallStack, MonadIO m) => SetT -> Word32 -> Word32 -> m ()

-- | Fetches the singleton empty <a>SetT</a>.
--   
--   <i>Since: 0.9.2</i>
setGetEmpty :: (HasCallStack, MonadIO m) => m SetT

-- | Finds the largest element in the set.
--   
--   <i>Since: 0.9.7</i>
setGetMax :: (HasCallStack, MonadIO m) => SetT -> m Word32

-- | Finds the smallest element in the set.
--   
--   <i>Since: 0.9.7</i>
setGetMin :: (HasCallStack, MonadIO m) => SetT -> m Word32

-- | Returns the number of elements in the set.
--   
--   <i>Since: 0.9.7</i>
setGetPopulation :: (HasCallStack, MonadIO m) => SetT -> m Word32

-- | Tests whether <i><tt>codepoint</tt></i> belongs to
--   <i><tt>set</tt></i>.
--   
--   <i>Since: 0.9.2</i>
setHas :: (HasCallStack, MonadIO m) => SetT -> Word32 -> m Int32

-- | Creates a hash representing <i><tt>set</tt></i>.
--   
--   <i>Since: 4.4.0</i>
setHash :: (HasCallStack, MonadIO m) => SetT -> m Word32

-- | Makes <i><tt>set</tt></i> the intersection of <i><tt>set</tt></i> and
--   <i><tt>other</tt></i>.
--   
--   <i>Since: 0.9.2</i>
setIntersect :: (HasCallStack, MonadIO m) => SetT -> SetT -> m ()

-- | Inverts the contents of <i><tt>set</tt></i>.
--   
--   <i>Since: 3.0.0</i>
setInvert :: (HasCallStack, MonadIO m) => SetT -> m ()

-- | Tests whether a set is empty (contains no elements).
--   
--   <i>Since: 0.9.7</i>
setIsEmpty :: (HasCallStack, MonadIO m) => SetT -> m Int32

-- | Tests whether <i><tt>set</tt></i> and <i><tt>other</tt></i> are equal
--   (contain the same elements).
--   
--   <i>Since: 0.9.7</i>
setIsEqual :: (HasCallStack, MonadIO m) => SetT -> SetT -> m Int32

-- | Returns whether the set is inverted.
--   
--   <i>Since: 7.0.0</i>
setIsInverted :: (HasCallStack, MonadIO m) => SetT -> m Int32

-- | Tests whether <i><tt>set</tt></i> is a subset of
--   <i><tt>largerSet</tt></i>.
--   
--   <i>Since: 1.8.1</i>
setIsSubset :: (HasCallStack, MonadIO m) => SetT -> SetT -> m Int32

-- | Fetches the next element in <i><tt>set</tt></i> that is greater than
--   current value of <i><tt>codepoint</tt></i>.
--   
--   Set <i><tt>codepoint</tt></i> to <tt><i>HB_SET_VALUE_INVALID</i></tt>
--   to get started.
--   
--   <i>Since: 0.9.2</i>
setNext :: (HasCallStack, MonadIO m) => SetT -> Word32 -> m (Int32, Word32)

-- | Finds the next element in <i><tt>set</tt></i> that is greater than
--   <i><tt>codepoint</tt></i>. Writes out codepoints to
--   <i><tt>out</tt></i>, until either the set runs out of elements, or
--   <i><tt>size</tt></i> codepoints are written, whichever comes first.
--   
--   <i>Since: 4.2.0</i>
setNextMany :: (HasCallStack, MonadIO m) => SetT -> Word32 -> [Word32] -> m Word32

-- | Fetches the next consecutive range of elements in <i><tt>set</tt></i>
--   that are greater than current value of <i><tt>last</tt></i>.
--   
--   Set <i><tt>last</tt></i> to <tt><i>HB_SET_VALUE_INVALID</i></tt> to
--   get started.
--   
--   <i>Since: 0.9.7</i>
setNextRange :: (HasCallStack, MonadIO m) => SetT -> Word32 -> m (Int32, Word32, Word32)

-- | Fetches the previous element in <i><tt>set</tt></i> that is lower than
--   current value of <i><tt>codepoint</tt></i>.
--   
--   Set <i><tt>codepoint</tt></i> to <tt><i>HB_SET_VALUE_INVALID</i></tt>
--   to get started.
--   
--   <i>Since: 1.8.0</i>
setPrevious :: (HasCallStack, MonadIO m) => SetT -> Word32 -> m (Int32, Word32)

-- | Fetches the previous consecutive range of elements in
--   <i><tt>set</tt></i> that are greater than current value of
--   <i><tt>last</tt></i>.
--   
--   Set <i><tt>first</tt></i> to <tt><i>HB_SET_VALUE_INVALID</i></tt> to
--   get started.
--   
--   <i>Since: 1.8.0</i>
setPreviousRange :: (HasCallStack, MonadIO m) => SetT -> Word32 -> m (Int32, Word32, Word32)

-- | Makes the contents of <i><tt>set</tt></i> equal to the contents of
--   <i><tt>other</tt></i>.
--   
--   <i>Since: 0.9.2</i>
setSet :: (HasCallStack, MonadIO m) => SetT -> SetT -> m ()

-- | Subtracts the contents of <i><tt>other</tt></i> from
--   <i><tt>set</tt></i>.
--   
--   <i>Since: 0.9.2</i>
setSubtract :: (HasCallStack, MonadIO m) => SetT -> SetT -> m ()

-- | Makes <i><tt>set</tt></i> the symmetric difference of
--   <i><tt>set</tt></i> and <i><tt>other</tt></i>.
--   
--   <i>Since: 0.9.2</i>
setSymmetricDifference :: (HasCallStack, MonadIO m) => SetT -> SetT -> m ()

-- | Makes <i><tt>set</tt></i> the union of <i><tt>set</tt></i> and
--   <i><tt>other</tt></i>.
--   
--   <i>Since: 0.9.2</i>
setUnion :: (HasCallStack, MonadIO m) => SetT -> SetT -> m ()

-- | Shapes <i><tt>buffer</tt></i> using <i><tt>font</tt></i> turning its
--   Unicode characters content to positioned glyphs. If
--   <i><tt>features</tt></i> is not <tt>NULL</tt>, it will be used to
--   control the features applied during shaping. If two
--   <i><tt>features</tt></i> have the same tag but overlapping ranges the
--   value of the feature with the higher index takes precedence.
--   
--   <i>Since: 0.9.2</i>
shape :: (HasCallStack, MonadIO m) => FontT -> BufferT -> Maybe [FeatureT] -> m ()

-- | See <a>shape</a> for details. If <i><tt>shaperList</tt></i> is not
--   <tt>NULL</tt>, the specified shapers will be used in the given order,
--   otherwise the default shapers list will be used.
--   
--   <i>Since: 0.9.2</i>
shapeFull :: (HasCallStack, MonadIO m) => FontT -> BufferT -> Maybe [FeatureT] -> Maybe [Text] -> m Int32

-- | Retrieves the list of shapers supported by HarfBuzz.
--   
--   <i>Since: 0.9.2</i>
shapeListShapers :: (HasCallStack, MonadIO m) => m [Text]

-- | Constructs a shaping plan for a combination of <i><tt>face</tt></i>,
--   <i><tt>userFeatures</tt></i>, <i><tt>props</tt></i>, and
--   <i><tt>shaperList</tt></i>.
--   
--   <i>Since: 0.9.7</i>
shapePlanCreate :: (HasCallStack, MonadIO m) => FaceT -> SegmentPropertiesT -> [FeatureT] -> [Text] -> m ShapePlanT

-- | The variable-font version of <tt><i>hb_shape_plan_create</i></tt>.
--   Constructs a shaping plan for a combination of <i><tt>face</tt></i>,
--   <i><tt>userFeatures</tt></i>, <i><tt>props</tt></i>, and
--   <i><tt>shaperList</tt></i>, plus the variation-space coordinates
--   <i><tt>coords</tt></i>.
--   
--   <i>Since: 1.4.0</i>
shapePlanCreate2 :: (HasCallStack, MonadIO m) => FaceT -> SegmentPropertiesT -> [FeatureT] -> [Int32] -> [Text] -> m ShapePlanT

-- | Creates a cached shaping plan suitable for reuse, for a combination of
--   <i><tt>face</tt></i>, <i><tt>userFeatures</tt></i>,
--   <i><tt>props</tt></i>, and <i><tt>shaperList</tt></i>.
--   
--   <i>Since: 0.9.7</i>
shapePlanCreateCached :: (HasCallStack, MonadIO m) => FaceT -> SegmentPropertiesT -> [FeatureT] -> [Text] -> m ShapePlanT

-- | The variable-font version of
--   <tt><i>hb_shape_plan_create_cached</i></tt>. Creates a cached shaping
--   plan suitable for reuse, for a combination of <i><tt>face</tt></i>,
--   <i><tt>userFeatures</tt></i>, <i><tt>props</tt></i>, and
--   <i><tt>shaperList</tt></i>, plus the variation-space coordinates
--   <i><tt>coords</tt></i>.
--   
--   <i>Since: 1.4.0</i>
shapePlanCreateCached2 :: (HasCallStack, MonadIO m) => FaceT -> SegmentPropertiesT -> [FeatureT] -> [Int32] -> [Text] -> m ShapePlanT

-- | Executes the given shaping plan on the specified buffer, using the
--   given <i><tt>font</tt></i> and <i><tt>features</tt></i>.
--   
--   <i>Since: 0.9.7</i>
shapePlanExecute :: (HasCallStack, MonadIO m) => ShapePlanT -> FontT -> BufferT -> [FeatureT] -> m Int32

-- | Fetches the singleton empty shaping plan.
--   
--   <i>Since: 0.9.7</i>
shapePlanGetEmpty :: (HasCallStack, MonadIO m) => m ShapePlanT

-- | Fetches the shaper from a given shaping plan.
--   
--   <i>Since: 0.9.7</i>
shapePlanGetShaper :: (HasCallStack, MonadIO m) => ShapePlanT -> m Text

-- | Searches variation axes of a <a>FontT</a> object for a specific axis
--   first, if not set, first tries to get default style values in
--   <tt>STAT</tt> table then tries to polyfill from different tables of
--   the font.
--   
--   <i>Since: 3.0.0</i>
styleGetValue :: (HasCallStack, MonadIO m) => FontT -> StyleTagT -> m Float

-- | Converts a string into an <tt><i>hb_tag_t</i></tt>. Valid tags are
--   four characters. Shorter input strings will be padded with spaces.
--   Longer input strings will be truncated.
--   
--   <i>Since: 0.9.2</i>
tagFromString :: (HasCallStack, MonadIO m) => ByteString -> m Word32

-- | Retrieves the Canonical Combining Class (ccc) property of code point
--   <i><tt>unicode</tt></i>.
--   
--   <i>Since: 0.9.2</i>
unicodeCombiningClass :: (HasCallStack, MonadIO m) => UnicodeFuncsT -> Word32 -> m UnicodeCombiningClassT

-- | Fetches the composition of a sequence of two Unicode code points.
--   
--   Calls the composition function of the specified Unicode-functions
--   structure <i><tt>ufuncs</tt></i>.
--   
--   <i>Since: 0.9.2</i>
unicodeCompose :: (HasCallStack, MonadIO m) => UnicodeFuncsT -> Word32 -> Word32 -> m (Int32, Word32)

-- | Fetches the decomposition of a Unicode code point.
--   
--   Calls the decomposition function of the specified Unicode-functions
--   structure <i><tt>ufuncs</tt></i>.
--   
--   <i>Since: 0.9.2</i>
unicodeDecompose :: (HasCallStack, MonadIO m) => UnicodeFuncsT -> Word32 -> m (Int32, Word32, Word32)

-- | Fetches the compatibility decomposition of a Unicode code point.
--   Deprecated.
--   
--   <i>Since: 0.9.2</i>

-- | <i>Deprecated: (Since version 2.0.0)</i>
unicodeDecomposeCompatibility :: (HasCallStack, MonadIO m) => UnicodeFuncsT -> Word32 -> m (Word32, Word32)

-- | Don't use. Not used by HarfBuzz.
--   
--   <i>Since: 0.9.2</i>

-- | <i>Deprecated: (Since version 2.0.0)</i>
unicodeEastasianWidth :: (HasCallStack, MonadIO m) => UnicodeFuncsT -> Word32 -> m Word32

-- | Creates a new <a>UnicodeFuncsT</a> structure of Unicode functions.
--   
--   <i>Since: 0.9.2</i>
unicodeFuncsCreate :: (HasCallStack, MonadIO m) => Maybe UnicodeFuncsT -> m UnicodeFuncsT

-- | Fetches a pointer to the default Unicode-functions structure that is
--   used when no functions are explicitly set on <a>BufferT</a>.
--   
--   <i>Since: 0.9.2</i>
unicodeFuncsGetDefault :: (HasCallStack, MonadIO m) => m UnicodeFuncsT

-- | Fetches the singleton empty Unicode-functions structure.
--   
--   <i>Since: 0.9.2</i>
unicodeFuncsGetEmpty :: (HasCallStack, MonadIO m) => m UnicodeFuncsT

-- | Fetches the parent of the Unicode-functions structure
--   <i><tt>ufuncs</tt></i>.
--   
--   <i>Since: 0.9.2</i>
unicodeFuncsGetParent :: (HasCallStack, MonadIO m) => UnicodeFuncsT -> m UnicodeFuncsT

-- | Tests whether the specified Unicode-functions structure is immutable.
--   
--   <i>Since: 0.9.2</i>
unicodeFuncsIsImmutable :: (HasCallStack, MonadIO m) => UnicodeFuncsT -> m Int32

-- | Makes the specified Unicode-functions structure immutable.
--   
--   <i>Since: 0.9.2</i>
unicodeFuncsMakeImmutable :: (HasCallStack, MonadIO m) => UnicodeFuncsT -> m ()

-- | Retrieves the General Category (gc) property of code point
--   <i><tt>unicode</tt></i>.
--   
--   <i>Since: 0.9.2</i>
unicodeGeneralCategory :: (HasCallStack, MonadIO m) => UnicodeFuncsT -> Word32 -> m UnicodeGeneralCategoryT

-- | Retrieves the Bi-directional Mirroring Glyph code point defined for
--   code point <i><tt>unicode</tt></i>.
--   
--   <i>Since: 0.9.2</i>
unicodeMirroring :: (HasCallStack, MonadIO m) => UnicodeFuncsT -> Word32 -> m Word32

-- | Retrieves the <a>ScriptT</a> script to which code point
--   <i><tt>unicode</tt></i> belongs.
--   
--   <i>Since: 0.9.2</i>
unicodeScript :: (HasCallStack, MonadIO m) => UnicodeFuncsT -> Word32 -> m ScriptT

-- | Parses a string into a <a>VariationT</a>.
--   
--   The format for specifying variation settings follows. All valid CSS
--   font-variation-settings values other than 'normal' and 'inherited' are
--   also accepted, though, not documented below.
--   
--   The format is a tag, optionally followed by an equals sign, followed
--   by a number. For example <tt>wght=500</tt>, or <tt>slnt=-7.5</tt>.
--   
--   <i>Since: 1.4.2</i>
variationFromString :: (HasCallStack, MonadIO m) => ByteString -> m (Int32, VariationT)

-- | Converts an <a>VariationT</a> into a <tt>NULL</tt>-terminated string
--   in the format understood by <a>variationFromString</a>. The client in
--   responsible for allocating big enough size for <i><tt>buf</tt></i>,
--   128 bytes is more than enough.
--   
--   Note that the string won't include any whitespace.
--   
--   <i>Since: 1.4.2</i>
variationToString :: (HasCallStack, MonadIO m) => VariationT -> [Text] -> m [Text]


-- | <i>No description available in the introspection data.</i>
module GI.HarfBuzz.Unions.VarIntT

-- | Memory-managed wrapper type.
newtype VarIntT
VarIntT :: ManagedPtr VarIntT -> VarIntT

-- | Construct a <a>VarIntT</a> struct initialized to zero.
newZeroVarIntT :: MonadIO m => m VarIntT

-- | Get the value of the “<tt>i32</tt>” field. When <a>overloading</a> is
--   enabled, this is equivalent to
--   
--   <pre>
--   <a>get</a> varIntT #i32
--   </pre>
getVarIntTI32 :: MonadIO m => VarIntT -> m Int32

-- | Set the value of the “<tt>i32</tt>” field. When <a>overloading</a> is
--   enabled, this is equivalent to
--   
--   <pre>
--   <a>set</a> varIntT [ #i32 <a>:=</a> value ]
--   </pre>
setVarIntTI32 :: MonadIO m => VarIntT -> Int32 -> m ()

-- | Get the value of the “<tt>u32</tt>” field. When <a>overloading</a> is
--   enabled, this is equivalent to
--   
--   <pre>
--   <a>get</a> varIntT #u32
--   </pre>
getVarIntTU32 :: MonadIO m => VarIntT -> m Word32

-- | Set the value of the “<tt>u32</tt>” field. When <a>overloading</a> is
--   enabled, this is equivalent to
--   
--   <pre>
--   <a>set</a> varIntT [ #u32 <a>:=</a> value ]
--   </pre>
setVarIntTU32 :: MonadIO m => VarIntT -> Word32 -> m ()
instance Data.GI.Base.BasicTypes.BoxedPtr GI.HarfBuzz.Unions.VarIntT.VarIntT
instance Data.GI.Base.BasicTypes.CallocPtr GI.HarfBuzz.Unions.VarIntT.VarIntT
instance (tag GHC.Types.~ 'Data.GI.Base.Attributes.AttrSet) => Data.GI.Base.Constructible.Constructible GI.HarfBuzz.Unions.VarIntT.VarIntT tag
instance GHC.Classes.Eq GI.HarfBuzz.Unions.VarIntT.VarIntT
instance Data.GI.Base.BasicTypes.ManagedPtrNewtype GI.HarfBuzz.Unions.VarIntT.VarIntT


-- | <i>No description available in the introspection data.</i>
module GI.HarfBuzz.Unions.VarNumT

-- | Memory-managed wrapper type.
newtype VarNumT
VarNumT :: ManagedPtr VarNumT -> VarNumT

-- | Construct a <a>VarNumT</a> struct initialized to zero.
newZeroVarNumT :: MonadIO m => m VarNumT

-- | Get the value of the “<tt>f</tt>” field. When <a>overloading</a> is
--   enabled, this is equivalent to
--   
--   <pre>
--   <a>get</a> varNumT #f
--   </pre>
getVarNumTF :: MonadIO m => VarNumT -> m Float

-- | Set the value of the “<tt>f</tt>” field. When <a>overloading</a> is
--   enabled, this is equivalent to
--   
--   <pre>
--   <a>set</a> varNumT [ #f <a>:=</a> value ]
--   </pre>
setVarNumTF :: MonadIO m => VarNumT -> Float -> m ()

-- | Get the value of the “<tt>i32</tt>” field. When <a>overloading</a> is
--   enabled, this is equivalent to
--   
--   <pre>
--   <a>get</a> varNumT #i32
--   </pre>
getVarNumTI32 :: MonadIO m => VarNumT -> m Int32

-- | Set the value of the “<tt>i32</tt>” field. When <a>overloading</a> is
--   enabled, this is equivalent to
--   
--   <pre>
--   <a>set</a> varNumT [ #i32 <a>:=</a> value ]
--   </pre>
setVarNumTI32 :: MonadIO m => VarNumT -> Int32 -> m ()

-- | Get the value of the “<tt>u32</tt>” field. When <a>overloading</a> is
--   enabled, this is equivalent to
--   
--   <pre>
--   <a>get</a> varNumT #u32
--   </pre>
getVarNumTU32 :: MonadIO m => VarNumT -> m Word32

-- | Set the value of the “<tt>u32</tt>” field. When <a>overloading</a> is
--   enabled, this is equivalent to
--   
--   <pre>
--   <a>set</a> varNumT [ #u32 <a>:=</a> value ]
--   </pre>
setVarNumTU32 :: MonadIO m => VarNumT -> Word32 -> m ()
instance Data.GI.Base.BasicTypes.BoxedPtr GI.HarfBuzz.Unions.VarNumT.VarNumT
instance Data.GI.Base.BasicTypes.CallocPtr GI.HarfBuzz.Unions.VarNumT.VarNumT
instance (tag GHC.Types.~ 'Data.GI.Base.Attributes.AttrSet) => Data.GI.Base.Constructible.Constructible GI.HarfBuzz.Unions.VarNumT.VarNumT tag
instance GHC.Classes.Eq GI.HarfBuzz.Unions.VarNumT.VarNumT
instance Data.GI.Base.BasicTypes.ManagedPtrNewtype GI.HarfBuzz.Unions.VarNumT.VarNumT


module GI.HarfBuzz.Unions


module GI.HarfBuzz
