我正在尝试使用NativeCanvas和NativePaint绘制文本。我想使用Jetpack composeFontFamily和Typeface,但我必须使用原生Typeface。我无法从composeFontFamily获取字体路径来创建本机Typeface。
NativeCanvas
NativePaint
compose
FontFamily
Typeface
是否有办法将ComposeTypeface转换为本机Typeface?
Compose
谢啦,谢啦
m0rkklqb1#
可以使用LocalFontFamilyResolver从androidx.compose.ui.text.TextStyle对象解析android.graphics.Typeface对象。
LocalFontFamilyResolver
androidx.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
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如何提供字体,所以我回退到默认字体。
2条答案
按热度按时间m0rkklqb1#
可以使用
LocalFontFamilyResolver
从androidx.compose.ui.text.TextStyle
对象解析android.graphics.Typeface
对象。9lowa7mx2#
我不认为有一种方法可以将排版字体转换为本机字体。目前,我找到的唯一解决方法是提供资源:
然而,如果Android版本〈Android oreo,idk如何提供字体,所以我回退到默认字体。