Я хочу создать всплывающее окно, подобное тому, которое находится в Pages.app (или в TextEdit.app), меню которого представляет собой отфильтрованный список семейств шрифтов.Как создать отфильтрованный набор доступных имен семейств шрифтов? (например, в Pages или TextEdit)
Я могу получить массив доступных имен фамилий шрифтов от [NSFontManager availableFontFamilies]
, но это дает гораздо больше семейств шрифтов, чем во всплывающем меню «Страницы».
С другой стороны, я могу получить то, что кажется правильно отфильтрованным набором дескрипторов шрифтов от [NSFontCollection fontCollectionWithName:NSFontCollectionUser]
, но также включает в себя каждый член семейства (курсив, полужирный и т. Д.). Я не хочу включать каждого члена в свой popup, только фамилии.
Я хочу отфильтрованный набор фамилия фамилии.
Имена, которые я выбрал из NSFontManager
, кажутся дезинфицированными для пользовательского интерфейса, тогда как значения имен, которые я получаю из словаря атрибутов дескриптора шрифта ([myFontDescriptor fontAttributes][NSFontNameAttribute]
), не являются. Поэтому я не могу просто сделать простой набор пересечений двух групп на основе строковых значений, то же самое может иметь разные имена.
Вы смотрели на '' NSFontFamilyAttribute' и NSFontVisibleNameAttribute'? –
@KenThomases Да. Я повторил массив шрифтовых дескрипторов, возвращаемых из fontCollection, записывая словарь атрибутов каждого из них, но каждый раз каждый раз были «NSFontNameAttribute» (со значениями, такими как «HelveticaNeue-CondensedBlack» и т. Д.) И «NSCTFontDesignLanguagesAttribute» (в моем случае , всегда со значениями «en»). – proxpero
'NSFontDescriptor' немного странно в моем тестировании. Если вы зарегистрируете его напрямую или запросите его '-fontAttributes', вы можете получить очень мало атрибутов. Однако, если вы вызываете метод '-objectForKey:', вы можете получить больше. –