Clean up CPDF_FontEncoding.
- Merge ctors.
- Make GetEncoding() return a const pointer.
- Give a couple of instantiations static duration.
Change-Id: Ic7149071d00e692bbd715e5a23951123a0f24c63
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/59110
Reviewed-by: Tom Sepez <tsepez@chromium.org>
Commit-Queue: Lei Zhang <thestig@chromium.org>
diff --git a/core/fpdfapi/edit/cpdf_pagecontentgenerator.cpp b/core/fpdfapi/edit/cpdf_pagecontentgenerator.cpp
index 6743137..c804c05 100644
--- a/core/fpdfapi/edit/cpdf_pagecontentgenerator.cpp
+++ b/core/fpdfapi/edit/cpdf_pagecontentgenerator.cpp
@@ -499,7 +499,7 @@
pFont = CPDF_Font::GetStockFont(m_pDocument.Get(), "Helvetica");
FontData data;
- CPDF_FontEncoding* pEncoding = nullptr;
+ const CPDF_FontEncoding* pEncoding = nullptr;
if (pFont->IsType1Font()) {
data.type = "Type1";
pEncoding = pFont->AsType1Font()->GetEncoding();
diff --git a/core/fpdfapi/font/cpdf_fontencoding.cpp b/core/fpdfapi/font/cpdf_fontencoding.cpp
index f1f7d06..a4e687e 100644
--- a/core/fpdfapi/font/cpdf_fontencoding.cpp
+++ b/core/fpdfapi/font/cpdf_fontencoding.cpp
@@ -1655,10 +1655,6 @@
} // namespace
-CPDF_FontEncoding::CPDF_FontEncoding() {
- memset(m_Unicodes, 0, sizeof(m_Unicodes));
-}
-
int CPDF_FontEncoding::CharCodeFromUnicode(wchar_t unicode) const {
for (size_t i = 0; i < FX_ArraySize(m_Unicodes); i++) {
if (m_Unicodes[i] == unicode)
@@ -1669,11 +1665,11 @@
CPDF_FontEncoding::CPDF_FontEncoding(int PredefinedEncoding) {
const uint16_t* pSrc = PDF_UnicodesForPredefinedCharSet(PredefinedEncoding);
- if (!pSrc) {
- memset(m_Unicodes, 0, sizeof(m_Unicodes));
- } else {
+ if (pSrc) {
for (size_t i = 0; i < FX_ArraySize(m_Unicodes); i++)
m_Unicodes[i] = pSrc[i];
+ } else {
+ memset(m_Unicodes, 0, sizeof(m_Unicodes));
}
}
diff --git a/core/fpdfapi/font/cpdf_fontencoding.h b/core/fpdfapi/font/cpdf_fontencoding.h
index 56904c9..1bfb0d5 100644
--- a/core/fpdfapi/font/cpdf_fontencoding.h
+++ b/core/fpdfapi/font/cpdf_fontencoding.h
@@ -35,7 +35,6 @@
public:
static constexpr size_t kEncodingTableSize = 256;
- CPDF_FontEncoding();
explicit CPDF_FontEncoding(int PredefinedEncoding);
bool IsIdentical(const CPDF_FontEncoding* pAnother) const;
diff --git a/core/fpdfapi/font/cpdf_simplefont.h b/core/fpdfapi/font/cpdf_simplefont.h
index 8c909ab..11359c3 100644
--- a/core/fpdfapi/font/cpdf_simplefont.h
+++ b/core/fpdfapi/font/cpdf_simplefont.h
@@ -26,7 +26,7 @@
WideString UnicodeFromCharCode(uint32_t charcode) const override;
uint32_t CharCodeFromUnicode(wchar_t Unicode) const override;
- CPDF_FontEncoding* GetEncoding() { return &m_Encoding; }
+ const CPDF_FontEncoding* GetEncoding() const { return &m_Encoding; }
bool HasFontWidths() const override;
@@ -40,7 +40,7 @@
void LoadCharMetrics(int charcode);
void LoadPDFEncoding(bool bEmbedded, bool bTrueType);
- CPDF_FontEncoding m_Encoding;
+ CPDF_FontEncoding m_Encoding{PDFFONT_ENCODING_BUILTIN};
int m_BaseEncoding = PDFFONT_ENCODING_BUILTIN;
bool m_bUseFontWidth;
std::vector<ByteString> m_CharNames;
diff --git a/core/fpdfdoc/cba_fontmap.cpp b/core/fpdfdoc/cba_fontmap.cpp
index 141c832..e2f935c 100644
--- a/core/fpdfdoc/cba_fontmap.cpp
+++ b/core/fpdfdoc/cba_fontmap.cpp
@@ -496,7 +496,7 @@
if (sFontName == "ZapfDingbats")
return pPageData->AddStandardFont(sFontName.c_str(), nullptr);
- CPDF_FontEncoding fe(PDFFONT_ENCODING_WINANSI);
+ static const CPDF_FontEncoding fe(PDFFONT_ENCODING_WINANSI);
return pPageData->AddStandardFont(sFontName.c_str(), &fe);
}
diff --git a/core/fpdfdoc/cpdf_interactiveform.cpp b/core/fpdfdoc/cpdf_interactiveform.cpp
index 2883503..937e836 100644
--- a/core/fpdfdoc/cpdf_interactiveform.cpp
+++ b/core/fpdfdoc/cpdf_interactiveform.cpp
@@ -624,7 +624,7 @@
if (csFontName == "ZapfDingbats")
return pPageData->AddStandardFont(csFontName.c_str(), nullptr);
- CPDF_FontEncoding encoding(PDFFONT_ENCODING_WINANSI);
+ static const CPDF_FontEncoding encoding(PDFFONT_ENCODING_WINANSI);
return pPageData->AddStandardFont(csFontName.c_str(), &encoding);
}