[Flutter] 플러터 텍스트 고정폭 폰트로 변경

일반 폰트와 고정폭 폰트

일반 폰트

일반폰트에서는 각 문자가 모드 다른 폭(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일텐데, 해당 폰트가 애초에 고정폭 폰트일지도 모르겠다.

Leave a Comment