| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (c) 2006, 2007, 2008, 2009 Google Inc. All rights reserved. | 2 * Copyright (c) 2006, 2007, 2008, 2009 Google Inc. All rights reserved. |
| 3 * | 3 * |
| 4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
| 5 * modification, are permitted provided that the following conditions are | 5 * modification, are permitted provided that the following conditions are |
| 6 * met: | 6 * met: |
| 7 * | 7 * |
| 8 * * Redistributions of source code must retain the above copyright | 8 * * Redistributions of source code must retain the above copyright |
| 9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
| 10 * * Redistributions in binary form must reproduce the above | 10 * * Redistributions in binary form must reproduce the above |
| (...skipping 192 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 203 AtomicString family = creationParams.family(); | 203 AtomicString family = creationParams.family(); |
| 204 // If we're creating a fallback font (e.g. "-webkit-monospace"), convert the
name into | 204 // If we're creating a fallback font (e.g. "-webkit-monospace"), convert the
name into |
| 205 // the fallback name (like "monospace") that fontconfig understands. | 205 // the fallback name (like "monospace") that fontconfig understands. |
| 206 if (!family.length() || family.startsWith("-webkit-")) { | 206 if (!family.length() || family.startsWith("-webkit-")) { |
| 207 name = getFallbackFontFamily(fontDescription).getString().utf8(); | 207 name = getFallbackFontFamily(fontDescription).getString().utf8(); |
| 208 } else { | 208 } else { |
| 209 // convert the name to utf8 | 209 // convert the name to utf8 |
| 210 name = family.utf8(); | 210 name = family.utf8(); |
| 211 } | 211 } |
| 212 | 212 |
| 213 int style = SkTypeface::kNormal; | |
| 214 if (fontDescription.weight() >= FontWeight600) | |
| 215 style |= SkTypeface::kBold; | |
| 216 if (fontDescription.style()) | |
| 217 style |= SkTypeface::kItalic; | |
| 218 | |
| 219 #if OS(WIN) | 213 #if OS(WIN) |
| 220 if (s_sideloadedFonts) { | 214 if (s_sideloadedFonts) { |
| 221 HashMap<String, RefPtr<SkTypeface>>::iterator sideloadedFont = | 215 HashMap<String, RefPtr<SkTypeface>>::iterator sideloadedFont = |
| 222 s_sideloadedFonts->find(name.data()); | 216 s_sideloadedFonts->find(name.data()); |
| 223 if (sideloadedFont != s_sideloadedFonts->end()) | 217 if (sideloadedFont != s_sideloadedFonts->end()) |
| 224 return sideloadedFont->value; | 218 return sideloadedFont->value; |
| 225 } | 219 } |
| 226 | 220 |
| 227 if (m_fontManager) { | 221 if (m_fontManager) { |
| 228 return adoptRef(useDirectWrite() | 222 return adoptRef(useDirectWrite() |
| 229 ? m_fontManager->matchFamilyStyle(name.data(), fontStyle(fontDescrip
tion)) | 223 ? m_fontManager->matchFamilyStyle(name.data(), fontStyle(fontDescrip
tion)) |
| 230 : m_fontManager->legacyCreateTypeface(name.data(), style) | 224 : m_fontManager->legacyCreateTypeface(name.data(), fontStyle(fontDes
cription)) |
| 231 ); | 225 ); |
| 232 } | 226 } |
| 233 #endif | 227 #endif |
| 234 | 228 |
| 235 #if OS(LINUX) | 229 #if OS(LINUX) |
| 236 // On linux if the fontManager has been overridden then we should be calling
the embedder | 230 // On linux if the fontManager has been overridden then we should be calling
the embedder |
| 237 // provided font Manager rather than calling SkTypeface::CreateFromName whic
h may redirect the | 231 // provided font Manager rather than calling SkTypeface::CreateFromName whic
h may redirect the |
| 238 // call to the default font Manager. | 232 // call to the default font Manager. |
| 239 if (m_fontManager) | 233 if (m_fontManager) |
| 240 return adoptRef(m_fontManager->matchFamilyStyle(name.data(), fontStyle(f
ontDescription))); | 234 return adoptRef(m_fontManager->matchFamilyStyle(name.data(), fontStyle(f
ontDescription))); |
| 241 #endif | 235 #endif |
| 242 | 236 |
| 243 // FIXME: Use m_fontManager, SkFontStyle and matchFamilyStyle instead of | 237 // FIXME: Use m_fontManager, SkFontStyle and matchFamilyStyle instead of |
| 244 // CreateFromName on all platforms. | 238 // CreateFromName on all platforms. |
| 239 int style = SkTypeface::kNormal; |
| 240 if (fontDescription.weight() >= FontWeight600) |
| 241 style |= SkTypeface::kBold; |
| 242 if (fontDescription.style()) |
| 243 style |= SkTypeface::kItalic; |
| 245 return adoptRef(SkTypeface::CreateFromName(name.data(), static_cast<SkTypefa
ce::Style>(style))); | 244 return adoptRef(SkTypeface::CreateFromName(name.data(), static_cast<SkTypefa
ce::Style>(style))); |
| 246 } | 245 } |
| 247 | 246 |
| 248 #if !OS(WIN) | 247 #if !OS(WIN) |
| 249 PassOwnPtr<FontPlatformData> FontCache::createFontPlatformData(const FontDescrip
tion& fontDescription, | 248 PassOwnPtr<FontPlatformData> FontCache::createFontPlatformData(const FontDescrip
tion& fontDescription, |
| 250 const FontFaceCreationParams& creationParams, float fontSize) | 249 const FontFaceCreationParams& creationParams, float fontSize) |
| 251 { | 250 { |
| 252 CString name; | 251 CString name; |
| 253 RefPtr<SkTypeface> tf(createTypeface(fontDescription, creationParams, name))
; | 252 RefPtr<SkTypeface> tf(createTypeface(fontDescription, creationParams, name))
; |
| 254 if (!tf) | 253 if (!tf) |
| 255 return nullptr; | 254 return nullptr; |
| 256 | 255 |
| 257 return adoptPtr(new FontPlatformData(tf, | 256 return adoptPtr(new FontPlatformData(tf, |
| 258 name.data(), | 257 name.data(), |
| 259 fontSize, | 258 fontSize, |
| 260 (fontDescription.weight() >= FontWeight600 && !tf->isBold()) || fontDesc
ription.isSyntheticBold(), | 259 (fontDescription.weight() >= FontWeight600 && !tf->isBold()) || fontDesc
ription.isSyntheticBold(), |
| 261 ((fontDescription.style() == FontStyleItalic || fontDescription.style()
== FontStyleOblique) && !tf->isItalic()) || fontDescription.isSyntheticItalic(), | 260 ((fontDescription.style() == FontStyleItalic || fontDescription.style()
== FontStyleOblique) && !tf->isItalic()) || fontDescription.isSyntheticItalic(), |
| 262 fontDescription.orientation(), | 261 fontDescription.orientation(), |
| 263 fontDescription.useSubpixelPositioning())); | 262 fontDescription.useSubpixelPositioning())); |
| 264 } | 263 } |
| 265 #endif // !OS(WIN) | 264 #endif // !OS(WIN) |
| 266 | 265 |
| 267 } // namespace blink | 266 } // namespace blink |
| OLD | NEW |