Fix a couple of CPDF_DefaultAppearance::GetFont usages Bug: 853238 Change-Id: I133be340fd877e9acd2733845d454924dc86d295 Reviewed-on: https://pdfium-review.googlesource.com/35711 Reviewed-by: Henrique Nakashima <hnakashima@chromium.org> Commit-Queue: Nicolás Peña Moreno <npm@chromium.org>
diff --git a/core/fpdfdoc/cpvt_generateap.cpp b/core/fpdfdoc/cpvt_generateap.cpp index a582feb..28598c1 100644 --- a/core/fpdfdoc/cpvt_generateap.cpp +++ b/core/fpdfdoc/cpvt_generateap.cpp
@@ -929,10 +929,7 @@ if (!font) return; - ByteString sFontName = PDF_NameDecode(font->AsStringView()); - if (sFontName.IsEmpty()) - return; - + ByteString font_name = *font; CFX_Color crText = CFX_Color::ParseColor(DA); CPDF_Dictionary* pDRDict = pFormDict->GetDictFor("DR"); if (!pDRDict) @@ -942,16 +939,14 @@ if (!pDRFontDict) return; - CPDF_Dictionary* pFontDict = - pDRFontDict->GetDictFor(sFontName.Right(sFontName.GetLength() - 1)); + CPDF_Dictionary* pFontDict = pDRFontDict->GetDictFor(font_name); if (!pFontDict) { pFontDict = pDoc->NewIndirect<CPDF_Dictionary>(); pFontDict->SetNewFor<CPDF_Name>("Type", "Font"); pFontDict->SetNewFor<CPDF_Name>("Subtype", "Type1"); pFontDict->SetNewFor<CPDF_Name>("BaseFont", CFX_Font::kDefaultAnsiFontName); pFontDict->SetNewFor<CPDF_Name>("Encoding", "WinAnsiEncoding"); - pDRFontDict->SetFor(sFontName.Right(sFontName.GetLength() - 1), - pFontDict->MakeReference(pDoc)); + pDRFontDict->SetFor(font_name, pFontDict->MakeReference(pDoc)); } CPDF_Font* pDefFont = pDoc->LoadFont(pFontDict); if (!pDefFont) @@ -1071,8 +1066,8 @@ CPDF_Dictionary* pStreamResFontList = pStreamResList->GetDictFor("Font"); if (!pStreamResFontList) pStreamResFontList = pStreamResList->SetNewFor<CPDF_Dictionary>("Font"); - if (!pStreamResFontList->KeyExist(sFontName)) { - pStreamResFontList->SetFor(sFontName, pFontDict->MakeReference(pDoc)); + if (!pStreamResFontList->KeyExist(font_name)) { + pStreamResFontList->SetFor(font_name, pFontDict->MakeReference(pDoc)); } } else { pStreamDict->SetFor("Resources", pFormDict->GetDictFor("DR")->Clone()); @@ -1097,7 +1092,7 @@ : 0; CPVT_FontMap map( pDoc, pStreamDict ? pStreamDict->GetDictFor("Resources") : nullptr, - pDefFont, sFontName.Right(sFontName.GetLength() - 1)); + pDefFont, font_name); CPDF_VariableText::Provider prd(&map); CPDF_VariableText vt; vt.SetProvider(&prd); @@ -1158,7 +1153,7 @@ : WideString(); CPVT_FontMap map( pDoc, pStreamDict ? pStreamDict->GetDictFor("Resources") : nullptr, - pDefFont, sFontName.Right(sFontName.GetLength() - 1)); + pDefFont, font_name); CPDF_VariableText::Provider prd(&map); CPDF_VariableText vt; vt.SetProvider(&prd); @@ -1226,7 +1221,7 @@ case CPVT_GenerateAP::kListBox: { CPVT_FontMap map( pDoc, pStreamDict ? pStreamDict->GetDictFor("Resources") : nullptr, - pDefFont, sFontName.Right(sFontName.GetLength() - 1)); + pDefFont, font_name); CPDF_VariableText::Provider prd(&map); CPDF_Array* pOpts = ToArray(FPDF_GetFieldAttr(pAnnotDict, "Opt")); CPDF_Array* pSels = ToArray(FPDF_GetFieldAttr(pAnnotDict, "I")); @@ -1318,8 +1313,8 @@ pStreamResFontList = pStreamResList->SetNewFor<CPDF_Dictionary>("Font"); } - if (!pStreamResFontList->KeyExist(sFontName)) { - pStreamResFontList->SetFor(sFontName, pFontDict->MakeReference(pDoc)); + if (!pStreamResFontList->KeyExist(font_name)) { + pStreamResFontList->SetFor(font_name, pFontDict->MakeReference(pDoc)); } } else { pStreamDict->SetFor("Resources", pFormDict->GetDictFor("DR")->Clone());
diff --git a/fpdfsdk/formfiller/cba_fontmap.cpp b/fpdfsdk/formfiller/cba_fontmap.cpp index d8d7dff..08a3021 100644 --- a/fpdfsdk/formfiller/cba_fontmap.cpp +++ b/fpdfsdk/formfiller/cba_fontmap.cpp
@@ -218,12 +218,7 @@ CPDF_DefaultAppearance appearance(sDA); float font_size; Optional<ByteString> font = appearance.GetFont(&font_size); - if (font) { - ByteString sDecodedFontName = PDF_NameDecode(font->AsStringView()); - *sAlias = sDecodedFontName.Right(sDecodedFontName.GetLength() - 1); - } else { - *sAlias = ByteString(); - } + *sAlias = font.value_or(ByteString()); CPDF_Dictionary* pFontDict = nullptr; if (CPDF_Dictionary* pAPDict = m_pAnnotDict->GetDictFor("AP")) {