(svn r25663) -Fix [FS#4857]: [OSX] Monospace font detection.

This commit is contained in:
michi_cc
2013-08-05 20:36:06 +00:00
parent 313cdb579e
commit 3569a4fe5a
3 changed files with 21 additions and 0 deletions

View File

@@ -496,6 +496,8 @@ bool SetFallbackFont(FreeTypeSettings *settings, const char *language_isocode, i
if ((symbolic_traits & kCTFontClassMaskTrait) == (CTFontStylisticClass)kCTFontSymbolicClass || (symbolic_traits & kCTFontVerticalTrait)) continue;
/* Skip bold fonts (especially Arial Bold, which looks worse than regular Arial). */
if (symbolic_traits & kCTFontBoldTrait) continue;
/* Select monospaced fonts if asked for. */
if (((symbolic_traits & kCTFontMonoSpaceTrait) == kCTFontMonoSpaceTrait) != callback->Monospace()) continue;
/* Get font name. */
char name[128];
@@ -530,8 +532,13 @@ bool SetFallbackFont(FreeTypeSettings *settings, const char *language_isocode, i
CFStringRef font_name;
ATSFontGetName(font, kATSOptionFlagsDefault, &font_name);
CFStringGetCString(font_name, name, lengthof(name), kCFStringEncodingUTF8);
bool monospace = IsMonospaceFont(font_name);
CFRelease(font_name);
/* Select monospaced fonts if asked for. */
if (monospace != callback->Monospace()) continue;
/* We only want the base font and not bold or italic variants. */
if (strstr(name, "Italic") != NULL || strstr(name, "Bold")) continue;