| 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 183 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 194 // arbitrary but comes pretty close to the expected value in most cases. | 194 // arbitrary but comes pretty close to the expected value in most cases. |
| 195 if (m_maxCharWidth < 1) | 195 if (m_maxCharWidth < 1) |
| 196 m_maxCharWidth = ascent * 2; | 196 m_maxCharWidth = ascent * 2; |
| 197 #elif OS(MACOSX) | 197 #elif OS(MACOSX) |
| 198 // FIXME: The current avg/max character width calculation is not ideal, | 198 // FIXME: The current avg/max character width calculation is not ideal, |
| 199 // it should check either the OS2 table or, better yet, query FontMetrics. | 199 // it should check either the OS2 table or, better yet, query FontMetrics. |
| 200 // Sadly FontMetrics provides incorrect data on Mac at the moment. | 200 // Sadly FontMetrics provides incorrect data on Mac at the moment. |
| 201 // https://crbug.com/420901 | 201 // https://crbug.com/420901 |
| 202 m_maxCharWidth = std::max(m_avgCharWidth, m_fontMetrics.floatAscent()); | 202 m_maxCharWidth = std::max(m_avgCharWidth, m_fontMetrics.floatAscent()); |
| 203 #else | 203 #else |
| 204 // FIXME: This seems incorrect and should probably use fMaxCharWidth as | 204 // Better would be to rely on either fMaxCharWidth or fAveCharWidth. |
| 205 // the code path above. | 205 // skbug.com/3087 |
| 206 SkScalar xRange = metrics.fXMax - metrics.fXMin; | 206 m_maxCharWidth = SkScalarRoundToInt(metrics.fXMax - metrics.fXMin); |
| 207 m_maxCharWidth = SkScalarRoundToInt(xRange * SkScalarRoundToInt(m_platformDa
ta.size())); | 207 |
| 208 #endif | 208 #endif |
| 209 | 209 |
| 210 #if !OS(MACOSX) | 210 #if !OS(MACOSX) |
| 211 if (metrics.fAvgCharWidth) { | 211 if (metrics.fAvgCharWidth) { |
| 212 m_avgCharWidth = SkScalarRoundToInt(metrics.fAvgCharWidth); | 212 m_avgCharWidth = SkScalarRoundToInt(metrics.fAvgCharWidth); |
| 213 } else { | 213 } else { |
| 214 #endif | 214 #endif |
| 215 m_avgCharWidth = xHeight; | 215 m_avgCharWidth = xHeight; |
| 216 | 216 |
| 217 GlyphPage* glyphPageZero = GlyphPageTreeNode::getRootChild(this, 0)->pag
e(); | 217 GlyphPage* glyphPageZero = GlyphPageTreeNode::getRootChild(this, 0)->pag
e(); |
| (...skipping 266 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 484 if (glyphs[i]) { | 484 if (glyphs[i]) { |
| 485 pageToFill->setGlyphDataForIndex(offset + i, glyphs[i], this); | 485 pageToFill->setGlyphDataForIndex(offset + i, glyphs[i], this); |
| 486 haveGlyphs = true; | 486 haveGlyphs = true; |
| 487 } | 487 } |
| 488 } | 488 } |
| 489 | 489 |
| 490 return haveGlyphs; | 490 return haveGlyphs; |
| 491 } | 491 } |
| 492 | 492 |
| 493 } // namespace blink | 493 } // namespace blink |
| OLD | NEW |