[XNA4] SpriteFont Antialiasing & Weitergabe

  • VB.NET

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von FuFu^^.

    [XNA4] SpriteFont Antialiasing & Weitergabe

    Hey!

    ich versuche mit Hilfe von XNA4 einen Text in einem nicht-windows Font darzustellen. Diesen habe ich im .ttf-Format heruntergeladen und per Rechtsclick installiert. In der IDE habe ich dann mit dem Assistenten einen SpriteFont erstellt lasse ihn in der Draw-Sub zeichnen. Leider stellt XNA die Schrift bei kleinen Schriftgrößen ohne Antialiasing dar und das sieht nicht sonderlich gut aus. Die Windows-Font-Vorschau und MS Word hingegen, können den Font auch in Schriftgröße 12 deutlich besser darstellen. Hierzu ein Beispiel:
    Spoiler anzeigen

    Am besten clickt ihr auf das Bild, um es im Browser mit dem Zoom 100% darzustellen, sonst sieht man den Unterschied ggf nicht!


    Ich verwende den folgenden Code zum Zeichnen des Strings:

    VB.NET-Quellcode

    1. spriteBatch.DrawString(meinFont, "Franz jagt im komplett verwahrlosten...", New Vector2(15, 15), Color.Black)





    Des Weiteren würde mich interessieren, wie ich den Font mitgeben kann, wenn ich die Anwendung (z.B. als ZIP-Ordner) verteile. Die Ziel-PCs haben dann verständlicherweise idR nicht den benötigten Font installiert. (Die Lizenz des Font-Ersteller gestattet mit da selbstverständlich)
    ist das nicht nur eine XML, oder "compiled" das content-projekt das so, dass die app "vertriebsfertig" ist? ich probier das mal bei zeiten aus..

    momentan wäre mir die lösung des ersten problems ohnehin wichtiger.
    Um das hier noch zu ergänzen: ich habe das mal mit GDI rumprobiert. (siehe Anhang) Ohne AA sieht es so sch*** aus wie in XNA, mit gesetztem TextRenderingHint gefällt's sehr gut.

    Der GraphicDeviceManager von XNA kennt leider keinen TextRenderingHint. Ich könnte natürlich ein System.Drawing.Graphics-Objekt vom Handle meines XNA-Spiels erstellen und anschließend mit GDI drüberzeichnen, aber die Lösung erscheint mir iwie doch ein bisschen krüppelig (Performance-Einbuße? Ich verwende ja nicht ohne Grund XNA) und ich bin mir nicht sicher was passiert wenn ich das in einem WP7-Projekt versuchen würde... :S

    Das muss doch eleganter gehen!
    Bilder
    • FontInGDI.png

      43,89 kB, 995×442, 179 mal angesehen
    ich habe testweise in der XML mal die 4-fache größe (also 48) eingetragen und dann in der drawstring-methode mit 1/4 (also 0.25) als scaling gearbeitet - mit mößigem erfolg. das kommt nicht an GDI's TextRenderingHint ran. :|