1 /****************************************************************************
2  *
3  * ftgasp.c
4  *
5  *   Access of TrueType's `gasp' table (body).
6  *
7  * Copyright (C) 2007-2019 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 )
FT_Get_Gasp(FT_Face face,FT_UInt ppem)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