2012-10-30 3 views
5

WPF 응용 프로그램을 개발하고 있지만 특정 글꼴 크기에서 텍스트가 제어판 -> 글꼴에 표시된 샘플처럼 멋지게 렌더링되지 않는다는 것을 알아 챘습니다. 나는 Segoe의 큰 UI 폰트 (FontSize="36")를 사용하고 있는데, 그 효과는 수직선에서 더욱 두드러진다. 문자 "U"는 다른 쪽보다 약간 더 두껍습니다. ).WPF 글꼴 품질

글꼴 크기는 특정 글꼴 크기에서 향상됩니다 (예 : FontSize="48" (36pt에 해당한다고 생각합니다.) 그러나 제한된 수의 글꼴 크기를 사용하는 것이 항상 실용적인 것은 아닙니다.

나는 TextBlock에에 다음과 같은 속성을 적용하여 글꼴의 품질을 향상시킬 수 있습니다 : - 품질 향상 제가 WPF의 모든 텍스트에 대해이 작업을 수행하지 않는 이유를 알고 싶소, 또는 감안할 때

TextOptions.TextFormattingMode="Display" TextOptions.TextRenderingMode="ClearType" 

성능이 떨어 졌습니까? 나는 이것을 모든 컨트롤에 적용하기 위해 글로벌 스타일을 만들려고 했습니까? 아니면 이것이 문제가 될까요?

(스크린 샷을 업로드하려했지만 이미지를 저품질로 저장해야하며 글꼴 문제를 실제로 만들 수는 없습니다.)

+0

이미지를 저품질로 저장하지 않습니다 (이미지는 저장하지 않습니다). PNG를 저장하고 업로드하면 JPEG이되지 않습니다. 여기에있는 축소 된 것의 전체 크기 이미지에 연결할 수도 있습니다. – BoltClock

+0

다른 글꼴로 시도해 보셨습니까? – MisterMetaphor

+4

기본 WPF 글꼴 렌더링이 "흐릿한"이유를 포함한이 문제는 http://stackoverflow.com/questions/190344/wpf-blurry-fonts-problem-solutions에서 적절하게 답변됩니다. –

답변

7

여기 WPF 텍스트 팀이이 기능에 대해 작성한 blog post입니다. TextFormattingMode에 대한

참고 :

이상적인 이상적인 텍스트 메트릭은 WPF의 도입 이후 형식 텍스트에 사용 된 통계입니다. 이러한 측정 기준은 글꼴 파일의 윤곽선과 높은 충실도를 유지하는 모양의 모양을 만듭니다. 글리프 비트 맵을 만들거나 각 글리프를 other에 배치 할 때 글리프의 최종 배치는 고려되지 않습니다.

디스플레이이 새로운 서식 지정 모드에서 WPF는 GDI 호환 텍스트 메트릭을 사용합니다. 이렇게하면 모든 글리프의 너비가 이고 여러 픽셀 전체에 위치하게됩니다. GDI 호환 텍스트 메트릭의 사용은 글리프 크기와 줄 이 GDI 기반 프레임 워크와 비슷하다는 것을 의미합니다. 즉, 글리프 크기 은 WPF에서 사용하는 줄 바꿈 알고리즘에 대한 유일한 입력이 아닙니다. GDI와 동일한 메트릭을 사용하더라도 줄 바꿈은 이 완전히 동일하지 않습니다. 이러한 속성은 .NET 4.0 새로운 때문에

, 그들은 이상적인 모드입니다 기본적으로 원래의 WPF 알고리즘을 유지했다. 시스템 설정은 특별히 시스템에 클리어를 해제하는 하게 설정하지 않으면,이 모드는 클리어 타입을 사용하는 TextRenderingMode

자동를 들어

.

별칭 텍스트를 그릴 때 안티 앨리어싱이 사용되지 않습니다.

그레이 스케일 그레이 스케일 앤티 엘리 어싱을 사용하여 텍스트를 그립니다.

ClearType ClearType 앤티 앨리어싱을 사용하여 텍스트를 그립니다.

Auto이 기본값이므로 일반적으로 ClearType 렌더링이 표시됩니다.

이제는 첨부 된 속성이고 을 상속하므로 루트 Window에서 설정할 수 있습니다. Style의 무리를 만들 필요가 없습니다.

+1

이러한 속성을 수정하는 데는 아마도 더 복잡한 알고리즘으로 인해 성능에 영향을 미칩니 까? 또한 이러한 속성을 수정하는 데 다른 단점이나 단점이 있는지 알고 싶습니다. –

+2

WPF 팀은 다른 렌더링 모드를 사용하기 위해 성능 적중을 언급하지 않았으므로 성능 저하가있을 경우 무시해도 좋을 것입니다. 지금까지 단점이라면 ClearType을 사용하는 것이 가장 중요하다고 생각합니다. 예를 들어 CRT 모니터에서는 제대로 작동하지 않습니다. –

0

ClearType이 켜져있을 때 많은 양의 데이터 (최대 10,000 개의 항목)를 다룰 때 작은 성능 문제가 있음을 눈치 챘습니다. TextFormattingMode를 Display로 변경하면 성능에 눈에 띄는 영향이 없습니다.

내 WPF 응용 프로그램에서 성능에 미치는 영향이 UI가 끈적 거리지 않도록 충분히 큰 경우가 아니라면 전역 스타일을 사용하여 텍스트 렌더링을 향상 시켰습니다.