我的字幕Width卫士通过了每一次测试。 这是测量文本 永不德鲁.

2026年8月24日1 次浏览来源:Dev.to阅读原文

最初发表在"异口同声"笔记上.

一个用户投诉把我送入了字幕管道:"字幕在句子不通的地方切成两个字".

我为那份投诉所运去的修补,引入了第二个错误,一个字更窄,容易被错过,因为测量一行文字是否适合的代码重现了一个关于绘制行的代码没有共享的文本的假设.

每次测试都通过 我只通过看视频找到的 抱怨指向字幕系统的bug将记录稿分割成短块, 分块函数正在做固定大小的切片工作——取下个N字,无论在之前或之后出现什么.

这对句子边界是盲目的,所以两个无关的句子可以在同一块中降落: 读作一个视觉单元,尽管它是一个句子的尾部和下一个句子的头.

固定是一套规则,不是单一的调制: 终端平分音符后硬断接 () 在逗号、分号和em-dashes上软断接 扩展或推出块,而不是让它以一个函数单词(,,,,,,,,,,,,,,,和大约三十个其他)结尾, 目标每块有3个字, 4个作为所显示块上一个像素宽的上限, 对照实际标题字体(Montserrat ExtraBold)进行测量, 预算为1080×0.92=993.6px 前四通相为一行所入所入所入所入所入所入所入所入所入所入所入所入所入所入所入所入所入所入所入所入所入所出所出所出所出所出所出所出所出所出所出所出所出所出所出所出所出所出所出所出所出所出所出所出所出所出所出所出所出所出所出所出所出所出所出所出所出所出所出所出所出所出所出所出所出所出所出所出所出所出所出所出所出所出所出所出所出所出所出所出所出所出所出所出所出所出所出所出所出所出所出所出所出所出所出所出所出所出所出所出.

第五个是物理制约:无论断点如何好,块仍须以实际使用的字体大小放入屏幕上。

就是那个弄错了 宽度警卫实际测量到什么 为了获得一个候选块的像素宽度,守门员通过字体使块的文字得到并测量结果——这原则上是正确的方法,而不是捷径.

文本宽度并不是每个字符的固定像素;它取决于具体的格子,因此通过真实字体来测量真实的字符串是获得诚实数字的唯一方法.

然而,进入这一计量的块文字是先大写。

在同一视频管道的其他地方,一个无关紧要的封面——在片段一开始就显示的钩子文字——被刻意用不同的视觉风格制成所有封面,而所借来的标题线的宽度测量码也是同一上层步骤。

它读起来就像一个可辩驳的动作,如果你不对照实际画出的东西:这个字体中的大写格法运行比混同的大小写更宽,所以用大写来测量会给你一个安全幅度——最坏的一例,真正的宽度只能比所测量的更窄,永远不能更宽.

但标题本身从未在大写中显示 。

屏幕上的文字流行字幕保留了原来的句子外壳.

该比值不是针对真实风险的安全比值;它是为这个代码路径中不存在的风险而加注的,而加注的比值足够大以扭曲结果.

测量是准确的。

输入错误。

取一个混凝土块: "丰富的硝酸盐"。

以书面形式提出,混合案件,可计量842px.

被渲染的大写——警卫实际检查的字符串——它测量了1042px,宽了约20%.

预算为993.6px.

真正的弦 清理预算 空闲的空间。

被测试的警卫的绳子不会 因此,警卫在所给出的输入上完成了工作,输入错误. "富"和"有硝酸盐"等春分被强迫分出一字片段来达到一个宽度限制,即屏幕上的实际文本从未接近违反.

这是相对于这整个规则集应该修补的bug的回归——一个单字块比最初的"一中一刑"问题更破碎的读取经验,只是在标题音轨上分布不同.

这值得精确地描述一下这里曾经和没有被打破的东西, 因为很容易摆脱对测量机械本身的不信任。

我单独检查了一下: 图书馆的文字路径测量

分享