* 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.
This commit is contained in:
Wu, Chia-I (吳佳一) 2006-02-24 06:11:30 +00:00
parent a3873d2702
commit a8e7a01965
3 changed files with 27 additions and 5 deletions

View File

@ -1,3 +1,11 @@
2006-02-24 Chia-I Wu <b90201047@ntu.edu.tw>
* 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 <david@freetype.org>
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 <b90201047@ntu.edu.tw>

View File

@ -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. */
/* */
/* <Note> */
/* 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;

View File

@ -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 )
{