CodeEditApp / CodeEditApp/CodeEdit

✨ Support fallback fonts in Text Editing preferences

未关闭
#1,032 1 条评论 1 个 reaction 已指派 0 人 在 GitHub 查看
enhancement
主要语言
Swift
星标
23k
派生
1.2k
PR 合并指标
30 天内没有已合并 PR

描述

### Is your feature request related to a problem? Please describe.

No

### Describe the solution you'd like

Hello,

Currently, the **Text Editing** settings allow users to select one font only. In many cases, one font is not enough to cover up the Unicode characters that need. We could use multiple fonts to work as a font chain, just like the CSS `font-family`.

In Cocoa, there is a way to combine multple fonts as one NSFont instance, sample code:

~~~swift
static func combinedFont(from fontNames: [String], size: CGFloat) -> NSFont? {
guard let primary = fontNames.first, let primaryFont = NSFont(name: primary, size: size) else { return nil }
let primaryDescriptor: NSFontDescriptor = primaryFont.fontDescriptor
let descriptors: [NSFontDescriptor] = fontNames.dropFirst().map { name -> NSFontDescriptor in
return primaryDescriptor.addingAttributes([.name: name])
}
let descriptor: NSFontDescriptor = primaryDescriptor.addingAttributes([.cascadeList: descriptors])
return NSFont(descriptor: descriptor, size: size)
}
~~~

### Describe alternatives you've considered

Maybe we could put a TextField in **Text Editing** settings, let users to enter the font names they wanted.

### Additional context

screenshot-text-editing

贡献指南

打开贡献指南

评估

这个 Issue 还没有评估数据。

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。