gpt4 book ai didi

macos - CGFontGetGlyphWithGlyphName() 出现问题

转载 作者:行者123 更新时间:2023-12-03 17:47:16 26 4
gpt4 key购买 nike

我一直在尝试使用 CGFontGetGlyphWithGlyphName() 方法创建 CGGlyph。它适用于所有字母,但不适用于数字。

-(void)drawInContext:(CGContextRef)ctx{
CGContextSetAllowsAntialiasing(ctx, true);
CGContextSetFont(ctx, font);
CGContextSetFontSize(ctx, size);
CGGlyph glyph = CGFontGetGlyphWithGlyphName(font, CFSTR("L"));
CGContextShowGlyphsAtPositions(ctx, &glyph, &(textbounds.origin), 1);
}

Windows shows L letter

当我尝试抽取数字时,它不起作用:

-(void)drawInContext:(CGContextRef)ctx{
CGContextSetAllowsAntialiasing(ctx, true);
CGContextSetFont(ctx, font);
CGContextSetFontSize(ctx, size);
CGGlyph glyph = CGFontGetGlyphWithGlyphName(font, CFSTR("3"));
CGContextShowGlyphsAtPositions(ctx, &glyph, &(textbounds.origin), 1);
}

Window shows empty rect

最佳答案

“3”的字形可能被命名为(拼写出来)。这是我的测试:

import Foundation
import CoreGraphics

let font = CGFont("Helvetica" as CFString)!
for g in CGGlyph.min ... CGGlyph.max {
if let name = font.name(for: g) {
print("\(g) \(name)")
}
}

输出:

... many lines omitted ....
17 period
18 slash
19 zero
20 one
21 two
22 three
23 four
24 five
25 six
26 seven
... many more lines omitted ...

您最好使用 Core Text CTFontGetGlyphsForCharacters 函数。请注意,它使用 CTFontRef,而不是 CGFontRef。您可以使用 CTFontCreateWithGraphicsFontCGFontRef 转换为 CTFontRef

关于macos - CGFontGetGlyphWithGlyphName() 出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50472869/

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