Remove GetDictBy("DR") from annot/field dictionaries

We should not use DR field from annotation/field dictionaries, since
these are not supposed to have one. In PDF spec 1.7, DR is defined only
for the form dictionary, in 8.6.1. In addition, note 118 in Appendix H
says "In PDF 1.2, an additional entry in the field dictionary, DR, was
defined but was never implemented. Beginning with PDF 1.5, this entry
is obsolete and should be ignored."

The changes in CBA_FontMap fix the bug below. The changes in
cpvt_generateap do not affect the bug but follow the reasoning from
the above paragraph.

BUG=pdfium:538

Review-Url: https://codereview.chromium.org/2337673002
diff --git a/core/fpdfdoc/cpvt_generateap.cpp b/core/fpdfdoc/cpvt_generateap.cpp
index be96d2d..8c8cb93 100644
--- a/core/fpdfdoc/cpvt_generateap.cpp
+++ b/core/fpdfdoc/cpvt_generateap.cpp
@@ -46,26 +46,15 @@
 
   FX_FLOAT fFontSize = FX_atof(syntax.GetWord());
   CPVT_Color crText = CPVT_Color::ParseColor(DA);
-  FX_BOOL bUseFormRes = FALSE;
-  CPDF_Dictionary* pFontDict = nullptr;
-  CPDF_Dictionary* pDRDict = pAnnotDict->GetDictBy("DR");
-  if (!pDRDict) {
-    pDRDict = pFormDict->GetDictBy("DR");
-    bUseFormRes = TRUE;
-  }
-  CPDF_Dictionary* pDRFontDict = pDRDict ? pDRDict->GetDictBy("Font") : nullptr;
-  if (pDRFontDict) {
-    pFontDict = pDRFontDict->GetDictBy(sFontName.Mid(1));
-    if (!pFontDict && !bUseFormRes) {
-      pDRDict = pFormDict->GetDictBy("DR");
-      pDRFontDict = pDRDict->GetDictBy("Font");
-      if (pDRFontDict)
-        pFontDict = pDRFontDict->GetDictBy(sFontName.Mid(1));
-    }
-  }
+  CPDF_Dictionary* pDRDict = pFormDict->GetDictBy("DR");
+  if (!pDRDict)
+    return false;
+
+  CPDF_Dictionary* pDRFontDict = pDRDict->GetDictBy("Font");
   if (!pDRFontDict)
     return false;
 
+  CPDF_Dictionary* pFontDict = pDRFontDict->GetDictBy(sFontName.Mid(1));
   if (!pFontDict) {
     pFontDict = new CPDF_Dictionary;
     pFontDict->SetAtName("Type", "Font");
diff --git a/fpdfsdk/formfiller/cba_fontmap.cpp b/fpdfsdk/formfiller/cba_fontmap.cpp
index a816e2c..575f6c3 100644
--- a/fpdfsdk/formfiller/cba_fontmap.cpp
+++ b/fpdfsdk/formfiller/cba_fontmap.cpp
@@ -219,36 +219,29 @@
       sDA = pObj ? pObj->GetString() : CFX_ByteString();
     }
   }
+  if (sDA.IsEmpty())
+    return nullptr;
 
+  CPDF_SimpleParser syntax(sDA.AsStringC());
+  syntax.FindTagParamFromStart("Tf", 2);
+  CFX_ByteString sFontName(syntax.GetWord());
+  sAlias = PDF_NameDecode(sFontName).Mid(1);
   CPDF_Dictionary* pFontDict = nullptr;
 
-  if (!sDA.IsEmpty()) {
-    CPDF_SimpleParser syntax(sDA.AsStringC());
-    syntax.FindTagParamFromStart("Tf", 2);
-    CFX_ByteString sFontName(syntax.GetWord());
-    sAlias = PDF_NameDecode(sFontName).Mid(1);
+  if (CPDF_Dictionary* pAPDict = m_pAnnotDict->GetDictBy("AP")) {
+    if (CPDF_Dictionary* pNormalDict = pAPDict->GetDictBy("N")) {
+      if (CPDF_Dictionary* pNormalResDict =
+              pNormalDict->GetDictBy("Resources")) {
+        if (CPDF_Dictionary* pResFontDict = pNormalResDict->GetDictBy("Font"))
+          pFontDict = pResFontDict->GetDictBy(sAlias);
+      }
+    }
+  }
 
-    if (CPDF_Dictionary* pDRDict = m_pAnnotDict->GetDictBy("DR"))
+  if (bWidget && !pFontDict && pAcroFormDict) {
+    if (CPDF_Dictionary* pDRDict = pAcroFormDict->GetDictBy("DR")) {
       if (CPDF_Dictionary* pDRFontDict = pDRDict->GetDictBy("Font"))
         pFontDict = pDRFontDict->GetDictBy(sAlias);
-
-    if (!pFontDict)
-      if (CPDF_Dictionary* pAPDict = m_pAnnotDict->GetDictBy("AP"))
-        if (CPDF_Dictionary* pNormalDict = pAPDict->GetDictBy("N"))
-          if (CPDF_Dictionary* pNormalResDict =
-                  pNormalDict->GetDictBy("Resources"))
-            if (CPDF_Dictionary* pResFontDict =
-                    pNormalResDict->GetDictBy("Font"))
-              pFontDict = pResFontDict->GetDictBy(sAlias);
-
-    if (bWidget) {
-      if (!pFontDict) {
-        if (pAcroFormDict) {
-          if (CPDF_Dictionary* pDRDict = pAcroFormDict->GetDictBy("DR"))
-            if (CPDF_Dictionary* pDRFontDict = pDRDict->GetDictBy("Font"))
-              pFontDict = pDRFontDict->GetDictBy(sAlias);
-        }
-      }
     }
   }