gpt4 book ai didi

macos - 使用 Core Text 获取字形名称

转载 作者:行者123 更新时间:2023-12-03 09:26:31 28 4
gpt4 key购买 nike

对于一个小型副项目,我需要在字体中提供所有可用的字形名称。所以,我想这样做:

CTFontRef f = CTFontCreateWithName(CFSTR("Zapfino"), 40, NULL);

CFIndex count = CTFontGetGlyphCount(f);
printf("There are %ld glyphs\n", count);

for (CGGlyph i = 1; i < count + 1; i++)
{
CTGlyphInfoRef gi = CTGlyphInfoCreateWithGlyph(i, f, CFSTR("(c)"));
CFStringRef name = CTGlyphInfoGetGlyphName(gi);
CGFontIndex idx = CTGlyphInfoGetCharacterIdentifier(gi);

printf("Glyph: %4hu, idx: %4hu ", i, idx);
CFShow(name);
printf("\n");

}

创建字体并获取字形计数效果很好。但字形的名称始终为 NULL。 CTGlyphInfoRef 变量“gi”获取一个值。有什么想法吗?我在这里缺少什么?

最佳答案

您误解了 CTGlyphInfo 的含义。这不是查询字形信息的方法。它是用字形替换字符串的表示。您可以将字形信息对象设置为属性字符串中的 kCTGlyphInfoAttributeName 属性的值。如果文本与基本字符串匹配,则该字形将替换该范围的属性文本。

您可以使用CGFontCopyGlyphNameForGlyph()从字体中获取字形的名称。您可以使用 CGFontCreate...() 函数直接创建 CGFontRef。您还可以使用 CTFontCopyGraphicsFont()CTFont 创建一个。

关于macos - 使用 Core Text 获取字形名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20327980/

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