Rasterizer *Font::newRasterizer(love::image::ImageData *data, const std::string &text) { size_t strlen = text.size(); size_t numglyphs = 0; uint32 *glyphs = new uint32[strlen]; try { utf8::iterator<std::string::const_iterator> i(text.begin(), text.begin(), text.end()); utf8::iterator<std::string::const_iterator> end(text.end(), text.begin(), text.end()); while (i != end) glyphs[numglyphs++] = *i++; } catch (utf8::exception &e) { delete [] glyphs; throw love::Exception("UTF-8 decoding error: %s", e.what()); } Rasterizer *r = newRasterizer(data, glyphs, numglyphs); delete [] glyphs; return r; }
Rasterizer * Font::newRasterizer(love::image::ImageData * data, std::string glyphs) { int length = glyphs.size(); unsigned short * g = new unsigned short[length]; for (int i = 0; i < length; i++) { g[i] = (unsigned char)glyphs[i]; } Rasterizer * r = newRasterizer(data, g, length); delete [] g; return r; }