aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/pdf/SkPDFFont.cpp
Commit message (Collapse)AuthorAge
* Propagate SkSurfaceProps when knownGravatar robertphillips2015-07-07
| | | | | | This CL just closes the loop on some low hanging fruit w.r.t. propagating surface properties. Review URL: https://codereview.chromium.org/1214853025
* simplify release-proc for SkData, removing unneeded size paramGravatar reed2015-06-17
| | | | | | | | request https://codereview.chromium.org/1184953005 to land first BUG=skia: Review URL: https://codereview.chromium.org/1193553002
* Font variations.Gravatar bungeman2015-05-20
| | | | | | | | | | | | Multiple Master and TrueType fonts support variation axes. This implements back-end support for axes on platforms which support it. Committed: https://skia.googlesource.com/skia/+/05773ed30920c0214d1433c07cf6360a05476c97 Committed: https://skia.googlesource.com/skia/+/3489ee0f4fa34f124f9de090d12bdc2107d52aa9 Review URL: https://codereview.chromium.org/1027373002
* SkPDF: Add Sfntly to DEPS, gypGravatar halcanary2015-05-18
| | | | | | | | | | | | | | | | | Note: this can be disabled via: GYP_DEFINES='skia_pdf_use_sfntly=0 Warning: dm is 34% slower and uses 9% more memory. This is okay. Motivation: We want to test this code path in DM, since it is always used by Chromium and Android. BUG=skia:3563 Committed: https://skia.googlesource.com/skia/+/6a53b04e26749ea61f690ece408f2a1c0a5ad5bb Review URL: https://codereview.chromium.org/1134683006
* Revert of SkPDF: Add Sfntly to DEPS, gyp, SkUserConfig (patchset #7 ↵Gravatar halcanary2015-05-18
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | id:570001 of https://codereview.chromium.org/1134683006/) Reason for revert: break cros build Original issue's description: > SkPDF: Add Sfntly to DEPS, gyp > > Note: this can be disabled via: > GYP_DEFINES='skia_pdf_use_sfntly=0 > > Warning: dm is 34% slower and uses 9% more memory. This is > okay. > > Motivation: We want to test this code path in DM, since it is > always used by Chromium and Android. > > BUG=skia:3563 > > Committed: https://skia.googlesource.com/skia/+/6a53b04e26749ea61f690ece408f2a1c0a5ad5bb TBR=reed@google.com,mtklein@google.com NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true BUG=skia:3563 Review URL: https://codereview.chromium.org/1128353004
* SkPDF: Add Sfntly to DEPS, gypGravatar halcanary2015-05-18
| | | | | | | | | | | | | | | Note: this can be disabled via: GYP_DEFINES='skia_pdf_use_sfntly=0 Warning: dm is 34% slower and uses 9% more memory. This is okay. Motivation: We want to test this code path in DM, since it is always used by Chromium and Android. BUG=skia:3563 Review URL: https://codereview.chromium.org/1134683006
* Revert of Font variations. (patchset #26 id:500001 of ↵Gravatar robertphillips2015-05-15
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | https://codereview.chromium.org/1027373002/) Reason for revert: Appears to be breaking Linux ARM bots: FAILED: /usr/local/google/home/mosaic-role/slave/repo_clients/chromium_tot/chromium/src/../../prebuilt/toolchain/armv7a/bin/armv7a-cros-linux-gnueabi-g++ ... -o obj/third_party/skia/src/ports/skia_library.SkFontHost_FreeType.o ../../third_party/skia/src/ports/SkFontHost_FreeType.cpp:37:31: fatal error: freetype/ftmm.h: No such file or directory #include FT_MULTIPLE_MASTERS_H ^ compilation terminated. Original issue's description: > Font variations. > > Multiple Master and TrueType fonts support variation axes. > This implements back-end support for axes on platforms which > support it. > > Committed: https://skia.googlesource.com/skia/+/05773ed30920c0214d1433c07cf6360a05476c97 > > Committed: https://skia.googlesource.com/skia/+/3489ee0f4fa34f124f9de090d12bdc2107d52aa9 TBR=reed@google.com,mtklein@google.com,djsollen@google.com,halcanary@google.com,bungeman@google.com NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true Review URL: https://codereview.chromium.org/1139123008
* Font variations.Gravatar bungeman2015-05-14
| | | | | | | | | | Multiple Master and TrueType fonts support variation axes. This implements back-end support for axes on platforms which support it. Committed: https://skia.googlesource.com/skia/+/05773ed30920c0214d1433c07cf6360a05476c97 Review URL: https://codereview.chromium.org/1027373002
* Revert of Font variations. (patchset #21 id:400001 of ↵Gravatar bungeman2015-05-13
| | | | | | | | | | | | | | | | | | | | | | | https://codereview.chromium.org/1027373002/) Reason for revert: Mac failing to build due to CFNumberType in Chromium Canary. Original issue's description: > Font variations. > > Multiple Master and TrueType fonts support variation axes. > This implements back-end support for axes on platforms which > support it. > > Committed: https://skia.googlesource.com/skia/+/05773ed30920c0214d1433c07cf6360a05476c97 TBR=reed@google.com,mtklein@google.com,djsollen@google.com,halcanary@google.com NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true Review URL: https://codereview.chromium.org/1128913008
* Font variations.Gravatar bungeman2015-05-13
| | | | | | | | Multiple Master and TrueType fonts support variation axes. This implements back-end support for axes on platforms which support it. Review URL: https://codereview.chromium.org/1027373002
* PerGlyphInfo is on SkTypefaceGravatar reed2015-05-12
| | | | | | | | | BUG=skia: NOTRY=True NOTREECHECKS=True TBR= Review URL: https://codereview.chromium.org/1128023004
* fix reference to _PerGlyphInfoGravatar reed2015-05-12
| | | | | | | | | BUG=skia: TBR=bungeman@google.com NOTRY=True NOTREECHECKS=True Review URL: https://codereview.chromium.org/1136283004
* Make SkAdvancedTypefaceMetrics private.Gravatar reed2015-05-12
| | | | Review URL: https://codereview.chromium.org/1129283003
* SkPDF: Move utility fns to SkPDFUtilsGravatar halcanary2015-05-06
| | | | | | BUG=skia:3585 Review URL: https://codereview.chromium.org/1124193003
* SkPDF: clean up uses of deprecated calls in SkPDFFontGravatar halcanary2015-05-05
| | | | | | BUG=skia:3585 Review URL: https://codereview.chromium.org/1110533002
* SkPDF: Refactor SkPDFObject heiararchy.Gravatar halcanary2015-04-25
| | | | | | | | | | | Flatten and use a tagged union type Δmemory ~= -2.4% ± 0.5% Δtime ~= -1.2% ± 0.2% BUG=skia:3585 Review URL: https://codereview.chromium.org/1069103003
* SkPDF: Factor SkPDFCatalog into SkPDFObjNumMap and SkPDFSubstituteMapGravatar halcanary2015-03-31
| | | | | | | | | | | | | | | | | | | | | | | | | | | Motivation: Keep separate features separate. Also, future linearization work will need to have several objNumMap objects share a substituteMap. Also "catalog" has a specific meaning in PDF. This catalog did not map to that catalog. - Modify SkPDFObject::emitObject and SkPDFObject::addResources interface to requiore SkPDFObjNumMap and SkPDFSubstituteMap. - SkPDFObjNumMap const in SkPDFObject::emitObject. - Remove SkPDFCatalog.cpp/.h - Modify SkDocument_PDF.cpp to use new functions - Fold in SkPDFStream::populate - Fold in SkPDFBitmap::emitDict - Move SkPDFObjNumMap and SkPDFSubstituteMap to SkPDFTypes.h - Note (via assert) that SkPDFArray & SkPDFDict don't need to check substitutes. - Remove extra space from SkPDFDict serialization. - SkPDFBitmap SkPDFType0Font SkPDFGraphicState SkPDFStream updated to new interface. - PDFPrimitivesTest updated for new interface. BUG=skia:3585 Review URL: https://codereview.chromium.org/1049753002
* PDF: Canon now owns a reference to all interned objectsGravatar halcanary2015-02-27
| | | | | | | | | | | | | Add SkPDFCanon::reset function to unref all objects. No longer possible to remove object from canon Motivation: this doesn't change these object's lifetime, (they will still be fully unrefed when SkDocument::close() is called, but we no longer have to remove them from the array when their destructor is called. Review URL: https://codereview.chromium.org/966863002
* PDF: Now threadsafe!Gravatar halcanary2015-02-20
| | | | | | | | | | | | | The PDF canvas is now just as threadsafe as any other Skia canvas. DM updated to thread PDF tests. SkDocument_PDF now owns SkPDFCanon, and pointers to that canon are passed around to all classes that need access to the canon. BUG=skia:2683 Review URL: https://codereview.chromium.org/944643002
* Upstream support for sfntly in Google3Gravatar mtklein2015-02-17
| | | | | | | | See cr/86110021. BUG=skia: Review URL: https://codereview.chromium.org/913143007
* Simplify reference management in SkPDFGravatar halcanary2015-02-10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Prior to this change, SkPDFObject subclasses were required to track their resources separately from the document structure. (An object has a resource if it depends, via an indirect reference, on another object). This led to a lot of extra code to duplicate effort. I replace the getResources() function with the much simpler addResources() function. I only define a non-trivial addResources() method on arrays, dictionaries, and indirect object references. All other specialized classes simply rely on their parent class's implementation. SkPDFObject::addResources() works by recursively walking the directed graph of object (direct and indirect) references and adding resources to a set. It doesn't matter that there are closed loops in the graph, since we check the set before walking down a branch. - Add SkPDFObject::addResources() virtual function, with four implementations - Remove SkPDFObject::getResources() virtual function and all implementations. - Remove SkPDFObject::GetResourcesHelper() - Remove SkPDFObject::AddResourceHelper() - In SkPDFCatalog::findObjectIndex(), add an object to the catalog if it doesn't exist yet. - SkPDFCatalog::setSubstitute() no longer sets up resources - SkPDFDocument.cpp no longer needs the Streamer object - SkPDFDocument.cpp calls fDocCatalog->addResources to build the resource list. - SkPDFFont::addResource() removed - All SkPDF-::fResource sets removed (they are redundant). - removed SkPDFImage::addSMask() function - SkPDFResourceDict::getReferencedResources() removed. Motivation: this removes quite a bit of code and makes the objects slightly slimmer in memory. Most importantly, this will lead the way towards removing SkPDFObject's inheritance from SkRefCnt, which will greatly simplify everything. Testing: I usually test changes to the PDF backend by comparing checksums of PDF files rendered from GMs and SKPs before and after the change. This change both re-orders and re-numbers the indirect PDF objects. I used the qpdf program to normalize the PDFs and then compared the normalized outputs from before and after the change; they matched. Review URL: https://codereview.chromium.org/870333002
* Make SkStream *not* ref counted.Gravatar scroggo2015-01-21
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | SkStream is a stateful object, so it does not make sense for it to have multiple owners. Make SkStream inherit directly from SkNoncopyable. Update methods which previously called SkStream::ref() (e.g. SkImageDecoder::buildTileIndex() and SkFrontBufferedStream::Create(), which required the existing owners to call SkStream::unref()) to take ownership of their SkStream parameters and delete when done (including on failure). Switch all SkAutoTUnref<SkStream>s to SkAutoTDelete<SkStream>s. In some cases this means heap allocating streams that were previously stack allocated. Respect ownership rules of SkTypeface::CreateFromStream() and SkImageDecoder::buildTileIndex(). Update the comments for exceptional methods which do not affect the ownership of their SkStream parameters (e.g. SkPicture::CreateFromStream() and SkTypeface::Deserialize()) to be explicit about ownership. Remove test_stream_life, which tested that buildTileIndex() behaved correctly when SkStream was a ref counted object. The test does not make sense now that it is not. In SkPDFStream, remove the SkMemoryStream member. Instead of using it, create a new SkMemoryStream to pass to fDataStream (which is now an SkAutoTDelete). Make other pdf rasterizers behave like SkPDFDocumentToBitmap. SkPDFDocumentToBitmap delete the SkStream, so do the same in the following pdf rasterizers: SkPopplerRasterizePDF SkNativeRasterizePDF SkNoRasterizePDF Requires a change to Android, which currently treats SkStreams as ref counted objects. Review URL: https://codereview.chromium.org/849103004
* SkPDFCanonGravatar halcanary2015-01-21
| | | | | | | | | | | | | | | | | SkPDFCanon's fields and methods will eventually become part of SkPDFDocument/SkDocument_PDF. For now, it exists as a singleton to preflight that transition. This replaces three global arrays in SkPDFFont, SkPDFShader, and SkPDFGraphicsContext. This code is still thread-unsafe (http://skbug.com/2683), but moving this functionality into SkPDFDocument will fix that. This CL does not change pdf output from either GMs or SKPs. This change also simplifies some code around the SkPDFCanon methods. BUG=skia:2683 Review URL: https://codereview.chromium.org/842253003
* Change function signature of SkPDFObject::emitObject.Gravatar halcanary2015-01-12
| | | | | | | | | | | | | Replace virutal SkPDFObject::emitObject(s, c, true) with non-virtual SkPDFObject::emitIndirectObject(s, c), since none of the subclasses do (or should do) anything different. Replace object->emitObject(s, c, false) with object->emitObject(s, c) This is one step in simplifying the SkPDFObject interface to allow for the next step in refactoring. Review URL: https://codereview.chromium.org/827733004
* Cleanup: Remove a bunch of SkFontHost.h includes (unused).Gravatar tfarina2014-12-18
| | | | | | | | | | Nobody that is including SkFontHost is using SkFontHost API, so lets remove this includes, since the API per se is deprecated. BUG=None R=reed@google.com Review URL: https://codereview.chromium.org/803733006
* Even more win64 warning fixesGravatar bsalomon2014-12-12
| | | | Review URL: https://codereview.chromium.org/800993002
* Fix int16_t for glyphs, const glyphs, and clarify glyph loop.Gravatar bungeman2014-10-03
| | | | | | | | | | | | | | | | | | Several places in the PDF code are using int16_t for glyphs. With newer NotoSans fonts, all possible glyph ids are being used, so this can lead to problems. The PDF glyphs from text code returns the text for the glyphs if the encoding is for glyphs. However, it returns this using an unsafe const cast which is hiding possible bugs and preventing correct use of const in other places. The way the glyph loop in SkPDFDevice::drawPosText is written uses a '--i' in the loop, which makes it appear this can loop forever. I don't believe it can, but it is an unecessary code folding. We should also at least assert the forward progress correctness here. Review URL: https://codereview.chromium.org/626613002
* SkData can allocate room for its contents in the same blockGravatar reed2014-09-11
| | | | | | | | | BUG=skia: R=bungeman@google.com, mtklein@google.com Author: reed@google.com Review URL: https://codereview.chromium.org/560653004
* Fix memory leak in SkPDFType1FontGravatar djsollen2014-08-28
| | | | | | | | | BUG=skia:2880 R=bungeman@google.com Author: djsollen@google.com Review URL: https://codereview.chromium.org/514313003
* Fix thread unsafe mutex initialization.Gravatar bungeman2014-07-25
| | | | | | | | | BUG=skia:2779 R=robertphillips@google.com, mtklein@google.com, reed@android.com, bsalomon@google.com Author: bungeman@google.com Review URL: https://codereview.chromium.org/419113002
* Make SkPDFFont::fFontInfo a const pointer.Gravatar halcanary2014-07-11
| | | | | | | | | BUG=skia:2742 R=djsollen@google.com, scroggo@google.com Author: halcanary@google.com Review URL: https://codereview.chromium.org/383063007
* Switch SkPDFStream's internal storage from SkStream to SkDataGravatar halcanary2014-06-27
| | | | | | | | | | | | | | | | | | | Motivation: This makes SkPDFStream thread-safe for two threads serializing it at once, since a SkStream has an internal position. Updated SkPDFFont, SkPDFGraphicState, and SkPDFPage's use of SkPDFStream to use the SkData constructor rather than the SkStream constructor (saving a memcpy). BUG=skia:2683 Committed: https://skia.googlesource.com/skia/+/c1dfa14b645ae274780f026dd86c9b633fbdad06 R=mtklein@google.com, djsollen@google.com, rmistry@google.com, robertphillips@google.com Author: halcanary@google.com Review URL: https://codereview.chromium.org/340783013
* Revert of Switch SkPDFStream's internal storage from SkStream to SkData ↵Gravatar rmistry2014-06-26
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | (https://codereview.chromium.org/340783013/) Reason for revert: Causes canary failures Original issue's description: > Switch SkPDFStream's internal storage from SkStream to SkData > > Motivation: This makes SkPDFStream thread-safe for two threads > serializing it at once, since a SkStream has an internal position. > > Updated SkPDFFont, SkPDFGraphicState, and SkPDFPage's use of > SkPDFStream to use the SkData constructor rather than the SkStream > constructor (saving a memcpy). > > BUG=skia:2683 > > Committed: https://skia.googlesource.com/skia/+/c1dfa14b645ae274780f026dd86c9b633fbdad06 R=mtklein@google.com, djsollen@google.com, halcanary@google.com TBR=djsollen@google.com, halcanary@google.com, mtklein@google.com NOTREECHECKS=true NOTRY=true BUG=skia:2683 Author: rmistry@google.com Review URL: https://codereview.chromium.org/354043005
* Switch SkPDFStream's internal storage from SkStream to SkDataGravatar halcanary2014-06-26
| | | | | | | | | | | | | | | | Motivation: This makes SkPDFStream thread-safe for two threads serializing it at once, since a SkStream has an internal position. Updated SkPDFFont, SkPDFGraphicState, and SkPDFPage's use of SkPDFStream to use the SkData constructor rather than the SkStream constructor (saving a memcpy). BUG=skia:2683 R=mtklein@google.com, djsollen@google.com Author: halcanary@google.com Review URL: https://codereview.chromium.org/340783013
* Use SkMutex::assertHeld in SkPDFFont and SkPDFShader.Gravatar halcanary2014-06-20
| | | | | | | | R=mtklein@google.com Author: halcanary@google.com Review URL: https://codereview.chromium.org/348113002
* [PDF] Fix font embedding restrictions.Gravatar vandebo2014-06-19
| | | | | | | | | | | | Stop using restricted font outlines and honor don't subset restriction. Resubmit of r12600. R=halcanary@google.com, bungeman@google.com, reed@google.com Author: vandebo@chromium.org Review URL: https://codereview.chromium.org/334443002
* fix int/size_t warningsGravatar reed@google.com2014-04-18
| | | | | | | | | | | patch from issue 239933002 BUG=skia: R=bungeman@google.com Review URL: https://codereview.chromium.org/242113010 git-svn-id: http://skia.googlecode.com/svn/trunk@14259 2bbb7eff-a529-9590-31e7-b0007b416f81
* [PDF] Fix font width generation when glyph 0 is used.Gravatar commit-bot@chromium.org2013-12-11
| | | | | | | | | | | | | Using glyph 0 caused gid 0 to be in the subset list twice, which violated an assumption in the code. Added an assert for the assumption and updated the code to not insert gid 0 into the subset list twice. BUG=skia:1889 R=bungeman@google.com Author: vandebo@chromium.org Review URL: https://codereview.chromium.org/113093004 git-svn-id: http://skia.googlecode.com/svn/trunk@12632 2bbb7eff-a529-9590-31e7-b0007b416f81
* [PDF] Fix bug in ToUnicode table generation for Type 3 fonts.Gravatar commit-bot@chromium.org2013-12-11
| | | | | | | | | | | | | | True glyphIDs where being using in the Type3 ToUnicode table instead of IDs of 1-255. This causes poppler to complain about each entry. BUG:skia:1565 R=bungeman@google.com Author: vandebo@chromium.org Review URL: https://codereview.chromium.org/112053005 git-svn-id: http://skia.googlecode.com/svn/trunk@12625 2bbb7eff-a529-9590-31e7-b0007b416f81
* Revert "[PDF] Fix font embedding restrictions."Gravatar vandebo@chromium.org2013-12-10
| | | | | | | | This reverts r12600 and r12601, likely causing crash on Mac. Review URL: https://codereview.chromium.org/111893002 git-svn-id: http://skia.googlecode.com/svn/trunk@12604 2bbb7eff-a529-9590-31e7-b0007b416f81
* [PDF] Fix font embedding restrictions.Gravatar commit-bot@chromium.org2013-12-10
| | | | | | | | | | | | Stop using restricted font outlines and honor don't subset restriction. R=reed@google.com, bungeman@google.com Author: vandebo@chromium.org Review URL: https://codereview.chromium.org/107863002 git-svn-id: http://skia.googlecode.com/svn/trunk@12600 2bbb7eff-a529-9590-31e7-b0007b416f81
* Fix refcounting bug for Type1 font usage with more than 255 characters.Gravatar commit-bot@chromium.org2013-12-05
| | | | | | | | | | R=bungeman@google.com Author: vandebo@chromium.org Review URL: https://codereview.chromium.org/103423003 git-svn-id: http://skia.googlecode.com/svn/trunk@12520 2bbb7eff-a529-9590-31e7-b0007b416f81
* Fix double ref issue in SkPDFFont ctorGravatar robertphillips@google.com2013-10-11
| | | | | | | | https://codereview.chromium.org/26799003/ git-svn-id: http://skia.googlecode.com/svn/trunk@11724 2bbb7eff-a529-9590-31e7-b0007b416f81
* Sanitizing source files in Housekeeper-NightlyGravatar skia.committer@gmail.com2013-09-19
| | | | git-svn-id: http://skia.googlecode.com/svn/trunk@11375 2bbb7eff-a529-9590-31e7-b0007b416f81
* pdf: write only ToUnicode mappings needed by the font, trimming anything out ↵Gravatar edisonn@google.com2013-09-18
| | | | | | | | | | of [firstChar, lastChar] interval. R=vandebo@chromium.org Review URL: https://codereview.chromium.org/23519006 git-svn-id: http://skia.googlecode.com/svn/trunk@11360 2bbb7eff-a529-9590-31e7-b0007b416f81
* [PDF] Rewind the font stream if font subsetting fails.Gravatar vandebo@chromium.org2013-09-05
| | | | | | | | R=edisonn@google.com Review URL: https://codereview.chromium.org/23654012 git-svn-id: http://skia.googlecode.com/svn/trunk@11116 2bbb7eff-a529-9590-31e7-b0007b416f81
* ARM Skia NEON patches - 09 - BugfixGravatar commit-bot@chromium.org2013-07-10
| | | | | | | | | | | | | | | | Misc: fix a PDF warning/bug on ARM char is unsigned by default on ARM, so the (curNibble < 0) test is always false, probably leading to a bug. BUG= R=djsollen@google.com, edisonn@google.com Author: kevin.petit.arm@gmail.com Review URL: https://chromiumcodereview.appspot.com/18365005 git-svn-id: http://skia.googlecode.com/svn/trunk@9954 2bbb7eff-a529-9590-31e7-b0007b416f81
* resubmit https://code.google.com/p/skia/source/detail?r=7883 (in the meantime weGravatar edisonn@google.com2013-04-02
| | | | | | | added capability to collect minidump and callstack if buildbot fails with heap coruption in windows, and a NPE bug was fixed in SkPDFDocument, when document was destroyed without ever beeing used and a field was NULL + a few minor conflicts have been resolved) git-svn-id: http://skia.googlecode.com/svn/trunk@8487 2bbb7eff-a529-9590-31e7-b0007b416f81
* Reverting r8233 (Use SkSet in PDF)Gravatar robertphillips@google.com2013-03-20
| | | | git-svn-id: http://skia.googlecode.com/svn/trunk@8255 2bbb7eff-a529-9590-31e7-b0007b416f81
* resubmit https://code.google.com/p/skia/source/detail?r=7883 (in the ↵Gravatar edisonn@google.com2013-03-19
| | | | | | | | meantime we added capability to collect minidump and callstack if buildbot fails with heap coruption in windows. a few minor conflicts have been resolved) Review URL: https://codereview.chromium.org/12840004 git-svn-id: http://skia.googlecode.com/svn/trunk@8233 2bbb7eff-a529-9590-31e7-b0007b416f81