2010-02-24 4 views
1

특정 지점에서 폰트 글리프를 정밀도로 렌더링하려고하고 있는데 문제가 있습니다.iPhone SDK 석영 글리프 드로잉

처음에는 텍스트 위치 Y 값이 변경되지 않으므로 글리프의 높이를 전혀 얻을 수 없습니다. 예를 들어, 다음 코드에서 주장은 항상 화재 : 나는 약간 하드 코딩 가로 세로 비율을 사용하여이 문제를 해결하기 위해 노력했다

CGContextSelectFont(g, "Arial", 32.0f, kCGEncodingFontSpecific); 

char c = 'A'; 
CGPoint pt = CGPointMake(400, 400); 

CGContextSetTextDrawingMode(g, kCGTextInvisible); 
CGContextSetTextPosition(g, pt.x, pt.y); 
CGContextShowText(g, &c, 1); 

CGPoint pt2 = CGContextGetTextPosition(g); 
assert(pt2.y != pt.y); 

, 그리 선형 확장 가정. 텍스트 위치의 X 값이 올바르게 업데이트됩니다.

그러나 더 중요한 것은 텍스트 위치와 관련하여 글리프가 렌더링되는 방식입니다. 일부 글리프는 Y 값을 글리프의 가운데로 렌더링하고, 일부는 Y 값을 글리프의 위쪽으로 사용하고, 다른 일부는 Y 값을 글리프의 맨 아래로 사용합니다. 이 모든 데이터를 하드 코딩 할 수는 없으며 올해 내 앱을 완성 할 수 있기를 바랍니다.

위의 드로잉 코드에서 잘못하고있는 것이 있습니까? 쿼츠 문서에서 수직 정렬과 관련된 참조를 찾을 수 없으며 약간 손실됩니다.

답변

0

내가 뭘 봤어에서 꽤 복잡한 작업입니다. zynga's LabelFont library을 확인하고 코드에서 배우거나 단순히 라이브러리를 사용하십시오. 특히 LabelFont 클래스 'drawTextInRect: 메소드를 살펴보십시오.

+0

감사합니다. 나는 일주일 전에 이것을 보았다. 그리고 그것은 나의 필요에 정말로 맞지 않는다. 훨씬 더 복잡하고 특히 이러한 방법은 동적 크기 조정에 훨씬 적합합니다. 직사각형에 맞게 변경하기 위해 글리프가 필요하지 않습니다. 글리프에 대한 사각형이 필요합니다! – Chris

+0

FontLabelStringDrawing 클래스의 sizeWithZFont를 확인하십시오. – Felixyz