| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (c) 2008, 2009, Google Inc. All rights reserved. | 2 * Copyright (c) 2008, 2009, Google Inc. All rights reserved. |
| 3 * | 3 * |
| 4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
| 5 * modification, are permitted provided that the following conditions are | 5 * modification, are permitted provided that the following conditions are |
| 6 * met: | 6 * met: |
| 7 * | 7 * |
| 8 * * Redistributions of source code must retain the above copyright | 8 * * Redistributions of source code must retain the above copyright |
| 9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
| 10 * * Redistributions in binary form must reproduce the above | 10 * * Redistributions in binary form must reproduce the above |
| (...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 124 } else { | 124 } else { |
| 125 xHeight = ascent * 0.56; // Best guess from Windows font metrics. | 125 xHeight = ascent * 0.56; // Best guess from Windows font metrics. |
| 126 m_fontMetrics.setXHeight(xHeight); | 126 m_fontMetrics.setXHeight(xHeight); |
| 127 m_fontMetrics.setHasXHeight(false); | 127 m_fontMetrics.setHasXHeight(false); |
| 128 } | 128 } |
| 129 | 129 |
| 130 float lineGap = SkScalarToFloat(metrics.fLeading); | 130 float lineGap = SkScalarToFloat(metrics.fLeading); |
| 131 m_fontMetrics.setLineGap(lineGap); | 131 m_fontMetrics.setLineGap(lineGap); |
| 132 m_fontMetrics.setLineSpacing(lroundf(ascent) + lroundf(descent) + lroundf(li
neGap)); | 132 m_fontMetrics.setLineSpacing(lroundf(ascent) + lroundf(descent) + lroundf(li
neGap)); |
| 133 | 133 |
| 134 float underlineThickness = SkScalarToFloat(metrics.fUnderlineThickness); | 134 SkScalar underlineThickness, underlinePosition; |
| 135 m_fontMetrics.setUnderlineThickness(underlineThickness); | 135 if (metrics.hasUnderlineThickness(&underlineThickness) |
| 136 | 136 && metrics.hasUnderlinePosition(&underlinePosition)) { |
| 137 float underlinePosition = SkScalarToFloat(metrics.fUnderlinePosition); | 137 m_fontMetrics.setUnderlineThickness(SkScalarToFloat(underlineThickness))
; |
| 138 m_fontMetrics.setUnderlineThickness(underlinePosition); | 138 m_fontMetrics.setUnderlinePosition(SkScalarToFloat(-underlinePosition)); |
| 139 } |
| 139 | 140 |
| 140 if (platformData().orientation() == Vertical && !isTextOrientationFallback()
) { | 141 if (platformData().orientation() == Vertical && !isTextOrientationFallback()
) { |
| 141 static const uint32_t vheaTag = SkSetFourByteTag('v', 'h', 'e', 'a'); | 142 static const uint32_t vheaTag = SkSetFourByteTag('v', 'h', 'e', 'a'); |
| 142 static const uint32_t vorgTag = SkSetFourByteTag('V', 'O', 'R', 'G'); | 143 static const uint32_t vorgTag = SkSetFourByteTag('V', 'O', 'R', 'G'); |
| 143 size_t vheaSize = face->getTableSize(vheaTag); | 144 size_t vheaSize = face->getTableSize(vheaTag); |
| 144 size_t vorgSize = face->getTableSize(vorgTag); | 145 size_t vorgSize = face->getTableSize(vorgTag); |
| 145 if ((vheaSize > 0) || (vorgSize > 0)) | 146 if ((vheaSize > 0) || (vorgSize > 0)) |
| 146 m_hasVerticalGlyphs = true; | 147 m_hasVerticalGlyphs = true; |
| 147 } | 148 } |
| 148 | 149 |
| (...skipping 149 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 298 if (glyphs[i]) { | 299 if (glyphs[i]) { |
| 299 pageToFill->setGlyphDataForIndex(offset + i, glyphs[i], this); | 300 pageToFill->setGlyphDataForIndex(offset + i, glyphs[i], this); |
| 300 haveGlyphs = true; | 301 haveGlyphs = true; |
| 301 } | 302 } |
| 302 } | 303 } |
| 303 | 304 |
| 304 return haveGlyphs; | 305 return haveGlyphs; |
| 305 } | 306 } |
| 306 | 307 |
| 307 } // namespace WebCore | 308 } // namespace WebCore |
| OLD | NEW |