我的问题是,在应用于Skia画布的平滑缩放期间(使用concat
方法),文本似乎在“spurts”中缩放,非均匀。这个问题在具有FreeType 2后端的Android平台上尤为明显。
我相信这是一般文本缩放在Skia中的工作方式 - 首先将文本大小应用于字体引擎,然后提取字形位图并使用“余数”矩阵对其进行转换以获得所需的最终大小。但不知何故,最终剩余的缩放未被应用,这导致在文本大小的整数值之间的过渡期间的这种喷射。纯Java / Android画布的相同之处似乎无可挑剔(文本可以平滑地缩放)。
我的问题是如何解决这种行为?也许有一些我可以调整的构建配置标志,也许是SkPaint
运行时标志?
Skia修订版为m59
。
答案 0 :(得分:3)
我不知道Skia,但通常当我看到缩放文本的这种行为时,这是因为你将缩放浮点数转换为int。
float scale = someValue;
int someOtherVar = scale;
... some scaling math on someOtherVar...
text.setScale(someOtherVar)
这将导致描述的行为
永远不要将任何缩放变量转换为int,直到最后一步。
答案 1 :(得分:0)
在绘制文本时,尝试设置Paint.isLinearText。这将导致Skia在应用转换之前将文本呈现到路径。我的测试表明,这会使缩放变得平滑。