summaryrefslogtreecommitdiff
path: root/packages/univint/src/ATSUnicodeFonts.pas
diff options
context:
space:
mode:
Diffstat (limited to 'packages/univint/src/ATSUnicodeFonts.pas')
-rw-r--r--packages/univint/src/ATSUnicodeFonts.pas1700
1 files changed, 1700 insertions, 0 deletions
diff --git a/packages/univint/src/ATSUnicodeFonts.pas b/packages/univint/src/ATSUnicodeFonts.pas
new file mode 100644
index 0000000000..b46ad18101
--- /dev/null
+++ b/packages/univint/src/ATSUnicodeFonts.pas
@@ -0,0 +1,1700 @@
+{
+ File: QD/ATSUnicodeFonts.h
+
+ Contains: ATSUI font handling functions.
+
+ Version: Quickdraw-150~1
+
+ Copyright: © 2003 by Apple Computer, Inc., all rights reserved.
+
+ Bugs?: For bug reports, consult the following page on
+ the World Wide Web:
+
+ http://www.freepascal.org/bugs.html
+
+}
+{ Pascal Translation: Peter N Lewis, <peter@stairways.com.au>, 2004 }
+
+
+{
+ Modified for use with Free Pascal
+ Version 200
+ Please report any bugs to <gpc@microbizz.nl>
+}
+
+{$mode macpas}
+{$packenum 1}
+{$macro on}
+{$inline on}
+{$CALLING MWPASCAL}
+
+unit ATSUnicodeFonts;
+interface
+{$setc UNIVERSAL_INTERFACES_VERSION := $0342}
+{$setc GAP_INTERFACES_VERSION := $0200}
+
+{$ifc not defined USE_CFSTR_CONSTANT_MACROS}
+ {$setc USE_CFSTR_CONSTANT_MACROS := TRUE}
+{$endc}
+
+{$ifc defined CPUPOWERPC and defined CPUI386}
+ {$error Conflicting initial definitions for CPUPOWERPC and CPUI386}
+{$endc}
+{$ifc defined FPC_BIG_ENDIAN and defined FPC_LITTLE_ENDIAN}
+ {$error Conflicting initial definitions for FPC_BIG_ENDIAN and FPC_LITTLE_ENDIAN}
+{$endc}
+
+{$ifc not defined __ppc__ and defined CPUPOWERPC}
+ {$setc __ppc__ := 1}
+{$elsec}
+ {$setc __ppc__ := 0}
+{$endc}
+{$ifc not defined __i386__ and defined CPUI386}
+ {$setc __i386__ := 1}
+{$elsec}
+ {$setc __i386__ := 0}
+{$endc}
+
+{$ifc defined __ppc__ and __ppc__ and defined __i386__ and __i386__}
+ {$error Conflicting definitions for __ppc__ and __i386__}
+{$endc}
+
+{$ifc defined __ppc__ and __ppc__}
+ {$setc TARGET_CPU_PPC := TRUE}
+ {$setc TARGET_CPU_X86 := FALSE}
+{$elifc defined __i386__ and __i386__}
+ {$setc TARGET_CPU_PPC := FALSE}
+ {$setc TARGET_CPU_X86 := TRUE}
+{$elsec}
+ {$error Neither __ppc__ nor __i386__ is defined.}
+{$endc}
+{$setc TARGET_CPU_PPC_64 := FALSE}
+
+{$ifc defined FPC_BIG_ENDIAN}
+ {$setc TARGET_RT_BIG_ENDIAN := TRUE}
+ {$setc TARGET_RT_LITTLE_ENDIAN := FALSE}
+{$elifc defined FPC_LITTLE_ENDIAN}
+ {$setc TARGET_RT_BIG_ENDIAN := FALSE}
+ {$setc TARGET_RT_LITTLE_ENDIAN := TRUE}
+{$elsec}
+ {$error Neither FPC_BIG_ENDIAN nor FPC_LITTLE_ENDIAN are defined.}
+{$endc}
+{$setc ACCESSOR_CALLS_ARE_FUNCTIONS := TRUE}
+{$setc CALL_NOT_IN_CARBON := FALSE}
+{$setc OLDROUTINENAMES := FALSE}
+{$setc OPAQUE_TOOLBOX_STRUCTS := TRUE}
+{$setc OPAQUE_UPP_TYPES := TRUE}
+{$setc OTCARBONAPPLICATION := TRUE}
+{$setc OTKERNEL := FALSE}
+{$setc PM_USE_SESSION_APIS := TRUE}
+{$setc TARGET_API_MAC_CARBON := TRUE}
+{$setc TARGET_API_MAC_OS8 := FALSE}
+{$setc TARGET_API_MAC_OSX := TRUE}
+{$setc TARGET_CARBON := TRUE}
+{$setc TARGET_CPU_68K := FALSE}
+{$setc TARGET_CPU_MIPS := FALSE}
+{$setc TARGET_CPU_SPARC := FALSE}
+{$setc TARGET_OS_MAC := TRUE}
+{$setc TARGET_OS_UNIX := FALSE}
+{$setc TARGET_OS_WIN32 := FALSE}
+{$setc TARGET_RT_MAC_68881 := FALSE}
+{$setc TARGET_RT_MAC_CFM := FALSE}
+{$setc TARGET_RT_MAC_MACHO := TRUE}
+{$setc TYPED_FUNCTION_POINTERS := TRUE}
+{$setc TYPE_BOOL := FALSE}
+{$setc TYPE_EXTENDED := FALSE}
+{$setc TYPE_LONGLONG := TRUE}
+uses MacTypes,ATSUnicodeTypes,SFNTTypes;
+{$ALIGN MAC68K}
+
+{ ---------------------------------------------------------------------------- }
+{ Font features }
+{ ---------------------------------------------------------------------------- }
+
+{
+ * ATSUSetFontFeatures()
+ *
+ * Summary:
+ * Sets font features in a style object.
+ *
+ * Discussion:
+ * This function enables you to set multiple font features for a
+ * style object. Any unset font features retain their font-defined
+ * default values. To set style attributes and font variations for a
+ * style object, call the functions ATSUSetAttributes and
+ * ATSUSetVariations, respectively. The constants that represent
+ * font feature types are defined in the header file
+ * SFNTLayoutTypes.h. When you use ATSUI to access and set font
+ * features, you must use the constants defined in this header file,
+ * which are described in "Inside Mac OS X: Rendering Unicode Text
+ * With ATSUI". As feature types can be added at any time, you
+ * should check Apple's font feature registry website for the most
+ * up-to-date list of font feature types and selectors:
+ * http://developer.apple.com/fonts/Registry/index.html.
+ *
+ * Parameters:
+ *
+ * iStyle:
+ * The style object for which to set font features.
+ *
+ * iFeatureCount:
+ * The number of font features to set. This value should
+ * correspond to the number of elements in the iType and iSelector
+ * arrays.
+ *
+ * iType:
+ * An array of feature types. Each element in the array must
+ * contain a valid feature type that corresponds to a feature
+ * selector in the iSelector array. To obtain the valid feature
+ * types for a font, call the function ATSUGetFontFeatureTypes .
+ *
+ * iSelector:
+ * An array of feature selectors. Each element in the array must
+ * contain a valid feature selector that corresponds to a feature
+ * type in the iType array. To obtain the valid feature selectors
+ * for a font, call the function ATSUGetFontFeatureSelectors .
+ *
+ * Result:
+ * On success, noErr is returned. See MacErrors.h for possible error
+ * codes.
+ *
+ * Availability:
+ * Mac OS X: in version 10.0 and later in ApplicationServices.framework
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Non-Carbon CFM: in ATSUnicodeLib 8.5 and later
+ }
+// AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER
+function ATSUSetFontFeatures( iStyle: ATSUStyle; iFeatureCount: ItemCount; iType: ATSUFontFeatureTypePtr; iSelector: ATSUFontFeatureSelectorPtr ): OSStatus; external name '_ATSUSetFontFeatures';
+
+
+{
+ * ATSUGetFontFeature()
+ *
+ * Summary:
+ * Obtains the font feature corresponding to an index into an array
+ * of font features for a style object.
+ *
+ * Discussion:
+ * You might typically call ATSUGetFontFeature if you need to obtain
+ * one previously set feature after another within your program's
+ * processing loop. To obtain all previously set font features for a
+ * given style object, you can call the function
+ * ATSUGetAllFontFeatures. Before calling ATSUGetFontFeature, you
+ * should call the function ATSUGetAllFontFeatures to obtain a count
+ * of the font features that are set in the style object. You can
+ * then pass the index for the feature whose setting you want to
+ * obtain in the iTag and iMaximumValueSize parameters of
+ * ATSUGetFontFeature.
+ *
+ * Parameters:
+ *
+ * iStyle:
+ * The style you wish to obtain font feature information for.
+ *
+ * iFeatureIndex:
+ * An index into the array of font features for the style object.
+ * This index identifies the font feature to examine. Because this
+ * index is zero-based, you must pass a value between 0 and one
+ * less than the value produced in the oActualFeatureCount
+ * parameter of the function ATSUGetAllFontFeatures.
+ *
+ * oFeatureType:
+ * On return, the value identifies the font feature type
+ * corresponding to the index passed in the iFeatureIndex
+ * parameter. You must allocate space for ATSUGetFontFeature to
+ * store this value.
+ *
+ * oFeatureSelector:
+ * On return, the value identifies the font feature selector that
+ * corresponds to the feature type produced in the oFeatureType
+ * parameter. ou must allocate space for ATSUGetFontFeature to
+ * store this value.
+ *
+ * Result:
+ * On success, noErr is returned. See MacErrors.h for possible error
+ * codes.
+ *
+ * Availability:
+ * Mac OS X: in version 10.0 and later in ApplicationServices.framework
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Non-Carbon CFM: in ATSUnicodeLib 8.5 and later
+ }
+// AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER
+function ATSUGetFontFeature( iStyle: ATSUStyle; iFeatureIndex: ItemCount; oFeatureType: ATSUFontFeatureTypePtr; oFeatureSelector: ATSUFontFeatureSelectorPtr ): OSStatus; external name '_ATSUGetFontFeature';
+
+
+{
+ * ATSUGetAllFontFeatures()
+ *
+ * Summary:
+ * Obtains the font features of a style object that are not at
+ * default settings.
+ *
+ * Discussion:
+ * The ATSUGetAllFontFeatures function obtains all of a style
+ * object's font features that are not at default settings. Font
+ * features are grouped into categories called feature types, within
+ * which individual feature selectors define particular feature
+ * settings. The arrays produced by ATSUGetAllFontFeatures contain
+ * constants identifying the object's font types and their
+ * corresponding font selectors. Typically you use the function
+ * ATSUGetAllFontFeatures by calling it twice, as follows: (1) Pass
+ * a reference to the style object to examine in the iStyle
+ * parameter, a valid pointer to an ItemCount value in the
+ * oActualFeatureCount parameter, NULL for the oFeatureType and
+ * oFeatureSelector parameters, and 0 for the iMaximumFeatureCount
+ * parameter. ATSUGetAllFontFeatures returns the size in the
+ * oActualFeatureCount parameter to use for the feature type and
+ * selector arrays. (2) Allocate enough space for arrays of the
+ * returned size, then call ATSUGetAllFontFeatures again, passing a
+ * pointer to the arrays in the oFeatureType and oFeatureSelector
+ * parameters. On return, the arrays contain the font feature types
+ * and selectors, respectively, for the style object.
+ *
+ * Parameters:
+ *
+ * iStyle:
+ * The style for which you wish to obtain font feature information.
+ *
+ * iMaximumFeatureCount:
+ * The maximum number of feature types and selectors to obtain for
+ * the style object. Typically, this is equivalent to the number
+ * of ATSUFontFeatureType and ATSUFontFeatureSelector values for
+ * which you have allocated memory in the oFeatureType and
+ * oFeatureSelector parameters, respectively. To determine this
+ * value, see the Discussion.
+ *
+ * oFeatureType:
+ * On return, the array contains constants identifying each type
+ * of font feature that is at a nondefault setting in the style
+ * object. If you are uncertain of how much memory to allocate for
+ * this array, see the Discussion. can be NULL
+ *
+ * oFeatureSelector:
+ * On return, the array contains constants identifying the feature
+ * selectors that are at nondefault settings in the style object.
+ * Each selector determines the setting for a corresponding
+ * feature type produced in the oFeatureType parameter. If you are
+ * uncertain of how much memory to allocate for this array, see
+ * the Discussion. can be NULL
+ *
+ * oActualFeatureCount:
+ * On return, the value specifies the actual number of font
+ * feature types and selectors in the style object. This may be
+ * greater than the value you specified in the
+ * iMaximumFeatureCount parameter. can be NULL
+ *
+ * Result:
+ * On success, noErr is returned. See MacErrors.h for possible error
+ * codes.
+ *
+ * Availability:
+ * Mac OS X: in version 10.0 and later in ApplicationServices.framework
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Non-Carbon CFM: in ATSUnicodeLib 8.5 and later
+ }
+// AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER
+function ATSUGetAllFontFeatures( iStyle: ATSUStyle; iMaximumFeatureCount: ItemCount; oFeatureType: ATSUFontFeatureTypePtr; oFeatureSelector: ATSUFontFeatureSelectorPtr; oActualFeatureCount: ItemCountPtr ): OSStatus; external name '_ATSUGetAllFontFeatures';
+
+
+{
+ * ATSUClearFontFeatures()
+ *
+ * Summary:
+ * Restores default settings to the specified font features of a
+ * style object.
+ *
+ * Discussion:
+ * This function removes those font features that are identified by
+ * the feature selector and type constants in the iSelector and
+ * iType arrays and replaces them with their font-defined default
+ * values. Note that if you pass ATSUClearFontFeatures a font
+ * feature and selector that are already at default settings, the
+ * function does not return an error. To restore default font
+ * variations to a style object, call the function
+ * ATSUClearFontVariations. To restore default style attributes to a
+ * style object, call ATSUClearAttributes. To restore all default
+ * settings to a style object (for font features, variations, and
+ * style attributes), call the function ATSUClearStyle.
+ *
+ * Parameters:
+ *
+ * iStyle:
+ * A style whose font features you wish to clear.
+ *
+ * iFeatureCount:
+ * The number of font features to restore to default settings.
+ * This value should correspond to the number of elements in the
+ * iType and iSelector arrays. To restore default settings to all
+ * the font features in the specified style object, pass the
+ * constant kATSUClearAll in this parameter. In this case, the
+ * values in the iType and iSelector parameters are ignored.
+ *
+ * iType:
+ * An array of feature types. Each value should identify a font
+ * feature to restore to its default setting. To obtain all
+ * previously set font features for a given style object, you can
+ * call the function ATSUGetAllFontFeatures. You may pass NULL for
+ * this parameter if you are passing kATSUClearAll for the
+ * iFeatureCount parameter. can be NULL
+ *
+ * iSelector:
+ * An array of feature selectors. Each element in the array must
+ * contain a valid feature selector corresponding to a font
+ * feature you provide in the iType parameter. To obtain all
+ * previously set feature selectors for a given style object, you
+ * can call the function ATSUGetAllFontFeatures. You may pass NULL
+ * for this parameter if you are passing kATSUClearAll for the
+ * iFeatureCount parameter. can be NULL
+ *
+ * Result:
+ * On success, noErr is returned. See MacErrors.h for possible error
+ * codes.
+ *
+ * Availability:
+ * Mac OS X: in version 10.0 and later in ApplicationServices.framework
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Non-Carbon CFM: in ATSUnicodeLib 8.5 and later
+ }
+// AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER
+function ATSUClearFontFeatures( iStyle: ATSUStyle; iFeatureCount: ItemCount; iType: ATSUFontFeatureTypePtr; iSelector: ATSUFontFeatureSelectorPtr ): OSStatus; external name '_ATSUClearFontFeatures';
+
+
+{ ---------------------------------------------------------------------------- }
+{ Font variations }
+{ ---------------------------------------------------------------------------- }
+{
+ * ATSUSetVariations()
+ *
+ * Summary:
+ * Sets font variation axes and values in a style object.
+ *
+ * Discussion:
+ * If you supply font variation axes and values to the
+ * ATSUSetVariations function, you can change the appearance of a
+ * style object's font accordingly. You may specify any number of
+ * variation axes and values in a style object. Any of the font's
+ * variations that you do not set retain their font-defined default
+ * values. You can also use the ATSUSetVariations function to supply
+ * your own value within any variation axes defined for the font.
+ * However, if the font does not support the variation axis you
+ * specify, your custom variation has no visual effect. By calling
+ * the function ATSUGetIndFontVariation, you can obtain a variation
+ * axis and its maximum, minimum, and default values for a font.
+ *
+ * Parameters:
+ *
+ * iStyle:
+ * The style object for which to set font variation values.
+ *
+ * iVariationCount:
+ * The number of font variation values to set. This value should
+ * correspond to the number of elements in the iAxes and iValue
+ * arrays.
+ *
+ * iAxes:
+ * An array of font variation axes. Each element in the array must
+ * represent a valid variation axis tag that corresponds to a
+ * variation value in the iValue array. To obtain a valid
+ * variation axis tag for a font, you can call the functions
+ * ATSUGetIndFontVariation or ATSUGetFontInstance.
+ *
+ * iValue:
+ * An array of font variation values. Each element in the array
+ * must contain a value that is valid for the corresponding
+ * variation axis in the iAxes parameter. You can obtain a font's
+ * maximum, minimum, and default values for a given variation axis
+ * by calling the function ATSUGetIndFontVariation . You can
+ * obtain the font variation axis values for a font instance by
+ * calling ATSUGetFontInstance.
+ *
+ * Result:
+ * On success, noErr is returned. See MacErrors.h for possible error
+ * codes.
+ *
+ * Availability:
+ * Mac OS X: in version 10.0 and later in ApplicationServices.framework
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Non-Carbon CFM: in ATSUnicodeLib 8.5 and later
+ }
+// AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER
+function ATSUSetVariations( iStyle: ATSUStyle; iVariationCount: ItemCount; iAxes: ATSUFontVariationAxisPtr; iValue: ATSUFontVariationValuePtr ): OSStatus; external name '_ATSUSetVariations';
+
+
+{
+ * ATSUGetFontVariationValue()
+ *
+ * Summary:
+ * Obtains the current value for a single font variation axis in a
+ * style object.
+ *
+ * Discussion:
+ * This function obtains the setting for a specified font variation
+ * axis in a style object. You might typically call
+ * ATSUGetFontVariationValue if you need to obtain one previously
+ * set variation axis value after another within your program's
+ * processing loop. To obtain all nondefault font variation axis
+ * values for a given style object, you can call the function
+ * ATSUGetAllFontVariations. Before calling
+ * ATSUGetFontVariationValue, call the function
+ * ATSUGetAllFontVariations to obtain the font variation axes that
+ * are set for the style object.
+ *
+ * Parameters:
+ *
+ * iStyle:
+ * The style for which you want to obtain a variation value.
+ *
+ * iFontVariationAxis:
+ * A tag specifying the style object's variation axis to examine.
+ * You can obtain a list of variation axis tags that are set to
+ * non-default values in a particular style object from the
+ * function ATSUGetAllFontVariations.
+ *
+ * oFontVariationValue:
+ * On return, ATSUGetFontVariationValue produces the currently set
+ * value for the style object's specified variation axis. If this
+ * value has not been set, ATSUGetFontVariationValue produces the
+ * font-defined default value.
+ *
+ * Result:
+ * On success, noErr is returned. See MacErrors.h for possible error
+ * codes.
+ *
+ * Availability:
+ * Mac OS X: in version 10.0 and later in ApplicationServices.framework
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Non-Carbon CFM: in ATSUnicodeLib 8.5 and later
+ }
+// AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER
+function ATSUGetFontVariationValue( iStyle: ATSUStyle; iFontVariationAxis: ATSUFontVariationAxis; oFontVariationValue: ATSUFontVariationValuePtr ): OSStatus; external name '_ATSUGetFontVariationValue';
+
+
+{
+ * ATSUGetAllFontVariations()
+ *
+ * Summary:
+ * Obtains a style object's font variation values that are not at
+ * default settings.
+ *
+ * Discussion:
+ * This function obtains all of a style object's font variation axes
+ * that are not at default settings, as well as the current values
+ * for the axes. Typically you use the function
+ * ATSUGetAllFontVariations by calling it twice, as follows: (1)
+ * Pass a reference to the style object to examine in the iStyle
+ * parameter, a pointer to an ItemCount value in the
+ * oActualVariationCount parameter, NULL for the oVariationAxes and
+ * oFontVariationValues parameters, and 0 for the iVariationCount
+ * parameter. ATSUGetAllFontVariations returns the size to use for
+ * the variation axes and value arrays in the oActualVariationCount
+ * parameter. (2) Allocate enough space for arrays of the returned
+ * size, then call ATSUGetAllFontVariations again, passing a pointer
+ * to the arrays in the oVariationAxes and oFontVariationValues
+ * parameters. On return, the arrays contain the font variation axes
+ * and their corresponding values, respectively, for the style
+ * object.
+ *
+ * Parameters:
+ *
+ * iStyle:
+ * A style for which you wish to obtain information about current
+ * variation settings.
+ *
+ * iVariationCount:
+ * The maximum number of font variation values to obtain for the
+ * style object. Typically, this is equivalent to the number of
+ * ATSUFontVariationAxis and ATSUFontVariationValue values for
+ * which you have allocated memory in the oVariationAxes and
+ * oFontVariationValues parameters, respectively. To determine
+ * this value, see the Discussion.
+ *
+ * oVariationAxes:
+ * On return, the array contains the current font variation values
+ * for the font variation axes produced in the oVariationAxes
+ * array. If you are uncertain of how much memory to allocate for
+ * this array, see the Discussion. can be NULL
+ *
+ * oFontVariationValues:
+ * On return, the value specifies the actual number of nondefault
+ * font variation values in the style object. This may be greater
+ * than the value you passed in the iVariationCount parameter. If
+ * you are uncertain of how much memory to allocate for this
+ * array, see the Discussion. can be NULL
+ *
+ * oActualVariationCount:
+ * On return, the value specifies the actual number of nondefault
+ * font variation values in the style object. This may be greater
+ * than the value you passed in the iVariationCount parameter.
+ * can be NULL
+ *
+ * Result:
+ * On success, noErr is returned. See MacErrors.h for possible error
+ * codes.
+ *
+ * Availability:
+ * Mac OS X: in version 10.0 and later in ApplicationServices.framework
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Non-Carbon CFM: in ATSUnicodeLib 8.5 and later
+ }
+// AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER
+function ATSUGetAllFontVariations( iStyle: ATSUStyle; iVariationCount: ItemCount; oVariationAxes: ATSUFontVariationAxisPtr; oFontVariationValues: ATSUFontVariationValuePtr; oActualVariationCount: ItemCountPtr ): OSStatus; external name '_ATSUGetAllFontVariations';
+
+
+{
+ * ATSUClearFontVariations()
+ *
+ * Summary:
+ * Restores default values to the specified font variation axes of a
+ * style object.
+ *
+ * Discussion:
+ * The ATSUClearFontVariations function removes those font variation
+ * axis values identified by variation axis tags in the iAxis array
+ * and replaces them with their font-defined default values. You can
+ * remove unset font variation values from a style object without a
+ * function error. To restore default font features to a style
+ * object, call the function ATSUClearFontFeatures. To restore
+ * default style attributes, call ATSUClearAttributes. To restore
+ * all default settings to a style object (for font features,
+ * variations, and style attributes), call the function
+ * ATSUClearStyle.
+ *
+ * Parameters:
+ *
+ * iStyle:
+ * The style in which you wish to clear font variation settings.
+ *
+ * iAxisCount:
+ * The number of font variation axes to restore to default
+ * settings. This value should correspond to the number of
+ * elements in the iAxis array. To restore default values to all
+ * the font variation axes in the style object, pass the constant
+ * kATSUClearAll in this parameter. If you pass kATSUClearAll the
+ * value in the iAxis parameter is ignored.
+ *
+ * iAxis:
+ * An array of font variation axes. Each element in the array must
+ * contain a valid tag that corresponds to a font variation axis
+ * to restore to its default setting. You can obtain variation
+ * axis tags for a style object from the function
+ * ATSUGetAllFontVariations. You may pass NULL for this parameter
+ * if you are passing kATSUClearAll for the iAxisCount parameter. can be NULL
+ *
+ * Result:
+ * On success, noErr is returned. See MacErrors.h for possible error
+ * codes.
+ *
+ * Availability:
+ * Mac OS X: in version 10.0 and later in ApplicationServices.framework
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Non-Carbon CFM: in ATSUnicodeLib 8.5 and later
+ }
+// AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER
+function ATSUClearFontVariations( iStyle: ATSUStyle; iAxisCount: ItemCount; iAxis: ATSUFontVariationAxisPtr ): OSStatus; external name '_ATSUClearFontVariations';
+
+
+{ ---------------------------------------------------------------------------- }
+{ Font ID's }
+{ ---------------------------------------------------------------------------- }
+{
+ * ATSUFontCount()
+ *
+ * Summary:
+ * Obtains the number of ATSUI-compatible fonts installed on a
+ * user's system.
+ *
+ * Discussion:
+ * The ATSUFontCount function obtains the number of fonts on a
+ * user's system that are compatible with ATSUI. Incompatible fonts
+ * include those that cannot be used to represent Unicode, the
+ * missing-character glyph font, and fonts whose names begin with a
+ * period or a percent sign. You can use the count produced in the
+ * oFontCount parameter to determine the amount of memory to
+ * allocate for the oFontIDs array in the function ATSUGetFontIDs.
+ * It is important to note that the set of installed
+ * ATSUI-compatible fonts may change while your application is
+ * running. In Mac OS X, the set of installed fonts may change at
+ * any time. Although in Mac OS 9, fonts cannot be removed from the
+ * Fonts folder while an application other than the Finder is
+ * running, they can be removed from other locations, and it is
+ * possible for fonts to be added. Additionally, just because the
+ * number of fonts stays the same between two successive calls to
+ * ATSUFontCount , this does not mean that the font lists are the
+ * same. It is possible for a font to be added and another removed
+ * between two successive calls to ATSUFontCount , leaving the total
+ * number unchanged.
+ *
+ * Parameters:
+ *
+ * oFontCount:
+ * On return, the number of ATSUI-compatible fonts installed on a
+ * user's system.
+ *
+ * Result:
+ * On success, noErr is returned. See MacErrors.h for possible error
+ * codes.
+ *
+ * Availability:
+ * Mac OS X: in version 10.0 and later in ApplicationServices.framework
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Non-Carbon CFM: in ATSUnicodeLib 8.5 and later
+ }
+// AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER
+function ATSUFontCount( var oFontCount: ItemCount ): OSStatus; external name '_ATSUFontCount';
+
+
+{
+ * ATSUGetFontIDs()
+ *
+ * Summary:
+ * Obtains a list of all the ATSUI-compatible fonts installed on the
+ * user's system.
+ *
+ * Discussion:
+ * Use the function ATSUFontCount to determine how much memory to
+ * allocate before calling this function. Also see the discussion
+ * for the ATSUFontCount function.
+ *
+ * Parameters:
+ *
+ * oFontIDs:
+ * On return, the array contains unique identifiers for each of
+ * the ATSUI-compatible fonts installed on the user's system. You
+ * should allocate enough memory to contain an array the size of
+ * the count produced by the function ATSUFontCount.
+ *
+ * iArraySize:
+ * The maximum number of fonts to obtain. Typically, this is
+ * equivalent to the number of ATSUFontID values for which you
+ * have allocated memory in the oFontIDs parameter.
+ *
+ * oFontCount:
+ * On return, the value specifies the actual number of
+ * ATSUI-compatible fonts installed on the user's system. This may
+ * be greater than the value you specified in the iArraySize
+ * parameter. can be NULL
+ *
+ * Result:
+ * On success, noErr is returned. See MacErrors.h for possible error
+ * codes.
+ *
+ * Availability:
+ * Mac OS X: in version 10.0 and later in ApplicationServices.framework
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Non-Carbon CFM: in ATSUnicodeLib 8.5 and later
+ }
+// AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER
+function ATSUGetFontIDs( oFontIDs: ATSUFontIDPtr; iArraySize: ItemCount; oFontCount: ItemCountPtr ): OSStatus; external name '_ATSUGetFontIDs';
+
+
+{
+ * ATSUFONDtoFontID()
+ *
+ * Summary:
+ * Finds the ATSUI font ID that corresponds to a font family number,
+ * if one exists.
+ *
+ * Discussion:
+ * This function is not recommended. Instead, use the function
+ * FMGetFontFromFontFamilyInstance (see Fonts.h). FMFont values are
+ * equivalent to ATSUFontID values.
+ *
+ * Availability:
+ * Mac OS X: in version 10.0 and later in ApplicationServices.framework
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Non-Carbon CFM: in ATSUnicodeLib 8.5 and later
+ }
+// AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER
+function ATSUFONDtoFontID( iFONDNumber: SInt16; iFONDStyle: Style; var oFontID: ATSUFontID ): OSStatus; external name '_ATSUFONDtoFontID';
+
+
+{
+ * ATSUFontIDtoFOND()
+ *
+ * Summary:
+ * Finds the font family number and style that correspond to an
+ * ATSUI font ID, if these exist.
+ *
+ * Discussion:
+ * This function is not recommended. Instead, use the function
+ * FMGetFontFamilyInstanceFromFont (see Fonts.h). FMFont values are
+ * equivalent to ATSUFontID values.
+ *
+ * Availability:
+ * Mac OS X: in version 10.0 and later in ApplicationServices.framework
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Non-Carbon CFM: in ATSUnicodeLib 8.5 and later
+ }
+// AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER
+function ATSUFontIDtoFOND( iFontID: ATSUFontID; var oFONDNumber: SInt16; var oFONDStyle: Style ): OSStatus; external name '_ATSUFontIDtoFOND';
+
+
+{ ---------------------------------------------------------------------------- }
+{ Font names }
+{ ---------------------------------------------------------------------------- }
+{
+ * ATSUCountFontNames()
+ *
+ * Summary:
+ * Obtains the number of font names that correspond to a given ATSUI
+ * font ID.
+ *
+ * Discussion:
+ * This function obtains the number of font names defined in a font
+ * name table for a given ATSUI font ID. This number includes
+ * repetitions of the same name in different platforms, languages,
+ * and scripts; names of font features, variations, tracking
+ * settings, and instances for the font; and font names identified
+ * by name code constants. You can pass an index value based on this
+ * count to the function ATSUGetIndFontName to obtain a name string,
+ * name code, platform, script, and language for a given ATSUI font
+ * ID.
+ *
+ * Parameters:
+ *
+ * iFontID:
+ * The font for which you wish to obtain the font name count.
+ *
+ * oFontNameCount:
+ * On return, the value specifies the number of entries in the
+ * font name table corresponding to the given ATSUI font ID.
+ *
+ * Result:
+ * On success, noErr is returned. See MacErrors.h for possible error
+ * codes.
+ *
+ * Availability:
+ * Mac OS X: in version 10.0 and later in ApplicationServices.framework
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Non-Carbon CFM: in ATSUnicodeLib 8.5 and later
+ }
+// AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER
+function ATSUCountFontNames( iFontID: ATSUFontID; var oFontNameCount: ItemCount ): OSStatus; external name '_ATSUCountFontNames';
+
+
+{
+ * ATSUGetIndFontName()
+ *
+ * Summary:
+ * Obtains a name string, name code, platform, script, and language
+ * for the font that matches an ATSUI font ID and name table index
+ * value.
+ *
+ * Discussion:
+ * Typically you use the ATSUGetIndFontName function by calling it
+ * twice, as follows: (1) Pass valid values for the iFontID,
+ * iFontNameIndex, and oActualNameLength parameters, 0 for the
+ * iMaximumNameLength parameter, and NULL for the other parameters.
+ * ATSUGetIndFontName returns the length of the font name string in
+ * the oActualNameLength parameter. (2) Allocate enough space for a
+ * buffer of the returned size, then call the function again,
+ * passing a valid pointer to the buffer in the oName parameter. On
+ * return, the buffer contains the font name string. To find a name
+ * string and index value for the first font in a name table that
+ * matches an ATSUI font ID and the specified font parameters, call
+ * the function ATSUFindFontName. To obtain an ATSUI font ID for the
+ * first font in a name table that matches the specified name
+ * string, name code, platform, script, and/or language, call the
+ * function ATSUFindFontFromName.
+ *
+ * Parameters:
+ *
+ * iFontID:
+ * The font for which to obtain information. Note that because
+ * Apple Type Services assigns ATSUFontID values systemwide at
+ * runtime, font IDs can change across system restarts.
+ *
+ * iFontNameIndex:
+ * An index to the font for which to obtain information. Because
+ * this index must be 0-based, you should pass a value between 0
+ * and one less than the count produced by the function
+ * ATSUCountFontNames.
+ *
+ * iMaximumNameLength:
+ * The maximum length of the font name string to obtain.
+ * Typically, this is equivalent to the size of the buffer that
+ * you have allocated in the oName parameter. To determine this
+ * length, see the Discussion.
+ *
+ * oName:
+ * On return, the buffer contains the name string of the font
+ * matching the ATSUI font ID and name table index value being
+ * passed. If the buffer you allocate is not large enough to
+ * contain the name string, ATSUGetIndFontName produces a partial
+ * string. If you are unsure how much memory to allocate for this
+ * parameter, see the Discussion.
+ *
+ * oActualNameLength:
+ * On return, the value specifies the actual length of the
+ * complete name string. This may be greater than the value passed
+ * in the iMaximumNameLength parameter. You should check this
+ * value to ensure that you have allocated sufficient memory and
+ * therefore obtained the complete name string for the font. can be NULL
+ *
+ * oFontNameCode:
+ * On return, a value specifying the type of name returned (i.e.,
+ * full name, postscript name) of the font. See SFNTTypes.h for a
+ * list of possible values. can be NULL
+ *
+ * oFontNamePlatform:
+ * On return, a value specifying the encoding of the font. See
+ * SFNTTypes.h for a list of possible values. can be NULL
+ *
+ * oFontNameScript:
+ * On return, a value specifying the script of the font. See
+ * SFNTTypes.h for a list of possible values. can be NULL
+ *
+ * oFontNameLanguage:
+ * On return, a value specifying the language of the font. See
+ * SFNTTypes.h for a list of possible values. can be NULL
+ *
+ * Result:
+ * On success, noErr is returned. See MacErrors.h for possible error
+ * codes.
+ *
+ * Availability:
+ * Mac OS X: in version 10.0 and later in ApplicationServices.framework
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Non-Carbon CFM: in ATSUnicodeLib 8.5 and later
+ }
+// AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER
+function ATSUGetIndFontName( iFontID: ATSUFontID; iFontNameIndex: ItemCount; iMaximumNameLength: ByteCount; oName: Ptr; oActualNameLength: ByteCountPtr; oFontNameCode: FontNameCodePtr; oFontNamePlatform: FontPlatformCodePtr; oFontNameScript: FontScriptCodePtr; oFontNameLanguage: FontLanguageCodePtr ): OSStatus; external name '_ATSUGetIndFontName';
+
+
+{
+ * ATSUFindFontName()
+ *
+ * Summary:
+ * Obtains a name string and index value for the first font in a
+ * name table that matches the specified ATSUI font ID, name code,
+ * platform, script, and/or language.
+ *
+ * Discussion:
+ * Typically you use the ATSUFindFontName function by calling it
+ * twice, as follows: (1) Pass NULL for the oName and oFontNameIndex
+ * parameters, 0 for the iMaximumNameLength parameter, and valid
+ * values for the other parameters. ATSUFindFontName returns the
+ * length of the font name string in the oActualNameLength
+ * parameter. (2) Allocate enough space for a buffer of the returned
+ * size, then call the function again, passing a valid pointer to
+ * the buffer in the oName parameter. On return, the buffer contains
+ * the font name string. To obtain an ATSUI font ID for the first
+ * font in a name table that matches the specified name string, name
+ * code, platform, script, and/or language, call the function
+ * ATSUFindFontFromName. To obtain the font name string, name code,
+ * platform, script, and language for the font that matches an ATSUI
+ * font ID and name table index, call the function
+ * ATSUGetIndFontName. Although they will each accept NULL on input
+ * individually, you must pass a vaild pointer to at least one of
+ * the three parameters oName, oActualNameLength, or oFontNameIndex,
+ * or ATSUFindFontName will return paramErr.
+ *
+ * Parameters:
+ *
+ * iFontID:
+ * The font for which to obtain a name string. Note that because
+ * Apple Type Services assigns ATSUFontID values systemwide at
+ * runtime, font IDs can change across system restarts.
+ *
+ * iFontNameCode:
+ * A constant specifying the FontNameCode value of the font for
+ * which to obtain a name string. See the SFNTTypes.h header file
+ * for a definition of the FontNameCode type and a list of
+ * possible values.
+ *
+ * iFontNamePlatform:
+ * A constant specifying the encoding of the font. See SFNTTypes.h
+ * for possible values to pass for this parameter. If you pass the
+ * kFontNoPlatformCode constant, ATSUFindFontName produces the
+ * first font in the name table matching the other specified
+ * parameters.
+ *
+ * iFontNameScript:
+ * A constant specifying the script of the font. See SFNTTypes.h
+ * for possible values to pass for this parameter. If you pass the
+ * kFontNoScriptCode constant, ATSUFindFontName produces the first
+ * font in the name table matching the other specified parameters.
+ *
+ * iFontNameLanguage:
+ * A constant specifying the language of the font you are
+ * searching for. See SFNTLayoutTypes.h for possible values to
+ * pass for this parameter.
+ *
+ * iMaximumNameLength:
+ * The maximum size of string you want ATSUFindFontName to return.
+ * Typically, this value is equal to the size of the buffer you
+ * have allocated for the oName parameter. To determine this
+ * length, see the Discussion.
+ *
+ * oName:
+ * On return, the name string of the first font in the font name
+ * table matching your specified parameters. If the buffer you
+ * allocate is not large enough, ATSUFindFontName produces a
+ * partial string. If you are unsure how much space to allocate
+ * for this parameter, see the Discussion. can be NULL
+ *
+ * oActualNameLength:
+ * On return, specifies the actual length of the complete name
+ * string. This may be greater than the value passed in the
+ * iMaximumNameLength parameter. You should check this value to
+ * ensure that you have allocated sufficient memory and therefore
+ * obtained the complete name string for the font. can be NULL
+ *
+ * oFontNameIndex:
+ * On return, the value provides a 0-based index to the font name
+ * in the font name table. can be NULL
+ *
+ * Result:
+ * On success, noErr is returned. See MacErrors.h for possible error
+ * codes.
+ *
+ * Availability:
+ * Mac OS X: in version 10.0 and later in ApplicationServices.framework
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Non-Carbon CFM: in ATSUnicodeLib 8.5 and later
+ }
+// AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER
+function ATSUFindFontName( iFontID: ATSUFontID; iFontNameCode: FontNameCode; iFontNamePlatform: FontPlatformCode; iFontNameScript: FontScriptCode; iFontNameLanguage: FontLanguageCode; iMaximumNameLength: ByteCount; oName: Ptr; oActualNameLength: ByteCountPtr; oFontNameIndex: ItemCountPtr ): OSStatus; external name '_ATSUFindFontName';
+
+
+{
+ * ATSUFindFontFromName()
+ *
+ * Summary:
+ * Obtains an ATSUI font ID for the first font in a name table that
+ * matches the specified name string, name code, platform, script,
+ * and/or language.
+ *
+ * Discussion:
+ * Because ATSUI cannot guarantee the uniqueness of names among
+ * installed fonts, ATSUFindFontFromName does not necessarily find
+ * the only font that matches these parameters. As a result, you may
+ * want to create a more sophisticated name-matching algorithm or
+ * guarantee the uniqueness of names among installed fonts.
+ *
+ * Parameters:
+ *
+ * iName:
+ * A pointer to a buffer containing the name string of the font
+ * for which to obtain an ATSUI font ID.
+ *
+ * iNameLength:
+ * The length, in bytes, of the name string provided in the iName
+ * parameter.
+ *
+ * iFontNameCode:
+ * A constant specifying the type of name to search for (i.e.,
+ * full name, postcript name). See SFNTTypes.h for a list possible
+ * values to pass for this parameter.
+ *
+ * iFontNamePlatform:
+ * A constant specifying the encoding of the font you are
+ * searching for. See SFNTTypes.h for possible values to pass for
+ * this parameter. Pass kFontNoPlatformCode if you do not want to
+ * limit your search to a particular encoding.
+ *
+ * iFontNameScript:
+ * A constant specifying the script of the font you are searching
+ * for. See SFNTTypes.h for possible values to pass for this
+ * parameter. Pass kFontNoScriptCode if you do not want to limit
+ * your search to a particular script.
+ *
+ * iFontNameLanguage:
+ * A constant specifying the language of the font you are
+ * searching for. See SFNTTypes.h for possible values to pass for
+ * this parameter. Pass kFontNoLanguageCode if you do not want to
+ * limit your search to a particular language.
+ *
+ * oFontID:
+ * On return, the value provides a unique identifier for the
+ * specified font. If no installed font matches the specified
+ * parameters, kATSUInvalidFontID is returned for this parameter.
+ *
+ * Result:
+ * On success, noErr is returned. If the font cannot be found,
+ * kATSUInvalidFontErr is returned. See MacErrors.h for other
+ * possible error codes.
+ *
+ * Availability:
+ * Mac OS X: in version 10.0 and later in ApplicationServices.framework
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Non-Carbon CFM: in ATSUnicodeLib 8.5 and later
+ }
+// AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER
+function ATSUFindFontFromName( iName: Ptr; iNameLength: ByteCount; iFontNameCode: FontNameCode; iFontNamePlatform: FontPlatformCode; iFontNameScript: FontScriptCode; iFontNameLanguage: FontLanguageCode; var oFontID: ATSUFontID ): OSStatus; external name '_ATSUFindFontFromName';
+
+
+{ ---------------------------------------------------------------------------- }
+{ Font features }
+{ ---------------------------------------------------------------------------- }
+{
+ * ATSUCountFontFeatureTypes()
+ *
+ * Summary:
+ * Obtains the number of available feature types in a font.
+ *
+ * Discussion:
+ * This function function obtains the total number of feature types
+ * defined for a font. You can use the count produced by
+ * ATSUCountFontFeatureTypes to determine how much memory to
+ * allocate for the oTypes array in the function
+ * ATSUGetFontFeatureTypes.
+ *
+ * Parameters:
+ *
+ * iFontID:
+ * The font for which to obtain a count of feature types.
+ *
+ * oTypeCount:
+ * On return, the actual number of feature types defined for the
+ * font.
+ *
+ * Result:
+ * On success, noErr is returned. See MacErrors.h for possible error
+ * codes.
+ *
+ * Availability:
+ * Mac OS X: in version 10.0 and later in ApplicationServices.framework
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Non-Carbon CFM: in ATSUnicodeLib 8.5 and later
+ }
+// AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER
+function ATSUCountFontFeatureTypes( iFontID: ATSUFontID; var oTypeCount: ItemCount ): OSStatus; external name '_ATSUCountFontFeatureTypes';
+
+
+{
+ * ATSUCountFontFeatureSelectors()
+ *
+ * Summary:
+ * Obtains the number of available feature selectors for a given
+ * feature type in a font.
+ *
+ * Discussion:
+ * This function obtains the total number of feature selectors
+ * defined for a given feature type in the font. You can use the
+ * count produced by ATSUCountFontFeatureSelectors to determine how
+ * much memory to allocate for the oSelectors array in the function
+ * ATSUGetFontFeatureSelectors.
+ *
+ * Parameters:
+ *
+ * iFontID:
+ * The font for which to obtain feature selector information.
+ *
+ * iType:
+ * A value specifying one of the font's supported feature types.
+ * To obtain the available feature types for a font, call the
+ * function ATSUGetFontFeatureTypes.
+ *
+ * oSelectorCount:
+ * On return, specifies the actual number of feature selectors
+ * defined for the feature type by the font.
+ *
+ * Result:
+ * On success, noErr is returned. See MacErrors.h for possible error
+ * codes.
+ *
+ * Availability:
+ * Mac OS X: in version 10.0 and later in ApplicationServices.framework
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Non-Carbon CFM: in ATSUnicodeLib 8.5 and later
+ }
+// AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER
+function ATSUCountFontFeatureSelectors( iFontID: ATSUFontID; iType: ATSUFontFeatureType; var oSelectorCount: ItemCount ): OSStatus; external name '_ATSUCountFontFeatureSelectors';
+
+
+{
+ * ATSUGetFontFeatureTypes()
+ *
+ * Summary:
+ * Obtains the available feature types of a font.
+ *
+ * Discussion:
+ * A given font may not support all possible feature types and
+ * selectors. If you select features that are not available in a
+ * font, you won't see a change in the glyph's appearance. To
+ * determine the available features of a font, you can call the
+ * functions ATSUGetFontFeatureTypes and
+ * ATSUGetFontFeatureSelectors. The ATSUGetFontFeatureTypes function
+ * reads the font data table for the specified font and obtains its
+ * supported feature types. You can then use this information both
+ * to present the user a list of font features from which to select
+ * and to call such functions as ATSUSetFontFeatures with more
+ * accuracy.
+ *
+ * Parameters:
+ *
+ * iFontID:
+ * The font for which to obtain information about feature types.
+ *
+ * iMaximumTypes:
+ * The maximum number of feature types to obtain for the font.
+ * Typically, this is equivalent to the number of elements in the
+ * oTypes array.
+ *
+ * oTypes:
+ * A pointer to memory you have allocated for an array of
+ * ATSUFontFeatureType values. You can call the function
+ * ATSUCountFontFeatureTypes to obtain the number of available
+ * feature types for a given font and thus determine the amount of
+ * memory to allocate. On return, the array contains constants
+ * identifying each type of feature that is defined for the font.
+ * The constants that represent font feature types are defined in
+ * the header file SFNTLayoutTypes.h and are described in the
+ * official ATSUI documentation, available on the Apple developer
+ * website. can be NULL
+ *
+ * oActualTypeCount:
+ * On return, the actual number of feature types defined in the
+ * font. This may be greater than the value you specify in the
+ * iMaximumTypes parameter. can be NULL
+ *
+ * Result:
+ * On success, noErr is returned. See MacErrors.h for possible error
+ * codes.
+ *
+ * Availability:
+ * Mac OS X: in version 10.0 and later in ApplicationServices.framework
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Non-Carbon CFM: in ATSUnicodeLib 8.5 and later
+ }
+// AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER
+function ATSUGetFontFeatureTypes( iFontID: ATSUFontID; iMaximumTypes: ItemCount; oTypes: ATSUFontFeatureTypePtr; oActualTypeCount: ItemCountPtr ): OSStatus; external name '_ATSUGetFontFeatureTypes';
+
+
+{
+ * ATSUGetFontFeatureSelectors()
+ *
+ * Summary:
+ * Obtains the available feature selectors for a given feature type
+ * in a font.
+ *
+ * Discussion:
+ * A given font may not support all possible feature types and
+ * selectors. If you select features that are not available in a
+ * font, you won't see a change in the glyph's appearance. To
+ * determine the available features of a font, you can call the
+ * functions ATSUGetFontFeatureTypes and
+ * ATSUGetFontFeatureSelectors. The ATSUGetFontFeatureSelectors
+ * function reads the font data table for the specified font and
+ * obtains its supported feature selectors for the given feature
+ * types. You can then use this information both to present the user
+ * a list of font features from which to select and to call such
+ * functions as ATSUSetFontFeatures with more accuracy.
+ *
+ * Parameters:
+ *
+ * iFontID:
+ * The font for which to obtain feature selectors.
+ *
+ * iType:
+ * An ATSUFontFeatureType value specifying one of the font's
+ * supported feature types. To obtain the available feature types
+ * for a font, call the function ATSUGetFontFeatureTypes.
+ *
+ * iMaximumSelectors:
+ * An ItemCount value specifying the maximum number of feature
+ * selectors to obtain for the font's specified feature type.
+ * Typically, this is equivalent to the number of elements in the
+ * oSelectors array.
+ *
+ * oSelectors:
+ * A pointer to memory you have allocated for an array of
+ * ATSUFontFeatureSelector values. You can call the function
+ * ATSUCountFontFeatureSelectors to obtain the number of available
+ * feature selectors for a given font feature type and thus
+ * determine the amount of memory to allocate. On return, the
+ * array contains constants identifying each available feature
+ * selector for the given feature type. The constants that
+ * represent font feature selectors are defined in the header file
+ * SFNTLayoutTypes.h and are described in the official ATSUI
+ * documentation, available on the Apple developer website. can be NULL
+ *
+ * oSelectorIsOnByDefault:
+ * A pointer to memory you have allocated for an array of Boolean
+ * values. The number of elements in this array should correspond
+ * to the number of elements in the oSelectors array. On return,
+ * the array contains Boolean values indicating whether the
+ * corresponding feature selector in the oSelectors array is on or
+ * off. If true, the feature selector is on by default; if false,
+ * off. can be NULL
+ *
+ * oActualSelectorCount:
+ * On return, the value specifies the actual number of feature
+ * selectors defined for the given feature type. This value may be
+ * greater than the value you specify in the iMaximumSelectors
+ * parameter. can be NULL
+ *
+ * oIsMutuallyExclusive:
+ * On return, the value indicates whether the feature selectors
+ * for the given feature type are exclusive or nonexclusive. If a
+ * feature type is exclusive you can choose only one of its
+ * available feature selectors at a time, such as whether to
+ * display numbers as proportional or fixed-width. If a feature
+ * type is nonexclusive, you can enable any number of feature
+ * selectors at once. If true , the feature type is exclusive and
+ * only one selector can be used at a time. can be NULL
+ *
+ * Result:
+ * On success, noErr is returned. See MacErrors.h for possible error
+ * codes.
+ *
+ * Availability:
+ * Mac OS X: in version 10.0 and later in ApplicationServices.framework
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Non-Carbon CFM: in ATSUnicodeLib 8.5 and later
+ }
+// AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER
+function ATSUGetFontFeatureSelectors( iFontID: ATSUFontID; iType: ATSUFontFeatureType; iMaximumSelectors: ItemCount; oSelectors: ATSUFontFeatureSelectorPtr; oSelectorIsOnByDefault: BooleanPtr; oActualSelectorCount: ItemCountPtr; oIsMutuallyExclusive: BooleanPtr ): OSStatus; external name '_ATSUGetFontFeatureSelectors';
+
+
+{
+ * ATSUGetFontFeatureNameCode()
+ *
+ * Summary:
+ * btains the name code for a font's feature type or selector that
+ * matches an ASTUI font ID, feature type, and feature selector.
+ *
+ * Discussion:
+ * This function obtains the name code for a font's feature type or
+ * selector that matches an ASTUI font ID, feature type and feature
+ * selector values. By default, ATSUGetFontFeatureNameCode function
+ * obtains the name code of a feature selector. To determine the
+ * name code of a feature type, pass the constant kATSUNoSelector in
+ * the iSelector parameter. You can use the function
+ * ATSUFindFontName to obtain the localized name string for the name
+ * code produced by ATSUGetFontFeatureNameCode.
+ *
+ * Parameters:
+ *
+ * iFontID:
+ * The font for which to obtain the name code for a feature type
+ * or selector.
+ *
+ * iType:
+ * A constant identifying a valid feature type. To obtain the
+ * valid feature types for a font, call the function
+ * ATSUGetFontFeatureTypes.
+ *
+ * iSelector:
+ * A constant identifying a valid feature selector that
+ * corresponds to the feature type passed in the iType parameter.
+ * If you pass the constant kATSUNoSelector, the name code
+ * produced by ATSUGetFontFeatureNameCode is that of the feature
+ * type, not the feature selector. To obtain the valid feature
+ * selectors for a font, call the function
+ * ATSUGetFontFeatureSelectors.
+ *
+ * oNameCode:
+ * On return, the value contains the name code for the font
+ * feature selector or type. See the SFNTTypes.h header file for a
+ * definition of the FontNameCode type and a list of possible
+ * values.
+ *
+ * Result:
+ * On success, noErr is returned. See MacErrors.h for possible error
+ * codes.
+ *
+ * Availability:
+ * Mac OS X: in version 10.0 and later in ApplicationServices.framework
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Non-Carbon CFM: in ATSUnicodeLib 8.5 and later
+ }
+// AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER
+function ATSUGetFontFeatureNameCode( iFontID: ATSUFontID; iType: ATSUFontFeatureType; iSelector: ATSUFontFeatureSelector; var oNameCode: FontNameCode ): OSStatus; external name '_ATSUGetFontFeatureNameCode';
+
+
+{ ---------------------------------------------------------------------------- }
+{ Font tracking value & names }
+{ ---------------------------------------------------------------------------- }
+{
+ * ATSUCountFontTracking()
+ *
+ * Summary:
+ * Obtains the number of entries in the font tracking table that
+ * correspond to a given ATSUI font ID and glyph orientation.
+ *
+ * Discussion:
+ * This function obtains the number of font tracking entries defined
+ * in a font tracking table for a given ATSUI font ID and glyph
+ * orientation. You can pass an index value based on this count to
+ * the function ATSUGetIndFontTracking to obtain the name code and
+ * tracking value of a font tracking.
+ *
+ * Parameters:
+ *
+ * iFontID:
+ * The font for which to obtain tracking table information.
+ *
+ * iCharacterOrientation:
+ * A constant identifying the glyph orientation of the font
+ * tracking entries. See the definition of
+ * ATSUVerticalCharacterType for a list of possible values.
+ *
+ * oTrackingCount:
+ * On return, the number of entries in the font tracking table
+ * corresponding to the given ATSUI font ID and glyph orientation.
+ *
+ * Result:
+ * On success, noErr is returned. See MacErrors.h for possible error
+ * codes.
+ *
+ * Availability:
+ * Mac OS X: in version 10.0 and later in ApplicationServices.framework
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Non-Carbon CFM: in ATSUnicodeLib 8.6 and later
+ }
+// AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER
+function ATSUCountFontTracking( iFontID: ATSUFontID; iCharacterOrientation: ATSUVerticalCharacterType; var oTrackingCount: ItemCount ): OSStatus; external name '_ATSUCountFontTracking';
+
+
+{
+ * ATSUGetIndFontTracking()
+ *
+ * Summary:
+ * Obtains the name code and tracking value for the font tracking
+ * that matches an ASTUI font ID, glyph orientation, and tracking
+ * table index.
+ *
+ * Discussion:
+ * You can call the ATSUGetIndFontTracking function to obtain the
+ * name code and tracking value that matches the specified ATSUI
+ * font ID, glyph orientation, and tracking table index value. This
+ * information allows you to manipulate tracking settings for a
+ * style using this font via the kATSUTrackingTag attribute. You can
+ * use the function ATSUFindFontName to obtain the localized name
+ * string for the name code produced by ATSUGetIndFontTracking.
+ *
+ * Parameters:
+ *
+ * iFontID:
+ * The font for which to obtain tracking information.
+ *
+ * iCharacterOrientation:
+ * A constant identifying the glyph orientation of the font
+ * tracking entries. See the definition of
+ * ATSUVerticalCharacterType for a list of possible values.
+ *
+ * iTrackIndex:
+ * An index to the font tracking for which to obtain information.
+ * Because this index must be 0-based, you should pass a value
+ * between 0 and one less than the count produced by the function
+ * ATSUCountFontTracking.
+ *
+ * oFontTrackingValue:
+ * On return, the value contains the font tracking value.
+ *
+ * oNameCode:
+ * On return, the value contains the name code for the font
+ * tracking. See the SFNTTypes.h header file for a definition of
+ * the FontNameCode type and a list of possible values.
+ *
+ * Result:
+ * On success, noErr is returned. See MacErrors.h for possible error
+ * codes.
+ *
+ * Availability:
+ * Mac OS X: in version 10.0 and later in ApplicationServices.framework
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Non-Carbon CFM: in ATSUnicodeLib 8.6 and later
+ }
+// AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER
+function ATSUGetIndFontTracking( iFontID: ATSUFontID; iCharacterOrientation: ATSUVerticalCharacterType; iTrackIndex: ItemCount; var oFontTrackingValue: Fixed; var oNameCode: FontNameCode ): OSStatus; external name '_ATSUGetIndFontTracking';
+
+
+{ ---------------------------------------------------------------------------- }
+{ Font variations }
+{ ---------------------------------------------------------------------------- }
+{
+ * ATSUCountFontVariations()
+ *
+ * Summary:
+ * Obtains the number of defined variation axes in a font.
+ *
+ * Discussion:
+ * This function function obtains the total number of variation axes
+ * defined for a font. You can use the count produced by
+ * ATSUCountFontVariations to get information about a specific font
+ * variation axis from the function ATSUGetIndFontVariation.
+ *
+ * Parameters:
+ *
+ * iFontID:
+ * The font for which to obtain a count of variation axes.
+ *
+ * oVariationCount:
+ * On return, a count of the number of variation axes defined for
+ * the font.
+ *
+ * Result:
+ * On success, noErr is returned. See MacErrors.h for possible error
+ * codes.
+ *
+ * Availability:
+ * Mac OS X: in version 10.0 and later in ApplicationServices.framework
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Non-Carbon CFM: in ATSUnicodeLib 8.5 and later
+ }
+// AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER
+function ATSUCountFontVariations( iFontID: ATSUFontID; var oVariationCount: ItemCount ): OSStatus; external name '_ATSUCountFontVariations';
+
+
+{
+ * ATSUGetIndFontVariation()
+ *
+ * Summary:
+ * Obtains a variation axis and its value range for a font.
+ *
+ * Discussion:
+ * By calling this function, you can obtain a variation axis and its
+ * maximum, minimum, and default values for a font. If you supply
+ * font variation axes and values to the function ATSUSetVariations,
+ * you can change the appearance of a style object's font
+ * accordingly. Note that while you may pass NULL for any of the
+ * output parameters, at least one must be non-NULL or paramErr will
+ * be returned.
+ *
+ * Parameters:
+ *
+ * iFontID:
+ * A font for which to obtain variation information for.
+ *
+ * iVariationIndex:
+ * A value specifying an index into the array of variation axes
+ * for the font. This index identifies the font variation axis to
+ * examine. Because this index is zero-based, you must pass a
+ * value between 0 and one less than the value produced in the
+ * oVariationCount parameter of the function
+ * ATSUCountFontVariations.
+ *
+ * oATSUFontVariationAxis:
+ * On return, a four-character code identifying the font variation
+ * axis corresponding to the specified index. can be NULL
+ *
+ * oMinimumValue:
+ * On return, the variation axis minimum. can be NULL
+ *
+ * oMaximumValue:
+ * On return, the variation axis maximum. can be NULL
+ *
+ * oDefaultValue:
+ * On return, the variation axis default. can be NULL
+ *
+ * Result:
+ * On success, noErr is returned. See MacErrors.h for possible error
+ * codes.
+ *
+ * Availability:
+ * Mac OS X: in version 10.0 and later in ApplicationServices.framework
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Non-Carbon CFM: in ATSUnicodeLib 8.5 and later
+ }
+// AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER
+function ATSUGetIndFontVariation( iFontID: ATSUFontID; iVariationIndex: ItemCount; oATSUFontVariationAxis: ATSUFontVariationAxisPtr; oMinimumValue: ATSUFontVariationValuePtr; oMaximumValue: ATSUFontVariationValuePtr; oDefaultValue: ATSUFontVariationValuePtr ): OSStatus; external name '_ATSUGetIndFontVariation';
+
+
+{
+ * ATSUGetFontVariationNameCode()
+ *
+ * Summary:
+ * Obtains the name code for the font variation that matches an
+ * ASTUI font ID and font variation axis.
+ *
+ * Discussion:
+ * This function function obtains the name code for the font
+ * variation that matches an ASTUI font ID and font variation axis
+ * tag. You can use the function ATSUFindFontName to obtain the
+ * localized name string for the name code produced by
+ * ATSUGetFontVariationNameCode.
+ *
+ * Parameters:
+ *
+ * iFontID:
+ * The font for which to obtain a font variation name code.
+ *
+ * iAxis:
+ * An ATSUFontVariationAxis value representing a valid variation
+ * axis tag. To obtain a valid variation axis tag for a font, you
+ * can call the functions ATSUGetIndFontVariation or
+ * ATSUGetFontInstance.
+ *
+ * oNameCode:
+ * On return, the value contains the name code for the font
+ * variation. See the SFNTTypes.h header file for a definition of
+ * the FontNameCode type and a list of possible values.
+ *
+ * Result:
+ * On success, noErr is returned. See MacErrors.h for possible error
+ * codes.
+ *
+ * Availability:
+ * Mac OS X: in version 10.0 and later in ApplicationServices.framework
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Non-Carbon CFM: in ATSUnicodeLib 8.5 and later
+ }
+// AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER
+function ATSUGetFontVariationNameCode( iFontID: ATSUFontID; iAxis: ATSUFontVariationAxis; var oNameCode: FontNameCode ): OSStatus; external name '_ATSUGetFontVariationNameCode';
+
+
+{ ---------------------------------------------------------------------------- }
+{ Font Instances }
+{ ---------------------------------------------------------------------------- }
+{
+ * ATSUCountFontInstances()
+ *
+ * Summary:
+ * Obtains the number of defined font instances in a font.
+ *
+ * Discussion:
+ * This function obtains the total number of font instances defined
+ * in a font. You can use an index value derived from this count to
+ * get information about a specific font instance by calling the
+ * function ATSUGetFontInstance.
+ *
+ * Parameters:
+ *
+ * iFontID:
+ * The font for which to obtain a count of defined instances.
+ *
+ * oInstances:
+ * On return, the value specifies the number of font instances
+ * defined for the font.
+ *
+ * Result:
+ * On success, noErr is returned. See MacErrors.h for possible error
+ * codes.
+ *
+ * Availability:
+ * Mac OS X: in version 10.0 and later in ApplicationServices.framework
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Non-Carbon CFM: in ATSUnicodeLib 8.5 and later
+ }
+// AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER
+function ATSUCountFontInstances( iFontID: ATSUFontID; var oInstances: ItemCount ): OSStatus; external name '_ATSUCountFontInstances';
+
+
+{
+ * ATSUGetFontInstance()
+ *
+ * Summary:
+ * Obtains the font variation axis values for a font instance.
+ *
+ * Discussion:
+ * with a minimum value of 0.0, a default of 0.5, and a maximum of
+ * 1.0. Additionally, the variation axis 'wdth' is also defined for
+ * the font, with a similar value range. The type designer can then
+ * choose to declare a font instance for a set of specific values
+ * within these axes, such as ÒDemiboldÓ for a value of 0.8 for the
+ * 'wght' axis and 0.5 for the 'wdth' axis. By calling the function
+ * ATSUGetFontInstance , you can obtain the variation axis values
+ * for a given index into an array of font instances. Typically you
+ * use the function ATSUGetFontInstance by calling it twice, as
+ * follows: (1) Pass the ID of the font to examine in the iFont
+ * parameter, a valid pointer to an ItemCount value in the
+ * oActualVariationCount parameter, NULL for the oAxes and oValues
+ * parameters, and 0 for the other parameters. ATSUGetFontInstance
+ * returns the size to use for the oAxes and oValues arrays in the
+ * oActualVariationCount parameter. (2) Allocate enough space for
+ * arrays of the returned size, then call the ATSUGetFontInstance
+ * again, passing pointers to the arrays in the oAxes and oValues
+ * parameters. On return, the arrays contain the font variation axes
+ * and their corresponding values, respectively, for the font
+ * instance.
+ *
+ * Parameters:
+ *
+ * iFontID:
+ * The font for which to obtain instance information.
+ *
+ * iFontInstanceIndex:
+ * An index into an array of instances for the font. This index
+ * identifies the font instance to examine. Because this index is
+ * zero-based, you must pass a value between 0 and one less than
+ * the value produced in the oInstances parameter of the function
+ * ATSUCountFontInstances.
+ *
+ * iMaximumVariations:
+ * The maximum number of font variation axes to obtain for the
+ * font instance. Typically, this is equivalent to the number of
+ * ATSUFontVariationAxis and ATSUFontVariationValue values for
+ * which you have allocated memory in the oAxes and oValues
+ * parameters, respectively. To determine this value, see the
+ * Discussion.
+ *
+ * oAxes:
+ * On return, the array contains tags identifying the font
+ * variation axes that constitute the font instance. If you are
+ * uncertain of how much memory to allocate for this array, see
+ * the Discussion. can be NULL
+ *
+ * oValues:
+ * On return, the array contains the defined values for the font
+ * variation axes produced in the oAxes array. If you are
+ * uncertain of how much memory to allocate for this array, see
+ * the Discussion. can be NULL
+ *
+ * oActualVariationCount:
+ * On return, the actual number of font variation axes that
+ * constitute the font instance. This may be greater than the
+ * value you passed in the iMaximumVariations parameter.
+ *
+ * Result:
+ * On success, noErr is returned. See MacErrors.h for possible error
+ * codes.
+ *
+ * Availability:
+ * Mac OS X: in version 10.0 and later in ApplicationServices.framework
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Non-Carbon CFM: in ATSUnicodeLib 8.5 and later
+ }
+// AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER
+function ATSUGetFontInstance( iFontID: ATSUFontID; iFontInstanceIndex: ItemCount; iMaximumVariations: ItemCount; oAxes: ATSUFontVariationAxisPtr; oValues: ATSUFontVariationValuePtr; var oActualVariationCount: ItemCount ): OSStatus; external name '_ATSUGetFontInstance';
+
+
+{
+ * ATSUGetFontInstanceNameCode()
+ *
+ * Summary:
+ * Obtains the name code for the font instance that matches an ASTUI
+ * font ID and font instance index value.
+ *
+ * Discussion:
+ * A font instance consists of a named set of values for each
+ * variation axis in a font. The ATSUGetFontInstanceNameCode
+ * function obtains the name code for the font instance that matches
+ * an ASTUI font ID and font instance index value. You can use the
+ * function ATSUFindFontName to obtain the localized name string for
+ * the name code produced by ATSUGetFontInstanceNameCode. You can
+ * obtain the font variation axis values for a font instance by
+ * calling the function ATSUGetFontInstance.
+ *
+ * Parameters:
+ *
+ * iFontID:
+ * The font for which to obtain a font instance name code.
+ *
+ * iInstanceIndex:
+ * An index to the font instance for which to obtain a name code.
+ * Because this index must be 0-based, you should pass a value
+ * between 0 and one less than the count produced by the function
+ * ATSUCountFontInstances.
+ *
+ * oNameCode:
+ * On return, the name code for the font instance. See the
+ * SFNTTypes.h header file for a definition of the FontNameCode
+ * type and a list of possible values.
+ *
+ * Result:
+ * On success, noErr is returned. See MacErrors.h for possible error
+ * codes.
+ *
+ * Availability:
+ * Mac OS X: in version 10.0 and later in ApplicationServices.framework
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Non-Carbon CFM: in ATSUnicodeLib 8.5 and later
+ }
+// AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER
+function ATSUGetFontInstanceNameCode( iFontID: ATSUFontID; iInstanceIndex: ItemCount; var oNameCode: FontNameCode ): OSStatus; external name '_ATSUGetFontInstanceNameCode';
+
+end.