2012년 5월 5일 토요일

안드로이드 폰트



개발Q&A 에 어떤분이 올리신 질문중에
"보낸이" 가 " 보냰이" 로 나온다고 하신 분이 계서서...

http://www.androidside.com/bbs/board.php?bo_table=B49&wr_id=6088&page=2

말이 나온김에 폰트에 관련된 이야기를 나누어 볼까 합니다.

먼저 폰트의 종류부터 알아보죠

비트맵 폰트 
아주 옛날^^ 8비트 컴퓨터 시절 쓰이던 폰트죠
화면에 뿌려주는 처리속도는 매우 빠르지만 글씨의 크기가 변경 될때 이쁘게 보이질 않게 되죠
이미 크기가 정해져 비트맵으로 저장 되어 있기 때문인데요
c:\windows\fonts 에 보시면


이런 폰트들이 있으실텐데요 로 표시된 폰트가 비티맵 폰트입니다.




글씨가 커질수록 안 예쁘게 보여지는 단점이 있습니다.

외곽선 폰트 
컴퓨팅 기술이 발전하면서 폰트도 이쁘게 표현할 필요가 생겼는데요
벡터 그래픽이나 베지어 곡선을 폰트에 적용하면서 외곽선 폰트 형태가 생겼습니다.
이 폰트는 크기에 상관 없이 일정한 품질의 출력을 하는 장점이 있습니다.
포스트 스크립트, 트루타입, 오픈타입 폰트등이 이에 속합니다.



포스트스크립트 (Postscript)
어도비사가 개발한 포스트스크립트 폰트는 Type1,2,3 등 다양한 포맷이 있는데요 Flash 에 적용되어
있던 벡터 개념을 폰트에도 적용하여 만든 것입니다 주로 프린터에 많이 사용됩니다.

TrueType 폰트 
베지에 3차곡선을 사용하는 Type1과는 달리 베지에 2차곡선을 사용하지만 이에대한 폰트의
품질 향상은 미비하지만 속도는 빠른 장점 때문에 windows 에서 많이 사용되고 있습니다.
위 그림중 "T" 자로 되어 있는 폰트입니다.

오픈타입 폰트 
어도비는 M$ 와 손잡고 오픈타입 폰트라는것을 제작 하게 되는데요.
true type 폰트와 postscript 폰트를 합친 새로운 형식입니다.
유니코드에 바탕을둔 truetype 에 opentype 공통의 헤더 정보를 더하여 확장시킨 포멧입니다.
유니코드이기 때문에 안드로이드에서 이 폰트를 사용하고 있습니다.
위 그림중 "O" 자로 되어 있는 폰트입니다.


서론이 너무 길었나요?
그럼 먼저 안드로이드 기본폰트에 대해 알아보죠

1. 기본폰트 사용하기



안드로이드 기본 폰트는 위 그림과 같이 
Sans , Serif  두 종류가 있구요 mono 는 각 글자의 넓이가 일정한 폰트입니다. 

layout 파일에


typeface="sans"  또는 "serif"
하시면 끝

2. 사용자폰트 사용하기

위에서 말씀드린바와 같이 windwos\fonts 에서 "O" 형태의 폰트를 고르신 후



assets\fonts\ 에 붙여넣기 합니다.

Activity onCreate 부분에 



와 같이 하시면 됩니다.

실행 화면을 볼까요?





위 화면을 보신분 중 이러한 궁금증이 생기시는분이 분명 생기실껍니다.

"그럼 폰트를 일괄 적용은 못하나요?"

그래서 말씀 드리려구요.


3. Application 전체에 특정폰트 적용하기

res/values/styles.xml 에 위 내용을 입력합니다.





메니페스트 파일에 android:theme="@style/CustomTheme" 를 추가합니다.


"그러면.. Application 전체에 커스텀폰트를 적용하려면 어떻게 하나요?"
제가 알고 있는바에 따르면 현재 버전에선 불가능 한것으로 알고 있습니다. ^^;
(완전 불가능한건 아니죠 안드로이드 core 소스를 구해서
특정폰트로 교체한 후 빌드 하면 될테니까요)

댓글 없음:

댓글 쓰기