throw if we encounter a font file which lacks any referencable names (freetype family_name and style_name) making it basically invalid
This commit is contained in:
parent
d403cbf4bc
commit
45965381af
2 changed files with 19 additions and 4 deletions
|
@ -14,6 +14,8 @@ For a complete change history, see the SVN log.
|
||||||
Mapnik Trunk
|
Mapnik Trunk
|
||||||
------------
|
------------
|
||||||
|
|
||||||
|
- Throw an error during registration for fonts which Freetype2 does not report a family or style name (r2985).
|
||||||
|
|
||||||
- Fixed quoting syntax for "table"."attribute" in PostGIS plugin (previously if table aliases were used quoting like "table.attribute" would cause query failure) (r2979).
|
- Fixed quoting syntax for "table"."attribute" in PostGIS plugin (previously if table aliases were used quoting like "table.attribute" would cause query failure) (r2979).
|
||||||
|
|
||||||
- Added the ability to control the PostGIS feature id by suppling a key_field to reference and integer attribute name (r2979).
|
- Added the ability to control the PostGIS feature id by suppling a key_field to reference and integer attribute name (r2979).
|
||||||
|
|
|
@ -27,6 +27,7 @@
|
||||||
// boost
|
// boost
|
||||||
#include <boost/algorithm/string.hpp>
|
#include <boost/algorithm/string.hpp>
|
||||||
#include <boost/filesystem.hpp>
|
#include <boost/filesystem.hpp>
|
||||||
|
#include <sstream>
|
||||||
|
|
||||||
namespace mapnik
|
namespace mapnik
|
||||||
{
|
{
|
||||||
|
@ -78,10 +79,22 @@ bool freetype_engine::register_font(std::string const& file_name)
|
||||||
FT_Done_FreeType(library);
|
FT_Done_FreeType(library);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
std::string name = std::string(face->family_name) + " " + std::string(face->style_name);
|
// some fonts can lack names, skip them
|
||||||
name2file_.insert(std::make_pair(name,file_name));
|
// http://www.freetype.org/freetype2/docs/reference/ft2-base_interface.html#FT_FaceRec
|
||||||
FT_Done_Face(face );
|
if (face->family_name && face->style_name) {
|
||||||
FT_Done_FreeType(library);
|
std::string name = std::string(face->family_name) + " " + std::string(face->style_name);
|
||||||
|
name2file_.insert(std::make_pair(name,file_name));
|
||||||
|
FT_Done_Face(face);
|
||||||
|
FT_Done_FreeType(library);
|
||||||
|
return true;
|
||||||
|
} else {
|
||||||
|
FT_Done_Face(face);
|
||||||
|
FT_Done_FreeType(library);
|
||||||
|
std::ostringstream s;
|
||||||
|
s << "Error: unable to load invalid font file which lacks identifiable family and style name: '"
|
||||||
|
<< file_name << "'";
|
||||||
|
throw std::runtime_error(s.str());
|
||||||
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue