aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/pdf/SkPDFFont.cpp
Commit message (Collapse)AuthorAge
* SkTypeface: fix non-determinism on AdvacedMetricsGravatar Hal Canary2017-07-06
| | | | | | | | | Calculate fStemV and fCapHeight using SkPaint in SkPDFFont if needed. Change-Id: Iaf762e6c44178fac659dfe9fa312d0caed9138ae Reviewed-on: https://skia-review.googlesource.com/21535 Commit-Queue: Hal Canary <halcanary@google.com> Reviewed-by: Ben Wagner <bungeman@google.com>
* Revert "Revert "SkTypeface::getAdvancedMetrics(): cleanup""Gravatar Hal Canary2017-05-05
| | | | | | | | | | | | | | | | | | | This reverts commit 59ad782b2b05b07aa6eb961aa4d62e934093cbd1. - SkAdvancedTypefaceMetrics is a struct not a class - SkTypeface::PerGlyphInfo is gone - s/getAdvancedTypefaceMetrics/getAdvancedMetrics/g - s/onGetAdvancedTypefaceMetrics/onGetAdvancedMetrics/g - [on]getAdvancedMetrics now return unique_ptr rather than bare ptr. - [on]getAdvancedMetrics no longer has parameters. (Only caller always used same arguments.) - SkAdvancedTypefaceMetrics uses C++11 in-class member initializers. - SkAdvancedTypefaceMetrics no longer inherits from SkRefCnt Change-Id: I91b56e60f7d9de7d46c426c6bd34ce124e0cf00e Reviewed-on: https://skia-review.googlesource.com/15360 Reviewed-by: Hal Canary <halcanary@google.com> Commit-Queue: Hal Canary <halcanary@google.com>
* Revert "SkTypeface::getAdvancedMetrics(): cleanup"Gravatar Hal Canary2017-05-04
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This reverts commit cef018896e5cad8eb46a536b60cdf79ebe2b0191. Reason for revert: broke chromium roll (windows). Original change's description: > SkTypeface::getAdvancedMetrics(): cleanup > > - SkAdvancedTypefaceMetrics is a struct not a class > - SkTypeface::PerGlyphInfo is gone > - s/getAdvancedTypefaceMetrics/getAdvancedMetrics/g > - s/onGetAdvancedTypefaceMetrics/onGetAdvancedMetrics/g > - [on]getAdvancedMetrics now return unique_ptr rather than bare ptr. > - [on]getAdvancedMetrics no longer has parameters. (Only caller always > used same arguments.) > - SkAdvancedTypefaceMetrics uses C++11 in-class member initializers. > - SkAdvancedTypefaceMetrics no longer inherits from SkRefCnt > > Change-Id: I37571ebcc383ba9eb21bc20c60c734e3ca317582 > Reviewed-on: https://skia-review.googlesource.com/15311 > Reviewed-by: Ben Wagner <bungeman@google.com> > Commit-Queue: Hal Canary <halcanary@google.com> > TBR=halcanary@google.com,bungeman@google.com,reed@google.com NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true Change-Id: I84c7d53df566aaf83427e3368edaa02b7b5a9cb8 Reviewed-on: https://skia-review.googlesource.com/15319 Reviewed-by: Hal Canary <halcanary@google.com> Commit-Queue: Hal Canary <halcanary@google.com>
* SkTypeface::getAdvancedMetrics(): cleanupGravatar Hal Canary2017-05-04
| | | | | | | | | | | | | | | | | - SkAdvancedTypefaceMetrics is a struct not a class - SkTypeface::PerGlyphInfo is gone - s/getAdvancedTypefaceMetrics/getAdvancedMetrics/g - s/onGetAdvancedTypefaceMetrics/onGetAdvancedMetrics/g - [on]getAdvancedMetrics now return unique_ptr rather than bare ptr. - [on]getAdvancedMetrics no longer has parameters. (Only caller always used same arguments.) - SkAdvancedTypefaceMetrics uses C++11 in-class member initializers. - SkAdvancedTypefaceMetrics no longer inherits from SkRefCnt Change-Id: I37571ebcc383ba9eb21bc20c60c734e3ca317582 Reviewed-on: https://skia-review.googlesource.com/15311 Reviewed-by: Ben Wagner <bungeman@google.com> Commit-Queue: Hal Canary <halcanary@google.com>
* src/pdf: code cleanupGravatar Hal Canary2017-05-04
| | | | | | | | | | | | | * SkPDFCanon: remove unnecessary abstraction * Make use of SkTHashMap<K, sk_sp<T>>. * Remove unncessary struct constructors. * More factory fns return sk_sp<T> * SkPDFUtility::GetCachedT<T> factored out. Change-Id: I4055a131b43fe2588fd042b769cd09fff8a3466c Reviewed-on: https://skia-review.googlesource.com/13655 Reviewed-by: Ben Wagner <bungeman@google.com> Commit-Queue: Hal Canary <halcanary@google.com>
* Mark overridden destructors with 'override' and remove 'virtual'Gravatar Brian Salomon2017-03-22
| | | | | | | | | This silences a new warning in clang 5.0 Change-Id: Ieb5b75a6ffed60107c3fd16075d2ecfd515b55e8 Reviewed-on: https://skia-review.googlesource.com/10006 Commit-Queue: Brian Salomon <bsalomon@google.com> Reviewed-by: Mike Klein <mtklein@chromium.org>
* SkPDF: Always get advances at unitsPerEm.Gravatar Hal Canary2017-03-08
| | | | | | | | | | | | | * Work around BUG=chromium:696356 * SkTestScalerContext needs a return a em-size. * SkPDFFont::MakeVectorCache which always produces a glyph cache at emsize. Replaces vector_cache(). * Stop looking at fLastGlyphID and fEmSize in TypefaceMetrics. Change-Id: I28d93b8f62d461a60fa046e9aaf7fa6d116a7ee5 Reviewed-on: https://skia-review.googlesource.com/9324 Reviewed-by: Ben Wagner <bungeman@google.com> Commit-Queue: Hal Canary <halcanary@google.com>
* SkPDF/font subsetting: Use new version of SfntlyWrapper::SubsetFontGravatar Hal Canary2017-02-16
| | | | | | | Change-Id: Ib4bddcedb09b50556e8e1f02926c443870f46a09 Reviewed-on: https://skia-review.googlesource.com/8544 Commit-Queue: Hal Canary <halcanary@google.com> Reviewed-by: Leon Scroggins <scroggo@google.com>
* SkScalarMul is deprecatedGravatar Mike Reed2017-02-14
| | | | | | | | | BUG=skia: Change-Id: I88ecfe9d4c72506f6b1a0e0dfadd2a5c171a6cb6 Reviewed-on: https://skia-review.googlesource.com/8353 Commit-Queue: Ben Wagner <bungeman@google.com> Reviewed-by: Ben Wagner <bungeman@google.com>
* SkPDF: de-duplicate text-as-pathsGravatar Hal Canary2016-09-30
| | | | | | | | | | | TBR= GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2851 Change-Id: I0accbca13945587cd5ef903cbd4127f1f6a3fb13 Reviewed-on: https://skia-review.googlesource.com/2851 Reviewed-by: Hal Canary <halcanary@google.com> Commit-Queue: Hal Canary <halcanary@google.com>
* SkPDF: do not assert when openStream return nullptrGravatar halcanary2016-09-22
| | | | | | | BUG=163892 GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2332813002 Review-Url: https://codereview.chromium.org/2332813002
* SkPDF: SkBitSet gets reset() to make drop() better.Gravatar halcanary2016-09-19
| | | | | | | BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2354583002 Review-Url: https://codereview.chromium.org/2354583002
* SkPDF: refactor & code cleanup ahead of https://crrev.com/2322403002Gravatar halcanary2016-09-12
| | | | | | | | | | | | | | | | | | | | | | | | | | | SkPDFDevice::GraphicStateEntry: remove unnecessary fFont and fTextSize. SkPDFDevice::updateFont(): replace with update_font() and inlined code. De-duplicate this block of code. SkPDFResourceDict::GetResourceTypePrefix function made public: removes need for temporary SkString returned by SkPDFResourceDict::getResourceName() GlyphPositioner: delay writing intial matrix until first glyph. Assert that widechars is a constant. SkPDFFont::FontType(): make public so that PDFDevice can know about multibyte status. SkPDFFont::countStretch() removed, and the stretch loop flattened. *no changes in PDF output* BUG=skia:5434 GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2327953002 Review-Url: https://codereview.chromium.org/2327953002
* SkPDF: hand SfntlyWrapper::SubsetFont() ttcIndex, not fontName.Gravatar halcanary2016-09-08
| | | | | | | | Also, minor code refactoring. GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2258233002 Committed: https://skia.googlesource.com/skia/+/fce190647285423bf36c44bca09db78a6af30f9f Review-Url: https://codereview.chromium.org/2258233002
* SkPDF: revert changes to CMapName/Registry/Ordering in 3d01c62Gravatar halcanary2016-09-01
| | | | | | | | BUG=skia:5606 TBR=bungeman@google.com GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2305803002 Review-Url: https://codereview.chromium.org/2305803002
* SkPDF: Fix Type3 ToUnicode table.Gravatar halcanary2016-08-31
| | | | | | | | | | | | | | | | | | | | This seems to fix text extraction on Adobe Reader - Registry/Ordering is now set to Skia/SkiaOrdering. - Type3 fonts now get a FontDescriptor (force symbolic font). - CMapName is now Skia-Identity-SkiaOrdering - CMap behaves correctly for single-byte fonts. Also: - SkTestTypeface returns tounicode map for testing. - Unit test updated All PDFs render the same BUG=skia:5606 GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2292303004 Review-Url: https://codereview.chromium.org/2292303004
* Revert of SkPDF: hand SfntlyWrapper::SubsetFont() ttcIndex, not fontName. ↵Gravatar halcanary2016-08-30
| | | | | | | | | | | | | | | | | | | | | | | (patchset #3 id:40001 of https://codereview.chromium.org/2258233002/ ) Reason for revert: forgot to roll sfntly in android! Original issue's description: > SkPDF: hand SfntlyWrapper::SubsetFont() ttcIndex, not fontName. > > Also, minor code refactoring. > GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2258233002 > > Committed: https://skia.googlesource.com/skia/+/fce190647285423bf36c44bca09db78a6af30f9f TBR=bungeman@google.com # Skipping CQ checks because original CL landed less than 1 days ago. NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true Review-Url: https://codereview.chromium.org/2296683004
* SkPDF: SK_SFNTLY_SUBSETTER is goneGravatar halcanary2016-08-30
| | | | | | | BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2296823002 Review-Url: https://codereview.chromium.org/2296823002
* SkPDF: hand SfntlyWrapper::SubsetFont() ttcIndex, not fontName.Gravatar halcanary2016-08-30
| | | | | | | Also, minor code refactoring. GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2258233002 Review-Url: https://codereview.chromium.org/2258233002
* SkPDF: Remove some unused glyphs from fallback fontsGravatar halcanary2016-08-29
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This makes the /Widths and the /Differences arrays smaller. Example diff in output PDF (lines are wrapped for easy viewing): <</Type /Font /Subtype /Type3 /FontMatrix [.00100000005 0 0 -.00100000005 0 0] /FirstChar 0 -/LastChar 255 +/LastChar 118 /FontBBox [23 228 669 -694] /CIDToGIDMap /Identity /ToUnicode 8 0 R -/Widths [280 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -525 0 0 0 525 0 0 0 0 525 525 525 525 0 0 0 0 0 0 525 0 0 0 0 0 0 0 0 -0 0 0 0 0 525 0 525 0 0 0 525 0 0 0 0 0 0 0 0 0 0 0 525 0 0 0 0 0 0 -525 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 525 0 0 0 0 0 0 0 525 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] +/Widths [280 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +525 0 0 0 525 0 0 0 0 525 525 525 525 0 0 0 0 0 0 525 0 0 0 0 0 0 0 0 +0 0 0 0 0 525 0 525 0 0 0 525 0 0 0 0 0 0 0 0 0 0 0 525 0 0 0 0 0 0 +525 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 525 0 0 0 0 0 0 0 +525] /Encoding <</Type /Encoding -/Differences [0 /g0 /g0 /g0 /g0 /g0 /g0 /g0 /g0 /g0 /g0 /g0 /g0 /g0 -/g0 /g0 /g0 /g0 /g0 /g0 /g0 /g0 /g0 /g0 /g0 /g0 /g0 /g0 /g0 /g0 /g1D -/g0 /g0 /g0 /g21 /g0 /g0 /g0 /g0 /g26 /g27 /g28 /g29 /g0 /g0 /g0 /g0 -/g0 /g0 /g30 /g0 /g0 /g0 /g0 /g0 /g0 /g0 /g0 /g0 /g0 /g0 /g0 /g0 /g3E -/g0 /g40 /g0 /g0 /g0 /g44 /g0 /g0 /g0 /g0 /g0 /g0 /g0 /g0 /g0 /g0 /g0 -/g50 /g0 /g0 /g0 /g0 /g0 /g0 /g57 /g0 /g0 /g0 /g0 /g0 /g0 /g0 /g0 /g0 -/g0 /g0 /g0 /g0 /g0 /g0 /g0 /g0 /g0 /g0 /g0 /g0 /g0 /g6E /g0 /g0 /g0 -/g0 /g0 /g0 /g0 /g76 /g0 /g0 /g0 /g0 /g0 /g0 /g0 /g0 /g0 /g0 /g0 /g0 -/g0 /g0 /g0 /g0 /g0 /g0 /g0 /g0 /g0 /g0 /g0 /g0 /g0 /g0 /g0 /g0 /g0 -/g0 /g0 /g0 /g0 /g0 /g0 /g0 /g0 /g0 /g0 /g0 /g0 /g0 /g0 /g0 /g0 /g0 -/g0 /g0 /g0 /g0 /g0 /g0 /g0 /g0 /g0 /g0 /g0 /g0 /g0 /g0 /g0 /g0 /g0 -/g0 /g0 /g0 /g0 /g0 /g0 /g0 /g0 /g0 /g0 /g0 /g0 /g0 /g0 /g0 /g0 /g0 -/g0 /g0 /g0 /g0 /g0 /g0 /g0 /g0 /g0 /g0 /g0 /g0 /g0 /g0 /g0 /g0 /g0 -/g0 /g0 /g0 /g0 /g0 /g0 /g0 /g0 /g0 /g0 /g0 /g0 /g0 /g0 /g0 /g0 /g0 -/g0 /g0 /g0 /g0 /g0 /g0 /g0 /g0 /g0 /g0 /g0 /g0 /g0 /g0 /g0 /g0 /g0 -/g0 /g0 /g0 /g0 /g0 /g0]>> +/Differences [0 /g0 /g0 /g0 /g0 /g0 /g0 /g0 /g0 /g0 /g0 /g0 /g0 /g0 +/g0 /g0 /g0 /g0 /g0 /g0 /g0 /g0 /g0 /g0 /g0 /g0 /g0 /g0 /g0 /g0 /g1D +/g0 /g0 /g0 /g21 /g0 /g0 /g0 /g0 /g26 /g27 /g28 /g29 /g0 /g0 /g0 /g0 +/g0 /g0 /g30 /g0 /g0 /g0 /g0 /g0 /g0 /g0 /g0 /g0 /g0 /g0 /g0 /g0 /g3E +/g0 /g40 /g0 /g0 /g0 /g44 /g0 /g0 /g0 /g0 /g0 /g0 /g0 /g0 /g0 /g0 /g0 +/g50 /g0 /g0 /g0 /g0 /g0 /g0 /g57 /g0 /g0 /g0 /g0 /g0 /g0 /g0 /g0 /g0 +/g0 /g0 /g0 /g0 /g0 /g0 /g0 /g0 /g0 /g0 /g0 /g0 /g0 /g6E /g0 /g0 /g0 +/g0 /g0 /g0 /g0 /g76]>> /CharProcs <</g0 9 0 R /g1D 10 0 R /g21 11 0 R ....... BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2287393002 Review-Url: https://codereview.chromium.org/2287393002
* SkPDF: Glyph validation changeGravatar halcanary2016-08-26
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Instead of mapping invaid glyphIDs to zero or maxGlyphID, don't draw them at all. Validate glyphs when glyph is written, not ahead of time. Don't allocate array to copy user-provided glyphs. Easy early exit from SkPDFDevice::internalDrawText() GlyphPositioner::flush() called ~GlyphPositioner() SkScopeExit class now exists. Assume SkTypeface* pointers are now never null in more places. precalculate alignmentFactor to clean up code. SkPDFDevice::updateFont must be called with validated glyphID. Skip bad glyphs to make this true. SkPDFDevice::updateFont always succeeds. SkPDFFont::GetFontResource always succeeds (preconditions are asserted). If GetMetrics fails, don't call GetFontResource. SkPDFFont::glyphsToPDFFontEncodingCount() becomes SkPDFFont::countStretch() and is inlined. SkPDFFont::glyphsToPDFFontEncoding now works one Glyph at a time and is inlined. SkPDFFont::noteGlyphUsage() operates one glyph at a time. Add SkScopeExit.h; also a unit test for it. SkPostConfig: Fix SK_UNUSED for Win32. No public API changes. TBR=reed@google.com BUG=625995 GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2278703002 Review-Url: https://codereview.chromium.org/2278703002
* SkPDF: Stop `#include PREPROCESSOR_DEFINE` patternGravatar halcanary2016-08-25
| | | | | | | | | | | | | | | | | | No more: #include SK_SFNTLY_SUBSETTER #include ZLIB_INCLUDE Also, rename SK_SFNTLY_SUBSETTER to SK_PDF_USE_SFNTLY to follow my pattern of prefixing SkPDF-specific defines with 'SK_PDF_'. The ZLIB_INCLUDE define is no longer is used by anyone. TODO: rename Sfntly to something pronounceable. GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2273343002 Review-Url: https://codereview.chromium.org/2273343002
* SkPDF: set SK_SFNTLY_SUBSETTER uniformlyGravatar halcanary2016-08-24
| | | | | | | | | | | | | | When Skia is built into the Android framework, SK_SFNTLY_SUBSETTER="sample/chromium/font_subsetter.h". This #includes the same value for GOOGLE3. Once Chrome is also using this value, we can do away with the `#ifdef GOOGLE3` line. BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2272103002 Review-Url: https://codereview.chromium.org/2272103002
* GN: more optional components: jpeg, pdf, png, xmlGravatar mtklein2016-08-24
| | | | | | | BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2267343004 Review-Url: https://codereview.chromium.org/2267343004
* SkPDF: in-place font subsettingGravatar halcanary2016-08-18
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Motivation: gross code simplification, also no bitset lookups at draw time. SkPDFFont owns its glyph useage bitset. SkPDFSubstituteMap goes away. SkPDFObject interface is simplified. SkPDFDocument tracks font usage (as hash set), not glyph usage. SkPDFFont gets a simpler constructor. SkPDFFont has first and last glyph set in constructor, not adjusted later. SkPDFFont implementations are simplified. SkPDFGlyphSet is replaced with simple SkBitSet. SkPDFFont sizes its SkBitSets based on glyph count. SkPDFGlyphSetMap goes away. SkBitSet is now non-copyable. SkBitSet now how utility methods to match old SkPDFGlyphSet. GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2253283004 CQ_INCLUDE_TRYBOTS=master.client.skia:Test-Win-MSVC-GCE-CPU-AVX2-x86_64-Release-GDI-Trybot,Test-Win-MSVC-GCE-CPU-AVX2-x86_64-Debug-GDI-Trybot Review-Url: https://codereview.chromium.org/2253283004
* SkPDF: cache metrics once.Gravatar halcanary2016-08-18
| | | | | | | | | | | | | | | | | | | | | | | | | | Motivation: drawText can look up unicode mapping at draw time to see if ActualText should be used after crrev.com/2084533004 lands. For each SkTypeface, only call getAdvancedTypefaceMetrics() once per document. Cache the result in the SkPDFCanon, indexed by SkFontID. Also cache PDF FontDescriptors in the canon, also indexed by SkFontID (Type1 fonts only). Simplify PDF font lookup, map SkFontID+SkGlyphID into a uint64_t. Map that uint64_t to SkPDFFonts. Remove SkPDFCanon::findFont(), SkPDFCanon::addFont(), SkPDFFont::IsMatch(), and enum SkPDFFont::Match. SkPDFFont no longer holds on to ref of SkAdvancedTypefaceMetrics. Instead, SkPDFFont::GetFontResource() and SkPDFFont::getFontSubset() get metrics from canon. SkPDFFont multybite bool is now a function of type. GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2253993002 CQ_INCLUDE_TRYBOTS=master.client.skia:Test-Win-MSVC-GCE-CPU-AVX2-x86_64-Release-GDI-Trybot,Test-Win-MSVC-GCE-CPU-AVX2-x86_64-Debug-GDI-Trybot Review-Url: https://codereview.chromium.org/2253993002
* Revert of SkPDF: cache metrics once. (patchset #4 id:60001 of ↵Gravatar robertphillips2016-08-17
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | https://codereview.chromium.org/2253993002/ ) Reason for revert: because Original issue's description: > SkPDF: cache metrics once. > > Motivation: drawText can look up unicode mapping at draw time to see > if ActualText should be used after crrev.com/2084533004 lands. > > For each SkTypeface, only call getAdvancedTypefaceMetrics() once per > document. Cache the result in the SkPDFCanon, indexed by SkFontID. > Also cache PDF FontDescriptors in the canon, also indexed by SkFontID > (Type1 fonts only). > > Simplify PDF font lookup, map SkFontID+SkGlyphID into a uint64_t. Map > that uint64_t to SkPDFFonts. Remove SkPDFCanon::findFont(), > SkPDFCanon::addFont(), SkPDFFont::IsMatch(), and enum SkPDFFont::Match. > > SkPDFFont no longer holds on to ref of SkAdvancedTypefaceMetrics. > Instead, SkPDFFont::GetFontResource() and SkPDFFont::getFontSubset() > get metrics from canon. > > SkPDFFont multybite bool is now a function of type. > GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2253993002 > > Committed: https://skia.googlesource.com/skia/+/0a61270f4ba85d10659fb63a86817b435ec04c94 TBR=bungeman@google.com,halcanary@google.com # Skipping CQ checks because original CL landed less than 1 days ago. NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true Review-Url: https://codereview.chromium.org/2251813006
* SkPDF: cache metrics once.Gravatar halcanary2016-08-17
| | | | | | | | | | | | | | | | | | | | | | | Motivation: drawText can look up unicode mapping at draw time to see if ActualText should be used after crrev.com/2084533004 lands. For each SkTypeface, only call getAdvancedTypefaceMetrics() once per document. Cache the result in the SkPDFCanon, indexed by SkFontID. Also cache PDF FontDescriptors in the canon, also indexed by SkFontID (Type1 fonts only). Simplify PDF font lookup, map SkFontID+SkGlyphID into a uint64_t. Map that uint64_t to SkPDFFonts. Remove SkPDFCanon::findFont(), SkPDFCanon::addFont(), SkPDFFont::IsMatch(), and enum SkPDFFont::Match. SkPDFFont no longer holds on to ref of SkAdvancedTypefaceMetrics. Instead, SkPDFFont::GetFontResource() and SkPDFFont::getFontSubset() get metrics from canon. SkPDFFont multybite bool is now a function of type. GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2253993002 Review-Url: https://codereview.chromium.org/2253993002
* SkPDF: pull out SkPDFMakeCIDGlyphWidthsArray.cppGravatar halcanary2016-08-17
| | | | | | | Extract from inside SkPDFFont.cpp GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2251803002 Review-Url: https://codereview.chromium.org/2251803002
* SkPDF: Font names need escapingGravatar halcanary2016-08-16
| | | | | | NOTRY=true Review-Url: https://codereview.chromium.org/2250763002
* SkPDF: eliminate SkPDFCIDfont classGravatar halcanary2016-08-16
| | | | | | | | | get_glyph_widths() and set_glyph_widths() combined. set_glyph_widths() now takes a SkPDFGlyphSet*. GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2244173005 Review-Url: https://codereview.chromium.org/2244173005
* SkPDF: SkPDFFont class changesGravatar halcanary2016-08-16
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | SkPDFFont: * inline some one-line methdods. - SkPDFFont::typeface() - SkPDFFont::fontInfo() - SkPDFFont::firstGlyphID() - SkPDFFont::lastGlyphID() - SkPDFFont::getFontDescriptor() * de-virtualize some methods: - SkPDFFont::getType() - SkPDFFont::multiByteGlyphs() * Constructor takes more arguments: fontType, multiByteGlyphs * re-order fields (pointers before shorts) * use sk_sp<T> more, T* less SkAdvancedTypefaceMetrics: * SkAdvancedTypefaceMetrics::fFont now a uint8_t * other enumes are sized. * SkAdvancedTypefaceMetrics::fStyle now big enough. * remove use of SkTBitOr, replaced with fancy templates No public API changes. TBR=reed@google.com GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2246903002 Review-Url: https://codereview.chromium.org/2246903002
* SkPDF: unify drawText and drawPosTextGravatar halcanary2016-08-15
| | | | | | | | | | | | | Motivation: a later CL will add drawTextBlob() (after https://crrev.com/2084533004 lands). This CL is designed with that change in mind. Also fewer redundant lines of code. BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2241683005 Committed: https://skia.googlesource.com/skia/+/6059dc32fe36358175cb81541c91e74a2a7e771a Review-Url: https://codereview.chromium.org/2241683005
* Revert of SkPDF: unify drawText and drawPosText (patchset #2 id:40001 of ↵Gravatar robertphillips2016-08-15
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | https://codereview.chromium.org/2241683005/ ) Reason for revert: I believe this is breaking the Google3 roll Original issue's description: > SkPDF: unify drawText and drawPosText > > Motivation: a later CL will add drawTextBlob() (after > https://crrev.com/2084533004 lands). This CL is designed > with that change in mind. Also fewer redundant lines of > code. > > BUG=skia: > GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2241683005 > > Committed: https://skia.googlesource.com/skia/+/6059dc32fe36358175cb81541c91e74a2a7e771a TBR=bungeman@google.com,halcanary@google.com # Skipping CQ checks because original CL landed less than 1 days ago. NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true BUG=skia: Review-Url: https://codereview.chromium.org/2248923002
* SkPDF: unify drawText and drawPosTextGravatar halcanary2016-08-15
| | | | | | | | | | | | Motivation: a later CL will add drawTextBlob() (after https://crrev.com/2084533004 lands). This CL is designed with that change in mind. Also fewer redundant lines of code. BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2241683005 Review-Url: https://codereview.chromium.org/2241683005
* SkPDF: Subset Type3 (fallback) fontGravatar halcanary2016-08-12
| | | | | | | | | | | | | | | | | | | Motivation: significant file-size reduction. Also: SkPDFFont::subsetFont() returns a sk_sp<SkPDFObject> rather than a SkPDFFont*. SkPDFType3Font constructor no longer populates font info; relies on subsetting. SkPDFFont::Create is easier to read Also: SkPDFType3Font are scaled by emSize rather than 1000. GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2231483002 Committed: https://skia.googlesource.com/skia/+/88b138da99328b04cae9a8ee19c3882b8847a550 Review-Url: https://codereview.chromium.org/2231483002
* Revert of SkPDF: Subset Type3 (fallback) font (patchset #8 id:200001 of ↵Gravatar halcanary2016-08-11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | https://codereview.chromium.org/2231483002/ ) Reason for revert: internal failing Original issue's description: > SkPDF: Subset Type3 (fallback) font > > Motivation: significant file-size reduction. > > Also: SkPDFFont::subsetFont() returns a sk_sp<SkPDFObject> > rather than a SkPDFFont*. > > SkPDFType3Font constructor no longer populates font info; > relies on subsetting. > > SkPDFFont::Create is easier to read > > Also: SkPDFType3Font are scaled by emSize rather than 1000. > > GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2231483002 > > Committed: https://skia.googlesource.com/skia/+/88b138da99328b04cae9a8ee19c3882b8847a550 TBR=bungeman@google.com # Skipping CQ checks because original CL landed less than 1 days ago. NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true Review-Url: https://codereview.chromium.org/2232283003
* SkPDF: Subset Type3 (fallback) fontGravatar halcanary2016-08-11
| | | | | | | | | | | | | | | | | | Motivation: significant file-size reduction. Also: SkPDFFont::subsetFont() returns a sk_sp<SkPDFObject> rather than a SkPDFFont*. SkPDFType3Font constructor no longer populates font info; relies on subsetting. SkPDFFont::Create is easier to read Also: SkPDFType3Font are scaled by emSize rather than 1000. GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2231483002 Review-Url: https://codereview.chromium.org/2231483002
* SkPDF: SkPDFFont organization changes.Gravatar halcanary2016-08-09
| | | | | | | | | | | | | | | | | | | | | | | | | | SkPDFFont: - SkPDFType1Font::populate() encode advances correctly. - break out logically independent code into new files: * SkPDFConvertType1FontStream * SkPDFMakeToUnicodeCmap SkPDFFont.cpp is now 380 lines smaller. Expose `SkPDFAppendCmapSections()` for testing. SkPDFFontImpl.h - Fold into SkPDFFont. SkPDFConvertType1FontStream: - Now assume given a SkStreamAsset SkPDFFont: - AdvanceMetric now hidden in a anonymous namespace. No public API changes. TBR=reed@google.com GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2221163002 Review-Url: https://codereview.chromium.org/2221163002
* SkPDF/SkAdvancedTypefaceMetrics: simplify ATM, PDF takes overGravatar halcanary2016-08-08
| | | | | | | | | No public API changes. TBR=reed@google.com GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2222523003 Review-Url: https://codereview.chromium.org/2222523003
* SkPDF: Stop using kHAdvance_PerGlyphInfoGravatar halcanary2016-08-05
| | | | | | | | | | | | | | | SkPDFFont: - never request kHAdvance_PerGlyphInfo from typeface. - set_glyph_widths() fn uses a glyph cache to get advances. - stop expecting vertical advances that are never requested. - composeAdvanceData() now non-templated - appendAdvance() one-line function removed SkPDFDevice: - use a glyph cache for getting repeated advances. GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2219733004 Review-Url: https://codereview.chromium.org/2219733004
* Move off SK_SUPPORT_LEGACY_DATA_FACTORIES.Gravatar bungeman2016-08-02
| | | | | | | This moves Skia code off of SK_SUPPORT_LEGACY_DATA_FACTORIES. GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2206633004 Review-Url: https://codereview.chromium.org/2206633004
* SkPDF: PDFStream has-a not is-a PDFDictGravatar halcanary2016-07-29
| | | | | | | | | | | | | | | Motivation: SkPDFStream and SkPDFSharedStream now work the same. Also: - move SkPDFStream into SkPDFTypes (it's a fundamental PDF type). - minor refactor of SkPDFSharedStream - SkPDFSharedStream takes unique_ptr to represent ownership BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2190883003 Review-Url: https://codereview.chromium.org/2190883003
* SkPDF: refactor font subset: fewer copiesGravatar halcanary2016-07-27
| | | | | | | BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2190643002 Review-Url: https://codereview.chromium.org/2190643002
* SkPDF: SkPDFStream takes a unique_ptrGravatar halcanary2016-07-27
| | | | | | | BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2188623004 Review-Url: https://codereview.chromium.org/2188623004
* SkPDF: Always give a default advance for glyphs.Gravatar halcanary2016-07-15
| | | | | | | | | | Prior to this we assumed the default default was 0. It is actually 1000, according to the spec. fixes BUG=skia:5321 GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2146403005 Review-Url: https://codereview.chromium.org/2146403005
* SkPDF: Fix encoding of unichr outside of basic planeGravatar halcanary2016-07-07
| | | | | | | | | | | | | | In ToUnicode table, write unicode codepoints as one or two UTF16BE values, rather than a single hex, as the standard requires. Factor out uint16 -> big-endian hex code. SkUtils is now a namespace. BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2120533002 Review-Url: https://codereview.chromium.org/2120533002
* SkPDF: Glyph Useage Map improvementsGravatar halcanary2016-06-30
| | | | | | | | | | | | | | | | | | | | Instead of having a fFontGlyphUsage on each device and one on each document, just have the one on the document, and never merge. Make fGlyphUsage accesible on SkPDFDocument. Remove SkPDFGlyphSetMap::merge, ::reset, and SkPDFGlyphSet::merge. SkPDFGlyphSetMap has an TArray of SkPDFGlyphSet, not TDArray of SkPDFGlyphSet pointers. SkPDFGlyphSet and SkPDFBitset get move constructors. All tests produce exactly identical output PDFs. BUG=skia:5434 GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2112943002 Review-Url: https://codereview.chromium.org/2112943002
* SkPDF: SkPDFStream takes only SkStreamAssetGravatar halcanary2016-06-29
| | | | | | | | | This is possible since https://crrev.com/869763002. Later, I'll clean up the logic and class constructors. For now, I assert everywhere I expect a SkStreamAsset to be well-behaved (duplcate, hasLength). GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2098393002 Review-Url: https://codereview.chromium.org/2098393002
* Remove unnecessary includes in src/pdf/Gravatar martina.kollarova2016-06-29
| | | | | | | | | Use forward declaration more. BUG=None GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2110033002 Review-Url: https://codereview.chromium.org/2110033002