| 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/pdfwindow/PDFWindow.h" | 7 #include "../../include/pdfwindow/PDFWindow.h" | 
| 8 #include "../../include/pdfwindow/PWL_Wnd.h" | 8 #include "../../include/pdfwindow/PWL_Wnd.h" | 
| 9 #include "../../include/pdfwindow/PWL_FontMap.h" | 9 #include "../../include/pdfwindow/PWL_FontMap.h" | 
| 10 | 10 | 
| 11 #define DEFAULT_FONT_NAME»      »       »       "Helvetica" | 11 #define DEFAULT_FONT_NAME           "Helvetica" | 
| 12 | 12 | 
| 13 /* ------------------------------ CPWL_FontMap ------------------------------ */ | 13 /* ------------------------------ CPWL_FontMap ------------------------------ */ | 
| 14 | 14 | 
| 15 CPWL_FontMap::CPWL_FontMap(IFX_SystemHandler* pSystemHandler) : | 15 CPWL_FontMap::CPWL_FontMap(IFX_SystemHandler* pSystemHandler) : | 
| 16 »       m_pPDFDoc(NULL), | 16     m_pPDFDoc(NULL), | 
| 17 »       m_pSystemHandler(pSystemHandler) | 17     m_pSystemHandler(pSystemHandler) | 
| 18 { | 18 { | 
| 19 »       ASSERT(m_pSystemHandler != NULL); | 19     ASSERT(m_pSystemHandler != NULL); | 
| 20 } | 20 } | 
| 21 | 21 | 
| 22 CPWL_FontMap::~CPWL_FontMap() | 22 CPWL_FontMap::~CPWL_FontMap() | 
| 23 { | 23 { | 
| 24     delete m_pPDFDoc; | 24     delete m_pPDFDoc; | 
| 25     m_pPDFDoc = NULL; | 25     m_pPDFDoc = NULL; | 
| 26 | 26 | 
| 27     Empty(); | 27     Empty(); | 
| 28 } | 28 } | 
| 29 | 29 | 
| 30 void CPWL_FontMap::SetSystemHandler(IFX_SystemHandler* pSystemHandler) | 30 void CPWL_FontMap::SetSystemHandler(IFX_SystemHandler* pSystemHandler) | 
| 31 { | 31 { | 
| 32 »       m_pSystemHandler = pSystemHandler; | 32     m_pSystemHandler = pSystemHandler; | 
| 33 } | 33 } | 
| 34 | 34 | 
| 35 CPDF_Document* CPWL_FontMap::GetDocument() | 35 CPDF_Document* CPWL_FontMap::GetDocument() | 
| 36 { | 36 { | 
| 37 »       if (!m_pPDFDoc) | 37     if (!m_pPDFDoc) | 
| 38 »       { | 38     { | 
| 39 »       »       if (CPDF_ModuleMgr::Get()) | 39         if (CPDF_ModuleMgr::Get()) | 
| 40 »       »       { | 40         { | 
| 41 »       »       »       m_pPDFDoc = new CPDF_Document; | 41             m_pPDFDoc = new CPDF_Document; | 
| 42 »       »       »       m_pPDFDoc->CreateNewDoc(); | 42             m_pPDFDoc->CreateNewDoc(); | 
| 43 »       »       } | 43         } | 
| 44 »       } | 44     } | 
| 45 | 45 | 
| 46 »       return m_pPDFDoc; | 46     return m_pPDFDoc; | 
| 47 } | 47 } | 
| 48 | 48 | 
| 49 CPDF_Font* CPWL_FontMap::GetPDFFont(int32_t nFontIndex) | 49 CPDF_Font* CPWL_FontMap::GetPDFFont(int32_t nFontIndex) | 
| 50 { | 50 { | 
| 51 »       if (nFontIndex >=0 && nFontIndex < m_aData.GetSize()) | 51     if (nFontIndex >=0 && nFontIndex < m_aData.GetSize()) | 
| 52 »       { | 52     { | 
| 53 »       »       if (CPWL_FontMap_Data* pData = m_aData.GetAt(nFontIndex)) | 53         if (CPWL_FontMap_Data* pData = m_aData.GetAt(nFontIndex)) | 
| 54 »       »       { | 54         { | 
| 55 »       »       »       return pData->pFont; | 55             return pData->pFont; | 
| 56 »       »       } | 56         } | 
| 57 »       } | 57     } | 
| 58 | 58 | 
| 59 »       return NULL; | 59     return NULL; | 
| 60 } | 60 } | 
| 61 | 61 | 
| 62 CFX_ByteString CPWL_FontMap::GetPDFFontAlias(int32_t nFontIndex) | 62 CFX_ByteString CPWL_FontMap::GetPDFFontAlias(int32_t nFontIndex) | 
| 63 { | 63 { | 
| 64 »       if (nFontIndex >=0 && nFontIndex < m_aData.GetSize()) | 64     if (nFontIndex >=0 && nFontIndex < m_aData.GetSize()) | 
| 65 »       { | 65     { | 
| 66 »       »       if (CPWL_FontMap_Data* pData = m_aData.GetAt(nFontIndex)) | 66         if (CPWL_FontMap_Data* pData = m_aData.GetAt(nFontIndex)) | 
| 67 »       »       { | 67         { | 
| 68 »       »       »       return pData->sFontName; | 68             return pData->sFontName; | 
| 69 »       »       } | 69         } | 
| 70 »       } | 70     } | 
| 71 | 71 | 
| 72 »       return ""; | 72     return ""; | 
| 73 } | 73 } | 
| 74 | 74 | 
| 75 FX_BOOL CPWL_FontMap::KnowWord(int32_t nFontIndex, FX_WORD word) | 75 FX_BOOL CPWL_FontMap::KnowWord(int32_t nFontIndex, FX_WORD word) | 
| 76 { | 76 { | 
| 77 »       if (nFontIndex >=0 && nFontIndex < m_aData.GetSize()) | 77     if (nFontIndex >=0 && nFontIndex < m_aData.GetSize()) | 
| 78 »       { | 78     { | 
| 79 »       »       if (m_aData.GetAt(nFontIndex)) | 79         if (m_aData.GetAt(nFontIndex)) | 
| 80 »       »       { | 80         { | 
| 81 »       »       »       return CharCodeFromUnicode(nFontIndex, word) >= 0; | 81             return CharCodeFromUnicode(nFontIndex, word) >= 0; | 
| 82 »       »       } | 82         } | 
| 83 »       } | 83     } | 
| 84 | 84 | 
| 85 »       return FALSE; | 85     return FALSE; | 
| 86 } | 86 } | 
| 87 | 87 | 
| 88 int32_t CPWL_FontMap::GetWordFontIndex(FX_WORD word, int32_t nCharset, int32_t n
     FontIndex) | 88 int32_t CPWL_FontMap::GetWordFontIndex(FX_WORD word, int32_t nCharset, int32_t n
     FontIndex) | 
| 89 { | 89 { | 
| 90 »       if (nFontIndex > 0) | 90     if (nFontIndex > 0) | 
| 91 »       { | 91     { | 
| 92 »       »       if (KnowWord(nFontIndex, word)) | 92         if (KnowWord(nFontIndex, word)) | 
| 93 »       »       »       return nFontIndex; | 93             return nFontIndex; | 
| 94 »       } | 94     } | 
| 95 »       else | 95     else | 
| 96 »       { | 96     { | 
| 97 »       »       if (const CPWL_FontMap_Data* pData = GetFontMapData(0)) | 97         if (const CPWL_FontMap_Data* pData = GetFontMapData(0)) | 
| 98 »       »       { | 98         { | 
| 99 »       »       »       if (nCharset == DEFAULT_CHARSET || | 99             if (nCharset == DEFAULT_CHARSET || | 
| 100 »       »       »       »       pData->nCharset == SYMBOL_CHARSET || | 100                 pData->nCharset == SYMBOL_CHARSET || | 
| 101 »       »       »       »       nCharset == pData->nCharset) | 101                 nCharset == pData->nCharset) | 
| 102 »       »       »       { | 102             { | 
| 103 »       »       »       »       if (KnowWord(0, word)) | 103                 if (KnowWord(0, word)) | 
| 104 »       »       »       »       { | 104                     return 0; | 
| 105 »       »       »       »       »       return 0; | 105             } | 
| 106 »       »       »       »       } | 106         } | 
| 107 »       »       »       } | 107     } | 
| 108 »       »       } |  | 
| 109 »       } |  | 
| 110 | 108 | 
| 111 »       int32_t nNewFontIndex = -1; | 109     int32_t nNewFontIndex = GetFontIndex(GetNativeFontName(nCharset), nCharset, 
     TRUE); | 
| 112 | 110     if (nNewFontIndex >= 0) | 
| 113 »       nNewFontIndex = GetFontIndex(GetNativeFontName(nCharset), nCharset, TRUE
     ); | 111     { | 
| 114 »       if (nNewFontIndex >= 0) | 112         if (KnowWord(nNewFontIndex, word)) | 
| 115 »       { | 113             return nNewFontIndex; | 
| 116 »       »       if (KnowWord(nNewFontIndex, word)) | 114     } | 
| 117 »       »       »       return nNewFontIndex; | 115     nNewFontIndex = GetFontIndex("Arial Unicode MS", DEFAULT_CHARSET, FALSE); | 
| 118 »       } | 116     if (nNewFontIndex >= 0) | 
| 119 | 117     { | 
| 120 »       nNewFontIndex = GetFontIndex("Arial Unicode MS", DEFAULT_CHARSET, FALSE)
     ; | 118         if (KnowWord(nNewFontIndex, word)) | 
| 121 »       if (nNewFontIndex >= 0) | 119             return nNewFontIndex; | 
| 122 »       { | 120     } | 
| 123 »       »       if (KnowWord(nNewFontIndex, word)) | 121     return -1; | 
| 124 »       »       return nNewFontIndex; |  | 
| 125 »       } |  | 
| 126 |  | 
| 127 »       return -1; |  | 
| 128 } | 122 } | 
| 129 | 123 | 
| 130 int32_t CPWL_FontMap::CharCodeFromUnicode(int32_t nFontIndex, FX_WORD word) | 124 int32_t CPWL_FontMap::CharCodeFromUnicode(int32_t nFontIndex, FX_WORD word) | 
| 131 { | 125 { | 
| 132 »       if (CPWL_FontMap_Data* pData = m_aData.GetAt(nFontIndex)) | 126     if (CPWL_FontMap_Data* pData = m_aData.GetAt(nFontIndex)) | 
| 133 »       { | 127     { | 
| 134 »       »       if (pData->pFont) | 128         if (pData->pFont) | 
| 135 »       »       { | 129         { | 
| 136 »       »       »       if (pData->pFont->IsUnicodeCompatible()) | 130             if (pData->pFont->IsUnicodeCompatible()) | 
| 137 »       »       »       { | 131             { | 
| 138 »       »       »       »       int nCharCode = pData->pFont->CharCodeFromUnicod
     e(word); | 132                 int nCharCode = pData->pFont->CharCodeFromUnicode(word); | 
| 139 »       »       »       »       pData->pFont->GlyphFromCharCode(nCharCode); | 133                 pData->pFont->GlyphFromCharCode(nCharCode); | 
| 140 »       »       »       »       return nCharCode; | 134                 return nCharCode; | 
| 141 »       »       »       } | 135             } | 
| 142 »       »       »       else | 136             if (word < 0xFF) | 
| 143 »       »       »       { | 137                 return word; | 
| 144 »       »       »       »       if (word < 0xFF) | 138         } | 
| 145 »       »       »       »       »       return word; | 139     } | 
| 146 »       »       »       } | 140     return -1; | 
| 147 »       »       } |  | 
| 148 »       } |  | 
| 149 |  | 
| 150 »       return -1; |  | 
| 151 } | 141 } | 
| 152 | 142 | 
| 153 CFX_ByteString CPWL_FontMap::GetNativeFontName(int32_t nCharset) | 143 CFX_ByteString CPWL_FontMap::GetNativeFontName(int32_t nCharset) | 
| 154 { | 144 { | 
| 155 »       //searching native font is slow, so we must save time | 145     //searching native font is slow, so we must save time | 
| 156 »       for (int32_t i=0,sz=m_aNativeFont.GetSize(); i<sz; i++) | 146     for (int32_t i=0,sz=m_aNativeFont.GetSize(); i<sz; i++) | 
| 157 »       { | 147     { | 
| 158 »       »       if (CPWL_FontMap_Native* pData = m_aNativeFont.GetAt(i)) | 148         if (CPWL_FontMap_Native* pData = m_aNativeFont.GetAt(i)) | 
| 159 »       »       { | 149         { | 
| 160 »       »       »       if (pData->nCharset == nCharset) | 150             if (pData->nCharset == nCharset) | 
| 161 »       »       »       »       return pData->sFontName; | 151                 return pData->sFontName; | 
| 162 »       »       } | 152         } | 
| 163 »       } | 153     } | 
| 164 | 154 | 
| 165 »       CFX_ByteString sNew = GetNativeFont(nCharset); | 155     CFX_ByteString sNew = GetNativeFont(nCharset); | 
| 166 | 156 | 
| 167 »       if (!sNew.IsEmpty()) | 157     if (!sNew.IsEmpty()) | 
| 168 »       { | 158     { | 
| 169 »       »       CPWL_FontMap_Native* pNewData = new CPWL_FontMap_Native; | 159         CPWL_FontMap_Native* pNewData = new CPWL_FontMap_Native; | 
| 170 »       »       pNewData->nCharset = nCharset; | 160         pNewData->nCharset = nCharset; | 
| 171 »       »       pNewData->sFontName = sNew; | 161         pNewData->sFontName = sNew; | 
| 172 | 162 | 
| 173 »       »       m_aNativeFont.Add(pNewData); | 163         m_aNativeFont.Add(pNewData); | 
| 174 »       } | 164     } | 
| 175 | 165 | 
| 176 »       return sNew; | 166     return sNew; | 
| 177 } | 167 } | 
| 178 | 168 | 
| 179 void CPWL_FontMap::Empty() | 169 void CPWL_FontMap::Empty() | 
| 180 { | 170 { | 
| 181 »       { | 171     { | 
| 182 »       »       for (int32_t i=0, sz=m_aData.GetSize(); i<sz; i++) | 172         for (int32_t i=0, sz=m_aData.GetSize(); i<sz; i++) | 
| 183 »       »       »       delete m_aData.GetAt(i); | 173             delete m_aData.GetAt(i); | 
| 184 | 174 | 
| 185 »       »       m_aData.RemoveAll(); | 175         m_aData.RemoveAll(); | 
| 186 »       } | 176     } | 
| 187 »       { | 177     { | 
| 188 »       »       for (int32_t i=0, sz=m_aNativeFont.GetSize(); i<sz; i++) | 178         for (int32_t i=0, sz=m_aNativeFont.GetSize(); i<sz; i++) | 
| 189 »       »       »       delete m_aNativeFont.GetAt(i); | 179             delete m_aNativeFont.GetAt(i); | 
| 190 | 180 | 
| 191 »       »       m_aNativeFont.RemoveAll(); | 181         m_aNativeFont.RemoveAll(); | 
| 192 »       } | 182     } | 
| 193 } | 183 } | 
| 194 | 184 | 
| 195 void CPWL_FontMap::Initial(const FX_CHAR* fontname) | 185 void CPWL_FontMap::Initial(const FX_CHAR* fontname) | 
| 196 { | 186 { | 
| 197 »       CFX_ByteString sFontName = fontname; | 187     CFX_ByteString sFontName = fontname; | 
| 198 | 188 | 
| 199 »       if (sFontName.IsEmpty()) | 189     if (sFontName.IsEmpty()) | 
| 200 »       »       sFontName = DEFAULT_FONT_NAME; | 190         sFontName = DEFAULT_FONT_NAME; | 
| 201 | 191 | 
| 202 »       GetFontIndex(sFontName, ANSI_CHARSET, FALSE); | 192     GetFontIndex(sFontName, ANSI_CHARSET, FALSE); | 
| 203 } | 193 } | 
| 204 | 194 | 
| 205 | 195 | 
| 206 /* | 196 /* | 
| 207 List of currently supported standard fonts: | 197 List of currently supported standard fonts: | 
| 208 Courier, Courier-Bold, Courier-BoldOblique, Courier-Oblique | 198 Courier, Courier-Bold, Courier-BoldOblique, Courier-Oblique | 
| 209 Helvetica, Helvetica-Bold, Helvetica-BoldOblique, Helvetica-Oblique | 199 Helvetica, Helvetica-Bold, Helvetica-BoldOblique, Helvetica-Oblique | 
| 210 Times-Roman, Times-Bold, Times-Italic, Times-BoldItalic | 200 Times-Roman, Times-Bold, Times-Italic, Times-BoldItalic | 
| 211 Symbol, ZapfDingbats | 201 Symbol, ZapfDingbats | 
| 212 */ | 202 */ | 
| 213 | 203 | 
| 214 const char* g_sDEStandardFontName[] = {"Courier", "Courier-Bold", "Courier-BoldO
     blique", "Courier-Oblique", | 204 const char* g_sDEStandardFontName[] = {"Courier", "Courier-Bold", "Courier-BoldO
     blique", "Courier-Oblique", | 
| 215 »       "Helvetica", "Helvetica-Bold", "Helvetica-BoldOblique", "Helvetica-Obliq
     ue", | 205     "Helvetica", "Helvetica-Bold", "Helvetica-BoldOblique", "Helvetica-Oblique", | 
| 216 »       "Times-Roman", "Times-Bold", "Times-Italic", "Times-BoldItalic", | 206     "Times-Roman", "Times-Bold", "Times-Italic", "Times-BoldItalic", | 
| 217 »       "Symbol", "ZapfDingbats"}; | 207     "Symbol", "ZapfDingbats"}; | 
| 218 | 208 | 
| 219 FX_BOOL»CPWL_FontMap::IsStandardFont(const CFX_ByteString& sFontName) | 209 FX_BOOL CPWL_FontMap::IsStandardFont(const CFX_ByteString& sFontName) | 
| 220 { | 210 { | 
| 221 »       for (int32_t i=0; i<14; i++) | 211     for (int32_t i=0; i<14; i++) | 
| 222 »       { | 212     { | 
| 223 »       »       if (sFontName == g_sDEStandardFontName[i]) | 213         if (sFontName == g_sDEStandardFontName[i]) | 
| 224 »       »       »       return TRUE; | 214             return TRUE; | 
| 225 »       } | 215     } | 
| 226 | 216 | 
| 227 »       return FALSE; | 217     return FALSE; | 
| 228 } | 218 } | 
| 229 | 219 | 
| 230 int32_t CPWL_FontMap::FindFont(const CFX_ByteString& sFontName, int32_t nCharset
     ) | 220 int32_t CPWL_FontMap::FindFont(const CFX_ByteString& sFontName, int32_t nCharset
     ) | 
| 231 { | 221 { | 
| 232 »       for (int32_t i=0,sz=m_aData.GetSize(); i<sz; i++) | 222     for (int32_t i=0,sz=m_aData.GetSize(); i<sz; i++) | 
| 233 »       { | 223     { | 
| 234 »       »       if (CPWL_FontMap_Data* pData = m_aData.GetAt(i)) | 224         if (CPWL_FontMap_Data* pData = m_aData.GetAt(i)) | 
| 235 »       »       { | 225         { | 
| 236 »       »       »       if (nCharset == DEFAULT_CHARSET || nCharset == pData->nC
     harset) | 226             if (nCharset == DEFAULT_CHARSET || nCharset == pData->nCharset) | 
| 237 »       »       »       { | 227             { | 
| 238 »       »       »       »       if (sFontName.IsEmpty() || pData->sFontName == s
     FontName) | 228                 if (sFontName.IsEmpty() || pData->sFontName == sFontName) | 
| 239 »       »       »       »       »       return i; | 229                     return i; | 
| 240 »       »       »       } | 230             } | 
| 241 »       »       } | 231         } | 
| 242 »       } | 232     } | 
| 243 | 233 | 
| 244 »       return -1; | 234     return -1; | 
| 245 } | 235 } | 
| 246 | 236 | 
| 247 int32_t CPWL_FontMap::GetFontIndex(const CFX_ByteString& sFontName, int32_t nCha
     rset, FX_BOOL bFind) | 237 int32_t CPWL_FontMap::GetFontIndex(const CFX_ByteString& sFontName, int32_t nCha
     rset, FX_BOOL bFind) | 
| 248 { | 238 { | 
| 249 »       int32_t nFontIndex = FindFont(EncodeFontAlias(sFontName, nCharset), nCha
     rset); | 239     int32_t nFontIndex = FindFont(EncodeFontAlias(sFontName, nCharset), nCharset
     ); | 
| 250 »       if (nFontIndex >= 0) return nFontIndex; | 240     if (nFontIndex >= 0) | 
|  | 241         return nFontIndex; | 
| 251 | 242 | 
| 252 //»     nFontIndex = FindFont("", nCharset); | 243     CFX_ByteString sAlias; | 
| 253 //»     if (nFontIndex >= 0) return nFontIndex; | 244     CPDF_Font* pFont = NULL; | 
|  | 245     if (bFind) | 
|  | 246         pFont = FindFontSameCharset(sAlias, nCharset); | 
| 254 | 247 | 
| 255 »       CFX_ByteString sAlias; | 248     if (!pFont) | 
| 256 »       CPDF_Font* pFont = NULL; | 249     { | 
| 257 | 250         CFX_ByteString sTemp = sFontName; | 
| 258 »       if (bFind) | 251         pFont = AddFontToDocument(GetDocument(), sTemp, nCharset); | 
| 259 »       »       pFont = FindFontSameCharset(sAlias, nCharset); | 252         sAlias = EncodeFontAlias(sTemp, nCharset); | 
| 260 | 253     } | 
| 261 »       if (!pFont) | 254     AddedFont(pFont, sAlias); | 
| 262 »       { | 255     return AddFontData(pFont, sAlias, nCharset); | 
| 263 »       »       CFX_ByteString sTemp = sFontName; |  | 
| 264 »       »       pFont = AddFontToDocument(GetDocument(), sTemp, nCharset); |  | 
| 265 |  | 
| 266 »       »       /* |  | 
| 267 »       »       if (FindFont(sAlias)) |  | 
| 268 »       »       { |  | 
| 269 »       »       »       sAlias = EncodeFontAlias(sTemp, nCharset); |  | 
| 270 »       »       } |  | 
| 271 »       »       else |  | 
| 272 »       »       */ |  | 
| 273 »       »       { |  | 
| 274 »       »       »       sAlias = EncodeFontAlias(sTemp, nCharset); |  | 
| 275 »       »       } |  | 
| 276 »       } |  | 
| 277 |  | 
| 278 »       AddedFont(pFont, sAlias); |  | 
| 279 |  | 
| 280 »       return AddFontData(pFont, sAlias, nCharset); |  | 
| 281 } | 256 } | 
| 282 | 257 | 
| 283 int32_t CPWL_FontMap::GetPWLFontIndex(FX_WORD word, int32_t nCharset) | 258 int32_t CPWL_FontMap::GetPWLFontIndex(FX_WORD word, int32_t nCharset) | 
| 284 { | 259 { | 
| 285 »       int32_t nFind = -1; | 260     int32_t nFind = -1; | 
| 286 | 261 | 
| 287 »       for (int32_t i=0,sz=m_aData.GetSize(); i<sz; i++) | 262     for (int32_t i=0,sz=m_aData.GetSize(); i<sz; i++) | 
| 288 »       { | 263     { | 
| 289 »       »       if (CPWL_FontMap_Data* pData = m_aData.GetAt(i)) | 264         if (CPWL_FontMap_Data* pData = m_aData.GetAt(i)) | 
| 290 »       »       { | 265         { | 
| 291 »       »       »       if (pData->nCharset == nCharset) | 266             if (pData->nCharset == nCharset) | 
| 292 »       »       »       { | 267             { | 
| 293 »       »       »       »       nFind = i; | 268                 nFind = i; | 
| 294 »       »       »       »       break; | 269                 break; | 
| 295 »       »       »       } | 270             } | 
| 296 »       »       } | 271         } | 
| 297 »       } | 272     } | 
| 298 | 273 | 
| 299 »       CPDF_Font* pNewFont = GetPDFFont(nFind); | 274     CPDF_Font* pNewFont = GetPDFFont(nFind); | 
| 300 | 275 | 
| 301 »       if (!pNewFont) return -1; | 276     if (!pNewFont) return -1; | 
| 302 | 277 | 
| 303 »       /* | 278     /* | 
| 304 »       if (CPDF_Font* pFont = GetPDFFont(nFind)) | 279     if (CPDF_Font* pFont = GetPDFFont(nFind)) | 
| 305 »       { | 280     { | 
| 306 »       »       PWLFont.AddWordToFontDict(pFontDict, word); | 281         PWLFont.AddWordToFontDict(pFontDict, word); | 
| 307 »       } | 282     } | 
| 308 »       */ | 283     */ | 
| 309 | 284 | 
| 310 »       CFX_ByteString sAlias = EncodeFontAlias("Arial_Chrome", nCharset); | 285     CFX_ByteString sAlias = EncodeFontAlias("Arial_Chrome", nCharset); | 
| 311 »       AddedFont(pNewFont, sAlias); | 286     AddedFont(pNewFont, sAlias); | 
| 312 | 287 | 
| 313 »       return AddFontData(pNewFont, sAlias, nCharset); | 288     return AddFontData(pNewFont, sAlias, nCharset); | 
| 314 } | 289 } | 
| 315 | 290 | 
| 316 CPDF_Font* CPWL_FontMap::FindFontSameCharset(CFX_ByteString& sFontAlias, int32_t
      nCharset) | 291 CPDF_Font* CPWL_FontMap::FindFontSameCharset(CFX_ByteString& sFontAlias, int32_t
      nCharset) | 
| 317 { | 292 { | 
| 318 »       return NULL; | 293     return NULL; | 
| 319 } | 294 } | 
| 320 | 295 | 
| 321 int32_t CPWL_FontMap::AddFontData(CPDF_Font* pFont, const CFX_ByteString& sFontA
     lias, int32_t nCharset) | 296 int32_t CPWL_FontMap::AddFontData(CPDF_Font* pFont, const CFX_ByteString& sFontA
     lias, int32_t nCharset) | 
| 322 { | 297 { | 
| 323 »       CPWL_FontMap_Data* pNewData = new CPWL_FontMap_Data; | 298     CPWL_FontMap_Data* pNewData = new CPWL_FontMap_Data; | 
| 324 »       pNewData->pFont = pFont; | 299     pNewData->pFont = pFont; | 
| 325 »       pNewData->sFontName = sFontAlias; | 300     pNewData->sFontName = sFontAlias; | 
| 326 »       pNewData->nCharset = nCharset; | 301     pNewData->nCharset = nCharset; | 
| 327 | 302 | 
| 328 »       m_aData.Add(pNewData); | 303     m_aData.Add(pNewData); | 
| 329 | 304 | 
| 330 »       return m_aData.GetSize() -1; | 305     return m_aData.GetSize() -1; | 
| 331 } | 306 } | 
| 332 | 307 | 
| 333 void CPWL_FontMap::AddedFont(CPDF_Font* pFont, const CFX_ByteString& sFontAlias) | 308 void CPWL_FontMap::AddedFont(CPDF_Font* pFont, const CFX_ByteString& sFontAlias) | 
| 334 { | 309 { | 
| 335 } | 310 } | 
| 336 | 311 | 
| 337 CFX_ByteString CPWL_FontMap::GetFontName(int32_t nFontIndex) | 312 CFX_ByteString CPWL_FontMap::GetFontName(int32_t nFontIndex) | 
| 338 { | 313 { | 
| 339 »       if (nFontIndex >=0 && nFontIndex < m_aData.GetSize()) | 314     if (nFontIndex >=0 && nFontIndex < m_aData.GetSize()) | 
| 340 »       { | 315     { | 
| 341 »       »       if (CPWL_FontMap_Data* pData = m_aData.GetAt(nFontIndex)) | 316         if (CPWL_FontMap_Data* pData = m_aData.GetAt(nFontIndex)) | 
| 342 »       »       { | 317         { | 
| 343 »       »       »       return pData->sFontName; | 318             return pData->sFontName; | 
| 344 »       »       } | 319         } | 
| 345 »       } | 320     } | 
| 346 | 321 | 
| 347 »       return ""; | 322     return ""; | 
| 348 } | 323 } | 
| 349 | 324 | 
| 350 CFX_ByteString CPWL_FontMap::GetNativeFont(int32_t nCharset) | 325 CFX_ByteString CPWL_FontMap::GetNativeFont(int32_t nCharset) | 
| 351 { | 326 { | 
| 352 »       CFX_ByteString sFontName; | 327 | 
| 353 | 328     if (nCharset == DEFAULT_CHARSET) | 
| 354 »       if (nCharset == DEFAULT_CHARSET) | 329         nCharset = GetNativeCharset(); | 
| 355 »       »       nCharset = GetNativeCharset(); | 330 | 
| 356 | 331     CFX_ByteString sFontName = GetDefaultFontByCharset(nCharset); | 
| 357 »       sFontName = GetDefaultFontByCharset(nCharset); | 332     if (m_pSystemHandler) | 
| 358 | 333     { | 
| 359 »       if (m_pSystemHandler) | 334         if (m_pSystemHandler->FindNativeTrueTypeFont(nCharset, sFontName)) | 
| 360 »       { | 335             return sFontName; | 
| 361 »       »       if (m_pSystemHandler->FindNativeTrueTypeFont(nCharset, sFontName
     )) | 336 | 
| 362 »       »       »       return sFontName; | 337         sFontName = m_pSystemHandler->GetNativeTrueTypeFont(nCharset); | 
| 363 | 338     } | 
| 364 »       »       sFontName = m_pSystemHandler->GetNativeTrueTypeFont(nCharset); | 339     return sFontName; | 
| 365 »       } |  | 
| 366 |  | 
| 367 »       return sFontName; |  | 
| 368 } | 340 } | 
| 369 | 341 | 
| 370 CPDF_Font* CPWL_FontMap::AddFontToDocument(CPDF_Document* pDoc, CFX_ByteString& 
     sFontName, uint8_t nCharset) | 342 CPDF_Font* CPWL_FontMap::AddFontToDocument(CPDF_Document* pDoc, CFX_ByteString& 
     sFontName, uint8_t nCharset) | 
| 371 { | 343 { | 
| 372 »       if (IsStandardFont(sFontName)) | 344     if (IsStandardFont(sFontName)) | 
| 373 »       »       return AddStandardFont(pDoc, sFontName); | 345         return AddStandardFont(pDoc, sFontName); | 
| 374 »       else | 346 | 
| 375 »       »       return AddSystemFont(pDoc, sFontName, nCharset); | 347     return AddSystemFont(pDoc, sFontName, nCharset); | 
| 376 } | 348 } | 
| 377 | 349 | 
| 378 CPDF_Font* CPWL_FontMap::AddStandardFont(CPDF_Document* pDoc, CFX_ByteString& sF
     ontName) | 350 CPDF_Font* CPWL_FontMap::AddStandardFont(CPDF_Document* pDoc, CFX_ByteString& sF
     ontName) | 
| 379 { | 351 { | 
| 380 »       if (!pDoc) return NULL; | 352     if (!pDoc) return NULL; | 
| 381 | 353 | 
| 382 »       CPDF_Font* pFont = NULL; | 354     CPDF_Font* pFont = NULL; | 
| 383 | 355 | 
| 384 »       if (sFontName == "ZapfDingbats") | 356     if (sFontName == "ZapfDingbats") | 
| 385 »       »       pFont = pDoc->AddStandardFont(sFontName, NULL); | 357         pFont = pDoc->AddStandardFont(sFontName, NULL); | 
| 386 »       else | 358     else | 
| 387 »       { | 359     { | 
| 388 »       »       CPDF_FontEncoding fe(PDFFONT_ENCODING_WINANSI); | 360         CPDF_FontEncoding fe(PDFFONT_ENCODING_WINANSI); | 
| 389 »       »       pFont = pDoc->AddStandardFont(sFontName, &fe); | 361         pFont = pDoc->AddStandardFont(sFontName, &fe); | 
| 390 »       } | 362     } | 
| 391 | 363 | 
| 392 »       return pFont; | 364     return pFont; | 
| 393 } | 365 } | 
| 394 | 366 | 
| 395 CPDF_Font* CPWL_FontMap::AddSystemFont(CPDF_Document* pDoc, CFX_ByteString& sFon
     tName, uint8_t nCharset) | 367 CPDF_Font* CPWL_FontMap::AddSystemFont(CPDF_Document* pDoc, CFX_ByteString& sFon
     tName, uint8_t nCharset) | 
| 396 { | 368 { | 
| 397 »       if (!pDoc) return NULL; | 369     if (!pDoc) return NULL; | 
| 398 | 370 | 
| 399 »       if (sFontName.IsEmpty()) sFontName = GetNativeFont(nCharset); | 371     if (sFontName.IsEmpty()) sFontName = GetNativeFont(nCharset); | 
| 400 »       if (nCharset == DEFAULT_CHARSET) nCharset = GetNativeCharset(); | 372     if (nCharset == DEFAULT_CHARSET) nCharset = GetNativeCharset(); | 
| 401 | 373 | 
| 402 »       if (m_pSystemHandler) | 374     if (m_pSystemHandler) | 
| 403 »       »       return m_pSystemHandler->AddNativeTrueTypeFontToPDF(pDoc, sFontN
     ame, nCharset); | 375         return m_pSystemHandler->AddNativeTrueTypeFontToPDF(pDoc, sFontName, nCh
     arset); | 
| 404 | 376 | 
| 405 »       return NULL; | 377     return NULL; | 
| 406 } | 378 } | 
| 407 | 379 | 
| 408 CFX_ByteString CPWL_FontMap::EncodeFontAlias(const CFX_ByteString& sFontName, in
     t32_t nCharset) | 380 CFX_ByteString CPWL_FontMap::EncodeFontAlias(const CFX_ByteString& sFontName, in
     t32_t nCharset) | 
| 409 { | 381 { | 
| 410 »       CFX_ByteString sPostfix; | 382     CFX_ByteString sPostfix; | 
| 411 »       sPostfix.Format("_%02X", nCharset); | 383     sPostfix.Format("_%02X", nCharset); | 
| 412 »       return EncodeFontAlias(sFontName) + sPostfix; | 384     return EncodeFontAlias(sFontName) + sPostfix; | 
| 413 } | 385 } | 
| 414 | 386 | 
| 415 CFX_ByteString CPWL_FontMap::EncodeFontAlias(const CFX_ByteString& sFontName) | 387 CFX_ByteString CPWL_FontMap::EncodeFontAlias(const CFX_ByteString& sFontName) | 
| 416 { | 388 { | 
| 417 »       CFX_ByteString sRet = sFontName; | 389     CFX_ByteString sRet = sFontName; | 
| 418 »       sRet.Remove(' '); | 390     sRet.Remove(' '); | 
| 419 »       return sRet; | 391     return sRet; | 
| 420 } | 392 } | 
| 421 | 393 | 
| 422 int32_t CPWL_FontMap::GetFontMapCount() const | 394 int32_t CPWL_FontMap::GetFontMapCount() const | 
| 423 { | 395 { | 
| 424 »       return m_aData.GetSize(); | 396     return m_aData.GetSize(); | 
| 425 } | 397 } | 
| 426 | 398 | 
| 427 const CPWL_FontMap_Data* CPWL_FontMap::GetFontMapData(int32_t nIndex) const | 399 const CPWL_FontMap_Data* CPWL_FontMap::GetFontMapData(int32_t nIndex) const | 
| 428 { | 400 { | 
| 429 »       if (nIndex >=0 && nIndex < m_aData.GetSize()) | 401     if (nIndex >=0 && nIndex < m_aData.GetSize()) | 
| 430 »       { | 402     { | 
| 431 »       »       return m_aData.GetAt(nIndex); | 403         return m_aData.GetAt(nIndex); | 
| 432 »       } | 404     } | 
| 433 | 405 | 
| 434 »       return NULL; | 406     return NULL; | 
| 435 } | 407 } | 
| 436 | 408 | 
| 437 int32_t CPWL_FontMap::GetNativeCharset() | 409 int32_t CPWL_FontMap::GetNativeCharset() | 
| 438 { | 410 { | 
| 439 »       uint8_t nCharset = ANSI_CHARSET; | 411     uint8_t nCharset = ANSI_CHARSET; | 
| 440 »       int32_t iCodePage = FXSYS_GetACP(); | 412     int32_t iCodePage = FXSYS_GetACP(); | 
| 441 »       switch (iCodePage) | 413     switch (iCodePage) | 
| 442 »       { | 414     { | 
| 443 »       case 932://Japan | 415     case 932://Japan | 
| 444 »       »       nCharset = SHIFTJIS_CHARSET; | 416         nCharset = SHIFTJIS_CHARSET; | 
| 445 »       »       break; | 417         break; | 
| 446 »       case 936://Chinese (PRC, Singapore) | 418     case 936://Chinese (PRC, Singapore) | 
| 447 »       »       nCharset = GB2312_CHARSET; | 419         nCharset = GB2312_CHARSET; | 
| 448 »       »       break; | 420         break; | 
| 449 »       case 950://Chinese (Taiwan; Hong Kong SAR, PRC) | 421     case 950://Chinese (Taiwan; Hong Kong SAR, PRC) | 
| 450 »       »       nCharset = GB2312_CHARSET; | 422         nCharset = GB2312_CHARSET; | 
| 451 »       »       break; | 423         break; | 
| 452 »       case 1252://Windows 3.1 Latin 1 (US, Western Europe) | 424     case 1252://Windows 3.1 Latin 1 (US, Western Europe) | 
| 453 »       »       nCharset = ANSI_CHARSET; | 425         nCharset = ANSI_CHARSET; | 
| 454 »       »       break; | 426         break; | 
| 455 »       case 874://Thai | 427     case 874://Thai | 
| 456 »       »       nCharset = THAI_CHARSET; | 428         nCharset = THAI_CHARSET; | 
| 457 »       »       break; | 429         break; | 
| 458 »       case 949://Korean | 430     case 949://Korean | 
| 459 »       »       nCharset = HANGUL_CHARSET; | 431         nCharset = HANGUL_CHARSET; | 
| 460 »       »       break; | 432         break; | 
| 461 »       case 1200://Unicode (BMP of ISO 10646) | 433     case 1200://Unicode (BMP of ISO 10646) | 
| 462 »       »       nCharset = ANSI_CHARSET; | 434         nCharset = ANSI_CHARSET; | 
| 463 »       »       break; | 435         break; | 
| 464 »       case 1250://Windows 3.1 Eastern European | 436     case 1250://Windows 3.1 Eastern European | 
| 465 »       »       nCharset = EASTEUROPE_CHARSET; | 437         nCharset = EASTEUROPE_CHARSET; | 
| 466 »       »       break; | 438         break; | 
| 467 »       case 1251://Windows 3.1 Cyrillic | 439     case 1251://Windows 3.1 Cyrillic | 
| 468 »       »       nCharset = RUSSIAN_CHARSET; | 440         nCharset = RUSSIAN_CHARSET; | 
| 469 »       »       break; | 441         break; | 
| 470 »       case 1253://Windows 3.1 Greek | 442     case 1253://Windows 3.1 Greek | 
| 471 »       »       nCharset = GREEK_CHARSET; | 443         nCharset = GREEK_CHARSET; | 
| 472 »       »       break; | 444         break; | 
| 473 »       case 1254://Windows 3.1 Turkish | 445     case 1254://Windows 3.1 Turkish | 
| 474 »       »       nCharset = TURKISH_CHARSET; | 446         nCharset = TURKISH_CHARSET; | 
| 475 »       »       break; | 447         break; | 
| 476 »       case 1255://Hebrew | 448     case 1255://Hebrew | 
| 477 »       »       nCharset = HEBREW_CHARSET; | 449         nCharset = HEBREW_CHARSET; | 
| 478 »       »       break; | 450         break; | 
| 479 »       case 1256://Arabic | 451     case 1256://Arabic | 
| 480 »       »       nCharset = ARABIC_CHARSET; | 452         nCharset = ARABIC_CHARSET; | 
| 481 »       »       break; | 453         break; | 
| 482 »       case 1257://Baltic | 454     case 1257://Baltic | 
| 483 »       »       nCharset = BALTIC_CHARSET; | 455         nCharset = BALTIC_CHARSET; | 
| 484 »       »       break; | 456         break; | 
| 485 »       case 1258://Vietnamese | 457     case 1258://Vietnamese | 
| 486 »       »       nCharset = VIETNAMESE_CHARSET; | 458         nCharset = VIETNAMESE_CHARSET; | 
| 487 »       »       break; | 459         break; | 
| 488 »       case 1361://Korean(Johab) | 460     case 1361://Korean(Johab) | 
| 489 »       »       nCharset = JOHAB_CHARSET; | 461         nCharset = JOHAB_CHARSET; | 
| 490 »       »       break; | 462         break; | 
| 491 »       } | 463     } | 
| 492 »       return nCharset; | 464     return nCharset; | 
| 493 } | 465 } | 
| 494 | 466 | 
| 495 const CPWL_FontMap::CharsetFontMap CPWL_FontMap::defaultTTFMap[] = { | 467 const CPWL_FontMap::CharsetFontMap CPWL_FontMap::defaultTTFMap[] = { | 
| 496 »       { ANSI_CHARSET, "Helvetica" }, | 468     { ANSI_CHARSET, "Helvetica" }, | 
| 497 »       { GB2312_CHARSET, "SimSun" }, | 469     { GB2312_CHARSET, "SimSun" }, | 
| 498 »       { CHINESEBIG5_CHARSET, "MingLiU" }, | 470     { CHINESEBIG5_CHARSET, "MingLiU" }, | 
| 499 »       { SHIFTJIS_CHARSET, "MS Gothic" }, | 471     { SHIFTJIS_CHARSET, "MS Gothic" }, | 
| 500 »       { HANGUL_CHARSET, "Batang" }, | 472     { HANGUL_CHARSET, "Batang" }, | 
| 501 »       { RUSSIAN_CHARSET, "Arial" }, | 473     { RUSSIAN_CHARSET, "Arial" }, | 
| 502 #if _FXM_PLATFORM_ == _FXM_PLATFORM_LINUX_ || _FXM_PLATFORM_ == _FXM_PLATFORM_AP
     PLE_ | 474 #if _FXM_PLATFORM_ == _FXM_PLATFORM_LINUX_ || _FXM_PLATFORM_ == _FXM_PLATFORM_AP
     PLE_ | 
| 503 »       { EASTEUROPE_CHARSET, "Arial" }, | 475     { EASTEUROPE_CHARSET, "Arial" }, | 
| 504 #else | 476 #else | 
| 505 »       { EASTEUROPE_CHARSET, "Tahoma" }, | 477     { EASTEUROPE_CHARSET, "Tahoma" }, | 
| 506 #endif | 478 #endif | 
| 507 »       { ARABIC_CHARSET, "Arial" }, | 479     { ARABIC_CHARSET, "Arial" }, | 
| 508 »       { -1, NULL } | 480     { -1, NULL } | 
| 509 }; | 481 }; | 
| 510 | 482 | 
| 511 CFX_ByteString CPWL_FontMap::GetDefaultFontByCharset(int32_t nCharset) | 483 CFX_ByteString CPWL_FontMap::GetDefaultFontByCharset(int32_t nCharset) | 
| 512 { | 484 { | 
| 513 »       int i = 0; | 485     int i = 0; | 
| 514 »       while (defaultTTFMap[i].charset != -1) { | 486     while (defaultTTFMap[i].charset != -1) { | 
| 515 »       »       if (nCharset == defaultTTFMap[i].charset) | 487         if (nCharset == defaultTTFMap[i].charset) | 
| 516 »       »       »       return defaultTTFMap[i].fontname; | 488             return defaultTTFMap[i].fontname; | 
| 517         ++i; | 489         ++i; | 
| 518 »       } | 490     } | 
| 519 »       return ""; | 491     return ""; | 
| 520 } | 492 } | 
| 521 | 493 | 
| 522 int32_t CPWL_FontMap::CharSetFromUnicode(FX_WORD word, int32_t nOldCharset) | 494 int32_t CPWL_FontMap::CharSetFromUnicode(FX_WORD word, int32_t nOldCharset) | 
| 523 { | 495 { | 
| 524 »       if(m_pSystemHandler && (-1 != m_pSystemHandler->GetCharSet())) | 496     if(m_pSystemHandler && (-1 != m_pSystemHandler->GetCharSet())) | 
| 525 »       »       return m_pSystemHandler->GetCharSet(); | 497         return m_pSystemHandler->GetCharSet(); | 
| 526 »       //to avoid CJK Font to show ASCII | 498     //to avoid CJK Font to show ASCII | 
| 527 »       if (word < 0x7F) return ANSI_CHARSET; | 499     if (word < 0x7F) return ANSI_CHARSET; | 
| 528 »       //follow the old charset | 500     //follow the old charset | 
| 529 »       if (nOldCharset != DEFAULT_CHARSET) return nOldCharset; | 501     if (nOldCharset != DEFAULT_CHARSET) return nOldCharset; | 
| 530 | 502 | 
| 531 »       //find new charset | 503     //find new charset | 
| 532 »       if ((word >= 0x4E00 && word <= 0x9FA5) || | 504     if ((word >= 0x4E00 && word <= 0x9FA5) || | 
| 533 »       »       (word >= 0xE7C7 && word <= 0xE7F3) || | 505         (word >= 0xE7C7 && word <= 0xE7F3) || | 
| 534 »       »       (word >= 0x3000 && word <= 0x303F) || | 506         (word >= 0x3000 && word <= 0x303F) || | 
| 535 »       »       (word >= 0x2000 && word <= 0x206F)) | 507         (word >= 0x2000 && word <= 0x206F)) | 
| 536 »       { | 508     { | 
| 537 »       »       return GB2312_CHARSET; | 509         return GB2312_CHARSET; | 
| 538 »       } | 510     } | 
| 539 | 511 | 
| 540 »       if (((word >= 0x3040) && (word <= 0x309F)) || | 512     if (((word >= 0x3040) && (word <= 0x309F)) || | 
| 541 »       »       ((word >= 0x30A0) && (word <= 0x30FF)) || | 513         ((word >= 0x30A0) && (word <= 0x30FF)) || | 
| 542 »       »       ((word >= 0x31F0) && (word <= 0x31FF)) || | 514         ((word >= 0x31F0) && (word <= 0x31FF)) || | 
| 543 »       »       ((word >= 0xFF00) && (word <= 0xFFEF)) ) | 515         ((word >= 0xFF00) && (word <= 0xFFEF)) ) | 
| 544 »       { | 516     { | 
| 545 »       »       return SHIFTJIS_CHARSET; | 517         return SHIFTJIS_CHARSET; | 
| 546 »       } | 518     } | 
| 547 | 519 | 
| 548 »       if (((word >= 0xAC00) && (word <= 0xD7AF)) || | 520     if (((word >= 0xAC00) && (word <= 0xD7AF)) || | 
| 549 »       »       ((word >= 0x1100) && (word <= 0x11FF)) || | 521         ((word >= 0x1100) && (word <= 0x11FF)) || | 
| 550 »       »       ((word >= 0x3130) && (word <= 0x318F))) | 522         ((word >= 0x3130) && (word <= 0x318F))) | 
| 551 »       { | 523     { | 
| 552 »       »       return HANGUL_CHARSET; | 524         return HANGUL_CHARSET; | 
| 553 »       } | 525     } | 
| 554 | 526 | 
| 555 »       if (word >= 0x0E00 && word <= 0x0E7F) | 527     if (word >= 0x0E00 && word <= 0x0E7F) | 
| 556 »       »       return THAI_CHARSET; | 528         return THAI_CHARSET; | 
| 557 | 529 | 
| 558 »       if ((word >= 0x0370 && word <= 0x03FF) || | 530     if ((word >= 0x0370 && word <= 0x03FF) || | 
| 559 »       »       (word >= 0x1F00 && word <= 0x1FFF)) | 531         (word >= 0x1F00 && word <= 0x1FFF)) | 
| 560 »       »       return GREEK_CHARSET; | 532         return GREEK_CHARSET; | 
| 561 | 533 | 
| 562 »       if ((word >= 0x0600 && word <= 0x06FF) || | 534     if ((word >= 0x0600 && word <= 0x06FF) || | 
| 563 »       »       (word >= 0xFB50 && word <= 0xFEFC)) | 535         (word >= 0xFB50 && word <= 0xFEFC)) | 
| 564 »       »       return ARABIC_CHARSET; | 536         return ARABIC_CHARSET; | 
| 565 | 537 | 
| 566 »       if (word >= 0x0590 && word <= 0x05FF) | 538     if (word >= 0x0590 && word <= 0x05FF) | 
| 567 »       »       return HEBREW_CHARSET; | 539         return HEBREW_CHARSET; | 
| 568 | 540 | 
| 569 »       if (word >= 0x0400 && word <= 0x04FF) | 541     if (word >= 0x0400 && word <= 0x04FF) | 
| 570 »       »       return RUSSIAN_CHARSET; | 542         return RUSSIAN_CHARSET; | 
| 571 | 543 | 
| 572 »       if (word >= 0x0100 && word <= 0x024F) | 544     if (word >= 0x0100 && word <= 0x024F) | 
| 573 »       »       return EASTEUROPE_CHARSET; | 545         return EASTEUROPE_CHARSET; | 
| 574 | 546 | 
| 575 »       if (word >= 0x1E00 && word <= 0x1EFF) | 547     if (word >= 0x1E00 && word <= 0x1EFF) | 
| 576 »       »       return VIETNAMESE_CHARSET; | 548         return VIETNAMESE_CHARSET; | 
| 577 | 549 | 
| 578 »       return ANSI_CHARSET; | 550     return ANSI_CHARSET; | 
| 579 } | 551 } | 
| 580 | 552 | 
| 581 /* ------------------------ CPWL_DocFontMap ------------------------ */ | 553 /* ------------------------ CPWL_DocFontMap ------------------------ */ | 
| 582 | 554 | 
| 583 CPWL_DocFontMap::CPWL_DocFontMap(IFX_SystemHandler* pSystemHandler, CPDF_Documen
     t* pAttachedDoc) | 555 CPWL_DocFontMap::CPWL_DocFontMap(IFX_SystemHandler* pSystemHandler, CPDF_Documen
     t* pAttachedDoc) | 
| 584 »       : CPWL_FontMap(pSystemHandler), | 556     : CPWL_FontMap(pSystemHandler), | 
| 585 »       m_pAttachedDoc(pAttachedDoc) | 557     m_pAttachedDoc(pAttachedDoc) | 
| 586 { | 558 { | 
| 587 } | 559 } | 
| 588 | 560 | 
| 589 CPWL_DocFontMap::~CPWL_DocFontMap() | 561 CPWL_DocFontMap::~CPWL_DocFontMap() | 
| 590 { | 562 { | 
| 591 } | 563 } | 
| 592 | 564 | 
| 593 CPDF_Document* CPWL_DocFontMap::GetDocument() | 565 CPDF_Document* CPWL_DocFontMap::GetDocument() | 
| 594 { | 566 { | 
| 595 »       return m_pAttachedDoc; | 567     return m_pAttachedDoc; | 
| 596 } | 568 } | 
| OLD | NEW | 
|---|