OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2008 Nikolas Zimmermann <zimmermann@kde.org> | 2 * Copyright (C) 2008 Nikolas Zimmermann <zimmermann@kde.org> |
3 * | 3 * |
4 * This library is free software; you can redistribute it and/or | 4 * This library is free software; you can redistribute it and/or |
5 * modify it under the terms of the GNU Library General Public | 5 * modify it under the terms of the GNU Library General Public |
6 * License as published by the Free Software Foundation; either | 6 * License as published by the Free Software Foundation; either |
7 * version 2 of the License, or (at your option) any later version. | 7 * version 2 of the License, or (at your option) any later version. |
8 * | 8 * |
9 * This library is distributed in the hope that it will be useful, | 9 * This library is distributed in the hope that it will be useful, |
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of | 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of |
(...skipping 169 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
180 if (!toSVGAltGlyphElement(parentRenderObjectElement)->hasValidGl
yphElements(altGlyphNames)) | 180 if (!toSVGAltGlyphElement(parentRenderObjectElement)->hasValidGl
yphElements(altGlyphNames)) |
181 altGlyphNames.clear(); | 181 altGlyphNames.clear(); |
182 } | 182 } |
183 } | 183 } |
184 } | 184 } |
185 | 185 |
186 Vector<SVGGlyph> glyphs; | 186 Vector<SVGGlyph> glyphs; |
187 size_t altGlyphNamesSize = altGlyphNames.size(); | 187 size_t altGlyphNamesSize = altGlyphNames.size(); |
188 if (altGlyphNamesSize) { | 188 if (altGlyphNamesSize) { |
189 for (size_t index = 0; index < altGlyphNamesSize; ++index) | 189 for (size_t index = 0; index < altGlyphNamesSize; ++index) |
190 associatedFontElement->collectGlyphsForGlyphName(altGlyphNames[index
], glyphs); | 190 associatedFontElement->collectGlyphsForAltGlyphReference(altGlyphNam
es[index], glyphs); |
191 | 191 |
192 // Assign the unicodeStringLength now that its known. | 192 // Assign the unicodeStringLength now that its known. |
193 size_t glyphsSize = glyphs.size(); | 193 size_t glyphsSize = glyphs.size(); |
194 for (size_t i = 0; i < glyphsSize; ++i) | 194 for (size_t i = 0; i < glyphsSize; ++i) |
195 glyphs[i].unicodeStringLength = run.length(); | 195 glyphs[i].unicodeStringLength = run.length(); |
196 | 196 |
197 // Do not check alt glyphs for compatibility. Just return the first one. | 197 // Do not check alt glyphs for compatibility. Just return the first one. |
198 // Later code will fail if we do not do this and the glyph is incompatib
le. | 198 // Later code will fail if we do not do this and the glyph is incompatib
le. |
199 if (glyphsSize) { | 199 if (glyphsSize) { |
200 SVGGlyph& svgGlyph = glyphs[0]; | 200 SVGGlyph& svgGlyph = glyphs[0]; |
201 iterator.setLastGlyphName(svgGlyph.glyphName); | |
202 glyphData.glyph = svgGlyph.tableEntry; | 201 glyphData.glyph = svgGlyph.tableEntry; |
203 advanceLength = svgGlyph.unicodeStringLength; | 202 advanceLength = svgGlyph.unicodeStringLength; |
204 return true; | 203 return true; |
205 } | 204 } |
206 } else | 205 } else |
207 associatedFontElement->collectGlyphsForString(remainingTextInRun, glyphs
); | 206 associatedFontElement->collectGlyphsForString(remainingTextInRun, glyphs
); |
208 | 207 |
209 size_t glyphsSize = glyphs.size(); | 208 size_t glyphsSize = glyphs.size(); |
210 for (size_t i = 0; i < glyphsSize; ++i) { | 209 for (size_t i = 0; i < glyphsSize; ++i) { |
211 SVGGlyph& svgGlyph = glyphs[i]; | 210 SVGGlyph& svgGlyph = glyphs[i]; |
212 if (svgGlyph.isPartOfLigature) | 211 if (svgGlyph.isPartOfLigature) |
213 continue; | 212 continue; |
214 if (!isCompatibleGlyph(svgGlyph, isVerticalText, language, arabicForms,
currentCharacter, currentCharacter + svgGlyph.unicodeStringLength)) | 213 if (!isCompatibleGlyph(svgGlyph, isVerticalText, language, arabicForms,
currentCharacter, currentCharacter + svgGlyph.unicodeStringLength)) |
215 continue; | 214 continue; |
216 iterator.setLastGlyphName(svgGlyph.glyphName); | |
217 glyphData.glyph = svgGlyph.tableEntry; | 215 glyphData.glyph = svgGlyph.tableEntry; |
218 advanceLength = svgGlyph.unicodeStringLength; | 216 advanceLength = svgGlyph.unicodeStringLength; |
219 return true; | 217 return true; |
220 } | 218 } |
221 | 219 |
222 iterator.setLastGlyphName(String()); | |
223 return false; | 220 return false; |
224 } | 221 } |
225 | 222 |
226 bool SVGFontData::fillSVGGlyphPage(GlyphPage* pageToFill, unsigned offset, unsig
ned length, UChar* buffer, unsigned bufferLength, const SimpleFontData* fontData
) const | 223 bool SVGFontData::fillSVGGlyphPage(GlyphPage* pageToFill, unsigned offset, unsig
ned length, UChar* buffer, unsigned bufferLength, const SimpleFontData* fontData
) const |
227 { | 224 { |
228 ASSERT(fontData->isCustomFont()); | 225 ASSERT(fontData->isCustomFont()); |
229 ASSERT(fontData->isSVGFont()); | 226 ASSERT(fontData->isSVGFont()); |
230 | 227 |
231 SVGFontFaceElement* fontFaceElement = this->svgFontFaceElement(); | 228 SVGFontFaceElement* fontFaceElement = this->svgFontFaceElement(); |
232 ASSERT(fontFaceElement); | 229 ASSERT(fontFaceElement); |
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
313 mirroredCharacters.append(mirroredChar(character)); | 310 mirroredCharacters.append(mirroredChar(character)); |
314 } | 311 } |
315 } | 312 } |
316 | 313 |
317 return mirroredCharacters.toString(); | 314 return mirroredCharacters.toString(); |
318 } | 315 } |
319 | 316 |
320 } // namespace WebCore | 317 } // namespace WebCore |
321 | 318 |
322 #endif | 319 #endif |
OLD | NEW |