Support floating-point glyph coordinates

This commit is contained in:
Nikita Lisitsa 2023-02-04 18:21:43 +03:00
parent 1582b341d3
commit a2922708e8
2 changed files with 16 additions and 15 deletions

View file

@ -13,13 +13,13 @@ namespace psemek::ui
{
struct glyph_data
{
int start_x;
int start_y;
int size_x;
int size_y;
int offset_x;
int offset_y;
int advance;
float start_x;
float start_y;
float size_x;
float size_y;
float offset_x;
float offset_y;
float advance;
};
std::string name;
@ -28,6 +28,7 @@ namespace psemek::ui
std::unordered_map<char32_t, glyph_data> glyphs;
float sdf_scale = 0.f;
// Parse JSON font info generated by BMFont or msdf-bmfont
static bmfont_data parse(io::istream && stream);
};

View file

@ -73,7 +73,7 @@ namespace psemek::ui
{
auto const & sdf = document["common"];
result.baseline = sdf["base"].GetInt();
result.baseline = sdf["base"].GetFloat();
}
{
@ -84,13 +84,13 @@ namespace psemek::ui
char32_t id = charInfo["id"].GetUint();
auto & data = result.glyphs[id];
data.start_x = charInfo["x"].GetInt();
data.start_y = charInfo["y"].GetInt();
data.size_x = charInfo["width"].GetInt();
data.size_y = charInfo["height"].GetInt();
data.offset_x = charInfo["xoffset"].GetInt();
data.offset_y = charInfo["yoffset"].GetInt();
data.advance = charInfo["xadvance"].GetInt();
data.start_x = charInfo["x"].GetFloat();
data.start_y = charInfo["y"].GetFloat();
data.size_x = charInfo["width"].GetFloat();
data.size_y = charInfo["height"].GetFloat();
data.offset_x = charInfo["xoffset"].GetFloat();
data.offset_y = charInfo["yoffset"].GetFloat();
data.advance = charInfo["xadvance"].GetFloat();
data.offset_y = - data.offset_y - data.size_y;
}