Windows 글꼴 (calibri.ttf)을 사용하여 텍스트를 그리는 사용자 지정보기가 있습니다. 그러나 DrawString
& ShowText
기능을 사용하는 사이에 다른 동작이 나타납니다.ShowText를 사용할 때 사용자 지정 글꼴이 올바르게 렌더링되지 않습니다.
내가 응용 프로그램의 일환으로 폰트를 내장 한합니다 (UIAppFonts 목록이 내용에 조치를 구축입니다 & 세트에 추가) 내가 예를 들어, 내 사용자 지정 UIView의에서 DrawString
방법을 사용할 때 모두가 잘 작동
그러나
코드
public override void Draw (System.Drawing.RectangleF rect)
{
base.Draw (rect);
DrawString("Calibri font via DrawString", new RectangleF(10, 10, 100, 100), UIFont.FromName("Calibri", 16f));
}
결과, 나는 그것이 나타납니다 ShowText
를 사용하여 동일한 텍스트이 시간을 끌기 위해 시도하는 경우 글꼴이 인코딩되지 않은 것처럼 텍스트가 올바르게 입력되었거나 문자 매핑이 잘못되었습니다.
코드
public override void Draw (System.Drawing.RectangleF rect)
{
base.Draw (rect);
var ctx = UIGraphics.GetCurrentContext();
ctx.SelectFont("Calibri", 16f, MonoTouch.CoreGraphics.CGTextEncoding.FontSpecific);
ctx.ShowTextAtPoint(10, 10, "Calibri font via ShowText using SelectFont");
}
결과
UPDATE - 여기에 내가 MacRoman
인코딩 대신 FontSpecific
사용하는 경우 내가 무엇을 얻을 수 있습니다 :
글꼴을 수동으로로드하고 사용했지만 그다지 아무것도 얻지 못했습니다. 글꼴을 인식하지 못하는 것 같습니다.
var fontPath = NSBundle.MainBundle.PathForResource("calibri", "ttf");
var provider = new CGDataProvider(fontPath);
var font = CGFont.CreateFromProvider(provider);
var ctx = UIGraphics.GetCurrentContext();
ctx.SetFont(font);
ctx.ShowTextAtPoint(10, 20, "Calibri font via ShowText using SetFont");
나는 DrawString
는 UIKit & ShowText
입니다 CG (석영) 것을 알고 그래서 차이가있을 수 있음을 이해합니다. 그러나, 내가 DrawString과 유일한 차이점을 모았던 점은 Offset (왼쪽 아래에있는 CG/왼쪽 상단에있는 UIKit)의 차이로 문제를 해결했습니다.
참고 -이 글꼴을 사용하여 사용자 지정 CALayerDelegate를 통해 레이어에 텍스트를 그릴 필요가 있습니다. 나는 그곳에서 DrawString
함수에 접근 할 수 없기 때문에, 텍스트를 그릴 때 볼 수있는 유일한 방법은 ShowText
입니다. 대체 솔루션을 환영합니다!
해결 방법을 찾으셨습니까? –
@JC Fraid 아니 (따라서 질문이 아직 열려있는 이유). 나는이 문제가 실제로 Calibri font와 iOS 사이의 호환성이라고 생각하지만 아직 확인되지는 못했습니다. 나는 결국 유사한 미리 만들어진 글꼴 (Verdana)을 사용하는 것으로 되돌아갔습니다. – James
나는 Calibri와 비슷한 글꼴 인 CartoGothicStd를 발견했습니다. OTF에서 TTF로 변환해야했지만 작동합니다. –