Chromium Code Reviews| 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 * | 6 * |
| 7 * This library is free software; you can redistribute it and/or | 7 * This library is free software; you can redistribute it and/or |
| 8 * modify it under the terms of the GNU Library General Public | 8 * modify it under the terms of the GNU Library General Public |
| 9 * License as published by the Free Software Foundation; either | 9 * License as published by the Free Software Foundation; either |
| 10 * version 2 of the License, or (at your option) any later version. | 10 * version 2 of the License, or (at your option) any later version. |
| (...skipping 373 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 384 if (data.glyph != verticalRightData.glyph) | 384 if (data.glyph != verticalRightData.glyph) |
| 385 return std::make_pair(data, page); | 385 return std::make_pair(data, page); |
| 386 // The glyphs are identical, meaning that we should just use the hor izontal glyph. | 386 // The glyphs are identical, meaning that we should just use the hor izontal glyph. |
| 387 if (verticalRightData.fontData) | 387 if (verticalRightData.fontData) |
| 388 return std::make_pair(verticalRightData, verticalRightPage); | 388 return std::make_pair(verticalRightData, verticalRightPage); |
| 389 } | 389 } |
| 390 } | 390 } |
| 391 return std::make_pair(data, page); | 391 return std::make_pair(data, page); |
| 392 } | 392 } |
| 393 | 393 |
| 394 std::pair<GlyphData, GlyphPage*> Font::glyphDataAndPageForCharacter(UChar32 c, b ool mirror, FontDataVariant variant) const | 394 std::pair<GlyphData, GlyphPage*> Font::glyphDataAndPageForCharacter(UChar32& c, bool mirror, bool spaceNormalize, FontDataVariant variant) const |
| 395 { | 395 { |
| 396 ASSERT(isMainThread()); | 396 ASSERT(isMainThread()); |
| 397 | 397 |
| 398 if (variant == AutoVariant) { | 398 if (variant == AutoVariant) { |
| 399 if (m_fontDescription.variant() == FontVariantSmallCaps && !primaryFont( )->isSVGFont()) { | 399 if (m_fontDescription.variant() == FontVariantSmallCaps && !primaryFont( )->isSVGFont()) { |
| 400 UChar32 upperC = toUpper(c); | 400 UChar32 upperC = toUpper(c); |
| 401 if (upperC != c) { | 401 if (upperC != c) { |
| 402 c = upperC; | 402 c = upperC; |
| 403 variant = SmallCapsVariant; | 403 variant = SmallCapsVariant; |
| 404 } else { | 404 } else { |
| 405 variant = NormalVariant; | 405 variant = NormalVariant; |
| 406 } | 406 } |
| 407 } else { | 407 } else { |
| 408 variant = NormalVariant; | 408 variant = NormalVariant; |
| 409 } | 409 } |
| 410 } | 410 } |
| 411 | 411 |
| 412 if (spaceNormalize && Character::isNormalizedCanvasSpaceCharacter(c)) | |
| 413 c = space; | |
| 414 | |
| 412 if (mirror) | 415 if (mirror) |
| 413 c = mirroredChar(c); | 416 c = mirroredChar(c); |
| 414 | 417 |
| 415 unsigned pageNumber = (c / GlyphPage::size); | 418 unsigned pageNumber = (c / GlyphPage::size); |
| 416 | 419 |
| 417 GlyphPageTreeNode* node = m_fontFallbackList->getPageNode(pageNumber); | 420 GlyphPageTreeNode* node = m_fontFallbackList->getPageNode(pageNumber); |
| 418 if (!node) { | 421 if (!node) { |
| 419 node = GlyphPageTreeNode::getRootChild(fontDataAt(0), pageNumber); | 422 node = GlyphPageTreeNode::getRootChild(fontDataAt(0), pageNumber); |
| 420 m_fontFallbackList->setPageNode(pageNumber, node); | 423 m_fontFallbackList->setPageNode(pageNumber, node); |
| 421 } | 424 } |
| (...skipping 137 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 559 if (mark.length() < 2) | 562 if (mark.length() < 2) |
| 560 return false; | 563 return false; |
| 561 | 564 |
| 562 UChar low = mark[1]; | 565 UChar low = mark[1]; |
| 563 if (!U16_IS_TRAIL(low)) | 566 if (!U16_IS_TRAIL(low)) |
| 564 return false; | 567 return false; |
| 565 | 568 |
| 566 character = U16_GET_SUPPLEMENTARY(character, low); | 569 character = U16_GET_SUPPLEMENTARY(character, low); |
| 567 } | 570 } |
| 568 | 571 |
| 569 glyphData = glyphDataForCharacter(character, false, EmphasisMarkVariant); | 572 glyphData = glyphDataForCharacter(character, false, false, EmphasisMarkVaria nt); |
|
eae
2014/09/16 00:46:33
bool normalizeSpace = false;
glyphData = glyphDat
h.joshi
2014/09/16 05:48:11
Done.
| |
| 570 return true; | 573 return true; |
| 571 } | 574 } |
| 572 | 575 |
| 573 int Font::emphasisMarkAscent(const AtomicString& mark) const | 576 int Font::emphasisMarkAscent(const AtomicString& mark) const |
| 574 { | 577 { |
| 575 FontCachePurgePreventer purgePreventer; | 578 FontCachePurgePreventer purgePreventer; |
| 576 | 579 |
| 577 GlyphData markGlyphData; | 580 GlyphData markGlyphData; |
| 578 if (!getEmphasisMarkGlyphData(mark, markGlyphData)) | 581 if (!getEmphasisMarkGlyphData(mark, markGlyphData)) |
| 579 return 0; | 582 return 0; |
| (...skipping 276 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 856 if (delta <= 0) | 859 if (delta <= 0) |
| 857 break; | 860 break; |
| 858 } | 861 } |
| 859 } | 862 } |
| 860 } | 863 } |
| 861 | 864 |
| 862 return offset; | 865 return offset; |
| 863 } | 866 } |
| 864 | 867 |
| 865 } // namespace blink | 868 } // namespace blink |
| OLD | NEW |