Chromium Code Reviews| 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 584 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 595 source = run.characters16(); | 595 source = run.characters16(); |
| 596 } | 596 } |
| 597 | 597 |
| 598 *destinationLength = 0; | 598 *destinationLength = 0; |
| 599 while (position < length) { | 599 while (position < length) { |
| 600 UChar32 character; | 600 UChar32 character; |
| 601 U16_NEXT(source, position, length, character); | 601 U16_NEXT(source, position, length, character); |
| 602 // Don't normalize tabs as they are not treated as spaces for word-end. | 602 // Don't normalize tabs as they are not treated as spaces for word-end. |
| 603 if (run.normalizeSpace() && Character::isNormalizedCanvasSpaceCharacter( character)) | 603 if (run.normalizeSpace() && Character::isNormalizedCanvasSpaceCharacter( character)) |
| 604 character = spaceCharacter; | 604 character = spaceCharacter; |
| 605 else if (Character::treatAsSpace(character)) | 605 else if (Character::treatAsSpace(character) && character != noBreakSpace Character) |
| 606 character = spaceCharacter; | 606 character = spaceCharacter; |
| 607 else if (Character::treatAsZeroWidthSpaceInComplexScript(character)) | 607 else if (Character::treatAsZeroWidthSpaceInComplexScript(character)) |
| 608 character = zeroWidthSpaceCharacter; | 608 character = zeroWidthSpaceCharacter; |
| 609 | 609 |
| 610 U16_APPEND(destination, *destinationLength, length, character, error); | 610 U16_APPEND(destination, *destinationLength, length, character, error); |
| 611 ASSERT_UNUSED(error, !error); | 611 ASSERT_UNUSED(error, !error); |
| 612 } | 612 } |
| 613 } | 613 } |
| 614 | 614 |
| 615 HarfBuzzShaper::HarfBuzzShaper(const Font* font, const TextRun& run) | 615 HarfBuzzShaper::HarfBuzzShaper(const Font* font, const TextRun& run) |
| (...skipping 549 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1165 } | 1165 } |
| 1166 | 1166 |
| 1167 float HarfBuzzShaper::adjustSpacing(ShapeResult::RunInfo* run, size_t glyphIndex , unsigned currentCharacterIndex, float& offset, float& totalAdvance) | 1167 float HarfBuzzShaper::adjustSpacing(ShapeResult::RunInfo* run, size_t glyphIndex , unsigned currentCharacterIndex, float& offset, float& totalAdvance) |
| 1168 { | 1168 { |
| 1169 float spacing = 0; | 1169 float spacing = 0; |
| 1170 UChar32 character = m_normalizedBuffer[currentCharacterIndex]; | 1170 UChar32 character = m_normalizedBuffer[currentCharacterIndex]; |
| 1171 if (m_letterSpacing && !Character::treatAsZeroWidthSpace(character)) | 1171 if (m_letterSpacing && !Character::treatAsZeroWidthSpace(character)) |
| 1172 spacing += m_letterSpacing; | 1172 spacing += m_letterSpacing; |
| 1173 | 1173 |
| 1174 bool treatAsSpace = Character::treatAsSpace(character); | 1174 bool treatAsSpace = Character::treatAsSpace(character); |
| 1175 if (treatAsSpace && currentCharacterIndex && (character != '\t' || !m_textRu n.allowTabs())) | 1175 if (treatAsSpace && (currentCharacterIndex || character == noBreakSpaceChara cter) && (character != '\t' || !m_textRun.allowTabs())) |
|
pdr.
2015/08/22 02:29:46
This change took me a while to understand, but I'm
| |
| 1176 spacing += m_wordSpacingAdjustment; | 1176 spacing += m_wordSpacingAdjustment; |
| 1177 | 1177 |
| 1178 if (!m_expansionOpportunityCount) | 1178 if (!m_expansionOpportunityCount) |
| 1179 return spacing; | 1179 return spacing; |
| 1180 | 1180 |
| 1181 if (treatAsSpace) { | 1181 if (treatAsSpace) { |
| 1182 spacing += nextExpansionPerOpportunity(); | 1182 spacing += nextExpansionPerOpportunity(); |
| 1183 m_isAfterExpansion = true; | 1183 m_isAfterExpansion = true; |
| 1184 return spacing; | 1184 return spacing; |
| 1185 } | 1185 } |
| (...skipping 28 matching lines...) Expand all Loading... | |
| 1214 return spacing; | 1214 return spacing; |
| 1215 } | 1215 } |
| 1216 | 1216 |
| 1217 // Don't need to check m_textRun.allowsTrailingExpansion() since it's covere d by !m_expansionOpportunityCount above | 1217 // Don't need to check m_textRun.allowsTrailingExpansion() since it's covere d by !m_expansionOpportunityCount above |
| 1218 spacing += nextExpansionPerOpportunity(); | 1218 spacing += nextExpansionPerOpportunity(); |
| 1219 m_isAfterExpansion = true; | 1219 m_isAfterExpansion = true; |
| 1220 return spacing; | 1220 return spacing; |
| 1221 } | 1221 } |
| 1222 | 1222 |
| 1223 } // namespace blink | 1223 } // namespace blink |
| OLD | NEW |