У меня есть набор пользовательских граней шрифтов для семейства шрифтов BentonSans
. Учитывая регулярный вес шрифта, я хотел бы получить жирную версию без указания имени или семейства, например, так:
let font = UIFont(name: "BentonSans-Regular", size: 13)!
let boldDescriptor = font.fontDescriptor
.withSymbolicTraits(.traitBold) // nil
Однако жирная версия BentonSans
не может быть найдена, предположительноиз-за того, как шрифт был создан и импортирован в UIKit
. Я попытался создать новый UIFontDescriptor
для каждого шрифта, но они, кажется, не знают о другом, что имеет смысл.
Я надеялся, что можно описать шрифты вручную, как это, но этоконкретный пример по умолчанию Helvetica
, потому что нет семейства с именем BentonSans
.
let boldDescriptor = UIFontDescriptor(fontAttributes: [
.family: "BentonSans",
.name: "BentonSans-Bold",
.traits: [UIFontDescriptor.TraitKey.weight: UIFont.Weight.regular]
])
Вот то, с чем я работаю:
let customFonts = UIFont.familyNames.filter {
$0.hasPrefix("BentonSans")
}
for family in customFonts {
let names = UIFont.fontNames(forFamilyName: family)
print("\(family): \(names)")
}
// Output
// BentonSans-Regular: ["BentonSans-Regular"]
// BentonSans-Book: ["BentonSans-Book"]
// BentonSans-Bold: ["BentonSans-Bold"]
// BentonSans-Medium: ["BentonSans-Medium"]
// Expected Output
// BentonSans: ["BentonSans-Regular", "BentonSans-Book", "BentonSans-Bold", "BentonSans-Medium"]