- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我无法理解 Type 1 字体规范的蓝调部分。您能否举例说明过冲抑制的执行或停止情况?
最佳答案
/BlueScale
值在 Type 1 Font Format 中描述 书,Adobe Systems 出品。请参阅第 5.6 节 BlueScale(第 45 页),其中用整页来描述 BlueScale 值。
简单地说,BlueScale 告诉字体渲染器它应该关闭过度抑制 的字体比例。 Overshoot 是指落入字形设计中重要水平带的字形形状特征。类型 1 格式将这些 strip 指示为对齐区域。对齐区域可能用于基线或 x 高度。 Overshoot suppression 意味着字体渲染器应该渲染所有以相同像素高度在对齐区域中结束的字体特征。
Overshoot suppression 是 Type 1 字体格式中的几个提示之一,它允许字体渲染器生成漂亮的字形,当没有很多设备像素来渲染字形形状时,因此不可能保持保真度字形轮廓的细微差别。通过确保对齐区域中的所有特征都以相同的像素高度渲染,渲染器即使不能提供保真度也可以提供均匀性。另一方面,在字形较大或设备像素较小的情况下,有大量像素可以保持字形轮廓的保真度,因此不需要过度抑制。
/BlueScale
value 是一个数字,根据设备像素给出一个字符单元的大小(其中 1 em 是 1000 个字符单元)。如果字符单元的大小大于此值,则关闭过冲抑制。如果字符单元的大小较小,则会打开超调抑制。 Type Font 1 Format 不清楚如果字符单元的大小恰好等于 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 个字符单位的组合。 1 点 em-square 每点有 1000 个字符单元,或每英寸 72*1000 个字符单元,或每个设备像素 72*1000/300 个字符单元,= 每个设备像素 240 个字符单元。
第 5.6 节给出了两个示例 BlueScale 值,用于 300 dpi 设备上的字体磅值:
过冲抑制也受到 /BlueShift
的影响Type 1 字体格式 的第 5.7 节 BlueShift 中描述的参数。细节超出了这个答案的范围;您真的必须阅读第 1 类书籍本身。
Type 1 字体格式的第 5.6 节 BlueScale 稍微清楚地解释了所有这些,但并不完全严格。这不是一个简单的话题。阅读整本 Type 1 Font Format 书以及 PostScript Language Reference Manual 的坐标系和字体部分非常重要。 ,如果您真的想理解本 Material ,请自己完成公式。
关于fonts - bluescale 对 Type 1 字体意味着什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8693290/
我在 OS X 中构建菜单栏项时找到了一些示例代码。它使用了单个 |我不确定它的实际含义。 (我想做的是在菜单项左键单击时调用一个函数,但在右键单击时显示菜单) 这是我的代码 //Get refere
为什么它在第 23 行抛出编译错误。'a' 是 Apple 类的对象,col 是包含 Apple 对象的列表,但它仍然是抛出下面提到的编译错误: 类型 Collection 中的方法 add(capt
我有一个类A,它扩展了抽象类B。 让B有一个 protected 字段值 我想在 A 中使用这个字段。如果 A 没有 value,我可以编写 this.value 从 B 获取它。 与super.va
DBLint 用于检查数据库状态。有46条规则。在 www.dblint.org 上对每条规则都有一些简单的解释,但对规则 31 的描述如下: 定义的主键不是最小键:主键是最小的 super 键。如果
var aa: (()?) = (john.residence?.address = someAddress) var bb: ()? = john.residence?.printNumberOfR
我对 jquery 的可重用插件有点陌生。我已经多次遇到这段代码,但无法弄清楚究竟发生了什么。 (function( $ ){ ... })( jQuery ); 谁能帮我解答一下吗? 最佳答案
这个问题已经有答案了: int foo (int argc, ...) vs int foo() vs int foo(void) in C (4 个回答) 已关闭 9 年前。 所以我最近在 Hack
typedef struct Element { struct Element *next; void *data; } Element; 在 pop 函数中,(!(elem = *s
数据加载两次...意味着 AsyncTask onPostExecute 加载相同的数据两次?我的 AsyncTask onPostExecute 运行两次它加载相同的数据...我正在运行异步任务以从
运行“yomeanjs”时,我无限期地挂起“这可能需要几分钟”。当我尝试运行 grunt 时,它失败了,与 npm start 相同。 我使用的是 Win 8.1,并安装了最新的 Node 和 Mon
我正在看 big nerd ranch 的“Android Programming”中的这个页面,我对下面的句子感到困惑。它声明“当 Activity 被隐藏时, Activity 对象不存在”。这让
是否 const vector意味着它的元素是const也一样? 在下面的代码中, v[0].set (1234);在 void g ( const vector & v )产生编译器错误 const
我是 xml 相关事物的新手 我无法理解: SelectNodes(@"//Form/*[. = 'on']"); 注:SelectNodes是 XmlNode 的函数.(与 XmlDocument
我想方便地控制命令行参数。因此我想使用 ShellLib。 我的代码是这样的: ... #include ... EFI_STATUS EFIAPI UefiMain ( EFI_HANDL
着眼于更正 Debian 上/etc/init.d/hostapd 中的一个问题。但是,我不知道这行代码是做什么的,也不知道它是如何工作的 [ -n "$DAEMON_CONF" ] || exit
有没有人遇到过类似我下图所示的情况? 我有一个变量 landingBools.didSlowPast40Knots(正如您从调试打印输出中看到的那样)为假,但出于某种原因,if 语句评估为真。 知道为
我设法使用 flexbox 和一些非常基本的 JavaScript 为自己构建了三个下拉菜单。 因为我不太了解,所以我使用了一个简单的函数三次,而不是使用参数、变量和其他东西。我将其称为丑陋的“蛮力”
这周刚开始学习 javascript。我有一个非常菜鸟的问题。 exports.displayName = (undefined: ?string); 在 React Native 中意味着什么? 这
我正在阅读有关 NaN here 的内容它说: A comparison with a NaN always returns an unordered result even when compari
编码格式:引入*表示“从头开始重复”。例子。输入-{a,b,a,b,c,a,b,a,b,c,d}可以写成{a,b,*,c,*,d}。输出:5;例如2:ABCABCE,输出- 5。 这里*表示从头开始重
我是一名优秀的程序员,十分优秀!