gpt4 book ai didi

fonts - TrueType 字体文件中的字体表数量?

转载 作者:行者123 更新时间:2023-12-03 08:53:38 26 4
gpt4 key购买 nike

根据Apple's Reference manual for TrueType字体文件中,有 45 种不同类型的字体表。检查我在系统上安装的那些 ttf,我确定这些文件中实际存在的表格数量范围为每个文件 12 个到最多 22 个字体表格。

进一步查看 true type 字体文件的结构,它从以下信息开始:​​

uint32 scaler type A tag to indicate the OFA scaler to be used to rasterize this font; see the note on the scaler type below for more information.
uint16 numTables number of tables
uint16 searchRange (maximum power of 2 <= numTables)*16
uint16 entrySelector log2(maximum power of 2 <= numTables)
uint16 rangeShift numTables*16-searchRange

这让我们有理由相信,对预先计算但完全冗余的字段存在普遍需求 rangeShiftentrySelectorsearchRange 。它甚至指出它们用于字体表列表的二进制搜索:

The entries for searchRange, entrySelector and rangeShift are used to facilitate quick binary searches of the table directory that follows (source https://developer.apple.com/fonts/TrueType-Reference-Manual/RM06/Chap6.html)

考虑添加这些字段的一个正当理由是,确实存在大量字体表,无论如何,这些字段都可以从 numTables 即时计算。

因此,我的问题是,尽管我进行了测试,但确实存在合理预期 true type 字体具有更大数量(例如 >1000)的表格的情况,这意味着是否可能存在问题45 种不同类型的字体表中的任何一种都可以多次出现?

列出的表格如下。

  1. The 'acnt' (accent attachment) table
  2. The 'ankr' (anchor point) table
  3. The 'avar' (axis variation) table
  4. The 'bdat' (bitmap data) table
  5. The 'bhed' (bitmap font header) table
  6. The 'bloc' (bitmap location) table
  7. The 'bsln' (baseline) table
  8. The 'cmap' (character code mapping) table
  9. The 'cvar' (CVT variation) table
  10. The 'cvt ' (control value) table
  11. The 'EBSC' (embedded bitmap scaling control) table
  12. The 'fdsc' (font descriptor) table
  13. The 'feat' (layout feature) table
  14. The 'fmtx' (font metrics) table
  15. The 'fond' (font family compatibility) table
  16. The 'fpgm' (font program) table
  17. The 'fvar' (font variation) table
  18. The 'gasp' (grid-fitting and scan-conversion procedure) table
  19. The 'glyf' (glyph outline) table
  20. The 'gvar' (glyph variation) table
  21. The 'hdmx' (horizontal device metrics) table
  22. The 'head' (font header) table
  23. The 'hhea' (horizontal header) table
  24. The 'hmtx' (horizontal metrics) table
  25. The 'just' (justification) table
  26. The 'kern' (kerning) table
  27. The 'kerx' (extended kerning) table
  28. The 'lcar' (ligature caret) table
  29. The 'loca' (glyph location) table
  30. The 'ltag' (language tag) table
  31. The 'maxp' (maximum profile) table
  32. The 'meta' (metadata) table
  33. The 'morx' (extended metamorphosis) table
  34. The 'name' (name) table
  35. The 'opbd' (optical bounds) table
  36. The 'OS/2' (compatibility) table
  37. The 'post' (glyph name and PostScript compatibility) table
  38. The 'prep' (control value program) table
  39. The 'prop' (properties) table
  40. The 'sbix' (extended bitmaps) table
  41. The 'trak' (tracking) table
  42. The 'vhea' (vertical header) table
  43. The 'vmtx' (vertical metrics) table
  44. The 'xref' (cross-reference) table
  45. The 'Zapf' (glyph reference) table

“字体表”似乎允许其中任意“扩展”,例如有一个标记为 FFTM 的字体表,

"[...] is unique to FontForge. It contains three timestamps: First FontForge's version date, then when the font was generated, and when the font was created. I describe its format here."

https://fontforge.github.io/TrueOpenTables.html

即使是像 FFTM 这样偶尔添加的表似乎也不值得使用 searchRange 等字段。

最佳答案

当 TrueType 在 20 世纪 80 年代末/90 年代初发明时,开发人员不确定随着格式的采用,事情会如何演变。另请记住,当时的处理器速度要慢得多。

事实证明,事实上,很少有字体拥有超过 25 个表格,并且可能没有一个字体能够接近这样的数字,在这种情况下,二分搜索和使用预先计算的字段将在定位表格时产生很大的差异(与仅迭代排序列表)。

尽管如此,这些字段是规范的一部分,不能“省略”。许多实现忽略这些字段,并且它们经常填充错误的值,但请注意,许多字体检查器/验证器/ sanitizer 确实会检查它们,并可能将错误的值标记为无效字体。因此,如果您问这个有关创建字体的问题,我建议您在字段中填写正确的数据。

关于fonts - TrueType 字体文件中的字体表数量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57324782/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com