SP는 (Scale-independent Pixels)로 기본적으로는 DP와 동일하게 작동한다. 다만 Scale이 곱해져서 크기가 측정된다.
이 Scale은 시스템 설정에서의 텍스트 폰트 크기를 조절하면 변경된다.
DP로 설정하게 되면 사용자 경험이 안좋아질 수 있으니 SP의 사용을 권장하지만 디자인적으로 DP의 사용을 하게되는 경우가 있다.
XML에서는 간단하게 dp로 변경하면 되지만 Compose에서는 TextStyle이나 fontSize: TextUnit에서 사이즈는 SP만 취급을 한다.
Density내부를 보면 fontScale이 있는걸 확인할 수 있다. 이 값을 1f로 고정해주면 항상 같은 텍스트 사이즈를 가질 수 있다.
CompositionLocalProvider(LocalDensity provides Density(density.density, fontScale = 1f)) {
compositionLocal을 통해서 특정 트리에서만 사용하도록 할 수 있다.