Browse Source

Fixes for handling fonts with non-existent style names.

tags/2021-05-28
jules 13 years ago
parent
commit
23c46c4cda
2 changed files with 14 additions and 4 deletions
  1. +12
    -2
      modules/juce_graphics/native/juce_mac_Fonts.mm
  2. +2
    -2
      modules/juce_graphics/native/juce_win32_DirectWriteTypeface.cpp

+ 12
- 2
modules/juce_graphics/native/juce_mac_Fonts.mm View File

@@ -33,11 +33,22 @@
namespace CoreTextTypeLayout
{
static String findBestAvailableStyle (const String& typefaceName, const String& style)
{
const StringArray availableStyles (Font::findAllTypefaceStyles (typefaceName));
if (! availableStyles.contains (style))
return availableStyles[0];
return style;
}
static CTFontRef createCTFont (const Font& font, const float fontSize,
const bool applyScaleFactor)
{
CFStringRef cfFontFamily = font.getTypefaceName().toCFString();
CFStringRef cfFontStyle = font.getTypefaceStyle().toCFString();
CFStringRef cfFontStyle = findBestAvailableStyle (font.getTypefaceName(),
font.getTypefaceStyle()).toCFString();
CFStringRef keys[] = { kCTFontFamilyNameAttribute, kCTFontStyleNameAttribute };
CFTypeRef values[] = { cfFontFamily, cfFontStyle };
@@ -1070,7 +1081,6 @@ StringArray Font::findAllTypefaceStyles (const String& family)
NSArray* style = [styles objectAtIndex: i];
results.add (nsStringToJuce ((NSString*) [style objectAtIndex: 1]));
#endif
}
return results;


+ 2
- 2
modules/juce_graphics/native/juce_win32_DirectWriteTypeface.cpp View File

@@ -148,14 +148,14 @@ public:
uint32 fontFacesCount = 0;
fontFacesCount = dwFontFamily->GetFontCount();
for (uint32 i = 0; i < fontFacesCount; ++i)
for (int i = fontFacesCount; --i >= 0;)
{
hr = dwFontFamily->GetFont (i, dwFont.resetAndGetPointerAddress());
ComSmartPtr<IDWriteLocalizedStrings> faceNames;
hr = dwFont->GetFaceNames (faceNames.resetAndGetPointerAddress());
if (font.getTypefaceStyle() == getLocalisedName (faceNames))
if (i == 0 || font.getTypefaceStyle() == getLocalisedName (faceNames))
break;
}


Loading…
Cancel
Save