| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2005, 2008, 2010 Apple Inc. All rights reserved. | 2 * Copyright (C) 2005, 2008, 2010 Apple Inc. All rights reserved. |
| 3 * Copyright (C) 2006 Alexey Proskuryakov | 3 * Copyright (C) 2006 Alexey Proskuryakov |
| 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 | 6 * modification, are permitted provided that the following conditions |
| 7 * are met: | 7 * are met: |
| 8 * | 8 * |
| 9 * 1. Redistributions of source code must retain the above copyright | 9 * 1. 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 22 matching lines...) Expand all Loading... |
| 33 #include "SkPaint.h" | 33 #include "SkPaint.h" |
| 34 #include "SkPath.h" | 34 #include "SkPath.h" |
| 35 #include "SkTypeface.h" | 35 #include "SkTypeface.h" |
| 36 #include "SkTypes.h" | 36 #include "SkTypes.h" |
| 37 #include "SkUtils.h" | 37 #include "SkUtils.h" |
| 38 #include "platform/fonts/FontDescription.h" | 38 #include "platform/fonts/FontDescription.h" |
| 39 #include "platform/fonts/GlyphPage.h" | 39 #include "platform/fonts/GlyphPage.h" |
| 40 #include "platform/fonts/VDMXParser.h" | 40 #include "platform/fonts/VDMXParser.h" |
| 41 #include "platform/geometry/FloatRect.h" | 41 #include "platform/geometry/FloatRect.h" |
| 42 #include "wtf/MathExtras.h" | 42 #include "wtf/MathExtras.h" |
| 43 #include "wtf/unicode/CharacterNames.h" |
| 43 #include "wtf/unicode/Unicode.h" | 44 #include "wtf/unicode/Unicode.h" |
| 44 #include <unicode/normlzr.h> | 45 #include <unicode/normlzr.h> |
| 45 | 46 |
| 46 namespace blink { | 47 namespace blink { |
| 47 | 48 |
| 48 const float smallCapsFontSizeMultiplier = 0.7f; | 49 const float smallCapsFontSizeMultiplier = 0.7f; |
| 49 const float emphasisMarkFontSizeMultiplier = 0.5f; | 50 const float emphasisMarkFontSizeMultiplier = 0.5f; |
| 50 | 51 |
| 51 #if OS(LINUX) || OS(ANDROID) | 52 #if OS(LINUX) || OS(ANDROID) |
| 52 // This is the largest VDMX table which we'll try to load and parse. | 53 // This is the largest VDMX table which we'll try to load and parse. |
| (...skipping 215 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 268 if (!glyphPageZero) { | 269 if (!glyphPageZero) { |
| 269 m_spaceGlyph = 0; | 270 m_spaceGlyph = 0; |
| 270 m_spaceWidth = 0; | 271 m_spaceWidth = 0; |
| 271 m_zeroGlyph = 0; | 272 m_zeroGlyph = 0; |
| 272 m_zeroWidthSpaceGlyph = 0; | 273 m_zeroWidthSpaceGlyph = 0; |
| 273 m_missingGlyphData.fontData = this; | 274 m_missingGlyphData.fontData = this; |
| 274 m_missingGlyphData.glyph = 0; | 275 m_missingGlyphData.glyph = 0; |
| 275 return; | 276 return; |
| 276 } | 277 } |
| 277 | 278 |
| 279 // Ask for the glyph for 0 to avoid paging in ZERO WIDTH SPACE. Control char
acters, including 0, |
| 280 // are mapped to the ZERO WIDTH SPACE glyph. |
| 278 m_zeroWidthSpaceGlyph = glyphPageZero->glyphForCharacter(0); | 281 m_zeroWidthSpaceGlyph = glyphPageZero->glyphForCharacter(0); |
| 279 | 282 |
| 280 // Nasty hack to determine if we should round or ceil space widths. | 283 // Nasty hack to determine if we should round or ceil space widths. |
| 281 // If the font is monospace or fake monospace we ceil to ensure that | 284 // If the font is monospace or fake monospace we ceil to ensure that |
| 282 // every character and the space are the same width. Otherwise we round. | 285 // every character and the space are the same width. Otherwise we round. |
| 283 m_spaceGlyph = glyphPageZero->glyphForCharacter(' '); | 286 m_spaceGlyph = glyphPageZero->glyphForCharacter(space); |
| 284 float width = widthForGlyph(m_spaceGlyph); | 287 float width = widthForGlyph(m_spaceGlyph); |
| 285 m_spaceWidth = width; | 288 m_spaceWidth = width; |
| 286 m_zeroGlyph = glyphPageZero->glyphForCharacter('0'); | 289 m_zeroGlyph = glyphPageZero->glyphForCharacter('0'); |
| 287 m_fontMetrics.setZeroWidth(widthForGlyph(m_zeroGlyph)); | 290 m_fontMetrics.setZeroWidth(widthForGlyph(m_zeroGlyph)); |
| 288 | 291 |
| 289 // Force the glyph for ZERO WIDTH SPACE to have zero width, unless it is sha
red with SPACE. | 292 // Force the glyph for ZERO WIDTH SPACE to have zero width, unless it is sha
red with SPACE. |
| 290 // Helvetica is an example of a non-zero width ZERO WIDTH SPACE glyph. | 293 // Helvetica is an example of a non-zero width ZERO WIDTH SPACE glyph. |
| 291 // See <http://bugs.webkit.org/show_bug.cgi?id=13178> | 294 // See <http://bugs.webkit.org/show_bug.cgi?id=13178> |
| 292 // Ask for the glyph for 0 to avoid paging in ZERO WIDTH SPACE. Control char
acters, including 0, | |
| 293 // are mapped to the ZERO WIDTH SPACE glyph. | |
| 294 if (m_zeroWidthSpaceGlyph == m_spaceGlyph) { | 295 if (m_zeroWidthSpaceGlyph == m_spaceGlyph) { |
| 295 m_zeroWidthSpaceGlyph = 0; | 296 m_zeroWidthSpaceGlyph = 0; |
| 296 WTF_LOG_ERROR("Font maps SPACE and ZERO WIDTH SPACE to the same glyph. G
lyph width will not be overridden."); | 297 WTF_LOG_ERROR("Font maps SPACE and ZERO WIDTH SPACE to the same glyph. G
lyph width will not be overridden."); |
| 297 } | 298 } |
| 298 | 299 |
| 299 m_missingGlyphData.fontData = this; | 300 m_missingGlyphData.fontData = this; |
| 300 m_missingGlyphData.glyph = 0; | 301 m_missingGlyphData.glyph = 0; |
| 301 } | 302 } |
| 302 | 303 |
| 303 SimpleFontData::~SimpleFontData() | 304 SimpleFontData::~SimpleFontData() |
| (...skipping 203 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 507 if (glyphs[i]) { | 508 if (glyphs[i]) { |
| 508 pageToFill->setGlyphDataForIndex(offset + i, glyphs[i], this); | 509 pageToFill->setGlyphDataForIndex(offset + i, glyphs[i], this); |
| 509 haveGlyphs = true; | 510 haveGlyphs = true; |
| 510 } | 511 } |
| 511 } | 512 } |
| 512 | 513 |
| 513 return haveGlyphs; | 514 return haveGlyphs; |
| 514 } | 515 } |
| 515 | 516 |
| 516 } // namespace blink | 517 } // namespace blink |
| OLD | NEW |