ref: a8e7a01965c4b504c297d1b98e5fa6bb0c7a04ed
parent: a3873d27027fe24c335d85bb9a5e44f94a7ee4a7
author: Wu, Chia-I (吳佳一) <[email protected]>
date: Fri Feb 24 01:11:30 EST 2006
* 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.
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2006-02-24 Chia-I Wu <[email protected]>
+
+ * 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 <[email protected]>
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 <[email protected]>
--- a/include/freetype/freetype.h
+++ b/include/freetype/freetype.h
@@ -2023,6 +2023,9 @@
/* 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_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 @@
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;
--- 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 )
{