mirror of
https://github.com/libretro/scummvm.git
synced 2025-02-22 20:21:06 +00:00
GRAPHICS: Use better rounding for BDF font scaling
This commit is contained in:
parent
69d86d3382
commit
9bb24b21f3
@ -746,14 +746,14 @@ BdfFont *BdfFont::scaleFont(const BdfFont *src, int newSize) {
|
||||
|
||||
BdfFontData data;
|
||||
|
||||
data.maxAdvance = (int)((float)src->_data.maxAdvance * scale);
|
||||
data.height = (int)((float)src->_data.height * scale);
|
||||
data.size = (int)((float)src->_data.size * scale);
|
||||
data.defaultBox.width = (int)((float)src->_data.defaultBox.width * scale);
|
||||
data.defaultBox.height = (int)((float)src->_data.defaultBox.height * scale);
|
||||
data.defaultBox.xOffset = (int)((float)src->_data.defaultBox.xOffset * scale);
|
||||
data.defaultBox.yOffset = (int)((float)src->_data.defaultBox.yOffset * scale);
|
||||
data.ascent = (int)((float)src->_data.ascent * scale);
|
||||
data.maxAdvance = (int)(roundf((float)src->_data.maxAdvance * scale));
|
||||
data.height = (int)(roundf((float)src->_data.height * scale));
|
||||
data.size = (int)(roundf((float)src->_data.size * scale));
|
||||
data.defaultBox.width = (int)(roundf((float)src->_data.defaultBox.width * scale));
|
||||
data.defaultBox.height = (int)(roundf((float)src->_data.defaultBox.height * scale));
|
||||
data.defaultBox.xOffset = (int)(roundf((float)src->_data.defaultBox.xOffset * scale));
|
||||
data.defaultBox.yOffset = (int)(roundf((float)src->_data.defaultBox.yOffset * scale));
|
||||
data.ascent = (int)roundf(((float)src->_data.ascent * scale));
|
||||
data.firstCharacter = src->_data.firstCharacter;
|
||||
data.defaultCharacter = src->_data.defaultCharacter;
|
||||
data.numCharacters = src->_data.numCharacters;
|
||||
@ -768,16 +768,16 @@ BdfFont *BdfFont::scaleFont(const BdfFont *src, int newSize) {
|
||||
|
||||
BdfBoundingBox *boxes = new BdfBoundingBox[data.numCharacters];
|
||||
for (int i = 0; i < data.numCharacters; ++i) {
|
||||
boxes[i].width = (int)((float)src->_data.boxes[i].width * scale);
|
||||
boxes[i].height = (int)((float)src->_data.boxes[i].height * scale);
|
||||
boxes[i].xOffset = (int)((float)src->_data.boxes[i].xOffset * scale);
|
||||
boxes[i].yOffset = (int)((float)src->_data.boxes[i].yOffset * scale);
|
||||
boxes[i].width = (int)(roundf((float)src->_data.boxes[i].width * scale));
|
||||
boxes[i].height = (int)(roundf((float)src->_data.boxes[i].height * scale));
|
||||
boxes[i].xOffset = (int)(roundf((float)src->_data.boxes[i].xOffset * scale));
|
||||
boxes[i].yOffset = (int)(roundf((float)src->_data.boxes[i].yOffset * scale));
|
||||
}
|
||||
data.boxes = boxes;
|
||||
|
||||
byte *advances = new byte[data.numCharacters];
|
||||
for (int i = 0; i < data.numCharacters; ++i) {
|
||||
advances[i] = (int)((float)src->_data.advances[i] * scale);
|
||||
advances[i] = (int)(roundf((float)src->_data.advances[i] * scale));
|
||||
}
|
||||
data.advances = advances;
|
||||
|
||||
@ -804,7 +804,7 @@ BdfFont *BdfFont::scaleFont(const BdfFont *src, int newSize) {
|
||||
for (int x = 0; x < box.width; x++) {
|
||||
b <<= 1;
|
||||
|
||||
int sx = (int)((float)x / scale);
|
||||
int sx = (int)(roundf((float)x / scale));
|
||||
|
||||
if (srcd[sx / 8] & (0x80 >> (sx % 8))) {
|
||||
b |= 1;
|
||||
|
Loading…
x
Reference in New Issue
Block a user