Use small font & min letterspacing when syllabes overlaps
This commit is contained in:
parent
7b205f5390
commit
f32147f24d
2 changed files with 27 additions and 3 deletions
|
|
@ -28,7 +28,6 @@ import androidx.compose.ui.focus.focusRequester
|
||||||
import androidx.compose.ui.geometry.Offset
|
import androidx.compose.ui.geometry.Offset
|
||||||
import androidx.compose.ui.geometry.Size
|
import androidx.compose.ui.geometry.Size
|
||||||
import androidx.compose.ui.graphics.Color
|
import androidx.compose.ui.graphics.Color
|
||||||
import androidx.compose.ui.graphics.RectangleShape
|
|
||||||
import androidx.compose.ui.graphics.SolidColor
|
import androidx.compose.ui.graphics.SolidColor
|
||||||
import androidx.compose.ui.graphics.drawscope.Stroke
|
import androidx.compose.ui.graphics.drawscope.Stroke
|
||||||
import androidx.compose.ui.input.pointer.pointerInput
|
import androidx.compose.ui.input.pointer.pointerInput
|
||||||
|
|
@ -690,6 +689,31 @@ fun LazyVerticalGridTUO(
|
||||||
val totalSyllables = sharedScreenModel.synchronizedSyllables.value.size
|
val totalSyllables = sharedScreenModel.synchronizedSyllables.value.size
|
||||||
//println("Sync complète effectuée SUR stz: ${sharedScreenModel.stanza.value}! Total colonnes : $totalSyllables")
|
//println("Sync complète effectuée SUR stz: ${sharedScreenModel.stanza.value}! Total colonnes : $totalSyllables")
|
||||||
}
|
}
|
||||||
|
val textMeasurer = rememberTextMeasurer()
|
||||||
|
val containerWidthDp = gridWidthDp / gridColumnCount
|
||||||
|
val REGEX_CLEAN_PREFIX = Regex("(\\d+\\.)+")
|
||||||
|
val isAnySyllableTooLong = remember(currentStanza, gridWidthDp, gridColumnCount) {
|
||||||
|
val allMeasuresSyllables = tuoList.drop(1).chunked(gridColumnCount).map { measureTUOss ->
|
||||||
|
measureTUOss.map { it.getSingleSyllable(currentStanza) }.map { column ->
|
||||||
|
column.map { syllable -> syllable.replace(REGEX_CLEAN_PREFIX, "").trim() }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
allMeasuresSyllables.any { measure ->
|
||||||
|
measure.any { column ->
|
||||||
|
column.any { syl ->
|
||||||
|
val textLayoutResult = textMeasurer.measure(
|
||||||
|
text = syl,
|
||||||
|
maxLines = 1,
|
||||||
|
softWrap = false
|
||||||
|
)
|
||||||
|
val textWidthDp = with(density) { textLayoutResult.size.width.toDp() }
|
||||||
|
textWidthDp > containerWidthDp
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (!isLayoutReady) {
|
if (!isLayoutReady) {
|
||||||
Box(
|
Box(
|
||||||
modifier = Modifier
|
modifier = Modifier
|
||||||
|
|
@ -1095,7 +1119,7 @@ fun LazyVerticalGridTUO(
|
||||||
(index == 0) -> MaterialTheme.colorScheme.onBackground
|
(index == 0) -> MaterialTheme.colorScheme.onBackground
|
||||||
else -> MaterialTheme.colorScheme.onBackground
|
else -> MaterialTheme.colorScheme.onBackground
|
||||||
},
|
},
|
||||||
fontSize = MaterialTheme.typography.titleMedium.fontSize,
|
fontSize = if(isAnySyllableTooLong) MaterialTheme.typography.labelLarge.fontSize else MaterialTheme.typography.titleMedium.fontSize
|
||||||
),
|
),
|
||||||
onTextLayout = { txtLayoutRes ->
|
onTextLayout = { txtLayoutRes ->
|
||||||
textWidth = with(density) { txtLayoutRes.size.width.toDp() }
|
textWidth = with(density) { txtLayoutRes.size.width.toDp() }
|
||||||
|
|
|
||||||
|
|
@ -172,7 +172,7 @@ fun FeufaroTheme(
|
||||||
|
|
||||||
labelLarge = TextStyle(
|
labelLarge = TextStyle(
|
||||||
fontSize = (baseSize - 0.5f).sp,
|
fontSize = (baseSize - 0.5f).sp,
|
||||||
letterSpacing = 0.1.sp
|
letterSpacing = 0.03.sp
|
||||||
),
|
),
|
||||||
labelMedium = TextStyle(
|
labelMedium = TextStyle(
|
||||||
fontSize = (baseSize - 2.5f).sp,
|
fontSize = (baseSize - 2.5f).sp,
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue