canvas' `drawTextRun` 有什么用?它与 `drawText` 有何不同?
What is the use of canvas' `drawTextRun`? How is it different from `drawText`?
我试图了解 drawTextRun
的用法,但找不到它们与 canvas
中的正常 drawText
有何不同
以下代码
canvas.drawTextRun(TEXT,
0, TEXT.length,
0, TEXT.length ,
x, y, false, paint)
canvas.drawText(TEXT,
x, y, paint)
产生相同的结果。我试着玩弄 0
和 TEXT.length
,但除了显示较短的 TEXT
.
外,并没有明显的不同
中的帮助
它的描述是
Draw a run of text, all in a single direction, with optional context for complex text shaping.
complex text shaping
是什么?
显然这个函数 drawTextRun
对英语或任何字符不变的语言(例如中文)没有用处。
它仅对具有会随着相邻字母的存在而变化的字母的语言有用。一个很好的例子是阿拉伯语。
请参考阿拉伯语 Unicode,https://en.wikipedia.org/wiki/Arabic_script_in_Unicode,其中的语言。
例如
4 个字母的阿拉伯语单词 عربى
。 (注意阿拉伯语是从右到左)
如果单独写是
ع
ر
ب
ى
请注意单独放置时形状会有所不同。
使用以下代码
private val TEXT = "عربى"
canvas.drawTextRun(TEXT,
1, TEXT.length - 1,
1, TEXT.length - 1,
x, y,
true, projectResources.paint)
它将产生
但是,如果我们更改上下文长度,(即显示的单词不完整,但它的相邻第一个和最后一个字母未显示)
private val TEXT = "عربى"
canvas.drawTextRun(TEXT,
1, TEXT.length - 1,
0, TEXT.length,
x, y,
true, projectResources.paint)
会变成下面的样子
总之,同一个字母,上下文不同,写法就不同了。
注意:感谢 https://hencoder.com/ui-1-3/ 阐明了此方法的用法。
我试图了解 drawTextRun
的用法,但找不到它们与 canvas
drawText
有何不同
以下代码
canvas.drawTextRun(TEXT,
0, TEXT.length,
0, TEXT.length ,
x, y, false, paint)
canvas.drawText(TEXT,
x, y, paint)
产生相同的结果。我试着玩弄 0
和 TEXT.length
,但除了显示较短的 TEXT
.
它的描述是
Draw a run of text, all in a single direction, with optional context for complex text shaping.
complex text shaping
是什么?
显然这个函数 drawTextRun
对英语或任何字符不变的语言(例如中文)没有用处。
它仅对具有会随着相邻字母的存在而变化的字母的语言有用。一个很好的例子是阿拉伯语。
请参考阿拉伯语 Unicode,https://en.wikipedia.org/wiki/Arabic_script_in_Unicode,其中的语言。
例如
4 个字母的阿拉伯语单词 عربى
。 (注意阿拉伯语是从右到左)
如果单独写是
ع
ر
ب
ى
请注意单独放置时形状会有所不同。
使用以下代码
private val TEXT = "عربى"
canvas.drawTextRun(TEXT,
1, TEXT.length - 1,
1, TEXT.length - 1,
x, y,
true, projectResources.paint)
它将产生
但是,如果我们更改上下文长度,(即显示的单词不完整,但它的相邻第一个和最后一个字母未显示)
private val TEXT = "عربى"
canvas.drawTextRun(TEXT,
1, TEXT.length - 1,
0, TEXT.length,
x, y,
true, projectResources.paint)
会变成下面的样子
总之,同一个字母,上下文不同,写法就不同了。
注意:感谢 https://hencoder.com/ui-1-3/ 阐明了此方法的用法。