Encapsulate CPDF_FontEncoding. Put UnicodeFromCharCode() and SetUnicode() to use. Also remove the declaration for a non-existent method. Change-Id: Ia524a05a043e355c9057576c43987f17d9f36413 Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/51970 Reviewed-by: Tom Sepez <tsepez@chromium.org> Commit-Queue: Lei Zhang <thestig@chromium.org>
diff --git a/core/fpdfapi/font/cpdf_fontencoding.h b/core/fpdfapi/font/cpdf_fontencoding.h index 7c3d8c4..1bbd415 100644 --- a/core/fpdfapi/font/cpdf_fontencoding.h +++ b/core/fpdfapi/font/cpdf_fontencoding.h
@@ -41,8 +41,6 @@ CPDF_FontEncoding(); explicit CPDF_FontEncoding(int PredefinedEncoding); - void LoadEncoding(CPDF_Object* pEncoding); - bool IsIdentical(const CPDF_FontEncoding* pAnother) const; wchar_t UnicodeFromCharCode(uint8_t charcode) const { @@ -56,7 +54,7 @@ std::unique_ptr<CPDF_Object> Realize(WeakPtr<ByteStringPool> pPool) const; - public: + private: wchar_t m_Unicodes[kEncodingTableSize]; };
diff --git a/core/fpdfapi/font/cpdf_truetypefont.cpp b/core/fpdfapi/font/cpdf_truetypefont.cpp index d84e857..ec3e05b 100644 --- a/core/fpdfapi/font/cpdf_truetypefont.cpp +++ b/core/fpdfapi/font/cpdf_truetypefont.cpp
@@ -103,7 +103,7 @@ m_pFontFile ? FXFT_Get_Char_Index(m_Font.GetFace(), charcode) : -1; continue; } - m_Encoding.m_Unicodes[charcode] = PDF_UnicodeFromAdobeName(name); + m_Encoding.SetUnicode(charcode, PDF_UnicodeFromAdobeName(name)); if (bMSSymbol) { for (size_t j = 0; j < FX_ArraySize(kPrefix); j++) { uint16_t unicode = kPrefix[j] * 256 + charcode; @@ -112,13 +112,14 @@ if (m_GlyphIndex[charcode]) break; } - } else if (m_Encoding.m_Unicodes[charcode]) { + } else if (m_Encoding.UnicodeFromCharCode(charcode)) { if (bMSUnicode) { m_GlyphIndex[charcode] = FXFT_Get_Char_Index( - m_Font.GetFace(), m_Encoding.m_Unicodes[charcode]); + m_Font.GetFace(), m_Encoding.UnicodeFromCharCode(charcode)); } else if (bMacRoman) { - uint32_t maccode = FT_CharCodeFromUnicode( - FXFT_ENCODING_APPLE_ROMAN, m_Encoding.m_Unicodes[charcode]); + uint32_t maccode = + FT_CharCodeFromUnicode(FXFT_ENCODING_APPLE_ROMAN, + m_Encoding.UnicodeFromCharCode(charcode)); if (!maccode) { m_GlyphIndex[charcode] = FXFT_Get_Name_Index(m_Font.GetFace(), name); @@ -144,7 +145,7 @@ if (!wsUnicode.IsEmpty()) { m_GlyphIndex[charcode] = FXFT_Get_Char_Index(m_Font.GetFace(), wsUnicode[0]); - m_Encoding.m_Unicodes[charcode] = wsUnicode[0]; + m_Encoding.SetUnicode(charcode, wsUnicode[0]); } } return; @@ -167,12 +168,13 @@ const char* name = GetAdobeCharName(baseEncoding, m_CharNames, charcode); if (name) - m_Encoding.m_Unicodes[charcode] = PDF_UnicodeFromAdobeName(name); + m_Encoding.SetUnicode(charcode, PDF_UnicodeFromAdobeName(name)); } } else if (FT_UseTTCharmap(m_Font.GetFace(), 1, 0)) { for (int charcode = 0; charcode < 256; charcode++) { - m_Encoding.m_Unicodes[charcode] = - FT_UnicodeFromCharCode(FXFT_ENCODING_APPLE_ROMAN, charcode); + m_Encoding.SetUnicode( + charcode, + FT_UnicodeFromCharCode(FXFT_ENCODING_APPLE_ROMAN, charcode)); } } return; @@ -182,8 +184,8 @@ bool bFound = false; for (int charcode = 0; charcode < 256; charcode++) { m_GlyphIndex[charcode] = FXFT_Get_Char_Index(m_Font.GetFace(), charcode); - m_Encoding.m_Unicodes[charcode] = - FT_UnicodeFromCharCode(FXFT_ENCODING_APPLE_ROMAN, charcode); + m_Encoding.SetUnicode(charcode, FT_UnicodeFromCharCode( + FXFT_ENCODING_APPLE_ROMAN, charcode)); if (m_GlyphIndex[charcode]) { bFound = true; } @@ -196,16 +198,16 @@ const uint16_t* pUnicodes = PDF_UnicodesForPredefinedCharSet(baseEncoding); for (uint32_t charcode = 0; charcode < 256; charcode++) { if (m_pFontFile) { - m_Encoding.m_Unicodes[charcode] = charcode; + m_Encoding.SetUnicode(charcode, charcode); } else { const char* name = GetAdobeCharName(0, m_CharNames, charcode); if (name) - m_Encoding.m_Unicodes[charcode] = PDF_UnicodeFromAdobeName(name); + m_Encoding.SetUnicode(charcode, PDF_UnicodeFromAdobeName(name)); else if (pUnicodes) - m_Encoding.m_Unicodes[charcode] = pUnicodes[charcode]; + m_Encoding.SetUnicode(charcode, pUnicodes[charcode]); } m_GlyphIndex[charcode] = FXFT_Get_Char_Index( - m_Font.GetFace(), m_Encoding.m_Unicodes[charcode]); + m_Font.GetFace(), m_Encoding.UnicodeFromCharCode(charcode)); if (m_GlyphIndex[charcode]) bFound = true; }
diff --git a/core/fpdfapi/font/cpdf_type1font.cpp b/core/fpdfapi/font/cpdf_type1font.cpp index 231aee3..fa88c75 100644 --- a/core/fpdfapi/font/cpdf_type1font.cpp +++ b/core/fpdfapi/font/cpdf_type1font.cpp
@@ -173,14 +173,14 @@ if (!name) continue; - m_Encoding.m_Unicodes[charcode] = PDF_UnicodeFromAdobeName(name); + m_Encoding.SetUnicode(charcode, PDF_UnicodeFromAdobeName(name)); m_GlyphIndex[charcode] = FXFT_Get_Char_Index( - m_Font.GetFace(), m_Encoding.m_Unicodes[charcode]); + m_Font.GetFace(), m_Encoding.UnicodeFromCharCode(charcode)); #if _FX_PLATFORM_ == _FX_PLATFORM_APPLE_ CalcExtGID(charcode); #endif if (m_GlyphIndex[charcode] == 0 && strcmp(name, ".notdef") == 0) { - m_Encoding.m_Unicodes[charcode] = 0x20; + m_Encoding.SetUnicode(charcode, 0x20); m_GlyphIndex[charcode] = FXFT_Get_Char_Index(m_Font.GetFace(), 0x20); #if _FX_PLATFORM_ == _FX_PLATFORM_APPLE_ CalcExtGID(charcode); @@ -201,7 +201,7 @@ const char* name = GetAdobeCharName(m_BaseEncoding, m_CharNames, charcode); if (name) { - m_Encoding.m_Unicodes[charcode] = PDF_UnicodeFromAdobeName(name); + m_Encoding.SetUnicode(charcode, PDF_UnicodeFromAdobeName(name)); m_GlyphIndex[charcode] = FXFT_Get_Name_Index(m_Font.GetFace(), name); SetExtGID(name, charcode); } else { @@ -220,7 +220,7 @@ if (unicode == 0 && name_glyph[0] != 0) unicode = PDF_UnicodeFromAdobeName(name_glyph); - m_Encoding.m_Unicodes[charcode] = unicode; + m_Encoding.SetUnicode(charcode, unicode); SetExtGID(name_glyph, charcode); } } @@ -235,7 +235,7 @@ if (!name) continue; - m_Encoding.m_Unicodes[charcode] = PDF_UnicodeFromAdobeName(name); + m_Encoding.SetUnicode(charcode, PDF_UnicodeFromAdobeName(name)); const char* pStrUnicode = GlyphNameRemap(name); if (pStrUnicode && FXFT_Get_Name_Index(m_Font.GetFace(), name) == 0) { name = pStrUnicode; @@ -248,10 +248,10 @@ if (strcmp(name, ".notdef") != 0 && strcmp(name, "space") != 0) { m_GlyphIndex[charcode] = FXFT_Get_Char_Index( m_Font.GetFace(), - bUnicode ? m_Encoding.m_Unicodes[charcode] : charcode); + bUnicode ? m_Encoding.UnicodeFromCharCode(charcode) : charcode); CalcExtGID(charcode); } else { - m_Encoding.m_Unicodes[charcode] = 0x20; + m_Encoding.SetUnicode(charcode, 0x20); m_GlyphIndex[charcode] = bUnicode ? FXFT_Get_Char_Index(m_Font.GetFace(), 0x20) : 0xffff; CalcExtGID(charcode); @@ -265,7 +265,7 @@ const char* name = GetAdobeCharName(m_BaseEncoding, m_CharNames, charcode); if (name) { - m_Encoding.m_Unicodes[charcode] = PDF_UnicodeFromAdobeName(name); + m_Encoding.SetUnicode(charcode, PDF_UnicodeFromAdobeName(name)); m_GlyphIndex[charcode] = FXFT_Get_Name_Index(m_Font.GetFace(), name); } else { m_GlyphIndex[charcode] = @@ -282,7 +282,7 @@ if (name_glyph[0] != 0) unicode = PDF_UnicodeFromAdobeName(name_glyph); } - m_Encoding.m_Unicodes[charcode] = unicode; + m_Encoding.SetUnicode(charcode, unicode); } } } @@ -301,7 +301,7 @@ if (!name) continue; - m_Encoding.m_Unicodes[charcode] = PDF_UnicodeFromAdobeName(name); + m_Encoding.SetUnicode(charcode, PDF_UnicodeFromAdobeName(name)); m_GlyphIndex[charcode] = FXFT_Get_Name_Index(m_Font.GetFace(), name); if (m_GlyphIndex[charcode] != 0) continue; @@ -309,9 +309,9 @@ if (strcmp(name, ".notdef") != 0 && strcmp(name, "space") != 0) { m_GlyphIndex[charcode] = FXFT_Get_Char_Index( m_Font.GetFace(), - bUnicode ? m_Encoding.m_Unicodes[charcode] : charcode); + bUnicode ? m_Encoding.UnicodeFromCharCode(charcode) : charcode); } else { - m_Encoding.m_Unicodes[charcode] = 0x20; + m_Encoding.SetUnicode(charcode, 0x20); m_GlyphIndex[charcode] = 0xffff; } }