gpt4 book ai didi

macos - 如何在 MacOS 中查找东亚字符的默认字体

转载 作者:行者123 更新时间:2023-12-05 05:07:42 42 4
gpt4 key购买 nike

当使用文本编辑应用程序时,选择一种字体(例如“Menlo”)来呈现字形,当所选字体不包含特殊字形(例如“𠹷”,它是一个简单的中文字形,“Menlo"不包含它), 应用程序会选择一种字体来呈现它, 在 MacOS(Catalina) 中, 大约有 62 种字体 (STBaoliSC-Regular, STKaiti, STSong, PingFangSC-Regular...) 包含这个字形“𠹷”,我发现几乎每个文本编辑应用程序(vscode、sublime text、TextEdit)都选择相同的字体——“PingFangSC-Regular”,所以我考虑是否每个字形都有自己的默认字体?如果是这样,我怎样才能得到字体名称?

最佳答案

这由“级联列表”处理。如果您想要默认列表,可以通过 CTFontCopyDefaultCascadeListForLanguages 以每种字体为基础获得:

import CoreText
let font = CTFontCreateWithName("Helvetica" as CFString, 12, nil)
let descriptors = CTFontCopyDefaultCascadeListForLanguages(font, nil)! as! [CTFontDescriptor]

如果你想查看列表,你可以这样做(Core Text 没有很好地桥接 Swift):

for descriptor in descriptors {
let attributes = CTFontDescriptorCopyAttributes(descriptor) as! [String: Any]
print(attributes[kCTFontNameAttribute as String]!)
}

==>

LucidaGrande
.AppleSymbolsFB
GeezaPro
NotoNastaliqUrdu
Thonburi
Kailasa
PingFangSC-Regular
PingFangTC-Regular
AppleSDGothicNeo-Regular
PingFangTC-Regular
PingFangSC-Regular
PingFangHK-Regular
PingFangSC-Regular
HiraginoSans-W3
HiraginoSansGB-W3
KohinoorBangla-Regular
KohinoorDevanagari-Regular
KohinoorGujarati-Regular
MuktaMahee-Regular
NotoSansKannada-Regular
KhmerSangamMN
LaoSangamMN
MalayalamSangamMN
NotoSansMyanmar-Regular
NotoSansZawgyi-Regular
NotoSansOriya
SinhalaSangamMN
TamilSangamMN
KohinoorTelugu-Regular
NotoSansArmenian-Regular
EuphemiaUCAS
Menlo-Regular
STIXGeneral-Regular
Galvji
Kefa-Regular
.NotoSansUniversal
AppleColorEmoji

PingFangSC-Regular 是列表中的第一个东亚字体,因此它将成为替代 Helvetica 的字体。它也是 Lucida Grande 和 Helvetica Neue 级联列表中的第一个东亚字体。而且它是一种直截了当甚至无聊的字体。但是,如果您使用的是更不寻常的字体,例如 American Typewriter?嗯,那就换成轻一点的松体。 Marker Felt 替换为 Kaiti,它在冲程宽度上有更多变化(尽管在 IMO 中,用 Kaiti Black 而不是 Regular 替换它会好得多)。我不知道有什么内置的亚洲字体与可用的拉丁字体一样“有趣”,但如果你有的话,你可以自定义级联列表来选择它(在 Mac 上使用 NSFontDescriptor,或在 iOS 上使用 UIFontDescriptor ).

如果您想了解有关级联列表的更多详细信息,请参阅 WWDC 2018 视频,Creating Apps for a Global Audience.

关于macos - 如何在 MacOS 中查找东亚字符的默认字体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58901512/

42 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com