aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/pdf/SkPDFFont.cpp
Commit message (Collapse)AuthorAge
* Fix four memory leaks uncovered by valgrinding gm tests.Gravatar vandebo@chromium.org2012-03-14
| | | | | | | | | | | | | All are triggered by PDF code. Two are missing unref's on SkData. One is a missing unref on a SkAdvancedTypefaceMetrics. The last is missing destruction of SkClipStack internal state. BUG=526 Review URL: https://codereview.appspot.com/5824049 git-svn-id: http://skia.googlecode.com/svn/trunk@3386 2bbb7eff-a529-9590-31e7-b0007b416f81
* posix: Avoid static initializers in static/global mutexesGravatar digit@google.com2012-01-26
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch removes static initializers related to static and global mutexes from the final library's machine code when building on a pthread-capable system. We use PTHREAD_MUTEX_INITIALIZER to perform POD-style initialization. You need a line like the following to declare a global mutex with it: SkBaseMutex gMutex = { PTHREAD_MUTEX_INITIALIZER }; We introduce the SK_DECLARE_STATIC_MUTEX and SK_DECLARE_GLOBAL_MUTEX macros to be able to declare static/global mutexes in the source tree uniformly. SkMutex is now defined as a sub-class of SkBaseMutex, with standard construction/destruction semantics. This is useful if the mutex object is a member of another C++ class, or allocated dynamically. We also modify a few places to refer to SkBaseMutex instead of a SkMutex, where it makes sense. Generally speaking, client code should hold and use pointers to SkBaseMutex whenever they can now. We defined a new built-time macro named SK_USE_POSIX_THREADS to indicate that we're using a pthread-based SkThread.h interface. The macro will also be used in future patches to implement other helper thread synchronization classes. Finally, we inline the acquire() and release() functions in the case of Posix to improve performance a bit. Running: 'bench -repeat 10 -match mutex' on an Android device or a 2.4GHz Xeon Linux desktop shows the following improvements: Before After Galaxy Nexus 1.64 1.45 Nexus S 1.47 1.16 Xoom 1.86 1.66 Xeon 0.36 0.31 This removes 5 static mutex initializers from the library Review URL: https://codereview.appspot.com/5501066 git-svn-id: http://skia.googlecode.com/svn/trunk@3091 2bbb7eff-a529-9590-31e7-b0007b416f81
* Towards enabling -Werror in skia on LinuxGravatar bsalomon@google.com2012-01-06
| | | | | | | | Review URL: http://codereview.appspot.com/5516044/ git-svn-id: http://skia.googlecode.com/svn/trunk@2983 2bbb7eff-a529-9590-31e7-b0007b416f81
* Fix ToUnicode generation bug.Gravatar vandebo@chromium.org2012-01-03
| | | | | | | | | | Code from arthurhsu@chromium.org Original CL: http://codereview.appspot.com/5492061/ BUG=Chromium:104062 Review URL: http://codereview.appspot.com/5498064 git-svn-id: http://skia.googlecode.com/svn/trunk@2944 2bbb7eff-a529-9590-31e7-b0007b416f81
* [PDF] Add debug assert to detect failure of GDI cache hack.Gravatar vandebo@chromium.org2011-11-01
| | | | | | | | | | If we start hitting this check, then it's likely that something has regressed in WebKit. Original CL from arthurhsu@chromium.org: http://codereview.appspot.com/5322063/ Review URL: http://codereview.appspot.com/5320062 git-svn-id: http://skia.googlecode.com/svn/trunk@2581 2bbb7eff-a529-9590-31e7-b0007b416f81
* PDF: Fix bug in weak pointer pattern.Gravatar vandebo@chromium.org2011-10-30
| | | | | | | | | | | For Canonicalized objects, only remove an object from the canonical list if it is the canonical object and not if it is an instance equal to the canonical object. BUG=381 TBR=reed@google.com Review URL: http://codereview.appspot.com/5330058 git-svn-id: http://skia.googlecode.com/svn/trunk@2559 2bbb7eff-a529-9590-31e7-b0007b416f81
* Handle failure of GetAdvancedTypefaceMetrics gracefully until we can figure ↵Gravatar vandebo@chromium.org2011-10-17
| | | | | | | | | | out why it is failing. Code from arthurhsu@chromium.org. Original CL: http://codereview.appspot.com/5276057/ Review URL: http://codereview.appspot.com/5274051 git-svn-id: http://skia.googlecode.com/svn/trunk@2480 2bbb7eff-a529-9590-31e7-b0007b416f81
* rolling back the experimental rollbacks in r2178-2179Gravatar epoger@google.com2011-08-26
| | | | git-svn-id: http://skia.googlecode.com/svn/trunk@2180 2bbb7eff-a529-9590-31e7-b0007b416f81
* rolling tree back to its state as of r2169 to see if that fixes Windows ↵Gravatar epoger@google.com2011-08-26
| | | | | | buildbots git-svn-id: http://skia.googlecode.com/svn/trunk@2179 2bbb7eff-a529-9590-31e7-b0007b416f81
* Remove compiler warnings (Linux clang, mostly).Gravatar tomhudson@google.com2011-08-25
| | | | | | | | | | Fix indentation. Remove unnecessary virtual destructor. codereview.appspot.com/4965043/ git-svn-id: http://skia.googlecode.com/svn/trunk@2171 2bbb7eff-a529-9590-31e7-b0007b416f81
* No effect cleanup in pdf code.Gravatar ctguil@chromium.org2011-08-20
| | | | | | Review URL: http://codereview.appspot.com/4927042 git-svn-id: http://skia.googlecode.com/svn/trunk@2146 2bbb7eff-a529-9590-31e7-b0007b416f81
* [PDF] Subset font advance data (W array).Gravatar vandebo@chromium.org2011-08-18
| | | | | | | | | | Patch by arthurhsu@chromium.org. Original CL: http://codereview.appspot.com/4830068 http://codereview.appspot.com/4905051/ Review URL: http://codereview.appspot.com/4911042 git-svn-id: http://skia.googlecode.com/svn/trunk@2134 2bbb7eff-a529-9590-31e7-b0007b416f81
* Revert "Improve generation of glyph advance array." This reverts commit r2126Gravatar vandebo@chromium.org2011-08-16
| | | | | | | | | | gm segfaults in font id retrieval. TBR=arthurhsu@chromium.org Review URL: http://codereview.appspot.com/4901049 git-svn-id: http://skia.googlecode.com/svn/trunk@2128 2bbb7eff-a529-9590-31e7-b0007b416f81
* Improve generation of glyph advance array.Gravatar vandebo@chromium.org2011-08-16
| | | | | | Review URL: http://codereview.appspot.com/4830068 git-svn-id: http://skia.googlecode.com/svn/trunk@2126 2bbb7eff-a529-9590-31e7-b0007b416f81
* Address lint issues in pdf directories.Gravatar ctguil@chromium.org2011-08-15
| | | | | | Review URL: http://codereview.appspot.com/4887042 git-svn-id: http://skia.googlecode.com/svn/trunk@2117 2bbb7eff-a529-9590-31e7-b0007b416f81
* Use bfrange to shrink ToUnicode table.Gravatar vandebo@chromium.org2011-08-08
| | | | | | | | | Patch from Arthur Hsu. Original CL: http://codereview.appspot.com/4844043/ BUG=258 Review URL: http://codereview.appspot.com/4808083 git-svn-id: http://skia.googlecode.com/svn/trunk@2075 2bbb7eff-a529-9590-31e7-b0007b416f81
* Automatic update of all copyright notices to reflect new license terms.Gravatar epoger@google.com2011-07-28
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | I have manually examined all of these diffs and restored a few files that seem to require manual adjustment. The following files still need to be modified manually, in a separate CL: android_sample/SampleApp/AndroidManifest.xml android_sample/SampleApp/res/layout/layout.xml android_sample/SampleApp/res/menu/sample.xml android_sample/SampleApp/res/values/strings.xml android_sample/SampleApp/src/com/skia/sampleapp/SampleApp.java android_sample/SampleApp/src/com/skia/sampleapp/SampleView.java experimental/CiCarbonSampleMain.c experimental/CocoaDebugger/main.m experimental/FileReaderApp/main.m experimental/SimpleCocoaApp/main.m experimental/iOSSampleApp/Shared/SkAlertPrompt.h experimental/iOSSampleApp/Shared/SkAlertPrompt.m experimental/iOSSampleApp/SkiOSSampleApp-Base.xcconfig experimental/iOSSampleApp/SkiOSSampleApp-Debug.xcconfig experimental/iOSSampleApp/SkiOSSampleApp-Release.xcconfig gpu/src/android/GrGLDefaultInterface_android.cpp gyp/common.gypi gyp_skia include/ports/SkHarfBuzzFont.h include/views/SkOSWindow_wxwidgets.h make.bat make.py src/opts/memset.arm.S src/opts/memset16_neon.S src/opts/memset32_neon.S src/opts/opts_check_arm.cpp src/ports/SkDebug_brew.cpp src/ports/SkMemory_brew.cpp src/ports/SkOSFile_brew.cpp src/ports/SkXMLParser_empty.cpp src/utils/ios/SkImageDecoder_iOS.mm src/utils/ios/SkOSFile_iOS.mm src/utils/ios/SkStream_NSData.mm tests/FillPathTest.cpp Review URL: http://codereview.appspot.com/4816058 git-svn-id: http://skia.googlecode.com/svn/trunk@1982 2bbb7eff-a529-9590-31e7-b0007b416f81
* [PDF] Improve efficiency of glyph id collection during font subsetting.Gravatar vandebo@chromium.org2011-07-27
| | | | | | | | Patch from Arthur Hsu, original CL: http://codereview.appspot.com/4828044/ Review URL: http://codereview.appspot.com/4798057 git-svn-id: http://skia.googlecode.com/svn/trunk@1978 2bbb7eff-a529-9590-31e7-b0007b416f81
* [PDF] Fix mem leak in font subsetting.Gravatar vandebo@chromium.org2011-07-27
| | | | | | | | Original CL: http://codereview.appspot.com/4809053/ Review URL: http://codereview.appspot.com/4825052 git-svn-id: http://skia.googlecode.com/svn/trunk@1977 2bbb7eff-a529-9590-31e7-b0007b416f81
* [PDF] Add font subsetting using the sfntly library.Gravatar vandebo@chromium.org2011-07-26
| | | | | | | | Patch from Arthur Hsu, original CL: http://codereview.chromium.org/7513003/ Review URL: http://codereview.appspot.com/4828041 git-svn-id: http://skia.googlecode.com/svn/trunk@1957 2bbb7eff-a529-9590-31e7-b0007b416f81
* [PDF] Refactor SkPDFFont to enable font/cmap subsetting.Gravatar vandebo@chromium.org2011-07-25
| | | | | | | | | | | Patch from Arthur Hsu, original CL: http://codereview.appspot.com/4633050/ Committed: http://code.google.com/p/skia/source/detail?r=1943 Reverted: http://code.google.com/p/skia/source/detail?r=1944 Review URL: http://codereview.appspot.com/4811049 git-svn-id: http://skia.googlecode.com/svn/trunk@1956 2bbb7eff-a529-9590-31e7-b0007b416f81
* Revert "[PDF] Refactor SkPDFFont to enable font/cmap subsetting."Gravatar vandebo@chromium.org2011-07-23
| | | | | | | | The PDF xref table is corrupt with this change. Revert until we figure it out. Review URL: http://codereview.appspot.com/4803049 git-svn-id: http://skia.googlecode.com/svn/trunk@1944 2bbb7eff-a529-9590-31e7-b0007b416f81
* [PDF] Refactor SkPDFFont to enable font/cmap subsetting.Gravatar vandebo@chromium.org2011-07-23
| | | | | | | | Patch from Arthur Hsu, original CL: http://codereview.appspot.com/4633050/ Review URL: http://codereview.appspot.com/4811049 git-svn-id: http://skia.googlecode.com/svn/trunk@1943 2bbb7eff-a529-9590-31e7-b0007b416f81
* [PDF] Make stream compression optional on a per device basis.Gravatar vandebo@chromium.org2011-07-20
| | | | | | | | | | | | | | | There are a lot of small pieces to make this change work: - SkPDFDocument (and SkPDFCatalog) take flags to disable compression (and font embedding - not implemented yet, can disable font subsetting for now). - SkPDFStream now defers compression until the size/emit step. - Classes that *had* a stream (because they didn't know the stream size at construction time) now *are* streams to make the substitution work correctly. - The SkPDFShader implementation got pulled apart into two classes, one that is a SkPDFDict, and one that is a SkPDFStream (making the common ancestor SkPDFObject). - Added helper methods in SkPDFObject for children that have simple resource lists. - Added an iterator to SkPDFDict so that a substitute SkPDFStream can get a copy of the stream dictionary. - Change SkPDFDocument to have a pointer to an SkPDFCatalog to remove a new circular header reference. Review URL: http://codereview.appspot.com/4700045 git-svn-id: http://skia.googlecode.com/svn/trunk@1911 2bbb7eff-a529-9590-31e7-b0007b416f81
* fix Capitalization of static methodsGravatar reed@google.com2011-07-20
| | | | git-svn-id: http://skia.googlecode.com/svn/trunk@1910 2bbb7eff-a529-9590-31e7-b0007b416f81
* helpers for append and insert when the value is a POD.Gravatar reed@google.com2011-07-20
| | | | | | | | reduces code-size and perf: fewer refs/unrefs git-svn-id: http://skia.googlecode.com/svn/trunk@1909 2bbb7eff-a529-9590-31e7-b0007b416f81
* replace detach/getStream apis on dynamicwstream with SkDataGravatar reed@google.com2011-06-24
| | | | | | | | http://codereview.appspot.com/4657046/ git-svn-id: http://skia.googlecode.com/svn/trunk@1714 2bbb7eff-a529-9590-31e7-b0007b416f81
* Fix some problems detected by coverity.Gravatar vandebo@chromium.org2011-06-21
| | | | | | | | | | | | - Uninitialized class member in GSCanonicalEntry and SkPDFDocument. - Incorrect sign extension in SkPDFFont. - Dead code in SkPDFUtils. CID=16262,16272,16273,16275 Review URL: http://codereview.appspot.com/4659041 git-svn-id: http://skia.googlecode.com/svn/trunk@1668 2bbb7eff-a529-9590-31e7-b0007b416f81
* [PDF] Add plumbing and accessors so that Chrome can record the font types ↵Gravatar vandebo@chromium.org2011-05-29
| | | | | | | | | | | used in a PDF. - Add a font type accessor to SkPDFFont. - Plumb font resource retrivial up to SkPDFPage. Review URL: http://codereview.appspot.com/4547069 git-svn-id: http://skia.googlecode.com/svn/trunk@1444 2bbb7eff-a529-9590-31e7-b0007b416f81
* [PDF] Add a ToUnicode mapping for fonts.Gravatar vandebo@chromium.org2011-05-09
| | | | | | | | | | This makes text in PDFs searchable and copy&paste-able. Code from arthurhsu@chromium.org. Original review: http://codereview.appspot.com/4428082/ Review URL: http://codereview.appspot.com/4525042 git-svn-id: http://skia.googlecode.com/svn/trunk@1280 2bbb7eff-a529-9590-31e7-b0007b416f81
* fix warnings about possibly-uninitialized-variablesGravatar reed@google.com2011-04-28
| | | | git-svn-id: http://skia.googlecode.com/svn/trunk@1208 2bbb7eff-a529-9590-31e7-b0007b416f81
* Generalize the flip origin argument to the PDF device constructor.Gravatar vandebo@chromium.org2011-04-11
| | | | | | | | | | | The argument still has a default value that does what most users will want, but provides more flexibility. Chrome will use this change to support an initial translation of the origin to simulate a margin and to scale the entire content (needed on Windows). When landing to Chrome, this will need http://codereview.chromium.org/6820038 Review URL: http://codereview.appspot.com/4373052 git-svn-id: http://skia.googlecode.com/svn/trunk@1111 2bbb7eff-a529-9590-31e7-b0007b416f81
* Improve the SkAdvancedTypefaceMetrics interface w.r.t. vertical advances.Gravatar vandebo@chromium.org2011-03-30
| | | | | | | | Add a template function to type safe-combine bits of a bit field. Review URL: http://codereview.appspot.com/4313053 git-svn-id: http://skia.googlecode.com/svn/trunk@1020 2bbb7eff-a529-9590-31e7-b0007b416f81
* Store content streams in an SkStream instead of an SkString (64k size limit).Gravatar vandebo@chromium.org2011-03-28
| | | | | | Review URL: http://codereview.appspot.com/4272070 git-svn-id: http://skia.googlecode.com/svn/trunk@1011 2bbb7eff-a529-9590-31e7-b0007b416f81
* convert fixed->scalar directly, since we know that theGravatar reed@google.com2011-03-21
| | | | | | | | glyph's advance is already base-1000 git-svn-id: http://skia.googlecode.com/svn/trunk@973 2bbb7eff-a529-9590-31e7-b0007b416f81
* fix scalar math to work with float and fixedGravatar reed@google.com2011-03-18
| | | | git-svn-id: http://skia.googlecode.com/svn/trunk@962 2bbb7eff-a529-9590-31e7-b0007b416f81
* Use Type3 fonts for platforms that don't yet support ↵Gravatar vandebo@chromium.org2011-03-10
| | | | | | | | SkFontHost::GetAdvancedTypefaceMetrics. Review URL: http://codereview.appspot.com/4273041 git-svn-id: http://skia.googlecode.com/svn/trunk@922 2bbb7eff-a529-9590-31e7-b0007b416f81
* Enable compiling the PDF backend by default in the makefile.Gravatar vandebo@chromium.org2011-03-08
| | | | | | | | Use SKIA_PDF_SUPPORT=false to disable the PDF backend. Review URL: http://codereview.appspot.com/4267046 git-svn-id: http://skia.googlecode.com/svn/trunk@906 2bbb7eff-a529-9590-31e7-b0007b416f81
* PDF Type3 Support.Gravatar ctguil@chromium.org2011-03-04
| | | | git-svn-id: http://skia.googlecode.com/svn/trunk@892 2bbb7eff-a529-9590-31e7-b0007b416f81
* [PDF] Fix broken encoding conversion code for non-multibyte fonts.Gravatar vandebo@chromium.org2011-02-28
| | | | | | Review URL: http://codereview.appspot.com/4245044 git-svn-id: http://skia.googlecode.com/svn/trunk@863 2bbb7eff-a529-9590-31e7-b0007b416f81
* Cleanup SkPDFTypfaceInfo and make it more generic.Gravatar vandebo@chromium.org2011-02-02
| | | | | | | | | | | | Renamed to SkAdvancedTypefaceMetrics. Include Em size and return all metrics in unscaled font units. Make retrieval of advances optional. Reorder SkAdvancedTypefaceMetrics to be somewhat logical. Change the types of fields in SkAdvancedTypefaceMetrics to their minimum required size. Review URL: http://codereview.appspot.com/4121049 git-svn-id: http://skia.googlecode.com/svn/trunk@752 2bbb7eff-a529-9590-31e7-b0007b416f81
* [PDF] Clean up ref counting.Gravatar vandebo@chromium.org2011-02-01
| | | | | | | | Return ref'd objs where possible enabling removal of many SkRefPtr<> variables. Review URL: http://codereview.appspot.com/4029051 git-svn-id: http://skia.googlecode.com/svn/trunk@750 2bbb7eff-a529-9590-31e7-b0007b416f81
* Add Truetype and Type 1 font embedding supportGravatar vandebo@chromium.org2011-01-25
| | | | | | | | | | | | | | | | | | | | | | | | | Sorry this is such a large CL. It was very exploratory for me to make this work. - Add an interface to SkFontHost to retrieve font information and provide NULL implementations on all platforms except Linux. - Segment large Type 1 fonts into fonts with shared resources with 255 glyphs each. - Convert the various Type 1 formats to the form PDF wants. - Update font as we draw text instead of as part of the graphical state. - Remove built-in font support, we can't really use it. Other changes I can pull out to a separate CL if you like. - Add SkTScopedPtr class. - Fix double free of resources. - Fix bug in resource unique-ifying code. - Don't print anything for any empty clip path. - Fix copy paste error - MiterLimit. - Fix sign extension bug in SkPDFString - Fix FlateTest rename that was missed on a previous commit. Review URL: http://codereview.appspot.com/4082042 git-svn-id: http://skia.googlecode.com/svn/trunk@728 2bbb7eff-a529-9590-31e7-b0007b416f81
* PDF: Add text support with a font framework (font embedding to come).Gravatar vandebo@chromium.org2010-11-11
Supports fakeBold, underline, strikethrough, mode (fill, stroke, both), size, skew, alignment (left, center, right). Missing is drawFontOnPath and font lookup and embedding. Changed SkPDFString to support how it is used from drawText methods. Moved compile assert into SkTypes. Moved constants and utility function used to support fakeBold, underline, and strikethrough into higher level locations. Review URL: http://codereview.appspot.com/2946041 git-svn-id: http://skia.googlecode.com/svn/trunk@624 2bbb7eff-a529-9590-31e7-b0007b416f81