Как нарисовать специальные символы в XNA?
Я хочу нарисовать специальные символы, такие как: "π,Ω,θ,ξ" в XNA, используя метод SpriteBatch.DrawString()
, но я получаю исключение, говоря, что эти символы не доступны в файле SpriteFont. Есть ли решение для этого?
1 ответ
Вы должны включить эти символы в ваш spritefont.
В вашем файле spritefont вам нужен еще один "регион" для греческих букв:
<CharacterRegions>
<CharacterRegion><!-- Normal letters -->
<Start> </Start>
<End>~</End>
</CharacterRegion>
<CharacterRegion><!-- Greek letters -->
<Start>Α</Start>
<End>ω</End>
</CharacterRegion>
</CharacterRegions>
Когда вы включите это, вы сможете отобразить эти символы с этим spritefont:
Использование инструмента "Карта символов"
Чтобы узнать, в каком регионе находятся эти символы, используйте Character Map, красивое приложение, найденное в All Programs -> Accessories -> System Tools
,
Когда вы выбираете символ, он отображает его код символа, например, omega (ω) - это U+03C9, что является шестнадцатеричным 0x03C9 или десятичным 969.
Различные способы определения регионов персонажей
Существует 3 способа определения регионов в файле SpriteFont, и они связаны с тремя способами написания символов в XML:
- Десятичное представление: т.е.
~
- формат&#nnnn;
- Шестнадцатеричное представление: т.е.
~
- формат&#xnnnn;
- Фактический характер: т.е.
~
Это три способа написать одну и ту же вещь в XML, так что вы можете использовать разные способы для определения ваших регионов. Выше было десятичное представление регионов.
Вот шестнадцатеричное представление, которое проще всего получить из карты персонажей:
Наконец, вы можете использовать фактические символы для определения ваших регионов, и вы получите их, скопировав их из текстового поля в инструменте Карта символов: