mirror of
https://github.com/libretro/scummvm.git
synced 2025-01-26 20:59:00 +00:00
GRAPHICS: Search for font substitution for MacFonts
This commit is contained in:
parent
6de4334f2b
commit
086963fd23
@ -206,7 +206,7 @@ bool World::loadWorld(Common::MacResManager *resMan) {
|
||||
scene->_textBounds = readRect(res);
|
||||
int fontType = res->readUint16BE();
|
||||
int fontSize = res->readUint16BE();
|
||||
scene->_font = new Graphics::MacFont(fontType, fontSize, Graphics::FontManager::kConsoleFont);
|
||||
scene->_font = new Graphics::MacFont(fontType, fontSize, Graphics::kMacFontRegular, Graphics::FontManager::kConsoleFont);
|
||||
|
||||
Common::String text;
|
||||
while (res->pos() < res->size()) {
|
||||
|
@ -72,6 +72,7 @@ void MacFontManager::loadFonts() {
|
||||
}
|
||||
|
||||
FontMan.assignFontToName(fontName, font);
|
||||
_fontRegistry.setVal(fontName, font);
|
||||
|
||||
debug(2, " %s", fontName.c_str());
|
||||
}
|
||||
@ -86,7 +87,10 @@ const Font *MacFontManager::getFont(MacFont macFont) {
|
||||
|
||||
if (!_builtInFonts) {
|
||||
if (macFont.getName().empty())
|
||||
macFont.setName(getFontName(macFont.getId(), macFont.getSize()));
|
||||
macFont.setName(getFontName(macFont.getId(), macFont.getSize(), macFont.getSlant()));
|
||||
|
||||
if (!_fontRegistry.contains(macFont.getName()))
|
||||
generateFontSubstitute(macFont);
|
||||
|
||||
font = FontMan.getFontByName(macFont.getName());
|
||||
|
||||
@ -172,4 +176,26 @@ const char *MacFontManager::getFontName(int id, int size, int slant) {
|
||||
return name;
|
||||
}
|
||||
|
||||
const char *MacFontManager::getFontName(MacFont &font) {
|
||||
return getFontName(font.getId(), font.getSize(), font.getSlant());
|
||||
}
|
||||
|
||||
void MacFontManager::generateFontSubstitute(MacFont &macFont) {
|
||||
if (_fontRegistry.contains(getFontName(macFont.getId(), macFont.getSize() * 2, macFont.getSlant()))) {
|
||||
generateFont(macFont, MacFont(macFont.getId(), macFont.getSize() * 2, macFont.getSlant()));
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
if (_fontRegistry.contains(getFontName(macFont.getId(), macFont.getSize() / 2, macFont.getSlant()))) {
|
||||
generateFont(macFont, MacFont(macFont.getId(), macFont.getSize() / 2, macFont.getSlant()));
|
||||
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
void MacFontManager::generateFont(MacFont fromFont, MacFont toFont) {
|
||||
warning("Found font substitute from font %s to %s", getFontName(fromFont), getFontName(toFont));
|
||||
}
|
||||
|
||||
} // End of namespace Graphics
|
||||
|
@ -37,16 +37,20 @@ enum {
|
||||
kMacFontItalic
|
||||
};
|
||||
|
||||
class BdfFont;
|
||||
|
||||
class MacFont {
|
||||
public:
|
||||
MacFont(int id = kMacFontChicago, int size = 12, FontManager::FontUsage fallback = Graphics::FontManager::kBigGUIFont) {
|
||||
MacFont(int id = kMacFontChicago, int size = 12, int slant = kMacFontRegular, FontManager::FontUsage fallback = Graphics::FontManager::kBigGUIFont) {
|
||||
_id = id;
|
||||
_size = size;
|
||||
_slant = slant;
|
||||
_fallback = fallback;
|
||||
}
|
||||
|
||||
int getId() { return _id; };
|
||||
int getSize() { return _size; }
|
||||
int getSlant() { return _slant; }
|
||||
Common::String getName() { return _name; }
|
||||
void setName(Common::String &name) { _name = name; }
|
||||
void setName(const char *name) { _name = name; }
|
||||
@ -55,6 +59,7 @@ public:
|
||||
private:
|
||||
int _id;
|
||||
int _size;
|
||||
int _slant;
|
||||
Common::String _name;
|
||||
FontManager::FontUsage _fallback;
|
||||
};
|
||||
@ -86,9 +91,14 @@ private:
|
||||
* @return the font name or NULL if ID goes beyond the mapping
|
||||
*/
|
||||
const char *getFontName(int id, int size, int slant = kMacFontRegular);
|
||||
const char *getFontName(MacFont &font);
|
||||
|
||||
void generateFontSubstitute(MacFont &macFont);
|
||||
void generateFont(MacFont fromFont, MacFont toFont);
|
||||
|
||||
private:
|
||||
bool _builtInFonts;
|
||||
Common::HashMap<Common::String, BdfFont *> _fontRegistry;
|
||||
};
|
||||
|
||||
} // End of namespace Graphics
|
||||
|
Loading…
x
Reference in New Issue
Block a user