tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

ftfstype.c (1551B)


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