* 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.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90
diff --git a/ChangeLog b/ChangeLog
index 3cb79f5..e713bdd 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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>
diff --git a/include/freetype/freetype.h b/include/freetype/freetype.h
index 66550e8..877f615 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. */
+ /* */
/* <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;
diff --git a/src/base/ftobjs.c b/src/base/ftobjs.c
index 8f53eac..a326714 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 )
{