android 有什么方法可以将Jetpack合成字体转换为本地字体吗?

relj7zay  于 2023-01-07  发布在  Android
关注(0)|答案(2)|浏览(162)

我正在尝试使用NativeCanvasNativePaint绘制文本。我想使用Jetpack composeFontFamilyTypeface,但我必须使用原生Typeface
我无法从composeFontFamily获取字体路径来创建本机Typeface

是否有办法将ComposeTypeface转换为本机Typeface

谢啦,谢啦

m0rkklqb

m0rkklqb1#

可以使用LocalFontFamilyResolverandroidx.compose.ui.text.TextStyle对象解析android.graphics.Typeface对象。

val style: TextStyle = MaterialTheme.typography.body1
val resolver: FontFamily.Resolver = LocalFontFamilyResolver.current

val typeface: Typeface = remember(resolver, style) {
    resolver.resolve(
        fontFamily = style.fontFamily,
        fontWeight = style.fontWeight ?: FontWeight.Normal,
        fontStyle = style.fontStyle ?: FontStyle.Normal,
        fontSynthesis = style.fontSynthesis ?: FontSynthesis.All,
    )
}.value as Typeface
9lowa7mx

9lowa7mx2#

我不认为有一种方法可以将排版字体转换为本机字体。目前,我找到的唯一解决方法是提供资源:

val textTypeface: android.graphics.Typeface? =
        if (Build.VERSION.SDK_INT > Build.VERSION_CODES.O) LocalContext.current.resources.getFont(R.font.quicksand_light) else null

然而,如果Android版本〈Android oreo,idk如何提供字体,所以我回退到默认字体。

相关问题