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

Side by Side Diff: third_party/WebKit/Source/platform/fonts/mac/FontFamilyMatcherMac.mm

Issue 2137483004: Enable "system-ui" generic font family (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: drott nit Created 4 years, 2 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) 2006, 2007, 2008, 2009 Apple Inc. All rights reserved. 2 * Copyright (C) 2006, 2007, 2008, 2009 Apple Inc. All rights reserved.
3 * Copyright (C) 2007 Nicholas Shanks <webkit@nickshanks.com> 3 * Copyright (C) 2007 Nicholas Shanks <webkit@nickshanks.com>
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 14 matching lines...) Expand all
25 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 25 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
26 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 26 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
27 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 27 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28 */ 28 */
29 29
30 #import "platform/fonts/mac/FontFamilyMatcherMac.h" 30 #import "platform/fonts/mac/FontFamilyMatcherMac.h"
31 31
32 #import <AppKit/AppKit.h> 32 #import <AppKit/AppKit.h>
33 #import <Foundation/Foundation.h> 33 #import <Foundation/Foundation.h>
34 #import <math.h> 34 #import <math.h>
35 #include "platform/fonts/FontCache.h"
35 #include "platform/fonts/FontTraits.h" 36 #include "platform/fonts/FontTraits.h"
36 #include "platform/LayoutTestSupport.h" 37 #include "platform/LayoutTestSupport.h"
37 #include "platform/mac/VersionUtilMac.h" 38 #include "platform/mac/VersionUtilMac.h"
38 #import "wtf/HashSet.h" 39 #import "wtf/HashSet.h"
39 #import "wtf/text/AtomicStringHash.h" 40 #import "wtf/text/AtomicStringHash.h"
40 41
41 @interface NSFont (YosemiteAdditions) 42 @interface NSFont (YosemiteAdditions)
42 + (NSFont*)systemFontOfSize:(CGFloat)size weight:(CGFloat)weight; 43 + (NSFont*)systemFontOfSize:(CGFloat)size weight:(CGFloat)weight;
43 @end 44 @end
44 45
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after
118 return abs(candidateWeight - 6) > abs(chosenWeight - 6); 119 return abs(candidateWeight - 6) > abs(chosenWeight - 6);
119 120
120 // Otherwise, prefer the one closer to the desired weight. 121 // Otherwise, prefer the one closer to the desired weight.
121 return candidateWeightDeltaMagnitude < chosenWeightDeltaMagnitude; 122 return candidateWeightDeltaMagnitude < chosenWeightDeltaMagnitude;
122 } 123 }
123 124
124 // Family name is somewhat of a misnomer here. We first attempt to find an 125 // Family name is somewhat of a misnomer here. We first attempt to find an
125 // exact match comparing the desiredFamily to the PostScript name of the 126 // exact match comparing the desiredFamily to the PostScript name of the
126 // installed fonts. If that fails we then do a search based on the family 127 // installed fonts. If that fails we then do a search based on the family
127 // names of the installed fonts. 128 // names of the installed fonts.
128 NSFont* MatchNSFontFamily(NSString* desiredFamily, 129 NSFont* MatchNSFontFamily(const AtomicString& desiredFamilyString,
129 NSFontTraitMask desiredTraits, 130 NSFontTraitMask desiredTraits,
130 FontWeight desiredWeight, 131 FontWeight desiredWeight,
131 float size) { 132 float size) {
132 if ([desiredFamily isEqualToString:@"BlinkMacSystemFont"]) { 133 DCHECK_NE(desiredFamilyString, FontCache::legacySystemFontFamily());
134 if (desiredFamilyString == FontFamilyNames::system_ui) {
133 // On OSX 10.9, the default system font depends on the SDK version. When 135 // On OSX 10.9, the default system font depends on the SDK version. When
134 // compiled against the OSX 10.10 SDK, the font is .LucidaGrandeUI. When 136 // compiled against the OSX 10.10 SDK, the font is .LucidaGrandeUI. When
135 // compiled against the OSX 10.6 SDK, the font is Lucida Grande. Layout 137 // compiled against the OSX 10.6 SDK, the font is Lucida Grande. Layout
136 // tests don't support different expectations based on the SDK version, 138 // tests don't support different expectations based on the SDK version,
137 // so force layout tests to use "Lucida Grande". Once the 10.10 SDK 139 // so force layout tests to use "Lucida Grande". Once the 10.10 SDK
138 // switch is made, this should be changed to return .LucidaGrandeUI and 140 // switch is made, this should be changed to return .LucidaGrandeUI and
139 // the Layout Expectations should be updated. http://crbug.com/515836. 141 // the Layout Expectations should be updated. http://crbug.com/515836.
140 if (LayoutTestSupport::isRunningLayoutTest() && IsOS10_9()) { 142 if (LayoutTestSupport::isRunningLayoutTest() && IsOS10_9()) {
141 if (desiredWeight >= blink::FontWeightBold) 143 if (desiredWeight >= blink::FontWeightBold)
142 return [NSFont fontWithName:@"Lucida Grande Bold" size:size]; 144 return [NSFont fontWithName:@"Lucida Grande Bold" size:size];
(...skipping 13 matching lines...) Expand all
156 font = [NSFont systemFontOfSize:size 158 font = [NSFont systemFontOfSize:size
157 weight:toYosemiteFontWeight(desiredWeight)]; 159 weight:toYosemiteFontWeight(desiredWeight)];
158 } 160 }
159 161
160 if (desiredTraits & IMPORTANT_FONT_TRAITS) 162 if (desiredTraits & IMPORTANT_FONT_TRAITS)
161 font = [[NSFontManager sharedFontManager] convertFont:font 163 font = [[NSFontManager sharedFontManager] convertFont:font
162 toHaveTrait:desiredTraits]; 164 toHaveTrait:desiredTraits];
163 return font; 165 return font;
164 } 166 }
165 167
168 NSString* desiredFamily = desiredFamilyString;
166 NSFontManager* fontManager = [NSFontManager sharedFontManager]; 169 NSFontManager* fontManager = [NSFontManager sharedFontManager];
167 170
168 // Do a simple case insensitive search for a matching font family. 171 // Do a simple case insensitive search for a matching font family.
169 // NSFontManager requires exact name matches. 172 // NSFontManager requires exact name matches.
170 // This addresses the problem of matching arial to Arial, etc., but perhaps 173 // This addresses the problem of matching arial to Arial, etc., but perhaps
171 // not all the issues. 174 // not all the issues.
172 NSEnumerator* e = [[fontManager availableFontFamilies] objectEnumerator]; 175 NSEnumerator* e = [[fontManager availableFontFamilies] objectEnumerator];
173 NSString* availableFamily; 176 NSString* availableFamily;
174 while ((availableFamily = [e nextObject])) { 177 while ((availableFamily = [e nextObject])) {
175 if ([desiredFamily caseInsensitiveCompare:availableFamily] == NSOrderedSame) 178 if ([desiredFamily caseInsensitiveCompare:availableFamily] == NSOrderedSame)
(...skipping 126 matching lines...) Expand 10 before | Expand all | Expand 10 after
302 6, // FontWeight500 305 6, // FontWeight500
303 8, // FontWeight600 306 8, // FontWeight600
304 9, // FontWeight700 307 9, // FontWeight700
305 10, // FontWeight800 308 10, // FontWeight800
306 12, // FontWeight900 309 12, // FontWeight900
307 }; 310 };
308 return appKitFontWeights[fontWeight]; 311 return appKitFontWeights[fontWeight];
309 } 312 }
310 313
311 } // namespace blink 314 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698