From d09265981814a3948ae6e82e3f9da82d0e194136 Mon Sep 17 00:00:00 2001 From: David Turner Date: Tue, 3 Oct 2000 22:03:09 +0000 Subject: [PATCH] fixed two bugs: - one bug in the auto-hinter that could cause some program crashes with certain fonts - fixed the loading of the font matrix "offset" parameters in Type 1 and CID-keyed fonts.. --- src/autohint/ahglyph.c | 10 +++++----- src/cid/cidload.c | 7 +++++-- src/type1z/z1load.c | 7 +++++-- 3 files changed, 15 insertions(+), 9 deletions(-) diff --git a/src/autohint/ahglyph.c b/src/autohint/ahglyph.c index d81e68d12..5536a7b03 100644 --- a/src/autohint/ahglyph.c +++ b/src/autohint/ahglyph.c @@ -332,14 +332,14 @@ FT_Int max = outline->max_points; - if ( REALLOC_ARRAY( outline->points, max, news, AH_Point ) || - REALLOC_ARRAY( outline->horz_edges, max, news, AH_Edge ) || - REALLOC_ARRAY( outline->horz_segments, max, news, AH_Segment ) ) + if ( REALLOC_ARRAY( outline->points, max, news, AH_Point ) || + REALLOC_ARRAY( outline->horz_edges, max*2, news*2, AH_Edge ) || + REALLOC_ARRAY( outline->horz_segments, max*2, news*2, AH_Segment ) ) goto Exit; /* readjust some pointers */ - outline->vert_edges = outline->horz_edges + ( news >> 1 ); - outline->vert_segments = outline->horz_segments + ( news >> 1 ); + outline->vert_edges = outline->horz_edges + news; + outline->vert_segments = outline->horz_segments + news; outline->max_points = news; } diff --git a/src/cid/cidload.c b/src/cid/cidload.c index 70c0d0b46..52a69675a 100644 --- a/src/cid/cidload.c +++ b/src/cid/cidload.c @@ -219,8 +219,11 @@ matrix->yx = temp[1]; matrix->xy = temp[2]; matrix->yy = temp[3]; - offset->x = temp[4]; - offset->y = temp[5]; + + /* note that the font offset are expressed in */ + /* integer font units.. */ + offset->x = temp[4] >> 16; + offset->y = temp[5] >> 16; } return T1_Err_Ok; /* this is a callback function; */ diff --git a/src/type1z/z1load.c b/src/type1z/z1load.c index c87f7a181..8d158932b 100644 --- a/src/type1z/z1load.c +++ b/src/type1z/z1load.c @@ -912,8 +912,11 @@ matrix->yx = temp[1]; matrix->xy = temp[2]; matrix->yy = temp[3]; - offset->x = temp[4]; - offset->y = temp[5]; + + /* note that the offset must be expressed in */ + /* integer font units.. */ + offset->x = temp[4] >> 16; + offset->y = temp[5] >> 16; }