* include/freetype/ftgasp.h, src/base/ftgasp.c: adding a
new API FT_Get_Gasp to return entries of the GASP table corresponding to a given character pixel size. * src/sfnt/ttload.c: add version check for the GASP table, in order to be better future-proof * include/freetype/config/ftheader.h: add definition of FT_GASP_H, corresponding to <freetype/ftgasp.h> * src/base/rules.mk, src/base/Jamfile, modules.cfg, builds/win32/visualc/freetype.dsp, builds/win32/visualc/freetype.vcproj: Adding src/base/ftgasp.c to the default build
This commit is contained in:
parent
b8004d2e88
commit
f48b60ed59
17
ChangeLog
17
ChangeLog
|
@ -1,3 +1,20 @@
|
||||||
|
2007-01-08 David Turner <david@freetype.org>
|
||||||
|
|
||||||
|
* include/freetype/ftgasp.h, src/base/ftgasp.c: adding a
|
||||||
|
new API FT_Get_Gasp to return entries of the GASP table
|
||||||
|
corresponding to a given character pixel size.
|
||||||
|
|
||||||
|
* src/sfnt/ttload.c: add version check for the GASP table,
|
||||||
|
in order to be better future-proof
|
||||||
|
|
||||||
|
* include/freetype/config/ftheader.h: add definition of
|
||||||
|
FT_GASP_H, corresponding to <freetype/ftgasp.h>
|
||||||
|
|
||||||
|
* src/base/rules.mk, src/base/Jamfile, modules.cfg,
|
||||||
|
builds/win32/visualc/freetype.dsp,
|
||||||
|
builds/win32/visualc/freetype.vcproj: Adding src/base/ftgasp.c
|
||||||
|
to the default build
|
||||||
|
|
||||||
2007-01-07 Werner Lemberg <wl@gnu.org>
|
2007-01-07 Werner Lemberg <wl@gnu.org>
|
||||||
|
|
||||||
* src/cid/cidparse.c (cid_parser_new): Improve error message for
|
* src/cid/cidparse.c (cid_parser_new): Improve error message for
|
||||||
|
|
|
@ -226,6 +226,10 @@ SOURCE=..\..\..\src\base\ftbitmap.c
|
||||||
# End Source File
|
# End Source File
|
||||||
# Begin Source File
|
# Begin Source File
|
||||||
|
|
||||||
|
SOURCE=..\..\..\src\base\ftgasp.c
|
||||||
|
# End Source File
|
||||||
|
# Begin Source File
|
||||||
|
|
||||||
SOURCE=..\..\..\src\cache\ftcache.c
|
SOURCE=..\..\..\src\cache\ftcache.c
|
||||||
# SUBTRACT CPP /Fr
|
# SUBTRACT CPP /Fr
|
||||||
# End Source File
|
# End Source File
|
||||||
|
|
|
@ -674,6 +674,10 @@
|
||||||
RelativePath="..\..\..\src\base\ftbitmap.c"
|
RelativePath="..\..\..\src\base\ftbitmap.c"
|
||||||
>
|
>
|
||||||
</File>
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath="..\..\..\src\base\ftgasp.c"
|
||||||
|
>
|
||||||
|
</File>
|
||||||
<File
|
<File
|
||||||
RelativePath="..\..\..\src\cache\ftcache.c"
|
RelativePath="..\..\..\src\cache\ftcache.c"
|
||||||
>
|
>
|
||||||
|
|
|
@ -677,6 +677,19 @@
|
||||||
*/
|
*/
|
||||||
#define FT_LCD_FILTER_H <freetype/ftlcdfil.h>
|
#define FT_LCD_FILTER_H <freetype/ftlcdfil.h>
|
||||||
|
|
||||||
|
|
||||||
|
/*************************************************************************
|
||||||
|
*
|
||||||
|
* @macro:
|
||||||
|
* FT_GASP_H
|
||||||
|
*
|
||||||
|
* @description:
|
||||||
|
* A macro used in #include statements to name the file containing the
|
||||||
|
* FreeType 2 API which returns entries from the TrueType GASP table
|
||||||
|
*/
|
||||||
|
#define FT_GASP_H <freetype/ftgasp.h>
|
||||||
|
|
||||||
|
|
||||||
/* */
|
/* */
|
||||||
|
|
||||||
#define FT_ERROR_DEFINITIONS_H <freetype/fterrdef.h>
|
#define FT_ERROR_DEFINITIONS_H <freetype/fterrdef.h>
|
||||||
|
|
|
@ -0,0 +1,65 @@
|
||||||
|
#ifndef _FT_GASP_H_
|
||||||
|
#define _FT_GASP_H_
|
||||||
|
|
||||||
|
#include <ft2build.h>
|
||||||
|
#include FT_FREETYPE_H
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @enum: FT_GASP_XXX
|
||||||
|
*
|
||||||
|
* @description:
|
||||||
|
* a list of values and/or bit-flags returned by the
|
||||||
|
* @FT_Get_Gasp function.
|
||||||
|
*
|
||||||
|
* @values:
|
||||||
|
* FT_GASP_NO_TABLE ::
|
||||||
|
* this special value means that there is no GASP table
|
||||||
|
* in this face. It's up to the client to decide what to
|
||||||
|
* do
|
||||||
|
*
|
||||||
|
* FT_GASP_DO_GRIDFIT ::
|
||||||
|
* indicates that grid-fitting/hinting should be
|
||||||
|
* performed at the specified ppem. This *really*
|
||||||
|
* means TrueType bytecode interpretation
|
||||||
|
*
|
||||||
|
* FT_GASP_DO_GRAY ::
|
||||||
|
* indicates that anti-aliased rendering should be
|
||||||
|
* performed at the specified ppem
|
||||||
|
*
|
||||||
|
* FT_GASP_SYMMETRIC_SMOOTHING ::
|
||||||
|
* indicates that smoothing along multiple axis
|
||||||
|
* must be used with ClearType.
|
||||||
|
*
|
||||||
|
* FT_GASP_SYMMETRIC_GRIDFIT ::
|
||||||
|
* indicates that grid-fitting must be used with
|
||||||
|
* ClearType's symmetric smoothing
|
||||||
|
*/
|
||||||
|
#define FT_GASP_NO_TABLE -1
|
||||||
|
#define FT_GASP_DO_GRIDFIT 0x01
|
||||||
|
#define FT_GASP_DO_GRAY 0x02
|
||||||
|
#define FT_GASP_SYMMETRIC_SMOOTHING 0x08
|
||||||
|
#define FT_GASP_SYMMETRIC_GRIDFIT 0x10
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @func: FT_Get_Gasp
|
||||||
|
*
|
||||||
|
* @description:
|
||||||
|
* read the GASP table from a TrueType or OpenType font file
|
||||||
|
* and return the entry corresponding to a given character
|
||||||
|
* pixel size
|
||||||
|
*
|
||||||
|
* @input:
|
||||||
|
* face :: source face handle
|
||||||
|
* ppem :: vertical character pixel size
|
||||||
|
*
|
||||||
|
* @return:
|
||||||
|
* bit flags, or @FT_GASP_NO_TABLE is there is no GASP table
|
||||||
|
* in the face.
|
||||||
|
*/
|
||||||
|
FT_EXPORT( FT_Int )
|
||||||
|
FT_Get_Gasp( FT_Face face,
|
||||||
|
FT_UInt ppem );
|
||||||
|
|
||||||
|
/* */
|
||||||
|
|
||||||
|
#endif /* _FT_GASP_H_ */
|
|
@ -216,6 +216,10 @@ BASE_EXTENSIONS += ftxf86.c
|
||||||
# See include/freetype/ftlcdfil.h for the API.
|
# See include/freetype/ftlcdfil.h for the API.
|
||||||
BASE_EXTENSIONS += ftlcdfil.c
|
BASE_EXTENSIONS += ftlcdfil.c
|
||||||
|
|
||||||
|
# Support for GASP table queries
|
||||||
|
#
|
||||||
|
# See include/freetype/ftgasp.h for the API
|
||||||
|
BASE_EXTENSIONS += ftgasp.c
|
||||||
|
|
||||||
####
|
####
|
||||||
#### The components `ftsystem.c' (for memory allocation and stream I/O
|
#### The components `ftsystem.c' (for memory allocation and stream I/O
|
||||||
|
|
|
@ -34,7 +34,7 @@ SubDir FT2_TOP $(FT2_SRC_DIR) base ;
|
||||||
local _sources = system init glyph mm bdf
|
local _sources = system init glyph mm bdf
|
||||||
bbox debug xf86 type1 pfr
|
bbox debug xf86 type1 pfr
|
||||||
stroke winfnt otval bitmap synth
|
stroke winfnt otval bitmap synth
|
||||||
gxval lcdfil
|
gxval lcdfil gasp
|
||||||
;
|
;
|
||||||
|
|
||||||
Library $(FT2_LIB) : ft$(_sources).c ;
|
Library $(FT2_LIB) : ft$(_sources).c ;
|
||||||
|
|
|
@ -0,0 +1,38 @@
|
||||||
|
#include <ft2build.h>
|
||||||
|
#include FT_GASP_H
|
||||||
|
#include FT_INTERNAL_TRUETYPE_TYPES_H
|
||||||
|
|
||||||
|
FT_EXPORT_DEF( FT_Int )
|
||||||
|
FT_Get_Gasp( FT_Face face,
|
||||||
|
FT_UInt ppem )
|
||||||
|
{
|
||||||
|
FT_Int result = FT_GASP_NO_TABLE;
|
||||||
|
|
||||||
|
if ( face && FT_IS_SFNT(face) )
|
||||||
|
{
|
||||||
|
TT_Face ttface = (TT_Face)face;
|
||||||
|
|
||||||
|
if ( ttface->gasp.numRanges > 0 )
|
||||||
|
{
|
||||||
|
TT_GaspRange range = ttface->gasp.gaspRanges;
|
||||||
|
TT_GaspRange range_end = range + ttface->gasp.numRanges;
|
||||||
|
|
||||||
|
while ( ppem > range->maxPPEM )
|
||||||
|
{
|
||||||
|
range++;
|
||||||
|
if ( range >= range_end )
|
||||||
|
goto Exit;
|
||||||
|
}
|
||||||
|
|
||||||
|
result = range->gaspFlag;
|
||||||
|
|
||||||
|
/* ensure we don't have spurious bits */
|
||||||
|
if ( ttface->gasp.version == 0 )
|
||||||
|
result &= 3;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Exit:
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
|
@ -44,6 +44,7 @@ BASE_SRC := $(BASE_DIR)/ftcalc.c \
|
||||||
$(BASE_DIR)/ftrfork.c \
|
$(BASE_DIR)/ftrfork.c \
|
||||||
$(BASE_DIR)/ftstream.c \
|
$(BASE_DIR)/ftstream.c \
|
||||||
$(BASE_DIR)/fttrigon.c \
|
$(BASE_DIR)/fttrigon.c \
|
||||||
|
$(BASE_DIR)/ftgasp.c \
|
||||||
$(BASE_DIR)/ftutil.c
|
$(BASE_DIR)/ftutil.c
|
||||||
|
|
||||||
# Base layer `extensions' sources
|
# Base layer `extensions' sources
|
||||||
|
|
|
@ -1138,6 +1138,14 @@
|
||||||
|
|
||||||
FT_FRAME_EXIT();
|
FT_FRAME_EXIT();
|
||||||
|
|
||||||
|
/* only support versions 0 and 1 of the table */
|
||||||
|
if ( face->gasp.version >= 2 )
|
||||||
|
{
|
||||||
|
face->gasp.numRanges = 0;
|
||||||
|
error = FT_Err_Invalid_Table;
|
||||||
|
goto Exit;
|
||||||
|
}
|
||||||
|
|
||||||
num_ranges = face->gasp.numRanges;
|
num_ranges = face->gasp.numRanges;
|
||||||
FT_TRACE3(( "numRanges: %u\n", num_ranges ));
|
FT_TRACE3(( "numRanges: %u\n", num_ranges ));
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue