(root)/
freetype-2.13.2/
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 */