... |
... |
@@ -397,9 +397,9 @@ |
397
|
397
|
{
|
398
|
398
|
FT_Stream stream = face->root.stream;
|
399
|
399
|
FT_UInt offset;
|
400
|
|
- FT_UShort upem, ppem, resolution;
|
|
400
|
+ FT_UShort ppem, resolution;
|
401
|
401
|
TT_HoriHeader *hori;
|
402
|
|
- FT_Pos ppem_; /* to reduce casts */
|
|
402
|
+ FT_Fixed scale;
|
403
|
403
|
|
404
|
404
|
FT_Error error;
|
405
|
405
|
FT_Byte* p;
|
... |
... |
@@ -422,32 +422,23 @@ |
422
|
422
|
|
423
|
423
|
FT_FRAME_EXIT();
|
424
|
424
|
|
425
|
|
- upem = face->header.Units_Per_EM;
|
426
|
|
- hori = &face->horizontal;
|
427
|
|
-
|
428
|
425
|
metrics->x_ppem = ppem;
|
429
|
426
|
metrics->y_ppem = ppem;
|
430
|
427
|
|
431
|
|
- ppem_ = (FT_Pos)ppem;
|
|
428
|
+ scale = FT_DivFix( ppem * 64, face->header.Units_Per_EM );
|
|
429
|
+ hori = &face->horizontal;
|
432
|
430
|
|
433
|
|
- metrics->ascender =
|
434
|
|
- FT_MulDiv( hori->Ascender, ppem_ * 64, upem );
|
435
|
|
- metrics->descender =
|
436
|
|
- FT_MulDiv( hori->Descender, ppem_ * 64, upem );
|
437
|
|
- metrics->height =
|
438
|
|
- FT_MulDiv( hori->Ascender - hori->Descender + hori->Line_Gap,
|
439
|
|
- ppem_ * 64, upem );
|
440
|
|
- metrics->max_advance =
|
441
|
|
- FT_MulDiv( hori->advance_Width_Max, ppem_ * 64, upem );
|
|
431
|
+ metrics->ascender = FT_MulFix( hori->Ascender, scale );
|
|
432
|
+ metrics->descender = FT_MulFix( hori->Descender, scale );
|
|
433
|
+ metrics->height =
|
|
434
|
+ FT_MulFix( hori->Ascender - hori->Descender + hori->Line_Gap,
|
|
435
|
+ scale );
|
|
436
|
+ metrics->max_advance = FT_MulFix( hori->advance_Width_Max, scale );
|
442
|
437
|
|
443
|
438
|
/* set the scale values (in 16.16 units) so advances */
|
444
|
439
|
/* from the hmtx and vmtx table are scaled correctly */
|
445
|
|
- metrics->x_scale = FT_MulDiv( metrics->x_ppem,
|
446
|
|
- 64 * 0x10000,
|
447
|
|
- face->header.Units_Per_EM );
|
448
|
|
- metrics->y_scale = FT_MulDiv( metrics->y_ppem,
|
449
|
|
- 64 * 0x10000,
|
450
|
|
- face->header.Units_Per_EM );
|
|
440
|
+ metrics->x_scale = scale;
|
|
441
|
+ metrics->y_scale = scale;
|
451
|
442
|
|
452
|
443
|
return error;
|
453
|
444
|
}
|