W XNA technologia spritefont jest okropna. Nuclex wykonuje tę pracę o wiele lepiej, ale nie chcę mieć żadnych zewnętrznych odniesień i prawie skończyłem swoją grę.
Podczas korzystania z czcionek takich jak Sansation lub Quicksand wygląda okropnie w mniejszych rozmiarach czcionek. To takie złe!
Czy istnieje znane obejście tego problemu? Próbowałem ustawić rozmiary czcionek na bardzo wysokie, a następnie pomniejszyć je w trybie spritebatch bez powodzenia.
Odpowiedzi:
XNA pozwala importować teksturę jako spritefont . Prawdopodobnie możesz uzyskać lepsze podpowiedzi i wygładzanie czcionek, jeśli umieścisz każdy znak ręcznie w dobrym programie do edycji obrazów, zamiast polegać na arkuszu sprite generowanym przez XNA.
źródło
Procesor czcionek sprite XNA wykorzystuje kompresję DXT3, która nie działa dobrze z nową wstępnie zmultiplikowaną alfą w XNA 4.0. Stąd blokowy wygląd tekstu.
Procesor czcionek sprite Nuclex generuje dokładnie te same dane, z tym wyjątkiem, że wewnętrzny,
Texture2D
który przechowuje dane mapy bitowej czcionek, nie jest kompresowany - więc nie ma problemów z jakością.Ponieważ dane z procesora Nuclex są w tym samym formacie,
SpriteFont
czytnik XNA może je odczytać i nie trzeba dołączać żadnych bibliotek Nuclex do dystrybucji w grze.(Dogodnie pozwala również na używanie tego samego formatu XML, co natywne definicje czcionek sprite XNA).
To powiedziawszy: nie ma nic złego w łączeniu zewnętrznych bibliotek z grą. To nie jest tak, że są instalowane w twoim systemie lub czymkolwiek. (Możesz nawet posunąć się tak daleko, aby połączyć dwa zespoły).
To samo dotyczy kodu (jeśli martwisz się na przykład kontrolą wersji). Możesz po prostu wprowadzić
Nuclex.Fonts.Content.TrueTypeImporter.dll
swój kod źródłowy. To właściwie nie jest wielka sprawa.źródło
Możesz użyć czcionek pikselowych :
Kiedy używasz czcionki pikselowej o rozmiarze, dla którego została zaprojektowana (lub całej jej wielokrotności, np. 2x, 3x, 4x), masz gwarancję tekstu w pikselach, który nie wymaga wygładzania. Oznacza to, że nigdy nie będziesz musiał radzić sobie ze strasznym antyaliasingiem, który sprawia, że czcionki sprite XNA są tak złe, a Nuclex o wiele lepsze. (W tym artykule przeanalizowano ten problem i porównano je)
źródło