|
@@ -1,3 +1,5 @@
|
|
|
+#include <iostream>
|
|
|
+
|
|
|
#include "rendering/FontRenderer.h"
|
|
|
|
|
|
FontRenderer::FontRenderer() : buffer(8 * 1024 * 1024), tex("resources/font.png") {
|
|
@@ -19,7 +21,11 @@ void FontRenderer::drawString(float x, float y, const char* text) {
|
|
|
float b = 1.0f;
|
|
|
|
|
|
while(text[index] != '\0' && index < maxIndex) {
|
|
|
- char c = text[index];
|
|
|
+ char32_t c = text[index];
|
|
|
+ if(c > 128 && index + 1 < maxIndex && text[index + 1] != '\0') {
|
|
|
+ index++;
|
|
|
+ c = (text[index] & 0x3F) | ((c & 0x1F) << 6);
|
|
|
+ }
|
|
|
if(c == '&') {
|
|
|
if(text[index + 1] == '\0' || text[index + 2] == '\0' || text[index + 3] == '\0') {
|
|
|
break;
|
|
@@ -40,11 +46,11 @@ void FontRenderer::drawString(float x, float y, const char* text) {
|
|
|
buffer.add(x).add(y + 8).add(minX).add(maxY).add(r).add(g).add(b).add(1.0f);
|
|
|
buffer.add(x + 6).add(y).add(maxX).add(minY).add(r).add(g).add(b).add(1.0f);
|
|
|
buffer.add(x + 6).add(y + 8).add(maxX).add(maxY).add(r).add(g).add(b).add(1.0f);
|
|
|
-
|
|
|
+
|
|
|
x += 6;
|
|
|
index++;
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
tex.bind();
|
|
|
buffer.draw(8);
|
|
|
}
|