aboutsummaryrefslogtreecommitdiff
path: root/graphics/macgui/macfontmanager.cpp
diff options
context:
space:
mode:
authorEugene Sandulenko2017-02-04 16:04:36 +0100
committerEugene Sandulenko2017-02-04 16:04:36 +0100
commit1a4be95aaa3ae8a857a9d3d2b3903b42396b443d (patch)
tree3106e310ba4d76a4e60ae5730a79df9dd8d5f4ff /graphics/macgui/macfontmanager.cpp
parent91d85feace2588c4e9673148e453e8a6fdc0bcb5 (diff)
downloadscummvm-rg350-1a4be95aaa3ae8a857a9d3d2b3903b42396b443d.tar.gz
scummvm-rg350-1a4be95aaa3ae8a857a9d3d2b3903b42396b443d.tar.bz2
scummvm-rg350-1a4be95aaa3ae8a857a9d3d2b3903b42396b443d.zip
GRAPHICS: Try to generate font names from slant in MacFontManager
Diffstat (limited to 'graphics/macgui/macfontmanager.cpp')
-rw-r--r--graphics/macgui/macfontmanager.cpp34
1 files changed, 31 insertions, 3 deletions
diff --git a/graphics/macgui/macfontmanager.cpp b/graphics/macgui/macfontmanager.cpp
index cf7ec4094e..f57cc9b919 100644
--- a/graphics/macgui/macfontmanager.cpp
+++ b/graphics/macgui/macfontmanager.cpp
@@ -74,6 +74,17 @@ static const char *const fontNames[] = {
"New Century Schoolbook"
};
+static const char *const fontStyleSuffixes[] = {
+ "",
+ "Bold",
+ "Italic",
+ "Underline",
+ "Outline",
+ "Shadow",
+ "Condense",
+ "Extend"
+};
+
MacFontManager::MacFontManager() {
for (uint i = 0; i < ARRAYSIZE(fontNames); i++)
if (fontNames[i])
@@ -244,8 +255,14 @@ const Font *MacFontManager::getFont(MacFont macFont) {
if (macFont.getName().empty())
macFont.setName(getFontName(macFont.getId(), macFont.getSize(), macFont.getSlant()));
- if (!_fontRegistry.contains(macFont.getName()))
- generateFontSubstitute(macFont);
+ if (!_fontRegistry.contains(macFont.getName())) {
+ // Let's try to generate name
+ if (macFont.getSlant() != kMacFontRegular)
+ macFont.setName(getFontName(macFont.getId(), macFont.getSize(), macFont.getSlant(), true));
+
+ if (!_fontRegistry.contains(macFont.getName()))
+ generateFontSubstitute(macFont);
+ }
font = FontMan.getFontByName(macFont.getName());
@@ -286,7 +303,7 @@ void MacFontManager::clearFontMapping() {
_extraFontIds.clear();
}
-const char *MacFontManager::getFontName(int id, int size, int slant) {
+const char *MacFontManager::getFontName(int id, int size, int slant, bool tryGen) {
static char name[128];
Common::String n;
@@ -299,6 +316,17 @@ const char *MacFontManager::getFontName(int id, int size, int slant) {
n = fontNames[0]; // Fallback to Chicago
}
+ if (tryGen && slant != kMacFontRegular) {
+ for (int i = 0; i < 7; i++) {
+ if (slant & (1 << i)) {
+ n += ' ';
+ n += fontStyleSuffixes[i + 1];
+ }
+ }
+
+ slant = 0;
+ }
+
snprintf(name, 128, "%s-%d-%d", n.c_str(), slant, size);
return name;