| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) | 2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) |
| 3 * (C) 1999 Antti Koivisto (koivisto@kde.org) | 3 * (C) 1999 Antti Koivisto (koivisto@kde.org) |
| 4 * (C) 2000 Dirk Mueller (mueller@kde.org) | 4 * (C) 2000 Dirk Mueller (mueller@kde.org) |
| 5 * Copyright (C) 2003, 2006, 2010, 2011 Apple Inc. All rights reserved. | 5 * Copyright (C) 2003, 2006, 2010, 2011 Apple Inc. All rights reserved. |
| 6 * Copyright (c) 2007, 2008, 2010 Google Inc. All rights reserved. | 6 * Copyright (c) 2007, 2008, 2010 Google Inc. All rights reserved. |
| 7 * | 7 * |
| 8 * This library is free software; you can redistribute it and/or | 8 * This library is free software; you can redistribute it and/or |
| 9 * modify it under the terms of the GNU Library General Public | 9 * modify it under the terms of the GNU Library General Public |
| 10 * License as published by the Free Software Foundation; either | 10 * License as published by the Free Software Foundation; either |
| (...skipping 506 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 517 | 517 |
| 518 const FontData* fontData = fontDataAt(0); | 518 const FontData* fontData = fontDataAt(0); |
| 519 if (fontData) { | 519 if (fontData) { |
| 520 const SimpleFontData* fontDataToSubstitute = fontData->fontDataForCharac
ter(characterToRender); | 520 const SimpleFontData* fontDataToSubstitute = fontData->fontDataForCharac
ter(characterToRender); |
| 521 RefPtr<SimpleFontData> characterFontData = FontCache::fontCache()->fallb
ackFontForCharacter(m_fontDescription, characterToRender, fontDataToSubstitute); | 521 RefPtr<SimpleFontData> characterFontData = FontCache::fontCache()->fallb
ackFontForCharacter(m_fontDescription, characterToRender, fontDataToSubstitute); |
| 522 if (characterFontData && variant != NormalVariant) { | 522 if (characterFontData && variant != NormalVariant) { |
| 523 characterFontData = characterFontData->variantFontData(m_fontDescrip
tion, variant); | 523 characterFontData = characterFontData->variantFontData(m_fontDescrip
tion, variant); |
| 524 } | 524 } |
| 525 if (characterFontData) { | 525 if (characterFontData) { |
| 526 // Got the fallback glyph and font. | 526 // Got the fallback glyph and font. |
| 527 GlyphPage* fallbackPage = GlyphPageTreeNode::getRootChild(characterF
ontData.get(), pageNumber)->page(); | 527 unsigned pageNumberForRendering = characterToRender / GlyphPage::siz
e; |
| 528 GlyphData data = fallbackPage && fallbackPage->glyphForCharacter(c)
? fallbackPage->glyphDataForCharacter(c) : characterFontData->missingGlyphData()
; | 528 GlyphPage* fallbackPage = GlyphPageTreeNode::getRootChild(characterF
ontData.get(), pageNumberForRendering)->page(); |
| 529 GlyphData data = fallbackPage && fallbackPage->glyphForCharacter(cha
racterToRender) ? fallbackPage->glyphDataForCharacter(characterToRender) : chara
cterFontData->missingGlyphData(); |
| 529 // Cache it so we don't have to do system fallback again next time. | 530 // Cache it so we don't have to do system fallback again next time. |
| 530 if (variant == NormalVariant) { | 531 if (variant == NormalVariant) { |
| 531 page->setGlyphDataForCharacter(c, data.glyph, data.fontData); | 532 page->setGlyphDataForCharacter(c, data.glyph, data.fontData); |
| 532 data.fontData->setMaxGlyphPageTreeLevel(std::max(data.fontData->
maxGlyphPageTreeLevel(), node->level())); | 533 data.fontData->setMaxGlyphPageTreeLevel(std::max(data.fontData->
maxGlyphPageTreeLevel(), node->level())); |
| 533 if (data.fontData->platformData().isVerticalAnyUpright() && !dat
a.fontData->isTextOrientationFallback() && !Character::isCJKIdeographOrSymbol(c)
) | 534 if (data.fontData->platformData().isVerticalAnyUpright() && !dat
a.fontData->isTextOrientationFallback() && !Character::isCJKIdeographOrSymbol(ch
aracterToRender)) |
| 534 return glyphDataForNonCJKCharacterWithGlyphOrientation(c, m_
fontDescription.isVerticalUpright(c), data, pageNumber); | 535 return glyphDataForNonCJKCharacterWithGlyphOrientation(chara
cterToRender, m_fontDescription.isVerticalUpright(characterToRender), data, page
NumberForRendering); |
| 535 } | 536 } |
| 536 return data; | 537 return data; |
| 537 } | 538 } |
| 538 } | 539 } |
| 539 | 540 |
| 540 // Even system fallback can fail; use the missing glyph in that case. | 541 // Even system fallback can fail; use the missing glyph in that case. |
| 541 // FIXME: It would be nicer to use the missing glyph from the last resort fo
nt instead. | 542 // FIXME: It would be nicer to use the missing glyph from the last resort fo
nt instead. |
| 542 ASSERT(primaryFont()); | 543 ASSERT(primaryFont()); |
| 543 GlyphData data = primaryFont()->missingGlyphData(); | 544 GlyphData data = primaryFont()->missingGlyphData(); |
| 544 if (variant == NormalVariant) { | 545 if (variant == NormalVariant) { |
| (...skipping 275 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 820 { | 821 { |
| 821 return m_fontFallbackList && m_fontFallbackList->loadingCustomFonts(); | 822 return m_fontFallbackList && m_fontFallbackList->loadingCustomFonts(); |
| 822 } | 823 } |
| 823 | 824 |
| 824 bool Font::isFallbackValid() const | 825 bool Font::isFallbackValid() const |
| 825 { | 826 { |
| 826 return !m_fontFallbackList || m_fontFallbackList->isValid(); | 827 return !m_fontFallbackList || m_fontFallbackList->isValid(); |
| 827 } | 828 } |
| 828 | 829 |
| 829 } // namespace blink | 830 } // namespace blink |
| OLD | NEW |