안드로이드의 TextView에는 글자체를 바꿀 수 있는 fontFamily라는 속성이 있다. Android 4.1+ 부터 추가된 Roboto 나 Noto 폰트등을 여기에 쓸 수 있다.
그런데 폰트를 쓰기 위한 방법을 보면 이상하다.
android:fontFamily="sans-serif" // roboto regular android:fontFamily="sans-serif-light" // roboto light android:fontFamily="sans-serif-condensed" // roboto condensed android:fontFamily="sans-serif-thin" // roboto thin (android 4.2) android:fontFamily="sans-serif-medium" // roboto medium (android 5.0)
fontFamily에 sans-serif-*로 써야 Roboto 폰트를 쓸 수 있다. 그걸 어떻게 알 수 있을까? 어딘가 정리되어 있지는 않을까?
보통은 구글을 뒤지다보면 나오는 잘 정리된 글들을 참조한다. 하지만, 이 방법 보다는 더 정확하게 확인할 수 있는 방법이 있는데, 단말에 저장된 system_fonts.xml 파일이다.
>adb shell cat /system/etc/system_fonts.xml
위의 명령을 통해 아래와 같은 xml 파일의 내용을 확인할 수 있으며, 이 파일에 현재 단말에서 제공하는 폰트의 목록과 정보를 일 수 있다.
<familyset> <family> <nameset> <name>sans-serif</name> <name>arial</name> <name>helvetica</name> <name>tahoma</name> <name>verdana</name> </nameset> <fileset> <file>Roboto-Regular.ttf</file> <file>Roboto-Bold.ttf</file> <file>Roboto-Italic.ttf</file> <file>Roboto-BoldItalic.ttf</file> </fileset> </family> ... </familyset>
이 파일의 <name></name> 값을 fontfamily에 사용하면 font를 사용하면 된다.
예를 들어, system_fonts.xml 파일의 내용이 위와 같다면, sans-serif나 arial, helvetica, tahoma, verdana를 android:fontFamily에 입력하면 모두 Roboto 폰트를 사용하게 된다.
<fileset></fileset> 부분을 보면 폰트가 여러개 들어 있는데, 이는 android:fontStyle의 normal, bold, italic과 bold|italic에 각각 대응한다.
android:textStyle="normal" android:textStyle="bold" android:textStyle="italic" android:textStyle="bold|italic"
이제 다음의 그림처럼, 폰트를 자유자재로 사용해보자.
그 밖에
>adb shell cat /system/etc/fonts.xml
를 통해서도 font 관련 정보를 얻을 수 있다. 하지만, 사용 가능한 폰트의 이름을 찾는거라면 system_fonts.xml 파일이 더 유용하다.
참조
- http://www.cheatersedge.org/android/m919/system/etc/system_fonts.xml
- http://stackoverflow.com/questions/12128331/how-to-change-fontfamily-of-textview-in-android
- http://developer.android.com/reference/android/widget/TextView.html#attr_android:fontFamily
- http://stackoverflow.com/questions/19113420/roboto-font-for-android-4
- https://www.google.com/fonts/specimen/Roboto
- https://www.google.com/get/noto/