| OLD | NEW |
| 1 // Copyright 2014 PDFium Authors. All rights reserved. | 1 // Copyright 2014 PDFium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com | 5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com |
| 6 | 6 |
| 7 #include "../../../include/fxge/fx_ge.h" | 7 #include "../../../include/fxge/fx_ge.h" |
| 8 #include "../../../include/fxge/fx_freetype.h" | 8 #include "../../../include/fxge/fx_freetype.h" |
| 9 #include "text_int.h" | 9 #include "text_int.h" |
| 10 #define EM_ADJUST(em, a) (em == 0?(a): (a)*1000/em) | 10 #define EM_ADJUST(em, a) (em == 0?(a): (a)*1000/em) |
| (...skipping 14 matching lines...) Expand all Loading... |
| 25 m_pDwFont = NULL; | 25 m_pDwFont = NULL; |
| 26 m_hHandle = NULL; | 26 m_hHandle = NULL; |
| 27 m_bDwLoaded = FALSE; | 27 m_bDwLoaded = FALSE; |
| 28 } | 28 } |
| 29 CFX_Font::~CFX_Font() | 29 CFX_Font::~CFX_Font() |
| 30 { | 30 { |
| 31 if (m_pSubstFont) { | 31 if (m_pSubstFont) { |
| 32 delete m_pSubstFont; | 32 delete m_pSubstFont; |
| 33 m_pSubstFont = NULL; | 33 m_pSubstFont = NULL; |
| 34 } | 34 } |
| 35 #ifdef FOXIT_CHROME_BUILD | |
| 36 if (m_pFontDataAllocation) { | 35 if (m_pFontDataAllocation) { |
| 37 FX_Free(m_pFontDataAllocation); | 36 FX_Free(m_pFontDataAllocation); |
| 38 m_pFontDataAllocation = NULL; | 37 m_pFontDataAllocation = NULL; |
| 39 } | 38 } |
| 40 #endif | |
| 41 if (m_Face) { | 39 if (m_Face) { |
| 42 #ifdef FOXIT_CHROME_BUILD | |
| 43 if (FXFT_Get_Face_External_Stream(m_Face)) { | 40 if (FXFT_Get_Face_External_Stream(m_Face)) { |
| 44 FXFT_Clear_Face_External_Stream(m_Face); | 41 FXFT_Clear_Face_External_Stream(m_Face); |
| 45 } | 42 } |
| 46 #endif | |
| 47 if(m_bEmbedded) { | 43 if(m_bEmbedded) { |
| 48 DeleteFace(); | 44 DeleteFace(); |
| 49 } else { | 45 } else { |
| 50 CFX_GEModule::Get()->GetFontMgr()->ReleaseFace(m_Face); | 46 CFX_GEModule::Get()->GetFontMgr()->ReleaseFace(m_Face); |
| 51 } | 47 } |
| 52 } | 48 } |
| 53 if (m_pOwnedStream) { | 49 if (m_pOwnedStream) { |
| 54 FX_Free(m_pOwnedStream); | 50 FX_Free(m_pOwnedStream); |
| 55 m_pOwnedStream = NULL; | 51 m_pOwnedStream = NULL; |
| 56 } | 52 } |
| 57 if (m_pGsubData) { | 53 if (m_pGsubData) { |
| 58 FX_Free(m_pGsubData); | 54 FX_Free(m_pGsubData); |
| 59 m_pGsubData = NULL; | 55 m_pGsubData = NULL; |
| 60 } | 56 } |
| 61 #if (_FXM_PLATFORM_ == _FXM_PLATFORM_APPLE_ && (!defined(_FPDFAPI_MINI_))) | 57 #if _FXM_PLATFORM_ == _FXM_PLATFORM_APPLE_ |
| 62 ReleasePlatformResource(); | 58 ReleasePlatformResource(); |
| 63 #endif | 59 #endif |
| 64 } | 60 } |
| 65 void CFX_Font::DeleteFace() | 61 void CFX_Font::DeleteFace() |
| 66 { | 62 { |
| 67 FXFT_Done_Face(m_Face); | 63 FXFT_Done_Face(m_Face); |
| 68 m_Face = NULL; | 64 m_Face = NULL; |
| 69 } | 65 } |
| 70 FX_BOOL CFX_Font::LoadSubst(const CFX_ByteString& face_name, FX_BOOL bTrueType,
FX_DWORD flags, | 66 FX_BOOL CFX_Font::LoadSubst(const CFX_ByteString& face_name, FX_BOOL bTrueType,
FX_DWORD flags, |
| 71 int weight, int italic_angle, int CharsetCP, FX_BOOL
bVertical) | 67 int weight, int italic_angle, int CharsetCP, FX_BOOL
bVertical) |
| (...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 176 return NULL; | 172 return NULL; |
| 177 } | 173 } |
| 178 error = FXFT_Set_Pixel_Sizes(face, 64, 64); | 174 error = FXFT_Set_Pixel_Sizes(face, 64, 64); |
| 179 if (error) { | 175 if (error) { |
| 180 return NULL; | 176 return NULL; |
| 181 } | 177 } |
| 182 return face; | 178 return face; |
| 183 } | 179 } |
| 184 FX_BOOL CFX_Font::LoadEmbedded(FX_LPCBYTE data, FX_DWORD size) | 180 FX_BOOL CFX_Font::LoadEmbedded(FX_LPCBYTE data, FX_DWORD size) |
| 185 { | 181 { |
| 186 #ifdef FOXIT_CHROME_BUILD | |
| 187 m_pFontDataAllocation = FX_Alloc(FX_BYTE, size); | 182 m_pFontDataAllocation = FX_Alloc(FX_BYTE, size); |
| 188 if (!m_pFontDataAllocation) { | 183 if (!m_pFontDataAllocation) { |
| 189 return FALSE; | 184 return FALSE; |
| 190 } | 185 } |
| 191 FXSYS_memcpy32(m_pFontDataAllocation, data, size); | 186 FXSYS_memcpy32(m_pFontDataAllocation, data, size); |
| 192 m_Face = FT_LoadFont((FX_LPBYTE)m_pFontDataAllocation, size); | 187 m_Face = FT_LoadFont((FX_LPBYTE)m_pFontDataAllocation, size); |
| 193 m_pFontData = (FX_LPBYTE)m_pFontDataAllocation; | 188 m_pFontData = (FX_LPBYTE)m_pFontDataAllocation; |
| 194 #else | |
| 195 m_Face = FT_LoadFont((FX_LPBYTE)data, size); | |
| 196 m_pFontData = (FX_LPBYTE)data; | |
| 197 #endif | |
| 198 m_bEmbedded = TRUE; | 189 m_bEmbedded = TRUE; |
| 199 m_dwSize = size; | 190 m_dwSize = size; |
| 200 return m_Face != NULL; | 191 return m_Face != NULL; |
| 201 } | 192 } |
| 202 FX_BOOL CFX_Font::IsTTFont() | 193 FX_BOOL CFX_Font::IsTTFont() |
| 203 { | 194 { |
| 204 if (m_Face == NULL) { | 195 if (m_Face == NULL) { |
| 205 return FALSE; | 196 return FALSE; |
| 206 } | 197 } |
| 207 return FXFT_Is_Face_TT_OT(m_Face) == FXFT_FACE_FLAG_SFNT; | 198 return FXFT_Is_Face_TT_OT(m_Face) == FXFT_FACE_FLAG_SFNT; |
| (...skipping 240 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 448 } | 439 } |
| 449 } | 440 } |
| 450 return FXFT_Get_Char_Index(face, charcode); | 441 return FXFT_Get_Char_Index(face, charcode); |
| 451 } | 442 } |
| 452 IFX_FontEncoding* FXGE_CreateUnicodeEncoding(CFX_Font* pFont) | 443 IFX_FontEncoding* FXGE_CreateUnicodeEncoding(CFX_Font* pFont) |
| 453 { | 444 { |
| 454 CFX_UnicodeEncoding* pEncoding = NULL; | 445 CFX_UnicodeEncoding* pEncoding = NULL; |
| 455 pEncoding = FX_NEW CFX_UnicodeEncoding(pFont); | 446 pEncoding = FX_NEW CFX_UnicodeEncoding(pFont); |
| 456 return pEncoding; | 447 return pEncoding; |
| 457 } | 448 } |
| OLD | NEW |