외부 라이브러리를 사용하지 않고 XNA에서 아름다운 작은 텍스트를 얻으려면 어떻게해야합니까?


13

XNA에서 스프라이트 폰트 기술은 끔찍합니다. Nuclex는 그 일을 훨씬 더 잘하지만 외부 참조를하고 싶지 않으며 거의 ​​게임이 끝났습니다.

Sansation 또는 Quicksand와 같은 글꼴을 사용하면 작은 크기의 글꼴에서 끔찍하게 보입니다. 그거 매우 나빠!

이에 대한 알려진 해결 방법이 있습니까? 글꼴 크기를 매우 높게 설정 한 다음 스프라이트 배치에서 크기를 줄이지 않고 크기를 줄였습니다.


내가 사용하는 SpriteFont을 XNA 내 글꼴을 만들려면 유연성이 많이 있습니다. 또한 글꼴 위치가 정수인지 확인하여 불쾌한 앤티 앨리어싱이 발생하지는 않지만 좋은 해결책은 아닙니다. 텍스트 스프라이트 배치 호출에서도 포인트 필터링을 시도 할 수 있습니다.
Jonathan Connell

다양한 실제 장치와 사람에서 작은 글꼴을 테스트하는 것을 잊지 마십시오. 360 타이틀이고 TV를 대상으로하는 경우 모든 시각적 요소의 크기는 PC 화면보다 약간 클 필요가 있습니다.
Lars Viklund

PC 게임을하고 있는데 글꼴 크기가 정수로 설정되어 있습니다.
Mathias Lykkegaard Lorenzen

1
텍스트 크기를 조정하지 말고 필요한 모든 크기에 맞는 스프라이트 글꼴을 만드십시오.
Wouter

1
여기에 몇 가지 규칙이 더 있습니다. 렌더링하기 전에 위치 벡터를 정수로 고정합니다. 그렇지 않으면 샘플링하면 출력 텍스트가 찌그러져 보입니다 . 텍스트를 렌더링하기 전에 텍스처 샘플러를 Point / Nearest Neighbor로 변경하는 것이 좋습니다. 특히 당신의 글꼴이 pixelated 인 경우 :)
Cubed2D

답변:



13

XNA 스프라이트 글꼴 프로세서는 XNA 4.0의 새로운 사전 곱셈 알파와 잘 작동하지 않는 DXT3 압축을 사용합니다. 따라서 텍스트가 고르지 않게 보입니다.

Nuclex Sprite 글꼴 프로세서Texture2D 는 글꼴 비트 맵 데이터를 보유하는 내부 가 압축되지 않으므로 품질 문제가 없다는 점을 제외하고는 정확히 동일한 데이터를 출력 합니다.

Nuclex 프로세서의 데이터는 동일한 형식이므로 XNA SpriteFont리더가이를 읽을 수 있으므로 게임과 함께 배포하기 위해 Nuclex 라이브러리를 포함 할 필요가 없습니다.

또한 XNA의 기본 스프라이트 글꼴 정의와 동일한 XML 형식을 편리하게 사용할 수 있습니다.

즉, 외부 라이브러리를 게임과 번들링하는 데 아무런 문제가 없습니다. 그것들이 당신의 시스템이나 다른 것에 설치되는 것과는 다릅니다. (두 어셈블리를 병합 할 수도 있습니다).

그리고 코드에 대해서도 마찬가지입니다 (예를 들어 버전 관리가 걱정된다면). Nuclex.Fonts.Content.TrueTypeImporter.dll소스 코드를 넣을 수 있습니다 . 실제로 큰 문제는 아닙니다.


9

픽셀 글꼴을 사용할 수 있습니다 .

pf tempesta 변형

글꼴 크기로 설계된 글꼴 크기 (또는 2x, 3x, 4x와 같은 전체 글꼴)로 픽셀 글꼴을 사용하면 앤티 앨리어싱이 필요없는 완벽한 픽셀 텍스트가 보장됩니다. 즉, XNA의 스프라이트 글꼴을 나쁘게 만들고 Nuclex를 훨씬 더 좋게 만드는 끔찍한 앤티 앨리어싱을 다룰 필요가 없습니다. ( 이 기사 는 그 문제를 조사하고 비교합니다)

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.