일반 폰트와 고정폭 폰트
일반 폰트
일반폰트에서는 각 문자가 모드 다른 폭(Width)를 가진다.
위 그림과 같이 숫자 1의 폭이 숫자 2의 폭에 비해 절반도 되지 않는것을 볼 수 있다.
그래서 아래와 같은 문제가 발생할 수 있다. 글자의 폭이 다 다르기 때문에 시계와 같이 빠르게 변하는 글자들은 폭이 계속 달라지는게 눈에 보인다.
눈 아파요.
고정폭 폰트(Monospace Font)
그러나 고정폭폰트는 각 글자의 가로 폭이 모두 동일하다.
그래서 아래와 같이 고정폭 폰트를 사용한 시계는 더이상 글자가 요동치지 않는다.
고정폭폰트의 더 자세한 설명은 위키백과를 참고.
https://ko.wikipedia.org/wiki/%EA%B3%A0%EC%A0%95%ED%8F%AD_%EA%B8%80%EA%BC%B4
고정폭폰트 사용법
고정폭폰트를 사용하면 따로 작업이 필요없지만 고정폭폰트가 아니라면 아래 방법으로 고정폭폰트로 만들어줄 수 있다.
fontFeatures: [FontFeature.tabularFigures()]
Text위젯의 style속성에 fontFeatures: [FontFeature.tabularFigures()]를 추가하면 끝.
Text( 'monospace text', style: TextStyle(fontFeatures: [FontFeature.tabularFigures()]), ),
참고
https://api.flutter.dev/flutter/dart-ui/FontFeature/FontFeature.tabularFigures.html
안드로이드와 IOS
고정폭 폰트를 사용하지 않아도 안드로이드에서는 글자가 요동치는 증상은 없다. 안드로이드 기본 텍스트가 Roboto일텐데, 해당 폰트가 애초에 고정폭 폰트일지도 모르겠다.