diff options
Diffstat (limited to 'src/cff/cf2ft.c')
-rw-r--r-- | src/cff/cf2ft.c | 41 |
1 files changed, 39 insertions, 2 deletions
diff --git a/src/cff/cf2ft.c b/src/cff/cf2ft.c index 55f3206ac..3f8334f5f 100644 --- a/src/cff/cf2ft.c +++ b/src/cff/cf2ft.c @@ -102,9 +102,10 @@ if ( font ) { FT_Memory memory = font->memory; - - (void)memory; + + FT_FREE( font->lastNormalizedVector ); + FT_FREE( font->blendVector ); } } @@ -366,6 +367,9 @@ &hinted, &scaled ); + /* copy isCFF2 boolean from TT_Face to CF2_Font */ + font->isCFF2 = builder->face->isCFF2; + font->renderingFlags = 0; if ( hinted ) font->renderingFlags |= CF2_FlagsHinted; @@ -412,6 +416,39 @@ return decoder->current_subfont; } + /* get pointer to VStore structure */ + FT_LOCAL_DEF( CFF_VStore ) + cf2_getVStore( CFF_Decoder* decoder ) + { + FT_ASSERT( decoder && decoder->cff ); + + return &decoder->cff->vstore; + } + + /* get normalized design vector for current render request */ + /* returns pointer and length */ + /* if blend struct is not initialized, return length zero */ + /* Note: use FT_Fixed not CF2_Fixed for the vector */ + FT_LOCAL_DEF( void ) + cf2_getNormalizedVector( CFF_Decoder* decoder, CF2_UInt * len, FT_Fixed ** vec ) + { + GX_Blend blend; + + FT_ASSERT( decoder && decoder->builder.face ); + FT_ASSERT( vec && len ); + + blend = decoder->builder.face->blend; + if ( blend ) + { + *vec = blend->normalizedcoords; + *len = blend->num_axis; + } + else + { + *vec = NULL; + *len = 0; + } + } /* get `y_ppem' from `CFF_Size' */ FT_LOCAL_DEF( CF2_Fixed ) |