FT_New_Face_From_FSSpec( FT_Library library, const FSSpec* spec, FT_Long face_index, FT_Face* aface ) { #if ( __LP64__ ) || ( defined( MAC_OS_X_VERSION_10_5 ) && \ ( MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5 ) ) FT_UNUSED( library ); FT_UNUSED( spec ); FT_UNUSED( face_index ); FT_UNUSED( aface ); return FT_THROW( Unimplemented_Feature ); #else FSRef ref; /* check of `library' and `aface' delayed to `FT_New_Face_From_FSRef' */ if ( !spec || FSpMakeFSRef( spec, &ref ) != noErr ) return FT_THROW( Invalid_Argument ); else return FT_New_Face_From_FSRef( library, &ref, face_index, aface ); #endif }
FT_New_Face_From_FSSpec( FT_Library library, const FSSpec* spec, FT_Long face_index, FT_Face* aface ) { #if HAVE_FSREF FSRef ref; if ( !spec || FSpMakeFSRef( spec, &ref ) != noErr ) return FT_THROW( Invalid_Argument ); else return FT_New_Face_From_FSRef( library, &ref, face_index, aface ); #elif HAVE_FSSPEC FT_Error error; FT_Open_Args args; OSErr err; UInt8 pathname[PATH_MAX]; if ( !spec ) return FT_THROW( Invalid_Argument ); err = FT_FSpMakePath( spec, pathname, sizeof ( pathname ) ); if ( err ) error = FT_ERR( Cannot_Open_Resource ); error = FT_New_Face_From_Resource( library, pathname, face_index, aface ); if ( error || *aface ) return error; /* fallback to datafork font */ args.flags = FT_OPEN_PATHNAME; args.pathname = (char*)pathname; return FT_Open_Face( library, &args, face_index, aface ); #else FT_UNUSED( library ); FT_UNUSED( spec ); FT_UNUSED( face_index ); FT_UNUSED( aface ); return FT_THROW( Unimplemented_Feature ); #endif /* HAVE_FSREF, HAVE_FSSPEC */ }