Skip to content

Commit af23e44

Browse files
committed
Add support for generic font families
1 parent ee43ee2 commit af23e44

File tree

8 files changed

+64
-35
lines changed

8 files changed

+64
-35
lines changed

src/mame/layout/sd1.lay

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
<?xml version="1.0"?>
22
<mamelayout version="2">
3-
<param name="f_bold" value="Nonexistent Sans|Bold,Liberation Sans|Bold,Helvetica|Bold,Arial|Bold,default" />
4-
<param name="f_italic" value="Nonexistent Sans|Italic,Liberation Sans|Italic,Helvetica|Italic,Arial|Italic,default" />
5-
<param name="f_bold_italic" value="Nonexistent Sans|BoldItalic,Liberation Sans|BoldItalic,Helvetica|BoldItalic,Arial|BoldItalic,default" />
6-
<param name="f_regular" value="Nonexistent Sans|Regular,Liberation Sans|Regular,Helvetica|Regular,Arial|Regular,default" />
3+
<param name="f_bold" value="Nonexistent Sans|Bold,sans-serif|Bold,default" />
4+
<param name="f_italic" value="Nonexistent Sans|Italic,sans-serif|Italic,default" />
5+
<param name="f_bold_italic" value="Nonexistent Sans|BoldItalic,sans-serif|BoldItalic,default" />
6+
<param name="f_regular" value="Nonexistent Sans|Regular,sans-serif|Regular,default" />
77

88
<!-- Decoration definitions -->
99
<element name="triangle_up">

src/mame/layout/sd132.lay

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
<?xml version="1.0"?>
22
<mamelayout version="2">
3-
<param name="f_bold" value="Nonexistent Sans|Bold,Liberation Sans|Bold,Helvetica|Bold,Arial|Bold,default" />
4-
<param name="f_italic" value="Nonexistent Sans|Italic,Liberation Sans|Italic,Helvetica|Italic,Arial|Italic,default" />
5-
<param name="f_bold_italic" value="Nonexistent Sans|BoldItalic,Liberation Sans|BoldItalic,Helvetica|BoldItalic,Arial|BoldItalic,default" />
6-
<param name="f_regular" value="Nonexistent Sans|Regular,Liberation Sans|Regular,Helvetica|Regular,Arial|Regular,default" />
3+
<param name="f_bold" value="Nonexistent Sans|Bold,sans-serif|Bold,default" />
4+
<param name="f_italic" value="Nonexistent Sans|Italic,sans-serif|Italic,default" />
5+
<param name="f_bold_italic" value="Nonexistent Sans|BoldItalic,sans-serif|BoldItalic,default" />
6+
<param name="f_regular" value="Nonexistent Sans|Regular,sans-serif|Regular,default" />
77

88
<!-- Decoration definitions -->
99
<element name="triangle_up">

src/mame/layout/vfx.lay

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
<?xml version="1.0"?>
22
<mamelayout version="2">
3-
<param name="f_bold" value="Nonexistent Sans|Bold,Liberation Sans|Bold,Helvetica|Bold,Arial|Bold,default" />
4-
<param name="f_italic" value="Nonexistent Sans|Italic,Liberation Sans|Italic,Helvetica|Italic,Arial|Italic,default" />
5-
<param name="f_bold_italic" value="Nonexistent Sans|BoldItalic,Liberation Sans|BoldItalic,Helvetica|BoldItalic,Arial|BoldItalic,default" />
6-
<param name="f_regular" value="Nonexistent Sans|Regular,Liberation Sans|Regular,Helvetica|Regular,Arial|Regular,default" />
3+
<param name="f_bold" value="Nonexistent Sans|Bold,sans-serif|Bold,default" />
4+
<param name="f_italic" value="Nonexistent Sans|Italic,sans-serif|Italic,default" />
5+
<param name="f_bold_italic" value="Nonexistent Sans|BoldItalic,sans-serif|BoldItalic,default" />
6+
<param name="f_regular" value="Nonexistent Sans|Regular,sans-serif|Regular,default" />
77

88
<!-- Decoration definitions -->
99
<element name="triangle_up">

src/mame/layout/vfxsd.lay

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
<?xml version="1.0"?>
22
<mamelayout version="2">
3-
<param name="f_bold" value="Nonexistent Sans|Bold,Liberation Sans|Bold,Helvetica|Bold,Arial|Bold,default" />
4-
<param name="f_italic" value="Nonexistent Sans|Italic,Liberation Sans|Italic,Helvetica|Italic,Arial|Italic,default" />
5-
<param name="f_bold_italic" value="Nonexistent Sans|BoldItalic,Liberation Sans|BoldItalic,Helvetica|BoldItalic,Arial|BoldItalic,default" />
6-
<param name="f_regular" value="Nonexistent Sans|Regular,Liberation Sans|Regular,Helvetica|Regular,Arial|Regular,default" />
3+
<param name="f_bold" value="Nonexistent Sans|Bold,sans-serif|Bold,default" />
4+
<param name="f_italic" value="Nonexistent Sans|Italic,sans-serif|Italic,default" />
5+
<param name="f_bold_italic" value="Nonexistent Sans|BoldItalic,sans-serif|BoldItalic,default" />
6+
<param name="f_regular" value="Nonexistent Sans|Regular,sans-serif|Regular,default" />
77

88
<!-- Decoration definitions -->
99
<element name="triangle_up">

src/osd/modules/font/font_dwrite.cpp

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -359,8 +359,6 @@ class osd_font_dwrite : public osd_font
359359

360360
// accept qualifiers from the name
361361
std::string name(_name);
362-
if (name.compare("default") == 0)
363-
name = "Segoe UI";
364362
bool bold = (strreplace(name, "[B]", "") + strreplace(name, "[b]", "") > 0);
365363
bool italic = (strreplace(name, "[I]", "") + strreplace(name, "[i]", "") > 0);
366364

@@ -375,6 +373,16 @@ class osd_font_dwrite : public osd_font
375373
name = name.substr(0, separator);
376374
}
377375

376+
// Translate generic names into platform-specific real ones
377+
if (name == "serif")
378+
name = "Times New Roman";
379+
else if (name == "sans-serif")
380+
name = "Arial";
381+
else if (name == "monospace")
382+
name = "Courier New";
383+
else if (name == "default")
384+
name = "Segoe UI";
385+
378386
// convert the face name
379387
std::wstring familyName = text::to_wstring(name);
380388

src/osd/modules/font/font_osx.cpp

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -80,17 +80,19 @@ bool osd_font_osx::open(std::string const &font_path, std::string const &_name,
8080
name = name.substr(0, separator);
8181
}
8282

83-
CFStringRef font_name;
84-
if (name == "default")
85-
{
83+
// Translate generic names into platform-specific real ones
84+
if (name == "serif")
85+
name = "Times";
86+
else if (name == "sans-serif")
87+
name = "Helvetica";
88+
else if (name == "monospace")
89+
name = "Courier";
90+
else if (name == "default")
8691
// Arial Unicode MS comes with Mac OS X 10.5 and later and is the only Mac default font with
8792
// the Unicode characters used by the vgmplay and aristmk5 layouts.
88-
font_name = CFStringCreateWithCString(nullptr, "Arial Unicode MS", kCFStringEncodingUTF8);
89-
}
90-
else
91-
{
92-
font_name = CFStringCreateWithCString(nullptr, name.c_str(), kCFStringEncodingUTF8);
93-
}
93+
name = "Arial Unicode MS";
94+
95+
CFStringRef font_name = CFStringCreateWithCString(nullptr, name.c_str(), kCFStringEncodingUTF8);
9496

9597
if (!font_name)
9698
{

src/osd/modules/font/font_sdl.cpp

Lines changed: 17 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -67,10 +67,6 @@ bool osd_font_sdl::open(std::string const &font_path, std::string const &_name,
6767
bool bakedstyles = false;
6868

6969
std::string name(_name);
70-
if (name.compare("default") == 0)
71-
{
72-
name = "Liberation Sans|Regular";
73-
}
7470

7571
// accept qualifiers from the name
7672
bool const underline = (strreplace(name, "[U]", "") + strreplace(name, "[u]", "") > 0);
@@ -79,12 +75,25 @@ bool osd_font_sdl::open(std::string const &font_path, std::string const &_name,
7975
// Handle the "Font Family|Style" type of font name:
8076
// Separate it into family and style, and extract bold and italic style information.
8177
std::string::size_type const separator = name.rfind('|');
82-
std::string const family(name.substr(0, separator));
83-
std::string const style((std::string::npos != separator) ? name.substr(separator + 1) : std::string());
78+
std::string family(name.substr(0, separator));
79+
std::string style((std::string::npos != separator) ? name.substr(separator + 1) : std::string());
8480
bool bold = (style.find("Bold") != std::string::npos) || (style.find("Black") != std::string::npos);
8581
bool italic = (style.find("Italic") != std::string::npos) || (style.find("Oblique") != std::string::npos);
8682

87-
// first up, try it as a filename
83+
// Translate generic names into platform-specific real ones:
84+
if (family == "serif")
85+
family = "Liberation Serif";
86+
else if (family == "sans-serif")
87+
family = "Liberation Sans";
88+
else if (family == "monospace")
89+
family = "Liberation Mono";
90+
else if (family == "default")
91+
{
92+
family = "Liberation Sans";
93+
style = "Regular";
94+
}
95+
96+
// first up, try it as a filename
8897
TTF_Font_ptr font = TTF_OpenFont_Magic(family, POINT_SIZE, 0);
8998

9099
// if no success, try the font path
@@ -137,6 +146,7 @@ bool osd_font_sdl::open(std::string const &font_path, std::string const &_name,
137146
if (strike)
138147
osd_printf_warning("Ignoring strikethrough for SDL_TTF older than 2.0.10\n");
139148
#endif // PATCHLEVEL
149+
osd_printf_verbose("setting style flags %x\n", styleflags);
140150
TTF_SetFontStyle(font.get(), styleflags);
141151

142152
height = TTF_FontLineSkip(font.get());

src/osd/modules/font/font_windows.cpp

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,6 @@ bool osd_font_windows::open(std::string const &font_path, std::string const &_na
6363

6464
// accept qualifiers from the name
6565
std::string name(_name);
66-
if (name.compare("default")==0) name = "Tahoma";
6766
bool bold = (strreplace(name, "[B]", "") + strreplace(name, "[b]", "") > 0);
6867
bool italic = (strreplace(name, "[I]", "") + strreplace(name, "[i]", "") > 0);
6968

@@ -78,6 +77,16 @@ bool osd_font_windows::open(std::string const &font_path, std::string const &_na
7877
name = name.substr(0, separator);
7978
}
8079

80+
// Translate generic names into platform-specific real ones:
81+
if (name == "serif")
82+
name = "Times New Roman";
83+
else if (name == "sans-serif")
84+
name = "Arial";
85+
else if (name == "monospace")
86+
name = "Courier New";
87+
else if (name == "default")
88+
name = "Tahoma";
89+
8190
// build a basic LOGFONT description of what we want
8291
LOGFONT logfont;
8392
logfont.lfHeight = DEFAULT_HEIGHT;

0 commit comments

Comments
 (0)