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