More data safety checking, doesn't load spaces.
This commit is contained in:
parent
f4aa9b7ffb
commit
4b1e57ac72
@ -45,7 +45,12 @@ namespace SlatedGameToolkit.Framework.Graphics.Text
|
|||||||
public unsafe BitmapFont(byte[] data, GLContext glContext = null, int cacheSize = 1024, int textures = 2, uint textureSizes = 512) {
|
public unsafe BitmapFont(byte[] data, GLContext glContext = null, int cacheSize = 1024, int textures = 2, uint textureSizes = 512) {
|
||||||
info = new StbTrueType.stbtt_fontinfo();
|
info = new StbTrueType.stbtt_fontinfo();
|
||||||
fixed(byte* dataPtr = &data[0]) {
|
fixed(byte* dataPtr = &data[0]) {
|
||||||
StbTrueType.stbtt_InitFont(info, dataPtr, 0);
|
int offset = StbTrueType.stbtt_GetFontOffsetForIndex(dataPtr, 0);
|
||||||
|
if (offset != -1) {
|
||||||
|
StbTrueType.stbtt_InitFont(info, dataPtr, offset);
|
||||||
|
} else {
|
||||||
|
throw new FrameworkUsageException("Could not load ttf file.");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
this.glyphIndices = new LRUCache<char, int>(cacheSize);
|
this.glyphIndices = new LRUCache<char, int>(cacheSize);
|
||||||
@ -90,6 +95,7 @@ namespace SlatedGameToolkit.Framework.Graphics.Text
|
|||||||
int textureChanges = 0;
|
int textureChanges = 0;
|
||||||
foreach (char c in characters)
|
foreach (char c in characters)
|
||||||
{
|
{
|
||||||
|
if (c == ' ') continue;
|
||||||
if (!glyphTexLocations.ContainsKey((c, scale)) || !textures[glyphTexLocations[(c, scale)]].ContainsChar(c, scale)) {
|
if (!glyphTexLocations.ContainsKey((c, scale)) || !textures[glyphTexLocations[(c, scale)]].ContainsChar(c, scale)) {
|
||||||
glyphTexLocations.Remove((c, scale));
|
glyphTexLocations.Remove((c, scale));
|
||||||
if (!textures[drawingTo].Upload(scale, c)) {
|
if (!textures[drawingTo].Upload(scale, c)) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user