안드로이드 TextView의 fontfamily 속성

안드로이드의 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"

이제 다음의 그림처럼, 폰트를 자유자재로 사용해보자.

device-2015-09-23-213322

그 밖에

>adb shell cat /system/etc/fonts.xml

를 통해서도 font 관련 정보를 얻을 수 있다.  하지만, 사용 가능한 폰트의 이름을 찾는거라면 system_fonts.xml 파일이 더 유용하다.

참조

댓글 달기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

이 사이트는 스팸을 줄이는 아키스밋을 사용합니다. 댓글이 어떻게 처리되는지 알아보십시오.