diff options
Diffstat (limited to 'core')
-rw-r--r-- | core/fpdfapi/font/cpdf_cidfont.cpp | 2 | ||||
-rw-r--r-- | core/fpdfapi/render/cpdf_charposlist.cpp | 2 | ||||
-rw-r--r-- | core/fxge/cfx_facecache.cpp | 5 | ||||
-rw-r--r-- | core/fxge/cfx_font.cpp | 12 | ||||
-rw-r--r-- | core/fxge/cfx_fontmapper.cpp | 4 | ||||
-rw-r--r-- | core/fxge/cfx_substfont.cpp | 11 | ||||
-rw-r--r-- | core/fxge/cfx_substfont.h | 12 | ||||
-rw-r--r-- | core/fxge/fx_font.h | 2 |
8 files changed, 31 insertions, 19 deletions
diff --git a/core/fpdfapi/font/cpdf_cidfont.cpp b/core/fpdfapi/font/cpdf_cidfont.cpp index 49413d24f5..611afc0787 100644 --- a/core/fpdfapi/font/cpdf_cidfont.cpp +++ b/core/fpdfapi/font/cpdf_cidfont.cpp @@ -401,7 +401,7 @@ bool CPDF_CIDFont::Load() { if (!IsEmbedded()) LoadSubstFont(); - if (m_pFontFile || (GetSubstFont()->m_SubstFlags & FXFONT_SUBST_EXACT)) { + if (m_pFontFile || GetSubstFont()->m_bFlagExact) { CPDF_Object* pmap = pCIDFontDict->GetDirectObjectFor("CIDToGIDMap"); if (pmap) { if (CPDF_Stream* pStream = pmap->AsStream()) { diff --git a/core/fpdfapi/render/cpdf_charposlist.cpp b/core/fpdfapi/render/cpdf_charposlist.cpp index 16fb3c140c..5739c8af02 100644 --- a/core/fpdfapi/render/cpdf_charposlist.cpp +++ b/core/fpdfapi/render/cpdf_charposlist.cpp @@ -70,7 +70,7 @@ void CPDF_CharPosList::Load(const std::vector<uint32_t>& charCodes, float scalingFactor = 1.0f; if (!pFont->IsEmbedded() && pFont->HasFontWidths() && !bVertWriting && - !(pCurrentFont->GetSubstFont()->m_SubstFlags & FXFONT_SUBST_MM)) { + !pCurrentFont->GetSubstFont()->m_bFlagMM) { int pdfGlyphWidth = pFont->GetCharWidthF(CharCode); int ftGlyphWidth = pCurrentFont ? pCurrentFont->GetGlyphWidth(charpos.m_GlyphIndex) : 0; diff --git a/core/fxge/cfx_facecache.cpp b/core/fxge/cfx_facecache.cpp index 07d7339c2d..a3e58ff29c 100644 --- a/core/fxge/cfx_facecache.cpp +++ b/core/fxge/cfx_facecache.cpp @@ -146,7 +146,7 @@ std::unique_ptr<CFX_GlyphBitmap> CFX_FaceCache::RenderGlyph( else ft_matrix.xy -= ft_matrix.xx * skew / 100; } - if (pSubstFont->m_SubstFlags & FXFONT_SUBST_MM) { + if (pSubstFont->m_bFlagMM) { pFont->AdjustMMParams(glyph_index, dest_width, pFont->GetSubstFont()->m_Weight); } @@ -172,8 +172,7 @@ std::unique_ptr<CFX_GlyphBitmap> CFX_FaceCache::RenderGlyph( weight = pSubstFont->m_WeightCJK; else weight = pSubstFont ? pSubstFont->m_Weight : 0; - if (pSubstFont && !(pSubstFont->m_SubstFlags & FXFONT_SUBST_MM) && - weight > 400) { + if (pSubstFont && !pSubstFont->m_bFlagMM && weight > 400) { uint32_t index = (weight - 400) / 10; if (index >= CFX_Font::kWeightPowArraySize) return nullptr; diff --git a/core/fxge/cfx_font.cpp b/core/fxge/cfx_font.cpp index e893c13357..11fa45710d 100644 --- a/core/fxge/cfx_font.cpp +++ b/core/fxge/cfx_font.cpp @@ -233,7 +233,11 @@ bool CFX_Font::LoadClone(const CFX_Font* pFont) { if (pFont->m_pSubstFont) { m_pSubstFont = pdfium::MakeUnique<CFX_SubstFont>(); m_pSubstFont->m_Charset = pFont->m_pSubstFont->m_Charset; - m_pSubstFont->m_SubstFlags = pFont->m_pSubstFont->m_SubstFlags; + m_pSubstFont->m_bFlagMM = pFont->m_pSubstFont->m_bFlagMM; + m_pSubstFont->m_bFlagExact = pFont->m_pSubstFont->m_bFlagExact; +#ifdef PDF_ENABLE_XFA + m_pSubstFont->m_bFlagItalic = pFont->m_pSubstFont->m_bFlagItalic; +#endif // PDF_ENABLE_XFA m_pSubstFont->m_Weight = pFont->m_pSubstFont->m_Weight; m_pSubstFont->m_Family = pFont->m_pSubstFont->m_Family; m_pSubstFont->m_ItalicAngle = pFont->m_pSubstFont->m_ItalicAngle; @@ -331,7 +335,7 @@ bool CFX_Font::LoadFile(const RetainPtr<IFX_SeekableReadStream>& pFile, int CFX_Font::GetGlyphWidth(uint32_t glyph_index) { if (!m_Face) return 0; - if (m_pSubstFont && (m_pSubstFont->m_SubstFlags & FXFONT_SUBST_MM)) + if (m_pSubstFont && m_pSubstFont->m_bFlagMM) AdjustMMParams(glyph_index, 0, 0); int err = FXFT_Load_Glyph( m_Face, glyph_index, @@ -590,7 +594,7 @@ CFX_PathData* CFX_Font::LoadGlyphPathImpl(uint32_t glyph_index, else ft_matrix.xy -= ft_matrix.xx * skew / 100; } - if (m_pSubstFont->m_SubstFlags & FXFONT_SUBST_MM) + if (m_pSubstFont->m_bFlagMM) AdjustMMParams(glyph_index, dest_width, m_pSubstFont->m_Weight); } ScopedFontTransform scoped_transform(m_Face, &ft_matrix); @@ -599,7 +603,7 @@ CFX_PathData* CFX_Font::LoadGlyphPathImpl(uint32_t glyph_index, load_flags |= FT_LOAD_NO_HINTING; if (FXFT_Load_Glyph(m_Face, glyph_index, load_flags)) return nullptr; - if (m_pSubstFont && !(m_pSubstFont->m_SubstFlags & FXFONT_SUBST_MM) && + if (m_pSubstFont && !m_pSubstFont->m_bFlagMM && m_pSubstFont->m_Weight > 400) { uint32_t index = (m_pSubstFont->m_Weight - 400) / 10; index = std::min(index, static_cast<uint32_t>(kWeightPowArraySize - 1)); diff --git a/core/fxge/cfx_fontmapper.cpp b/core/fxge/cfx_fontmapper.cpp index ac840ea168..e7d27af573 100644 --- a/core/fxge/cfx_fontmapper.cpp +++ b/core/fxge/cfx_fontmapper.cpp @@ -391,7 +391,7 @@ FXFT_Face CFX_FontMapper::UseInternalSubst(CFX_SubstFont* pSubstFont, return m_FoxitFaces[iBaseFont]; } } - pSubstFont->m_SubstFlags |= FXFONT_SUBST_MM; + pSubstFont->m_bFlagMM = true; pSubstFont->m_ItalicAngle = italic_angle; if (weight) pSubstFont->m_Weight = weight; @@ -626,7 +626,7 @@ FXFT_Face CFX_FontMapper::FindSubstFont(const ByteString& name, void* hFont = m_pFontInfo->MapFont(weight, bItalic, Charset, PitchFamily, family.c_str(), iExact); if (iExact) - pSubstFont->m_SubstFlags |= FXFONT_SUBST_EXACT; + pSubstFont->m_bFlagExact = true; if (!hFont) { #ifdef PDF_ENABLE_XFA if (flags & FXFONT_EXACTMATCH) diff --git a/core/fxge/cfx_substfont.cpp b/core/fxge/cfx_substfont.cpp index 27d3bc3059..9058ab3d3c 100644 --- a/core/fxge/cfx_substfont.cpp +++ b/core/fxge/cfx_substfont.cpp @@ -11,9 +11,14 @@ CFX_SubstFont::CFX_SubstFont() : m_Charset(FX_CHARSET_ANSI), - m_SubstFlags(0), m_Weight(0), m_ItalicAngle(0), - m_bSubstCJK(false), m_WeightCJK(0), - m_bItalicCJK(false) {} + m_bSubstCJK(false), + m_bItalicCJK(false), +#ifdef PDF_ENABLE_XFA + m_bFlagItalic(false), +#endif // PDF_ENABLE_XFA + m_bFlagMM(false), + m_bFlagExact(false) { +} diff --git a/core/fxge/cfx_substfont.h b/core/fxge/cfx_substfont.h index 5225bd38f3..2076a09093 100644 --- a/core/fxge/cfx_substfont.h +++ b/core/fxge/cfx_substfont.h @@ -9,21 +9,23 @@ #include "core/fxcrt/fx_string.h" -#define FXFONT_SUBST_MM 0x01 -#define FXFONT_SUBST_EXACT 0x40 - class CFX_SubstFont { public: CFX_SubstFont(); ByteString m_Family; int m_Charset; - uint32_t m_SubstFlags; int m_Weight; int m_ItalicAngle; - bool m_bSubstCJK; int m_WeightCJK; + bool m_bSubstCJK; bool m_bItalicCJK; + +#ifdef PDF_ENABLE_XFA + bool m_bFlagItalic; +#endif // PDF_ENABLE_XFA + bool m_bFlagMM; + bool m_bFlagExact; }; #endif // CORE_FXGE_CFX_SUBSTFONT_H_ diff --git a/core/fxge/fx_font.h b/core/fxge/fx_font.h index 0271b78a22..8f559829b6 100644 --- a/core/fxge/fx_font.h +++ b/core/fxge/fx_font.h @@ -34,6 +34,7 @@ using CFX_TypeFace = SkTypeface; #define FXFONT_FW_BOLD 700 /* Font styles as defined in PDF 1.7 Table 5.20 */ +#define FXFONT_NORMAL (0) #define FXFONT_FIXED_PITCH (1 << 0) #define FXFONT_SERIF (1 << 1) #define FXFONT_SYMBOLIC (1 << 2) @@ -43,6 +44,7 @@ using CFX_TypeFace = SkTypeface; #define FXFONT_ALLCAP (1 << 16) #define FXFONT_SMALLCAP (1 << 17) #define FXFONT_BOLD (1 << 18) +#define FXFONT_BOLD_ITALIC (FXFONT_BOLD | FXFONT_ITALIC) /* Other font flags */ #define FXFONT_USEEXTERNATTR 0x80000 |