70 lines
1.9 KiB
C
70 lines
1.9 KiB
C
/*******************************************************************
|
|
*
|
|
* ftxgasp.c 1.0
|
|
*
|
|
* Gasp table support API extension body
|
|
*
|
|
* Copyright 1996-1999 by
|
|
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
|
*
|
|
* This file is part of the FreeType project, and may only be used
|
|
* modified and distributed under the terms of the FreeType project
|
|
* license, LICENSE.TXT. By continuing to use, modify, or distribute
|
|
* this file you indicate that you have read the license and
|
|
* understand and accept it fully.
|
|
*
|
|
*
|
|
* The gasp table is currently loaded by the core engine, but the
|
|
* standard API doesn't give access to it. This file is used to
|
|
* demonstrate the use of a simple API extension.
|
|
*
|
|
******************************************************************/
|
|
|
|
#include "ftxgasp.h"
|
|
|
|
#include "tttypes.h"
|
|
#include "ttobjs.h"
|
|
#include "tttables.h"
|
|
|
|
|
|
EXPORT_FUNC
|
|
TT_Error TT_Get_Face_Gasp_Flags( TT_Face face,
|
|
TT_UShort point_size,
|
|
TT_Bool* grid_fit,
|
|
TT_Bool* smooth_font )
|
|
{
|
|
PFace faze = HANDLE_Face( face );
|
|
UShort i, flag;
|
|
|
|
|
|
if ( !faze )
|
|
return TT_Err_Invalid_Face_Handle;
|
|
|
|
if ( faze->gasp.numRanges == 0 || !faze->gasp.gaspRanges )
|
|
return TT_Err_Table_Missing;
|
|
|
|
for ( i = 0; i < faze->gasp.numRanges; i++ )
|
|
{
|
|
if ( point_size <= faze->gasp.gaspRanges[i].maxPPEM )
|
|
{
|
|
flag = faze->gasp.gaspRanges[i].gaspFlag;
|
|
|
|
*grid_fit = ( (flag & GASP_GRIDFIT) != 0 );
|
|
*smooth_font = ( (flag & GASP_DOGRAY ) != 0 );
|
|
|
|
return TT_Err_Ok;
|
|
}
|
|
}
|
|
|
|
/* for very large fonts we enable font smoothing and discard */
|
|
/* grid fitting */
|
|
|
|
*grid_fit = 0;
|
|
*smooth_font = 1;
|
|
|
|
return TT_Err_Ok;
|
|
}
|
|
|
|
|
|
/* END */
|