Remove some FreeType support macros.
It is oftentimes easier to just access a given FreeType struct field
directly.
Change-Id: I1e6c081b28f59aad298ff9d32c0cde2b9e813429
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/91791
Reviewed-by: Nigi <nigi@chromium.org>
Commit-Queue: Lei Zhang <thestig@chromium.org>
diff --git a/core/fpdfapi/font/cpdf_cidfont.cpp b/core/fpdfapi/font/cpdf_cidfont.cpp
index bda3b35..b460d57 100644
--- a/core/fpdfapi/font/cpdf_cidfont.cpp
+++ b/core/fpdfapi/font/cpdf_cidfont.cpp
@@ -213,8 +213,8 @@
int err = FXFT_Select_Charmap(face, encoding);
if (err)
err = FXFT_Select_Charmap(face, FT_ENCODING_UNICODE);
- if (err && FXFT_Get_Face_Charmaps(face))
- FT_Set_Charmap(face, *FXFT_Get_Face_Charmaps(face));
+ if (err && face->charmaps)
+ FT_Set_Charmap(face, face->charmaps[0]);
}
bool IsMetricForCID(const int* pEntry, uint16_t cid) {
@@ -758,22 +758,22 @@
int err = FXFT_Select_Charmap(face, FT_ENCODING_UNICODE);
if (err) {
int i;
- for (i = 0; i < FXFT_Get_Face_CharmapCount(face); i++) {
- uint32_t ret = FT_CharCodeFromUnicode(
- FXFT_Get_Charmap_Encoding(FXFT_Get_Face_Charmaps(face)[i]),
- static_cast<wchar_t>(charcode));
+ for (i = 0; i < face->num_charmaps; i++) {
+ uint32_t ret =
+ FT_CharCodeFromUnicode(FXFT_Get_Charmap_Encoding(face->charmaps[i]),
+ static_cast<wchar_t>(charcode));
if (ret == 0)
continue;
- FT_Set_Charmap(face, FXFT_Get_Face_Charmaps(face)[i]);
+ FT_Set_Charmap(face, face->charmaps[i]);
unicode = static_cast<wchar_t>(ret);
break;
}
- if (i == FXFT_Get_Face_CharmapCount(face) && i) {
- FT_Set_Charmap(face, FXFT_Get_Face_Charmaps(face)[0]);
+ if (i == face->num_charmaps && i) {
+ FT_Set_Charmap(face, face->charmaps[0]);
unicode = static_cast<wchar_t>(charcode);
}
}
- if (FXFT_Get_Face_Charmap(face)) {
+ if (face->charmap) {
int index = GetGlyphIndex(unicode, pVertGlyph);
return index != 0 ? index : -1;
}
@@ -789,12 +789,12 @@
return cid;
if (m_pFontFile && m_pCMap->IsDirectCharcodeToCIDTableIsEmpty())
return cid;
- if (m_pCMap->GetCoding() == CIDCoding::kUNKNOWN ||
- !FXFT_Get_Face_Charmap(m_Font.GetFaceRec())) {
+
+ FT_CharMap charmap = m_Font.GetFaceRec()->charmap;
+ if (!charmap || m_pCMap->GetCoding() == CIDCoding::kUNKNOWN)
return cid;
- }
- if (FXFT_Get_Charmap_Encoding(FXFT_Get_Face_Charmap(m_Font.GetFaceRec())) ==
- FT_ENCODING_UNICODE) {
+
+ if (FXFT_Get_Charmap_Encoding(charmap) == FT_ENCODING_UNICODE) {
WideString unicode_str = UnicodeFromCharCode(charcode);
if (unicode_str.IsEmpty())
return -1;
diff --git a/core/fpdfapi/font/cpdf_font.cpp b/core/fpdfapi/font/cpdf_font.cpp
index 69db9fa..905f12e 100644
--- a/core/fpdfapi/font/cpdf_font.cpp
+++ b/core/fpdfapi/font/cpdf_font.cpp
@@ -415,11 +415,10 @@
bool CPDF_Font::FT_UseTTCharmap(FXFT_FaceRec* face,
int platform_id,
int encoding_id) {
- auto** pCharMap = FXFT_Get_Face_Charmaps(face);
- for (int i = 0; i < FXFT_Get_Face_CharmapCount(face); i++) {
- if (FXFT_Get_Charmap_PlatformID(pCharMap[i]) == platform_id &&
- FXFT_Get_Charmap_EncodingID(pCharMap[i]) == encoding_id) {
- FT_Set_Charmap(face, pCharMap[i]);
+ for (int i = 0; i < face->num_charmaps; i++) {
+ if (FXFT_Get_Charmap_PlatformID(face->charmaps[i]) == platform_id &&
+ FXFT_Get_Charmap_EncodingID(face->charmaps[i]) == encoding_id) {
+ FT_Set_Charmap(face, face->charmaps[i]);
return true;
}
}
diff --git a/core/fpdfapi/font/cpdf_truetypefont.cpp b/core/fpdfapi/font/cpdf_truetypefont.cpp
index 1037051..ebbb92c 100644
--- a/core/fpdfapi/font/cpdf_truetypefont.cpp
+++ b/core/fpdfapi/font/cpdf_truetypefont.cpp
@@ -50,9 +50,8 @@
FontStyleIsSymbolic(m_Flags)) {
bool bSupportWin = false;
bool bSupportMac = false;
- for (int i = 0; i < FXFT_Get_Face_CharmapCount(face); i++) {
- int platform_id =
- FXFT_Get_Charmap_PlatformID(FXFT_Get_Face_Charmaps(face)[i]);
+ for (int i = 0; i < face->num_charmaps; i++) {
+ int platform_id = FXFT_Get_Charmap_PlatformID(face->charmaps[i]);
if (platform_id == 0 || platform_id == 3) {
bSupportWin = true;
} else if (platform_id == 0 || platform_id == 1) {
diff --git a/core/fpdfapi/font/cpdf_type1font.cpp b/core/fpdfapi/font/cpdf_type1font.cpp
index 390cd8a..a7fd61c 100644
--- a/core/fpdfapi/font/cpdf_type1font.cpp
+++ b/core/fpdfapi/font/cpdf_type1font.cpp
@@ -47,20 +47,16 @@
#endif // BUILDFLAG(IS_APPLE)
bool FT_UseType1Charmap(FXFT_FaceRec* face) {
- if (FXFT_Get_Face_CharmapCount(face) == 0) {
+ if (face->num_charmaps == 0)
return false;
- }
- if (FXFT_Get_Face_CharmapCount(face) == 1 &&
- FXFT_Get_Charmap_Encoding(FXFT_Get_Face_Charmaps(face)[0]) ==
- FT_ENCODING_UNICODE) {
+
+ bool is_first_charmap_unicode =
+ FXFT_Get_Charmap_Encoding(face->charmaps[0]) == FT_ENCODING_UNICODE;
+ if (face->num_charmaps == 1 && is_first_charmap_unicode)
return false;
- }
- if (FXFT_Get_Charmap_Encoding(FXFT_Get_Face_Charmaps(face)[0]) ==
- FT_ENCODING_UNICODE) {
- FT_Set_Charmap(face, FXFT_Get_Face_Charmaps(face)[1]);
- } else {
- FT_Set_Charmap(face, FXFT_Get_Face_Charmaps(face)[0]);
- }
+
+ int index = is_first_charmap_unicode ? 1 : 0;
+ FT_Set_Charmap(face, face->charmaps[index]);
return true;
}
diff --git a/core/fxge/cfx_unicodeencodingex.cpp b/core/fxge/cfx_unicodeencodingex.cpp
index be0ff51..de8a628 100644
--- a/core/fxge/cfx_unicodeencodingex.cpp
+++ b/core/fxge/cfx_unicodeencodingex.cpp
@@ -61,11 +61,9 @@
FT_UInt nIndex = FT_Get_Char_Index(face, charcode);
if (nIndex > 0)
return nIndex;
- int nmaps = FXFT_Get_Face_CharmapCount(face);
int m = 0;
- while (m < nmaps) {
- uint32_t nEncodingID =
- FXFT_Get_Charmap_Encoding(FXFT_Get_Face_Charmaps(face)[m++]);
+ while (m < face->num_charmaps) {
+ uint32_t nEncodingID = FXFT_Get_Charmap_Encoding(face->charmaps[m++]);
if (m_nEncodingID == nEncodingID)
continue;
int error = FXFT_Select_Charmap(face, nEncodingID);
@@ -87,10 +85,8 @@
return Unicode;
}
FXFT_FaceRec* face = m_pFont->GetFaceRec();
- int nmaps = FXFT_Get_Face_CharmapCount(face);
- for (int i = 0; i < nmaps; i++) {
- int nEncodingID =
- FXFT_Get_Charmap_Encoding(FXFT_Get_Face_Charmaps(face)[i]);
+ for (int i = 0; i < face->num_charmaps; i++) {
+ int nEncodingID = FXFT_Get_Charmap_Encoding(face->charmaps[i]);
if (nEncodingID == kEncodingExUnicode || nEncodingID == kEncodingExSymbol) {
return Unicode;
}
diff --git a/core/fxge/fx_freetype.h b/core/fxge/fx_freetype.h
index 40f849a..cc69c76 100644
--- a/core/fxge/fx_freetype.h
+++ b/core/fxge/fx_freetype.h
@@ -57,14 +57,11 @@
#define FXFT_Get_Face_Style_Name(face) (face)->style_name
#define FXFT_Is_Face_Italic(face) (((face)->style_flags) & FT_STYLE_FLAG_ITALIC)
#define FXFT_Is_Face_Bold(face) (((face)->style_flags) & FT_STYLE_FLAG_BOLD)
-#define FXFT_Get_Face_Charmaps(face) (face)->charmaps
#define FXFT_Get_Glyph_HoriBearingX(face) (face)->glyph->metrics.horiBearingX
#define FXFT_Get_Glyph_HoriBearingY(face) (face)->glyph->metrics.horiBearingY
#define FXFT_Get_Glyph_Width(face) (face)->glyph->metrics.width
#define FXFT_Get_Glyph_Height(face) (face)->glyph->metrics.height
-#define FXFT_Get_Face_CharmapCount(face) (face)->num_charmaps
#define FXFT_Get_Charmap_Encoding(charmap) (charmap)->encoding
-#define FXFT_Get_Face_Charmap(face) (face)->charmap
#define FXFT_Get_Charmap_PlatformID(charmap) (charmap)->platform_id
#define FXFT_Get_Charmap_EncodingID(charmap) (charmap)->encoding_id
#define FXFT_Get_Face_UnitsPerEM(face) (face)->units_per_EM
diff --git a/xfa/fgas/font/cfgas_fontmgr.cpp b/xfa/fgas/font/cfgas_fontmgr.cpp
index 2184830..069cf65 100644
--- a/xfa/fgas/font/cfgas_fontmgr.cpp
+++ b/xfa/fgas/font/cfgas_fontmgr.cpp
@@ -37,7 +37,7 @@
return false;
FXFT_FaceRec* pFaceRec = pFace->GetRec();
- FT_CharMap charmap = FXFT_Get_Face_Charmap(pFaceRec);
+ FT_CharMap charmap = pFaceRec->charmap;
if (FXFT_Select_Charmap(pFaceRec, FT_ENCODING_UNICODE) != 0)
return false;