Ios7 CGGlyph是否取决于字体大小?

Ios7 CGGlyph是否取决于字体大小?,ios7,core-text,typesetting,Ios7,Core Text,Typesetting,CGGlyph是无符号短字符的typedef。 每种字体都可以(或至少可以)为同一个字符指定不同的CGGlyph值。但在同一字体中,CGGlyph的值是否取决于字体大小 基本上我想用不同的字体大小显示相同的字符。我可以用CGContextSetFontSize()设置字体大小并重新使用cglyph值吗?cglyph将字形索引保存在字体中。这是因为在字体内部,字形(单个字符设计)的顺序可以是任何东西——特别是,与它所表示的字符代码无关 也就是说,字体中字符的顺序与任何编码无关。“A”的字符代码是6

CGGlyph是无符号短字符的typedef。 每种字体都可以(或至少可以)为同一个字符指定不同的CGGlyph值。但在同一字体中,CGGlyph的值是否取决于字体大小

基本上我想用不同的字体大小显示相同的字符。我可以用CGContextSetFontSize()设置字体大小并重新使用cglyph值吗?

cglyph将字形索引保存在字体中。这是因为在字体内部,字形(单个字符设计)的顺序可以是任何东西——特别是,与它所表示的字符代码无关

也就是说,字体中字符的顺序与任何编码无关。“A”的字符代码是65(ASCII),但这并不意味着“字体中的第65个字符是字形“A”。对于Unicode,几乎不可能以这种方式工作:例如,卷曲的左双引号的Unicode是U+201C,或十进制的8220

因此,每个字体中都有一个或多个表,它们在字形的逻辑索引(仅计算文件本身中出现的字符)和一个或多个编码之间进行转换。(其中编码是预定义集,如“Unicode”、“MacRoman”或“Windows Latin1”。)

这有几个优点:首先,字体文件中的字符不需要以任何特定的顺序出现。字体设计师可以根据需要向文件中添加任意多的编码。此外,字体完全可能包含完全没有编码的字形(想想罕见的连字)

所有的言行:

每种字体都可以(或至少可以)为同一个字符指定不同的CGGlyph值

两者都不能也不应该。因为CGGlyph是一个索引值,它总是从0开始,最后一个有效值是字体中的字符数减去1

图示符的索引不是由其大小决定的,它设置在一个非常不同的级别。因此,您确实可以对不同的大小重复使用该值。
但是,值得注意的是:特定字符的索引仅与一种字体唯一关联。每种字体中单个字符的顺序应视为唯一的(如果只是因为一种字体可能比另一种字体包含更多或更少的字符)

请参阅以获取相关讨论。

CGGlyph在字体中保留字形的索引。这是因为在字体中,字形(单个字符设计)的顺序可以是任何内容,特别是与它所表示的字符代码无关的内容

也就是说,字体中字符的顺序与任何编码无关。“A”的字符代码是65(ASCII),但这并不意味着“字体中的第65个字符是字形“A”。对于Unicode,几乎不可能以这种方式工作:例如,一个卷曲的左双引号的Unicode是U+201C,或者十进制的8220

因此,每个字体中都有一个或多个表,它们在字形的逻辑索引(仅计算文件本身中出现的字符)和一个或多个编码之间进行转换。(其中编码是预定义集,如“Unicode”、“MacRoman”或“Windows Latin1”。)

这有几个优点:首先,字体文件中的字符不需要以任何特定顺序出现。字体设计器可以根据需要向文件添加任意多的编码。此外,字体完全有可能包含完全没有编码的字形(想想罕见的连字)

所有的言行:

每种字体都可以(或至少可以)为同一个字符指定不同的CGGlyph值

两者都不能也不应该。由于CGGlyph是一个索引值,它总是从0开始,最后一个有效值是字体中的字符数减去1

图示符的索引不是由其大小决定的,而是设置在一个非常不同的级别。因此,您确实可以对不同的大小重复使用该值。
但是,值得注意的是:特定字符的索引仅与一个字体绑定。每个字体中单个字符的顺序应视为唯一的(如果只是因为一种字体可能比另一种字体包含更多或更少的字符)

有关相关讨论,请参阅