OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2008 Apple Inc. All rights reserved. | 2 * Copyright (C) 2008 Apple 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 | 5 * modification, are permitted provided that the following conditions |
6 * are met: | 6 * are met: |
7 * 1. Redistributions of source code must retain the above copyright | 7 * 1. Redistributions of source code must retain the above copyright |
8 * notice, this list of conditions and the following disclaimer. | 8 * notice, this list of conditions and the following disclaimer. |
9 * 2. Redistributions in binary form must reproduce the above copyright | 9 * 2. Redistributions in binary form must reproduce the above copyright |
10 * notice, this list of conditions and the following disclaimer in the | 10 * notice, this list of conditions and the following disclaimer in the |
(...skipping 120 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
131 fontData = SegmentedFontData::create(); | 131 fontData = SegmentedFontData::create(); |
132 | 132 |
133 bool syntheticBold = !(m_traitsMask & (FontWeight600Mask | FontWeight700Mask
| FontWeight800Mask | FontWeight900Mask)) && (desiredTraitsMask & (FontWeight60
0Mask | FontWeight700Mask | FontWeight800Mask | FontWeight900Mask)); | 133 bool syntheticBold = !(m_traitsMask & (FontWeight600Mask | FontWeight700Mask
| FontWeight800Mask | FontWeight900Mask)) && (desiredTraitsMask & (FontWeight60
0Mask | FontWeight700Mask | FontWeight800Mask | FontWeight900Mask)); |
134 bool syntheticItalic = !(m_traitsMask & FontStyleItalicMask) && (desiredTrai
tsMask & FontStyleItalicMask); | 134 bool syntheticItalic = !(m_traitsMask & FontStyleItalicMask) && (desiredTrai
tsMask & FontStyleItalicMask); |
135 | 135 |
136 for (int i = m_fontFaces.size() - 1; i >= 0; --i) { | 136 for (int i = m_fontFaces.size() - 1; i >= 0; --i) { |
137 if (!m_fontFaces[i]->isValid()) | 137 if (!m_fontFaces[i]->isValid()) |
138 continue; | 138 continue; |
139 if (RefPtr<SimpleFontData> faceFontData = m_fontFaces[i]->getFontData(fo
ntDescription, syntheticBold, syntheticItalic)) { | 139 if (RefPtr<SimpleFontData> faceFontData = m_fontFaces[i]->getFontData(fo
ntDescription, syntheticBold, syntheticItalic)) { |
140 ASSERT(!faceFontData->isSegmented()); | 140 ASSERT(!faceFontData->isSegmented()); |
| 141 #if ENABLE(SVG_FONTS) |
| 142 // For SVG Fonts that specify that they only support the "normal" va
riant, we will assume they are incapable |
| 143 // of small-caps synthesis and just ignore the font face. |
| 144 if (faceFontData->isSVGFont() && (desiredTraitsMask & FontVariantSma
llCapsMask) && !(m_traitsMask & FontVariantSmallCapsMask)) |
| 145 continue; |
| 146 #endif |
141 appendFontData(fontData.get(), faceFontData.release(), m_fontFaces[i
]->ranges()); | 147 appendFontData(fontData.get(), faceFontData.release(), m_fontFaces[i
]->ranges()); |
142 } | 148 } |
143 } | 149 } |
144 if (fontData->numRanges()) | 150 if (fontData->numRanges()) |
145 return fontData; // No release, we have a reference to an object in the
cache which should retain the ref count it has. | 151 return fontData; // No release, we have a reference to an object in the
cache which should retain the ref count it has. |
146 | 152 |
147 return 0; | 153 return 0; |
148 } | 154 } |
149 | 155 |
150 bool CSSSegmentedFontFace::hasSVGFontFaceSource() const | |
151 { | |
152 unsigned size = m_fontFaces.size(); | |
153 for (unsigned i = 0; i < size; i++) { | |
154 if (m_fontFaces[i]->hasSVGFontFaceSource()) | |
155 return true; | |
156 } | |
157 return false; | |
158 } | |
159 | |
160 bool CSSSegmentedFontFace::isLoading() const | 156 bool CSSSegmentedFontFace::isLoading() const |
161 { | 157 { |
162 unsigned size = m_fontFaces.size(); | 158 unsigned size = m_fontFaces.size(); |
163 for (unsigned i = 0; i < size; i++) { | 159 for (unsigned i = 0; i < size; i++) { |
164 if (m_fontFaces[i]->loadStatus() == FontFace::Loading) | 160 if (m_fontFaces[i]->loadStatus() == FontFace::Loading) |
165 return true; | 161 return true; |
166 } | 162 } |
167 return false; | 163 return false; |
168 } | 164 } |
169 | 165 |
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
220 unsigned size = m_fontFaces.size(); | 216 unsigned size = m_fontFaces.size(); |
221 for (unsigned i = 0; i < size; i++) { | 217 for (unsigned i = 0; i < size; i++) { |
222 RefPtr<FontFace> face = m_fontFaces[i]->fontFace(); | 218 RefPtr<FontFace> face = m_fontFaces[i]->fontFace(); |
223 if (face && m_fontFaces[i]->ranges().intersectsWith(text)) | 219 if (face && m_fontFaces[i]->ranges().intersectsWith(text)) |
224 fontFaces.append(face); | 220 fontFaces.append(face); |
225 } | 221 } |
226 return fontFaces; | 222 return fontFaces; |
227 } | 223 } |
228 | 224 |
229 } | 225 } |
OLD | NEW |