| OLD | NEW |
| 1 /* | 1 /* |
| 2 * This file is part of the internal font implementation. | 2 * This file is part of the internal font implementation. |
| 3 * | 3 * |
| 4 * Copyright (C) 2006, 2008, 2010 Apple Inc. All rights reserved. | 4 * Copyright (C) 2006, 2008, 2010 Apple Inc. All rights reserved. |
| 5 * Copyright (C) 2007-2008 Torch Mobile, Inc. | 5 * Copyright (C) 2007-2008 Torch Mobile, Inc. |
| 6 * | 6 * |
| 7 * This library is free software; you can redistribute it and/or | 7 * This library is free software; you can redistribute it and/or |
| 8 * modify it under the terms of the GNU Library General Public | 8 * modify it under the terms of the GNU Library General Public |
| 9 * License as published by the Free Software Foundation; either | 9 * License as published by the Free Software Foundation; either |
| 10 * version 2 of the License, or (at your option) any later version. | 10 * version 2 of the License, or (at your option) any later version. |
| (...skipping 146 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 157 return custom_font_data_ && custom_font_data_->ShouldSkipDrawing(); | 157 return custom_font_data_ && custom_font_data_->ShouldSkipDrawing(); |
| 158 } | 158 } |
| 159 | 159 |
| 160 const GlyphData& MissingGlyphData() const { return missing_glyph_data_; } | 160 const GlyphData& MissingGlyphData() const { return missing_glyph_data_; } |
| 161 void SetMissingGlyphData(const GlyphData& glyph_data) { | 161 void SetMissingGlyphData(const GlyphData& glyph_data) { |
| 162 missing_glyph_data_ = glyph_data; | 162 missing_glyph_data_ = glyph_data; |
| 163 } | 163 } |
| 164 | 164 |
| 165 CustomFontData* GetCustomFontData() const { return custom_font_data_.Get(); } | 165 CustomFontData* GetCustomFontData() const { return custom_font_data_.Get(); } |
| 166 | 166 |
| 167 unsigned VisualOverflowInflationForAscent() const { |
| 168 return visual_overflow_inflation_for_ascent_; |
| 169 } |
| 170 unsigned VisualOverflowInflationForDescent() const { |
| 171 return visual_overflow_inflation_for_descent_; |
| 172 } |
| 173 |
| 167 protected: | 174 protected: |
| 168 SimpleFontData(const FontPlatformData&, | 175 SimpleFontData(const FontPlatformData&, |
| 169 PassRefPtr<CustomFontData> custom_data, | 176 PassRefPtr<CustomFontData> custom_data, |
| 170 bool is_text_orientation_fallback = false, | 177 bool is_text_orientation_fallback = false, |
| 171 bool subpixel_ascent_descent = false); | 178 bool subpixel_ascent_descent = false); |
| 172 | 179 |
| 173 // Only used for testing. | 180 // Only used for testing. |
| 174 SimpleFontData(const FontPlatformData&, PassRefPtr<OpenTypeVerticalData>); | 181 SimpleFontData(const FontPlatformData&, PassRefPtr<OpenTypeVerticalData>); |
| 175 | 182 |
| 176 private: | 183 private: |
| 177 void PlatformInit(bool subpixel_ascent_descent); | 184 void PlatformInit(bool subpixel_ascent_descent); |
| 178 void PlatformGlyphInit(); | 185 void PlatformGlyphInit(); |
| 179 | 186 |
| 180 PassRefPtr<SimpleFontData> CreateScaledFontData(const FontDescription&, | 187 PassRefPtr<SimpleFontData> CreateScaledFontData(const FontDescription&, |
| 181 float scale_factor) const; | 188 float scale_factor) const; |
| 182 | 189 |
| 183 FontMetrics font_metrics_; | 190 FontMetrics font_metrics_; |
| 184 float max_char_width_; | 191 float max_char_width_; |
| 185 float avg_char_width_; | 192 float avg_char_width_; |
| 186 | 193 |
| 187 FontPlatformData platform_data_; | 194 FontPlatformData platform_data_; |
| 188 SkPaint paint_; | 195 SkPaint paint_; |
| 189 | 196 |
| 190 bool is_text_orientation_fallback_; | |
| 191 RefPtr<OpenTypeVerticalData> vertical_data_; | 197 RefPtr<OpenTypeVerticalData> vertical_data_; |
| 192 bool has_vertical_glyphs_; | |
| 193 | 198 |
| 194 Glyph space_glyph_; | 199 Glyph space_glyph_; |
| 195 float space_width_; | 200 float space_width_; |
| 196 Glyph zero_glyph_; | 201 Glyph zero_glyph_; |
| 197 | 202 |
| 198 GlyphData missing_glyph_data_; | 203 GlyphData missing_glyph_data_; |
| 199 | 204 |
| 200 struct DerivedFontData { | 205 struct DerivedFontData { |
| 201 USING_FAST_MALLOC(DerivedFontData); | 206 USING_FAST_MALLOC(DerivedFontData); |
| 202 WTF_MAKE_NONCOPYABLE(DerivedFontData); | 207 WTF_MAKE_NONCOPYABLE(DerivedFontData); |
| 203 | 208 |
| 204 public: | 209 public: |
| 205 static std::unique_ptr<DerivedFontData> Create(); | 210 static std::unique_ptr<DerivedFontData> Create(); |
| 206 | 211 |
| 207 RefPtr<SimpleFontData> small_caps; | 212 RefPtr<SimpleFontData> small_caps; |
| 208 RefPtr<SimpleFontData> emphasis_mark; | 213 RefPtr<SimpleFontData> emphasis_mark; |
| 209 RefPtr<SimpleFontData> vertical_right_orientation; | 214 RefPtr<SimpleFontData> vertical_right_orientation; |
| 210 RefPtr<SimpleFontData> upright_orientation; | 215 RefPtr<SimpleFontData> upright_orientation; |
| 211 | 216 |
| 212 private: | 217 private: |
| 213 DerivedFontData() {} | 218 DerivedFontData() {} |
| 214 }; | 219 }; |
| 215 | 220 |
| 216 mutable std::unique_ptr<DerivedFontData> derived_font_data_; | 221 mutable std::unique_ptr<DerivedFontData> derived_font_data_; |
| 217 | 222 |
| 218 RefPtr<CustomFontData> custom_font_data_; | 223 RefPtr<CustomFontData> custom_font_data_; |
| 219 | 224 |
| 225 unsigned is_text_orientation_fallback_ : 1; |
| 226 unsigned has_vertical_glyphs_ : 1; |
| 227 |
| 228 // These are set to non-zero when ascent or descent is rounded or shifted |
| 229 // to be smaller than the actual ascent or descent. When calculating visual |
| 230 // overflows, we should add the inflations. |
| 231 unsigned visual_overflow_inflation_for_ascent_ : 2; |
| 232 unsigned visual_overflow_inflation_for_descent_ : 2; |
| 233 |
| 220 // See discussion on crbug.com/631032 and Skiaissue | 234 // See discussion on crbug.com/631032 and Skiaissue |
| 221 // https://bugs.chromium.org/p/skia/issues/detail?id=5328 : | 235 // https://bugs.chromium.org/p/skia/issues/detail?id=5328 : |
| 222 // On Mac we're still using path based glyph metrics, and they seem to be | 236 // On Mac we're still using path based glyph metrics, and they seem to be |
| 223 // too slow to be able to remove the caching layer we have here. | 237 // too slow to be able to remove the caching layer we have here. |
| 224 #if OS(MACOSX) | 238 #if OS(MACOSX) |
| 225 mutable std::unique_ptr<GlyphMetricsMap<FloatRect>> glyph_to_bounds_map_; | 239 mutable std::unique_ptr<GlyphMetricsMap<FloatRect>> glyph_to_bounds_map_; |
| 226 mutable GlyphMetricsMap<float> glyph_to_width_map_; | 240 mutable GlyphMetricsMap<float> glyph_to_width_map_; |
| 227 #endif | 241 #endif |
| 228 }; | 242 }; |
| 229 | 243 |
| (...skipping 29 matching lines...) Expand all Loading... |
| 259 | 273 |
| 260 glyph_to_width_map_.SetMetricsForGlyph(glyph, width); | 274 glyph_to_width_map_.SetMetricsForGlyph(glyph, width); |
| 261 return width; | 275 return width; |
| 262 #endif | 276 #endif |
| 263 } | 277 } |
| 264 | 278 |
| 265 DEFINE_FONT_DATA_TYPE_CASTS(SimpleFontData, false); | 279 DEFINE_FONT_DATA_TYPE_CASTS(SimpleFontData, false); |
| 266 | 280 |
| 267 } // namespace blink | 281 } // namespace blink |
| 268 #endif // SimpleFontData_h | 282 #endif // SimpleFontData_h |
| OLD | NEW |