From ce89406b9a7e68acefae307281dc98e97a7bca88 Mon Sep 17 00:00:00 2001 From: Eugene Sandulenko Date: Wed, 12 Oct 2016 23:27:50 +0200 Subject: GRAPHICS: Fix BDF font referencing on font generation --- graphics/fonts/bdf.cpp | 6 +++--- graphics/macgui/macfontmanager.cpp | 8 ++++++-- graphics/macgui/macfontmanager.h | 2 +- 3 files changed, 10 insertions(+), 6 deletions(-) diff --git a/graphics/fonts/bdf.cpp b/graphics/fonts/bdf.cpp index 34155fcec1..93b64d8225 100644 --- a/graphics/fonts/bdf.cpp +++ b/graphics/fonts/bdf.cpp @@ -706,7 +706,7 @@ BdfFont *BdfFont::scaleFont(BdfFont *src, int newSize) { return NULL; } - if (src->getFontSize()) { + if (src->getFontSize() == 0) { warning("Requested to scale 0 size font"); return NULL; } @@ -735,11 +735,13 @@ BdfFont *BdfFont::scaleFont(BdfFont *src, int newSize) { boxes[i].xOffset = src->_data.boxes[i].xOffset; boxes[i].yOffset = src->_data.boxes[i].yOffset; } + data.boxes = boxes; byte *advances = new byte[data.numCharacters]; for (int i = 0; i < data.numCharacters; ++i) { advances[i] = src->_data.advances[i]; } + data.advances = advances; byte **bitmaps = new byte *[data.numCharacters]; @@ -758,8 +760,6 @@ BdfFont *BdfFont::scaleFont(BdfFont *src, int newSize) { } data.bitmaps = bitmaps; - data.advances = advances; - data.boxes = boxes; return new BdfFont(data, DisposeAfterUse::YES); } diff --git a/graphics/macgui/macfontmanager.cpp b/graphics/macgui/macfontmanager.cpp index 52e82584c7..21f9c08160 100644 --- a/graphics/macgui/macfontmanager.cpp +++ b/graphics/macgui/macfontmanager.cpp @@ -257,15 +257,19 @@ void MacFontManager::generateFontSubstitute(MacFont &macFont) { } // Now next smaller font, which is the biggest we have - generateFont(macFont, MacFont(macFont.getId(), maxSize, macFont.getSlant())); + generateFont(macFont, *_fontRegistry[getFontName(macFont.getId(), maxSize, macFont.getSlant())]); } -void MacFontManager::generateFont(MacFont toFont, MacFont fromFont) { +void MacFontManager::generateFont(MacFont &toFont, MacFont &fromFont) { debugN("Found font substitute for font '%s' ", getFontName(toFont)); debug("as '%s'", getFontName(fromFont)); Graphics::BdfFont *font = Graphics::BdfFont::scaleFont(fromFont.getBdfFont(), toFont.getSize()); + if (!font) { + warning("Failed to generate font '%s'", getFontName(toFont)); + } + toFont.setGenerated(true); toFont.setBdfFont(font); diff --git a/graphics/macgui/macfontmanager.h b/graphics/macgui/macfontmanager.h index 3e90818cda..38ea3f342c 100644 --- a/graphics/macgui/macfontmanager.h +++ b/graphics/macgui/macfontmanager.h @@ -104,7 +104,7 @@ private: const char *getFontName(MacFont &font); void generateFontSubstitute(MacFont &macFont); - void generateFont(MacFont toFont, MacFont fromFont); + void generateFont(MacFont &toFont, MacFont &fromFont); private: bool _builtInFonts; -- cgit v1.2.3