我的问题是,在将平滑缩放应用于Skia canvas (使用concat方法)期间,文本显示为“喷发”,不均匀地缩放。这个问题在使用FreeType 2后端的安卓平台上尤为明显。
我相信这就是Skia中一般文本缩放的工作原理-首先将文本大小应用于字体引擎,然后提取字形位图,并使用“余数”矩阵对其进行转换,以获得所需的最终大小。但不知何故,最终的剩余缩放没有被应用,这导致在文本大小的整数值之间的转换中出现这种突增。对于纯Java/Android画布来说,同样的事情似乎工作得无可挑剔(文本可以平滑地缩放)。
我的问题是,我如何才能纠正这种行为?也许有一些构建配置标志可以调整,也许是SkPaint运行时标志?
Skia的修订版是m59。
发布于 2017-09-25 03:29:43
我不知道Skia,但通常当我在缩放文本时看到这种行为时,这是因为您将缩放浮点数转换为int。
float scale = someValue;
int someOtherVar = scale;
... some scaling math on someOtherVar...
text.setScale(someOtherVar)这将导致所描述的行为
在最后一步之前,不要将任何缩放变量转换为int。
发布于 2020-04-30 11:59:59
绘制文本时,请尝试设置Paint.isLinearText。这会导致Skia在应用转换之前将文本呈现到路径。我的测试表明,这会导致伸缩变得平滑。
https://stackoverflow.com/questions/46298359
复制相似问题