1 /***************************************************************************/ 2 /* */ 3 /* ftfstype.c */ 4 /* */ 5 /* FreeType utility file to access FSType data (body). */ 6 /* */ 7 /* Copyright 2008-2017 by */ 8 /* David Turner, Robert Wilhelm, and Werner Lemberg. */ 9 /* */ 10 /* This file is part of the FreeType project, and may only be used, */ 11 /* modified, and distributed under the terms of the FreeType project */ 12 /* license, LICENSE.TXT. By continuing to use, modify, or distribute */ 13 /* this file you indicate that you have read the license and */ 14 /* understand and accept it fully. */ 15 /* */ 16 /***************************************************************************/ 17 18 #include <ft2build.h> 19 #include FT_TYPE1_TABLES_H 20 #include FT_TRUETYPE_TABLES_H 21 #include FT_INTERNAL_SERVICE_H 22 #include FT_SERVICE_POSTSCRIPT_INFO_H 23 24 25 /* documentation is in freetype.h */ 26 27 FT_EXPORT_DEF( FT_UShort ) FT_Get_FSType_Flags(FT_Face face)28 FT_Get_FSType_Flags( FT_Face face ) 29 { 30 TT_OS2* os2; 31 32 33 /* first, try to get the fs_type directly from the font */ 34 if ( face ) 35 { 36 FT_Service_PsInfo service = NULL; 37 38 39 FT_FACE_FIND_SERVICE( face, service, POSTSCRIPT_INFO ); 40 41 if ( service && service->ps_get_font_extra ) 42 { 43 PS_FontExtraRec extra; 44 45 46 if ( !service->ps_get_font_extra( face, &extra ) && 47 extra.fs_type != 0 ) 48 return extra.fs_type; 49 } 50 } 51 52 /* look at FSType before fsType for Type42 */ 53 54 if ( ( os2 = (TT_OS2*)FT_Get_Sfnt_Table( face, FT_SFNT_OS2 ) ) != NULL && 55 os2->version != 0xFFFFU ) 56 return os2->fsType; 57 58 return 0; 59 } 60 61 62 /* END */ 63