diff options
Diffstat (limited to 'core')
-rw-r--r-- | core/fxge/android/cfpf_skiafont.cpp | 25 | ||||
-rw-r--r-- | core/fxge/android/cfpf_skiafont.h | 14 | ||||
-rw-r--r-- | core/fxge/android/cfpf_skiafontdescriptor.cpp | 32 | ||||
-rw-r--r-- | core/fxge/android/cfpf_skiafontdescriptor.h | 30 | ||||
-rw-r--r-- | core/fxge/android/cfpf_skiafontmgr.cpp | 68 | ||||
-rw-r--r-- | core/fxge/android/cfpf_skiafontmgr.h | 6 | ||||
-rw-r--r-- | core/fxge/android/cfpf_skiapathfont.cpp | 15 | ||||
-rw-r--r-- | core/fxge/android/cfpf_skiapathfont.h | 20 |
8 files changed, 68 insertions, 142 deletions
diff --git a/core/fxge/android/cfpf_skiafont.cpp b/core/fxge/android/cfpf_skiafont.cpp index 6431f14c57..24984e8d9f 100644 --- a/core/fxge/android/cfpf_skiafont.cpp +++ b/core/fxge/android/cfpf_skiafont.cpp @@ -9,20 +9,13 @@ #include <algorithm> #include "core/fxcrt/fx_system.h" -#include "core/fxge/android/cfpf_skiafontdescriptor.h" #include "core/fxge/android/cfpf_skiafontmgr.h" #include "core/fxge/android/cfpf_skiapathfont.h" #include "core/fxge/fx_freetype.h" #define FPF_EM_ADJUST(em, a) (em == 0 ? (a) : (a)*1000 / em) -CFPF_SkiaFont::CFPF_SkiaFont() - : m_pFontMgr(nullptr), - m_pFontDes(nullptr), - m_Face(nullptr), - m_dwStyle(0), - m_uCharset(0), - m_dwRefCount(0) {} +CFPF_SkiaFont::CFPF_SkiaFont() = default; CFPF_SkiaFont::~CFPF_SkiaFont() { if (m_Face) @@ -178,29 +171,21 @@ uint32_t CFPF_SkiaFont::GetFontData(uint32_t dwTable, } bool CFPF_SkiaFont::InitFont(CFPF_SkiaFontMgr* pFontMgr, - CFPF_SkiaFontDescriptor* pFontDes, + CFPF_SkiaPathFont* pFont, const ByteStringView& bsFamily, uint32_t dwStyle, uint8_t uCharset) { - if (!pFontMgr || !pFontDes) + if (!pFontMgr || !pFont) return false; - switch (pFontDes->GetType()) { - case FPF_SKIAFONTTYPE_Path: { - CFPF_SkiaPathFont* pFont = (CFPF_SkiaPathFont*)pFontDes; - m_Face = pFontMgr->GetFontFace(pFont->m_pPath, pFont->m_iFaceIndex); - break; - } - default: - return false; - } + m_Face = pFontMgr->GetFontFace(pFont->m_pPath, pFont->m_iFaceIndex); if (!m_Face) return false; m_dwStyle = dwStyle; m_uCharset = uCharset; m_pFontMgr = pFontMgr; - m_pFontDes = pFontDes; + m_pFont = pFont; m_dwRefCount = 1; return true; } diff --git a/core/fxge/android/cfpf_skiafont.h b/core/fxge/android/cfpf_skiafont.h index 1b2f605838..260e4222a5 100644 --- a/core/fxge/android/cfpf_skiafont.h +++ b/core/fxge/android/cfpf_skiafont.h @@ -11,8 +11,8 @@ #include "core/fxcrt/unowned_ptr.h" #include "core/fxge/fx_font.h" -class CFPF_SkiaFontDescriptor; class CFPF_SkiaFontMgr; +class CFPF_SkiaPathFont; class CFPF_SkiaFont { public: @@ -37,18 +37,18 @@ class CFPF_SkiaFont { uint32_t GetFontData(uint32_t dwTable, uint8_t* pBuffer, uint32_t dwSize); bool InitFont(CFPF_SkiaFontMgr* pFontMgr, - CFPF_SkiaFontDescriptor* pFontDes, + CFPF_SkiaPathFont* pFont, const ByteStringView& bsFamily, uint32_t dwStyle, uint8_t uCharset); private: UnownedPtr<CFPF_SkiaFontMgr> m_pFontMgr; - UnownedPtr<CFPF_SkiaFontDescriptor> m_pFontDes; - FXFT_Face m_Face; - uint32_t m_dwStyle; - uint8_t m_uCharset; - uint32_t m_dwRefCount; + UnownedPtr<CFPF_SkiaPathFont> m_pFont; + FXFT_Face m_Face = nullptr; + uint32_t m_dwStyle = 0; + uint8_t m_uCharset = 0; + uint32_t m_dwRefCount = 0; }; #endif // CORE_FXGE_ANDROID_CFPF_SKIAFONT_H_ diff --git a/core/fxge/android/cfpf_skiafontdescriptor.cpp b/core/fxge/android/cfpf_skiafontdescriptor.cpp deleted file mode 100644 index 8dd4481a7d..0000000000 --- a/core/fxge/android/cfpf_skiafontdescriptor.cpp +++ /dev/null @@ -1,32 +0,0 @@ -// Copyright 2017 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "core/fxge/android/cfpf_skiafontdescriptor.h" - -#include "core/fxcrt/fx_memory.h" - -CFPF_SkiaFontDescriptor::CFPF_SkiaFontDescriptor() - : m_pFamily(nullptr), - m_dwStyle(0), - m_iFaceIndex(0), - m_dwCharsets(0), - m_iGlyphNum(0) {} - -CFPF_SkiaFontDescriptor::~CFPF_SkiaFontDescriptor() { - FX_Free(m_pFamily); -} - -int32_t CFPF_SkiaFontDescriptor::GetType() const { - return FPF_SKIAFONTTYPE_Unknown; -} - -void CFPF_SkiaFontDescriptor::SetFamily(const char* pFamily) { - FX_Free(m_pFamily); - int32_t iSize = strlen(pFamily); - m_pFamily = FX_Alloc(char, iSize + 1); - memcpy(m_pFamily, pFamily, iSize * sizeof(char)); - m_pFamily[iSize] = 0; -} diff --git a/core/fxge/android/cfpf_skiafontdescriptor.h b/core/fxge/android/cfpf_skiafontdescriptor.h deleted file mode 100644 index 00a19ecc54..0000000000 --- a/core/fxge/android/cfpf_skiafontdescriptor.h +++ /dev/null @@ -1,30 +0,0 @@ -// Copyright 2016 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#ifndef CORE_FXGE_ANDROID_CFPF_SKIAFONTDESCRIPTOR_H_ -#define CORE_FXGE_ANDROID_CFPF_SKIAFONTDESCRIPTOR_H_ - -#include "core/fxcrt/fx_system.h" - -#define FPF_SKIAFONTTYPE_Unknown 0 - -class CFPF_SkiaFontDescriptor { - public: - CFPF_SkiaFontDescriptor(); - virtual ~CFPF_SkiaFontDescriptor(); - - virtual int32_t GetType() const; - - void SetFamily(const char* pFamily); - - char* m_pFamily; - uint32_t m_dwStyle; - int32_t m_iFaceIndex; - uint32_t m_dwCharsets; - int32_t m_iGlyphNum; -}; - -#endif // CORE_FXGE_ANDROID_CFPF_SKIAFONTDESCRIPTOR_H_ diff --git a/core/fxge/android/cfpf_skiafontmgr.cpp b/core/fxge/android/cfpf_skiafontmgr.cpp index 32fe498882..b091ae9fd7 100644 --- a/core/fxge/android/cfpf_skiafontmgr.cpp +++ b/core/fxge/android/cfpf_skiafontmgr.cpp @@ -19,7 +19,6 @@ #include "core/fxcrt/fx_stream.h" #include "core/fxcrt/fx_system.h" #include "core/fxge/android/cfpf_skiafont.h" -#include "core/fxge/android/cfpf_skiafontdescriptor.h" #include "core/fxge/android/cfpf_skiapathfont.h" #include "core/fxge/fx_freetype.h" @@ -277,29 +276,29 @@ CFPF_SkiaFont* CFPF_SkiaFontMgr::CreateFont(const ByteStringView& bsFamilyname, } int32_t nExpectVal = FPF_SKIAMATCHWEIGHT_NAME1 + FPF_SKIAMATCHWEIGHT_1 * 3 + FPF_SKIAMATCHWEIGHT_2 * 2; - CFPF_SkiaFontDescriptor* pBestFontDes = nullptr; + CFPF_SkiaPathFont* pBestFont = nullptr; int32_t nMax = -1; int32_t nGlyphNum = 0; for (auto it = m_FontFaces.rbegin(); it != m_FontFaces.rend(); ++it) { - CFPF_SkiaPathFont* pFontDes = static_cast<CFPF_SkiaPathFont*>(*it); - if (!(pFontDes->m_dwCharsets & FPF_SkiaGetCharset(uCharset))) + CFPF_SkiaPathFont* pFont = *it; + if (!(pFont->m_dwCharsets & FPF_SkiaGetCharset(uCharset))) continue; int32_t nFind = 0; - uint32_t dwSysFontName = FPF_SKIANormalizeFontName(pFontDes->m_pFamily); + uint32_t dwSysFontName = FPF_SKIANormalizeFontName(pFont->m_pFamily); if (dwFaceName == dwSysFontName) nFind += FPF_SKIAMATCHWEIGHT_NAME1; bool bMatchedName = (nFind == FPF_SKIAMATCHWEIGHT_NAME1); - if (FontStyleIsBold(dwStyle) == FontStyleIsBold(pFontDes->m_dwStyle)) + if (FontStyleIsBold(dwStyle) == FontStyleIsBold(pFont->m_dwStyle)) nFind += FPF_SKIAMATCHWEIGHT_1; - if (FontStyleIsItalic(dwStyle) == FontStyleIsItalic(pFontDes->m_dwStyle)) + if (FontStyleIsItalic(dwStyle) == FontStyleIsItalic(pFont->m_dwStyle)) nFind += FPF_SKIAMATCHWEIGHT_1; if (FontStyleIsFixedPitch(dwStyle) == - FontStyleIsFixedPitch(pFontDes->m_dwStyle)) { + FontStyleIsFixedPitch(pFont->m_dwStyle)) { nFind += FPF_SKIAMATCHWEIGHT_2; } - if (FontStyleIsSerif(dwStyle) == FontStyleIsSerif(pFontDes->m_dwStyle)) + if (FontStyleIsSerif(dwStyle) == FontStyleIsSerif(pFont->m_dwStyle)) nFind += FPF_SKIAMATCHWEIGHT_1; - if (FontStyleIsScript(dwStyle) == FontStyleIsScript(pFontDes->m_dwStyle)) + if (FontStyleIsScript(dwStyle) == FontStyleIsScript(pFont->m_dwStyle)) nFind += FPF_SKIAMATCHWEIGHT_2; if (dwSubst == dwSysFontName || dwSubstSans == dwSysFontName) { nFind += FPF_SKIAMATCHWEIGHT_NAME2; @@ -308,25 +307,25 @@ CFPF_SkiaFont* CFPF_SkiaFontMgr::CreateFont(const ByteStringView& bsFamilyname, if (uCharset == FX_CHARSET_Default || bMaybeSymbol) { if (nFind > nMax && bMatchedName) { nMax = nFind; - pBestFontDes = *it; + pBestFont = *it; } } else if (FPF_SkiaIsCJK(uCharset)) { - if (bMatchedName || pFontDes->m_iGlyphNum > nGlyphNum) { - pBestFontDes = *it; - nGlyphNum = pFontDes->m_iGlyphNum; + if (bMatchedName || pFont->m_iGlyphNum > nGlyphNum) { + pBestFont = *it; + nGlyphNum = pFont->m_iGlyphNum; } } else if (nFind > nMax) { nMax = nFind; - pBestFontDes = *it; + pBestFont = *it; } if (nExpectVal <= nFind) { - pBestFontDes = *it; + pBestFont = *it; break; } } - if (pBestFontDes) { + if (pBestFont) { CFPF_SkiaFont* pFont = new CFPF_SkiaFont; - if (pFont->InitFont(this, pBestFontDes, bsFamilyname, dwStyle, uCharset)) { + if (pFont->InitFont(this, pBestFont, bsFamilyname, dwStyle, uCharset)) { m_FamilyFonts[dwHash] = pFont; return pFont->Retain(); } @@ -382,37 +381,36 @@ void CFPF_SkiaFontMgr::ScanFile(const ByteString& file) { FXFT_Face face = GetFontFace(file.AsStringView(), 0); if (!face) return; - CFPF_SkiaPathFont* pFontDesc = new CFPF_SkiaPathFont; - pFontDesc->SetPath(file.c_str()); - ReportFace(face, pFontDesc); - m_FontFaces.push_back(pFontDesc); + CFPF_SkiaPathFont* pFont = new CFPF_SkiaPathFont; + pFont->SetPath(file.c_str()); + ReportFace(face, pFont); + m_FontFaces.push_back(pFont); FXFT_Done_Face(face); } -void CFPF_SkiaFontMgr::ReportFace(FXFT_Face face, - CFPF_SkiaFontDescriptor* pFontDesc) { - if (!face || !pFontDesc) +void CFPF_SkiaFontMgr::ReportFace(FXFT_Face face, CFPF_SkiaPathFont* pFont) { + if (!face || !pFont) return; - pFontDesc->SetFamily(FXFT_Get_Face_Family_Name(face)); + pFont->SetFamily(FXFT_Get_Face_Family_Name(face)); if (FXFT_Is_Face_Bold(face)) - pFontDesc->m_dwStyle |= FXFONT_BOLD; + pFont->m_dwStyle |= FXFONT_BOLD; if (FXFT_Is_Face_Italic(face)) - pFontDesc->m_dwStyle |= FXFONT_ITALIC; + pFont->m_dwStyle |= FXFONT_ITALIC; if (FT_IS_FIXED_WIDTH(face)) - pFontDesc->m_dwStyle |= FXFONT_FIXED_PITCH; + pFont->m_dwStyle |= FXFONT_FIXED_PITCH; TT_OS2* pOS2 = static_cast<TT_OS2*>(FT_Get_Sfnt_Table(face, ft_sfnt_os2)); if (pOS2) { if (pOS2->ulCodePageRange1 & (1 << 31)) - pFontDesc->m_dwStyle |= FXFONT_SYMBOLIC; + pFont->m_dwStyle |= FXFONT_SYMBOLIC; if (pOS2->panose[0] == 2) { uint8_t uSerif = pOS2->panose[1]; if ((uSerif > 1 && uSerif < 10) || uSerif > 13) - pFontDesc->m_dwStyle |= FXFONT_SERIF; + pFont->m_dwStyle |= FXFONT_SERIF; } } if (pOS2 && (pOS2->ulCodePageRange1 & (1 << 31))) - pFontDesc->m_dwStyle |= FXFONT_SYMBOLIC; - pFontDesc->m_dwCharsets = FPF_SkiaGetFaceCharset(pOS2); - pFontDesc->m_iFaceIndex = face->face_index; - pFontDesc->m_iGlyphNum = face->num_glyphs; + pFont->m_dwStyle |= FXFONT_SYMBOLIC; + pFont->m_dwCharsets = FPF_SkiaGetFaceCharset(pOS2); + pFont->m_iFaceIndex = face->face_index; + pFont->m_iGlyphNum = face->num_glyphs; } diff --git a/core/fxge/android/cfpf_skiafontmgr.h b/core/fxge/android/cfpf_skiafontmgr.h index 3152a3592e..af2d3acfc8 100644 --- a/core/fxge/android/cfpf_skiafontmgr.h +++ b/core/fxge/android/cfpf_skiafontmgr.h @@ -16,7 +16,7 @@ #define FPF_MATCHFONT_REPLACEANSI 1 class CFPF_SkiaFont; -class CFPF_SkiaFontDescriptor; +class CFPF_SkiaPathFont; class CFPF_SkiaFontMgr { public: @@ -35,11 +35,11 @@ class CFPF_SkiaFontMgr { private: void ScanPath(const ByteString& path); void ScanFile(const ByteString& file); - void ReportFace(FXFT_Face face, CFPF_SkiaFontDescriptor* pFontDesc); + void ReportFace(FXFT_Face face, CFPF_SkiaPathFont* pFont); bool m_bLoaded = false; FXFT_Library m_FTLibrary = nullptr; - std::vector<CFPF_SkiaFontDescriptor*> m_FontFaces; + std::vector<CFPF_SkiaPathFont*> m_FontFaces; std::map<uint32_t, CFPF_SkiaFont*> m_FamilyFonts; }; diff --git a/core/fxge/android/cfpf_skiapathfont.cpp b/core/fxge/android/cfpf_skiapathfont.cpp index 27f4fde988..063729f7e5 100644 --- a/core/fxge/android/cfpf_skiapathfont.cpp +++ b/core/fxge/android/cfpf_skiapathfont.cpp @@ -8,16 +8,13 @@ #include "core/fxcrt/fx_memory.h" -CFPF_SkiaPathFont::CFPF_SkiaPathFont() : m_pPath(nullptr) {} +CFPF_SkiaPathFont::CFPF_SkiaPathFont() {} CFPF_SkiaPathFont::~CFPF_SkiaPathFont() { + FX_Free(m_pFamily); FX_Free(m_pPath); } -int32_t CFPF_SkiaPathFont::GetType() const { - return FPF_SKIAFONTTYPE_Path; -} - void CFPF_SkiaPathFont::SetPath(const char* pPath) { FX_Free(m_pPath); int32_t iSize = strlen(pPath); @@ -25,3 +22,11 @@ void CFPF_SkiaPathFont::SetPath(const char* pPath) { memcpy(m_pPath, pPath, iSize * sizeof(char)); m_pPath[iSize] = 0; } + +void CFPF_SkiaPathFont::SetFamily(const char* pFamily) { + FX_Free(m_pFamily); + int32_t iSize = strlen(pFamily); + m_pFamily = FX_Alloc(char, iSize + 1); + memcpy(m_pFamily, pFamily, iSize * sizeof(char)); + m_pFamily[iSize] = 0; +} diff --git a/core/fxge/android/cfpf_skiapathfont.h b/core/fxge/android/cfpf_skiapathfont.h index 6cba42acff..e1d8994768 100644 --- a/core/fxge/android/cfpf_skiapathfont.h +++ b/core/fxge/android/cfpf_skiapathfont.h @@ -8,21 +8,21 @@ #define CORE_FXGE_ANDROID_CFPF_SKIAPATHFONT_H_ #include "core/fxcrt/fx_system.h" -#include "core/fxge/android/cfpf_skiafontdescriptor.h" -#define FPF_SKIAFONTTYPE_Path 1 - -class CFPF_SkiaPathFont : public CFPF_SkiaFontDescriptor { +class CFPF_SkiaPathFont { public: CFPF_SkiaPathFont(); - ~CFPF_SkiaPathFont() override; - - // CFPF_SkiaFontDescriptor - int32_t GetType() const override; + ~CFPF_SkiaPathFont(); void SetPath(const char* pPath); - - char* m_pPath; + void SetFamily(const char* pFamily); + + char* m_pPath = nullptr; + char* m_pFamily = nullptr; + uint32_t m_dwStyle = 0; + int32_t m_iFaceIndex = 0; + uint32_t m_dwCharsets = 0; + int32_t m_iGlyphNum = 0; }; #endif // CORE_FXGE_ANDROID_CFPF_SKIAPATHFONT_H_ |