Support floating-point glyph coordinates
This commit is contained in:
parent
1582b341d3
commit
a2922708e8
2 changed files with 16 additions and 15 deletions
|
|
@ -13,13 +13,13 @@ namespace psemek::ui
|
||||||
{
|
{
|
||||||
struct glyph_data
|
struct glyph_data
|
||||||
{
|
{
|
||||||
int start_x;
|
float start_x;
|
||||||
int start_y;
|
float start_y;
|
||||||
int size_x;
|
float size_x;
|
||||||
int size_y;
|
float size_y;
|
||||||
int offset_x;
|
float offset_x;
|
||||||
int offset_y;
|
float offset_y;
|
||||||
int advance;
|
float advance;
|
||||||
};
|
};
|
||||||
|
|
||||||
std::string name;
|
std::string name;
|
||||||
|
|
@ -28,6 +28,7 @@ namespace psemek::ui
|
||||||
std::unordered_map<char32_t, glyph_data> glyphs;
|
std::unordered_map<char32_t, glyph_data> glyphs;
|
||||||
float sdf_scale = 0.f;
|
float sdf_scale = 0.f;
|
||||||
|
|
||||||
|
// Parse JSON font info generated by BMFont or msdf-bmfont
|
||||||
static bmfont_data parse(io::istream && stream);
|
static bmfont_data parse(io::istream && stream);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -73,7 +73,7 @@ namespace psemek::ui
|
||||||
|
|
||||||
{
|
{
|
||||||
auto const & sdf = document["common"];
|
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();
|
char32_t id = charInfo["id"].GetUint();
|
||||||
|
|
||||||
auto & data = result.glyphs[id];
|
auto & data = result.glyphs[id];
|
||||||
data.start_x = charInfo["x"].GetInt();
|
data.start_x = charInfo["x"].GetFloat();
|
||||||
data.start_y = charInfo["y"].GetInt();
|
data.start_y = charInfo["y"].GetFloat();
|
||||||
data.size_x = charInfo["width"].GetInt();
|
data.size_x = charInfo["width"].GetFloat();
|
||||||
data.size_y = charInfo["height"].GetInt();
|
data.size_y = charInfo["height"].GetFloat();
|
||||||
data.offset_x = charInfo["xoffset"].GetInt();
|
data.offset_x = charInfo["xoffset"].GetFloat();
|
||||||
data.offset_y = charInfo["yoffset"].GetInt();
|
data.offset_y = charInfo["yoffset"].GetFloat();
|
||||||
data.advance = charInfo["xadvance"].GetInt();
|
data.advance = charInfo["xadvance"].GetFloat();
|
||||||
|
|
||||||
data.offset_y = - data.offset_y - data.size_y;
|
data.offset_y = - data.offset_y - data.size_y;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue