OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2008 Apple Inc. All Rights Reserved. | 2 * Copyright (C) 2008 Apple Inc. All Rights Reserved. |
3 * Copyright (C) 2014 Google Inc. All rights reserved. | 3 * Copyright (C) 2014 Google 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 * 1. Redistributions of source code must retain the above copyright | 8 * 1. 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 * 2. Redistributions in binary form must reproduce the above copyright | 10 * 2. Redistributions in binary form must reproduce the above copyright |
(...skipping 14 matching lines...) Expand all Loading... |
25 */ | 25 */ |
26 | 26 |
27 #ifndef FontTraits_h | 27 #ifndef FontTraits_h |
28 #define FontTraits_h | 28 #define FontTraits_h |
29 | 29 |
30 #include "wtf/Assertions.h" | 30 #include "wtf/Assertions.h" |
31 | 31 |
32 namespace blink { | 32 namespace blink { |
33 | 33 |
34 enum FontWeight { | 34 enum FontWeight { |
35 FontWeight100, | 35 FontWeight100 = 0, |
36 FontWeight200, | 36 FontWeight200 = 1, |
37 FontWeight300, | 37 FontWeight300 = 2, |
38 FontWeight400, | 38 FontWeight400 = 3, |
39 FontWeight500, | 39 FontWeight500 = 4, |
40 FontWeight600, | 40 FontWeight600 = 5, |
41 FontWeight700, | 41 FontWeight700 = 6, |
42 FontWeight800, | 42 FontWeight800 = 7, |
43 FontWeight900, | 43 FontWeight900 = 8, |
44 FontWeightNormal = FontWeight400, | 44 FontWeightNormal = FontWeight400, |
45 FontWeightBold = FontWeight700 | 45 FontWeightBold = FontWeight700 |
46 }; | 46 }; |
47 | 47 |
48 // Numeric values matching OS/2 & Windows Metrics usWidthClass table. | 48 // Numeric values matching OS/2 & Windows Metrics usWidthClass table. |
49 // https://www.microsoft.com/typography/otspec/os2.htm | 49 // https://www.microsoft.com/typography/otspec/os2.htm |
50 enum FontStretch { | 50 enum FontStretch { |
51 FontStretchUltraCondensed = 1, | 51 FontStretchUltraCondensed = 1, |
52 FontStretchExtraCondensed = 2, | 52 FontStretchExtraCondensed = 2, |
53 FontStretchCondensed = 3, | 53 FontStretchCondensed = 3, |
54 FontStretchSemiCondensed = 4, | 54 FontStretchSemiCondensed = 4, |
55 FontStretchNormal = 5, | 55 FontStretchNormal = 5, |
56 FontStretchSemiExpanded = 6, | 56 FontStretchSemiExpanded = 6, |
57 FontStretchExpanded = 7, | 57 FontStretchExpanded = 7, |
58 FontStretchExtraExpanded = 8, | 58 FontStretchExtraExpanded = 8, |
59 FontStretchUltraExpanded = 9 | 59 FontStretchUltraExpanded = 9 |
60 }; | 60 }; |
61 | 61 |
62 enum FontStyle { | 62 enum FontStyle { |
63 FontStyleNormal = 0, | 63 FontStyleNormal = 0, |
64 FontStyleItalic = 1 | 64 FontStyleOblique = 1, |
| 65 FontStyleItalic = 2 |
65 }; | 66 }; |
66 | 67 |
67 enum FontVariant { | 68 enum FontVariant { |
68 FontVariantNormal = 0, | 69 FontVariantNormal = 0, |
69 FontVariantSmallCaps = 1 | 70 FontVariantSmallCaps = 1 |
70 }; | 71 }; |
71 | 72 |
72 typedef unsigned FontTraitsBitfield; | 73 typedef unsigned FontTraitsBitfield; |
73 | 74 |
74 struct FontTraits { | 75 struct FontTraits { |
75 FontTraits(FontStyle style, FontVariant variant, FontWeight weight, FontStre
tch stretch) | 76 FontTraits(FontStyle style, FontVariant variant, FontWeight weight, FontStre
tch stretch) |
76 { | 77 { |
77 m_traits.m_style = style; | 78 m_traits.m_style = style; |
| 79 // TODO(drott): crbug.com/516673 Variant is not relevant for font select
ion, |
| 80 // should be removed here. |
78 m_traits.m_variant = variant; | 81 m_traits.m_variant = variant; |
79 m_traits.m_weight = weight; | 82 m_traits.m_weight = weight; |
80 m_traits.m_stretch = stretch; | 83 m_traits.m_stretch = stretch; |
81 m_traits.m_filler = 0; | 84 m_traits.m_filler = 0; |
82 ASSERT(!(m_bitfield >> 10)); | 85 ASSERT(!(m_bitfield >> 11)); |
83 } | 86 } |
84 FontTraits(FontTraitsBitfield bitfield) | 87 FontTraits(FontTraitsBitfield bitfield) |
85 : m_bitfield(bitfield) | 88 : m_bitfield(bitfield) |
86 { | 89 { |
87 ASSERT(!m_traits.m_filler); | 90 ASSERT(!m_traits.m_filler); |
88 ASSERT(!(m_bitfield >> 10)); | 91 ASSERT(!(m_bitfield >> 11)); |
89 } | 92 } |
90 FontStyle style() const { return static_cast<FontStyle>(m_traits.m_style); } | 93 FontStyle style() const { return static_cast<FontStyle>(m_traits.m_style); } |
91 FontVariant variant() const { return static_cast<FontVariant>(m_traits.m_var
iant); } | 94 FontVariant variant() const { return static_cast<FontVariant>(m_traits.m_var
iant); } |
92 FontWeight weight() const { return static_cast<FontWeight>(m_traits.m_weight
); } | 95 FontWeight weight() const { return static_cast<FontWeight>(m_traits.m_weight
); } |
93 FontStretch stretch() const { return static_cast<FontStretch>(m_traits.m_str
etch); } | 96 FontStretch stretch() const { return static_cast<FontStretch>(m_traits.m_str
etch); } |
94 FontTraitsBitfield bitfield() const { return m_bitfield; } | 97 FontTraitsBitfield bitfield() const { return m_bitfield; } |
95 | 98 |
96 union { | 99 union { |
97 struct { | 100 struct { |
98 unsigned m_style : 1; | 101 unsigned m_style : 2; |
99 unsigned m_variant : 1; | 102 unsigned m_variant : 1; |
100 unsigned m_weight : 4; | 103 unsigned m_weight : 4; |
101 unsigned m_stretch : 4; | 104 unsigned m_stretch : 4; |
102 unsigned m_filler : 22; | 105 unsigned m_filler : 21; |
103 } m_traits; | 106 } m_traits; |
104 FontTraitsBitfield m_bitfield; | 107 FontTraitsBitfield m_bitfield; |
105 }; | 108 }; |
106 }; | 109 }; |
107 | 110 |
108 } // namespace blink | 111 } // namespace blink |
109 #endif // FontTraits_h | 112 #endif // FontTraits_h |
OLD | NEW |