我想用CGContextShowGlyphsAtPositions
绘制字形,但是当我使用CTRunGetPositions
时,字形的位置从左侧开始。 CTRunGetStatus
返回kCTRunStatusRightToLeft
,但结果从左到右。如何从右向左绘制文本?
对于英语字符,从左到右是可以的,因为该语言是从左到右,但是我使用阿拉伯字符,而阿拉伯语是从右到左的语言。
最佳答案
位置从左到右,因为字形通常是从左到右绘制的,因为这是“x”的增加方向。到绘制CGGlyph
时,语言已不再重要。绘制كتب时,系统会先绘制ب,因此其位置在数组中排在第一位。CTRunGetGlyphs
的结果与CTRunGetPositions
的顺序相同。 kCTRunStatusRightToLeft
所做的只是告诉您字形顺序与字符串索引顺序严格相反。
我使用CGContextShowGlyphsAtPositions
从右到左绘制阿拉伯文没有任何问题。您看到什么问题?
CFIndex glyphCount = CTRunGetGlyphCount(run);
CGPoint *positions = calloc(glyphCount, sizeof(CGPoint));
CTRunGetPositions(run, CFRangeMake(0, 0), positions);
CGGlyph *glyphs = calloc(glyphCount, sizeof(CGGlyph));
CTRunGetGlyphs(run, CFRangeMake(0, 0), glyphs);
CGContextShowGlyphsAtPositions(context, glyphs, positions, glyphCount);
free(positions);
free(glyphs);
关于ios - CT在CoreText iOS上从右到左运行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11767606/