1 /**************************************************************************** 2 * 3 * ftfstype.c 4 * 5 * FreeType utility file to access FSType data (body). 6 * 7 * Copyright (C) 2008-2023 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 <freetype/t1tables.h> 19 #include <freetype/tttables.h> 20 #include <freetype/internal/ftserv.h> 21 #include <freetype/internal/services/svpsinfo.h> 22 23 24 /* documentation is in freetype.h */ 25 26 FT_EXPORT_DEF( FT_UShort ) FT_Get_FSType_Flags(FT_Face face)27 FT_Get_FSType_Flags( FT_Face face ) 28 { 29 TT_OS2* os2; 30 31 32 /* first, try to get the fs_type directly from the font */ 33 if ( face ) 34 { 35 FT_Service_PsInfo service = NULL; 36 37 38 FT_FACE_FIND_SERVICE( face, service, POSTSCRIPT_INFO ); 39 40 if ( service && service->ps_get_font_extra ) 41 { 42 PS_FontExtraRec extra; 43 44 45 if ( !service->ps_get_font_extra( face, &extra ) && 46 extra.fs_type != 0 ) 47 return extra.fs_type; 48 } 49 } 50 51 /* look at FSType before fsType for Type42 */ 52 53 if ( ( os2 = (TT_OS2*)FT_Get_Sfnt_Table( face, FT_SFNT_OS2 ) ) != NULL && 54 os2->version != 0xFFFFU ) 55 return os2->fsType; 56 57 return 0; 58 } 59 60 61 /* END */ 62