Include missing charsets in CFX_FolderFontInfo from OS2 table.

Hebrew fallback now succeeds and selects a proper Hebrew fallback font
(Sans-Serif, like DejaVu Sans), causing the rendering to change. Makes
other platforms more consistent with android font mapping, allowing
unification down the road.

-- Update diffing image.

Change-Id: I92f40426c99354e13588ac62788fc4893464fb2c
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/149450
Reviewed-by: Lei Zhang <thestig@chromium.org>
Commit-Queue: Tom Sepez <tsepez@chromium.org>
diff --git a/core/fxge/cfx_folderfontinfo.cpp b/core/fxge/cfx_folderfontinfo.cpp
index af92f72..a22b2de 100644
--- a/core/fxge/cfx_folderfontinfo.cpp
+++ b/core/fxge/cfx_folderfontinfo.cpp
@@ -259,6 +259,38 @@
     // `codepages` corresponds to OS/2 table ulCodePageRange1.
     // See https://learn.microsoft.com/en-us/typography/opentype/spec/os2
     uint32_t codepages = fxcrt::GetUInt32MSBFirst(p.first<4u>());
+    if (codepages & (1U << 1)) {
+      mapper_->AddInstalledFont(facename, FX_Charset::kMSWin_EasternEuropean);
+      pInfo->charsets_ |= FX_CharsetFlag::kMSWin_EasternEuropean;
+    }
+    if (codepages & (1U << 2)) {
+      mapper_->AddInstalledFont(facename, FX_Charset::kMSWin_Cyrillic);
+      pInfo->charsets_ |= FX_CharsetFlag::kMSWin_Cyrillic;
+    }
+    if (codepages & (1U << 3)) {
+      mapper_->AddInstalledFont(facename, FX_Charset::kMSWin_Greek);
+      pInfo->charsets_ |= FX_CharsetFlag::kMSWin_Greek;
+    }
+    if (codepages & (1U << 4)) {
+      mapper_->AddInstalledFont(facename, FX_Charset::kMSWin_Turkish);
+      pInfo->charsets_ |= FX_CharsetFlag::kMSWin_Turkish;
+    }
+    if (codepages & (1U << 5)) {
+      mapper_->AddInstalledFont(facename, FX_Charset::kMSWin_Hebrew);
+      pInfo->charsets_ |= FX_CharsetFlag::kMSWin_Hebrew;
+    }
+    if (codepages & (1U << 6)) {
+      mapper_->AddInstalledFont(facename, FX_Charset::kMSWin_Arabic);
+      pInfo->charsets_ |= FX_CharsetFlag::kMSWin_Arabic;
+    }
+    if (codepages & (1U << 7)) {
+      mapper_->AddInstalledFont(facename, FX_Charset::kMSWin_Baltic);
+      pInfo->charsets_ |= FX_CharsetFlag::kMSWin_Baltic;
+    }
+    if (codepages & (1U << 16)) {
+      mapper_->AddInstalledFont(facename, FX_Charset::kThai);
+      pInfo->charsets_ |= FX_CharsetFlag::kThai;
+    }
     if (codepages & (1U << 17)) {
       mapper_->AddInstalledFont(facename, FX_Charset::kShiftJIS);
       pInfo->charsets_ |= FX_CharsetFlag::kShiftJIS;
diff --git a/testing/resources/pixel/bug_725389_expected.pdf.0.png b/testing/resources/pixel/bug_725389_expected.pdf.0.png
index 834bcaa..a09d72a 100644
--- a/testing/resources/pixel/bug_725389_expected.pdf.0.png
+++ b/testing/resources/pixel/bug_725389_expected.pdf.0.png
Binary files differ
diff --git a/testing/resources/pixel/bug_725389_expected_skia.pdf.0.png b/testing/resources/pixel/bug_725389_expected_skia.pdf.0.png
index 69c500b..5caaae7 100644
--- a/testing/resources/pixel/bug_725389_expected_skia.pdf.0.png
+++ b/testing/resources/pixel/bug_725389_expected_skia.pdf.0.png
Binary files differ
diff --git a/testing/resources/pixel/bug_725389_expected_skia_win.pdf.0.png b/testing/resources/pixel/bug_725389_expected_skia_win.pdf.0.png
index 4813e3d..c2efe95 100644
--- a/testing/resources/pixel/bug_725389_expected_skia_win.pdf.0.png
+++ b/testing/resources/pixel/bug_725389_expected_skia_win.pdf.0.png
Binary files differ