Index: Source/core/platform/graphics/SimpleFontData.h |
diff --git a/Source/core/platform/graphics/SimpleFontData.h b/Source/core/platform/graphics/SimpleFontData.h |
index 1d0a1ede1102a6ec91b5095b1498938b652f86bc..ebcf8ab2872ec98e31935c563c5987bd40cd27c6 100644 |
--- a/Source/core/platform/graphics/SimpleFontData.h |
+++ b/Source/core/platform/graphics/SimpleFontData.h |
@@ -47,6 +47,7 @@ |
namespace WebCore { |
+class CSSFontFaceSource; |
class FontDescription; |
class SharedBuffer; |
struct WidthIterator; |
@@ -68,9 +69,9 @@ public: |
}; |
// Used to create platform fonts. |
- static PassRefPtr<SimpleFontData> create(const FontPlatformData& platformData, bool isCustomFont = false, bool isLoading = false, bool isTextOrientationFallback = false) |
+ static PassRefPtr<SimpleFontData> create(const FontPlatformData& platformData, bool isCustomFont = false, bool isLoadingFallback = false, bool isTextOrientationFallback = false) |
{ |
- return adoptRef(new SimpleFontData(platformData, isCustomFont, isLoading, isTextOrientationFallback)); |
+ return adoptRef(new SimpleFontData(platformData, isCustomFont, isLoadingFallback, isTextOrientationFallback)); |
} |
// Used to create SVG Fonts. |
@@ -156,14 +157,17 @@ public: |
AdditionalFontData* fontData() const { return m_fontData.get(); } |
bool isSVGFont() const { return m_fontData; } |
+ bool isLoadingFallback() const { return m_customFontData.isLoadingFallback; } |
- virtual bool isCustomFont() const { return m_isCustomFont; } |
- virtual bool isLoading() const { return m_isLoading; } |
+ virtual bool isCustomFont() const { return m_customFontData.isCustomFont; } |
+ virtual bool isLoading() const { return m_customFontData.isLoadingFallback && m_customFontData.isUsed; } |
virtual bool isSegmented() const; |
const GlyphData& missingGlyphData() const { return m_missingGlyphData; } |
void setMissingGlyphData(const GlyphData& glyphData) { m_missingGlyphData = glyphData; } |
+ void beginLoadIfNeeded() const; |
+ |
#ifndef NDEBUG |
virtual String description() const; |
#endif |
@@ -190,8 +194,11 @@ public: |
return false; |
} |
+ void setCSSFontFaceSource(CSSFontFaceSource* source) { m_customFontData.fontFaceSource = source; } |
+ void clearCSSFontFaceSource() { m_customFontData.fontFaceSource = 0; } |
+ |
private: |
- SimpleFontData(const FontPlatformData&, bool isCustomFont = false, bool isLoading = false, bool isTextOrientationFallback = false); |
+ SimpleFontData(const FontPlatformData&, bool isCustomFont = false, bool isLoadingFallback = false, bool isTextOrientationFallback = false); |
SimpleFontData(PassOwnPtr<AdditionalFontData> , float fontSize, bool syntheticBold, bool syntheticItalic); |
@@ -216,8 +223,6 @@ private: |
mutable GlyphMetricsMap<float> m_glyphToWidthMap; |
bool m_treatAsFixedPitch; |
- bool m_isCustomFont; // Whether or not we are custom font loaded via @font-face |
- bool m_isLoading; // Whether or not this custom font is still in the act of loading. |
bool m_isTextOrientationFallback; |
bool m_isBrokenIdeographFallback; |
@@ -258,6 +263,21 @@ private: |
mutable OwnPtr<DerivedFontData> m_derivedFontData; |
+ struct CustomFontData { |
+ CustomFontData(bool isCustomFont, bool isLoadingFallback) |
+ : isCustomFont(isCustomFont) |
+ , isLoadingFallback(isLoadingFallback) |
+ , isUsed(false) |
+ , fontFaceSource(0) |
+ { |
+ } |
+ bool isCustomFont; // Whether or not we are custom font loaded via @font-face |
+ bool isLoadingFallback; // Whether or not this is a temporary font data for a custom font which is not yet loaded. |
+ mutable bool isUsed; |
+ CSSFontFaceSource* fontFaceSource; |
+ }; |
+ CustomFontData m_customFontData; |
+ |
#if OS(MACOSX) |
float m_syntheticBoldOffset; |