티스토리 뷰


안드로이드 앱을 만들 때 지정된 폰트를 이용하게 하는 것은 상당히 까다롭습니다.
android:fontFamily를 지원해주긴 하지만 쓸 수 Roboto 폰트 패밀리밖에 적용이 안되고,
TextView의 폰트를 변경시켜주는 Typeface를 이용하면 커스텀 폰트를 적용시킬 수 있지만 다수의 TextView에 적용시키는 데엔 한계가 있습니다(보통 커스텀 TextView를 만들어 사용합니다).

Typekit은 그런 번거로움을 없애주고, 직관적으로 사용할 수 있는 커스텀 폰트 라이브러리입니다.
불친절하게도 API문서도 없고 각 메서드에 대한 설명이 거의 돼있지 않아서, 하나씩 적용해본 뒤 글을 작성하게 됐습니다.


0. 원하는 폰트를 프로젝트폴더\app\src\main\assets 안에 넣어 줍니다(assets 폴더가 없으면 만들고 넣으면 됩니다).
코드에 폰트 파일의 이름을 적어야 하니 잘 기억해두세요.

1. Dependencies에서 Typekit을 프로젝트에 추가합니다.


2. Application을 상속받는 클래스를 만들어 주고, Manifest의 <application>의 android:name이라는 항목에 추가합니다.

/** 앱의 텍스트에 폰트를 적용하기 위한 커스텀 어플리케이션 클래스 */
public class ApplicationBase extends Application {
    @Override public void onCreate() {
        super.onCreate();
        // 폰트 정의
        Typekit.getInstance()
            .addNormal(Typekit.createFromAsset(this, "NanumBarunGothicLight.otf")
            .addBold(Typekit.createFromAsset(this, "NanumBarunGothicBold.otf");
    }
}
<!-- AndroidManifest.xml -->
... 중략
<application
    android:theme="@style/AppTheme"
    android:supportsRtl="true"
    android:label="@string/app_name"
    android:icon="@mipmap/ic_launcher"
    android:allowBackup="true"
    android:name=".ApplicationBase">
... 후략


3. 기본 설정이 끝났습니다. 이제 폰트를 적용할 액티비티에 다음 메소드를 추가합니다.

@Override protected void attachBaseContext(Context newBase) {
    super.attachBaseContext(TypekitContextWrapper.wrap(newBase));
}

* 만약 이 메소드를 액티비티마다 써주는 것이 귀찮다면 커스텀 액티비티로 상속시켜줘도 됩니다.
이렇게 되면 해당 액티비티의 텍스트는 폰트가 적용돼 나옵니다.

Typekit에서 getInstance() 뒤에 오는 add 메서드들은 여러 개가 있는데요, 각 메소드들의 기능과 적용 범위를 간략하게 적으면 이 정도가 있습니다.

// textStyle="normal"일 때 적용됩니다.
addNormal(Typekit.createFromAsset(this, "폰트이름"))
// textStyle="bold"일 때 적용됩니다.
addBold(Typekit.createFromAsset(this, "폰트이름"))
// app:font="custom1"일 때 적용됩니다.
addCustom1(Typekit.createFromAsset(this, "폰트이름"))
// app:font="사용자지정이름"일 때 적용됩니다.
add("사용자지정이름", Typekit.createFromAsset(this, "폰트이름"))

addCustom1~9 메서드와 add메서드는 부분적으로 적용할 때 유용하게 쓸 수 있습니다.
다만 폰트를 적용시키기 위해선 TextView의 속성 안에 app:font=""를 넣어 주어야 합니다.
빨간 줄이 나오지만 무시하셔도 됩니다.

결과물입니다.

결과물에 사용된 폰트는 나눔바른고딕 패밀리입니다.
위가 굵음(NanumBarunGothicBold.otf)이고,
아래가 얇음(NanumBarunGothicLight.otf)입니다.


마지막으로,
앱에 폰트를 적용하기 전에 몇 가지 알아두셔야 할 것이 있습니다.

1. 저작권을 조심하세요! 무료 폰트가 100% 무료는 아닙니다.
인터넷에 있는 무료 폰트들은 인쇄나 웹사이트 등에 한해서 무료인 경우가 대다수입니다.
어플리케이션(임베딩)에 대한 언급이 안돼있으면 반드시 문의를 하시고 적용하세요!

2. 왜 이 폰트를 적용해야 하는지를 생각하세요!
안드로이드는 사용자 지정 서체를 사용할 수 있습니다.
만약 폰트를 강제로 바꾸게 된다면 사용자 입장에선 불쾌할 수 있기 때문에,
폰트 적용 옵션을 주거나 꼭 필요한 부분에만 부분적으로 사용하시는 것이 좋습니다.

댓글
댓글쓰기 폼