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

Side by Side Diff: src/pdf/SkPDFFont.cpp

Issue 2332813002: SkPDF: do not assert when openStream return nullptr (Closed)
Patch Set: Created 4 years, 3 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
« 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 /* 1 /*
2 * Copyright 2011 Google Inc. 2 * Copyright 2011 Google Inc.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license that can be 4 * Use of this source code is governed by a BSD-style license that can be
5 * found in the LICENSE file. 5 * found in the LICENSE file.
6 */ 6 */
7 7
8 #include "SkData.h" 8 #include "SkData.h"
9 #include "SkGlyphCache.h" 9 #include "SkGlyphCache.h"
10 #include "SkPaint.h" 10 #include "SkPaint.h"
(...skipping 350 matching lines...) Expand 10 before | Expand all | Expand 10 after
361 SkAdvancedTypefaceMetrics::FontType type = this->getType(); 361 SkAdvancedTypefaceMetrics::FontType type = this->getType();
362 SkTypeface* face = this->typeface(); 362 SkTypeface* face = this->typeface();
363 SkASSERT(face); 363 SkASSERT(face);
364 364
365 auto descriptor = sk_make_sp<SkPDFDict>("FontDescriptor"); 365 auto descriptor = sk_make_sp<SkPDFDict>("FontDescriptor");
366 add_common_font_descriptor_entries(descriptor.get(), metrics, 0); 366 add_common_font_descriptor_entries(descriptor.get(), metrics, 0);
367 367
368 int ttcIndex; 368 int ttcIndex;
369 std::unique_ptr<SkStreamAsset> fontAsset(face->openStream(&ttcIndex)); 369 std::unique_ptr<SkStreamAsset> fontAsset(face->openStream(&ttcIndex));
370 size_t fontSize = fontAsset ? fontAsset->getLength() : 0; 370 size_t fontSize = fontAsset ? fontAsset->getLength() : 0;
371 SkASSERT(fontAsset); 371 if (0 == fontSize) {
372 SkASSERT(fontSize > 0); 372 SkDebugf("Error: (SkTypeface)(%p)::openStream() returned "
373 if (fontSize > 0) { 373 "empty stream (%p) when identified as kType1CID_Font "
374 "or kTrueType_Font.\n", face, fontAsset.get());
375 } else {
374 switch (type) { 376 switch (type) {
375 case SkAdvancedTypefaceMetrics::kTrueType_Font: { 377 case SkAdvancedTypefaceMetrics::kTrueType_Font: {
376 #ifdef SK_PDF_USE_SFNTLY 378 #ifdef SK_PDF_USE_SFNTLY
377 if (!SkToBool(metrics.fFlags & 379 if (!SkToBool(metrics.fFlags &
378 SkAdvancedTypefaceMetrics::kNotSubsettable_FontFla g)) { 380 SkAdvancedTypefaceMetrics::kNotSubsettable_FontFla g)) {
379 sk_sp<SkPDFStream> subsetStream = get_subset_font_stream( 381 sk_sp<SkPDFStream> subsetStream = get_subset_font_stream(
380 std::move(fontAsset), this->glyphUsage(), 382 std::move(fontAsset), this->glyphUsage(),
381 metrics.fFontName.c_str(), ttcIndex); 383 metrics.fFontName.c_str(), ttcIndex);
382 if (subsetStream) { 384 if (subsetStream) {
383 descriptor->insertObjRef("FontFile2", std::move(subsetSt ream)); 385 descriptor->insertObjRef("FontFile2", std::move(subsetSt ream));
(...skipping 338 matching lines...) Expand 10 before | Expand all | Expand 10 after
722 724
723 bool SkPDFFont::CanEmbedTypeface(SkTypeface* typeface, SkPDFCanon* canon) { 725 bool SkPDFFont::CanEmbedTypeface(SkTypeface* typeface, SkPDFCanon* canon) {
724 const SkAdvancedTypefaceMetrics* metrics = SkPDFFont::GetMetrics(typeface, c anon); 726 const SkAdvancedTypefaceMetrics* metrics = SkPDFFont::GetMetrics(typeface, c anon);
725 return metrics && can_embed(*metrics); 727 return metrics && can_embed(*metrics);
726 } 728 }
727 729
728 void SkPDFFont::drop() { 730 void SkPDFFont::drop() {
729 fTypeface = nullptr; 731 fTypeface = nullptr;
730 this->SkPDFDict::drop(); 732 this->SkPDFDict::drop();
731 } 733 }
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