(root)/
freetype-2.13.2/
src/
base/
ftfstype.c
       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 )
      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 */