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

Side by Side Diff: Source/platform/fonts/FontDescription.h

Issue 943463002: Initial implementation of font-size-adjust (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Created 5 years, 10 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) 2000 Lars Knoll (knoll@kde.org) 2 * Copyright (C) 2000 Lars Knoll (knoll@kde.org)
3 * (C) 2000 Antti Koivisto (koivisto@kde.org) 3 * (C) 2000 Antti Koivisto (koivisto@kde.org)
4 * (C) 2000 Dirk Mueller (mueller@kde.org) 4 * (C) 2000 Dirk Mueller (mueller@kde.org)
5 * Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008 Apple Inc. All rights reserv ed. 5 * Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008 Apple Inc. All rights reserv ed.
6 * Copyright (C) 2007 Nicholas Shanks <webkit@nickshanks.com> 6 * Copyright (C) 2007 Nicholas Shanks <webkit@nickshanks.com>
7 * 7 *
8 * This library is free software; you can redistribute it and/or 8 * This library is free software; you can redistribute it and/or
9 * modify it under the terms of the GNU Library General Public 9 * modify it under the terms of the GNU Library General Public
10 * License as published by the Free Software Foundation; either 10 * License as published by the Free Software Foundation; either
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
51 MonospaceFamily, CursiveFamily, FantasyFamily, Pict ographFamily }; 51 MonospaceFamily, CursiveFamily, FantasyFamily, Pict ographFamily };
52 52
53 enum Kerning { AutoKerning, NormalKerning, NoneKerning }; 53 enum Kerning { AutoKerning, NormalKerning, NoneKerning };
54 54
55 enum LigaturesState { NormalLigaturesState, DisabledLigaturesState, EnabledL igaturesState }; 55 enum LigaturesState { NormalLigaturesState, DisabledLigaturesState, EnabledL igaturesState };
56 56
57 FontDescription() 57 FontDescription()
58 : m_locale("en") 58 : m_locale("en")
59 , m_specifiedSize(0) 59 , m_specifiedSize(0)
60 , m_computedSize(0) 60 , m_computedSize(0)
61 , m_adjustedSize(0)
62 , m_sizeAdjust(0)
61 , m_letterSpacing(0) 63 , m_letterSpacing(0)
62 , m_wordSpacing(0) 64 , m_wordSpacing(0)
63 , m_orientation(Horizontal) 65 , m_orientation(Horizontal)
64 , m_nonCJKGlyphOrientation(NonCJKGlyphOrientationVerticalRight) 66 , m_nonCJKGlyphOrientation(NonCJKGlyphOrientationVerticalRight)
65 , m_widthVariant(RegularWidth) 67 , m_widthVariant(RegularWidth)
66 , m_style(FontStyleNormal) 68 , m_style(FontStyleNormal)
67 , m_variant(FontVariantNormal) 69 , m_variant(FontVariantNormal)
68 , m_isAbsoluteSize(false) 70 , m_isAbsoluteSize(false)
69 , m_weight(FontWeightNormal) 71 , m_weight(FontWeightNormal)
70 , m_stretch(FontStretchNormal) 72 , m_stretch(FontStretchNormal)
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
125 GenericFamilyType genericFamily; 127 GenericFamilyType genericFamily;
126 FontFamily family; 128 FontFamily family;
127 }; 129 };
128 130
129 const FontFamily& family() const { return m_familyList; } 131 const FontFamily& family() const { return m_familyList; }
130 FamilyDescription familyDescription() const { return FamilyDescription(gener icFamily(), family()); } 132 FamilyDescription familyDescription() const { return FamilyDescription(gener icFamily(), family()); }
131 FontFamily& firstFamily() { return m_familyList; } 133 FontFamily& firstFamily() { return m_familyList; }
132 Size size() const { return Size(m_keywordSize, m_specifiedSize, m_isAbsolute Size); } 134 Size size() const { return Size(m_keywordSize, m_specifiedSize, m_isAbsolute Size); }
133 float specifiedSize() const { return m_specifiedSize; } 135 float specifiedSize() const { return m_specifiedSize; }
134 float computedSize() const { return m_computedSize; } 136 float computedSize() const { return m_computedSize; }
137 float adjustedSize() const { return m_adjustedSize; }
138 float sizeAdjust() const { return m_sizeAdjust; }
135 FontStyle style() const { return static_cast<FontStyle>(m_style); } 139 FontStyle style() const { return static_cast<FontStyle>(m_style); }
136 int computedPixelSize() const { return int(m_computedSize + 0.5f); } 140 int computedPixelSize() const { return int(m_computedSize + 0.5f); }
137 FontVariant variant() const { return static_cast<FontVariant>(m_variant); } 141 FontVariant variant() const { return static_cast<FontVariant>(m_variant); }
138 bool isAbsoluteSize() const { return m_isAbsoluteSize; } 142 bool isAbsoluteSize() const { return m_isAbsoluteSize; }
139 FontWeight weight() const { return static_cast<FontWeight>(m_weight); } 143 FontWeight weight() const { return static_cast<FontWeight>(m_weight); }
140 FontStretch stretch() const { return static_cast<FontStretch>(m_stretch); } 144 FontStretch stretch() const { return static_cast<FontStretch>(m_stretch); }
141 static FontWeight lighterWeight(FontWeight); 145 static FontWeight lighterWeight(FontWeight);
142 static FontWeight bolderWeight(FontWeight); 146 static FontWeight bolderWeight(FontWeight);
143 static Size largerSize(const Size&); 147 static Size largerSize(const Size&);
144 static Size smallerSize(const Size&); 148 static Size smallerSize(const Size&);
(...skipping 28 matching lines...) Expand all
173 NonCJKGlyphOrientation nonCJKGlyphOrientation() const { return static_cast<N onCJKGlyphOrientation>(m_nonCJKGlyphOrientation); } 177 NonCJKGlyphOrientation nonCJKGlyphOrientation() const { return static_cast<N onCJKGlyphOrientation>(m_nonCJKGlyphOrientation); }
174 FontWidthVariant widthVariant() const { return static_cast<FontWidthVariant> (m_widthVariant); } 178 FontWidthVariant widthVariant() const { return static_cast<FontWidthVariant> (m_widthVariant); }
175 FontFeatureSettings* featureSettings() const { return m_featureSettings.get( ); } 179 FontFeatureSettings* featureSettings() const { return m_featureSettings.get( ); }
176 180
177 float effectiveFontSize() const; // Returns either the computedSize or the c omputedPixelSize 181 float effectiveFontSize() const; // Returns either the computedSize or the c omputedPixelSize
178 FontCacheKey cacheKey(const FontFaceCreationParams&, FontTraits desiredTrait s = FontTraits(0)) const; 182 FontCacheKey cacheKey(const FontFaceCreationParams&, FontTraits desiredTrait s = FontTraits(0)) const;
179 183
180 void setFamily(const FontFamily& family) { m_familyList = family; } 184 void setFamily(const FontFamily& family) { m_familyList = family; }
181 void setComputedSize(float s) { m_computedSize = clampTo<float>(s); } 185 void setComputedSize(float s) { m_computedSize = clampTo<float>(s); }
182 void setSpecifiedSize(float s) { m_specifiedSize = clampTo<float>(s); } 186 void setSpecifiedSize(float s) { m_specifiedSize = clampTo<float>(s); }
187 void setAdjustedSize(float s) { m_adjustedSize = clampTo<float>(s); }
188 void setSizeAdjust(float aspect) { m_sizeAdjust = clampTo<float>(aspect); }
183 void setStyle(FontStyle i) { m_style = i; } 189 void setStyle(FontStyle i) { m_style = i; }
184 void setVariant(FontVariant c) { m_variant = c; } 190 void setVariant(FontVariant c) { m_variant = c; }
185 void setVariantLigatures(const VariantLigatures&); 191 void setVariantLigatures(const VariantLigatures&);
186 void setIsAbsoluteSize(bool s) { m_isAbsoluteSize = s; } 192 void setIsAbsoluteSize(bool s) { m_isAbsoluteSize = s; }
187 void setWeight(FontWeight w) { m_weight = w; } 193 void setWeight(FontWeight w) { m_weight = w; }
188 void setStretch(FontStretch s) { m_stretch = s; } 194 void setStretch(FontStretch s) { m_stretch = s; }
189 void setGenericFamily(GenericFamilyType genericFamily) { m_genericFamily = g enericFamily; } 195 void setGenericFamily(GenericFamilyType genericFamily) { m_genericFamily = g enericFamily; }
190 void setKerning(Kerning kerning) { m_kerning = kerning; updateTypesettingFea tures(); } 196 void setKerning(Kerning kerning) { m_kerning = kerning; updateTypesettingFea tures(); }
191 void setKeywordSize(unsigned s) { m_keywordSize = s; } 197 void setKeywordSize(unsigned s) { m_keywordSize = s; }
192 void setFontSmoothing(FontSmoothingMode smoothing) { m_fontSmoothing = smoot hing; } 198 void setFontSmoothing(FontSmoothingMode smoothing) { m_fontSmoothing = smoot hing; }
(...skipping 22 matching lines...) Expand all
215 FontFamily m_familyList; // The list of font families to be used. 221 FontFamily m_familyList; // The list of font families to be used.
216 RefPtr<FontFeatureSettings> m_featureSettings; 222 RefPtr<FontFeatureSettings> m_featureSettings;
217 String m_locale; 223 String m_locale;
218 224
219 void updateTypesettingFeatures() const; 225 void updateTypesettingFeatures() const;
220 226
221 float m_specifiedSize; // Specified CSS value. Independent of rendering is sues such as integer 227 float m_specifiedSize; // Specified CSS value. Independent of rendering is sues such as integer
222 // rounding, minimum font sizes, and zooming. 228 // rounding, minimum font sizes, and zooming.
223 float m_computedSize; // Computed size adjusted for the minimum font size and the zoom factor. 229 float m_computedSize; // Computed size adjusted for the minimum font size and the zoom factor.
224 230
231 float m_adjustedSize; // (Given aspect value / aspect value of a font family ) * specifiedSize.
232 // This value is adjusted for the minimum font size and the zoom factor
233 // as well as a computed size is.
234 float m_sizeAdjust; // Given aspect value, i.e. font-size-adjust.
235
225 float m_letterSpacing; 236 float m_letterSpacing;
226 float m_wordSpacing; 237 float m_wordSpacing;
227 238
228 unsigned m_orientation : 1; // FontOrientation - Whether the font is renderi ng on a horizontal line or a vertical line. 239 unsigned m_orientation : 1; // FontOrientation - Whether the font is renderi ng on a horizontal line or a vertical line.
229 unsigned m_nonCJKGlyphOrientation : 1; // NonCJKGlyphOrientation - Only used by vertical text. Determines the default orientation for non-ideograph glyphs. 240 unsigned m_nonCJKGlyphOrientation : 1; // NonCJKGlyphOrientation - Only used by vertical text. Determines the default orientation for non-ideograph glyphs.
230 241
231 unsigned m_widthVariant : 2; // FontWidthVariant 242 unsigned m_widthVariant : 2; // FontWidthVariant
232 243
233 unsigned m_style : 1; // FontStyle 244 unsigned m_style : 1; // FontStyle
234 unsigned m_variant : 1; // FontVariant 245 unsigned m_variant : 1; // FontVariant
(...skipping 26 matching lines...) Expand all
261 static TypesettingFeatures s_defaultTypesettingFeatures; 272 static TypesettingFeatures s_defaultTypesettingFeatures;
262 273
263 static bool s_useSubpixelTextPositioning; 274 static bool s_useSubpixelTextPositioning;
264 }; 275 };
265 276
266 inline bool FontDescription::operator==(const FontDescription& other) const 277 inline bool FontDescription::operator==(const FontDescription& other) const
267 { 278 {
268 return m_familyList == other.m_familyList 279 return m_familyList == other.m_familyList
269 && m_specifiedSize == other.m_specifiedSize 280 && m_specifiedSize == other.m_specifiedSize
270 && m_computedSize == other.m_computedSize 281 && m_computedSize == other.m_computedSize
282 && m_adjustedSize == other.m_adjustedSize
283 && m_sizeAdjust == other.m_sizeAdjust
271 && m_letterSpacing == other.m_letterSpacing 284 && m_letterSpacing == other.m_letterSpacing
272 && m_wordSpacing == other.m_wordSpacing 285 && m_wordSpacing == other.m_wordSpacing
273 && m_style == other.m_style 286 && m_style == other.m_style
274 && m_variant == other.m_variant 287 && m_variant == other.m_variant
275 && m_isAbsoluteSize == other.m_isAbsoluteSize 288 && m_isAbsoluteSize == other.m_isAbsoluteSize
276 && m_weight == other.m_weight 289 && m_weight == other.m_weight
277 && m_stretch == other.m_stretch 290 && m_stretch == other.m_stretch
278 && m_genericFamily == other.m_genericFamily 291 && m_genericFamily == other.m_genericFamily
279 && m_kerning == other.m_kerning 292 && m_kerning == other.m_kerning
280 && m_commonLigaturesState == other.m_commonLigaturesState 293 && m_commonLigaturesState == other.m_commonLigaturesState
281 && m_discretionaryLigaturesState == other.m_discretionaryLigaturesState 294 && m_discretionaryLigaturesState == other.m_discretionaryLigaturesState
282 && m_historicalLigaturesState == other.m_historicalLigaturesState 295 && m_historicalLigaturesState == other.m_historicalLigaturesState
283 && m_contextualLigaturesState == other.m_contextualLigaturesState 296 && m_contextualLigaturesState == other.m_contextualLigaturesState
284 && m_keywordSize == other.m_keywordSize 297 && m_keywordSize == other.m_keywordSize
285 && m_fontSmoothing == other.m_fontSmoothing 298 && m_fontSmoothing == other.m_fontSmoothing
286 && m_textRendering == other.m_textRendering 299 && m_textRendering == other.m_textRendering
287 && m_orientation == other.m_orientation 300 && m_orientation == other.m_orientation
288 && m_nonCJKGlyphOrientation == other.m_nonCJKGlyphOrientation 301 && m_nonCJKGlyphOrientation == other.m_nonCJKGlyphOrientation
289 && m_widthVariant == other.m_widthVariant 302 && m_widthVariant == other.m_widthVariant
290 && m_script == other.m_script 303 && m_script == other.m_script
291 && m_syntheticBold == other.m_syntheticBold 304 && m_syntheticBold == other.m_syntheticBold
292 && m_syntheticItalic == other.m_syntheticItalic 305 && m_syntheticItalic == other.m_syntheticItalic
293 && m_featureSettings == other.m_featureSettings 306 && m_featureSettings == other.m_featureSettings
294 && m_subpixelTextPosition == other.m_subpixelTextPosition; 307 && m_subpixelTextPosition == other.m_subpixelTextPosition;
295 } 308 }
296 309
297 } // namespace blink 310 } // namespace blink
298 311
299 #endif 312 #endif
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698