macos transcript selection

This commit is contained in:
Ian Gulliver
2026-10-17 09:15:50 -07:00
parent c42a513e2c
commit 248c0d5904
3 changed files with 228 additions and 7 deletions
+12 -3
View File
@@ -24,10 +24,10 @@ enum Fonts {
return CTFontCreateWithFontDescriptor(d, size, nil)
}
nonisolated(unsafe) private static var fonts: [String: Font] = [:]
nonisolated(unsafe) private static var fonts: [String: (font: Font, ns: NSFont)] = [:]
private static let lock = NSLock()
static func font(_ size: CGFloat, weight: CGFloat = 400, italic: Bool = false) -> Font {
private static func cached(_ size: CGFloat, _ weight: CGFloat, _ italic: Bool) -> (font: Font, ns: NSFont) {
let key = "\(size) \(weight) \(italic)"
lock.lock()
defer {
@@ -36,8 +36,17 @@ enum Fonts {
if let f = fonts[key] {
return f
}
let f = Font(ct(size, weight: weight, italic: italic))
let c = ct(size, weight: weight, italic: italic)
let f = (Font(c), c as NSFont)
fonts[key] = f
return f
}
static func font(_ size: CGFloat, weight: CGFloat = 400, italic: Bool = false) -> Font {
cached(size, weight, italic).font
}
static func ns(_ size: CGFloat, weight: CGFloat = 400, italic: Bool = false) -> NSFont {
cached(size, weight, italic).ns
}
}