Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(5)

Side by Side Diff: third_party/WebKit/Source/platform/fonts/FontDescription.cpp

Issue 1955723004: Implement font-variant-numeric (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Remove whitespace and clarified TODOs Created 4 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2007 Nicholas Shanks <contact@nickshanks.com> 2 * Copyright (C) 2007 Nicholas Shanks <contact@nickshanks.com>
3 * Copyright (C) 2008 Apple Inc. All rights reserved. 3 * Copyright (C) 2008 Apple Inc. 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 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 24 matching lines...) Expand all
35 #include "wtf/text/StringHash.h" 35 #include "wtf/text/StringHash.h"
36 36
37 namespace blink { 37 namespace blink {
38 38
39 struct SameSizeAsFontDescription { 39 struct SameSizeAsFontDescription {
40 DISALLOW_NEW(); 40 DISALLOW_NEW();
41 FontFamily familyList; 41 FontFamily familyList;
42 RefPtr<FontFeatureSettings> m_featureSettings; 42 RefPtr<FontFeatureSettings> m_featureSettings;
43 AtomicString locale; 43 AtomicString locale;
44 float sizes[6]; 44 float sizes[6];
45 uint32_t bitfields[2]; 45 FieldsAsUnsignedType bitfields;
46 }; 46 };
47 47
48 static_assert(sizeof(FontDescription) == sizeof(SameSizeAsFontDescription), "Fon tDescription should stay small"); 48 static_assert(sizeof(FontDescription) == sizeof(SameSizeAsFontDescription), "Fon tDescription should stay small");
49 49
50 TypesettingFeatures FontDescription::s_defaultTypesettingFeatures = 0; 50 TypesettingFeatures FontDescription::s_defaultTypesettingFeatures = 0;
51 51
52 bool FontDescription::s_useSubpixelTextPositioning = false; 52 bool FontDescription::s_useSubpixelTextPositioning = false;
53 53
54 FontWeight FontDescription::lighterWeight(FontWeight weight) 54 FontWeight FontDescription::lighterWeight(FontWeight weight)
55 { 55 {
(...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after
147 void FontDescription::setVariantLigatures(const VariantLigatures& ligatures) 147 void FontDescription::setVariantLigatures(const VariantLigatures& ligatures)
148 { 148 {
149 m_fields.m_commonLigaturesState = ligatures.common; 149 m_fields.m_commonLigaturesState = ligatures.common;
150 m_fields.m_discretionaryLigaturesState = ligatures.discretionary; 150 m_fields.m_discretionaryLigaturesState = ligatures.discretionary;
151 m_fields.m_historicalLigaturesState = ligatures.historical; 151 m_fields.m_historicalLigaturesState = ligatures.historical;
152 m_fields.m_contextualLigaturesState = ligatures.contextual; 152 m_fields.m_contextualLigaturesState = ligatures.contextual;
153 153
154 updateTypesettingFeatures(); 154 updateTypesettingFeatures();
155 } 155 }
156 156
157 void FontDescription::setVariantNumeric(const FontVariantNumeric& variantNumeric )
158 {
159 m_fields.m_variantNumeric = variantNumeric.m_fieldsAsUnsigned;
160
161 updateTypesettingFeatures();
162 }
163
157 float FontDescription::effectiveFontSize() const 164 float FontDescription::effectiveFontSize() const
158 { 165 {
159 // Ensure that the effective precision matches the font-cache precision. 166 // Ensure that the effective precision matches the font-cache precision.
160 // This guarantees that the same precision is used regardless of cache statu s. 167 // This guarantees that the same precision is used regardless of cache statu s.
161 float computedOrAdjustedSize = hasSizeAdjust() ? adjustedSize() : computedSi ze(); 168 float computedOrAdjustedSize = hasSizeAdjust() ? adjustedSize() : computedSi ze();
162 return floorf(computedOrAdjustedSize * FontCacheKey::precisionMultiplier()) / FontCacheKey::precisionMultiplier(); 169 return floorf(computedOrAdjustedSize * FontCacheKey::precisionMultiplier()) / FontCacheKey::precisionMultiplier();
163 } 170 }
164 171
165 FontCacheKey FontDescription::cacheKey(const FontFaceCreationParams& creationPar ams, FontTraits desiredTraits) const 172 FontCacheKey FontDescription::cacheKey(const FontFaceCreationParams& creationPar ams, FontTraits desiredTraits) const
166 { 173 {
(...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after
264 for (unsigned i = 0; i < m_locale.length(); i++) 271 for (unsigned i = 0; i < m_locale.length(); i++)
265 stringHasher.addCharacter(m_locale[i]); 272 stringHasher.addCharacter(m_locale[i]);
266 addToHash(hash, stringHasher.hash()); 273 addToHash(hash, stringHasher.hash());
267 274
268 addFloatToHash(hash, m_specifiedSize); 275 addFloatToHash(hash, m_specifiedSize);
269 addFloatToHash(hash, m_computedSize); 276 addFloatToHash(hash, m_computedSize);
270 addFloatToHash(hash, m_adjustedSize); 277 addFloatToHash(hash, m_adjustedSize);
271 addFloatToHash(hash, m_sizeAdjust); 278 addFloatToHash(hash, m_sizeAdjust);
272 addFloatToHash(hash, m_letterSpacing); 279 addFloatToHash(hash, m_letterSpacing);
273 addFloatToHash(hash, m_wordSpacing); 280 addFloatToHash(hash, m_wordSpacing);
274 addToHash(hash, m_fieldsAsUnsigned[0]); 281 addToHash(hash, m_fieldsAsUnsigned.f[0]);
275 addToHash(hash, m_fieldsAsUnsigned[1]); 282 addToHash(hash, m_fieldsAsUnsigned.f[1]);
276 283
277 return hash; 284 return hash;
278 } 285 }
279 286
280 SkFontStyle FontDescription::skiaFontStyle() const 287 SkFontStyle FontDescription::skiaFontStyle() const
281 { 288 {
282 int width = static_cast<int>(stretch()); 289 int width = static_cast<int>(stretch());
283 SkFontStyle::Slant slant = SkFontStyle::kUpright_Slant; 290 SkFontStyle::Slant slant = SkFontStyle::kUpright_Slant;
284 switch (style()) { 291 switch (style()) {
285 case FontStyleNormal: slant = SkFontStyle::kUpright_Slant; break; 292 case FontStyleNormal: slant = SkFontStyle::kUpright_Slant; break;
286 case FontStyleItalic: slant = SkFontStyle::kItalic_Slant; break; 293 case FontStyleItalic: slant = SkFontStyle::kItalic_Slant; break;
287 case FontStyleOblique: slant = SkFontStyle::kOblique_Slant; break; 294 case FontStyleOblique: slant = SkFontStyle::kOblique_Slant; break;
288 default: NOTREACHED(); break; 295 default: NOTREACHED(); break;
289 } 296 }
290 return SkFontStyle(numericFontWeight(weight()), width, slant); 297 return SkFontStyle(numericFontWeight(weight()), width, slant);
291 static_assert( 298 static_assert(
292 static_cast<int>(FontStretchUltraCondensed) == static_cast<int>(SkFontSt yle::kUltraCondensed_Width), 299 static_cast<int>(FontStretchUltraCondensed) == static_cast<int>(SkFontSt yle::kUltraCondensed_Width),
293 "FontStretchUltraCondensed should map to kUltraCondensed_Width"); 300 "FontStretchUltraCondensed should map to kUltraCondensed_Width");
294 static_assert( 301 static_assert(
295 static_cast<int>(FontStretchNormal) == static_cast<int>(SkFontStyle::kNo rmal_Width), 302 static_cast<int>(FontStretchNormal) == static_cast<int>(SkFontStyle::kNo rmal_Width),
296 "FontStretchNormal should map to kNormal_Width"); 303 "FontStretchNormal should map to kNormal_Width");
297 static_assert( 304 static_assert(
298 static_cast<int>(FontStretchUltraExpanded) == static_cast<int>(SkFontSty le::kUltaExpanded_Width), 305 static_cast<int>(FontStretchUltraExpanded) == static_cast<int>(SkFontSty le::kUltaExpanded_Width),
299 "FontStretchUltraExpanded should map to kUltaExpanded_Width"); 306 "FontStretchUltraExpanded should map to kUltaExpanded_Width");
300 } 307 }
301 308
302 } // namespace blink 309 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698