아이폰어플개발정보2010. 6. 24. 13:18
[Tip] Custom font 쓰는 법

 

 

꼬맹이 공부시키려고 한자 학습 게임을 간단하게 만들려고  윈도 트루타입 폰트를 쓰려고 했더니,

 

기본적으로, UIFont 객체가 Glypse data를 갖고 있지 않아서,

 

임의로 쓸수가 없게 되어있더만요.

 

이리 저리 좀 뒤져보고 했는데, 아마 시한부일거라고는 생각되지만, 2.2.1, 3.0 Beta 2까지 잘 돕니다.

 

전체 소스는 아직 좀 정리를 해야되지만, 핵심 코드를 공개합니다.

 

* test.ttf라는 폰트를 사용할 때.

1. 폰트파일을 xcode 프로젝트로 긁어 넣는다.

2. 아래와 같은 방식으로 메모리 로딩후 사용한다.

NSString *fontPath = [[NSBundle mainBundle] pathForResource: ofType:];
CGDataProviderRef fontDataProvider = CGDataProviderCreateWithFilename([fontPath UTF8String]);
CGFontRef _cgFont = CGFontCreateWithDataProvider(fontDataProvider);
CGDataProviderRelease(fontDataProvider);
20);

CGAffineTransform transform = CGAffineTransformMake(0.0, 1.0, 0.0);
CGContextSetTextMatrix(context, transform);

NSString *str = ;
CGGlyph _glyphs[[str length]];
unichar _chars[[str length]];
for(i = CGFontGetGlyphsForUnichars(_cgFont, _chars, _glyphs, [str length]);
CGContextShowGlyphsAtPoint(context, 20, _glyphs, [str length]);
CGFontRelease(_cgFont);


위에서 CGFontGetGlyphsForUnichars는 헤더파일에도 선언되지않은 함수라서 warning이 나올 수 있다.

따라서, 아래와 같이 선언을 해두면 warning이 나오지 않는다.

size_t);

문자색을 지정할 때는 위의 예제와 같이 CGContextSetFillColorWithColor로 선언하며, 이 때 사용이 간편한 UIColor를 사용하여 CGColorRef를 사용하는 것이 좋다.

저는 일단, FontManager란걸 만들어놓고, AppDelegate에서 한번에 로딩해서 쓰는 방식으로 해서,

 

UIView, UITextView, UITableViewCell등에서 사용해본 결과 만족할 만 했습니다.

 

다만, 저, CGFontGetGlyphsForUnichars란 함수가 언제까지 남아있을 지가 문제죠.

 

지금 만들고 있는 어플중 스크린샷 하나씩 해봤습니다.

 

많은 참조 되시길.

 

아, 여긴 아직 정회원이 아니라 쓰는 데 제약이 많아서.. 혹시 물어보실 분은 제 블로그에 써주세요.

 

http://starlab.tistory.com

 

 


출처 : http://blog.naver.com/PostView.nhn?blogId=gonagi&logNo=150045840793
Posted by 오늘마감

댓글을 달아 주세요