Tistory View

안드로이드의 Paint는 기본적으로 외부폰트파일을 이용할 수가 있다. 앱에 폰트파일을 포함하여 이를 불러올 수 있게 이미 함수를 지원해준다. 이 함수는 Typeface class내에 있다. 함수의 원형은 다음과 같다.

 

public static Typeface createFromAsset( AssetManager mgr, String path );

 

함수 원형에서 보이듯, 외부서체를 이용하려면, Assset에 외부서체 파일을 넣어 두어야 한다. 지원하는 외부서체는 OTF와 TTF파일을 지원한다.

우선 Asset폴더에 사용할 서체를 넣고, 외부서체를 Typeface 인스턴스로 만든 후, Paint에 넣어주면 된다. 

 

 

Asset폴더에 서체파일 넣기

Asset폴더를 만들지 않았거나 없다면 다음과 같이 프로젝트화면에서 오른쪽 버튼을 눌러 Asset폴더를 만든다.

안드로이드 스튜디어 Asset폴더 만들기

 

이제 만들어진 Asset폴더에 폰트파일을 넣는다.

외부서체 파일을 넣는 곳

 

서체파일 불러와 사용하기

서체파일을 넣었으면 다음의 코드를 사용하여 서체를 사용할 수 있다.

 

AssetManager am = this.getContext().getAssets();
Paint paint = new Paint( Paint.ANTI_ALIAS_FLAG );
paint.setTypeface( Typeface.createFromAsset( am, "NanumBrush.ttf" ) );
paint.setTextSize( 200.0f );
canvas.drawText("SAMPLE TEXT",10,paint.getFontSpacing(), paint );

asset파일의 경로를 지정할 경우 맨앞에 "/"가 없는 점을 주의해야 한다. 또한, 되도록이면 서체파일을 저장할 때, 혹시나 문제가 될 수 있으니, 한글을 사용하지 말고 영문을 사용하기를 권장한다.

 

 

BOLD / ITALIC

볼드나 이탤릭을 이용하려면 다음의 코드로 처리 할 수 있다.

AssetManager am = this.getContext().getAssets();

Typeface plain = Typeface.createFromAsset( am, "NanumBrush.ttf" );
Typeface bold  = Typeface.create( plain, Typeface.BOLD );

Paint paint = new Paint( Paint.ANTI_ALIAS_FLAG );
paint.setTypeface( bold );
paint.setTextSize( 200.0f );
canvas.drawText("SAMPLE TEXT",10,paint.getFontSpacing(), paint );

위의 코드에서 bold용 Typeface 객체를 만드는 코드에서 Typeface.BOLD위치에 다음의 값들로 bold/italic을 지정해 주면된다.

 

Typeface.NORMAL         Typeface.BOLD         Typeface.ITALIC         Typeface.BOLD_ITALIC

 

볼드를 적용한 나눔 브러시 폰트

 

파일에서 불러오기

추가로 Asset폴더가 아닌 외부파일에서 불러온다면, Typeface.createFromFile() 함수를 이용하면 된다. 주로 앱의 cache나 files폴더에서 가지고 올 경우 이용하면 된다.

 

 

폰트라이센스 확인

여담으로 서체파일이 앱에 들어가 배포가 되는 형태이므로 서체의 라이센스를 확인한 후 배포되어야 한다.

Replies
Reply Write