diff --git a/include/mapnik/font_engine_freetype.hpp b/include/mapnik/font_engine_freetype.hpp index b1d7b340a..6b776317a 100644 --- a/include/mapnik/font_engine_freetype.hpp +++ b/include/mapnik/font_engine_freetype.hpp @@ -242,7 +242,18 @@ class MAPNIK_DECL freetype_engine { public: static bool is_font_file(std::string const& file_name); + + /*! \brief register a font file + * @param file_name path to a font file. + * @return bool - true if at least one face was successfully registered in the file. + */ static bool register_font(std::string const& file_name); + + /*! \brief register a font file + * @param file_name - path to a directory containing fonts or subdirectories. + * @param recurse - default false, whether to search for fonts in sub directories. + * @return bool - true if at least one face was successfully registered. + */ static bool register_fonts(std::string const& dir, bool recurse = false); static std::vector face_names(); static std::map > const& get_mapping(); diff --git a/src/font_engine_freetype.cpp b/src/font_engine_freetype.cpp index 94eb77248..a6bf45cea 100644 --- a/src/font_engine_freetype.cpp +++ b/src/font_engine_freetype.cpp @@ -134,13 +134,14 @@ bool freetype_engine::register_font(std::string const& file_name) bool freetype_engine::register_fonts(std::string const& dir, bool recurse) { boost::filesystem::path path(dir); - if (!boost::filesystem::exists(path)) + { return false; - + } if (!boost::filesystem::is_directory(path)) + { return mapnik::freetype_engine::register_font(dir); - + } boost::filesystem::directory_iterator end_itr; bool success = false; for (boost::filesystem::directory_iterator itr(dir); itr != end_itr; ++itr) @@ -152,7 +153,10 @@ bool freetype_engine::register_fonts(std::string const& dir, bool recurse) #endif if (boost::filesystem::is_directory(*itr) && recurse) { - success = register_fonts(file_name, true); + if (register_fonts(file_name, true)) + { + success = true; + } } else { @@ -165,7 +169,10 @@ bool freetype_engine::register_fonts(std::string const& dir, bool recurse) boost::filesystem::is_regular_file(file_name) && is_font_file(file_name)) { - success = mapnik::freetype_engine::register_font(file_name); + if (mapnik::freetype_engine::register_font(file_name)) + { + success = true; + } } } }