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