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