Index: Source/core/css/CSSSegmentedFontFace.cpp |
diff --git a/Source/core/css/CSSSegmentedFontFace.cpp b/Source/core/css/CSSSegmentedFontFace.cpp |
index 515d6f6382f9f13e8c5bf18037084ce0a30c4d23..211e93a9ee4846d66ba6248ad6f6c5553cd7ed3a 100644 |
--- a/Source/core/css/CSSSegmentedFontFace.cpp |
+++ b/Source/core/css/CSSSegmentedFontFace.cpp |
@@ -92,14 +92,9 @@ void CSSSegmentedFontFace::appendFontFace(PassRefPtr<CSSFontFace> fontFace) |
m_fontFaces.append(fontFace); |
} |
-static void appendFontDataWithInvalidUnicodeRangeIfLoading(SegmentedFontData* newFontData, PassRefPtr<SimpleFontData> prpFaceFontData, const Vector<CSSFontFace::UnicodeRange>& ranges) |
+static void appendFontData(SegmentedFontData* newFontData, PassRefPtr<SimpleFontData> prpFaceFontData, const Vector<CSSFontFace::UnicodeRange>& ranges) |
{ |
RefPtr<SimpleFontData> faceFontData = prpFaceFontData; |
- if (faceFontData->isLoading()) { |
- newFontData->appendRange(FontDataRange(0, 0, faceFontData)); |
- return; |
- } |
- |
unsigned numRanges = ranges.size(); |
if (!numRanges) { |
newFontData->appendRange(FontDataRange(0, 0x7FFFFFFF, faceFontData)); |
@@ -136,7 +131,7 @@ PassRefPtr<FontData> CSSSegmentedFontFace::getFontData(const FontDescription& fo |
continue; |
if (RefPtr<SimpleFontData> faceFontData = m_fontFaces[i]->getFontData(fontDescription, syntheticBold, syntheticItalic)) { |
ASSERT(!faceFontData->isSegmented()); |
- appendFontDataWithInvalidUnicodeRangeIfLoading(fontData.get(), faceFontData.release(), m_fontFaces[i]->ranges()); |
+ appendFontData(fontData.get(), faceFontData.release(), m_fontFaces[i]->ranges()); |
} |
} |
if (fontData->numRanges()) |
@@ -184,7 +179,12 @@ bool CSSSegmentedFontFace::checkFont() const |
void CSSSegmentedFontFace::loadFont(const FontDescription& fontDescription, PassRefPtr<LoadFontCallback> callback) |
{ |
- getFontData(fontDescription); // Kick off the load. |
+ RefPtr<FontData> fontData = getFontData(fontDescription); |
+ ASSERT(fontData->isSegmented()); |
+ SegmentedFontData* segmentedFontData = static_cast<SegmentedFontData*>(fontData.get()); |
eseidel
2013/09/16 17:20:17
Do we have a toSegmentedFontData()?
Kunihiko Sakamoto
2013/09/17 06:16:30
Added.
|
+ unsigned numRanges = segmentedFontData->numRanges(); |
+ for (unsigned i = 0; i < numRanges; i++) |
+ segmentedFontData->rangeAt(i).fontData()->beginLoadIfNeeded(); |
if (callback) { |
if (isLoading()) |