Home | History | Annotate | Download | only in base
      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  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