From a8e7a01965c4b504c297d1b98e5fa6bb0c7a04ed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wu=2C=20Chia-I=20=28=E5=90=B3=E4=BD=B3=E4=B8=80=29?= Date: Fri, 24 Feb 2006 06:11:30 +0000 Subject: [PATCH] * include/freetype/freetype.h (FT_Size_RequestRec): Change the type of `width' and `height' to `FT_Long'. (enum FT_Size_Request_Type), src/base/ftobjs.c (FT_Request_Metrics): New request type `FT_SIZE_REQUEST_TYPE_SCALES' to specify the scales directly. --- ChangeLog | 13 ++++++++++--- include/freetype/freetype.h | 8 ++++++-- src/base/ftobjs.c | 11 +++++++++++ 3 files changed, 27 insertions(+), 5 deletions(-) diff --git a/ChangeLog b/ChangeLog index 3cb79f5b4..e713bdd9d 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2006-02-24 Chia-I Wu + + * include/freetype/freetype.h (FT_Size_RequestRec): Change the type of + `width' and `height' to `FT_Long'. + (enum FT_Size_Request_Type), src/base/ftobjs.c (FT_Request_Metrics): + New request type `FT_SIZE_REQUEST_TYPE_SCALES' to specify the scales + directly. + 2006-02-23 David Turner Two patches from Debian libfreetype6 for 2.1.10. @@ -6,9 +14,8 @@ glyphs. Fix a problem with large encodings. - * src/cache/ftccmap.c: trying to hack binary compatibility for - gnustep-back (GNUstep backend module) which still crashes under - Sarge. + * src/cache/ftccmap.c: trying to hack binary compatibility for + gnustep-back (GNUstep backend module) which still crashes under Sarge. 2006-02-23 Chia-I Wu diff --git a/include/freetype/freetype.h b/include/freetype/freetype.h index 66550e8ff..877f61547 100644 --- a/include/freetype/freetype.h +++ b/include/freetype/freetype.h @@ -2023,6 +2023,9 @@ FT_BEGIN_HEADER /* useful if you want to specify the font size for, say, a window */ /* of a given dimension and 80x24 cells. */ /* */ + /* FT_SIZE_REQUEST_TYPE_SCALES :: */ + /* Specify the scales directly. */ + /* */ /* */ /* The above descriptions only apply to scalable formats. For bitmap */ /* formats, the behavior is up to the driver. */ @@ -2036,6 +2039,7 @@ FT_BEGIN_HEADER FT_SIZE_REQUEST_TYPE_REAL_DIM, FT_SIZE_REQUEST_TYPE_BBOX, FT_SIZE_REQUEST_TYPE_CELL, + FT_SIZE_REQUEST_TYPE_SCALES, FT_SIZE_REQUEST_TYPE_MAX @@ -2072,8 +2076,8 @@ FT_BEGIN_HEADER typedef struct FT_Size_RequestRec_ { FT_Size_Request_Type type; - FT_F26Dot6 width; - FT_F26Dot6 height; + FT_Long width; + FT_Long height; FT_UInt horiResolution; FT_UInt vertResolution; diff --git a/src/base/ftobjs.c b/src/base/ftobjs.c index 8f53eac61..a326714af 100644 --- a/src/base/ftobjs.c +++ b/src/base/ftobjs.c @@ -2148,6 +2148,16 @@ h = face->bbox.yMax - face->bbox.yMin; break; + case FT_SIZE_REQUEST_TYPE_SCALES: + metrics->x_scale = (FT_Fixed)req->width; + metrics->y_scale = (FT_Fixed)req->height; + if ( !metrics->x_scale ) + metrics->x_scale = metrics->y_scale; + else if ( !metrics->y_scale ) + metrics->y_scale = metrics->x_scale; + goto Calculate_Ppem; + break; + default: /* this never happens */ return; @@ -2193,6 +2203,7 @@ scaled_w = FT_MulDiv( scaled_h, w, h ); } + Calculate_Ppem: /* calculate the ppems */ if ( req->type != FT_SIZE_REQUEST_TYPE_NOMINAL ) {