| 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 "xfa/fgas/font/fgas_stdfontmgr.h" | 7 #include "xfa/fgas/font/fgas_stdfontmgr.h" |
| 8 | 8 |
| 9 #include "core/fxcrt/include/fx_stream.h" | 9 #include "core/fxcrt/include/fx_stream.h" |
| 10 #include "core/fxge/include/fx_ge.h" | 10 #include "core/fxge/include/fx_ge.h" |
| (...skipping 795 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 806 if (FXFT_Get_Face_External_Stream(pFace)) | 806 if (FXFT_Get_Face_External_Stream(pFace)) |
| 807 FXFT_Clear_Face_External_Stream(pFace); | 807 FXFT_Clear_Face_External_Stream(pFace); |
| 808 FXFT_Done_Face(pFace); | 808 FXFT_Done_Face(pFace); |
| 809 return !retCharmap && retIndex; | 809 return !retCharmap && retIndex; |
| 810 } | 810 } |
| 811 | 811 |
| 812 FX_BOOL CFGAS_FontMgrImp::VerifyUnicode(IFGAS_Font* pFont, FX_WCHAR wcUnicode) { | 812 FX_BOOL CFGAS_FontMgrImp::VerifyUnicode(IFGAS_Font* pFont, FX_WCHAR wcUnicode) { |
| 813 if (!pFont) | 813 if (!pFont) |
| 814 return FALSE; | 814 return FALSE; |
| 815 | 815 |
| 816 FXFT_Face pFace = ((CFX_Font*)pFont->GetDevFont())->GetFace(); | 816 FXFT_Face pFace = pFont->GetDevFont()->GetFace(); |
| 817 FXFT_CharMap charmap = FXFT_Get_Face_Charmap(pFace); | 817 FXFT_CharMap charmap = FXFT_Get_Face_Charmap(pFace); |
| 818 if (FXFT_Select_Charmap(pFace, FXFT_ENCODING_UNICODE) != 0) | 818 if (FXFT_Select_Charmap(pFace, FXFT_ENCODING_UNICODE) != 0) |
| 819 return FALSE; | 819 return FALSE; |
| 820 | 820 |
| 821 if (FXFT_Get_Char_Index(pFace, wcUnicode) == 0) { | 821 if (FXFT_Get_Char_Index(pFace, wcUnicode) == 0) { |
| 822 FXFT_Set_Charmap(pFace, charmap); | 822 FXFT_Set_Charmap(pFace, charmap); |
| 823 return FALSE; | 823 return FALSE; |
| 824 } | 824 } |
| 825 return TRUE; | 825 return TRUE; |
| 826 } | 826 } |
| (...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 882 FX_BOOL bWantCache) { | 882 FX_BOOL bWantCache) { |
| 883 uint32_t dwHash = 0; | 883 uint32_t dwHash = 0; |
| 884 IFGAS_Font* pFont = nullptr; | 884 IFGAS_Font* pFont = nullptr; |
| 885 if (bWantCache) { | 885 if (bWantCache) { |
| 886 CFX_ByteString bsHash; | 886 CFX_ByteString bsHash; |
| 887 bsHash.Format("%d, %d", (uintptr_t)pFontAccess, iFaceIndex); | 887 bsHash.Format("%d, %d", (uintptr_t)pFontAccess, iFaceIndex); |
| 888 dwHash = FX_HashCode_GetA(bsHash.AsStringC(), false); | 888 dwHash = FX_HashCode_GetA(bsHash.AsStringC(), false); |
| 889 if (m_FileAccess2IFXFont.Lookup(dwHash, pFont)) { | 889 if (m_FileAccess2IFXFont.Lookup(dwHash, pFont)) { |
| 890 if (pFont) { | 890 if (pFont) { |
| 891 if (pFaceCount) | 891 if (pFaceCount) |
| 892 *pFaceCount = ((CFX_Font*)pFont->GetDevFont())->GetFace()->num_faces; | 892 *pFaceCount = pFont->GetDevFont()->GetFace()->num_faces; |
| 893 return pFont->Retain(); | 893 return pFont->Retain(); |
| 894 } | 894 } |
| 895 } | 895 } |
| 896 } | 896 } |
| 897 | 897 |
| 898 CFX_Font* pInternalFont = new CFX_Font; | 898 CFX_Font* pInternalFont = new CFX_Font; |
| 899 IFX_FileRead* pFontStream = | 899 IFX_FileRead* pFontStream = |
| 900 pFontAccess->CreateFileStream(FX_FILEMODE_ReadOnly); | 900 pFontAccess->CreateFileStream(FX_FILEMODE_ReadOnly); |
| 901 if (!pFontStream) { | 901 if (!pFontStream) { |
| 902 delete pInternalFont; | 902 delete pInternalFont; |
| 903 return nullptr; | 903 return nullptr; |
| 904 } | 904 } |
| 905 if (!pInternalFont->LoadFile(pFontStream, iFaceIndex)) { | 905 if (!pInternalFont->LoadFile(pFontStream, iFaceIndex)) { |
| 906 delete pInternalFont; | 906 delete pInternalFont; |
| 907 pFontStream->Release(); | 907 pFontStream->Release(); |
| 908 return nullptr; | 908 return nullptr; |
| 909 } | 909 } |
| 910 pFont = IFGAS_Font::LoadFont(pInternalFont, this, TRUE); | 910 pFont = IFGAS_Font::LoadFont(pInternalFont, this, TRUE); |
| 911 if (!pFont) { | 911 if (!pFont) { |
| 912 delete pInternalFont; | 912 delete pInternalFont; |
| 913 pFontStream->Release(); | 913 pFontStream->Release(); |
| 914 return nullptr; | 914 return nullptr; |
| 915 } | 915 } |
| 916 if (bWantCache) | 916 if (bWantCache) |
| 917 m_FileAccess2IFXFont.SetAt(dwHash, pFont); | 917 m_FileAccess2IFXFont.SetAt(dwHash, pFont); |
| 918 | 918 |
| 919 m_IFXFont2FileRead.SetAt(pFont, pFontStream); | 919 m_IFXFont2FileRead.SetAt(pFont, pFontStream); |
| 920 if (pFaceCount) | 920 if (pFaceCount) |
| 921 *pFaceCount = ((CFX_Font*)pFont->GetDevFont())->GetFace()->num_faces; | 921 *pFaceCount = pFont->GetDevFont()->GetFace()->num_faces; |
| 922 | 922 |
| 923 return pFont; | 923 return pFont; |
| 924 } | 924 } |
| 925 | 925 |
| 926 IFGAS_Font* CFGAS_FontMgrImp::LoadFont(const CFX_WideString& wsFaceName, | 926 IFGAS_Font* CFGAS_FontMgrImp::LoadFont(const CFX_WideString& wsFaceName, |
| 927 int32_t iFaceIndex, | 927 int32_t iFaceIndex, |
| 928 int32_t* pFaceCount) { | 928 int32_t* pFaceCount) { |
| 929 CFX_FontMgr* pFontMgr = CFX_GEModule::Get()->GetFontMgr(); | 929 CFX_FontMgr* pFontMgr = CFX_GEModule::Get()->GetFontMgr(); |
| 930 CFX_FontMapper* pFontMapper = pFontMgr->GetBuiltinMapper(); | 930 CFX_FontMapper* pFontMapper = pFontMgr->GetBuiltinMapper(); |
| 931 if (!pFontMapper) | 931 if (!pFontMapper) |
| (...skipping 19 matching lines...) Expand all Loading... |
| 951 } | 951 } |
| 952 | 952 |
| 953 IFGAS_Font* pFont = IFGAS_Font::LoadFont(pInternalFont, this, FALSE); | 953 IFGAS_Font* pFont = IFGAS_Font::LoadFont(pInternalFont, this, FALSE); |
| 954 if (!pFont) { | 954 if (!pFont) { |
| 955 pFontStream->Release(); | 955 pFontStream->Release(); |
| 956 return nullptr; | 956 return nullptr; |
| 957 } | 957 } |
| 958 | 958 |
| 959 m_IFXFont2FileRead.SetAt(pFont, pFontStream); | 959 m_IFXFont2FileRead.SetAt(pFont, pFontStream); |
| 960 if (pFaceCount) | 960 if (pFaceCount) |
| 961 *pFaceCount = ((CFX_Font*)pFont->GetDevFont())->GetFace()->num_faces; | 961 *pFaceCount = pFont->GetDevFont()->GetFace()->num_faces; |
| 962 | 962 |
| 963 return pFont; | 963 return pFont; |
| 964 } | 964 } |
| 965 | 965 |
| 966 extern "C" { | 966 extern "C" { |
| 967 | 967 |
| 968 unsigned long _ftStreamRead(FXFT_Stream stream, | 968 unsigned long _ftStreamRead(FXFT_Stream stream, |
| 969 unsigned long offset, | 969 unsigned long offset, |
| 970 unsigned char* buffer, | 970 unsigned char* buffer, |
| 971 unsigned long count) { | 971 unsigned long count) { |
| (...skipping 522 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1494 } | 1494 } |
| 1495 } | 1495 } |
| 1496 int32_t CFGAS_FontMgrImp::IsPartName(const CFX_WideString& Name1, | 1496 int32_t CFGAS_FontMgrImp::IsPartName(const CFX_WideString& Name1, |
| 1497 const CFX_WideString& Name2) { | 1497 const CFX_WideString& Name2) { |
| 1498 if (Name1.Find(Name2.c_str()) != -1) { | 1498 if (Name1.Find(Name2.c_str()) != -1) { |
| 1499 return 1; | 1499 return 1; |
| 1500 } | 1500 } |
| 1501 return 0; | 1501 return 0; |
| 1502 } | 1502 } |
| 1503 #endif | 1503 #endif |
| OLD | NEW |