}
fontMap = fontMap == null ? new HashMap<Font, Map<Integer, Integer>>(Collections.singletonMap(font, new HashMap<Integer, Integer>())) : fontMap;
if (newGlyph) {
Shape glyph = gv.getGlyphOutline(i, -(float) glyphBounds.getX(), -(float) glyphBounds.getY());
GLHandler.sTex.genVRAMBuffersMap(1);
Sprite textCanvas = new Sprite();
textCanvas.setBounds(glyphBounds.getBounds());
textCanvas.setLocation((int) Math.round(glyphBounds.getX() + x), (int) Math.round(glyphBounds.getY() + y));
textCanvas.runValidate();
textCanvas.clearImageGraphics();
Graphics2D g = Sprite.wrapRendering(textCanvas.getImage(gld).getGraphics());
g.setFont(font);
g.fill(glyph);
g.draw(glyph);
g.dispose();
textCanvas.updateTexData(GL11.GL_LUMINANCE_ALPHA);
SpriteGLHandler sp = _GLloadSprite(textCanvas, (RenderingSceneGL) gld);
Sprite._GLRenderSprite(gld, true, sp, textCanvas.getBounds(), z, 0, new Point(0, 0), clr, 0, null, null, null);
fontMap.get(font).put(font.getSize(), textCanvas.hashCode());
_GLcharacterMap.put(glyphChar, fontMap);
} else {
Rectangle bounds = new Rectangle((int) Math.round(glyphBounds.getX() + x), (int) Math.round(glyphBounds.getY() + y), (int) glyphBounds.getWidth(), (int) glyphBounds.getHeight());
int spHash = fontMap.get(font).get(font.getSize());
Sprite._GLRenderSprite(gld, true, _GLSprites.getHandler(spHash), bounds, z, 0, new Point(0, 0), clr, 0, null, null, null);