1 /***************************************************************************/
   2 /*                                                                         */
   3 /*  ftgasp.c                                                               */
   4 /*                                                                         */
   5 /*    Access of TrueType's `gasp' table (body).                            */
   6 /*                                                                         */
   7 /*  Copyright 2007-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 
  19 #include <ft2build.h>
  20 #include FT_GASP_H
  21 #include FT_INTERNAL_TRUETYPE_TYPES_H
  22 
  23 
  24   FT_EXPORT_DEF( FT_Int )
  25   FT_Get_Gasp( FT_Face  face,
  26                FT_UInt  ppem )
  27   {
  28     FT_Int  result = FT_GASP_NO_TABLE;
  29 
  30 
  31     if ( face && FT_IS_SFNT( face ) )
  32     {
  33       TT_Face  ttface = (TT_Face)face;
  34 
  35 
  36       if ( ttface->gasp.numRanges > 0 )
  37       {
  38         TT_GaspRange  range     = ttface->gasp.gaspRanges;
  39         TT_GaspRange  range_end = range + ttface->gasp.numRanges;
  40 
  41 
  42         while ( ppem > range->maxPPEM )
  43         {
  44           range++;
  45           if ( range >= range_end )
  46             goto Exit;
  47         }
  48 
  49         result = range->gaspFlag;
  50 
  51         /* ensure that we don't have spurious bits */
  52         if ( ttface->gasp.version == 0 )
  53           result &= 3;
  54       }
  55     }
  56   Exit:
  57     return result;
  58   }
  59 
  60 
  61 /* END */