Unicode 如何在CFF字体文件中组织编码和字符集表?

Unicode 如何在CFF字体文件中组织编码和字符集表?,unicode,fonts,opentype,compact-font-format,Unicode,Fonts,Opentype,Compact Font Format,CFF规范第11章至第13章对文件中组织的编码和字符集数据进行了粗略描述。这里有一些问题 考虑到可能存在多字体文件,并且以每种字体的方式访问字符串,相应的索引也应该仅对每种字体有意义。但是,该文件最多只有一个编码和一个字符集表吗?如果是,字形索引如何与字符串的索引相对应?如果没有,它们是否会从访问它们的位置多次出现在TopDict中? (已解决。请参阅下面的答案)。 似乎字符集为每个glyph命名。编码呢?每个数组元素中存储的Card8数据是什么?考虑到256的限制,编码不是很有限制吗?为什么

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

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

  • 似乎字符集为每个glyph命名。编码呢?每个数组元素中存储的Card8数据是什么?考虑到256的限制,编码不是很有限制吗?为什么补充格式的数据是通过SID来的?通过编码(以混合字符串/代码方式)访问图示符的设计方法是什么?当涉及到预定义的编码时,为什么这些数据字符串会再次出现


  • 谢谢

    我可以从实际的角度做出回应:

    关于#1,问题似乎是关于多个CFF字体集,这在OpenType/CFF字体的上下文中是不可能的:只允许/识别一个CFF字体集

    关于#2,在OpenType/CFF字体的上下文中,编码问题也有点难以解决,因为编码是由“cmap”表强加的


    总之,独立CFF实际上毫无价值,这抵消了多个CFF字体集和内置CFF编码的任何实际或可感知的好处。

    我可以从实际角度回答:

    关于#1,问题似乎是关于多个CFF字体集,这在OpenType/CFF字体的上下文中是不可能的:只允许/识别一个CFF字体集

    关于#2,在OpenType/CFF字体的上下文中,编码问题也有点难以解决,因为编码是由“cmap”表强加的


    总之,独立CFF实际上毫无价值,这会抵消多个CFF字体集和内置CFF编码的任何实际或可感知的好处。

    以下是问题1的答案:

    认为一个字体文件中只有一个
    TopDict
    是错误的
    TopDict
    是一种索引结构,它可能包含字体集中每个字体的多个顶部表格。因此,
    编码
    字符集
    的定义自然是每种字体。在规范的数据布局中,
    Name
    TopDict
    没有标记为“每字体”,这有点令人困惑。见第8节

    它包含字体集中所有字体的顶级目录 存储在索引结构中。此索引中包含的对象 与名称索引中的顺序和编号对应。每个 对象是对应于顶层的DICT结构 PostScript字体的字典。字体由中的条目标识 名称索引及其数据通过相应的Top访问 格言


    以下是对问题1的回答:

    认为一个字体文件中只有一个
    TopDict
    是错误的
    TopDict
    是一种索引结构,它可能包含字体集中每个字体的多个顶部表格。因此,
    编码
    字符集
    的定义自然是每种字体。在规范的数据布局中,
    Name
    TopDict
    没有标记为“每字体”,这有点令人困惑。见第8节

    它包含字体集中所有字体的顶级目录 存储在索引结构中。此索引中包含的对象 与名称索引中的顺序和编号对应。每个 对象是对应于顶层的DICT结构 PostScript字体的字典。字体由中的条目标识 名称索引及其数据通过相应的Top访问 格言


    我看得出来。但是编码或多字体集使用的初衷是什么?对不起,多字体,而不是多字体集我可以看出这一点。但是编码或多字体集使用的初衷是什么?对不起,多字体,而不是多字体集请注意,CFF是要嵌入的,它们不是独立的字体,因此它们的包装也与此相关。通常,作为字体,您可以在OpenType字体中找到它们,这负责单处理与多处理(OpenType集合)。类似地,在OpenType字体中使用时,编码基本上是不相关的,因为OpenType
    cmap
    表会处理这个问题。最重要的是,CFF已经被CFF2取代,事实上,CFF2抛弃了所有仍留在CFF中的“OpenType规范已经涵盖了这个”部分。请注意,CFF是为了嵌入的,它们不是独立的字体,因此它们的包装在这里也是相关的。通常,作为字体,您可以在OpenType字体中找到它们,这负责单处理与多处理(OpenType集合)。类似地,在OpenType字体中使用时,编码基本上是不相关的,因为OpenType
    cmap
    表会处理这个问题。最重要的是,CFF已经被CFF2所取代,事实上,CFF2抛弃了所有仍然留在CFF中的“OpenType规范已经涵盖了这个”部分。