ftgasp.c revision ee451cb395940862dad63c85adfe8f2fd55e864c
1/***************************************************************************/
2/*                                                                         */
3/*  ftgasp.c                                                               */
4/*                                                                         */
5/*    Access of TrueType's `gasp' table (body).                            */
6/*                                                                         */
7/*  Copyright 2007 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 "../../include/ft2build.h"
20#include "../../include/freetype/ftgasp.h"
21#include "../../include/freetype/internal/tttypes.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