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

Side by Side Diff: Source/platform/fonts/mac/FontCacheMac.mm

Issue 879533003: Remove Mac native font type members from FontPlatformData (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Canvas text metrics test does not need rebaselining after improvement landed, toNSFont in WebSubstringUtil.mm Created 5 years, 9 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 13 matching lines...) Expand all
24 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 24 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
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 "config.h" 30 #import "config.h"
31 #import "platform/fonts/FontCache.h" 31 #import "platform/fonts/FontCache.h"
32 32
33 #import <AppKit/AppKit.h> 33 #import <AppKit/AppKit.h>
34 #import "platform/LayoutTestSupport.h" 34 #include "platform/LayoutTestSupport.h"
35 #import "platform/RuntimeEnabledFeatures.h" 35 #include "platform/RuntimeEnabledFeatures.h"
36 #import "platform/fonts/FontDescription.h" 36 #include "platform/fonts/FontDescription.h"
37 #import "platform/fonts/FontFaceCreationParams.h" 37 #include "platform/fonts/FontFaceCreationParams.h"
38 #import "platform/fonts/FontPlatformData.h" 38 #include "platform/fonts/FontPlatformData.h"
39 #import "platform/fonts/SimpleFontData.h" 39 #include "platform/fonts/SimpleFontData.h"
40 #import "platform/fonts/mac/FontFamilyMatcherMac.h" 40 #include "platform/fonts/mac/FontFamilyMatcherMac.h"
41 #import "public/platform/Platform.h" 41 #include "public/platform/Platform.h"
42 #import "public/platform/WebTraceLocation.h" 42 #include "public/platform/WebTraceLocation.h"
43 #import <wtf/Functional.h> 43 #include <wtf/Functional.h>
44 #import <wtf/MainThread.h> 44 #include <wtf/MainThread.h>
45 #import <wtf/StdLibExtras.h> 45 #include <wtf/StdLibExtras.h>
46 46
47 // Forward declare Mac SPIs. 47 // Forward declare Mac SPIs.
48 // Request for public API: rdar://13803570 48 // Request for public API: rdar://13803570
49 @interface NSFont (WebKitSPI) 49 @interface NSFont (WebKitSPI)
50 + (NSFont*)findFontLike:(NSFont*)font forString:(NSString*)string withRange:(NSR ange)range inLanguage:(id)useNil; 50 + (NSFont*)findFontLike:(NSFont*)font forString:(NSString*)string withRange:(NSR ange)range inLanguage:(id)useNil;
51 + (NSFont*)findFontLike:(NSFont*)font forCharacter:(UniChar)uc inLanguage:(id)us eNil; 51 + (NSFont*)findFontLike:(NSFont*)font forCharacter:(UniChar)uc inLanguage:(id)us eNil;
52 @end 52 @end
53 53
54 namespace blink { 54 namespace blink {
55 55
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
112 if (character <= 0xFFFF) { 112 if (character <= 0xFFFF) {
113 codeUnits[0] = character; 113 codeUnits[0] = character;
114 codeUnitsLength = 1; 114 codeUnitsLength = 1;
115 } else { 115 } else {
116 codeUnits[0] = U16_LEAD(character); 116 codeUnits[0] = U16_LEAD(character);
117 codeUnits[1] = U16_TRAIL(character); 117 codeUnits[1] = U16_TRAIL(character);
118 codeUnitsLength = 2; 118 codeUnitsLength = 2;
119 } 119 }
120 120
121 const FontPlatformData& platformData = fontDataToSubstitute->platformData(); 121 const FontPlatformData& platformData = fontDataToSubstitute->platformData();
122 NSFont *nsFont = platformData.font(); 122 NSFont* nsFont = toNSFont(platformData.ctFont());
123 123
124 NSString *string = [[NSString alloc] initWithCharactersNoCopy:codeUnits leng th:codeUnitsLength freeWhenDone:NO]; 124 NSString *string = [[NSString alloc] initWithCharactersNoCopy:codeUnits leng th:codeUnitsLength freeWhenDone:NO];
125 NSFont *substituteFont = [NSFont findFontLike:nsFont forString:string withRa nge:NSMakeRange(0, codeUnitsLength) inLanguage:nil]; 125 NSFont *substituteFont = [NSFont findFontLike:nsFont forString:string withRa nge:NSMakeRange(0, codeUnitsLength) inLanguage:nil];
126 [string release]; 126 [string release];
127 127
128 // FIXME: Remove this SPI usage: http://crbug.com/255122 128 // FIXME: Remove this SPI usage: http://crbug.com/255122
129 if (!substituteFont && codeUnitsLength == 1) 129 if (!substituteFont && codeUnitsLength == 1)
130 substituteFont = [NSFont findFontLike:nsFont forCharacter:codeUnits[0] i nLanguage:nil]; 130 substituteFont = [NSFont findFontLike:nsFont forCharacter:codeUnits[0] i nLanguage:nil];
131 if (!substituteFont) 131 if (!substituteFont)
132 return nullptr; 132 return nullptr;
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after
213 NSFontManager *fontManager = [NSFontManager sharedFontManager]; 213 NSFontManager *fontManager = [NSFontManager sharedFontManager];
214 NSFontTraitMask actualTraits = 0; 214 NSFontTraitMask actualTraits = 0;
215 if (fontDescription.style()) 215 if (fontDescription.style())
216 actualTraits = [fontManager traitsOfFont:nsFont]; 216 actualTraits = [fontManager traitsOfFont:nsFont];
217 NSInteger actualWeight = [fontManager weightOfFont:nsFont]; 217 NSInteger actualWeight = [fontManager weightOfFont:nsFont];
218 218
219 NSFont *platformFont = useHinting() ? [nsFont screenFont] : [nsFont printerF ont]; 219 NSFont *platformFont = useHinting() ? [nsFont screenFont] : [nsFont printerF ont];
220 bool syntheticBold = (isAppKitFontWeightBold(weight) && !isAppKitFontWeightB old(actualWeight)) || fontDescription.isSyntheticBold(); 220 bool syntheticBold = (isAppKitFontWeightBold(weight) && !isAppKitFontWeightB old(actualWeight)) || fontDescription.isSyntheticBold();
221 bool syntheticItalic = ((traits & NSFontItalicTrait) && !(actualTraits & NSF ontItalicTrait)) || fontDescription.isSyntheticItalic(); 221 bool syntheticItalic = ((traits & NSFontItalicTrait) && !(actualTraits & NSF ontItalicTrait)) || fontDescription.isSyntheticItalic();
222 222
223 // FontPlatformData::font() can be null for the case of Chromium out-of-proc ess font loading. 223 // FontPlatformData::typeface() is null in the case of Chromium out-of-proce ss font loading failing.
224 // In that case, we don't want to use the platformData. 224 // Out-of-process loading occurs for registered fonts stored in non-system l ocations.
225 // When loading fails, we do not want to use the returned FontPlatformData s ince it will not have
226 // a valid SkTypeface.
225 OwnPtr<FontPlatformData> platformData = adoptPtr(new FontPlatformData(platfo rmFont, size, syntheticBold, syntheticItalic, fontDescription.orientation())); 227 OwnPtr<FontPlatformData> platformData = adoptPtr(new FontPlatformData(platfo rmFont, size, syntheticBold, syntheticItalic, fontDescription.orientation()));
226 if (!platformData->font()) 228 if (!platformData->typeface()) {
227 return 0; 229 return nullptr;
230 }
228 return platformData.leakPtr(); 231 return platformData.leakPtr();
229 } 232 }
230 233
231 } // namespace blink 234 } // namespace blink
OLDNEW
« no previous file with comments | « Source/platform/fonts/SimpleFontData.h ('k') | Source/platform/fonts/mac/FontCustomPlatformDataMac.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698