更具体地说,假设我有一个等宽字体,其中一些字形大于正常字符宽度(例如,fontawesome 图标)。
在大多数终端仿真器中,较大的字符将简单地与右侧的字符重叠,而在以 Chromium 为例的系统中,较大的字符将推挤行的其余部分以便为自己腾出空间。
这是为什么?是什么在渲染这些应用程序中的文本?是应用程序本身吗?是操作系统组件吗?终端是否专门设计用于避免此问题?
而补充问题是:有没有什么方法可以让 Chromium 像大多数终端一样运行,以便即使有较大的字形,等宽字体也能保持等宽。
为了提供一些背景信息,我正在研究超,它基本上是 Chromium 中的一个终端,这导致了字符对齐问题。
答案1
大多数应用程序(包括浏览器)都遵循字体中定义的字形尺寸。事实上,它们可能使用在一步中显示更长字符串的方法(尽管我不知道细节)。如果一些字形比其他字形宽一点,那么它就不是完全等宽的字体,除了一些例外,它几乎是等宽的。
终端仿真器使用一种特殊的绘制方法,它们独立定位每个字符,因为它们需要将字符强制放入网格中,否则整体布局就会崩溃。如果您选择非等宽字体,您可以特别清楚地看到这一点(结果看起来很丑,但仍保持网格对齐)。(请注意,这konsole
可能是一个例外,我见过它做奇怪的事情。)
为了使浏览器像终端仿真器一样运行,我建议您尝试将每个字符单独放在其自己的span
或div
带有position: absolute
或fixed
或类似内容中。
答案2
操作系统提供了许多文本绘制功能供开发人员选择。终端仿真器通常需要等宽字体,您看到的文本渲染是这种限制的自然结果。浏览器使用更复杂的功能,允许比例字体等。这并不意味着会为用户提供许多选项。您看到的浏览器渲染通常是首选。当然,并不是每个人都会同意。
Chromium 能否按照您的需要呈现文本?我对此表示怀疑,但您可以检查文本选项。