| OLD | NEW | 
|---|
| 1 /* | 1 /* | 
| 2  * Copyright (c) 2012 Google Inc. All rights reserved. | 2  * Copyright (c) 2012 Google Inc. All rights reserved. | 
| 3  * Copyright (C) 2013 BlackBerry Limited. All rights reserved. | 3  * Copyright (C) 2013 BlackBerry Limited. All rights reserved. | 
| 4  * | 4  * | 
| 5  * Redistribution and use in source and binary forms, with or without | 5  * Redistribution and use in source and binary forms, with or without | 
| 6  * modification, are permitted provided that the following conditions are | 6  * modification, are permitted provided that the following conditions are | 
| 7  * met: | 7  * met: | 
| 8  * | 8  * | 
| 9  *     * Redistributions of source code must retain the above copyright | 9  *     * Redistributions of source code must retain the above copyright | 
| 10  * notice, this list of conditions and the following disclaimer. | 10  * notice, this list of conditions and the following disclaimer. | 
| (...skipping 14 matching lines...) Expand all  Loading... | 
| 25  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | 25  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | 
| 26  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY | 26  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY | 
| 27  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | 27  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | 
| 28  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE | 28  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE | 
| 29  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | 29  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | 
| 30  */ | 30  */ | 
| 31 | 31 | 
| 32 #include "platform/fonts/shaping/HarfBuzzShaper.h" | 32 #include "platform/fonts/shaping/HarfBuzzShaper.h" | 
| 33 | 33 | 
| 34 #include "platform/Logging.h" | 34 #include "platform/Logging.h" | 
|  | 35 #include "platform/RuntimeEnabledFeatures.h" | 
| 35 #include "platform/fonts/Font.h" | 36 #include "platform/fonts/Font.h" | 
| 36 #include "platform/fonts/FontFallbackIterator.h" | 37 #include "platform/fonts/FontFallbackIterator.h" | 
| 37 #include "platform/fonts/GlyphBuffer.h" | 38 #include "platform/fonts/GlyphBuffer.h" | 
| 38 #include "platform/fonts/UTF16TextIterator.h" | 39 #include "platform/fonts/UTF16TextIterator.h" | 
| 39 #include "platform/fonts/opentype/OpenTypeCapsSupport.h" | 40 #include "platform/fonts/opentype/OpenTypeCapsSupport.h" | 
| 40 #include "platform/fonts/shaping/CaseMappingHarfBuzzBufferFiller.h" | 41 #include "platform/fonts/shaping/CaseMappingHarfBuzzBufferFiller.h" | 
| 41 #include "platform/fonts/shaping/HarfBuzzFace.h" | 42 #include "platform/fonts/shaping/HarfBuzzFace.h" | 
| 42 #include "platform/fonts/shaping/RunSegmenter.h" | 43 #include "platform/fonts/shaping/RunSegmenter.h" | 
| 43 #include "platform/fonts/shaping/ShapeResultInlineHeaders.h" | 44 #include "platform/fonts/shaping/ShapeResultInlineHeaders.h" | 
| 44 #include "platform/text/Character.h" | 45 #include "platform/text/Character.h" | 
| (...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 92         source = stringFor8BitRun.characters16(); | 93         source = stringFor8BitRun.characters16(); | 
| 93     } else { | 94     } else { | 
| 94         source = run.characters16(); | 95         source = run.characters16(); | 
| 95     } | 96     } | 
| 96 | 97 | 
| 97     *destinationLength = 0; | 98     *destinationLength = 0; | 
| 98     while (position < length) { | 99     while (position < length) { | 
| 99         UChar32 character; | 100         UChar32 character; | 
| 100         U16_NEXT(source, position, length, character); | 101         U16_NEXT(source, position, length, character); | 
| 101         // Don't normalize tabs as they are not treated as spaces for word-end. | 102         // Don't normalize tabs as they are not treated as spaces for word-end. | 
| 102         if (run.normalizeSpace() && Character::isNormalizedCanvasSpaceCharacter(
     character)) | 103         if (run.normalizeSpace() && Character::isNormalizedCanvasSpaceCharacter(
     character)) { | 
| 103             character = spaceCharacter; | 104             character = spaceCharacter; | 
| 104         else if (Character::treatAsSpace(character) && character != noBreakSpace
     Character) | 105         } else if (Character::treatAsSpace(character) && character != noBreakSpa
     ceCharacter) { | 
| 105             character = spaceCharacter; | 106             character = spaceCharacter; | 
| 106         else if (Character::treatAsZeroWidthSpaceInComplexScript(character)) | 107         } else if (!RuntimeEnabledFeatures::renderUnicodeControlCharactersEnable
     d() | 
|  | 108             && Character::legacyTreatAsZeroWidthSpaceInComplexScript(character))
      { | 
| 107             character = zeroWidthSpaceCharacter; | 109             character = zeroWidthSpaceCharacter; | 
|  | 110         } else if (Character::treatAsZeroWidthSpaceInComplexScript(character)) { | 
|  | 111             character = zeroWidthSpaceCharacter; | 
|  | 112         } | 
| 108 | 113 | 
| 109         U16_APPEND(destination, *destinationLength, length, character, error); | 114         U16_APPEND(destination, *destinationLength, length, character, error); | 
| 110         ASSERT_UNUSED(error, !error); | 115         ASSERT_UNUSED(error, !error); | 
| 111     } | 116     } | 
| 112 } | 117 } | 
| 113 | 118 | 
| 114 HarfBuzzShaper::HarfBuzzShaper(const Font* font, const TextRun& run) | 119 HarfBuzzShaper::HarfBuzzShaper(const Font* font, const TextRun& run) | 
| 115     : Shaper(font, run) | 120     : Shaper(font, run) | 
| 116     , m_normalizedBufferLength(0) | 121     , m_normalizedBufferLength(0) | 
| 117 { | 122 { | 
| (...skipping 580 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 698     result->m_width = run->m_width; | 703     result->m_width = run->m_width; | 
| 699     result->m_numGlyphs = count; | 704     result->m_numGlyphs = count; | 
| 700     ASSERT(result->m_numGlyphs == count); // no overflow | 705     ASSERT(result->m_numGlyphs == count); // no overflow | 
| 701     result->m_hasVerticalOffsets = fontData->platformData().isVerticalAnyUpright
     (); | 706     result->m_hasVerticalOffsets = fontData->platformData().isVerticalAnyUpright
     (); | 
| 702     result->m_runs.append(std::move(run)); | 707     result->m_runs.append(std::move(run)); | 
| 703     return result.release(); | 708     return result.release(); | 
| 704 } | 709 } | 
| 705 | 710 | 
| 706 | 711 | 
| 707 } // namespace blink | 712 } // namespace blink | 
| OLD | NEW | 
|---|