In XNA ist die Spritefont-Technologie schrecklich. Nuclex macht den Job so viel besser, aber ich möchte keine externen Referenzen haben, und ich bin fast fertig mit meinem Spiel.
Bei der Verwendung von Schriftarten wie Sansation oder Quicksand sieht es bei kleineren Schriftgrößen fürchterlich aus. Es ist so schlecht!
Gibt es dafür eine bekannte Problemumgehung? Ich habe versucht, die Schriftgrößen auf extrem hoch einzustellen und sie dann im Spritebatch zu verkleinern, ohne Erfolg.
Antworten:
Mit XNA können Sie eine Textur als Spritefont importieren . Sie können wahrscheinlich bessere Andeutungen und Anti-Aliasing-Effekte in Ihrer Schriftart erzielen, wenn Sie die einzelnen Zeichen manuell in einem guten Bildbearbeitungsprogramm anordnen, anstatt sich auf das von XNA generierte Sprite-Sheet zu verlassen.
quelle
Der XNA-Sprite-Font-Prozessor verwendet die DXT3-Komprimierung, die mit dem neuen vormultiplizierten Alpha in XNA 4.0 nicht gut funktioniert. Daher das blockige Aussehen des Textes.
Der Nuclex Sprite-Schriftprozessor gibt genau die gleichen Daten aus, mit der Ausnahme, dass die interne Datei , in der
Texture2D
die Schriftbitmap-Daten gespeichert sind, nicht komprimiert ist - daher treten keine Qualitätsprobleme auf.Da die Daten vom Nuclex-Prozessor dasselbe Format haben, können sie vom XNA-
SpriteFont
Reader gelesen werden, und Sie müssen keine Nuclex-Bibliotheken für die Verteilung in Ihr Spiel einbeziehen.(Außerdem können Sie bequem dasselbe XML-Format wie die nativen Sprite-Schriftdefinitionen von XNA verwenden.)
Davon abgesehen: Es ist nichts Falsches daran, externe Bibliotheken mit Ihrem Spiel zu bündeln. Es ist nicht so, als würden sie auf Ihrem System installiert oder so. (Sie könnten sogar so weit gehen, die beiden Baugruppen zusammenzuführen).
Das Gleiche gilt für den Code (wenn Sie zum Beispiel über die Versionskontrolle besorgt sind). Sie können einfach
Nuclex.Fonts.Content.TrueTypeImporter.dll
Ihren Quellcode eingeben. Es ist eigentlich keine große Sache.quelle
Sie können Pixelschriften verwenden :
Wenn Sie eine Pixelschrift in der Schriftgröße verwenden, für die sie entwickelt wurde (oder ein ganzes Vielfaches davon, z. B. 2x, 3x, 4x), erhalten Sie garantiert pixelgenauen Text, für den kein Anti-Aliasing erforderlich ist. Dies bedeutet, dass Sie sich nie mit dem schrecklichen Anti-Aliasing auseinandersetzen müssen, das die Sprite-Schriften von XNA so schlecht und Nuclex so viel besser macht. ( Dieser Artikel untersucht dieses Problem und vergleicht sie)
quelle