Cover FPDF_GetDefaultTTFMap() from embedder tests.

Then add missing definitions exposed by tests.

Change-Id: I6fc35100890dd2bdfa9b92c7465ba2c94255ec41
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/64850
Reviewed-by: Lei Zhang <thestig@chromium.org>
Commit-Queue: Tom Sepez <tsepez@chromium.org>
diff --git a/fpdfsdk/fpdf_sysfontinfo_embeddertest.cpp b/fpdfsdk/fpdf_sysfontinfo_embeddertest.cpp
index 290805b..61cec04 100644
--- a/fpdfsdk/fpdf_sysfontinfo_embeddertest.cpp
+++ b/fpdfsdk/fpdf_sysfontinfo_embeddertest.cpp
@@ -6,6 +6,7 @@
 
 #include "testing/embedder_test.h"
 #include "testing/gtest/include/gtest/gtest.h"
+#include "third_party/base/stl_util.h"
 
 namespace {
 
@@ -122,3 +123,33 @@
 
   UnloadPage(page);
 }
+
+TEST_F(FPDFSysFontInfoEmbedderTest, DefaultTTFMap) {
+  static const int kAllowedCharsets[] = {
+      FXFONT_ANSI_CHARSET,        FXFONT_DEFAULT_CHARSET,
+      FXFONT_SYMBOL_CHARSET,      FXFONT_SHIFTJIS_CHARSET,
+      FXFONT_HANGEUL_CHARSET,     FXFONT_GB2312_CHARSET,
+      FXFONT_CHINESEBIG5_CHARSET, FXFONT_ARABIC_CHARSET,
+      FXFONT_CYRILLIC_CHARSET,    FXFONT_EASTERNEUROPEAN_CHARSET,
+  };
+  std::set<int> seen_charsets;
+
+  const FPDF_CharsetFontMap* cfmap = FPDF_GetDefaultTTFMap();
+  ASSERT_TRUE(cfmap);
+
+  // Stop at either end mark.
+  while (cfmap->charset != -1 && cfmap->fontname) {
+    // Only returns values described as legitimate in public header.
+    EXPECT_TRUE(pdfium::ContainsValue(kAllowedCharsets, cfmap->charset))
+        << " for " << cfmap->charset;
+
+    // Duplicates are not allowed.
+    EXPECT_TRUE(seen_charsets.insert(cfmap->charset).second)
+        << " for " << cfmap->charset;
+    ++cfmap;
+  }
+
+  // Confirm end marks only occur as a pair.
+  EXPECT_EQ(cfmap->charset, -1);
+  EXPECT_EQ(cfmap->fontname, nullptr);
+}