В моем приложении (простое редактирование фотографий) я хочу иметь возможность добавлять текст к изображению.
Чтобы расположить текст, я использую настройку, как показано ниже:
Код: Выделить всё
Box(...) {
Image(....)
Box(gesture-handling for moving) {
Text(
text = "something",
color = Color.Black,
fontSize = 24.sp,
fontFamily = SN_Pro,
fontWeight = FontWeight.ExtraBold,
fontStyle = FontStyle.Normal,
textAlign = TextAlign.Left,
lineHeight = (fontSize * 1.2f).sp
)
}
}
Когда я завершаю действие, я интегрирую текст в изображение с помощью Canvas, Paint и drawText.
И здесь все идет не так:

На изображении нижний текст — это текст, созданный с помощью поля Text из приведенного выше примера.
Верхний текст — после интеграции в изображение.
На мой взгляд, вес перемешан.
Код для интеграции в изображение:
Код: Выделить всё
val canvas = android.graphics.Canvas(newBitmap)
val paint = android.graphics.Paint().apply {
isAntiAlias = true
color = Color.Black.toArgb()
textSize = 24f
textAlign = android.graphics.Paint.Align.LEFT
typeface = fontTypeface
}
canvas.withSave {
drawText("something", textX, currentY, paint)
}
Код: Выделить всё
val builder = Typeface.Builder(context.assets, "font/sn_pro_variablefont_wght.ttf")
builder.setWeight(textEffect.fontWeight.weight)
if (textEffect.fontStyle == FontStyle.Italic) {
builder.setItalic(true)
}
return = builder.build() ?: Typeface.DEFAULT
Подробнее здесь: https://stackoverflow.com/questions/798 ... -on-canvas
Мобильная версия