问题标签 [compact-font-format]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
350 浏览

c - 如何解析 CFF 的 Top DICT INDEX 数据条目?

我正在解析 CFF 数据。我已经到了“Top DICT INDEX”条目的地步。我已经成功解析了版本数据和“Name INDEX”,但是我正在努力解析下一个条目“Top DICT INDEX”。

根据 Adob​​e 技术说明 #5176 第 8 节:

这包含存储在 INDEX 结构中的 FontSet 中所有字体的顶级 DICT。

所以我认为将这个字典索引解析为 Name INDEX 是合乎逻辑的,除了将数组条目视为 char 数组之外,我会将它们解析为 DICT 数据类型。这就是我遇到问题的地方。INDEX 数据类型以大端格式声明两字节 (Card16) 数组计数。根据 INDEX 的元数据,我有 257 个条目(两个字节,其中 1 (data[offset] << 8) + data[++offset])。但规范指出:

此 INDEX 中包含的对象在顺序和编号上都与 Name INDEX 中的对象相对应。

My Name INDEX 包含 1 个条目(实际字体的名称)。所以我有点困惑我是否在数据解析的某个地方有偏移问题,或者实际的字体是无效的?

0 投票
4 回答
7723 浏览

windows - 以编程方式将 CFF 字体转换为 OpenType 字体

有没有人有任何指针,我可以在其中找到有关如何围绕 CFF 字体创建 opentype 包装器的额外信息?

目前我有一个 CFF 文件解析器,因此我可以从中获取各种信息(cmap、字形名称、宽度、名称等)。鉴于此信息,我无法创建 Opentype(类似 truetype 格式)包装器,因此我可以使用 GDI 在 Windows 上使用该字体;GDI 不会加载 Opentype 字体,我唯一知道的是它无法加载字体。

有谁知道任何附加信息、验证应用程序、示例代码、获取附加信息为什么字体不能从 Windows 等加载?

注意:我正在寻找如何做到这一点的信息,而不是实用程序和/或转换工具。

0 投票
1 回答
211 浏览

fonts - Adobe CFF 格式的“私人 DICT 数据”有什么用

如 Adob​​e“紧凑字体格式”(CFF) 规范 ( http://partners.adobe.com/public/developer/en/font/5176.CFF.pdf ) 中所述,CFF 压缩后记中有一个“私有”字体字典字体(例如带有 TrueType 轮廓的 OpenType 字体)。

有人可以解释一下 CFF 字体中的“私有 DICT 数据”有什么用吗?

以及如何检查“私人 DICT 数据”的字体 - 例如在 FontLab Studio 中?


更新:

似乎 FontLab Studio 显示 Private DICT 提示数据如下:

在此处输入图像描述

0 投票
1 回答
362 浏览

fonts - CFF(紧凑字体格式)库与撤消子程序化?

出于 PDF 字体嵌入的目的,我的任务是从 CFF OpenType 文件中删除未使用字形的字形轮廓数据以减小其大小。

问题在于,与 TTF 不同,CFF 将其字形轮廓数据“压缩”到子例程中,并在字形之间创建依赖关系,我不能只从 cmap 和轮廓数据中删除字形及其匹配的字符。

由于有几个像 otfcc 这样的开源 CFF 库可以子程序化 CFF 文件,我想知道是否有库可以做相反的事情并撤消子程序化。

更新:我使用的库是 otfcc 和 sfntly。Sfntly 没有 CFF 解析器,所以我正在扩展一个,otfcc 确实有一个,但似乎没有子集选项,但源看起来更有希望。我还查看了 freetype,虽然它确实有 CFF 加载器,但似乎没有子集。

我目前已将 pdfbox 的 fontbox 从 Apache 移植到 sfntly 完成了一半。解析器工作,但子集仍然不完整。

0 投票
0 回答
98 浏览

pdf - 哪些 CFF 字体字段会产生视觉差异?

我正在为 CFF(PostScript Type 2)字体编写转换器,我想知道转换器可以删除哪些字段而不会在 PDF 文件中使用该字体时产生任何视觉差异。

我认为可以删除或更改这些字段:

  • /FontName
  • /PostScript.FSType
  • /PostScript.OrigFontType
  • /PostScript.OrigFontName
  • /PostScript.OrigFontStyle
  • /FontInfo.version
  • /FontInfo.Notice
  • /FontInfo.Copyright
  • /FontInfo.FullName
  • /FontInfo.FamilyName
  • /FontInfo.Weight
  • /FontInfo.isFixedPitch
  • /UniqueID
  • /XUID

我认为必须保留这些字段,因为它们会影响渲染:

  • /StrokeWidth
  • /PaintType
  • /CharstringType
  • /FontMatrix
  • /Encoding
  • /CharStrings
  • /Private.BlueValues
  • /Private.OtherBlues
  • /Private.FamilyBlues
  • /Private.FamilyOtherBlues
  • /Private.BlueScale
  • /Private.BlueShift
  • /Private.BlueFuzz
  • /Private.StdHW
  • /Private.StdVW
  • /Private.StemSnapH
  • /Private.StemSnapV
  • /Private.Subrs
  • /Private.GlobalSubrs
  • /Private.defaultWidthX
  • /Private.nominalWidthX

我不确定这些字段:

  • /FontInfo.ItalicAngle
  • /FontInfo.UnderlinePosition
  • /FontInfo.UnderlineThickness
  • /FontBBox
  • /BaseFontName
  • /BaseFontBlend
  • /Private.ForceBold
  • /Private.LanguageGroup
  • /Private.ExpansionFactor
  • /Private.initialRandomSeed
  • /Private.unknown12015

那么,当在 PDF 文件中使用字体时,上面的哪些字段会,哪些不会在渲染中产生视觉差异?

0 投票
2 回答
224 浏览

unicode - CFF 字体文件中的编码和字符集表是如何组织的?

CFF 规范第 11 章到第 13 章对文件中组织的编码和字符集数据进行了粗略的描述。CFF 规范。这里有一些问题。

  1. 考虑到多字体文件的可能存在,并且字符串是以每种字体的方式访问的,相应的索引也应该只对每种字体有意义。但是,文件最多只有一种编码和一个字符集表吗?如果是这样,字形索引与字符字符串的索引如何对应?如果不是,它们是否在访问它们的 TopDict 中多次出现? (已解决。请参阅下面的答案。)

  2. 字符集似乎为每个字形命名。编码呢?每个数组元素中存储的 Card8 数据是什么?鉴于它的 256 限制,编码会不会很受限制?为什么在补充格式中数据是通过 SID 来的?通过编码访问字形的设计方法是什么(以混合字符串/代码方式)?当涉及到预定义的编码时,为什么又是这些数据字符串?

谢谢

0 投票
1 回答
26 浏览

fonts - CFF 字体标题中的“offSize”字段适用于哪些偏移量?

紧凑字体格式规范”解释(第 13 页)标题中的offSize字段“指定相对于 CFF 数据开头的所有偏移量 (0) 的大小”。文档中提到了各种偏移量,但它们中的大多数(全部?)要么有自己的单独offSize字段(例如,在第 12 页的表 7 中),要么它们被编码为 dict 数据操作数(例如charset,Top DICT 中的字段,在第 15 页的表 9)。

哪些偏移量实际上使用了标头中的offSize字段?