加载失败
Myna 是一款面向符号密集编程场景的等宽字体(monospace),设计目标是提高代码中常见符号和标点的可辨性与美观。讨论集中在具体排版决策上:如何通过 serif 区分 'l' 与 '1'、是否启用 ligatures(如把 '!=' 显示为 '≠')、curly braces 的造型、以及字距(kerning)细节。示例图使用了 C 代码作为视觉素材,引发对示例代码质量的指摘,但设计者表示这些示例主要用于视觉展示并愿意在 GitHub issues(如 issue #8)上收集改进建议。帖子本身也被提出为重复发布的问题,涉及社区对原创性与 Hacker News 排序/曝光机制的敏感。
有评论指出这是重复发布,并贴出旧的 HN 帖子(id=45849342)作为证据。原投稿者在回复中称他们更早提交,甚至早于被链接的那篇,怀疑 HN 的算法可能把重复或旧的提交推上首页。该对话反映出社区对原创性和平台排序机制如何影响曝光的关切。
有人注意到标题图与示例图中 'l' 的字形不一致,认为标题图中的带衬线版本更不易与数字 '1' 混淆;同时还指出 'lines' 一词中 l 和 i 的 kerning(字距)看起来异常。设计者回复说已修改 'l' 的 serif(衬线),但这需要重新生成所有图片,尚未完成,并提到没有为该衬线生成独立变体,建议在 issue #8 提交反馈并在 issue 中进一步说明 kerning 的问题。这个讨论具体指向可读性与视觉一致性的权衡,以及在发布前替换示例图的成本。
多位评论针对字形偏好与功能性提出具体意见:有人建议把 '!=' 用 ligature(连字)替换为 Unicode 符号 '≠',也有人明确偏好保持 '!=' 不合并;设计者说明 Myna 不使用连字,但 Unicode 字形在字体中看起来接近。另有评论批评某些字母的造型(例如扁平的 'r'、与笔画接触处的 'p')及当前流行的过于弯曲的花括号(curly braces),并对示例中的 C 代码质量提出具体问题——例如未检查 fopen() 的返回值、对可能无效的 FILE* 调用 fclose()、int main() 未返回值等。设计者回应接受关于大括号的批评,愿意考虑推出更平直的变体,并强调示例代码主要用于视觉展示而非代码质量示例。
[来源1] [来源2] [来源3] [来源4] [来源5] [来源6]
monospace(等宽字体): 每个字符占用相同水平宽度的字体,常用于代码编辑器和终端以保证列对齐和符号对齐。
serif(衬线): 字形末端的小笔画或装饰,用来增强或区分字符形态,本讨论中用于把 'l' 与 '1' 区分开。
kerning(字距调整): 针对特定字符对微调间距以改善视觉平衡和可读性的排版操作,例如 l 与 i 之间的间距问题。
ligature(连字): 把两个或多个字符合并成单一字形的排版特性(如把 '!=' 视觉上表示为 '≠'),在可读性与语义保留间存在权衡。
Unicode: 全球通用的字符编码标准,包含数学和运算符等符号(例如 '≠'),字体为这些码位提供对应字形。