如何获取下表中对应于十进制值-0.000061的十六进制值0xffff?

时间:2016-02-29 21:57:31

标签: opentype

在本页的开头The OpenType Font File,您将找到此表,其中包含F2DOT14格式的示例,用于16位有符号固定数字,其中包含低14位的分数。

enter image description here

我无法获得十进制-0.000061的十六进制值0xffff。顺便说一句,尾数-1似乎是错误的,并且分数的值应该是1/16384,而不是16383/16384,除非我遗漏了与用于在代码中表示负值的二进制补码表示法相关的东西。

1 个答案:

答案 0 :(得分:2)

列出的尾数和分数值完全正确:F2DOT14字段将数字编码为算术计算mantissa + fraction,而不是"带有无符号连接分数余数"的带符号尾数。

因此,如果您需要-0.000061,则必须在前两位(11)中以带符号整数-1开头,然后添加正值16383最后14位(11111111111111)中的/ 16384,mantissa + fraction = -1 + 16383/16384 = -1/16384,后者使用16位代码0xFFFF进行编码