Provide more overloads for the wide string flavour

Signed-off-by: Daniela Engert <dani@ngrt.de>
diff --git a/include/fmt/format-inl.h b/include/fmt/format-inl.h
index 52111a1..75b62dd 100644
--- a/include/fmt/format-inl.h
+++ b/include/fmt/format-inl.h
@@ -96,6 +96,7 @@
 #endif // defined(_WIN32) && defined(__MINGW32__) && !defined(__NO_ISOCEXT)
 
 const char RESET_COLOR[] = "\x1b[0m";
+const wchar_t WRESET_COLOR[] = L"\x1b[0m"; 
 
 typedef void (*FormatFunc)(internal::buffer &, int, string_view);
 
@@ -489,10 +490,20 @@
   std::fwrite(buffer.data(), 1, buffer.size(), f);
 }
 
+FMT_FUNC void vprint(std::FILE *f, wstring_view format_str, wformat_args args) {
+  wmemory_buffer buffer;
+  vformat_to(buffer, format_str, args);
+  std::fwrite(buffer.data(), sizeof(wchar_t), buffer.size(), f);
+}
+
 FMT_FUNC void vprint(string_view format_str, format_args args) {
   vprint(stdout, format_str, args);
 }
 
+FMT_FUNC void vprint(wstring_view format_str, wformat_args args) {
+  vprint(stdout, format_str, args);
+}
+
 FMT_FUNC void vprint_colored(color c, string_view format, format_args args) {
   char escape[] = "\x1b[30m";
   escape[3] = static_cast<char>('0' + c);
@@ -501,6 +512,14 @@
   std::fputs(RESET_COLOR, stdout);
 }
 
+FMT_FUNC void vprint_colored(color c, wstring_view format, wformat_args args) {
+  wchar_t escape[] = L"\x1b[30m";
+  escape[3] = static_cast<wchar_t>('0' + c);
+  std::fputws(escape, stdout);
+  vprint(format, args);
+  std::fputws(WRESET_COLOR, stdout);
+}
+
 FMT_FUNC locale locale_provider::locale() { return fmt::locale(); }
 
 }  // namespace fmt