aboutsummaryrefslogtreecommitdiff
path: root/graphics/font.cpp
diff options
context:
space:
mode:
authorJohannes Schickel2010-08-01 19:31:37 +0000
committerJohannes Schickel2010-08-01 19:31:37 +0000
commitc8aabe77e8858b68c5458888a01e5aeb3f5ffb2d (patch)
treeabd1d24fad67c912c2681e353dc56acc133fa22c /graphics/font.cpp
parent2095ce31bde18f6b3a153d7479467eb13ed009ff (diff)
downloadscummvm-rg350-c8aabe77e8858b68c5458888a01e5aeb3f5ffb2d.tar.gz
scummvm-rg350-c8aabe77e8858b68c5458888a01e5aeb3f5ffb2d.tar.bz2
scummvm-rg350-c8aabe77e8858b68c5458888a01e5aeb3f5ffb2d.zip
GUI: Fix font cache.
The bounding boxes of the glyphs use signed coordinates. We stored only unsigned coordinates, which resulted in incorrect glyph positioning. Conrecte example: the bounding box of the glyphs for clR6x12-iso-8859-5.bdf used: x y w h 0 -3 6 12 We on the other hand interpreted that as: x y w h 0 65533 6 12 when loading the font from our font cache. svn-id: r51586
Diffstat (limited to 'graphics/font.cpp')
-rw-r--r--graphics/font.cpp8
1 files changed, 4 insertions, 4 deletions
diff --git a/graphics/font.cpp b/graphics/font.cpp
index 629f2f4b82..74247d4da1 100644
--- a/graphics/font.cpp
+++ b/graphics/font.cpp
@@ -609,8 +609,8 @@ bool NewFont::cacheFontData(const NewFont &font, const Common::String &filename)
cacheFile.writeUint16BE(font.desc.height);
cacheFile.writeUint16BE(font.desc.fbbw);
cacheFile.writeUint16BE(font.desc.fbbh);
- cacheFile.writeUint16BE(font.desc.fbbx);
- cacheFile.writeUint16BE(font.desc.fbby);
+ cacheFile.writeSint16BE(font.desc.fbbx);
+ cacheFile.writeSint16BE(font.desc.fbby);
cacheFile.writeUint16BE(font.desc.ascent);
cacheFile.writeUint16BE(font.desc.firstchar);
cacheFile.writeUint16BE(font.desc.size);
@@ -667,8 +667,8 @@ NewFont *NewFont::loadFromCache(Common::SeekableReadStream &stream) {
data->height = stream.readUint16BE();
data->fbbw = stream.readUint16BE();
data->fbbh = stream.readUint16BE();
- data->fbbx = stream.readUint16BE();
- data->fbby = stream.readUint16BE();
+ data->fbbx = stream.readSint16BE();
+ data->fbby = stream.readSint16BE();
data->ascent = stream.readUint16BE();
data->firstchar = stream.readUint16BE();
data->size = stream.readUint16BE();