Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1746)

Unified Diff: core/fpdfapi/fpdf_font/cpdf_simplefont.cpp

Issue 2248463002: Get rid of FX_SMALL_RECT. (Closed) Base URL: https://pdfium.googlesource.com/pdfium@fontclean
Patch Set: nits Created 4 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « core/fpdfapi/fpdf_font/cpdf_simplefont.h ('k') | core/fpdfapi/fpdf_font/font_int.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: core/fpdfapi/fpdf_font/cpdf_simplefont.cpp
diff --git a/core/fpdfapi/fpdf_font/cpdf_simplefont.cpp b/core/fpdfapi/fpdf_font/cpdf_simplefont.cpp
index 65f4a5a235ecb23ef07245711516ccef2469e151..62d6959062ee2b3f353cccc1720326e32e839a52 100644
--- a/core/fpdfapi/fpdf_font/cpdf_simplefont.cpp
+++ b/core/fpdfapi/fpdf_font/cpdf_simplefont.cpp
@@ -15,6 +15,8 @@ CPDF_SimpleFont::CPDF_SimpleFont() : m_BaseEncoding(PDFFONT_ENCODING_BUILTIN) {
FXSYS_memset(m_CharWidth, 0xff, sizeof(m_CharWidth));
FXSYS_memset(m_GlyphIndex, 0xff, sizeof(m_GlyphIndex));
FXSYS_memset(m_ExtGID, 0xff, sizeof(m_ExtGID));
+ for (size_t i = 0; i < FX_ArraySize(m_CharBBox); ++i)
+ m_CharBBox[i] = FX_RECT(-1, -1, -1, -1);
}
CPDF_SimpleFont::~CPDF_SimpleFont() {}
@@ -52,16 +54,15 @@ void CPDF_SimpleFont::LoadCharMetrics(int charcode) {
int err = FXFT_Load_Glyph(
face, glyph_index,
FXFT_LOAD_NO_SCALE | FXFT_LOAD_IGNORE_GLOBAL_ADVANCE_WIDTH);
- if (err) {
+ if (err)
return;
- }
- m_CharBBox[charcode] = FX_SMALL_RECT(
- TT2PDF(FXFT_Get_Glyph_HoriBearingX(face), face),
- TT2PDF(FXFT_Get_Glyph_HoriBearingY(face), face),
- TT2PDF(FXFT_Get_Glyph_HoriBearingX(face) + FXFT_Get_Glyph_Width(face),
- face),
- TT2PDF(FXFT_Get_Glyph_HoriBearingY(face) - FXFT_Get_Glyph_Height(face),
- face));
+
+ int iHoriBearingX = FXFT_Get_Glyph_HoriBearingX(face);
+ int iHoriBearingY = FXFT_Get_Glyph_HoriBearingY(face);
+ m_CharBBox[charcode] =
+ FX_RECT(TT2PDF(iHoriBearingX, face), TT2PDF(iHoriBearingY, face),
+ TT2PDF(iHoriBearingX + FXFT_Get_Glyph_Width(face), face),
+ TT2PDF(iHoriBearingY - FXFT_Get_Glyph_Height(face), face));
if (m_bUseFontWidth) {
int TT_Width = TT2PDF(FXFT_Get_Glyph_HoriAdvance(face), face);
@@ -77,26 +78,26 @@ void CPDF_SimpleFont::LoadCharMetrics(int charcode) {
}
int CPDF_SimpleFont::GetCharWidthF(uint32_t charcode, int level) {
- if (charcode > 0xff) {
+ if (charcode > 0xff)
charcode = 0;
- }
+
if (m_CharWidth[charcode] == 0xffff) {
LoadCharMetrics(charcode);
if (m_CharWidth[charcode] == 0xffff) {
m_CharWidth[charcode] = 0;
}
}
- return (int16_t)m_CharWidth[charcode];
+ return m_CharWidth[charcode];
}
FX_RECT CPDF_SimpleFont::GetCharBBox(uint32_t charcode, int level) {
if (charcode > 0xff)
charcode = 0;
- if (m_CharBBox[charcode].left == FX_SMALL_RECT::kInvalid)
+ if (m_CharBBox[charcode].left == -1)
LoadCharMetrics(charcode);
- return FX_RECT(m_CharBBox[charcode]);
+ return m_CharBBox[charcode];
}
FX_BOOL CPDF_SimpleFont::LoadCommon() {
@@ -105,9 +106,8 @@ FX_BOOL CPDF_SimpleFont::LoadCommon() {
LoadFontDescriptor(pFontDesc);
}
CPDF_Array* pWidthArray = m_pFontDict->GetArrayBy("Widths");
- m_bUseFontWidth = TRUE;
+ m_bUseFontWidth = !pWidthArray;
if (pWidthArray) {
- m_bUseFontWidth = FALSE;
if (pFontDesc && pFontDesc->KeyExist("MissingWidth")) {
int MissingWidth = pFontDesc->GetIntegerBy("MissingWidth");
for (int i = 0; i < 256; i++) {
« no previous file with comments | « core/fpdfapi/fpdf_font/cpdf_simplefont.h ('k') | core/fpdfapi/fpdf_font/font_int.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698