Closed Natsukage closed 2 months ago
The latest updates on your projects. Learn more about Vercel for Git ↗︎
Name | Status | Preview | Comments | Updated (UTC) |
---|---|---|---|---|
petpet | ✅ Ready (Inspect) | Visit Preview | 💬 Add feedback | Sep 6, 2024 5:38am |
原代码使用 fm.getAscent() - fm.getDescent() - fm.getLeading()
来计算字体的高度,但这种计算方式并不准确。它仅计算了从基线到顶部的高度,减去了下降部分和行距,无法完整反映字体的实际行高,尤其是在处理多行文本时。
直接使用fm.getHeight()
方法会返回完整的行高,包括上升、下降和行间距部分。因此,使用 fm.getHeight()
更符合计算文本高度的预期,尤其是当需要渲染多行文本时,getHeight()
返回的值更能反映文本占据的总空间。
在原有的 while 循环中,每次插入换行符后,字符的位置发生了偏移,导致后续的换行符插入位置错位。
具体表现为:原本应在固定位置插入换行符,但由于每次插入都会影响后续字符的位置,最终导致文本分割不正确。
在原有代码中,插入换行符时会导致字符位置错位。例如,假设我们有字符串
为什么我不是JBB
,希望在第 3 和第 6 个位置插入换行符,结果应为:然而,在原代码中,第一次在第 3 个字符后插入换行符后,字符串变成了
为什么\n我不是JBB
。此时,第 6 个字符已经变成了不
,导致第二次插入换行符时,结果变成了:通过将 while 循环改为从后向前插入换行符的 for 循环,避免了字符位置的偏移问题,确保了每个换行符都能正确插入到预期的位置。