¿Cómo obtengo un hermoso texto pequeño en XNA sin usar bibliotecas externas?

13

En XNA, la tecnología spritefont es horrible. Nuclex hace el trabajo mucho mejor, pero no quiero tener referencias externas, y casi termino con mi juego.

Cuando se usan fuentes como Sansation o Quicksand, se ve terrible en tamaños más pequeños de las fuentes. ¡Es muy malo!

¿Hay una solución conocida para esto? Intenté configurar los tamaños de fuente en extremadamente alto y luego reducirlos en el spritebatch sin suerte.

Mathias Lykkegaard Lorenzen
fuente
Utilizo SpriteFont para crear mis fuentes para XNA, tienes mucha flexibilidad. También me aseguro de que la posición de la fuente sea un número entero para que no se produzca un antialiasing desagradable, pero probablemente esta no sea una gran solución. También puede intentar el filtrado de puntos en sus llamadas de spritebatch de texto.
Jonathan Connell
No olvide probar sus fuentes pequeñas en una variedad de dispositivos y personas reales. Si se trata de un título 360 y, por lo tanto, está dirigido a televisores, los tamaños de todos los elementos visuales tienden a ser un poco más grandes que en una pantalla de PC.
Lars Viklund
Estoy haciendo un juego de PC, y el tamaño de fuente está configurado en un número entero.
Mathias Lykkegaard Lorenzen
1
No escale textos, cree una fuente de sprite para cada tamaño que necesite.
Wouter
1
Algunas reglas más para ti aquí. Sujete el vector de posición a enteros antes de renderizar, de lo contrario, el muestreo hará que su texto de salida se vea como basura . Puede valer la pena cambiar la muestra de textura a Punto / Vecino más cercano antes de representar el texto. Especialmente si tu fuente está pixelada :)
Cubed2D

Respuestas:

11

XNA le permite importar una textura como fuente de sprite . Probablemente pueda obtener mejores sugerencias y suavizado en su fuente si coloca cada carácter manualmente en un buen programa de edición de imágenes, en lugar de confiar en la hoja de sprites que genera XNA.

Tim R.
fuente
13

El procesador de fuentes sprite XNA usa compresión DXT3 que no funciona bien con el nuevo alfa premultiplicado en XNA 4.0. De ahí la apariencia cuadrada del texto.

El procesador de fuente Nuclex sprite genera exactamente los mismos datos, excepto que el interno Texture2Dque contiene los datos de mapa de bits de fuente no está comprimido, por lo que no tiene problemas de calidad.

Debido a que los datos del procesador Nuclex están en el mismo formato, el SpriteFontlector XNA puede leerlos, y no necesita incluir ninguna biblioteca Nuclex para distribuirlos con su juego.

(También le permite usar convenientemente el mismo formato XML que las definiciones de fuentes de sprites nativas de XNA).

Dicho esto: no hay nada de malo en agrupar bibliotecas externas con tu juego. No es que se instalen en su sistema ni nada. (Incluso podría ir tan lejos como para fusionar los dos conjuntos).

Y lo mismo ocurre con el código (si le preocupa el control de versiones, por ejemplo). Simplemente puede ingresar Nuclex.Fonts.Content.TrueTypeImporter.dllsu código fuente. En realidad no es gran cosa.

Andrew Russell
fuente
9

Podrías usar fuentes de píxeles :

variante de tempesta pf

Cuando utiliza una fuente de píxeles con el tamaño de fuente para el que fue diseñada (o un múltiplo entero de ella, por ejemplo, 2x, 3x, 4x), tiene garantizado un texto de píxeles perfectos que no requiere suavizado. Esto significa que nunca tendrá que lidiar con el terrible suavizado que hace que las fuentes sprite de XNA sean tan malas y Nuclex sea mucho mejor. ( Este artículo examina ese problema y los compara)

doppelgreener
fuente