「我只是仔细挑选了用词」

查看原文 HN 讨论

文章摘要

这是 Marcin Wichary(曾任职于 Google、Medium、Figma 的 UX 设计师与字体排印爱好者,著有一本关于键盘与打字的书)在其博客 Unsung 上发表的一篇短文。Unsung 是他专门讨论「软件工艺与质量」的博客,这一篇讨论的是一个极其冷僻却令人震撼的排版细节。

作者的切入点是:没有人真正享受在等宽字体里做排版。普通的左对齐文本还算可以接受;右对齐也还行,只要你不介意一个个数空格;居中就开始变得棘手了,因为等宽字体里没有「半个空格」,你无法让两侧真正均等;而两端对齐(full justification) 是最糟糕的——空格只能以整字符为单位分配,无法均匀铺开,读起来会产生一种非常不舒服的观感。

排版学里对付这个问题的常规手段是连字符断词(hyphenation),但在等宽字体中连字符同样令人不快:那些短横线在单调的字符网格里显得格外扎眼,而且会破坏复制粘贴。正因如此,你几乎不会在纯文本文件里看到两端对齐。

但作者指出还有第三条路:重写文本本身,只挑选那些字符数恰好能把每一行填满的词,从而彻底消除多余空格。这听起来近乎疯狂,但确实有人这么干过——1990 年代末,一位署名 rs1n 的作者为《超级银河战士(Super Metroid)》写了一份攻略。整份文档长达 17000 多字,每一行的右边距都精确地终止在一个字母上,全文找不到一处连续两个空格。

在攻略末尾的 FAQ 里,作者被问到「你用什么程序做的两端对齐?」他的回答是那句成为标题的话:没有用任何程序,我只是仔细挑选了用词让右侧全部对齐,全部是在一个 ASCII 编辑器里完成的。

Wichary 说他分享这件事主要是当作一件奇谈:纸质书为了避免孤行寡行(widows and orphans)做局部重写是行业常规,但在屏幕写作里几乎见不到。不过他在结尾抛出了一个让所有做过界面的人都会心一笑的问题——我们当中有谁没有为了让一个按钮文案或提示语塞进密集界面里的某个固定宽度,而花上几个小时反复推敲措辞呢?

这篇短文本身不长,但在 HN 上拿到了 1254 分和 352 条评论,触发了一场关于「手工艺、约束与 AI 时代」的大讨论。

HN 评论精华

X-Files 编剧的「无寡行」执念(最高票串)

sho_hn 开的头是全场最热的一条:Gillian Anderson 最近在访谈中透露,《X 档案》创作者 Chris Carter 有一种近乎强迫症的习惯——他按照文本版式来写剧本对白,坚持不出现寡行,而这直接塑造了剧集那种「不太自然、略显倒装」的独特对白节奏。cpeterso 贴出了访谈原文:Carter 在片场看着 Anderson 的台词页说「看,没有寡行」,每个角色的每段对白都是一个完整的矩形。Anderson 的反应是:「所以九年来对白是按视觉设计的?我一直在跟他的强迫症搏斗。」

这段轶事随即引发了考据战。rectang 表示怀疑,认为把每段对白排成完美矩形远远超出了「避免寡行」的范畴,那实际上是两端对齐,在电视剧本里不太可能做到,并猜测 Carter 其实是在体贴演员、避免台词跨页。diurnalist 去翻了粉丝网站上的原始剧本,一度怀疑这是杜撰或 Carter 在逗 Anderson。但 tobr 找到了电影《我要相信》的扫描版(而非重新录入版)剧本,逐页比对后确认:几乎每一段落和对白块的最后一行都紧贴右边距,唯一的例外是那些本来就只有一行、不会换行的短台词。他还在第九季的剧本里找到了同样的模式。diurnalist 回复说:「看来这不只是个好故事。」

Tom 7 的 BoVeX:把这件事自动化

ivw 第一时间指出 suckerpinch(Tom 7)有一个视频用 LLM 自动完成同样的事情,ivanjermakov 说原文不提「Badness 0」简直是犯罪。matja 补充了那个恶搞的 GNU JUSTIFIED PUBLIC LICENSE。JoshTriplett 提到 Tom 7 把这称为「解决了 AI 对齐问题」(alignment 的双关)。bla3 特意提醒:别因为看到「用了 LLM」就跳过,这是他看过最好的 YouTube 视频之一。

AI 会不会让这种手艺消失

gkoberger 的评论引发了另一条主线。他引用 Penn and Teller 的话:「有时候魔术只是有人在一件事上花了远超别人合理预期的时间。」而 AI 改变了这个等式,所以他为这份攻略感到伤感。LtWorf 反驳说 LaTeX 早就存在了;gkoberger 澄清他说的是那个纯手工写 17000 字的人。garciansmith 的回应很到位:他本来也不需要那么做,他这么做是因为他在乎,而总会有人在乎——真正的问题是游戏文字攻略这个体裁本身早在生成式 AI 之前就在消亡了,取而代之的是散落在几十个页面上的广告农场和必须拖进度条的长视频,「我很怀念在 GameFAQs 上用 Ctrl+F」。gkoberger 补了一句关键的:更大的问题也许不是人们在不在乎,而是我们还能不能分辨「他在乎」和「他花了 30 秒写了个 prompt」。

「我也这么干」的集体自白

大量评论是程序员们的自曝。lanyard-textile:「我从没觉得这么被看见过,我一直在为了 80 或 100 列的对齐反复改注释措辞。」lukeh、Boxxed、eudamoniac、utopcell、GeertB 都承认在代码注释和 commit message 里做过同样的事。eudamoniac 的说法最有画面感:他会在他认为会长期存在的注释里这么做,这是给读者的一个暗号,表明「作者来过,并且在乎这段代码」——当你打开一个以这种文本开头的文件,你会放松下来,因为你知道你身处同类之中,不会看到随手拼凑的垃圾。他还提到,他开始这么做的时候 LLM 还复现不了这一点。ColinWright 说他所有邮件都用等宽写并做两端对齐,「每隔一阵子会有人注意到」,并邀请大家去看他的个人资料——「我作弊过一次」。

lproven 干脆用完美的两端对齐格式写了整条长评,讲述自己 1991 年起在 DOS 工具里这么写了近十年,直到 Windows 时代的比例字体让别人再也看不出来才作罢。这条对齐评论收获了 bigfishrunning 的「请永远保持下去,我看得非常开心」。

约束是否提升写作质量

underyx 一句话点题:「所以在写作中使用替代词并不一定要牺牲质量。」card_zero 用一段自身对齐的评论说,这可能通过打破惯性表达而让写作焕然一新,迫使作者做出更原创的选择。unicorn_platfor 呼应说,没有约束时人很容易退回熟悉的措辞。但 dash2 唱反调:「一方面这很牛,另一方面他能不能把这些时间用来写更好的散文?我可不想读 1700 字这种东西,更别说 17000 字了。」

跑题与彩蛋

评论区有相当一部分彻底跑向了语言学。由 _jackdk_ 一句「我好奇作者是不是在写作途中才发现 missiles 不拼作 missles,然后决定将错就错而不是重写整份攻略」引发,讨论一路滑向英语拼写是否表音、truffle 的 IPA 转写、英式与美式 missile 发音差异、shibboleth(示播列)、新西兰英语与澳洲英语的辨别、乃至英国上层阶级为何在 h 上过度修正并牵出 Monty Python 的段子。thaumasiotes 和 seszett 就 -le 词尾是否表音展开了长达七八层的争辩。这部分内容占了相当篇幅,与排版几乎无关。

德语术语也被反复提起:a_bonobo 和 ahofmann 指出德语里 widow 叫 Hurenkind(妓女的孩子),orphan 叫 Schusterjunge(鞋匠学徒),pflenker 给了一个漂亮的助记:孤行不知道自己从哪来,寡行不知道自己要去哪。

其他值得一提的