Skip to content

Commit 1c60bbc

Browse files
committed
[Fix] Better font creator
1 parent 111e615 commit 1c60bbc

File tree

1 file changed

+17
-10
lines changed

1 file changed

+17
-10
lines changed

sources/SquirrelTheme.swift

+17-10
Original file line numberDiff line numberDiff line change
@@ -300,18 +300,25 @@ private extension SquirrelTheme {
300300
let fontStrings = fontString.split(separator: ",")
301301
var fonts = [NSFont]()
302302
for string in fontStrings {
303-
let trimedString = string.trimmingCharacters(in: .whitespaces)
304-
let familyName = if let firstPart = trimedString.split(separator: "-").first {
305-
String(firstPart)
306-
} else {
307-
trimedString
308-
}
309-
if !seenFontFamilies.contains(familyName) {
310-
seenFontFamilies.insert(familyName)
311-
if let validFont = NSFont(name: trimedString, size: Self.defaultFontSize) {
312-
fonts.append(validFont)
303+
if let matchedFontName = try? /^\s*(.+)-([^-]+)\s*$/.firstMatch(in: string) {
304+
let family = String(matchedFontName.output.1)
305+
let style = String(matchedFontName.output.2)
306+
if seenFontFamilies.contains(family) { continue }
307+
let fontDescriptor = NSFontDescriptor(fontAttributes: [.family: family, .face: style])
308+
if let font = NSFont(descriptor: fontDescriptor, size: Self.defaultFontSize) {
309+
fonts.append(font)
310+
seenFontFamilies.insert(family)
311+
continue
313312
}
314313
}
314+
let fontName = string.trimmingCharacters(in: .whitespaces)
315+
if seenFontFamilies.contains(fontName) { continue }
316+
let fontDescriptor = NSFontDescriptor(fontAttributes: [.name: fontName])
317+
if let font = NSFont(descriptor: fontDescriptor, size: Self.defaultFontSize) {
318+
fonts.append(font)
319+
seenFontFamilies.insert(fontName)
320+
continue
321+
}
315322
}
316323
return fonts
317324
}

0 commit comments

Comments
 (0)