본문 바로가기
프로그래밍 놀이터/안드로이드, Java

[android/안드로이드] Font 에 대해 알아보아요.

by 돼지왕 왕돼지 2012. 2. 7.
반응형

안녕하세요 돼지왕왕돼지입니다.
Font에 대한 좋은 글을 발견하여, 정리하여 포스팅 해봅니다.
원작자의 글도 매우 잘 정리되어 있습니다만, 제 방식대로 글을 써보고자 함입니다.

출처 :  http://www.androidside.com/bbs/board.php?bo_table=B46&wr_id=8706
 

Font의 종류


Bitmap Font ( 비트맵 폰트 )


폰트 자체가 Bitmap 형식으로 되어 있는 녀석입니다. 화면에 끄냥 뿌려주기만 하면 되는 녀석이라 처리 속도는 매우 빠르지만,
글자의 크기가 커지게 될 경우에는 비트맵을 그저 확장하는 형태로 계단현상 등이 발생합니다.
요즘에는 Font Size 에 따라서, 작은 Font Size의 경우에는 작은 Bitmap 을 사용하고, 큰 Font Size 의 경우에는 큰 Bitmap 을 사용하는 경우도 있지만,
이 부분은 용량적인 부분이 있기 때문에, Mobile Device에서는 적합성이 조금 떨어지던 방법이었죠.
( 이 방법도 요즘의 hardware spec 이라면 충분히 쓸만 하겠죠. )

c:\windows\fonts 에 보시면 아래와 같은 Font 파일들을 본 적 있으시죠?


이 중 A 로 표시된 폰트가 비티맵 폰트입니다.
비트맵 폰트를 보면 더블킬릭하면, Font Size 에 따른 예를 볼 수 있는데, 글자가 커진수록 계단현상이 심해져 이쁘지 않습니다.





외곽선 폰트 


컴퓨텅 기술이 발전하면서 이제 계산을 바탕으로 폰트를 생성하는 것이 가능해졌습니다.
백터 그래픽이나 베지에 곡선을 폰트에 적용하여 만드는 "외곽선 폰트"의 형태가 생겼습니다.
이 폰트는 계산을 바탕으로 생성하는 것이기 때문에 Font size 와 상관없이 일정한 품질의 출력을 보장한다는 장점이 있습니다.
Post Script, True Type, Open Type 폰트들이 이 외곽선 폰트에 속합니다.


포스트 스크립트( Post Script )


포스트 스크립트는 어도비(Adobe) 사가 개발한 폰트로 Type 1, 2, 3 등 다양한 포맷이 있습니다.
Flash 에서 사용하던 벡터의 개념을 폰트에 적용하여 만든 것입니다. 주로 프린터에 많이 사용된다고 하네요.


트루 타입 ( True Type )


베지에 2차 곡선을 사용하는 폰트로 품질 향상은 크지 않지만, 속도가 빠르다는 장점이 있어 windows 에서 많이 사용되고 있습니다.
Font 중에 "T" 로 표시되어 있는 폰트들이 True Type 입니다.


오픈 타입 ( Open Type )


어도비와 MS 사가 손잡고 오픈 타입 폰트를 제작했습니다.
True Type + Post Script = Open Type 으로 볼 수 있죠.
유니코드를 바탕으로한 폰트로, 안드로이드가 채택하고 있는 폰트입니다.
"O" 로 표시되어 있는 녀석들이 Open Type 입니다.



안드로이드의 폰트


1. 기본 폰트 설정




안드로이드 기본 폰트는 Sans , Serif  두 가지 종류가 있습니다.
Mono 는 각 글자의 넓이가 일정한 폰트입니다. 

글씨체는 view 정의 xml 에서

typeface="sans"
typeface="serif"


를 통해서 설정 할 수 있습니다.



2. 사용자 정의 폰트 사용하기


안드로이드는 OpenType 의 Font 를 채택하기 때문에 기본적으로는 OpenType 만 추가하여 사용할 수 있습니다.
2012. 11. 9 수정 : OpenType 이 아닌 TrueType 만 추가하여 사용 가능합니다. 
OpenType 의 Font 를 구한 후에 assets\fonts\ 에 붙여넣기를 합니다.

다음과 같은 형식으로 typeface 를 설정해주면 됩니다.
 

TypeFace myNewFace = Typeface.createFromAsset( getAssets(), "fonts/myfont.otf"
TextView textView = findViewById( R.id.textview );
textView.setTypeface( myNewFace ); 




3. 특정 폰트 Application 전체 적용하기 ( not custom font )


res/values/styles.xml 에 다음과 같이 style 을 만들어줍니다.

<resources>

<style name="newFontStyle">

<item name="android:typeface">serif</item>

</style>

</resource> 


요 style 을 application의 theme 란에 적용해주면 됩니다.

<application android:icon="@drawable/icon"

android:label="@string/app_name"
android:theme="@style/newFontStyle"> 

    ...




4. 사용자 정의 폰트 전체 적용하기


이 부분은 이 글 원 필자 ( 저는 내용을 정리한 것 뿐입니다. 출처는 최상단에 있습니다. ) 도 방법이 없는 것으로 알고 있습니다.
( Framework 에서 기본 font 로 함께 build 하는 것을 제외하고는.. )
저도 방법을 찾게 되면 따로 포스팅 하도록 하겠습니다.



그럼 이만~ 

 
로그인 없이 추천 가능합니다. 손가락 꾸욱~






반응형

댓글