From 1b0564a8506e5d5e4ff10f03be7a232ee3a9409b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Konstantin=20K=C3=A4fer?= Date: Mon, 30 Mar 2015 16:07:54 +0200 Subject: [PATCH] normalize font stack - split all fontstack names at the comma character, trim, the join - capitalization is important and may not be changed --- src/mbgl/style/style_parser.cpp | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/src/mbgl/style/style_parser.cpp b/src/mbgl/style/style_parser.cpp index 66938987f..8ee78950f 100644 --- a/src/mbgl/style/style_parser.cpp +++ b/src/mbgl/style/style_parser.cpp @@ -9,6 +9,13 @@ #include #include +#pragma GCC diagnostic push +#ifndef __clang__ +#pragma GCC diagnostic ignored "-Wunused-local-typedefs" +#endif +#include +#pragma GCC diagnostic pop + #include namespace mbgl { @@ -447,6 +454,13 @@ bool StyleParser::parseOptionalProperty(const char *property_name, PropertyKey k } } +std::string normalizeFontStack(const std::string &name) { + namespace algo = boost::algorithm; + std::vector parts; + algo::split(parts, name, algo::is_any_of(","), algo::token_compress_on); + std::for_each(parts.begin(), parts.end(), [](std::string& str) { algo::trim(str); }); + return algo::join(parts, ", "); +} template<> std::tuple StyleParser::parseProperty(JSVal value, const char *property_name) { if (!value.IsString()) { @@ -454,7 +468,13 @@ template<> std::tuple StyleParser::parseProperty(JSVal value, return std::tuple { false, std::string() }; } - return std::tuple { true, { value.GetString(), value.GetStringLength() } }; + if (std::string { "text-font" } == property_name) { + return std::tuple { + true, normalizeFontStack({ value.GetString(), value.GetStringLength() }) + }; + } else { + return std::tuple { true, { value.GetString(), value.GetStringLength() } }; + } } template<> std::tuple StyleParser::parseProperty(JSVal value, const char *property_name) {