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 ) 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