https://github.com/mapnik/mapnik/commit/9e58c890430d
https://github.com/mapnik/mapnik/commit/093fcee6d1ba

--- include/mapnik/text/harfbuzz_shaper.hpp.orig	2015-11-26 14:32:15 UTC
+++ include/mapnik/text/harfbuzz_shaper.hpp
@@ -41,6 +41,7 @@
 #include <harfbuzz/hb-ft.h>
 
 // icu
+#include <unicode/uvernum.h>
 #include <unicode/uscript.h>
 
 namespace mapnik
@@ -55,7 +56,8 @@ static inline hb_script_t _icu_script_to_script(UScrip
 static inline const uint16_t * uchar_to_utf16(const UChar* src)
 {
    static_assert(sizeof(UChar) == sizeof(uint16_t),"UChar is eq size to uint16_t");
-#if defined(_MSC_VER)
+#if defined(_MSC_VER) || (U_ICU_VERSION_MAJOR_NUM >= 59)
+   // ^^ http://site.icu-project.org/download/59#TOC-ICU4C-char16_t1
    return reinterpret_cast<const uint16_t *>(src);
 #else
    return src;
--- include/mapnik/unicode.hpp.orig	2015-11-26 14:32:15 UTC
+++ include/mapnik/unicode.hpp
@@ -31,6 +31,13 @@
 // std
 #include <cstdint>
 #include <string>
+// icu
+#if (U_ICU_VERSION_MAJOR_NUM >= 59)
+#pragma GCC diagnostic push
+#include <mapnik/warning_ignore.hpp>
+#include <unicode/unistr.h>
+#pragma GCC diagnostic pop
+#endif
 
 struct UConverter;
 
