Encapsulate font stream code inside CFX_Face
Instead of directly calling FreeType code on the handle returned by
CFX_Face::GetRec(), add CFX_Face::GetStream() for reading the font data.
Bug: pdfium:2037
Change-Id: I0424fc52550ca81019386241d6704b03b5926edf
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/107492
Reviewed-by: Dominik Röttsches <drott@chromium.org>
Commit-Queue: Lei Zhang <thestig@chromium.org>
diff --git a/core/fxge/cfx_face.cpp b/core/fxge/cfx_face.cpp
index c05fd88..7571832 100644
--- a/core/fxge/cfx_face.cpp
+++ b/core/fxge/cfx_face.cpp
@@ -70,6 +70,10 @@
return !!(GetRec()->style_flags & FT_STYLE_FLAG_BOLD);
}
+pdfium::span<uint8_t> CFX_Face::GetData() const {
+ return {GetRec()->stream->base, GetRec()->stream->size};
+}
+
CFX_Face::CFX_Face(FXFT_FaceRec* rec, RetainPtr<Retainable> pDesc)
: m_pRec(rec), m_pDesc(std::move(pDesc)) {
DCHECK(m_pRec);
diff --git a/core/fxge/cfx_face.h b/core/fxge/cfx_face.h
index 9880ef7..0c3067d 100644
--- a/core/fxge/cfx_face.h
+++ b/core/fxge/cfx_face.h
@@ -34,6 +34,8 @@
bool IsItalic() const;
bool IsBold() const;
+ pdfium::span<uint8_t> GetData() const;
+
FXFT_FaceRec* GetRec() { return m_pRec.get(); }
const FXFT_FaceRec* GetRec() const { return m_pRec.get(); }
diff --git a/core/fxge/cfx_font.cpp b/core/fxge/cfx_font.cpp
index 8eb8f54..c150e9b 100644
--- a/core/fxge/cfx_font.cpp
+++ b/core/fxge/cfx_font.cpp
@@ -382,8 +382,7 @@
face_name, bTrueType, flags, weight, italic_angle, code_page,
m_pSubstFont.get());
if (m_Face) {
- m_FontData = {FXFT_Get_Face_Stream_Base(m_Face->GetRec()),
- FXFT_Get_Face_Stream_Size(m_Face->GetRec())};
+ m_FontData = m_Face->GetData();
}
}
diff --git a/core/fxge/freetype/fx_freetype.h b/core/fxge/freetype/fx_freetype.h
index 618843f..0304eb9 100644
--- a/core/fxge/freetype/fx_freetype.h
+++ b/core/fxge/freetype/fx_freetype.h
@@ -58,8 +58,6 @@
#define FXFT_Render_Glyph(face, mode) \
FT_Render_Glyph((face)->glyph, static_cast<enum FT_Render_Mode_>(mode))
-#define FXFT_Get_Face_Stream_Base(face) (face)->stream->base
-#define FXFT_Get_Face_Stream_Size(face) (face)->stream->size
#define FXFT_Get_Face_Family_Name(face) (face)->family_name
#define FXFT_Get_Face_Style_Name(face) (face)->style_name
#define FXFT_Get_Glyph_HoriBearingX(face) (face)->glyph->metrics.horiBearingX