2012-01-01 123 views

回答

5

/BlueScale的值描述于Type 1 Font Format由Adobe Systems出版。请参阅第5.6节BlueScale(第45页),它将整个页面转换为描述BlueScale值。

简而言之,BlueScale会告诉字体渲染器应该关闭它的字体比例过冲抑制过冲涉及字形形状的一个特征,落入字形设计中的重要水平带。类型1格式将这些波段表示为对齐区域。对齐区域可能用于基线或x高度。 过冲抑制意味着字体渲染器应该呈现所有字体特征,最终在对齐区域中的像素高度相同。

过冲抑制是Type 1字体格式中的几个提示之一,它允许字体渲染器生成漂亮的字形,但没有多少设备像素可呈现字形形状,因此无法保持保真度到字形轮廓的细微差别。通过确保对齐区域中的所有特征都以相同的像素高度呈现,渲染器即使不保真也可以提供一致性。另一方面,在字形较大或设备像素较小的情况下,有很多像素可以保持字形轮廓的逼真度,因此不需要过冲抑制。

/BlueScale值是以设备像素为单位给出一个字符单位(其中1 em为1000个字符单位)的大小的数字。如果字符单位的大小大于此值,则关闭超调抑制。如果字符单位的大小较小,则会启用过冲抑制。 类型字体1格式不清楚如果字符单位的大小恰好等于BlueScale值会发生什么情况。

5.6节给出了在300 dpi设备上设置BlueScale值的建议。约束条件是:

  • BlueScale = (pointsize - 0.49)/240集的BlueScale到一个值,它可以让一个整数点大小得到过冲抑制,并且下一个最大的整数点大小关闭过冲抑制。
  • 设置BlueScale使得(pointsize - 0.49) * (maximum alignment zone height) < 240,,即 BlueScale的值足够小,使得在字体中的最大对齐区域变成一个设备像素高之前结束过冲抑制。

值240基于每英寸72个PostScript语言点单位和每英寸300个设备像素和每个em-square 1000个字符单位的组合。单点平方米每个点具有1000个字符单位,即每英寸72 * 1000个字符单位,或每个设备像素72 * 1000/300个字符单位,每个设备像素= 240个字符单位。

5.6节给出了两个例子的BlueScale值,字体磅值300dpi的设备上:

  • 0。039625让过冲抑制发生在晚上9点,但不会出现在10个点
  • 0.04379让过冲抑制在10个点上发生,而不是发生在11分
  • 对于23个字符单元的最大取向区的高度,一个10,而不是11点大小必须与的BlueScale公式中使用,以使得在过冲抑制被调用

过冲抑制还受/BlueShift参数,在所描述23个字符单位达不到1个设备像素第5.7节BlueShift1型字体格式。细节超出了这个答案的范围;你真的必须阅读1型书本身。

5.6节类型1字体格式的BlueScale解释清楚所有这些,但不是完全严格。这不是一个简单的话题。如果您真的想了解这些材料,请务必阅读整个Type 1字体格式书籍,以及PostScript Language Reference Manual的坐标系和字体部分,以及您自己的公式。

+0

该死!我得等23个小时才能获奖。 – 2012-01-28 04:53:40

+0

谢谢@luserdroog,你很亲切。 – 2012-01-28 05:12:07