macOS 键盘快捷键使用什么字形/字体?

问题描述 投票:0回答:1

我正在尝试在用户界面中绘制与菜单中键盘快捷键所使用的字形相匹配的图像。 ⌘ 代表命令,⌥ 代表选项,等等

此列表包含使用的所有按键和 Unicode 字符,但 Apple 在(至少)macOS 10.13 和 10.14 中更改了一些键和字符。我已经确定了大部分新映射,但无法让它们真正匹配。下图显示了快捷方式在左侧菜单中的外观以及右侧在旧金山绘制的快捷方式:

我特别关心Pg Up/Pg Down,因为它使向上/向下箭头超载。我尝试过使用 U+1F861 宽头向上光倒刺箭头,但 macOS 无法识别它。

如果我将这些 Unicode 字符加载到 TextEdit 中并使用 Apple 的可下载 SF Pro Display 字体,一堆字形将强制切换到另一种字体。如果我将字体设置为 Lucinda Grande,左/右/上/下箭头与菜单匹配,但 Clear 仍然明显不同,而 Return 更方正。我在 Apple Symbols 中找到了带有方形钩的箭头,但 Font Book 仅列出了它的字形编号,而不是指定的代码点。我也找不到任何与 Home/End 字形匹配的字体,并且这些字体在菜单中看起来比我绘制它们时更清晰。

Apple 确实在键盘事件中使用了一堆 Unicode 私有使用区域功能键(例如

NSHomeFunctionKey
),但那些特定的没有分配给它们的字形

绘制这些键以使它们与系统显示的内容相匹配的正确方法是什么?我缺少什么字形,或者我需要使用什么字体?

macos cocoa
1个回答
1
投票

正确的函数调用是:

CTFontCreateUIFontForLanguage(kCTFontUIFontMenuItemCmdKey, 0, NULL)

CTFontCreateUIFontForLanguage返回一个CTFontRef,它是免费桥接到NSFont的。 macOS 10.8 及更高版本支持 kCTFontUIFontMenuItemCmdKey; macOS 10.5-10.11 还支持现已弃用的 kCTFontMenuItemCmdKeyFontType,在当前的 SDK 中它只是 kCTFontUIFontMenuItemCmdKey 的别名。

macOS 有一个名为“.Keyboard”的隐藏字体,存储在

/System/Library/Fonts/Keyboard.ttf
中,使用它可以帮助您完成大部分操作,尽管不支持的字符的后备方法并不完全相同。

CmdKey 字体确实会更改各种按键的表示形式,因此像 Page Up 箭头这样的东西会在双击箭头和朴素箭头变体之间切换,具体取决于您运行的 macOS 版本。在 macOS 11 中,他们将箭头键更改为使用粗箭头,这解决了它们的问题,并且 Page Up/Page Down 看起来很相似,但由于某种原因,他们没有更新它的字体,所以你需要手动检查。

问题中的表格需要一些调整。这些是要使用的字符值/字符串:

钥匙 Unicode 字符
退格键 U+232B 向左擦除
选项卡 U+21E5 向右箭头到栏
清除 U+2327 X 装在长方形盒子里
返回 U+21A9 带钩向左箭头
Esc U+238B 带西北箭头的断圆
空间 “空间”
向上翻页 U+21DE 双划向上箭头
向下翻页 U+21DF 双划向下箭头
U+2198 东南箭头
首页 U+2196 西北箭头
左箭头 U+2190 向左箭头 (macOS 10.0-10.15)
U+25C0 黑色左指三角形 (macOS 11+)
右箭头 U+2192 向右箭头 (macOS 10.0-10.15)
U+25B6 黑色右指三角形 (macOS 11+)
向上箭头 U+2191 向上箭头 (macOS 10.0-10.15)
U+25B2 黑色向上三角形 (macOS 11+)
向下箭头 U+2193 向下箭头 (macOS 10.0-10.15)
U+25BC 黑色下指三角形 (macOS 11+)
删除 U+2326 向右擦除
帮助 “?” + U+20DD 组合围圈
F1..F9 U+F860 MACOS 私人使用“GROUP NEXT 2”标签+“F”+
F10..F24 U+F860 MACOS 专用“GROUP NEXT 3”标签+“F”+
© www.soinside.com 2019 - 2024. All rights reserved.