AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / user-1997735

Betty Crokker's questions

Martin Hope
Betty Crokker
Asked: 2025-02-25 04:04:17 +0800 CST

解析 TrueType 字体时出现问题

  • 5

我需要解析一个 TrueType 字体文件来提取某些信息,而且一切顺利,我能够解析很多文件的许多表格类型,只是它在处理一个特定文件的字形数据表(“glyf”)时遇到了麻烦。

我正在解析 indexToLoc 表,因此我知道字形在表中的位置,当我查看该特定字形的数据时,我看到了这个(带有我的注释的十六进制值):

00 02 numContours
FF D1 Xmin=-47
00 00 YMin=0
04 5D XMax=1117
05 87 YMax=1415
00 08 endPoint=8 so the first contour has 9 points [0, 8]
00 16 endPoint=0x16 so the second contour has 14 points [9, 22]

00 2F instructionLength=47

instructions:
40 2C 04 01 00 04 01 4A 05 01 00 00 02 01 00 02 
61 00 04 04 63 4B 03 01 01 01 64 01 4C 00 00 16
15 14 12 0F 0E 0A 09 00 08 00 08 06 0A 14 2B

Reading flags for first contour (has 9 points)
01 Flag[0] = OnCurve
03 Flag[1] = OnCurve, XShort
2E Flag[2] = XShort, YShort, Repeat, YSameOrPositive
01    Repeat count = 1 so Flag[3]=XShort, YShort, (Repeat), YSameOrPositive
27 Flag[4] = OnCurve, XShort, YShort, YSameOrPositive
0E Flag[5] = XShort, YShort, Repeat
01    Repeat count = 1 so Flag[6] = XShort, YShort, (Repeat)
07 Flag[7] = OnCurve, XShort, YShort
09 Flag[8] = OnCurve, Repeat
01    Repeat count = 1 so Flag[9] = OnCurve, (Repeat)

23 22 26 27 03 21 03 0E 01 2B 01 01 33 03 78 AF 04 08 04 0A 13 08 FE A0 03 29 4D 0E 10 03 65 FD 86 CB 05 16 0D 4C 02 C2 63 02 01 02 D0 12 2B 19 19 2B 13 FD 31 FD FF 0F 0B 01 9E FE 62 0B 0F 05 87 00 00

如您所见,第一个轮廓有 9 个点,因此我预计有 9 个标志值,但第 9 个标志设置了“重复”标志,因此我最终得到 10 个标志值。

当“重复”标志位于最后一个标志上时,我是否应该忽略它?还是我在解析这些字节时做了其他错误的事情?

parsing
  • 1 个回答
  • 18 Views

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    重新格式化数字,在固定位置插入分隔符

    • 6 个回答
  • Marko Smith

    为什么 C++20 概念会导致循环约束错误,而老式的 SFINAE 不会?

    • 2 个回答
  • Marko Smith

    VScode 自动卸载扩展的问题(Material 主题)

    • 2 个回答
  • Marko Smith

    Vue 3:创建时出错“预期标识符但发现‘导入’”[重复]

    • 1 个回答
  • Marko Smith

    具有指定基础类型但没有枚举器的“枚举类”的用途是什么?

    • 1 个回答
  • Marko Smith

    如何修复未手动导入的模块的 MODULE_NOT_FOUND 错误?

    • 6 个回答
  • Marko Smith

    `(表达式,左值) = 右值` 在 C 或 C++ 中是有效的赋值吗?为什么有些编译器会接受/拒绝它?

    • 3 个回答
  • Marko Smith

    在 C++ 中,一个不执行任何操作的空程序需要 204KB 的堆,但在 C 中则不需要

    • 1 个回答
  • Marko Smith

    PowerBI 目前与 BigQuery 不兼容:Simba 驱动程序与 Windows 更新有关

    • 2 个回答
  • Marko Smith

    AdMob:MobileAds.initialize() - 对于某些设备,“java.lang.Integer 无法转换为 java.lang.String”

    • 1 个回答
  • Martin Hope
    Fantastic Mr Fox msvc std::vector 实现中仅不接受可复制类型 2025-04-23 06:40:49 +0800 CST
  • Martin Hope
    Howard Hinnant 使用 chrono 查找下一个工作日 2025-04-21 08:30:25 +0800 CST
  • Martin Hope
    Fedor 构造函数的成员初始化程序可以包含另一个成员的初始化吗? 2025-04-15 01:01:44 +0800 CST
  • Martin Hope
    Petr Filipský 为什么 C++20 概念会导致循环约束错误,而老式的 SFINAE 不会? 2025-03-23 21:39:40 +0800 CST
  • Martin Hope
    Catskul C++20 是否进行了更改,允许从已知绑定数组“type(&)[N]”转换为未知绑定数组“type(&)[]”? 2025-03-04 06:57:53 +0800 CST
  • Martin Hope
    Stefan Pochmann 为什么 {2,3,10} 和 {x,3,10} (x=2) 的顺序不同? 2025-01-13 23:24:07 +0800 CST
  • Martin Hope
    Chad Feller 在 5.2 版中,bash 条件语句中的 [[ .. ]] 中的分号现在是可选的吗? 2024-10-21 05:50:33 +0800 CST
  • Martin Hope
    Wrench 为什么双破折号 (--) 会导致此 MariaDB 子句评估为 true? 2024-05-05 13:37:20 +0800 CST
  • Martin Hope
    Waket Zheng 为什么 `dict(id=1, **{'id': 2})` 有时会引发 `KeyError: 'id'` 而不是 TypeError? 2024-05-04 14:19:19 +0800 CST
  • Martin Hope
    user924 AdMob:MobileAds.initialize() - 对于某些设备,“java.lang.Integer 无法转换为 java.lang.String” 2024-03-20 03:12:31 +0800 CST

热门标签

python javascript c++ c# java typescript sql reactjs html

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve