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

Side by Side Diff: pdf/pdfium/pdfium_engine.cc

Issue 326823002: Linux: Take into account the weight/italic parameters when mapping fonts on Linux. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: Created 6 years, 6 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 | « no previous file | 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) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 #include "pdf/pdfium/pdfium_engine.h" 5 #include "pdf/pdfium/pdfium_engine.h"
6 6
7 #include <math.h> 7 #include <math.h>
8 8
9 #include "base/json/json_writer.h" 9 #include "base/json/json_writer.h"
10 #include "base/logging.h" 10 #include "base/logging.h"
(...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after
129 129
130 PP_Instance g_last_instance_id; 130 PP_Instance g_last_instance_id;
131 131
132 struct PDFFontSubstitution { 132 struct PDFFontSubstitution {
133 const char* pdf_name; 133 const char* pdf_name;
134 const char* face; 134 const char* face;
135 bool bold; 135 bool bold;
136 bool italic; 136 bool italic;
137 }; 137 };
138 138
139 PP_BrowserFont_Trusted_Weight WeightToBrowserFontTrustedWeight(int weight) {
140 COMPILE_ASSERT(PP_BROWSERFONT_TRUSTED_WEIGHT_100 == 0,
141 PP_BrowserFont_Trusted_Weight_Min);
142 COMPILE_ASSERT(PP_BROWSERFONT_TRUSTED_WEIGHT_900 == 8,
143 PP_BrowserFont_Trusted_Weight_Max);
144 const int kMinimumWeight = 100;
145 const int kMaximumWeight = 900;
146 int normalized_weight =
147 std::min(std::max(weight, kMinimumWeight), kMaximumWeight);
148 normalized_weight = (normalized_weight / 100) - 1;
149 return static_cast<PP_BrowserFont_Trusted_Weight>(normalized_weight);
150 }
151
139 // This list is for CPWL_FontMap::GetDefaultFontByCharset(). 152 // This list is for CPWL_FontMap::GetDefaultFontByCharset().
140 // We pretend to have these font natively and let the browser (or underlying 153 // We pretend to have these font natively and let the browser (or underlying
141 // fontconfig) to pick the proper font on the system. 154 // fontconfig) to pick the proper font on the system.
142 void EnumFonts(struct _FPDF_SYSFONTINFO* sysfontinfo, void* mapper) { 155 void EnumFonts(struct _FPDF_SYSFONTINFO* sysfontinfo, void* mapper) {
143 FPDF_AddInstalledFont(mapper, "Arial", FXFONT_DEFAULT_CHARSET); 156 FPDF_AddInstalledFont(mapper, "Arial", FXFONT_DEFAULT_CHARSET);
144 157
145 int i = 0; 158 int i = 0;
146 while (CPWL_FontMap::defaultTTFMap[i].charset != -1) { 159 while (CPWL_FontMap::defaultTTFMap[i].charset != -1) {
147 FPDF_AddInstalledFont(mapper, 160 FPDF_AddInstalledFont(mapper,
148 CPWL_FontMap::defaultTTFMap[i].fontname, 161 CPWL_FontMap::defaultTTFMap[i].fontname,
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
214 if (PDFFontSubstitutions[i].italic) 227 if (PDFFontSubstitutions[i].italic)
215 description.set_italic(true); 228 description.set_italic(true);
216 break; 229 break;
217 } 230 }
218 } 231 }
219 232
220 if (i == arraysize(PDFFontSubstitutions)) { 233 if (i == arraysize(PDFFontSubstitutions)) {
221 // TODO(kochi): Pass the face in UTF-8. If face is not encoded in UTF-8, 234 // TODO(kochi): Pass the face in UTF-8. If face is not encoded in UTF-8,
222 // convert to UTF-8 before passing. 235 // convert to UTF-8 before passing.
223 description.set_face(face); 236 description.set_face(face);
237
238 description.set_weight(WeightToBrowserFontTrustedWeight(weight));
239 description.set_italic(italic > 0);
224 } 240 }
225 241
226 if (!pp::PDF::IsAvailable()) { 242 if (!pp::PDF::IsAvailable()) {
227 NOTREACHED(); 243 NOTREACHED();
228 return NULL; 244 return NULL;
229 } 245 }
230 246
231 PP_Resource font_resource = pp::PDF::GetFontFileWithFallback( 247 PP_Resource font_resource = pp::PDF::GetFontFileWithFallback(
232 pp::InstanceHandle(g_last_instance_id), 248 pp::InstanceHandle(g_last_instance_id),
233 &description.pp_font_description(), 249 &description.pp_font_description(),
(...skipping 3144 matching lines...) Expand 10 before | Expand all | Expand 10 after
3378 if (page_width > *max_page_width) { 3394 if (page_width > *max_page_width) {
3379 *max_page_width = page_width; 3395 *max_page_width = page_width;
3380 } 3396 }
3381 } 3397 }
3382 } 3398 }
3383 FPDF_CloseDocument(doc); 3399 FPDF_CloseDocument(doc);
3384 return true; 3400 return true;
3385 } 3401 }
3386 3402
3387 } // namespace chrome_pdf 3403 } // namespace chrome_pdf
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698