Fix text ranges background height and alignment

commit_hash:bc60ac6cdad2b11a4bb99b2ed44bea0ea99bfcb6
This commit is contained in:
cir2100
2025-12-19 16:05:03 +03:00
parent ac8e5151d5
commit fa7ecda1d4
18 changed files with 504 additions and 82 deletions
+12
View File
@@ -3211,6 +3211,7 @@
"client/android/divkit-demo-app/src/screenshotTest/screenshots/API24_HDPI_540x1200/viewRender/com.yandex.div.Div2ScreenshotTest/div-text/custom_shadow.png":"divkit/public/client/android/divkit-demo-app/src/screenshotTest/screenshots/API24_HDPI_540x1200/viewRender/com.yandex.div.Div2ScreenshotTest/div-text/custom_shadow.png",
"client/android/divkit-demo-app/src/screenshotTest/screenshots/API24_HDPI_540x1200/viewRender/com.yandex.div.Div2ScreenshotTest/div-text/diagonal-gradient-background.png":"divkit/public/client/android/divkit-demo-app/src/screenshotTest/screenshots/API24_HDPI_540x1200/viewRender/com.yandex.div.Div2ScreenshotTest/div-text/diagonal-gradient-background.png",
"client/android/divkit-demo-app/src/screenshotTest/screenshots/API24_HDPI_540x1200/viewRender/com.yandex.div.Div2ScreenshotTest/div-text/display-text.png":"divkit/public/client/android/divkit-demo-app/src/screenshotTest/screenshots/API24_HDPI_540x1200/viewRender/com.yandex.div.Div2ScreenshotTest/div-text/display-text.png",
"client/android/divkit-demo-app/src/screenshotTest/screenshots/API24_HDPI_540x1200/viewRender/com.yandex.div.Div2ScreenshotTest/div-text/ellips-ranges-background.png":"divkit/public/client/android/divkit-demo-app/src/screenshotTest/screenshots/API24_HDPI_540x1200/viewRender/com.yandex.div.Div2ScreenshotTest/div-text/ellips-ranges-background.png",
"client/android/divkit-demo-app/src/screenshotTest/screenshots/API24_HDPI_540x1200/viewRender/com.yandex.div.Div2ScreenshotTest/div-text/ellipsis-with-image.png":"divkit/public/client/android/divkit-demo-app/src/screenshotTest/screenshots/API24_HDPI_540x1200/viewRender/com.yandex.div.Div2ScreenshotTest/div-text/ellipsis-with-image.png",
"client/android/divkit-demo-app/src/screenshotTest/screenshots/API24_HDPI_540x1200/viewRender/com.yandex.div.Div2ScreenshotTest/div-text/ellipsis.png":"divkit/public/client/android/divkit-demo-app/src/screenshotTest/screenshots/API24_HDPI_540x1200/viewRender/com.yandex.div.Div2ScreenshotTest/div-text/ellipsis.png",
"client/android/divkit-demo-app/src/screenshotTest/screenshots/API24_HDPI_540x1200/viewRender/com.yandex.div.Div2ScreenshotTest/div-text/empty-text-height.png":"divkit/public/client/android/divkit-demo-app/src/screenshotTest/screenshots/API24_HDPI_540x1200/viewRender/com.yandex.div.Div2ScreenshotTest/div-text/empty-text-height.png",
@@ -4524,6 +4525,7 @@
"client/android/divkit-demo-app/src/screenshotTest/screenshots/API26_XHDPI_720x1600/viewPixelCopy/com.yandex.div.Div2ScreenshotTest/div-text/custom_shadow.png":"divkit/public/client/android/divkit-demo-app/src/screenshotTest/screenshots/API26_XHDPI_720x1600/viewPixelCopy/com.yandex.div.Div2ScreenshotTest/div-text/custom_shadow.png",
"client/android/divkit-demo-app/src/screenshotTest/screenshots/API26_XHDPI_720x1600/viewPixelCopy/com.yandex.div.Div2ScreenshotTest/div-text/diagonal-gradient-background.png":"divkit/public/client/android/divkit-demo-app/src/screenshotTest/screenshots/API26_XHDPI_720x1600/viewPixelCopy/com.yandex.div.Div2ScreenshotTest/div-text/diagonal-gradient-background.png",
"client/android/divkit-demo-app/src/screenshotTest/screenshots/API26_XHDPI_720x1600/viewPixelCopy/com.yandex.div.Div2ScreenshotTest/div-text/display-text.png":"divkit/public/client/android/divkit-demo-app/src/screenshotTest/screenshots/API26_XHDPI_720x1600/viewPixelCopy/com.yandex.div.Div2ScreenshotTest/div-text/display-text.png",
"client/android/divkit-demo-app/src/screenshotTest/screenshots/API26_XHDPI_720x1600/viewPixelCopy/com.yandex.div.Div2ScreenshotTest/div-text/ellips-ranges-background.png":"divkit/public/client/android/divkit-demo-app/src/screenshotTest/screenshots/API26_XHDPI_720x1600/viewPixelCopy/com.yandex.div.Div2ScreenshotTest/div-text/ellips-ranges-background.png",
"client/android/divkit-demo-app/src/screenshotTest/screenshots/API26_XHDPI_720x1600/viewPixelCopy/com.yandex.div.Div2ScreenshotTest/div-text/ellipsis-with-image.png":"divkit/public/client/android/divkit-demo-app/src/screenshotTest/screenshots/API26_XHDPI_720x1600/viewPixelCopy/com.yandex.div.Div2ScreenshotTest/div-text/ellipsis-with-image.png",
"client/android/divkit-demo-app/src/screenshotTest/screenshots/API26_XHDPI_720x1600/viewPixelCopy/com.yandex.div.Div2ScreenshotTest/div-text/ellipsis.png":"divkit/public/client/android/divkit-demo-app/src/screenshotTest/screenshots/API26_XHDPI_720x1600/viewPixelCopy/com.yandex.div.Div2ScreenshotTest/div-text/ellipsis.png",
"client/android/divkit-demo-app/src/screenshotTest/screenshots/API26_XHDPI_720x1600/viewPixelCopy/com.yandex.div.Div2ScreenshotTest/div-text/empty-text-height.png":"divkit/public/client/android/divkit-demo-app/src/screenshotTest/screenshots/API26_XHDPI_720x1600/viewPixelCopy/com.yandex.div.Div2ScreenshotTest/div-text/empty-text-height.png",
@@ -5837,6 +5839,7 @@
"client/android/divkit-demo-app/src/screenshotTest/screenshots/API26_XHDPI_720x1600/viewRender/com.yandex.div.Div2ScreenshotTest/div-text/custom_shadow.png":"divkit/public/client/android/divkit-demo-app/src/screenshotTest/screenshots/API26_XHDPI_720x1600/viewRender/com.yandex.div.Div2ScreenshotTest/div-text/custom_shadow.png",
"client/android/divkit-demo-app/src/screenshotTest/screenshots/API26_XHDPI_720x1600/viewRender/com.yandex.div.Div2ScreenshotTest/div-text/diagonal-gradient-background.png":"divkit/public/client/android/divkit-demo-app/src/screenshotTest/screenshots/API26_XHDPI_720x1600/viewRender/com.yandex.div.Div2ScreenshotTest/div-text/diagonal-gradient-background.png",
"client/android/divkit-demo-app/src/screenshotTest/screenshots/API26_XHDPI_720x1600/viewRender/com.yandex.div.Div2ScreenshotTest/div-text/display-text.png":"divkit/public/client/android/divkit-demo-app/src/screenshotTest/screenshots/API26_XHDPI_720x1600/viewRender/com.yandex.div.Div2ScreenshotTest/div-text/display-text.png",
"client/android/divkit-demo-app/src/screenshotTest/screenshots/API26_XHDPI_720x1600/viewRender/com.yandex.div.Div2ScreenshotTest/div-text/ellips-ranges-background.png":"divkit/public/client/android/divkit-demo-app/src/screenshotTest/screenshots/API26_XHDPI_720x1600/viewRender/com.yandex.div.Div2ScreenshotTest/div-text/ellips-ranges-background.png",
"client/android/divkit-demo-app/src/screenshotTest/screenshots/API26_XHDPI_720x1600/viewRender/com.yandex.div.Div2ScreenshotTest/div-text/ellipsis-with-image.png":"divkit/public/client/android/divkit-demo-app/src/screenshotTest/screenshots/API26_XHDPI_720x1600/viewRender/com.yandex.div.Div2ScreenshotTest/div-text/ellipsis-with-image.png",
"client/android/divkit-demo-app/src/screenshotTest/screenshots/API26_XHDPI_720x1600/viewRender/com.yandex.div.Div2ScreenshotTest/div-text/ellipsis.png":"divkit/public/client/android/divkit-demo-app/src/screenshotTest/screenshots/API26_XHDPI_720x1600/viewRender/com.yandex.div.Div2ScreenshotTest/div-text/ellipsis.png",
"client/android/divkit-demo-app/src/screenshotTest/screenshots/API26_XHDPI_720x1600/viewRender/com.yandex.div.Div2ScreenshotTest/div-text/empty-text-height.png":"divkit/public/client/android/divkit-demo-app/src/screenshotTest/screenshots/API26_XHDPI_720x1600/viewRender/com.yandex.div.Div2ScreenshotTest/div-text/empty-text-height.png",
@@ -7150,6 +7153,7 @@
"client/android/divkit-demo-app/src/screenshotTest/screenshots/API28_XHDPI_720x1600/viewPixelCopy/com.yandex.div.Div2ScreenshotTest/div-text/custom_shadow.png":"divkit/public/client/android/divkit-demo-app/src/screenshotTest/screenshots/API28_XHDPI_720x1600/viewPixelCopy/com.yandex.div.Div2ScreenshotTest/div-text/custom_shadow.png",
"client/android/divkit-demo-app/src/screenshotTest/screenshots/API28_XHDPI_720x1600/viewPixelCopy/com.yandex.div.Div2ScreenshotTest/div-text/diagonal-gradient-background.png":"divkit/public/client/android/divkit-demo-app/src/screenshotTest/screenshots/API28_XHDPI_720x1600/viewPixelCopy/com.yandex.div.Div2ScreenshotTest/div-text/diagonal-gradient-background.png",
"client/android/divkit-demo-app/src/screenshotTest/screenshots/API28_XHDPI_720x1600/viewPixelCopy/com.yandex.div.Div2ScreenshotTest/div-text/display-text.png":"divkit/public/client/android/divkit-demo-app/src/screenshotTest/screenshots/API28_XHDPI_720x1600/viewPixelCopy/com.yandex.div.Div2ScreenshotTest/div-text/display-text.png",
"client/android/divkit-demo-app/src/screenshotTest/screenshots/API28_XHDPI_720x1600/viewPixelCopy/com.yandex.div.Div2ScreenshotTest/div-text/ellips-ranges-background.png":"divkit/public/client/android/divkit-demo-app/src/screenshotTest/screenshots/API28_XHDPI_720x1600/viewPixelCopy/com.yandex.div.Div2ScreenshotTest/div-text/ellips-ranges-background.png",
"client/android/divkit-demo-app/src/screenshotTest/screenshots/API28_XHDPI_720x1600/viewPixelCopy/com.yandex.div.Div2ScreenshotTest/div-text/ellipsis-with-image.png":"divkit/public/client/android/divkit-demo-app/src/screenshotTest/screenshots/API28_XHDPI_720x1600/viewPixelCopy/com.yandex.div.Div2ScreenshotTest/div-text/ellipsis-with-image.png",
"client/android/divkit-demo-app/src/screenshotTest/screenshots/API28_XHDPI_720x1600/viewPixelCopy/com.yandex.div.Div2ScreenshotTest/div-text/ellipsis.png":"divkit/public/client/android/divkit-demo-app/src/screenshotTest/screenshots/API28_XHDPI_720x1600/viewPixelCopy/com.yandex.div.Div2ScreenshotTest/div-text/ellipsis.png",
"client/android/divkit-demo-app/src/screenshotTest/screenshots/API28_XHDPI_720x1600/viewPixelCopy/com.yandex.div.Div2ScreenshotTest/div-text/empty-text-height.png":"divkit/public/client/android/divkit-demo-app/src/screenshotTest/screenshots/API28_XHDPI_720x1600/viewPixelCopy/com.yandex.div.Div2ScreenshotTest/div-text/empty-text-height.png",
@@ -8463,6 +8467,7 @@
"client/android/divkit-demo-app/src/screenshotTest/screenshots/API28_XHDPI_720x1600/viewRender/com.yandex.div.Div2ScreenshotTest/div-text/custom_shadow.png":"divkit/public/client/android/divkit-demo-app/src/screenshotTest/screenshots/API28_XHDPI_720x1600/viewRender/com.yandex.div.Div2ScreenshotTest/div-text/custom_shadow.png",
"client/android/divkit-demo-app/src/screenshotTest/screenshots/API28_XHDPI_720x1600/viewRender/com.yandex.div.Div2ScreenshotTest/div-text/diagonal-gradient-background.png":"divkit/public/client/android/divkit-demo-app/src/screenshotTest/screenshots/API28_XHDPI_720x1600/viewRender/com.yandex.div.Div2ScreenshotTest/div-text/diagonal-gradient-background.png",
"client/android/divkit-demo-app/src/screenshotTest/screenshots/API28_XHDPI_720x1600/viewRender/com.yandex.div.Div2ScreenshotTest/div-text/display-text.png":"divkit/public/client/android/divkit-demo-app/src/screenshotTest/screenshots/API28_XHDPI_720x1600/viewRender/com.yandex.div.Div2ScreenshotTest/div-text/display-text.png",
"client/android/divkit-demo-app/src/screenshotTest/screenshots/API28_XHDPI_720x1600/viewRender/com.yandex.div.Div2ScreenshotTest/div-text/ellips-ranges-background.png":"divkit/public/client/android/divkit-demo-app/src/screenshotTest/screenshots/API28_XHDPI_720x1600/viewRender/com.yandex.div.Div2ScreenshotTest/div-text/ellips-ranges-background.png",
"client/android/divkit-demo-app/src/screenshotTest/screenshots/API28_XHDPI_720x1600/viewRender/com.yandex.div.Div2ScreenshotTest/div-text/ellipsis-with-image.png":"divkit/public/client/android/divkit-demo-app/src/screenshotTest/screenshots/API28_XHDPI_720x1600/viewRender/com.yandex.div.Div2ScreenshotTest/div-text/ellipsis-with-image.png",
"client/android/divkit-demo-app/src/screenshotTest/screenshots/API28_XHDPI_720x1600/viewRender/com.yandex.div.Div2ScreenshotTest/div-text/ellipsis.png":"divkit/public/client/android/divkit-demo-app/src/screenshotTest/screenshots/API28_XHDPI_720x1600/viewRender/com.yandex.div.Div2ScreenshotTest/div-text/ellipsis.png",
"client/android/divkit-demo-app/src/screenshotTest/screenshots/API28_XHDPI_720x1600/viewRender/com.yandex.div.Div2ScreenshotTest/div-text/empty-text-height.png":"divkit/public/client/android/divkit-demo-app/src/screenshotTest/screenshots/API28_XHDPI_720x1600/viewRender/com.yandex.div.Div2ScreenshotTest/div-text/empty-text-height.png",
@@ -9776,6 +9781,7 @@
"client/android/divkit-demo-app/src/screenshotTest/screenshots/API30_XXHDPI_1080x2400/viewPixelCopy/com.yandex.div.Div2ScreenshotTest/div-text/custom_shadow.png":"divkit/public/client/android/divkit-demo-app/src/screenshotTest/screenshots/API30_XXHDPI_1080x2400/viewPixelCopy/com.yandex.div.Div2ScreenshotTest/div-text/custom_shadow.png",
"client/android/divkit-demo-app/src/screenshotTest/screenshots/API30_XXHDPI_1080x2400/viewPixelCopy/com.yandex.div.Div2ScreenshotTest/div-text/diagonal-gradient-background.png":"divkit/public/client/android/divkit-demo-app/src/screenshotTest/screenshots/API30_XXHDPI_1080x2400/viewPixelCopy/com.yandex.div.Div2ScreenshotTest/div-text/diagonal-gradient-background.png",
"client/android/divkit-demo-app/src/screenshotTest/screenshots/API30_XXHDPI_1080x2400/viewPixelCopy/com.yandex.div.Div2ScreenshotTest/div-text/display-text.png":"divkit/public/client/android/divkit-demo-app/src/screenshotTest/screenshots/API30_XXHDPI_1080x2400/viewPixelCopy/com.yandex.div.Div2ScreenshotTest/div-text/display-text.png",
"client/android/divkit-demo-app/src/screenshotTest/screenshots/API30_XXHDPI_1080x2400/viewPixelCopy/com.yandex.div.Div2ScreenshotTest/div-text/ellips-ranges-background.png":"divkit/public/client/android/divkit-demo-app/src/screenshotTest/screenshots/API30_XXHDPI_1080x2400/viewPixelCopy/com.yandex.div.Div2ScreenshotTest/div-text/ellips-ranges-background.png",
"client/android/divkit-demo-app/src/screenshotTest/screenshots/API30_XXHDPI_1080x2400/viewPixelCopy/com.yandex.div.Div2ScreenshotTest/div-text/ellipsis-with-image.png":"divkit/public/client/android/divkit-demo-app/src/screenshotTest/screenshots/API30_XXHDPI_1080x2400/viewPixelCopy/com.yandex.div.Div2ScreenshotTest/div-text/ellipsis-with-image.png",
"client/android/divkit-demo-app/src/screenshotTest/screenshots/API30_XXHDPI_1080x2400/viewPixelCopy/com.yandex.div.Div2ScreenshotTest/div-text/ellipsis.png":"divkit/public/client/android/divkit-demo-app/src/screenshotTest/screenshots/API30_XXHDPI_1080x2400/viewPixelCopy/com.yandex.div.Div2ScreenshotTest/div-text/ellipsis.png",
"client/android/divkit-demo-app/src/screenshotTest/screenshots/API30_XXHDPI_1080x2400/viewPixelCopy/com.yandex.div.Div2ScreenshotTest/div-text/empty-text-height.png":"divkit/public/client/android/divkit-demo-app/src/screenshotTest/screenshots/API30_XXHDPI_1080x2400/viewPixelCopy/com.yandex.div.Div2ScreenshotTest/div-text/empty-text-height.png",
@@ -11089,6 +11095,7 @@
"client/android/divkit-demo-app/src/screenshotTest/screenshots/API30_XXHDPI_1080x2400/viewRender/com.yandex.div.Div2ScreenshotTest/div-text/custom_shadow.png":"divkit/public/client/android/divkit-demo-app/src/screenshotTest/screenshots/API30_XXHDPI_1080x2400/viewRender/com.yandex.div.Div2ScreenshotTest/div-text/custom_shadow.png",
"client/android/divkit-demo-app/src/screenshotTest/screenshots/API30_XXHDPI_1080x2400/viewRender/com.yandex.div.Div2ScreenshotTest/div-text/diagonal-gradient-background.png":"divkit/public/client/android/divkit-demo-app/src/screenshotTest/screenshots/API30_XXHDPI_1080x2400/viewRender/com.yandex.div.Div2ScreenshotTest/div-text/diagonal-gradient-background.png",
"client/android/divkit-demo-app/src/screenshotTest/screenshots/API30_XXHDPI_1080x2400/viewRender/com.yandex.div.Div2ScreenshotTest/div-text/display-text.png":"divkit/public/client/android/divkit-demo-app/src/screenshotTest/screenshots/API30_XXHDPI_1080x2400/viewRender/com.yandex.div.Div2ScreenshotTest/div-text/display-text.png",
"client/android/divkit-demo-app/src/screenshotTest/screenshots/API30_XXHDPI_1080x2400/viewRender/com.yandex.div.Div2ScreenshotTest/div-text/ellips-ranges-background.png":"divkit/public/client/android/divkit-demo-app/src/screenshotTest/screenshots/API30_XXHDPI_1080x2400/viewRender/com.yandex.div.Div2ScreenshotTest/div-text/ellips-ranges-background.png",
"client/android/divkit-demo-app/src/screenshotTest/screenshots/API30_XXHDPI_1080x2400/viewRender/com.yandex.div.Div2ScreenshotTest/div-text/ellipsis-with-image.png":"divkit/public/client/android/divkit-demo-app/src/screenshotTest/screenshots/API30_XXHDPI_1080x2400/viewRender/com.yandex.div.Div2ScreenshotTest/div-text/ellipsis-with-image.png",
"client/android/divkit-demo-app/src/screenshotTest/screenshots/API30_XXHDPI_1080x2400/viewRender/com.yandex.div.Div2ScreenshotTest/div-text/ellipsis.png":"divkit/public/client/android/divkit-demo-app/src/screenshotTest/screenshots/API30_XXHDPI_1080x2400/viewRender/com.yandex.div.Div2ScreenshotTest/div-text/ellipsis.png",
"client/android/divkit-demo-app/src/screenshotTest/screenshots/API30_XXHDPI_1080x2400/viewRender/com.yandex.div.Div2ScreenshotTest/div-text/empty-text-height.png":"divkit/public/client/android/divkit-demo-app/src/screenshotTest/screenshots/API30_XXHDPI_1080x2400/viewRender/com.yandex.div.Div2ScreenshotTest/div-text/empty-text-height.png",
@@ -12402,6 +12409,7 @@
"client/android/divkit-demo-app/src/screenshotTest/screenshots/API32_XXHDPI_1080x2400/viewPixelCopy/com.yandex.div.Div2ScreenshotTest/div-text/custom_shadow.png":"divkit/public/client/android/divkit-demo-app/src/screenshotTest/screenshots/API32_XXHDPI_1080x2400/viewPixelCopy/com.yandex.div.Div2ScreenshotTest/div-text/custom_shadow.png",
"client/android/divkit-demo-app/src/screenshotTest/screenshots/API32_XXHDPI_1080x2400/viewPixelCopy/com.yandex.div.Div2ScreenshotTest/div-text/diagonal-gradient-background.png":"divkit/public/client/android/divkit-demo-app/src/screenshotTest/screenshots/API32_XXHDPI_1080x2400/viewPixelCopy/com.yandex.div.Div2ScreenshotTest/div-text/diagonal-gradient-background.png",
"client/android/divkit-demo-app/src/screenshotTest/screenshots/API32_XXHDPI_1080x2400/viewPixelCopy/com.yandex.div.Div2ScreenshotTest/div-text/display-text.png":"divkit/public/client/android/divkit-demo-app/src/screenshotTest/screenshots/API32_XXHDPI_1080x2400/viewPixelCopy/com.yandex.div.Div2ScreenshotTest/div-text/display-text.png",
"client/android/divkit-demo-app/src/screenshotTest/screenshots/API32_XXHDPI_1080x2400/viewPixelCopy/com.yandex.div.Div2ScreenshotTest/div-text/ellips-ranges-background.png":"divkit/public/client/android/divkit-demo-app/src/screenshotTest/screenshots/API32_XXHDPI_1080x2400/viewPixelCopy/com.yandex.div.Div2ScreenshotTest/div-text/ellips-ranges-background.png",
"client/android/divkit-demo-app/src/screenshotTest/screenshots/API32_XXHDPI_1080x2400/viewPixelCopy/com.yandex.div.Div2ScreenshotTest/div-text/ellipsis-with-image.png":"divkit/public/client/android/divkit-demo-app/src/screenshotTest/screenshots/API32_XXHDPI_1080x2400/viewPixelCopy/com.yandex.div.Div2ScreenshotTest/div-text/ellipsis-with-image.png",
"client/android/divkit-demo-app/src/screenshotTest/screenshots/API32_XXHDPI_1080x2400/viewPixelCopy/com.yandex.div.Div2ScreenshotTest/div-text/ellipsis.png":"divkit/public/client/android/divkit-demo-app/src/screenshotTest/screenshots/API32_XXHDPI_1080x2400/viewPixelCopy/com.yandex.div.Div2ScreenshotTest/div-text/ellipsis.png",
"client/android/divkit-demo-app/src/screenshotTest/screenshots/API32_XXHDPI_1080x2400/viewPixelCopy/com.yandex.div.Div2ScreenshotTest/div-text/empty-text-height.png":"divkit/public/client/android/divkit-demo-app/src/screenshotTest/screenshots/API32_XXHDPI_1080x2400/viewPixelCopy/com.yandex.div.Div2ScreenshotTest/div-text/empty-text-height.png",
@@ -13715,6 +13723,7 @@
"client/android/divkit-demo-app/src/screenshotTest/screenshots/API32_XXHDPI_1080x2400/viewRender/com.yandex.div.Div2ScreenshotTest/div-text/custom_shadow.png":"divkit/public/client/android/divkit-demo-app/src/screenshotTest/screenshots/API32_XXHDPI_1080x2400/viewRender/com.yandex.div.Div2ScreenshotTest/div-text/custom_shadow.png",
"client/android/divkit-demo-app/src/screenshotTest/screenshots/API32_XXHDPI_1080x2400/viewRender/com.yandex.div.Div2ScreenshotTest/div-text/diagonal-gradient-background.png":"divkit/public/client/android/divkit-demo-app/src/screenshotTest/screenshots/API32_XXHDPI_1080x2400/viewRender/com.yandex.div.Div2ScreenshotTest/div-text/diagonal-gradient-background.png",
"client/android/divkit-demo-app/src/screenshotTest/screenshots/API32_XXHDPI_1080x2400/viewRender/com.yandex.div.Div2ScreenshotTest/div-text/display-text.png":"divkit/public/client/android/divkit-demo-app/src/screenshotTest/screenshots/API32_XXHDPI_1080x2400/viewRender/com.yandex.div.Div2ScreenshotTest/div-text/display-text.png",
"client/android/divkit-demo-app/src/screenshotTest/screenshots/API32_XXHDPI_1080x2400/viewRender/com.yandex.div.Div2ScreenshotTest/div-text/ellips-ranges-background.png":"divkit/public/client/android/divkit-demo-app/src/screenshotTest/screenshots/API32_XXHDPI_1080x2400/viewRender/com.yandex.div.Div2ScreenshotTest/div-text/ellips-ranges-background.png",
"client/android/divkit-demo-app/src/screenshotTest/screenshots/API32_XXHDPI_1080x2400/viewRender/com.yandex.div.Div2ScreenshotTest/div-text/ellipsis-with-image.png":"divkit/public/client/android/divkit-demo-app/src/screenshotTest/screenshots/API32_XXHDPI_1080x2400/viewRender/com.yandex.div.Div2ScreenshotTest/div-text/ellipsis-with-image.png",
"client/android/divkit-demo-app/src/screenshotTest/screenshots/API32_XXHDPI_1080x2400/viewRender/com.yandex.div.Div2ScreenshotTest/div-text/ellipsis.png":"divkit/public/client/android/divkit-demo-app/src/screenshotTest/screenshots/API32_XXHDPI_1080x2400/viewRender/com.yandex.div.Div2ScreenshotTest/div-text/ellipsis.png",
"client/android/divkit-demo-app/src/screenshotTest/screenshots/API32_XXHDPI_1080x2400/viewRender/com.yandex.div.Div2ScreenshotTest/div-text/empty-text-height.png":"divkit/public/client/android/divkit-demo-app/src/screenshotTest/screenshots/API32_XXHDPI_1080x2400/viewRender/com.yandex.div.Div2ScreenshotTest/div-text/empty-text-height.png",
@@ -18099,6 +18108,8 @@
"client/ios/Tests/reference_snapshots/div-text/diagonal-gradient-background_414@3x.png":"divkit/public/client/ios/Tests/reference_snapshots/div-text/diagonal-gradient-background_414@3x.png",
"client/ios/Tests/reference_snapshots/div-text/display-text_375@2x.png":"divkit/public/client/ios/Tests/reference_snapshots/div-text/display-text_375@2x.png",
"client/ios/Tests/reference_snapshots/div-text/display-text_414@3x.png":"divkit/public/client/ios/Tests/reference_snapshots/div-text/display-text_414@3x.png",
"client/ios/Tests/reference_snapshots/div-text/ellips-ranges-background_375@2x.png":"divkit/public/client/ios/Tests/reference_snapshots/div-text/ellips-ranges-background_375@2x.png",
"client/ios/Tests/reference_snapshots/div-text/ellips-ranges-background_414@3x.png":"divkit/public/client/ios/Tests/reference_snapshots/div-text/ellips-ranges-background_414@3x.png",
"client/ios/Tests/reference_snapshots/div-text/ellipsis-with-image_375@2x.png":"divkit/public/client/ios/Tests/reference_snapshots/div-text/ellipsis-with-image_375@2x.png",
"client/ios/Tests/reference_snapshots/div-text/ellipsis-with-image_414@3x.png":"divkit/public/client/ios/Tests/reference_snapshots/div-text/ellipsis-with-image_414@3x.png",
"client/ios/Tests/reference_snapshots/div-text/ellipsis_375@2x.png":"divkit/public/client/ios/Tests/reference_snapshots/div-text/ellipsis_375@2x.png",
@@ -24233,6 +24244,7 @@
"test_data/snapshot_test_data/div-text/custom_shadow.json":"divkit/public/test_data/snapshot_test_data/div-text/custom_shadow.json",
"test_data/snapshot_test_data/div-text/diagonal-gradient-background.json":"divkit/public/test_data/snapshot_test_data/div-text/diagonal-gradient-background.json",
"test_data/snapshot_test_data/div-text/display-text.json":"divkit/public/test_data/snapshot_test_data/div-text/display-text.json",
"test_data/snapshot_test_data/div-text/ellips-ranges-background.json":"divkit/public/test_data/snapshot_test_data/div-text/ellips-ranges-background.json",
"test_data/snapshot_test_data/div-text/ellipsis-with-image.json":"divkit/public/test_data/snapshot_test_data/div-text/ellipsis-with-image.json",
"test_data/snapshot_test_data/div-text/ellipsis.json":"divkit/public/test_data/snapshot_test_data/div-text/ellipsis.json",
"test_data/snapshot_test_data/div-text/empty-text-height.json":"divkit/public/test_data/snapshot_test_data/div-text/empty-text-height.json",
@@ -13,8 +13,6 @@ import com.yandex.div.core.view2.divs.unitToPx
import com.yandex.div.json.expressions.ExpressionResolver
import com.yandex.div2.DivCloudBackground
import com.yandex.div2.DivSizeUnit
import com.yandex.div2.DivTextRangeBackground
import com.yandex.div2.DivTextRangeBorder
import kotlin.math.abs
import kotlin.math.max
import kotlin.math.min
@@ -39,10 +37,9 @@ internal class CloudTextRangeBackgroundRenderer(
endLine: Int,
startOffset: Int,
endOffset: Int,
border: DivTextRangeBorder?,
background: DivTextRangeBackground?
span: DivBackgroundSpan,
) {
val cloudBackground = background?.value() as? DivCloudBackground ?: return
val cloudBackground = span.background?.value() as? DivCloudBackground ?: return
draw(canvas, layout, startLine, endLine, startOffset, endOffset, cloudBackground)
}
@@ -1,13 +1,24 @@
package com.yandex.div.core.util.text
import android.graphics.Typeface
import android.text.TextPaint
import android.text.style.UnderlineSpan
import androidx.annotation.Px
import com.yandex.div2.DivTextAlignmentVertical
import com.yandex.div2.DivTextRangeBackground
import com.yandex.div2.DivTextRangeBorder
internal class DivBackgroundSpan(
val border: DivTextRangeBorder?,
val background: DivTextRangeBackground?
val background: DivTextRangeBackground?,
@param:Px val baselineOffset: Int,
val alignmentVertical: DivTextAlignmentVertical?,
@param:Px val lineHeight: Int?,
@param:Px val fontSize: Int?,
@param:Px val topOffset: Int?,
val typeface: Typeface?,
val fontFeatureSettings: String?,
val fontVariationSettings: String?,
) : UnderlineSpan() {
override fun updateDrawState(ds: TextPaint) {
@@ -34,6 +34,14 @@ internal class DivTextRangesBackgroundHelper(
val spannedText = text as? Spannable ?: return false
return spans.any { span ->
span.border == backgroundSpan.border && span.background == backgroundSpan.background
&& span.baselineOffset == backgroundSpan.baselineOffset
&& span.alignmentVertical == backgroundSpan.alignmentVertical
&& span.lineHeight == backgroundSpan.lineHeight
&& span.fontSize == backgroundSpan.fontSize
&& span.topOffset == backgroundSpan.topOffset
&& span.typeface == backgroundSpan.typeface
&& span.fontFeatureSettings == backgroundSpan.fontFeatureSettings
&& span.fontVariationSettings == backgroundSpan.fontVariationSettings
&& end == spannedText.getSpanEnd(span) && start == spannedText.getSpanStart(span)
}
}
@@ -75,14 +83,12 @@ internal class DivTextRangesBackgroundHelper(
when (span.background) {
is DivTextRangeBackground.Cloud -> {
cloudBackgroundRenderer.draw(canvas, layout, startLine, endLine, startOffset, endOffset,
span.border, span.background)
cloudBackgroundRenderer.draw(canvas, layout, startLine, endLine, startOffset, endOffset, span)
}
else -> {
val renderer = if (startLine == endLine) singleLineRenderer else multiLineRenderer
renderer.draw(canvas, layout, startLine, endLine, startOffset, endOffset,
span.border, span.background)
renderer.draw(canvas, layout, startLine, endLine, startOffset, endOffset, span)
}
}
}
@@ -5,21 +5,24 @@ import android.graphics.Paint
import android.graphics.Path
import android.graphics.RectF
import android.text.Layout
import android.text.TextPaint
import android.util.DisplayMetrics
import android.view.View
import com.yandex.div.core.view2.divs.dpToPx
import com.yandex.div.core.view2.divs.supportFontVariations
import com.yandex.div.core.view2.divs.widgets.widthPx
import com.yandex.div.json.expressions.ExpressionResolver
import com.yandex.div2.DivSolidBackground
import com.yandex.div2.DivTextAlignmentVertical
import com.yandex.div2.DivTextRangeBackground
import com.yandex.div2.DivTextRangeBorder
import kotlin.math.max
import kotlin.math.min
private const val DEFAULT_LINESPACING_EXTRA = 0f
private const val DEFAULT_LINESPACING_MULTIPLIER = 1f
internal abstract class DivTextRangesBackgroundRenderer() {
private val tempPaint = TextPaint()
abstract fun draw(
canvas: Canvas,
layout: Layout,
@@ -27,56 +30,80 @@ internal abstract class DivTextRangesBackgroundRenderer() {
endLine: Int,
startOffset: Int,
endOffset: Int,
border: DivTextRangeBorder?,
background: DivTextRangeBackground?,
span: DivBackgroundSpan,
)
protected fun getLineTop(layout: Layout, line: Int): Int {
var lineTop = layout.getLineTop(line)
if (line == 0) {
lineTop -= layout.topPadding
}
return lineTop
}
protected fun getLineBounds(
layout: Layout,
line: Int,
span: DivBackgroundSpan,
isFirstLine: Boolean = false,
): LineBounds {
val baseline = layout.getLineBaseline(line)
val lineAscent = layout.getLineAscent(line)
val lineDescent = layout.getLineDescent(line)
protected fun getLineBottom(layout: Layout, line: Int): Int {
var lineBottom = layout.getLineBottomWithoutSpacing(line)
if (line == layout.lineCount - 1) {
lineBottom -= layout.bottomPadding
}
return lineBottom
}
private fun Layout.getLineBottomWithoutSpacing(line: Int): Int {
val lineBottom = getLineBottom(line)
val isLastLine = line == lineCount - 1
val lineBottomWithoutSpacing: Int
val lineSpacingExtra = spacingAdd
val lineSpacingMultiplier = spacingMultiplier
val hasLineSpacing = lineSpacingExtra != DEFAULT_LINESPACING_EXTRA
|| lineSpacingMultiplier != DEFAULT_LINESPACING_MULTIPLIER
if (!hasLineSpacing || isLastLine) {
lineBottomWithoutSpacing = lineBottom
} else {
val extra: Float
if (lineSpacingMultiplier.compareTo(DEFAULT_LINESPACING_MULTIPLIER) != 0) {
val lineHeight = getLineHeight(line)
extra = lineHeight - (lineHeight - lineSpacingExtra) / lineSpacingMultiplier
} else {
extra = lineSpacingExtra
val textAscent: Int
val textDescent: Int
if (span.fontSize != null) {
tempPaint.textSize = span.fontSize.toFloat()
tempPaint.typeface = span.typeface
tempPaint.fontFeatureSettings = span.fontFeatureSettings
if (supportFontVariations) {
tempPaint.fontVariationSettings = span.fontVariationSettings
}
lineBottomWithoutSpacing = (lineBottom - extra).toInt()
val fontMetrics = tempPaint.fontMetricsInt
textAscent = fontMetrics.ascent
textDescent = fontMetrics.descent
} else {
textAscent = lineAscent
textDescent = lineDescent
}
return lineBottomWithoutSpacing
val backgroundAscent: Int
val backgroundDescent: Int
if (span.lineHeight != null) {
val textHeight = textDescent - textAscent
val extraSpace = span.lineHeight - textHeight
val extraTop = extraSpace / 2
val extraBottom = extraSpace - extraTop
backgroundAscent = textAscent - extraTop
backgroundDescent = textDescent + extraBottom
} else {
backgroundAscent = textAscent
backgroundDescent = textDescent
}
val baselineShift = when {
span.baselineOffset != 0 -> -span.baselineOffset
span.alignmentVertical == DivTextAlignmentVertical.TOP -> {
lineAscent - textAscent
}
span.alignmentVertical == DivTextAlignmentVertical.CENTER -> {
val lineCenter = (lineAscent + lineDescent) / 2
val textCenter = (textAscent + textDescent) / 2
lineCenter - textCenter
}
span.alignmentVertical == DivTextAlignmentVertical.BOTTOM -> {
lineDescent - textDescent
}
else -> 0
}
val topOffsetShift = if (isFirstLine) -(span.topOffset ?: 0) else 0
val top = baseline + backgroundAscent + baselineShift + topOffsetShift
val bottom = baseline + backgroundDescent + baselineShift
return LineBounds(top, bottom)
}
private fun Layout.getLineHeight(line: Int): Int {
return getLineTop(line + 1) - getLineTop(line)
}
protected data class LineBounds(
val top: Int,
val bottom: Int
)
}
internal class SingleLineRenderer(
@@ -91,15 +118,13 @@ internal class SingleLineRenderer(
endLine: Int,
startOffset: Int,
endOffset: Int,
border: DivTextRangeBorder?,
background: DivTextRangeBackground?,
span: DivBackgroundSpan,
) {
val lineTop = getLineTop(layout, startLine)
val lineBottom = getLineBottom(layout, startLine)
val bounds = getLineBounds(layout, startLine, span, isFirstLine = true)
val left = min(startOffset, endOffset)
val right = max(startOffset, endOffset)
val borderDrawer = BackgroundDrawer(view.resources.displayMetrics, border, background, canvas, resolver)
borderDrawer.drawBackground(left.toFloat(), lineTop.toFloat(), right.toFloat(), lineBottom.toFloat())
val borderDrawer = BackgroundDrawer(view.resources.displayMetrics, span.border, span.background, canvas, resolver)
borderDrawer.drawBackground(left.toFloat(), bounds.top.toFloat(), right.toFloat(), bounds.bottom.toFloat())
}
}
@@ -116,8 +141,7 @@ internal class MultiLineRenderer(
endLine: Int,
startOffset: Int,
endOffset: Int,
border: DivTextRangeBorder?,
background: DivTextRangeBackground?,
span: DivBackgroundSpan,
) {
val paragDir = layout.getParagraphDirection(startLine)
val lineEndOffset = if (paragDir == Layout.DIR_RIGHT_TO_LEFT) {
@@ -126,20 +150,18 @@ internal class MultiLineRenderer(
layout.getLineRight(startLine)
}.toInt()
var lineBottom = getLineBottom(layout, startLine)
var lineTop = getLineTop(layout, startLine)
val drawer = BackgroundDrawer(view.resources.displayMetrics, border, background, canvas, resolver)
drawer.drawBackgroundStart(startOffset.toFloat(), lineTop.toFloat(),
lineEndOffset.toFloat(), lineBottom.toFloat())
var bounds = getLineBounds(layout, startLine, span, isFirstLine = true)
val drawer = BackgroundDrawer(view.resources.displayMetrics, span.border, span.background, canvas, resolver)
drawer.drawBackgroundStart(startOffset.toFloat(), bounds.top.toFloat(),
lineEndOffset.toFloat(), bounds.bottom.toFloat())
for (line in startLine + 1 until endLine) {
lineTop = getLineTop(layout, line)
lineBottom = getLineBottom(layout, line)
bounds = getLineBounds(layout, line, span, isFirstLine = false)
drawer.drawBackgroundMiddle(
(layout.getLineLeft(line).toInt()).toFloat(),
lineTop.toFloat(),
bounds.top.toFloat(),
(layout.getLineRight(line).toInt()).toFloat(),
lineBottom.toFloat()
bounds.bottom.toFloat()
)
}
@@ -149,11 +171,10 @@ internal class MultiLineRenderer(
layout.getLineLeft(startLine)
}.toInt()
lineBottom = getLineBottom(layout, endLine)
lineTop = getLineTop(layout, endLine)
bounds = getLineBounds(layout, endLine, span, isFirstLine = false)
drawer.drawBackgroundEnd(lineStartOffset.toFloat(), lineTop.toFloat(), endOffset.toFloat(),
lineBottom.toFloat())
drawer.drawBackgroundEnd(lineStartOffset.toFloat(), bounds.top.toFloat(), endOffset.toFloat(),
bounds.bottom.toFloat())
}
}
@@ -41,14 +41,13 @@ import com.yandex.div.internal.spannable.NoStrikethroughSpan
import com.yandex.div.internal.spannable.NoUnderlineSpan
import com.yandex.div.internal.spannable.TextColorSpan
import com.yandex.div.internal.spannable.TypefaceSpan
import com.yandex.div.internal.util.makeIf
import com.yandex.div.json.expressions.ExpressionResolver
import com.yandex.div2.DivAction
import com.yandex.div2.DivLineStyle
import com.yandex.div2.DivShadow
import com.yandex.div2.DivText
import com.yandex.div2.DivTextAlignmentVertical
import com.yandex.div2.DivTextRangeBackground
import com.yandex.div2.DivTextRangeBorder
import com.yandex.div2.DivTextRangeMask
import javax.inject.Inject
@@ -169,8 +168,8 @@ internal class SpannedTextBuilder @Inject constructor(
spannedText,
start,
end,
range.border,
range.background,
range,
textData,
inEllipsis
)
}
@@ -478,14 +477,51 @@ internal class SpannedTextBuilder @Inject constructor(
spannedText: Spannable,
start: Int,
end: Int,
border: DivTextRangeBorder?,
background: DivTextRangeBackground?,
range: DivText.Range,
textData: TextData,
inEllipsis: Boolean,
) {
val border = range.border
val background = range.background
if (border == null && background == null) return
val displayMetrics = textView.context.resources.displayMetrics
val resolver = bindingContext.expressionResolver
val backgroundSpan = DivBackgroundSpan(border, background)
val fontSizeValue = range.fontSize?.evaluate(resolver)?.toIntSafely()
val fontSizeUnit = range.fontSizeUnit.evaluate(resolver)
val typefaceProvider = typefaceResolver.getTypefaceProvider(
range.fontFamily?.evaluate(resolver) ?: textData.fontFamily
)
val rangeFontWeight = range.fontWeight?.evaluate(resolver)
val rangeFontWeightValue = range.fontWeightValue?.evaluate(resolver)?.toIntSafely()
val fontWeightValue = if (rangeFontWeight != null || rangeFontWeightValue != null) {
getTypefaceValue(rangeFontWeight, rangeFontWeightValue)
} else {
getTypefaceValue(textData.fontWeight, textData.fontWeightValue)
}
val rangeFontVariationSettings = range.fontVariationSettings?.evaluate(resolver)
val fontVariationSettings = makeIf(typefaceProvider.isVariable &&
(rangeFontWeight != null || rangeFontWeightValue != null || rangeFontVariationSettings != null)
) {
getFontVariations(rangeFontWeight, rangeFontWeightValue, rangeFontVariationSettings)
}
val backgroundSpan = DivBackgroundSpan(
border = border,
background = background,
baselineOffset = range.baselineOffset.evaluate(resolver).unitToPx(displayMetrics, fontSizeUnit),
alignmentVertical = range.alignmentVertical?.evaluate(resolver),
lineHeight = range.lineHeight?.evaluate(resolver)?.unitToPx(displayMetrics, fontSizeUnit),
fontSize = fontSizeValue?.unitToPx(displayMetrics, fontSizeUnit),
topOffset = range.topOffset?.evaluate(resolver)?.toIntSafely()?.unitToPx(displayMetrics, fontSizeUnit),
typeface = getTypeface(fontWeightValue, typefaceProvider),
fontFeatureSettings = range.fontFeatureSettings?.evaluate(resolver),
fontVariationSettings = fontVariationSettings,
)
if (textView is DivLineHeightTextView &&
!textView.hasBackgroundSpan(spannedText, backgroundSpan, start, end, resolver)) {
spannedText.setSpan(backgroundSpan, start, end, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE)
Binary file not shown.

After

Width:  |  Height:  |  Size: 203 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 324 KiB

@@ -0,0 +1,339 @@
{
"description": "Text with auto_ellipsize and ellipsis using various range properties",
"platforms": [
"android",
"ios"
],
"unsupported_platforms": {
"web": "There is no css implementation for this."
},
"templates": {
"title": {
"type": "text",
"paddings": {
"left": 4,
"right": 4
},
"font_size": 12,
"font_weight": "medium",
"text_color": "#586E75"
},
"test_text": {
"type": "text",
"paddings": {
"left": 4,
"right": 4
},
"background": [
{
"type": "solid",
"$color": "background_color"
}
],
"border": {
"corner_radius": 4
},
"font_size": 16,
"font_weight": "medium",
"text_color": "#002B36",
"width": {
"type": "fixed",
"value": 280
}
}
},
"card": {
"log_id": "ellipsis_range_properties",
"states": [
{
"state_id": 0,
"div": {
"type": "container",
"orientation": "vertical",
"paddings": {
"left": 16,
"top": 16,
"right": 16,
"bottom": 16
},
"background": [
{
"type": "solid",
"color": "#FDF6E3"
}
],
"items": [
{
"type": "title",
"margins": {
"bottom": 4
},
"text": "Ellipsis with corner_radius and border stroke on range"
},
{
"type": "test_text",
"margins": {
"bottom": 16
},
"background_color": "#FFFFFF",
"text": "This is a very long text that will be truncated with ellipsis that has corner_radius on range",
"max_lines": 2,
"auto_ellipsize": true,
"ellipsis": {
"text": "… more",
"ranges": [
{
"border": {
"corner_radius": 8,
"stroke": {
"color": "#191817",
"width": 2.0
}
}
}
]
}
},
{
"type": "title",
"margins": {
"bottom": 4
},
"text": "Ellipsis with background_color on range"
},
{
"type": "test_text",
"margins": {
"bottom": 16
},
"background_color": "#FFFFFF",
"text": "This is a very long text that will be truncated with ellipsis that has background_color on range",
"max_lines": 2,
"auto_ellipsize": true,
"ellipsis": {
"text": "… more",
"ranges": [
{
"background": {
"type": "solid",
"color": "#FFEB3B"
}
}
]
}
},
{
"type": "title",
"margins": {
"bottom": 4
},
"text": "Ellipsis with alignment_vertical: top"
},
{
"type": "test_text",
"margins": {
"bottom": 16
},
"background_color": "#FFFFFF",
"text": "This is a very long text that will be truncated with ellipsis that has alignment_vertical top on range",
"max_lines": 2,
"auto_ellipsize": true,
"ellipsis": {
"text": "… more",
"ranges": [
{
"font_size": 12,
"alignment_vertical": "top",
"text_color": "#FF0000"
}
]
}
},
{
"type": "title",
"margins": {
"bottom": 4
},
"text": "Ellipsis with alignment_vertical: center"
},
{
"type": "test_text",
"margins": {
"bottom": 16
},
"background_color": "#FFFFFF",
"text": "This is a very long text that will be truncated with ellipsis that has alignment_vertical center on range",
"max_lines": 2,
"auto_ellipsize": true,
"ellipsis": {
"text": "… more",
"ranges": [
{
"font_size": 12,
"alignment_vertical": "center",
"text_color": "#00FF00"
}
]
}
},
{
"type": "title",
"margins": {
"bottom": 4
},
"text": "Ellipsis with alignment_vertical: bottom"
},
{
"type": "test_text",
"margins": {
"bottom": 16
},
"background_color": "#FFFFFF",
"text": "This is a very long text that will be truncated with ellipsis that has alignment_vertical bottom on range",
"max_lines": 2,
"auto_ellipsize": true,
"ellipsis": {
"text": "… more",
"ranges": [
{
"font_size": 12,
"alignment_vertical": "bottom",
"text_color": "#0000FF"
}
]
}
},
{
"type": "title",
"margins": {
"bottom": 4
},
"text": "Ellipsis with positive baseline_offset"
},
{
"type": "test_text",
"margins": {
"bottom": 16
},
"background_color": "#FFFFFF",
"text": "This is a very long text that will be truncated with ellipsis that has positive baseline_offset on range",
"max_lines": 2,
"auto_ellipsize": true,
"ellipsis": {
"text": "… more",
"ranges": [
{
"baseline_offset": 7,
"text_color": "#FF5722"
}
]
}
},
{
"type": "title",
"margins": {
"bottom": 4
},
"text": "Ellipsis with negative baseline_offset"
},
{
"type": "test_text",
"margins": {
"bottom": 16
},
"background_color": "#FFFFFF",
"text": "This is a very long text that will be truncated with ellipsis that has negative baseline_offset on range",
"max_lines": 2,
"auto_ellipsize": true,
"ellipsis": {
"text": "… more",
"ranges": [
{
"baseline_offset": -7,
"text_color": "#9C27B0"
}
]
}
},
{
"type": "title",
"margins": {
"bottom": 4
},
"text": "Ellipsis combining alignment_vertical, border stroke, corner_radius and background_color"
},
{
"type": "test_text",
"margins": {
"bottom": 16
},
"background_color": "#FFFFFF",
"text": "This is a very long text that will be truncated with ellipsis combining border stroke, corner_radius, background and alignment_vertical properties",
"max_lines": 2,
"auto_ellipsize": true,
"ellipsis": {
"text": "… more",
"ranges": [
{
"alignment_vertical": "top",
"background": {
"type": "solid",
"color": "#FFEB3B"
},
"border": {
"stroke": {
"color": "#000",
"width": 1.0
},
"corner_radius": 4
},
"font_size": 11,
"text_color": "#1976D2"
}
]
}
},
{
"type": "title",
"margins": {
"bottom": 4
},
"text": "Ellipsis combining baseline_offset, border stroke, corner_radius and background_color"
},
{
"type": "test_text",
"margins": {
"bottom": 16
},
"background_color": "#FFFFFF",
"text": "This is a very long text that will be truncated with ellipsis combining border stroke, corner_radius, background and baseline_offset properties",
"max_lines": 2,
"auto_ellipsize": true,
"ellipsis": {
"text": "… more",
"ranges": [
{
"font_size": 11,
"background": {
"type": "solid",
"color": "#FFEB3B"
},
"border": {
"stroke": {
"color": "#000",
"width": 1.0
},
"corner_radius": 4
},
"baseline_offset": -7,
"text_color": "#1976D2"
}
]
}
}
]
}
}
]
}
}