Primary/Compose

Compose에서 시스템 폰트 크기 확인하기

해스끼 2024. 3. 24. 21:50

``Density`` 객체에는 ``Float`` 타입의 ``fontScale`` 프로퍼티가 선언되어 있다. 공식 문서에서는 다음과 같이 설명하고 있다.

The logical density of the display. This is a scaling factor for the Dp unit.

 

시스템 설정의 ``글자 크기`` 항목이 바로 이 fontScale을 설정하는 것이다. UI에서 설정한 ``sp`` 값에 fontScale을 곱하면 실제로 UI에 보일 글씨 크기를 얻을 수 있다. 기본값은 1.0이고, 최댓값은 2.0이다. 

 

 

블린더 앱에서는 ``fontScale``의 값에 따라 서로 다른 UI를 보여주었다. fontScale이 일정 값 이상이라면 기본 UI 대신 저시력 UI를 보여준다. 저시력 UI는 예쁜 그래픽보다는 정보 전달을 우선 고려하여 개발하였다.

 

오른쪽이 저시력 UI

val Density.isLargeFont: Boolean
    @Composable get() = this.fontScale >= 1.6

if (LocalDensity.current.isLargeFont) {
	// 저시력 모드
    NutrientList(
        nutrients = importantNutrients,
        modifier = modifier,
    )
} else {
	// 일반 모드
    NutrientChipGrid(
        nutrients = importantNutrients,
        modifier = modifier,
    )
}

 

극단적으로는 ``fontScale``의 값마다 서로 다른 UI를 적용할 수도 있겠지만, 대부분의 상황에서는 일반 UI, 저시력 UI 2개만으로 충분할 것 같다.

참고자료

 

Density  |  Android Developers

androidx.compose.desktop.ui.tooling.preview

developer.android.com