Jonas Jenwald
3c759e296a
Add support for MMType1 fonts with embedded font files
2014-09-18 16:10:46 +02:00
Jonas Jenwald
b16c973d9d
Fix Symbol fonts without font file but with Encoding dictionary (issue 5238)
2014-09-16 21:38:53 +02:00
Yury Delendik
15681adbb9
Merge pull request #5245 from Snuffleupagus/issue-5244
...
Further amend GlyphMapForStandardFonts (issue 5244)
2014-09-16 10:12:07 -05:00
Brendan Dahl
403b7df6e7
Merge pull request #5233 from Snuffleupagus/bug-1057544
...
Workaround for TrueType fonts with exotic cmap tables (bug 1057544)
2014-09-15 14:47:31 -07:00
Jonas Jenwald
7b3f222787
Add |SpecialPUASymbols| map and refactor |mapSpecialUnicodeValues|
2014-09-04 13:41:15 +02:00
Jonas Jenwald
2d5596172c
Add more cases to |mapSpecialUnicodeValues| to fix the rendering of various Symbol encoded brackets
2014-09-04 12:40:15 +02:00
Jonas Jenwald
4bda6ba1b8
Add basic support for ZapfDingbats
2014-09-03 21:54:04 +02:00
Jonas Jenwald
be595d0721
Further amend GlyphMapForStandardFonts (issue 5244)
2014-09-01 10:51:22 +02:00
Jonas Jenwald
cc8710acbf
Workaround for TrueType fonts with exotic cmap tables (bug 1057544)
2014-08-23 11:27:41 +02:00
Jonas Jenwald
ae896fc071
Avoid creating intermediate strings in sanitizeMetrics
...
This patch avoids creating many intermediate strings, when adding dummy width/lsb entries for glyphs where those are missing.
For the relevant PDF files in our test suite, the average number of intermediate strings are well over 1000.
2014-08-20 23:55:57 +02:00
Yury Delendik
a2c2f81167
Use cff glyph width in the hmtx table
2014-08-14 16:11:09 -05:00
Yury Delendik
0ad323f621
Adds width at the beginning of the Type2 charstring
2014-08-13 21:15:40 -05:00
Nicholas Nethercote
61e6b576d4
Avoid an allocation in readCharCode().
...
readCharCode() returns two values, and currently allocates a length-2
array on every call to do so. This change makes it instead us a
passed-in object which can be reused.
This tiny change reduces the total JS allocations done for the document
in Mozilla bug 992125 by 4.2%.
2014-08-12 16:12:58 -07:00
Yury Delendik
ab8270ae3a
Fixes searchRange calculation
2014-08-10 14:11:04 -05:00
Yury Delendik
42771159ca
Removes stringToArray
2014-08-10 14:11:04 -05:00
Yury Delendik
350556f085
Removes bytesToString/stringToArray conversions in the font.js
2014-08-10 14:11:04 -05:00
Nicholas Nethercote
f82977caf9
Simplify isIdentityUnicode detection.
2014-08-08 02:02:42 -07:00
Nicholas Nethercote
6c8cca1284
Add IdentityToUnicodeMap class.
...
When loading the PDF from issue #4935 , this change reduces peak RSS from
~2400 to ~300 MiB, and improves overall speed by ~81%, from 6336 ms to
1222 ms.
2014-08-07 20:45:11 -07:00
Nicholas Nethercote
9576047f0d
Add ToUnicodeMap class.
2014-08-07 20:05:24 -07:00
Yury Delendik
46a9a35ddc
Merge pull request #5071 from nnethercote/font-savings
...
Optimize a font-heavy document
2014-08-05 18:57:46 -05:00
Yury Delendik
fa53fcbf57
Merge pull request #5095 from Snuffleupagus/issue-5070
...
Adjust the heuristics to recognize more cases of unknown glyphs for |toUnicode| (issue 5070)
2014-08-05 17:41:38 -05:00
Yury Delendik
6865c284a7
Merge pull request #5111 from nnethercote/better-cidchars
...
Represent cid chars using integers, not strings.
2014-08-04 22:26:55 -05:00
Jonas Jenwald
8ecbb4da05
Adjust the heuristics to recognize more cases of unknown glyphs for |toUnicode| (issue 5070)
2014-08-03 21:18:23 +02:00
Jonas Jenwald
b918df3547
Re-factor heuristics to recognize unknown glyphs for |toUnicode|
2014-08-03 21:12:36 +02:00
Jonas Jenwald
97b3eadbc4
Add strict equalities in src/core/fonts.js
2014-08-01 21:56:03 +02:00
Nicholas Nethercote
adf58ed687
Represent cid chars using integers, not strings.
...
cid chars are 16-bit unsigned integers. Currently we convert them to
single-char strings when inserting them into the CMap, and then convert
them back to integers when extracting them from the CMap. This patch
changes CMap so that cid chars stay in integer format throughout, saving
both time and space.
When loading the PDF from issue #4580 , this change reduces peak RSS from
~600 to ~370 MiB. It also improves overall speed on that PDF by ~26%,
going from 724 ms to 533 ms.
2014-08-01 02:35:17 -07:00
Nicholas Nethercote
b86daed29d
Make CMap.map quasi-private.
...
This makes it easier for the representation to be improved.
2014-07-30 06:26:35 -07:00
Jonas Jenwald
c3c72948b9
Stop including cidmaps.js
...
In b5b94a4af3
, i.e. PR #4259 , we stopped using cidmaps.js. Despite that, it's still included when PDF.js is built. At almost 0.5 MB (and approx. 7000 lines), this is currently the single largest file in the codebase.
Including such a large file in the builds, when it is not actually used, seems extremely wasteful; hence this patch.
2014-07-25 21:53:09 +02:00
Tim van der Meij
62e6265fb3
Merge pull request #5074 from nnethercote/readPostScriptTable-join
...
Use Array.join to build up strings in readPostScriptTable().
2014-07-25 21:26:54 +02:00
Nicholas Nethercote
1039791472
Use Array.join to build up strings in readPostScriptTable().
...
This avoids about 5 MiB of string allocations on one test case.
2014-07-24 16:12:08 -07:00
Nicholas Nethercote
c7f02d2c8e
Minimize memory usage of font-related arrays.
...
This patch replaces some vanilla arrays with typed arrays, and avoids
some array copying.
It reduces the peak RSS when viewing
http://www.dynacw.co.jp/Portals/3/fontsamplepdf/sample_4942546800828.pdf
from ~940 MiB to ~750 MiB, and reduces its load time from 83 to 76 ms.
2014-07-22 22:47:45 -07:00
Jonas Jenwald
f13c217b25
Fix another seac regression (issue 4801)
2014-07-22 21:44:13 +02:00
Jonas Jenwald
a7c786775d
[CIDFontType2] Map characters missing in toUnicode to the private use area (bug 1028735 and issue 4881)
2014-07-05 00:18:51 +02:00
Jonas Jenwald
c5f4051a75
A few small optimizations of adjustMapping
...
Replace a couple of |in| checks with comparisons against undefined.
2014-06-27 00:59:42 +02:00
Jonas Jenwald
c121def806
A few small optimizations for CIDFontType2 fonts
...
Cache a constant length and replace one usage of |in| with a comparison against undefined.
2014-06-27 00:52:54 +02:00
Yury Delendik
10db93be29
Merge pull request #4980 from Snuffleupagus/bug-1027533
...
Additional heuristics to recognize unknown glyphs for toUnicode (bug 1027533)
2014-06-23 21:56:13 -05:00
Yury Delendik
c28839b2f3
Merge pull request #4944 from Snuffleupagus/issue-4934
...
Don't blindly trust toUnicode when building toFontChar for non-standard fonts without a font file (issue 4934)
2014-06-23 21:49:24 -05:00
Jonas Jenwald
b19bb74813
Additional heuristics to recognize unknown glyphs for toUnicode (bug 1027533)
2014-06-20 09:57:16 +02:00
Yury Delendik
0cd28ebfa3
Telemetry for used stream and font types
2014-06-16 16:41:04 -05:00
Jonas Jenwald
158790981c
Don't blindly trust toUnicode when building toFontChar for non-standard fonts without a font file (issue 4934)
2014-06-14 22:59:08 +02:00
Jonas Jenwald
3c5dedf60d
Prevent font error when no preferred cmap table is found (workaround for issue 4800)
2014-05-27 17:30:11 +02:00
Yury Delendik
e5a0d89da9
Refactors loadFont for translateFont be async; fixes type3 dup data
2014-05-19 16:27:54 -05:00
Jonas Jenwald
3e1db41ddd
Fix loading of fonts with empty font files (bug 866395 and issue 3522)
2014-05-18 21:41:06 +02:00
Jonas Jenwald
0fa154be4e
Amend GlyphMapForStandardFonts to fix issue 4276
2014-04-30 15:56:40 +02:00
Jonas Jenwald
747dec16b2
Prevent trying to map characters to the specials unicode block in adjustMapping (issue 4650)
2014-04-28 23:33:54 +02:00
Yury Delendik
98e023e464
Guesses Type1C font type based on file content
2014-04-24 11:48:18 -05:00
Yury Delendik
9a5c121e4d
Fixes invalid CFF name for Mac OSX
2014-04-17 10:50:06 -05:00
Yury Delendik
a22258a6b3
Merge pull request #4638 from yurydelendik/issue4630
...
Recognizes ASCII type1 encoding
2014-04-17 08:39:31 -05:00
Yury Delendik
bf3a2488df
Recognizes ascii type1 encoding
2014-04-17 07:52:33 -05:00
fkaelberer
b06c10cbbd
rename getUint32 to getInt32 and collect readInt*() in util.js
2014-04-16 21:31:16 +02:00
Rob Wu
2e97c0d085
Remove some unused variables from src/
...
Only obviously useless, local variables have been removed.
2014-04-15 17:10:23 +02:00
Yury Delendik
65fa25ca36
Fixes number of glyphs in the generated font
2014-04-12 13:25:13 -05:00
Brendan Dahl
b242826d29
Fix seac regression.
2014-04-11 09:55:39 -07:00
Yury Delendik
88c1747cc3
Heuristics to recognize the unknown glyphs for toUnicode
2014-04-10 19:21:09 -05:00
Tim van der Meij
df91acf239
Fixes lint warning W004 in src/core
2014-04-11 00:41:08 +02:00
Brendan Dahl
5bd8a83c9b
Build the text layer geometry on the worker.
2014-04-09 16:44:07 -07:00
Yury Delendik
9ccdbbcb55
Merge pull request #4574 from Snuffleupagus/bug-850854
...
Handle 'space' character correctly in WinAnsiEncoding (bug 850854)
2014-04-09 14:36:49 -05:00
Brendan Dahl
a6e5f31ca1
Merge pull request #4423 from chriskr/font-aliases
...
Treat fonts with the same font descriptor and encoding as aliases
2014-04-09 10:26:09 -07:00
Christian Krebs
79f34b183c
Treat fonts with the same font descriptor, encoding and unicode map as aliases
...
Different fonts can point to the same font descriptor
(see https://github.com/mozilla/pdf.js/issues/4339 for details). With this
commit such fonts are treated as aliases if they have also the same encoding
and the same toUnicode map. The according info is stored on the font descriptor.
This change must also ensure that aliases use always the same font name
because translated fonts can get cleared depending on the CLEANUP_TIMEOUT setting.
2014-04-08 20:45:21 +02:00
Jonas Jenwald
9e6c66be12
Handle 'space' character correctly in WinAnsiEncoding (bug 850854)
2014-04-08 13:07:29 +02:00
Jonas Jenwald
8fc4ebd5cb
Handle 'space' character correctly in MacRomanEncoding (bug 878026)
2014-04-07 20:59:26 +02:00
fkaelberer
c978c026fa
clean up string conversion functions
2014-03-27 13:01:43 +01:00
Jonas Jenwald
66e243f506
Fix coding style in src/core/fonts.js
2014-03-22 16:19:07 +01:00
Brendan Dahl
10deadd416
Merge pull request #4453 from nnethercote/charToGlyph
...
Add a cache for glyphs
2014-03-19 16:30:02 -07:00
Brendan Dahl
1802ffffb8
Merge pull request #4447 from nnethercote/object-reduction
...
Allocate fewer objects
2014-03-17 12:50:23 -07:00
Brendan Dahl
68be273c69
Merge pull request #4470 from yurydelendik/packcmap
...
CMaps binary packing
2014-03-17 12:27:35 -07:00
Jonas Jenwald
5f021b067c
Prevent infinite loop in CFFParser_parseHeader
2014-03-17 11:47:14 +01:00
Yury Delendik
69efd9cb96
CMaps binary packing
2014-03-14 16:46:35 -05:00
Juraj Sukop
4c2a462a76
Fix copy-paste typo
...
The Compact Font Format Specification defines the Standard String of SID 237 as "twodotenleader", and not "266 ff".
2014-03-14 14:11:16 +01:00
Nicholas Nethercote
6c698519cd
Avoid allocations in executeCommand().
2014-03-13 22:15:09 -07:00
Nicholas Nethercote
6a75e45309
Allocate fewer objects when parsing 2 and 4 byte chunks.
...
This is achieved by adding getBytes2() and getBytes4() to streams, and by
changing int16() and int32() to take multiple scalar args instead of an array
arg.
2014-03-13 22:15:05 -07:00
Nicholas Nethercote
0866ad5bff
Add a cache for glyphs.
...
This reduces memory consumption for text heavy documents. I tested five
documents and saw hit rates ranging from 97.4% to 99.8% (most of the misses are
due to |width| varying even when |fontChar| matches). On two of those documents
I saw improvements of 40 and 50 MiB.
The patch also introduces the Glyph constructor, and renames the |unicodeChars|
local variable as |unicode| for consistency with the corresponding Glyph
property.
2014-03-13 19:51:48 -07:00
Yury Delendik
2778d75d2c
Merge pull request #4437 from yurydelendik/issue4398
...
Fixes corrupted by Aspose fonts
2014-03-13 10:44:02 -05:00
Yury Delendik
7963f22545
Merge pull request #4259 from brendandahl/built-in-cmaps-squash
...
Adds built in CMaps and unifies the glyph mapping.
2014-03-13 10:27:48 -05:00
Ben Browitt
8b6aeee35c
Follow JMPR op only if outside of FDEF and IF
2014-03-13 03:19:04 +02:00
Yury Delendik
7dbd088728
Fixes corrupted by Aspose fonts.
2014-03-11 14:16:27 -05:00
Yury Delendik
f04ebed579
Merge pull request #4366 from yurydelendik/max-fdefs
...
Rejects invalid fpgm table when too many functions
2014-03-05 06:16:44 -06:00
Yury Delendik
6fbbcf5c93
Merge pull request #4362 from Snuffleupagus/bug-925985
...
Add 'registered' and 'trademark' to mapPrivateUseChars (bug 925985)
2014-03-03 09:02:32 -06:00
Nicholas Nethercote
ab7568c0ff
Use Array.join() to build up strings in more places.
2014-03-02 17:54:16 -08:00
Yury Delendik
adca8d4291
Rejects invalid fpgm table when too many functions
2014-03-02 15:40:48 -06:00
Jonas Jenwald
08687ee9f1
Add 'registered' and 'trademark' to mapPrivateUseChars (bug 925985)
2014-03-01 21:01:33 +01:00
Brendan Dahl
b187326022
Use default encoding for standard fonts without a file.
2014-02-25 11:28:17 -08:00
Brendan Dahl
f7fea015a9
Remove isFixedPitch check for now.
2014-02-24 17:39:51 -08:00
Brendan Dahl
f1c73edac4
Fix symbol fonts with no file.
2014-02-11 13:37:12 -08:00
Brendan Dahl
b5b94a4af3
Use built in CMaps and unify the glyph mapping.
2014-02-11 10:27:09 -08:00
Brendan Dahl
ff66c23e6e
Merge pull request #4089 from yurydelendik/issue3725
...
Takes ascent/descent in account in the text layer
2014-01-16 13:12:04 -08:00
Brendan Dahl
508b00a34f
Merge pull request #4071 from yurydelendik/bug921760
...
Adds glyph mapping for standard fonts
2014-01-08 12:36:54 -08:00
Yury Delendik
0131101275
Takes ascent/descent in account in the text layer
2014-01-08 13:50:52 -06:00
Yury Delendik
51b958dc2b
Adds glyph mapping for standard fonts
2014-01-03 14:17:50 -06:00
Brendan Dahl
2228343f77
Only trigger warning bar on certain unsupported features.
2014-01-03 09:34:13 -08:00
Yury Delendik
9a633f26a0
Fixes gidStart for CID fonts
2013-11-13 18:27:52 -06:00
Yury Delendik
82a9a13e5f
Fixes glyphs with invalid flags
2013-11-13 13:45:59 -06:00
Brendan Dahl
bd6871a1cd
Merge pull request #3884 from yurydelendik/bug868745
...
Resizes loca table when needed
2013-11-11 14:59:18 -08:00
Brendan Dahl
558b722757
Merge pull request #3883 from yurydelendik/bug904941
...
Fixes invalid maxZones value
2013-11-11 09:57:38 -08:00
Tim van der Meij
6be8a2bd83
Merge pull request #3882 from yurydelendik/issue3438
...
Ignoring glyphs without points
2013-11-08 14:21:17 -08:00
Yury Delendik
57e2a667ee
Fixes cvt table length; removes cvt when hints invalid
2013-11-08 11:38:36 -06:00
Yury Delendik
d4167b62c8
Merge pull request #3890 from sriram-dev/3205-word-spacing
...
correct word spacing
2013-11-08 09:18:00 -08:00
Brendan Dahl
e076eeb5bd
Merge pull request #3877 from yurydelendik/issue1171
...
Skipping empty font tables
2013-11-08 09:12:04 -08:00
Sriram
8dad6d6e8a
Fix word spacing in Type 0 fonts
...
Fix word spacing in Type 0 font
correct word spacing
correct word spacing in type 0 font
fix word spacing
2013-11-08 20:48:30 +05:30
Brendan Dahl
18d8557abd
Merge pull request #3875 from yurydelendik/issue3025
...
Removes duplicate entries after reading cmap table
2013-11-07 12:29:25 -08:00
Brendan Dahl
90fb92d1fc
Merge pull request #3869 from yurydelendik/symbolenc
...
Renames Symbol encoding name.
2013-11-06 11:15:08 -08:00
Brendan Dahl
c8e021dfa6
Merge pull request #3867 from yurydelendik/pfb
...
Workaround for some bad Type1 data
2013-11-06 11:14:42 -08:00
Yury Delendik
175341cb0d
Resizes loca table when needed
2013-11-03 07:29:29 -06:00
Yury Delendik
cf55d69c38
Fixes invalid maxZones value
2013-11-02 18:16:24 -05:00
Yury Delendik
93076ced03
Ignoring glyphs without points
2013-11-02 17:07:13 -05:00
Yury Delendik
bbda42110b
Skipping empty font tables
2013-11-01 19:05:17 -05:00
Yury Delendik
bb2570c9c1
Removes duplicate entries after reading cmap table
2013-11-01 16:30:28 -05:00
Yury Delendik
cd44093891
Workaround for some bad Type1 data
2013-11-01 13:58:33 -05:00
Yury Delendik
95d9107d8b
Fixes reading Type1 FontBBox data for usWin values
2013-11-01 11:33:30 -05:00
Yury Delendik
104d89856d
Renames Symbol encoding name.
2013-10-31 10:33:23 -05:00
Yury Delendik
83e17c2953
Avoiding 'pc is undefined' failures
2013-10-30 11:14:13 -05:00
Brendan Dahl
f79c182314
Proper glyph selection for CIDFontType0C fonts.
2013-09-30 21:40:28 -07:00
Brendan Dahl
f32e65b19f
Read multi-byte character codes based on codespace ranges.
2013-09-25 10:32:04 -07:00
Yury Delendik
0fc8bac7c0
Merge pull request #3570 from brendandahl/encoding-wip
...
Fix handling of multiply-encoded glyphs.
2013-08-28 13:51:39 -07:00
Brendan Dahl
db591769a4
Fix handling of multiply-encoded glyphs.
2013-08-22 10:12:16 -07:00
Brendan Dahl
bb2529de03
Move the creation of canvas path fonts to the worker.
2013-08-19 16:33:20 -07:00
Brendan Dahl
5ecce4996b
Split files into worker and main thread pieces.
2013-08-12 10:48:06 -07:00