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 "core/fxcrt/include/fx_system.h" | 7 #include "core/fxcrt/include/fx_system.h" |
8 | 8 |
9 #if _FX_OS_ == _FX_ANDROID_ | 9 #if _FX_OS_ == _FX_ANDROID_ |
10 | 10 |
(...skipping 24 matching lines...) Expand all Loading... |
35 return 0; | 35 return 0; |
36 } | 36 } |
37 } | 37 } |
38 return count; | 38 return count; |
39 } | 39 } |
40 static void FPF_SkiaStream_Close(FXFT_Stream stream) {} | 40 static void FPF_SkiaStream_Close(FXFT_Stream stream) {} |
41 #ifdef __cplusplus | 41 #ifdef __cplusplus |
42 }; | 42 }; |
43 #endif | 43 #endif |
44 struct FPF_SKIAFONTMAP { | 44 struct FPF_SKIAFONTMAP { |
45 FX_DWORD dwFamily; | 45 uint32_t dwFamily; |
46 FX_DWORD dwSubSt; | 46 uint32_t dwSubSt; |
47 }; | 47 }; |
48 static const FPF_SKIAFONTMAP g_SkiaFontmap[] = { | 48 static const FPF_SKIAFONTMAP g_SkiaFontmap[] = { |
49 {0x58c5083, 0xc8d2e345}, {0x5dfade2, 0xe1633081}, | 49 {0x58c5083, 0xc8d2e345}, {0x5dfade2, 0xe1633081}, |
50 {0x684317d, 0xe1633081}, {0x14ee2d13, 0xc8d2e345}, | 50 {0x684317d, 0xe1633081}, {0x14ee2d13, 0xc8d2e345}, |
51 {0x3918fe2d, 0xbbeeec72}, {0x3b98b31c, 0xe1633081}, | 51 {0x3918fe2d, 0xbbeeec72}, {0x3b98b31c, 0xe1633081}, |
52 {0x3d49f40e, 0xe1633081}, {0x432c41c5, 0xe1633081}, | 52 {0x3d49f40e, 0xe1633081}, {0x432c41c5, 0xe1633081}, |
53 {0x491b6ad0, 0xe1633081}, {0x5612cab1, 0x59b9f8f1}, | 53 {0x491b6ad0, 0xe1633081}, {0x5612cab1, 0x59b9f8f1}, |
54 {0x779ce19d, 0xc8d2e345}, {0x7cc9510b, 0x59b9f8f1}, | 54 {0x779ce19d, 0xc8d2e345}, {0x7cc9510b, 0x59b9f8f1}, |
55 {0x83746053, 0xbbeeec72}, {0xaaa60c03, 0xbbeeec72}, | 55 {0x83746053, 0xbbeeec72}, {0xaaa60c03, 0xbbeeec72}, |
56 {0xbf85ff26, 0xe1633081}, {0xc04fe601, 0xbbeeec72}, | 56 {0xbf85ff26, 0xe1633081}, {0xc04fe601, 0xbbeeec72}, |
57 {0xca3812d5, 0x59b9f8f1}, {0xca383e15, 0x59b9f8f1}, | 57 {0xca3812d5, 0x59b9f8f1}, {0xca383e15, 0x59b9f8f1}, |
58 {0xcad5eaf6, 0x59b9f8f1}, {0xcb7a04c8, 0xc8d2e345}, | 58 {0xcad5eaf6, 0x59b9f8f1}, {0xcb7a04c8, 0xc8d2e345}, |
59 {0xfb4ce0de, 0xe1633081}, | 59 {0xfb4ce0de, 0xe1633081}, |
60 }; | 60 }; |
61 FX_DWORD FPF_SkiaGetSubstFont(FX_DWORD dwHash) { | 61 uint32_t FPF_SkiaGetSubstFont(uint32_t dwHash) { |
62 int32_t iStart = 0; | 62 int32_t iStart = 0; |
63 int32_t iEnd = sizeof(g_SkiaFontmap) / sizeof(FPF_SKIAFONTMAP); | 63 int32_t iEnd = sizeof(g_SkiaFontmap) / sizeof(FPF_SKIAFONTMAP); |
64 while (iStart <= iEnd) { | 64 while (iStart <= iEnd) { |
65 int32_t iMid = (iStart + iEnd) / 2; | 65 int32_t iMid = (iStart + iEnd) / 2; |
66 const FPF_SKIAFONTMAP* pItem = &g_SkiaFontmap[iMid]; | 66 const FPF_SKIAFONTMAP* pItem = &g_SkiaFontmap[iMid]; |
67 if (dwHash < pItem->dwFamily) { | 67 if (dwHash < pItem->dwFamily) { |
68 iEnd = iMid - 1; | 68 iEnd = iMid - 1; |
69 } else if (dwHash > pItem->dwFamily) { | 69 } else if (dwHash > pItem->dwFamily) { |
70 iStart = iMid + 1; | 70 iStart = iMid + 1; |
71 } else { | 71 } else { |
72 return pItem->dwSubSt; | 72 return pItem->dwSubSt; |
73 } | 73 } |
74 } | 74 } |
75 return 0; | 75 return 0; |
76 } | 76 } |
77 static const FPF_SKIAFONTMAP g_SkiaSansFontMap[] = { | 77 static const FPF_SKIAFONTMAP g_SkiaSansFontMap[] = { |
78 {0x58c5083, 0xd5b8d10f}, {0x14ee2d13, 0xd5b8d10f}, | 78 {0x58c5083, 0xd5b8d10f}, {0x14ee2d13, 0xd5b8d10f}, |
79 {0x779ce19d, 0xd5b8d10f}, {0xcb7a04c8, 0xd5b8d10f}, | 79 {0x779ce19d, 0xd5b8d10f}, {0xcb7a04c8, 0xd5b8d10f}, |
80 {0xfb4ce0de, 0xd5b8d10f}, | 80 {0xfb4ce0de, 0xd5b8d10f}, |
81 }; | 81 }; |
82 FX_DWORD FPF_SkiaGetSansFont(FX_DWORD dwHash) { | 82 uint32_t FPF_SkiaGetSansFont(uint32_t dwHash) { |
83 int32_t iStart = 0; | 83 int32_t iStart = 0; |
84 int32_t iEnd = sizeof(g_SkiaSansFontMap) / sizeof(FPF_SKIAFONTMAP); | 84 int32_t iEnd = sizeof(g_SkiaSansFontMap) / sizeof(FPF_SKIAFONTMAP); |
85 while (iStart <= iEnd) { | 85 while (iStart <= iEnd) { |
86 int32_t iMid = (iStart + iEnd) / 2; | 86 int32_t iMid = (iStart + iEnd) / 2; |
87 const FPF_SKIAFONTMAP* pItem = &g_SkiaSansFontMap[iMid]; | 87 const FPF_SKIAFONTMAP* pItem = &g_SkiaSansFontMap[iMid]; |
88 if (dwHash < pItem->dwFamily) { | 88 if (dwHash < pItem->dwFamily) { |
89 iEnd = iMid - 1; | 89 iEnd = iMid - 1; |
90 } else if (dwHash > pItem->dwFamily) { | 90 } else if (dwHash > pItem->dwFamily) { |
91 iStart = iMid + 1; | 91 iStart = iMid + 1; |
92 } else { | 92 } else { |
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
131 FPF_SKIACHARSET_Vietnamese = 1 << 10, | 131 FPF_SKIACHARSET_Vietnamese = 1 << 10, |
132 FPF_SKIACHARSET_Hebrew = 1 << 11, | 132 FPF_SKIACHARSET_Hebrew = 1 << 11, |
133 FPF_SKIACHARSET_Arabic = 1 << 12, | 133 FPF_SKIACHARSET_Arabic = 1 << 12, |
134 FPF_SKIACHARSET_Baltic = 1 << 13, | 134 FPF_SKIACHARSET_Baltic = 1 << 13, |
135 FPF_SKIACHARSET_Cyrillic = 1 << 14, | 135 FPF_SKIACHARSET_Cyrillic = 1 << 14, |
136 FPF_SKIACHARSET_Thai = 1 << 15, | 136 FPF_SKIACHARSET_Thai = 1 << 15, |
137 FPF_SKIACHARSET_EeasternEuropean = 1 << 16, | 137 FPF_SKIACHARSET_EeasternEuropean = 1 << 16, |
138 FPF_SKIACHARSET_PC = 1 << 17, | 138 FPF_SKIACHARSET_PC = 1 << 17, |
139 FPF_SKIACHARSET_OEM = 1 << 18, | 139 FPF_SKIACHARSET_OEM = 1 << 18, |
140 }; | 140 }; |
141 static FX_DWORD FPF_SkiaGetCharset(uint8_t uCharset) { | 141 static uint32_t FPF_SkiaGetCharset(uint8_t uCharset) { |
142 switch (uCharset) { | 142 switch (uCharset) { |
143 case FXFONT_ANSI_CHARSET: | 143 case FXFONT_ANSI_CHARSET: |
144 return FPF_SKIACHARSET_Ansi; | 144 return FPF_SKIACHARSET_Ansi; |
145 case FXFONT_DEFAULT_CHARSET: | 145 case FXFONT_DEFAULT_CHARSET: |
146 return FPF_SKIACHARSET_Default; | 146 return FPF_SKIACHARSET_Default; |
147 case FXFONT_SYMBOL_CHARSET: | 147 case FXFONT_SYMBOL_CHARSET: |
148 return FPF_SKIACHARSET_Symbol; | 148 return FPF_SKIACHARSET_Symbol; |
149 case FXFONT_SHIFTJIS_CHARSET: | 149 case FXFONT_SHIFTJIS_CHARSET: |
150 return FPF_SKIACHARSET_ShiftJIS; | 150 return FPF_SKIACHARSET_ShiftJIS; |
151 case FXFONT_HANGEUL_CHARSET: | 151 case FXFONT_HANGEUL_CHARSET: |
(...skipping 14 matching lines...) Expand all Loading... |
166 return FPF_SKIACHARSET_Baltic; | 166 return FPF_SKIACHARSET_Baltic; |
167 case FXFONT_RUSSIAN_CHARSET: | 167 case FXFONT_RUSSIAN_CHARSET: |
168 return FPF_SKIACHARSET_Cyrillic; | 168 return FPF_SKIACHARSET_Cyrillic; |
169 case FXFONT_THAI_CHARSET: | 169 case FXFONT_THAI_CHARSET: |
170 return FPF_SKIACHARSET_Thai; | 170 return FPF_SKIACHARSET_Thai; |
171 case FXFONT_EASTEUROPE_CHARSET: | 171 case FXFONT_EASTEUROPE_CHARSET: |
172 return FPF_SKIACHARSET_EeasternEuropean; | 172 return FPF_SKIACHARSET_EeasternEuropean; |
173 } | 173 } |
174 return FPF_SKIACHARSET_Default; | 174 return FPF_SKIACHARSET_Default; |
175 } | 175 } |
176 static FX_DWORD FPF_SKIANormalizeFontName(const CFX_ByteStringC& bsfamily) { | 176 static uint32_t FPF_SKIANormalizeFontName(const CFX_ByteStringC& bsfamily) { |
177 FX_DWORD dwHash = 0; | 177 uint32_t dwHash = 0; |
178 int32_t iLength = bsfamily.GetLength(); | 178 int32_t iLength = bsfamily.GetLength(); |
179 const FX_CHAR* pBuffer = bsfamily.GetCStr(); | 179 const FX_CHAR* pBuffer = bsfamily.GetCStr(); |
180 for (int32_t i = 0; i < iLength; i++) { | 180 for (int32_t i = 0; i < iLength; i++) { |
181 FX_CHAR ch = pBuffer[i]; | 181 FX_CHAR ch = pBuffer[i]; |
182 if (ch == ' ' || ch == '-' || ch == ',') { | 182 if (ch == ' ' || ch == '-' || ch == ',') { |
183 continue; | 183 continue; |
184 } | 184 } |
185 dwHash = 31 * dwHash + FXSYS_tolower(ch); | 185 dwHash = 31 * dwHash + FXSYS_tolower(ch); |
186 } | 186 } |
187 return dwHash; | 187 return dwHash; |
188 } | 188 } |
189 static FX_DWORD FPF_SKIAGetFamilyHash(const CFX_ByteStringC& bsFamily, | 189 static uint32_t FPF_SKIAGetFamilyHash(const CFX_ByteStringC& bsFamily, |
190 FX_DWORD dwStyle, | 190 uint32_t dwStyle, |
191 uint8_t uCharset) { | 191 uint8_t uCharset) { |
192 CFX_ByteString bsFont(bsFamily); | 192 CFX_ByteString bsFont(bsFamily); |
193 if (dwStyle & FXFONT_BOLD) { | 193 if (dwStyle & FXFONT_BOLD) { |
194 bsFont += "Bold"; | 194 bsFont += "Bold"; |
195 } | 195 } |
196 if (dwStyle & FXFONT_ITALIC) { | 196 if (dwStyle & FXFONT_ITALIC) { |
197 bsFont += "Italic"; | 197 bsFont += "Italic"; |
198 } | 198 } |
199 if (dwStyle & FXFONT_SERIF) { | 199 if (dwStyle & FXFONT_SERIF) { |
200 bsFont += "Serif"; | 200 bsFont += "Serif"; |
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
245 } | 245 } |
246 ScanPath("/system/fonts"); | 246 ScanPath("/system/fonts"); |
247 OutputSystemFonts(); | 247 OutputSystemFonts(); |
248 m_bLoaded = TRUE; | 248 m_bLoaded = TRUE; |
249 } | 249 } |
250 void CFPF_SkiaFontMgr::LoadPrivateFont(IFX_FileRead* pFontFile) {} | 250 void CFPF_SkiaFontMgr::LoadPrivateFont(IFX_FileRead* pFontFile) {} |
251 void CFPF_SkiaFontMgr::LoadPrivateFont(const CFX_ByteStringC& bsFileName) {} | 251 void CFPF_SkiaFontMgr::LoadPrivateFont(const CFX_ByteStringC& bsFileName) {} |
252 void CFPF_SkiaFontMgr::LoadPrivateFont(void* pBuffer, size_t szBuffer) {} | 252 void CFPF_SkiaFontMgr::LoadPrivateFont(void* pBuffer, size_t szBuffer) {} |
253 IFPF_Font* CFPF_SkiaFontMgr::CreateFont(const CFX_ByteStringC& bsFamilyname, | 253 IFPF_Font* CFPF_SkiaFontMgr::CreateFont(const CFX_ByteStringC& bsFamilyname, |
254 uint8_t uCharset, | 254 uint8_t uCharset, |
255 FX_DWORD dwStyle, | 255 uint32_t dwStyle, |
256 FX_DWORD dwMatch) { | 256 uint32_t dwMatch) { |
257 FX_DWORD dwHash = FPF_SKIAGetFamilyHash(bsFamilyname, dwStyle, uCharset); | 257 uint32_t dwHash = FPF_SKIAGetFamilyHash(bsFamilyname, dwStyle, uCharset); |
258 auto it = m_FamilyFonts.find(dwHash); | 258 auto it = m_FamilyFonts.find(dwHash); |
259 if (it != m_FamilyFonts.end() && it->second) | 259 if (it != m_FamilyFonts.end() && it->second) |
260 return it->second->Retain(); | 260 return it->second->Retain(); |
261 | 261 |
262 FX_DWORD dwFaceName = FPF_SKIANormalizeFontName(bsFamilyname); | 262 uint32_t dwFaceName = FPF_SKIANormalizeFontName(bsFamilyname); |
263 FX_DWORD dwSubst = FPF_SkiaGetSubstFont(dwFaceName); | 263 uint32_t dwSubst = FPF_SkiaGetSubstFont(dwFaceName); |
264 FX_DWORD dwSubstSans = FPF_SkiaGetSansFont(dwFaceName); | 264 uint32_t dwSubstSans = FPF_SkiaGetSansFont(dwFaceName); |
265 FX_BOOL bMaybeSymbol = FPF_SkiaMaybeSymbol(bsFamilyname); | 265 FX_BOOL bMaybeSymbol = FPF_SkiaMaybeSymbol(bsFamilyname); |
266 if (uCharset != FXFONT_ARABIC_CHARSET && FPF_SkiaMaybeArabic(bsFamilyname)) { | 266 if (uCharset != FXFONT_ARABIC_CHARSET && FPF_SkiaMaybeArabic(bsFamilyname)) { |
267 uCharset = FXFONT_ARABIC_CHARSET; | 267 uCharset = FXFONT_ARABIC_CHARSET; |
268 } else if (uCharset == FXFONT_ANSI_CHARSET && | 268 } else if (uCharset == FXFONT_ANSI_CHARSET && |
269 (dwMatch & FPF_MATCHFONT_REPLACEANSI)) { | 269 (dwMatch & FPF_MATCHFONT_REPLACEANSI)) { |
270 uCharset = FXFONT_DEFAULT_CHARSET; | 270 uCharset = FXFONT_DEFAULT_CHARSET; |
271 } | 271 } |
272 int32_t nExpectVal = FPF_SKIAMATCHWEIGHT_NAME1 + FPF_SKIAMATCHWEIGHT_1 * 3 + | 272 int32_t nExpectVal = FPF_SKIAMATCHWEIGHT_NAME1 + FPF_SKIAMATCHWEIGHT_1 * 3 + |
273 FPF_SKIAMATCHWEIGHT_2 * 2; | 273 FPF_SKIAMATCHWEIGHT_2 * 2; |
274 int32_t nItem = -1; | 274 int32_t nItem = -1; |
275 int32_t nMax = -1; | 275 int32_t nMax = -1; |
276 int32_t nGlyphNum = 0; | 276 int32_t nGlyphNum = 0; |
277 for (auto it = m_FontFaces.rbegin(); it != m_FontFaces.rend(); ++it) { | 277 for (auto it = m_FontFaces.rbegin(); it != m_FontFaces.rend(); ++it) { |
278 CFPF_SkiaPathFont* pFontDes = static_cast<CFPF_SkiaPathFont*>(*it); | 278 CFPF_SkiaPathFont* pFontDes = static_cast<CFPF_SkiaPathFont*>(*it); |
279 if (!(pFontDes->m_dwCharsets & FPF_SkiaGetCharset(uCharset))) { | 279 if (!(pFontDes->m_dwCharsets & FPF_SkiaGetCharset(uCharset))) { |
280 continue; | 280 continue; |
281 } | 281 } |
282 int32_t nFind = 0; | 282 int32_t nFind = 0; |
283 FX_DWORD dwSysFontName = FPF_SKIANormalizeFontName(pFontDes->m_pFamily); | 283 uint32_t dwSysFontName = FPF_SKIANormalizeFontName(pFontDes->m_pFamily); |
284 if (dwFaceName == dwSysFontName) { | 284 if (dwFaceName == dwSysFontName) { |
285 nFind += FPF_SKIAMATCHWEIGHT_NAME1; | 285 nFind += FPF_SKIAMATCHWEIGHT_NAME1; |
286 } | 286 } |
287 bool bMatchedName = (nFind == FPF_SKIAMATCHWEIGHT_NAME1); | 287 bool bMatchedName = (nFind == FPF_SKIAMATCHWEIGHT_NAME1); |
288 if ((dwStyle & FXFONT_BOLD) == (pFontDes->m_dwStyle & FXFONT_BOLD)) { | 288 if ((dwStyle & FXFONT_BOLD) == (pFontDes->m_dwStyle & FXFONT_BOLD)) { |
289 nFind += FPF_SKIAMATCHWEIGHT_1; | 289 nFind += FPF_SKIAMATCHWEIGHT_1; |
290 } | 290 } |
291 if ((dwStyle & FXFONT_ITALIC) == (pFontDes->m_dwStyle & FXFONT_ITALIC)) { | 291 if ((dwStyle & FXFONT_ITALIC) == (pFontDes->m_dwStyle & FXFONT_ITALIC)) { |
292 nFind += FPF_SKIAMATCHWEIGHT_1; | 292 nFind += FPF_SKIAMATCHWEIGHT_1; |
293 } | 293 } |
(...skipping 139 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
433 void CFPF_SkiaFontMgr::ScanFile(const CFX_ByteStringC& file) { | 433 void CFPF_SkiaFontMgr::ScanFile(const CFX_ByteStringC& file) { |
434 FXFT_Face face = GetFontFace(file); | 434 FXFT_Face face = GetFontFace(file); |
435 if (face) { | 435 if (face) { |
436 CFPF_SkiaPathFont* pFontDesc = new CFPF_SkiaPathFont; | 436 CFPF_SkiaPathFont* pFontDesc = new CFPF_SkiaPathFont; |
437 pFontDesc->SetPath(file.GetCStr()); | 437 pFontDesc->SetPath(file.GetCStr()); |
438 ReportFace(face, pFontDesc); | 438 ReportFace(face, pFontDesc); |
439 m_FontFaces.push_back(pFontDesc); | 439 m_FontFaces.push_back(pFontDesc); |
440 FXFT_Done_Face(face); | 440 FXFT_Done_Face(face); |
441 } | 441 } |
442 } | 442 } |
443 static const FX_DWORD g_FPFSkiaFontCharsets[] = { | 443 static const uint32_t g_FPFSkiaFontCharsets[] = { |
444 FPF_SKIACHARSET_Ansi, | 444 FPF_SKIACHARSET_Ansi, |
445 FPF_SKIACHARSET_EeasternEuropean, | 445 FPF_SKIACHARSET_EeasternEuropean, |
446 FPF_SKIACHARSET_Cyrillic, | 446 FPF_SKIACHARSET_Cyrillic, |
447 FPF_SKIACHARSET_Greek, | 447 FPF_SKIACHARSET_Greek, |
448 FPF_SKIACHARSET_Turkish, | 448 FPF_SKIACHARSET_Turkish, |
449 FPF_SKIACHARSET_Hebrew, | 449 FPF_SKIACHARSET_Hebrew, |
450 FPF_SKIACHARSET_Arabic, | 450 FPF_SKIACHARSET_Arabic, |
451 FPF_SKIACHARSET_Baltic, | 451 FPF_SKIACHARSET_Baltic, |
452 0, | 452 0, |
453 0, | 453 0, |
(...skipping 13 matching lines...) Expand all Loading... |
467 0, | 467 0, |
468 0, | 468 0, |
469 0, | 469 0, |
470 0, | 470 0, |
471 0, | 471 0, |
472 0, | 472 0, |
473 0, | 473 0, |
474 FPF_SKIACHARSET_OEM, | 474 FPF_SKIACHARSET_OEM, |
475 FPF_SKIACHARSET_Symbol, | 475 FPF_SKIACHARSET_Symbol, |
476 }; | 476 }; |
477 static FX_DWORD FPF_SkiaGetFaceCharset(TT_OS2* pOS2) { | 477 static uint32_t FPF_SkiaGetFaceCharset(TT_OS2* pOS2) { |
478 FX_DWORD dwCharset = 0; | 478 uint32_t dwCharset = 0; |
479 if (pOS2) { | 479 if (pOS2) { |
480 for (int32_t i = 0; i < 32; i++) { | 480 for (int32_t i = 0; i < 32; i++) { |
481 if (pOS2->ulCodePageRange1 & (1 << i)) { | 481 if (pOS2->ulCodePageRange1 & (1 << i)) { |
482 dwCharset |= g_FPFSkiaFontCharsets[i]; | 482 dwCharset |= g_FPFSkiaFontCharsets[i]; |
483 } | 483 } |
484 } | 484 } |
485 } | 485 } |
486 dwCharset |= FPF_SKIACHARSET_Default; | 486 dwCharset |= FPF_SKIACHARSET_Default; |
487 return dwCharset; | 487 return dwCharset; |
488 } | 488 } |
(...skipping 26 matching lines...) Expand all Loading... |
515 } | 515 } |
516 if (pOS2 && (pOS2->ulCodePageRange1 & (1 << 31))) { | 516 if (pOS2 && (pOS2->ulCodePageRange1 & (1 << 31))) { |
517 pFontDesc->m_dwStyle |= FXFONT_SYMBOLIC; | 517 pFontDesc->m_dwStyle |= FXFONT_SYMBOLIC; |
518 } | 518 } |
519 pFontDesc->m_dwCharsets = FPF_SkiaGetFaceCharset(pOS2); | 519 pFontDesc->m_dwCharsets = FPF_SkiaGetFaceCharset(pOS2); |
520 pFontDesc->m_iFaceIndex = face->face_index; | 520 pFontDesc->m_iFaceIndex = face->face_index; |
521 pFontDesc->m_iGlyphNum = face->num_glyphs; | 521 pFontDesc->m_iGlyphNum = face->num_glyphs; |
522 } | 522 } |
523 void CFPF_SkiaFontMgr::OutputSystemFonts() {} | 523 void CFPF_SkiaFontMgr::OutputSystemFonts() {} |
524 #endif | 524 #endif |
OLD | NEW |