1 | /***************************************************************************/ |
2 | /* */ |
3 | /* ftfstype.c */ |
4 | /* */ |
5 | /* FreeType utility file to access FSType data (body). */ |
6 | /* */ |
7 | /* Copyright 2008-2018 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 ; |
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 | |