summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEwald Hew <ewaldhew@gmail.com>2017-08-25 10:13:46 +0800
committerEwald Hew <ewaldhew@gmail.com>2017-08-28 08:29:08 +0800
commit423d7cf1654a8d6439f3f89e5492e8b19cfe22c3 (patch)
tree43666ea5a7eda0c32bd1780c22cae4daec16c952
parentea2f74f98236b9adc1fabc3b01fa968e591ea6f6 (diff)
downloadfreetype2-GSoC-2017-ewaldhew.tar.gz
[psaux] Minor fixes.GSoC-2017-ewaldhew
* include/freetype/internal/psaux.h, src/psaux/psobjs.{c,h}: Rearrange ps_builder_init arguments to conventional order. * src/psaux/psft.c (cf2_decoder_parse_charstrings): Add a check and notice for SubFont in Type 1 mode.
-rw-r--r--include/freetype/internal/psaux.h6
-rw-r--r--src/psaux/psft.c7
-rw-r--r--src/psaux/psobjs.c18
-rw-r--r--src/psaux/psobjs.h7
4 files changed, 23 insertions, 15 deletions
diff --git a/include/freetype/internal/psaux.h b/include/freetype/internal/psaux.h
index d37b6e5d4..25535475a 100644
--- a/include/freetype/internal/psaux.h
+++ b/include/freetype/internal/psaux.h
@@ -473,9 +473,9 @@ FT_BEGIN_HEADER
typedef struct PS_Builder_FuncsRec_
{
void
- (*init)( void* builder,
- FT_Bool is_t1,
- PS_Builder* ps_builder );
+ (*init)( PS_Builder* ps_builder,
+ void* builder,
+ FT_Bool is_t1 );
void
(*done)( PS_Builder* builder );
diff --git a/src/psaux/psft.c b/src/psaux/psft.c
index fd09414d8..89e168a94 100644
--- a/src/psaux/psft.c
+++ b/src/psaux/psft.c
@@ -315,6 +315,13 @@
FT_ASSERT( decoder &&
( is_t1 || decoder->cff ) );
+ if ( is_t1 && !decoder->current_subfont )
+ {
+ FT_ERROR(( "cf2_decoder_parse_charstrings (Type 1): "
+ "SubFont missing. Use `t1_make_subfont' first\n" ));
+ return FT_THROW( Invalid_Table );
+ }
+
memory = decoder->builder.memory;
/* CF2 data is saved here across glyphs */
diff --git a/src/psaux/psobjs.c b/src/psaux/psobjs.c
index a62ee231e..0baba7aa6 100644
--- a/src/psaux/psobjs.c
+++ b/src/psaux/psobjs.c
@@ -2054,9 +2054,9 @@
/* hinting :: Whether hinting should be applied. */
/* */
FT_LOCAL_DEF( void )
- ps_builder_init( void* builder,
- FT_Bool is_t1,
- PS_Builder* ps_builder )
+ ps_builder_init( PS_Builder* ps_builder,
+ void* builder,
+ FT_Bool is_t1 )
{
FT_ZERO( ps_builder );
@@ -2356,9 +2356,9 @@
{
T1_Decoder t1_decoder = (T1_Decoder)decoder;
- ps_builder_init( &t1_decoder->builder,
- is_t1,
- &ps_decoder->builder );
+ ps_builder_init( &ps_decoder->builder,
+ &t1_decoder->builder,
+ is_t1 );
ps_decoder->cf2_instance = &t1_decoder->cf2_instance;
ps_decoder->psnames = t1_decoder->psnames;
@@ -2382,9 +2382,9 @@
{
CFF_Decoder* cff_decoder = (CFF_Decoder*)decoder;
- ps_builder_init( &cff_decoder->builder,
- is_t1,
- &ps_decoder->builder );
+ ps_builder_init( &ps_decoder->builder,
+ &cff_decoder->builder,
+ is_t1 );
ps_decoder->cff = cff_decoder->cff;
ps_decoder->cf2_instance = &cff_decoder->cff->cf2_instance;
diff --git a/src/psaux/psobjs.h b/src/psaux/psobjs.h
index 6773eacb2..e1f72407a 100644
--- a/src/psaux/psobjs.h
+++ b/src/psaux/psobjs.h
@@ -242,9 +242,10 @@ FT_BEGIN_HEADER
/*************************************************************************/
FT_LOCAL( void )
- ps_builder_init( void* builder,
- FT_Bool is_t1,
- PS_Builder* ps_builder );
+ ps_builder_init( PS_Builder* ps_builder,
+ void* builder,
+ FT_Bool is_t1 );
+
FT_LOCAL( void )
ps_builder_done( PS_Builder* builder );