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 |