LÖVE will now try to guess the line height for BMFont files which are missing the 'lineHeight' attribute.

--HG--
branch : minor
This commit is contained in:
Alex Szpakowski
2014-09-28 20:16:32 -03:00
parent d4ad571780
commit 4c6e688870
2 changed files with 10 additions and 4 deletions
+9 -4
View File
@@ -26,6 +26,7 @@
// C++
#include <sstream>
#include <vector>
#include <algorithm>
// C
#include <cstdlib>
@@ -174,7 +175,6 @@ void BMFontRasterizer::parseConfig(const std::string &configtext)
{
lineHeight = cline.getAttributeInt("lineHeight");
metrics.ascent = cline.getAttributeInt("base");
metrics.height = lineHeight;
}
else if (tag == "page")
{
@@ -230,12 +230,12 @@ void BMFontRasterizer::parseConfig(const std::string &configtext)
}
}
if (lineHeight == 0)
throw love::Exception("Invalid BMFont file (missing line height attribute?)");
if (characters.size() == 0)
throw love::Exception("Invalid BMFont file (no character definitions?)");
// Try to guess the line height if the lineheight attribute isn't found.
bool guessheight = lineHeight == 0;
// Verify the glyph character attributes.
for (const auto &cpair : characters)
{
@@ -251,7 +251,12 @@ void BMFontRasterizer::parseConfig(const std::string &configtext)
if (!id->inside(c.x, c.y) || !id->inside(c.x + c.metrics.width, c.y + c.metrics.height))
throw love::Exception("Invalid BMFont character coordinates.");
if (guessheight)
lineHeight = std::max(lineHeight, c.metrics.height);
}
metrics.height = lineHeight;
}
int BMFontRasterizer::getLineHeight() const
+1
View File
@@ -22,6 +22,7 @@
#define LOVE_FONT_BMFONT_RASTERIZER_H
// LOVE
#include "common/config.h"
#include "Rasterizer.h"
#include "image/ImageData.h"