diff --git a/modules/juce_graphics/native/juce_Fonts_mac.mm b/modules/juce_graphics/native/juce_Fonts_mac.mm index 15e06729be..83cdda94d7 100644 --- a/modules/juce_graphics/native/juce_Fonts_mac.mm +++ b/modules/juce_graphics/native/juce_Fonts_mac.mm @@ -406,13 +406,17 @@ StringArray Font::findAllTypefaceStyles (const String& family) if (FontStyleHelpers::isPlaceholderFamilyName (family)) return findAllTypefaceStyles (FontStyleHelpers::getConcreteFamilyNameFromPlaceholder (family)); - std::set results; + std::set uniqueResults; + StringArray orderedResults; for (const auto& font : CoreTextTypeface::findRegisteredStylesForFamily (family)) { const CFUniquePtr descriptor (CTFontCopyFontDescriptor (font.get())); const CFUniquePtr cfsFontStyle ((CFStringRef) CTFontDescriptorCopyAttribute (descriptor.get(), kCTFontStyleNameAttribute)); - results.insert (String::fromCFString (cfsFontStyle.get())); + const auto name = String::fromCFString (cfsFontStyle.get()); + + if (uniqueResults.insert (name).second) + orderedResults.add (name); } CFUniquePtr cfsFontFamily (family.toCFString()); @@ -433,16 +437,14 @@ StringArray Font::findAllTypefaceStyles (const String& family) { auto ctFontDescriptorRef = (CTFontDescriptorRef) CFArrayGetValueAtIndex (fontDescriptorArray.get(), i); CFUniquePtr cfsFontStyle ((CFStringRef) CTFontDescriptorCopyAttribute (ctFontDescriptorRef, kCTFontStyleNameAttribute)); - results.insert (String::fromCFString (cfsFontStyle.get())); + const auto name = String::fromCFString (cfsFontStyle.get()); + + if (uniqueResults.insert (name).second) + orderedResults.add (name); } } - StringArray stringArray; - - for (const auto& result : results) - stringArray.add (result); - - return stringArray; + return orderedResults; } struct DefaultFontNames