diff options
author | Wu, Chia-I (吳佳一) <olvaffe@gmail.com> | 2006-01-14 05:09:30 +0000 |
---|---|---|
committer | Wu, Chia-I (吳佳一) <olvaffe@gmail.com> | 2006-01-14 05:09:30 +0000 |
commit | e33dc2ebeef85f78805a422f089307606925e062 (patch) | |
tree | 92105b33699a60b667b3c0db0e3c88419d1db551 /src/bdf | |
parent | f1c2b91e149dd24cb7ad54bcc6210ece8b076aa0 (diff) | |
download | freetype2-e33dc2ebeef85f78805a422f089307606925e062.tar.gz |
* docs/CHANGES: Mention the size selection change.
* src/bdf/bdfdrivr.c (BDF_Size_Request, BDF_Size_Select),
src/pcf/pcfdrivr.c (PCF_Size_Request, PCF_Size_Select),
src/winfonts/winfnt.c (FNT_Size_Request, FNT_Size_Select): Do size
matching for request of type NOMINAL and REAL_DIM.
* src/winfonts/winfnt.c (FNT_Face_Init): Print trace message when
`pixel_height' is used for nominal height.
* src/base/ftobjs.c (FT_Request_Size): Call `FT_Match_Size' if the
face is bitmap only and driver doesn't provide `request_size'. This
is added merely for completion as no driver satisfies the conditions.
Diffstat (limited to 'src/bdf')
-rw-r--r-- | src/bdf/bdfdrivr.c | 36 |
1 files changed, 29 insertions, 7 deletions
diff --git a/src/bdf/bdfdrivr.c b/src/bdf/bdfdrivr.c index 445fb9fa8..213abcb99 100644 --- a/src/bdf/bdfdrivr.c +++ b/src/bdf/bdfdrivr.c @@ -592,6 +592,8 @@ THE SOFTWARE. size->metrics.ascender = bdffont->font_ascent << 6; size->metrics.descender = -bdffont->font_descent << 6; + size->metrics.height = ( bdffont->font_ascent + + bdffont->font_descent ) << 6; size->metrics.max_advance = bdffont->bbx.width << 6; return BDF_Err_Ok; @@ -602,20 +604,40 @@ THE SOFTWARE. BDF_Size_Request( FT_Size size, FT_Size_Request req ) { - FT_Face face = size->face; - FT_Error error; + FT_Face face = size->face; + FT_Bitmap_Size* bsize = face->available_sizes; + bdf_font_t* bdffont = ( (BDF_Face)face )->bdffont; + FT_Error error = BDF_Err_Invalid_Pixel_Size; + FT_Long height; - error = FT_Match_Size( face, req, 1, NULL ); + if ( req->vertResolution ) + height = ( req->height * req->vertResolution + 36 ) / 72; + else + height = req->height; + + height = ( height + 32 ) >> 6; + + switch ( req->type ) + { + case FT_SIZE_REQUEST_TYPE_NOMINAL: + if ( height == ( bsize->y_ppem + 32 ) >> 6 ) + error = BDF_Err_Ok; + break; + case FT_SIZE_REQUEST_TYPE_REAL_DIM: + if ( height == ( bdffont->font_ascent + + bdffont->font_descent ) ) + error = BDF_Err_Ok; + break; + default: + error = BDF_Err_Unimplemented_Feature; + break; + } if ( error ) return error; else - { - size->metrics.height = face->available_sizes->height << 6; - return BDF_Size_Select( size, 0 ); - } } |