topical media & game development

talk show tell print

lib-of-vs-libs-QTDevWin-CIncludes-FontSync.h / h



  /*
       File:       FontSync.h
   
       Contains:   Public interface for FontSync
   
       Version:    Technology: Mac OS 9
                   Release:    QuickTime 6.0.2
   
       Copyright:  (c) 1999-2001 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 __FONTSYNC__
  define __FONTSYNC__
  
  ifndef __MACTYPES__
  include <MacTypes.h>
  endif
  
  ifndef __FILES__
  include <Files.h>
  endif
  
  ifndef __FONTS__
  include <Fonts.h>
  endif
  
  ifndef __SFNTTYPES__
  include <SFNTTypes.h>
  endif
  
  ifndef __MACERRORS__
  include <MacErrors.h>
  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=power
  #elif PRAGMA_STRUCT_PACKPUSH
      #pragma pack(push, 2)
  #elif PRAGMA_STRUCT_PACK
      #pragma pack(2)
  endif
  
  /* Matching Options */
  
  typedef UInt32 FNSMatchOptions;
  enum {
      kFNSMatchNames              = 0x00000001,                   /* font names must match */
      kFNSMatchTechnology         = 0x00000002,                   /* scaler technology must match */
      kFNSMatchGlyphs             = 0x00000004,                   /* glyph data must match */
      kFNSMatchEncodings          = 0x00000008,                   /* cmaps must match */
      kFNSMatchQDMetrics          = 0x00000010,                   /* QuickDraw Text metrics must match */
      kFNSMatchATSUMetrics        = 0x00000020,                   /* ATSUI metrics (incl. vertical) must match */
      kFNSMatchKerning            = 0x00000040,                   /* kerning data must match */
      kFNSMatchWSLayout           = 0x00000080,                   /* WorldScript layout tables must match */
      kFNSMatchAATLayout          = 0x00000100,                   /* AAT (incl. OpenType) layout tables must match */
      kFNSMatchPrintEncoding      = 0x00000200,                   /* PostScript font and glyph names and re-encoding vector must match */
      kFNSMissingDataNoMatch      = (unsigned long)0x80000000,    /* treat missing data as mismatch */
      kFNSMatchAll                = (unsigned long)0xFFFFFFFF,    /* everything must match */
      kFNSMatchDefaults           = 0                             /* use global default match options */
  };
  
  EXTERN_API_C( FNSMatchOptions )
  FNSMatchDefaultsGet             (void);
  
  /* Version control */
  
  typedef UInt32 FNSObjectVersion;
  enum {
      kFNSVersionDontCare         = 0,
      kFNSCurSysInfoVersion       = 1
  };
  
  /* No features defined yet.*/
  typedef UInt32                          FNSFeatureFlags;
  /*
     The FontSync library version number is binary-coded decimal:
     8 bits of major version, 4 minor version and 4 bits revision.
  */
  
  struct FNSSysInfo {
      FNSObjectVersion                iSysInfoVersion;            /* fill this in before calling FNSSysInfoGet*/
      FNSFeatureFlags                 oFeatures;
      FNSObjectVersion                oCurRefVersion;
      FNSObjectVersion                oMinRefVersion;
      FNSObjectVersion                oCurProfileVersion;
      FNSObjectVersion                oMinProfileVersion;
      UInt16                          oFontSyncVersion;
  };
  typedef struct FNSSysInfo               FNSSysInfo;
  EXTERN_API_C( void )
  FNSSysInfoGet                   (FNSSysInfo *           ioInfo);
  
  /* FontSync References */
  typedef struct OpaqueFNSFontReference*  FNSFontReference;
  EXTERN_API_C( OSStatus )
  FNSReferenceGetVersion          (FNSFontReference       iReference,
                                   FNSObjectVersion *     oVersion);
  
  EXTERN_API_C( OSStatus )
  FNSReferenceDispose             (FNSFontReference       iReference);
  
  EXTERN_API_C( OSStatus )
  FNSReferenceMatch               (FNSFontReference       iReference1,
                                   FNSFontReference       iReference2,
                                   FNSMatchOptions        iOptions,
                                   FNSMatchOptions *      oFailedMatchOptions) /* can be NULL */;
  
  EXTERN_API_C( OSStatus )
  FNSReferenceFlattenedSize       (FNSFontReference       iReference,
                                   ByteCount *            oFlattenedSize);
  
  EXTERN_API_C( OSStatus )
  FNSReferenceFlatten             (FNSFontReference       iReference,
                                   void *                 oFlatReference, /* can be NULL */
                                   ByteCount *            oFlattenedSize) /* can be NULL */;
  
  EXTERN_API_C( OSStatus )
  FNSReferenceUnflatten           (const void *           iFlatReference,
                                   ByteCount              iFlattenedSize,
                                   FNSFontReference *     oReference);
  
  /* FontSync Profiles */
  enum {
      kFNSCreatorDefault          = 0,
      kFNSProfileFileType         = FOUR_CHAR_CODE('fnsp')
  };
  
  typedef struct OpaqueFNSFontProfile*    FNSFontProfile;
  EXTERN_API_C( OSStatus )
  FNSProfileCreate                (const FSSpec *         iFile,
                                   FourCharCode           iCreator,
                                   ItemCount              iEstNumRefs,
                                   FNSObjectVersion       iDesiredVersion,
                                   FNSFontProfile *       oProfile);
  
  EXTERN_API_C( OSStatus )
  FNSProfileOpen                  (const FSSpec *         iFile,
                                   Boolean                iOpenForWrite,
                                   FNSFontProfile *       oProfile);
  
  EXTERN_API_C( OSStatus )
  FNSProfileGetVersion            (FNSFontProfile         iProfile,
                                   FNSObjectVersion *     oVersion);
  
  EXTERN_API_C( OSStatus )
  FNSProfileCompact               (FNSFontProfile         iProfile);
  
  EXTERN_API_C( OSStatus )
  FNSProfileClose                 (FNSFontProfile         iProfile);
  
  EXTERN_API_C( OSStatus )
  FNSProfileAddReference          (FNSFontProfile         iProfile,
                                   FNSFontReference       iReference);
  
  EXTERN_API_C( OSStatus )
  FNSProfileRemoveReference       (FNSFontProfile         iProfile,
                                   FNSFontReference       iReference);
  
  EXTERN_API_C( OSStatus )
  FNSProfileRemoveIndReference    (FNSFontProfile         iProfile,
                                   UInt32                 iIndex);
  
  EXTERN_API_C( OSStatus )
  FNSProfileClear                 (FNSFontProfile         iProfile);
  
  EXTERN_API_C( OSStatus )
  FNSProfileCountReferences       (FNSFontProfile         iProfile,
                                   ItemCount *            oCount);
  
  EXTERN_API_C( OSStatus )
  FNSProfileGetIndReference       (FNSFontProfile         iProfile,
                                   UInt32                 iWhichReference,
                                   FNSFontReference *     oReference);
  
  EXTERN_API_C( OSStatus )
  FNSProfileMatchReference        (FNSFontProfile         iProfile,
                                   FNSFontReference       iReference,
                                   FNSMatchOptions        iMatchOptions,
                                   ItemCount              iOutputSize,
                                   UInt32                 oIndices[], /* can be NULL */
                                   ItemCount *            oNumMatches) /* can be NULL */;
  
  /* Mapping to and from Font Objects */
  EXTERN_API_C( OSStatus )
  FNSReferenceCreate              (FMFont                 iFont,
                                   FNSObjectVersion       iDesiredVersion,
                                   FNSFontReference *     oReference);
  
  EXTERN_API_C( OSStatus )
  FNSReferenceMatchFonts          (FNSFontReference       iReference,
                                   FNSMatchOptions        iMatchOptions,
                                   ItemCount              iOutputSize,
                                   FMFont                 oFonts[], /* can be NULL */
                                   ItemCount *            oNumMatches) /* can be NULL */;
  
  /* Mapping to and from Font Families */
  EXTERN_API_C( OSStatus )
  FNSReferenceCreateFromFamily    (FMFontFamily           iFamily,
                                   FMFontStyle            iStyle,
                                   FNSObjectVersion       iDesiredVersion,
                                   FNSFontReference *     oReference, /* can be NULL */
                                   FMFontStyle *          oActualStyle) /* can be NULL */;
  
  EXTERN_API_C( OSStatus )
  FNSReferenceMatchFamilies       (FNSFontReference       iReference,
                                   FNSMatchOptions        iMatchOptions,
                                   ItemCount              iOutputSize,
                                   FMFontFamilyInstance   oFonts[], /* can be NULL */
                                   ItemCount *            oNumMatches) /* can be NULL */;
  
  /* UI Support */
  EXTERN_API_C( OSStatus )
  FNSReferenceGetFamilyInfo       (FNSFontReference       iReference,
                                   Str255                 oFamilyName, /* can be NULL */
                                   ScriptCode *           oFamilyNameScript, /* can be NULL */
                                   FMFontStyle *          oActualStyle) /* can be NULL */;
  
  EXTERN_API_C( OSStatus )
  FNSReferenceCountNames          (FNSFontReference       iReference,
                                   ItemCount *            oNameCount);
  
  EXTERN_API_C( OSStatus )
  FNSReferenceGetIndName          (FNSFontReference       iReference,
                                   ItemCount              iFontNameIndex,
                                   ByteCount              iMaximumNameLength,
                                   Ptr                    oName, /* can be NULL */
                                   ByteCount *            oActualNameLength, /* can be NULL */
                                   FontNameCode *         oFontNameCode, /* can be NULL */
                                   FontPlatformCode *     oFontNamePlatform, /* can be NULL */
                                   FontScriptCode *       oFontNameScript, /* can be NULL */
                                   FontLanguageCode *     oFontNameLanguage) /* can be NULL */;
  
  EXTERN_API_C( OSStatus )
  FNSReferenceFindName            (FNSFontReference       iReference,
                                   FontNameCode           iFontNameCode,
                                   FontPlatformCode       iFontNamePlatform,
                                   FontScriptCode         iFontNameScript,
                                   FontLanguageCode       iFontNameLanguage,
                                   ByteCount              iMaximumNameLength,
                                   Ptr                    oName, /* can be NULL */
                                   ByteCount *            oActualNameLength, /* can be NULL */
                                   ItemCount *            oFontNameIndex) /* can be NULL */;
  
  /* Miscellany */
  if CALL_NOT_IN_CARBON
  EXTERN_API_C( Boolean )
  FNSEnabled                      (void);
  
  endif  /* CALL_NOT_IN_CARBON */
  
  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 /* __FONTSYNC__ */
  
  


(C) Æliens 04/09/2009

You may not copy or print any of this material without explicit permission of the author or the publisher. In case of other copyright issues, contact the author.