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 |