[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[freetype2] master 9428ee4 14/43: Prepare for Type 1 mode.
From: |
Werner LEMBERG |
Subject: |
[freetype2] master 9428ee4 14/43: Prepare for Type 1 mode. |
Date: |
Mon, 25 Sep 2017 03:29:24 -0400 (EDT) |
branch: master
commit 9428ee42c0100381a60c57544773ae58c4d1028c
Author: Ewald Hew <address@hidden>
Commit: Werner Lemberg <address@hidden>
Prepare for Type 1 mode.
Add some checks for Type 1 data passing through.
* src/psaux/psfont.h (CF2_Font): Add `isT1' flag.
* src/psaux/psfont.c (cf2_font_setup): Skip the variations and blend
code which is not applicable for Type 1.
* src/psaux/psft.c (cf2_decoder_parse_charstrings): Avoid accessing
`decoder->cff' in Type 1 mode.
Copy `is_t1' flag to `CF2_Font'.
---
ChangeLog | 14 +++++++++++
src/psaux/psfont.c | 70 ++++++++++++++++++++++++++++--------------------------
src/psaux/psfont.h | 1 +
src/psaux/psft.c | 10 ++++++--
4 files changed, 59 insertions(+), 36 deletions(-)
diff --git a/ChangeLog b/ChangeLog
index a215fa4..1264e38 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,19 @@
2017-09-25 Ewald Hew <address@hidden>
+ [psaux] Prepare for Type 1 mode.
+
+ Add some checks for Type 1 data passing through.
+
+ * src/psaux/psfont.h (CF2_Font): Add `isT1' flag.
+ * src/psaux/psfont.c (cf2_font_setup): Skip the variations and blend
+ code which is not applicable for Type 1.
+
+ * src/psaux/psft.c (cf2_decoder_parse_charstrings): Avoid accessing
+ `decoder->cff' in Type 1 mode.
+ Copy `is_t1' flag to `CF2_Font'.
+
+2017-09-25 Ewald Hew <address@hidden>
+
[psaux, cff] Use the new objects.
* include/freetype/internal/psaux.h, src/psaux/psauxmod.c: Fix
diff --git a/src/psaux/psfont.c b/src/psaux/psfont.c
index bdcc356..093e66e 100644
--- a/src/psaux/psfont.c
+++ b/src/psaux/psfont.c
@@ -260,8 +260,6 @@
CF2_UInt lenNormalizedV = 0;
FT_Fixed* normalizedV = NULL;
- FT_Service_CFFLoad cffload = (FT_Service_CFFLoad)font->cffload;
-
/* clear previous error */
font->error = FT_Err_Ok;
@@ -274,46 +272,50 @@
needExtraSetup = TRUE;
}
- /* check for variation vectors */
- vstore = cf2_getVStore( decoder );
- hasVariations = ( vstore->dataCount != 0 );
-
- if ( hasVariations )
+ if ( !font->isT1 )
{
-#ifdef TT_CONFIG_OPTION_GX_VAR_SUPPORT
- /* check whether Private DICT in this subfont needs to be reparsed */
- font->error = cf2_getNormalizedVector( decoder,
- &lenNormalizedV,
- &normalizedV );
- if ( font->error )
- return;
+ FT_Service_CFFLoad cffload = (FT_Service_CFFLoad)font->cffload;
+ /* check for variation vectors */
+ vstore = cf2_getVStore( decoder );
+ hasVariations = ( vstore->dataCount != 0 );
- if ( cffload->blend_check_vector( &subFont->blend,
- subFont->private_dict.vsindex,
- lenNormalizedV,
- normalizedV ) )
+ if ( hasVariations )
{
- /* blend has changed, reparse */
- cffload->load_private_dict( decoder->cff,
- subFont,
- lenNormalizedV,
- normalizedV );
- needExtraSetup = TRUE;
- }
+#ifdef TT_CONFIG_OPTION_GX_VAR_SUPPORT
+ /* check whether Private DICT in this subfont needs to be reparsed */
+ font->error = cf2_getNormalizedVector( decoder,
+ &lenNormalizedV,
+ &normalizedV );
+ if ( font->error )
+ return;
+
+ if ( cffload->blend_check_vector( &subFont->blend,
+ subFont->private_dict.vsindex,
+ lenNormalizedV,
+ normalizedV ) )
+ {
+ /* blend has changed, reparse */
+ cffload->load_private_dict( decoder->cff,
+ subFont,
+ lenNormalizedV,
+ normalizedV );
+ needExtraSetup = TRUE;
+ }
#endif
- /* copy from subfont */
- font->blend.font = subFont->blend.font;
+ /* copy from subfont */
+ font->blend.font = subFont->blend.font;
- /* clear state of charstring blend */
- font->blend.usedBV = FALSE;
+ /* clear state of charstring blend */
+ font->blend.usedBV = FALSE;
- /* initialize value for charstring */
- font->vsindex = subFont->private_dict.vsindex;
+ /* initialize value for charstring */
+ font->vsindex = subFont->private_dict.vsindex;
- /* store vector inputs for blends in charstring */
- font->lenNDV = lenNormalizedV;
- font->NDV = normalizedV;
+ /* store vector inputs for blends in charstring */
+ font->lenNDV = lenNormalizedV;
+ font->NDV = normalizedV;
+ }
}
/* if ppem has changed, we need to recompute some cached data */
diff --git a/src/psaux/psfont.h b/src/psaux/psfont.h
index f88b131..fc86f80 100644
--- a/src/psaux/psfont.h
+++ b/src/psaux/psfont.h
@@ -65,6 +65,7 @@ FT_BEGIN_HEADER
FT_Memory memory;
FT_Error error; /* shared error for this instance */
+ FT_Bool isT1;
FT_Bool isCFF2;
CF2_RenderingFlags renderingFlags;
diff --git a/src/psaux/psft.c b/src/psaux/psft.c
index a05f1f2..34ac0b6 100644
--- a/src/psaux/psft.c
+++ b/src/psaux/psft.c
@@ -309,8 +309,11 @@
FT_Error error = FT_Err_Ok;
CF2_Font font;
+ FT_Bool is_t1 = decoder->builder.is_t1;
- FT_ASSERT( decoder && decoder->cff );
+
+ FT_ASSERT( decoder &&
+ ( is_t1 || decoder->cff ) );
memory = decoder->builder.memory;
@@ -330,7 +333,9 @@
font = (CF2_Font)decoder->cff->cf2_instance.data;
font->memory = memory;
- font->cffload = (FT_Service_CFFLoad)decoder->cff->cffload;
+
+ if ( !is_t1 )
+ font->cffload = (FT_Service_CFFLoad)decoder->cff->cffload;
/* initialize a client outline, to be shared by each glyph rendered */
cf2_outline_init( &font->outline, font->memory, &font->error );
@@ -381,6 +386,7 @@
/* copy isCFF2 boolean from TT_Face to CF2_Font */
font->isCFF2 = builder->face->is_cff2;
+ font->isT1 = is_t1;
font->renderingFlags = 0;
if ( hinted )
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [freetype2] master 9428ee4 14/43: Prepare for Type 1 mode.,
Werner LEMBERG <=