TeX 的准确度如何?关于字体的问题

TeX 的准确度如何?关于字体的问题

这是一个构造的示例。如您所见,一行中有三个字符(A)。第三个字符向左移动,直到覆盖第二个字符。如果 \hskip 是最佳的,则第二个字母被完美覆盖,不会出现粗体、阴影或双倍。但它不适用于任何字符。为什么使用相同的字体会出现这种情况?这是 TeX 的不准确性还是取决于其他变量?(计算机、显示器、字母间距……其他?)

\newdimen\test
\test=1Em

\def\myspace#1#2{#1\hbox{#1\hskip#2\test\ #1}\vskip\baselineskip}
%
\magnification=2200%
Example : \myspace{A}{-0}%
\myspace{A}{-1.084}%
\myspace{B}{-1.084}%
\myspace{C}{-1.084}%
\myspace{D}{-1.084}%
\myspace{E}{-1.084}%
%
\bye

答案1

您以固定的量留出间距,而忽略了字母的宽度。

plain tex(和 latex)有一个\llap宏,它将其内容叠加到左侧,不占用水平空间

在此处输入图片描述

\newdimen\test
\test=1Em

\def\myspace#1#2{#1\hbox{#1\llap{#1}}\vskip\baselineskip}
%
\magnification=2200%
Example : \myspace{A}{-0}%
\myspace{A}{-1.084}%
\myspace{B}{-1.084}%
\myspace{C}{-1.084}%
\myspace{D}{-1.084}%
\myspace{E}{-1.084}%
%
\bye

这将忽略第二个参数并覆盖第一个参数


请注意,您询问的是 tex,tex 使用精确整数算法,因此准确性根本不是问题。但是(特别是如果您使用较长的文本而不是单个字母),第二个文本的最终位置将从当前点(使用 TeX 算法使用的字形的前进宽度的总和)退格 TeX 指定的量(使用 TeX 算法使用的字形的前进宽度的总和) pdf 渲染器计算出的前进宽度的总和)任何差异都会远低于人眼可见的范围,但可能会影响与物理设备的像素边界的对齐,即使文本位于完全相同的 pdf 位置,双重打印也可能影响或不影响 pdf 渲染器的抗锯齿启发式方法,因此在低分辨率下仍然可见。

相关内容