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

Side by Side Diff: test/validator-checker.cc

Issue 13449003: [OTS] Make standalone tools compile on Mac (Closed) Base URL: http://ots.googlecode.com/svn/trunk/
Patch Set: Created 7 years, 8 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 | Annotate | Revision Log
« no previous file with comments | « test/idempotent.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2009 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #if !defined(_MSC_VER) 5 #if !defined(_MSC_VER)
6 #ifdef __linux__ 6 #ifdef __linux__
7 // Linux 7 // Linux
8 #include <freetype/ftoutln.h> 8 #include <freetype/ftoutln.h>
9 #include <ft2build.h> 9 #include <ft2build.h>
10 #include FT_FREETYPE_H 10 #include FT_FREETYPE_H
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after
85 } 85 }
86 } 86 }
87 87
88 std::fprintf(stderr, "OK: FreeType2 didn't crash: %s\n", file_name); 88 std::fprintf(stderr, "OK: FreeType2 didn't crash: %s\n", file_name);
89 return 0; 89 return 0;
90 } 90 }
91 #else 91 #else
92 // Mac OS X 92 // Mac OS X
93 int OpenAndLoadChars( 93 int OpenAndLoadChars(
94 const char *file_name, uint8_t *trans_font, size_t trans_len) { 94 const char *file_name, uint8_t *trans_font, size_t trans_len) {
95 ATSFontContainerRef container_ref = 0; 95 CFDataRef data = CFDataCreate(0, trans_font, trans_len);
96 ATSFontActivateFromMemory(trans_font, trans_len, 3, kATSFontFormatUnspecified, 96 if (!data) {
97 NULL, kATSOptionFlagsDefault, &container_ref);
98 if (!container_ref) {
99 std::fprintf(stderr, 97 std::fprintf(stderr,
100 "OK: font renderer couldn't open the transcoded font: %s\n", 98 "OK: font renderer couldn't open the transcoded font: %s\n",
101 file_name); 99 file_name);
102 return 0; 100 return 0;
103 } 101 }
104 102
105 ItemCount count; 103 CGDataProviderRef dataProvider = CGDataProviderCreateWithCFData(data);
106 ATSFontFindFromContainer( 104 CGFontRef cgFontRef = CGFontCreateWithDataProvider(dataProvider);
107 container_ref, kATSOptionFlagsDefault, 0, NULL, &count); 105 CGDataProviderRelease(dataProvider);
108 if (!count) { 106 CFRelease(data);
107 if (!cgFontRef) {
109 std::fprintf(stderr, 108 std::fprintf(stderr,
110 "OK: font renderer couldn't open the transcoded font: %s\n", 109 "OK: font renderer couldn't open the transcoded font: %s\n",
111 file_name); 110 file_name);
112 return 0; 111 return 0;
113 } 112 }
114 113
115 ATSFontRef ats_font_ref = 0; 114 size_t numGlyphs = CGFontGetNumberOfGlyphs(cgFontRef);
116 ATSFontFindFromContainer( 115 CGFontRelease(cgFontRef);
117 container_ref, kATSOptionFlagsDefault, 1, &ats_font_ref, NULL); 116 if (!numGlyphs) {
118 if (!ats_font_ref) {
119 std::fprintf(stderr, 117 std::fprintf(stderr,
120 "OK: font renderer couldn't open the transcoded font: %s\n", 118 "OK: font renderer couldn't open the transcoded font: %s\n",
121 file_name); 119 file_name);
122 return 0; 120 return 0;
123 } 121 }
124
125 CTFontRef ct_font_ref = CTFontCreateWithPlatformFont(ats_font_ref, 12,
126 NULL, NULL);
127 if (!CTFontGetGlyphCount(ct_font_ref)) {
128 std::fprintf(stderr,
129 "OK: font renderer couldn't open the transcoded font: %s\n",
130 file_name);
131 return 0;
132 }
133
134 std::fprintf(stderr, "OK: font renderer didn't crash: %s\n", file_name); 122 std::fprintf(stderr, "OK: font renderer didn't crash: %s\n", file_name);
135 // TODO(yusukes): would be better to perform LoadChar() like Linux. 123 // TODO(yusukes): would be better to perform LoadChar() like Linux.
136 return 0; 124 return 0;
137 } 125 }
138 #endif // __linux__ 126 #endif // __linux__
139 #else 127 #else
140 // Windows 128 // Windows
141 // TODO(yusukes): Support Windows. 129 // TODO(yusukes): Support Windows.
142 #endif // _MSC_VER 130 #endif // _MSC_VER
143 131
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
176 164
177 bool result = ots::Process(&output, orig_font, orig_len); 165 bool result = ots::Process(&output, orig_font, orig_len);
178 if (!result) { 166 if (!result) {
179 std::fprintf(stderr, "OK: the malicious font was filtered: %s\n", argv[1]); 167 std::fprintf(stderr, "OK: the malicious font was filtered: %s\n", argv[1]);
180 return 0; 168 return 0;
181 } 169 }
182 const size_t trans_len = output.Tell(); 170 const size_t trans_len = output.Tell();
183 171
184 return OpenAndLoadChars(argv[1], trans_font, trans_len); 172 return OpenAndLoadChars(argv[1], trans_font, trans_len);
185 } 173 }
OLDNEW
« no previous file with comments | « test/idempotent.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698