我的问题是,在应用于Skia帆布(使用concat
方法)的平滑缩放时,文本似乎在" Spurts"中缩放,不均匀。在使用Freetype 2后端的Android平台上,问题尤其明显。
我相信这是一般文本缩放在SKIA中的工作方式 - 首先将文本大小应用于字体引擎,然后提取字形位图并使用"剩余"矩阵转换它以实现所需的最终尺寸。但是,不应用最终剩余的缩放,这会导致文本大小的积分值之间的过渡导致这样的突变。纯Java/Android帆布的同一件事似乎无可挑剔(文本平稳)。
我的问题是如何解决该行为?也许我可以调整一些构建配置标志,也许是SkPaint
运行时标志?
Skia修订版是m59
。
我不知道Skia,但是通常当我看到具有缩放文本的这种行为时,这是因为您将缩放缩放率扔到了int中。
float scale = someValue;
int someOtherVar = scale;
... some scaling math on someOtherVar...
text.setScale(someOtherVar)
这将导致所描述的行为
永远不要将任何缩放变量转换为int直到最后一步。
绘画文本时,请尝试设置paint.islineartext。这会导致SKIA在应用转换之前将文本渲染到路径。我的测试表明,这会导致缩放变得光滑。