/* File: ATSFont.h Contains: Public interface to the font access and data management functions of ATS. Version: QuickTime 7.3 Copyright: (c) 2007 (C) 2000-2002 by Apple Computer, Inc., all rights reserved. Bugs?: For bug reports, consult the following page on the World Wide Web: http://developer.apple.com/bugreporter/ */ #ifndef __ATSFONT__ #define __ATSFONT__ #ifndef __MACTYPES__ #include #endif #ifndef __CFSTRING__ #include #endif #ifndef __CFMESSAGEPORT__ #include #endif #ifndef __FILES__ #include #endif #ifndef __TEXTCOMMON__ #include #endif #ifndef __ATSTYPES__ #include #endif #ifndef __SFNTTYPES__ #include #endif #if PRAGMA_ONCE #pragma once #endif #ifdef __cplusplus extern "C" { #endif #if PRAGMA_IMPORT #pragma import on #endif #if PRAGMA_STRUCT_ALIGN #pragma options align=mac68k #elif PRAGMA_STRUCT_PACKPUSH #pragma pack(push, 2) #elif PRAGMA_STRUCT_PACK #pragma pack(2) #endif #if PRAGMA_ENUM_ALWAYSINT #if defined(__fourbyteints__) && !__fourbyteints__ #define __ATSFONT__RESTORE_TWOBYTEINTS #pragma fourbyteints on #endif #pragma enumsalwaysint on #elif PRAGMA_ENUM_OPTIONS #pragma option enum=int #elif PRAGMA_ENUM_PACK #if __option(pack_enums) #define __ATSFONT__RESTORE_PACKED_ENUMS #pragma options(!pack_enums) #endif #endif enum { kATSOptionFlagsDefault = kNilOptions, kATSOptionFlagsComposeFontPostScriptName = 1 << 0, /* ATSFontGetPostScriptName */ kATSOptionFlagsUseDataForkAsResourceFork = 1 << 8, /* ATSFontActivateFromFileSpecification */ kATSOptionFlagsUseResourceFork = 2 << 8, kATSOptionFlagsUseDataFork = 3 << 8 }; enum { kATSIterationCompleted = -980L, kATSInvalidFontFamilyAccess = -981L, kATSInvalidFontAccess = -982L, kATSIterationScopeModified = -983L, kATSInvalidFontTableAccess = -984L, kATSInvalidFontContainerAccess = -985L }; /* Activation Option Flags */ typedef UInt32 ATSFontContext; enum { kATSFontContextUnspecified = 0, kATSFontContextGlobal = 1, kATSFontContextLocal = 2 }; enum { kATSOptionFlagsDoNotNotify = 0x00000001 << 8, /* Do not notify after global activation/deactivation */ kATSOptionFlagsIterationScopeMask = 0x00000007 << 12, /* Mask option bits 12-14 for iteration scopes */ kATSOptionFlagsDefaultScope = 0x00000000 << 12, kATSOptionFlagsUnRestrictedScope = 0x00000001 << 12, kATSOptionFlagsRestrictedScope = 0x00000002 << 12, kATSOptionFlagsProcessSubdirectories = 0x00000001 << 6 }; /* Iteration Option Flags */ enum { kATSOptionFlagsIterateByPrecedenceMask = 0x00000001 << 5 }; typedef UInt32 ATSFontFormat; enum { kATSFontFormatUnspecified = 0 }; typedef CALLBACK_API_C( OSStatus , ATSFontFamilyApplierFunction )(ATSFontFamilyRef iFamily, void *iRefCon); typedef CALLBACK_API_C( OSStatus , ATSFontApplierFunction )(ATSFontRef iFont, void *iRefCon); typedef struct ATSFontFamilyIterator_* ATSFontFamilyIterator; typedef struct ATSFontIterator_* ATSFontIterator; enum { kATSFontFilterCurrentVersion = 0 }; enum ATSFontFilterSelector { kATSFontFilterSelectorUnspecified = 0, kATSFontFilterSelectorGeneration = 3, kATSFontFilterSelectorFontFamily = 7, kATSFontFilterSelectorFontFamilyApplierFunction = 8, kATSFontFilterSelectorFontApplierFunction = 9 }; typedef enum ATSFontFilterSelector ATSFontFilterSelector; struct ATSFontFilter { UInt32 version; ATSFontFilterSelector filterSelector; union { ATSGeneration generationFilter; ATSFontFamilyRef fontFamilyFilter; ATSFontFamilyApplierFunction fontFamilyApplierFunctionFilter; ATSFontApplierFunction fontApplierFunctionFilter; } filter; }; typedef struct ATSFontFilter ATSFontFilter; /* Notification related */ typedef struct ATSFontNotificationRef_* ATSFontNotificationRef; typedef struct ATSFontNotificationInfoRef_* ATSFontNotificationInfoRef; /* * ATSFontNotifyOption * * Discussion: * Options used with ATSFontNotificationSubscribe. Any of the * options that follow may be used together in order to alter the * default behavior of ATS notifications. */ enum ATSFontNotifyOption { /* * Default behavior of ATSFontNotificationSubscribe. */ kATSFontNotifyOptionDefault = 0, /* * Normally applications will only receive ATS notifications while in * the foreground. If suspended, the notification will be delivered * when then application comes to the foreground. This is the * default. You should set this option if you are a server or tool * that performs font management functions and require immediate * notification when something changes. */ kATSFontNotifyOptionReceiveWhileSuspended = 1L << 0 }; typedef enum ATSFontNotifyOption ATSFontNotifyOption; /* * ATSFontNotifyAction * * Discussion: * Used with ATSFontNotify. The following is a list of actions you * might wish the ATS server to perform and notify clients if * appropriate. */ enum ATSFontNotifyAction { /* * Used after a batch (de)activation of fonts occurs. Typically the * caller has exercised multiple global (De)Activation calls with the * kATSOptionFlagsDoNotNotify set. Once all calls are completed, one * may use ATSFontNotify with this action to ask ATS to notify all * clients. */ kATSFontNotifyActionFontsChanged = 1, /* * The ATS system with the help of the Finder keeps track of changes * to any of the fonts directories ( System, Local, Network, User, & * Classic). However, one may wish to add/remove fonts to these * locations programmatically. This action is used to let ATS * server to rescan these directories and post notifications if * necessary. */ kATSFontNotifyActionDirectoriesChanged = 2 }; typedef enum ATSFontNotifyAction ATSFontNotifyAction; /* * ATSNotificationCallback * * Discussion: * Callback delivered for ATS notifications. * * Parameters: * * info: * Parameter is placed here for future improvements. Initially * the contents of this parameter will be NULL. * * refCon: * User data/state to be supplied to callback function */ typedef CALLBACK_API_C( void , ATSNotificationCallback )(ATSFontNotificationInfoRef info, void *refCon); /* ----------------------------------------------------------------------------------------- */ /* Font container */ /* ----------------------------------------------------------------------------------------- */ /* * ATSGetGeneration() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available in CarbonLib 1.x, is available on Mac OS X version 10.0 and later * Mac OS X: in version 10.0 and later */ EXTERN_API_C( ATSGeneration ) ATSGetGeneration(void); /* * ATSFontActivateFromFileSpecification() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available in CarbonLib 1.x, is available on Mac OS X version 10.0 and later * Mac OS X: in version 10.0 and later */ EXTERN_API_C( OSStatus ) ATSFontActivateFromFileSpecification( const FSSpec * iFile, ATSFontContext iContext, ATSFontFormat iFormat, void * iReserved, ATSOptionFlags iOptions, ATSFontContainerRef * oContainer); /* * ATSFontActivateFromMemory() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available in CarbonLib 1.x, is available on Mac OS X version 10.0 and later * Mac OS X: in version 10.0 and later */ EXTERN_API_C( OSStatus ) ATSFontActivateFromMemory( LogicalAddress iData, ByteCount iLength, ATSFontContext iContext, ATSFontFormat iFormat, void * iReserved, ATSOptionFlags iOptions, ATSFontContainerRef * oContainer); /* * ATSFontDeactivate() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available in CarbonLib 1.x, is available on Mac OS X version 10.0 and later * Mac OS X: in version 10.0 and later */ EXTERN_API_C( OSStatus ) ATSFontDeactivate( ATSFontContainerRef iContainer, void * iRefCon, ATSOptionFlags iOptions); /* ----------------------------------------------------------------------------------------- */ /* Font family */ /* ----------------------------------------------------------------------------------------- */ /* * ATSFontFamilyApplyFunction() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available in CarbonLib 1.x, is available on Mac OS X version 10.0 and later * Mac OS X: in version 10.0 and later */ EXTERN_API_C( OSStatus ) ATSFontFamilyApplyFunction( ATSFontFamilyApplierFunction iFunction, void * iRefCon); /* * ATSFontFamilyIteratorCreate() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available in CarbonLib 1.x, is available on Mac OS X version 10.0 and later * Mac OS X: in version 10.0 and later */ EXTERN_API_C( OSStatus ) ATSFontFamilyIteratorCreate( ATSFontContext iContext, const ATSFontFilter * iFilter, /* can be NULL */ void * iRefCon, ATSOptionFlags iOptions, ATSFontFamilyIterator * ioIterator); /* * ATSFontFamilyIteratorRelease() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available in CarbonLib 1.x, is available on Mac OS X version 10.0 and later * Mac OS X: in version 10.0 and later */ EXTERN_API_C( OSStatus ) ATSFontFamilyIteratorRelease(ATSFontFamilyIterator * ioIterator); /* * ATSFontFamilyIteratorReset() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available in CarbonLib 1.x, is available on Mac OS X version 10.0 and later * Mac OS X: in version 10.0 and later */ EXTERN_API_C( OSStatus ) ATSFontFamilyIteratorReset( ATSFontContext iContext, const ATSFontFilter * iFilter, /* can be NULL */ void * iRefCon, ATSOptionFlags iOptions, ATSFontFamilyIterator * ioIterator); /* * ATSFontFamilyIteratorNext() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available in CarbonLib 1.x, is available on Mac OS X version 10.0 and later * Mac OS X: in version 10.0 and later */ EXTERN_API_C( OSStatus ) ATSFontFamilyIteratorNext( ATSFontFamilyIterator iIterator, ATSFontFamilyRef * oFamily); /* * ATSFontFamilyFindFromName() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available in CarbonLib 1.x, is available on Mac OS X version 10.0 and later * Mac OS X: in version 10.0 and later */ EXTERN_API_C( ATSFontFamilyRef ) ATSFontFamilyFindFromName( CFStringRef iName, ATSOptionFlags iOptions); /* * ATSFontFamilyGetGeneration() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available in CarbonLib 1.x, is available on Mac OS X version 10.0 and later * Mac OS X: in version 10.0 and later */ EXTERN_API_C( ATSGeneration ) ATSFontFamilyGetGeneration(ATSFontFamilyRef iFamily); /* * ATSFontFamilyGetName() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available in CarbonLib 1.x, is available on Mac OS X version 10.0 and later * Mac OS X: in version 10.0 and later */ EXTERN_API_C( OSStatus ) ATSFontFamilyGetName( ATSFontFamilyRef iFamily, ATSOptionFlags iOptions, CFStringRef * oName); /* * ATSFontFamilyGetEncoding() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available in CarbonLib 1.x, is available on Mac OS X version 10.0 and later * Mac OS X: in version 10.0 and later */ EXTERN_API_C( TextEncoding ) ATSFontFamilyGetEncoding(ATSFontFamilyRef iFamily); /* ----------------------------------------------------------------------------------------- */ /* Font */ /* ----------------------------------------------------------------------------------------- */ /* * ATSFontApplyFunction() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available in CarbonLib 1.x, is available on Mac OS X version 10.0 and later * Mac OS X: in version 10.0 and later */ EXTERN_API_C( OSStatus ) ATSFontApplyFunction( ATSFontApplierFunction iFunction, void * iRefCon); /* * ATSFontIteratorCreate() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available in CarbonLib 1.x, is available on Mac OS X version 10.0 and later * Mac OS X: in version 10.0 and later */ EXTERN_API_C( OSStatus ) ATSFontIteratorCreate( ATSFontContext iContext, const ATSFontFilter * iFilter, /* can be NULL */ void * iRefCon, ATSOptionFlags iOptions, ATSFontIterator * ioIterator); /* * ATSFontIteratorRelease() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available in CarbonLib 1.x, is available on Mac OS X version 10.0 and later * Mac OS X: in version 10.0 and later */ EXTERN_API_C( OSStatus ) ATSFontIteratorRelease(ATSFontIterator * ioIterator); /* * ATSFontIteratorReset() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available in CarbonLib 1.x, is available on Mac OS X version 10.0 and later * Mac OS X: in version 10.0 and later */ EXTERN_API_C( OSStatus ) ATSFontIteratorReset( ATSFontContext iContext, const ATSFontFilter * iFilter, /* can be NULL */ void * iRefCon, ATSOptionFlags iOptions, ATSFontIterator * ioIterator); /* * ATSFontIteratorNext() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available in CarbonLib 1.x, is available on Mac OS X version 10.0 and later * Mac OS X: in version 10.0 and later */ EXTERN_API_C( OSStatus ) ATSFontIteratorNext( ATSFontIterator iIterator, ATSFontRef * oFont); /* * ATSFontFindFromName() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available in CarbonLib 1.x, is available on Mac OS X version 10.0 and later * Mac OS X: in version 10.0 and later */ EXTERN_API_C( ATSFontRef ) ATSFontFindFromName( CFStringRef iName, ATSOptionFlags iOptions); /* * ATSFontFindFromPostScriptName() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available in CarbonLib 1.x, is available on Mac OS X version 10.0 and later * Mac OS X: in version 10.0 and later */ EXTERN_API_C( ATSFontRef ) ATSFontFindFromPostScriptName( CFStringRef iName, ATSOptionFlags iOptions); /* * ATSFontFindFromContainer() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available in CarbonLib 1.x, is available on Mac OS X version 10.0 and later * Mac OS X: in version 10.0 and later */ EXTERN_API_C( OSStatus ) ATSFontFindFromContainer( ATSFontContainerRef iContainer, ATSOptionFlags iOptions, ItemCount iCount, ATSFontRef ioArray[], ItemCount * oCount); /* * ATSFontGetGeneration() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available in CarbonLib 1.x, is available on Mac OS X version 10.0 and later * Mac OS X: in version 10.0 and later */ EXTERN_API_C( ATSGeneration ) ATSFontGetGeneration(ATSFontRef iFont); /* * ATSFontGetName() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available in CarbonLib 1.x, is available on Mac OS X version 10.0 and later * Mac OS X: in version 10.0 and later */ EXTERN_API_C( OSStatus ) ATSFontGetName( ATSFontRef iFont, ATSOptionFlags iOptions, CFStringRef * oName); /* * ATSFontGetPostScriptName() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available in CarbonLib 1.x, is available on Mac OS X version 10.0 and later * Mac OS X: in version 10.0 and later */ EXTERN_API_C( OSStatus ) ATSFontGetPostScriptName( ATSFontRef iFont, ATSOptionFlags iOptions, CFStringRef * oName); /* * ATSFontGetTableDirectory() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available in CarbonLib 1.x, is available on Mac OS X version 10.0 and later * Mac OS X: in version 10.0 and later */ EXTERN_API_C( OSStatus ) ATSFontGetTableDirectory( ATSFontRef iFont, ByteCount iBufferSize, void * ioBuffer, ByteCount * oSize); /* can be NULL */ /* * ATSFontGetTable() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available in CarbonLib 1.x, is available on Mac OS X version 10.0 and later * Mac OS X: in version 10.0 and later */ EXTERN_API_C( OSStatus ) ATSFontGetTable( ATSFontRef iFont, FourCharCode iTag, ByteOffset iOffset, ByteCount iBufferSize, void * ioBuffer, ByteCount * oSize); /* can be NULL */ /* * ATSFontGetHorizontalMetrics() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available in CarbonLib 1.x, is available on Mac OS X version 10.0 and later * Mac OS X: in version 10.0 and later */ EXTERN_API_C( OSStatus ) ATSFontGetHorizontalMetrics( ATSFontRef iFont, ATSOptionFlags iOptions, ATSFontMetrics * oMetrics); /* * ATSFontGetVerticalMetrics() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available in CarbonLib 1.x, is available on Mac OS X version 10.0 and later * Mac OS X: in version 10.0 and later */ EXTERN_API_C( OSStatus ) ATSFontGetVerticalMetrics( ATSFontRef iFont, ATSOptionFlags iOptions, ATSFontMetrics * oMetrics); /* ----------------------------------------------------------------------------------------- */ /* Compatibility */ /* ----------------------------------------------------------------------------------------- */ /* * ATSFontFamilyFindFromQuickDrawName() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available in CarbonLib 1.x, is available on Mac OS X version 10.0 and later * Mac OS X: in version 10.0 and later */ EXTERN_API_C( ATSFontFamilyRef ) ATSFontFamilyFindFromQuickDrawName(ConstStr255Param iName); /* * ATSFontFamilyGetQuickDrawName() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available in CarbonLib 1.x, is available on Mac OS X version 10.0 and later * Mac OS X: in version 10.0 and later */ EXTERN_API_C( OSStatus ) ATSFontFamilyGetQuickDrawName( ATSFontFamilyRef iFamily, Str255 oName); /* * ATSFontGetFileSpecification() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available in CarbonLib 1.x, is available on Mac OS X version 10.0 and later * Mac OS X: in version 10.0 and later */ EXTERN_API_C( OSStatus ) ATSFontGetFileSpecification( ATSFontRef iFont, FSSpec * oFile); /* * ATSFontGetFontFamilyResource() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available in CarbonLib 1.x, is available on Mac OS X version 10.0 and later * Mac OS X: in version 10.0 and later */ EXTERN_API_C( OSStatus ) ATSFontGetFontFamilyResource( ATSFontRef iFont, ByteCount iBufferSize, void * ioBuffer, ByteCount * oSize); /* can be NULL */ /* ----------------------------------------------------------------------------------------- */ /* Notification */ /* ----------------------------------------------------------------------------------------- */ /* * ATSFontNotify() * * Summary: * Used to alert ATS that an action which may require notification * to clients has occurred. * * Parameters: * * action: * Action that should be taken by the ATS Server * * info: * Any required or optional information that may be required by * the action taken. * * Result: * noErr Action successfully reported paramErr Invalid action passed * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available in CarbonLib 1.x, is available on Mac OS X version 10.2 and later * Mac OS X: in version 10.2 and later */ EXTERN_API_C( OSStatus ) ATSFontNotify( ATSFontNotifyAction action, void * info); /* can be NULL */ /* * ATSFontNotificationSubscribe() * * Summary: * Ask the ATS System to notify caller when certain events have * occurred. Note that your application must have a CFRunLoop in * order to receive notifications. Any Appkit or Carbon event loop * based application will have one by default. * * Parameters: * * callback: * Function that will be called by the ATS system whenever an * event of interest takes place. * * options: * Set the wanted ATSFontNotificationOptions to modify the default * behavior of ATS Notifications. * * iRefcon: * User data/state which will be passed to the callback funtion * * oNotificationRef: * You may use this reference to un-subscribe to this notification. * * Result: * noErr Subscribed successfully paramErr NULL callback was passed. * memFullErr Could not allocate enough memory for internal data * structures. * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available in CarbonLib 1.x, is available on Mac OS X version 10.2 and later * Mac OS X: in version 10.2 and later */ EXTERN_API_C( OSStatus ) ATSFontNotificationSubscribe( ATSNotificationCallback callback, ATSFontNotifyOption options, void * iRefcon, /* can be NULL */ ATSFontNotificationRef * oNotificationRef); /* can be NULL */ /* * ATSFontNotificationUnsubscribe() * * Summary: * Release subscription and stop receiving notifications for a given * reference. * * Parameters: * * notificationRef: * Notification reference for which you want to stop receiving * notifications. Note, if more than one notification has been * requested of ATS, you will still receive notifications on those * requests. * * Result: * noErr Unsubscribed successfully paramErr NULL/invalid * notificationRef passed * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available in CarbonLib 1.x, is available on Mac OS X version 10.2 and later * Mac OS X: in version 10.2 and later */ EXTERN_API_C( OSStatus ) ATSFontNotificationUnsubscribe(ATSFontNotificationRef notificationRef); /* ----------------------------------------------------------------------------------------- */ /* Font query message hooks */ /* ----------------------------------------------------------------------------------------- */ /* * ATSFontQuerySourceContext * * Summary: * A parameter block for client information to be retained by ATS * and passed back to an ATSFontQueryCallback function. */ struct ATSFontQuerySourceContext { /* * A 32-bit unsigned integer that indicates the version of this * structure. This should be set to 0. */ UInt32 version; /* * A pointer-sized client datum that should be passed back to an * ATSFontQueryCallback function. */ void * refCon; /* * The callback used to add a retain to the refCon. */ CFAllocatorRetainCallBack retain; /* * The callback used to remove a retain to the refCon. */ CFAllocatorReleaseCallBack release; }; typedef struct ATSFontQuerySourceContext ATSFontQuerySourceContext; /* * ATSFontQueryMessageID * * Discussion: * Constants for ATS font query message types. */ enum ATSFontQueryMessageID { /* * The message ID for a font request query. The data for a message * with this ID is a flattened CFDictionaryRef with keys and values * as decribed below. A query dictionary may have any or all of these * entries. */ kATSQueryActivateFontMessage = FOUR_CHAR_CODE('atsa') }; typedef enum ATSFontQueryMessageID ATSFontQueryMessageID; /* * ATSFontQueryCallback * * Summary: * Callback for receiving font-related queries from ATS. * * Parameters: * * msgid: * An ATSFontQueryMessageID that identifies the message type. * * data: * A CFPropertyListRef that represents the query. The content is * message type-specific. * * refCon: * A pointer-sized client datum that was optionally provided to * ATSCreateFontQueryRunLoopSource. * * Result: * A CFPropertyListRef that represents the message type-specific * response to the query. May be NULL. */ typedef CALLBACK_API_C( CFPropertyListRef , ATSFontQueryCallback )(ATSFontQueryMessageID msgid, CFPropertyListRef data, void *refCon); /* * ATSCreateFontQueryRunLoopSource() * * Summary: * Creates a CFRunLoopSourceRef that will be used to convey font * queries from ATS. * * Parameters: * * queryOrder: * A CFIndex that specifies the priority of this query receiver * relative to others. When ATS makes a font query, it will send * the query to each receiver in priority order, from highest to * lowest. "Normal" priority is 0. * * sourceOrder: * The order of the created run loop source. * * callout: * A function pointer of type ATSFontQueryCallback that will be * called to process a font query. * * context: * An ATSFontQuerySourceContext parameter block that provides a * pointer-sized client datum which will be retained by ATS and * passed to the callout function. May be NULL. * * Result: * A CFRunLoopSourceRef. To stop receiving queries, invalidate this * run loop source. * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: in version 10.2 and later */ EXTERN_API_C( CFRunLoopSourceRef ) ATSCreateFontQueryRunLoopSource( CFIndex queryOrder, CFIndex sourceOrder, ATSFontQueryCallback callout, const ATSFontQuerySourceContext * context); /* can be NULL */ /* ----------------------------------------------------------------------------------------- */ /* Font request query message content */ /* ----------------------------------------------------------------------------------------- */ /* Keys in a font request query dictionary. */ /* These keys appear in the dictionary for a kATSQueryActivateFontMessage query. */ /* * kATSQueryClientPID * * Discussion: * The process ID of the application making the query. The * corresponding value is a CFNumberRef that contains a pid_t. */ #define kATSQueryClientPID CFSTR("ATS client pid") /* * kATSQueryQDFamilyName * * Discussion: * The Quickdraw-style family name of the font being requested, e.g. * the name passed to GetFNum. The corresponding value is a * CFStringRef. */ #define kATSQueryQDFamilyName CFSTR("font family name") /* * kATSQueryFontName * * Discussion: * The name of the font being requested. The corresponding value is * a CFStringRef suitable as an argument to ATSFontFindFromName(). * This should match a candidate font's unique or full name. */ #define kATSQueryFontName CFSTR("font name") /* * kATSQueryFontPostScriptName * * Discussion: * The PostScript name of the font being requested. The * corresponding value is a CFStringRef suitable as an argument to * ATSFontFindFromPostScriptName(). This should match either the * PostScript name derived from the font's FOND resource or its sfnt * name table, with preference given to the FOND PostScript name. */ #define kATSQueryFontPostScriptName CFSTR("font PS name") /* * kATSQueryFontNameTableEntries * * Discussion: * A descriptor for sfnt name table entries that the requested font * must have. The corresponding value is a CFArrayRef of * CFDictionaryRefs that describe name table entries. A font must * have all of the specified entries to be considered a match. */ #define kATSQueryFontNameTableEntries CFSTR("font name table entries") /* Keys in a font raw name descriptor dictionary. */ /* * kATSFontNameTableCode * * Discussion: * The font name's name code. The corresponding value is a * CFNumberRef. If missing, assume kFontNoNameCode. */ #define kATSFontNameTableCode CFSTR("font name code") /* * kATSFontNameTablePlatform * * Discussion: * The font name's platform code. The corresponding value is a * CFNumberRef. If missing, assume kFontNoPlatformCode. */ #define kATSFontNameTablePlatform CFSTR("font platform code") /* * kATSFontNameTableScript * * Discussion: * The font name's script code. The corresponding value is a * CFNumberRef. If missing, assume kFontNoScriptCode. */ #define kATSFontNameTableScript CFSTR("font script code") /* * kATSFontNameTableLanguage * * Discussion: * The font name's language code. The corresponding value is a * CFNumberRef. If missing, assume kFontNoLanguageCode. */ #define kATSFontNameTableLanguage CFSTR("font language code") /* * kATSFontNameTableBytes * * Discussion: * The raw bytes of the font name. The corresponding value is a * CFDataRef that contains the raw name bytes. */ #define kATSFontNameTableBytes CFSTR("font name table bytes") #if PRAGMA_ENUM_ALWAYSINT #pragma enumsalwaysint reset #ifdef __ATSFONT__RESTORE_TWOBYTEINTS #pragma fourbyteints off #endif #elif PRAGMA_ENUM_OPTIONS #pragma option enum=reset #elif defined(__ATSFONT__RESTORE_PACKED_ENUMS) #pragma options(pack_enums) #endif #if PRAGMA_STRUCT_ALIGN #pragma options align=reset #elif PRAGMA_STRUCT_PACKPUSH #pragma pack(pop) #elif PRAGMA_STRUCT_PACK #pragma pack() #endif #ifdef PRAGMA_IMPORT_OFF #pragma import off #elif PRAGMA_IMPORT #pragma import reset #endif #ifdef __cplusplus } #endif #endif /* __ATSFONT__ */