зеркало из https://github.com/stride3d/freetype.git
- added FT_Get_SubGlyph_Info API to freetype.h
- small fix to lsb/rsb delta computations - cleaning up Jamfile
This commit is contained in:
Родитель
d8776b3439
Коммит
2ce9203735
|
@ -1,3 +1,12 @@
|
|||
2006-03-23 David Turner <david@freetype.org>
|
||||
|
||||
* include/freetype/freetype.h, include/freetype/internal/ftgloadr.h,
|
||||
src/base/ftobjs.c: adding FT_Get_SubGlyph_Info API to retrieve subglyph
|
||||
data. Note that we do not expose FT_SubGlyphRec here !
|
||||
|
||||
* src/autofit/afloader.c: compute lsb_delta and rsb_delta correctly
|
||||
in edge cases
|
||||
|
||||
2006-03-22 Werner Lemberg <wl@gnu.org>
|
||||
|
||||
* src/cache/ftccache.c, (ftc_node_mru_up, FTC_Cache_Lookup)
|
||||
|
|
3
Jamfile
3
Jamfile
|
@ -76,10 +76,8 @@ FT2_COMPONENTS ?= autofit # auto-fitter
|
|||
cache # cache sub-system
|
||||
cff # CFF/CEF font driver
|
||||
cid # PostScript CID-keyed font driver
|
||||
#gxvalid # validation of TrueTypeGX/AAT tables
|
||||
gzip # support for gzip-compressed files
|
||||
lzw # support for LZW-compressed files
|
||||
#otvalid # validation of OpenType tables
|
||||
pcf # PCF font driver
|
||||
pfr # PFR/TrueDoc font driver
|
||||
psaux # common PostScript routines module
|
||||
|
@ -127,6 +125,7 @@ if $(DEBUG_HINTER)
|
|||
#
|
||||
HDRS += $(FT2_INCLUDE) ;
|
||||
|
||||
|
||||
# We need to #define FT2_BUILD_LIBRARY so that our sources find the
|
||||
# internal headers
|
||||
#
|
||||
|
|
|
@ -436,7 +436,7 @@ FT_BEGIN_HEADER
|
|||
/* Do not #undef this macro here, since the build system might */
|
||||
/* define it for certain configurations only. */
|
||||
/* */
|
||||
#define TT_CONFIG_OPTION_BYTECODE_INTERPRETER
|
||||
#define xxTT_CONFIG_OPTION_BYTECODE_INTERPRETER
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
|
|
|
@ -3222,6 +3222,64 @@ FT_BEGIN_HEADER
|
|||
FT_Vector_Transform( FT_Vector* vec,
|
||||
const FT_Matrix* matrix );
|
||||
|
||||
/**
|
||||
* @macro: FT_SUBGLYPH_FLAG_XXX
|
||||
*
|
||||
* @description:
|
||||
* a list of constant used to describe each subglyph
|
||||
*
|
||||
* @values:
|
||||
* FT_SUBGLYPH_FLAG_ARGS_ARE_WORDS ::
|
||||
* FT_SUBGLYPH_FLAG_ARGS_ARE_XY_VALUES ::
|
||||
* FT_SUBGLYPH_FLAG_ROUND_XY_TO_GRID ::
|
||||
* FT_SUBGLYPH_FLAG_SCALE ::
|
||||
* FT_SUBGLYPH_FLAG_XY_SCALE ::
|
||||
* FT_SUBGLYPH_FLAG_2X2 ::
|
||||
* FT_SUBGLYPH_FLAG_USE_MY_METRICS ::
|
||||
*/
|
||||
#define FT_SUBGLYPH_FLAG_ARGS_ARE_WORDS 1
|
||||
#define FT_SUBGLYPH_FLAG_ARGS_ARE_XY_VALUES 2
|
||||
#define FT_SUBGLYPH_FLAG_ROUND_XY_TO_GRID 4
|
||||
#define FT_SUBGLYPH_FLAG_SCALE 8
|
||||
#define FT_SUBGLYPH_FLAG_XY_SCALE 0x40
|
||||
#define FT_SUBGLYPH_FLAG_2X2 0x80
|
||||
#define FT_SUBGLYPH_FLAG_USE_MY_METRICS 0x200
|
||||
|
||||
/**
|
||||
* @func: FT_Get_SubGlyph_Info
|
||||
*
|
||||
* @description:
|
||||
* a function used to retrieve a description of a given subglyph.
|
||||
* only use it when 'glyph->format' is FT_GLYPH_FORMAT_COMPOSITE, or
|
||||
* an error will be returned
|
||||
*
|
||||
* @input:
|
||||
* glyph :: source glyph slot
|
||||
* sub_index :: index of subglyph. must be less than 'glyph->num_subglyphs'
|
||||
*
|
||||
* @output:
|
||||
* p_index :: subglyph glyph index
|
||||
* p_flags :: subglyph flags, see @FT_SUBGLYPH_FLAG_XXX
|
||||
* p_arg1 :: subglyph first argument (if any)
|
||||
* p_arg2 :: subglyph second argument (if any)
|
||||
* p_transform :: subglyph transform (if any)
|
||||
*
|
||||
* @return:
|
||||
* error code. 0 means success
|
||||
*
|
||||
* @note:
|
||||
* the values of *p_arg1, *p_arg2 and *p_transform must be interpreted
|
||||
* depending on the flags returns in *p_flags. See the TrueType specification
|
||||
* for details
|
||||
*/
|
||||
FT_EXPORT( FT_Error )
|
||||
FT_Get_SubGlyph_Info( FT_GlyphSlot glyph,
|
||||
FT_UInt sub_index,
|
||||
FT_Int *p_index,
|
||||
FT_UInt *p_flags,
|
||||
FT_Int *p_arg1,
|
||||
FT_Int *p_arg2,
|
||||
FT_Matrix *p_transform );
|
||||
|
||||
/* */
|
||||
|
||||
|
|
|
@ -43,6 +43,7 @@ FT_BEGIN_HEADER
|
|||
typedef struct FT_GlyphLoaderRec_* FT_GlyphLoader ;
|
||||
|
||||
|
||||
#if 0 /* now in freetype.h since 2.2 */
|
||||
#define FT_SUBGLYPH_FLAG_ARGS_ARE_WORDS 1
|
||||
#define FT_SUBGLYPH_FLAG_ARGS_ARE_XY_VALUES 2
|
||||
#define FT_SUBGLYPH_FLAG_ROUND_XY_TO_GRID 4
|
||||
|
@ -50,7 +51,7 @@ FT_BEGIN_HEADER
|
|||
#define FT_SUBGLYPH_FLAG_XY_SCALE 0x40
|
||||
#define FT_SUBGLYPH_FLAG_2X2 0x80
|
||||
#define FT_SUBGLYPH_FLAG_USE_MY_METRICS 0x200
|
||||
|
||||
#endif
|
||||
|
||||
typedef struct FT_SubGlyphRec_
|
||||
{
|
||||
|
|
|
@ -224,8 +224,14 @@
|
|||
else
|
||||
#endif /* !AF_USE_WARPER */
|
||||
{
|
||||
FT_Pos pp1x = loader->pp1.x;
|
||||
FT_Pos pp2x = loader->pp2.x;
|
||||
|
||||
loader->pp1.x = FT_PIX_ROUND( loader->pp1.x );
|
||||
loader->pp2.x = FT_PIX_ROUND( loader->pp2.x );
|
||||
|
||||
slot->lsb_delta = loader->pp1.x - pp1x;
|
||||
slot->rsb_delta = loader->pp2.x - pp2x;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -3861,4 +3861,33 @@
|
|||
|
||||
#endif /* FT_CONFIG_OPTION_OLD_INTERNALS */
|
||||
|
||||
|
||||
FT_EXPORT_DEF( FT_Error )
|
||||
FT_Get_SubGlyph_Info( FT_GlyphSlot glyph,
|
||||
FT_UInt sub_index,
|
||||
FT_Int *p_index,
|
||||
FT_UInt *p_flags,
|
||||
FT_Int *p_arg1,
|
||||
FT_Int *p_arg2,
|
||||
FT_Matrix *p_transform )
|
||||
{
|
||||
FT_Error error = FT_Err_Invalid_Argument;
|
||||
|
||||
if ( glyph != NULL &&
|
||||
glyph->format == FT_GLYPH_FORMAT_COMPOSITE &&
|
||||
sub_index < glyph->num_subglyphs )
|
||||
{
|
||||
FT_SubGlyph subg = glyph->subglyphs + sub_index;
|
||||
|
||||
*p_index = subg->index;
|
||||
*p_flags = subg->flags;
|
||||
*p_arg1 = subg->arg1;
|
||||
*p_arg2 = subg->arg2;
|
||||
*p_transform = subg->transform;
|
||||
}
|
||||
return error;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* END */
|
||||
|
|
Загрузка…
Ссылка в новой задаче