diff -Naur graphite2-1.3.12.orig/src/inc/json.h graphite2-1.3.12/src/inc/json.h
--- graphite2-1.3.12.orig/src/inc/json.h	2018-08-18 07:34:50.160134600 -0400
+++ graphite2-1.3.12/src/inc/json.h	2018-08-18 07:37:18.700285100 -0400
@@ -87,6 +87,10 @@
     json & operator << (number) throw();
     json & operator << (integer) throw();
     json & operator << (integer_u) throw();
+#ifdef _WIN32
+    json & operator << (unsigned __int64 d) throw();
+    json & operator << (__int64 d) throw();
+#endif
     json & operator << (boolean) throw();
     json & operator << (std::nullptr_t) throw();
     json & operator << (_context_t) throw();
diff -Naur graphite2-1.3.12.orig/src/json.cpp graphite2-1.3.12/src/json.cpp
--- graphite2-1.3.12.orig/src/json.cpp	2018-08-18 07:34:50.175759800 -0400
+++ graphite2-1.3.12/src/json.cpp	2018-08-18 07:38:11.199162100 -0400
@@ -141,6 +141,10 @@
 }
 json & json::operator << (json::integer d) throw()  { context(seq); fprintf(_stream, FORMAT_INTMAX, intmax_t(d)); return *this; }
 json & json::operator << (json::integer_u d) throw()  { context(seq); fprintf(_stream, FORMAT_UINTMAX, uintmax_t(d)); return *this; }
+#ifdef _WIN32
+json & json::operator << (unsigned __int64 d) throw()	{ context(seq); fprintf(_stream, "%I64", d); return *this; }
+json & json::operator << (__int64 d) throw()	{ context(seq); fprintf(_stream, "%I64", d); return *this; }
+#endif
 json & json::operator << (json::boolean b) throw()  { context(seq); fputs(b ? "true" : "false", _stream); return *this; }
 json & json::operator << (std::nullptr_t)  throw()  { context(seq); fputs("null",_stream); return *this; }
 
