Jonas Jenwald
ee0d522187
Use adjustWidths
for TrueType fonts if we handle them as OpenType (issue 5027, issue 5084, issue 6556, bug 1204903)
...
In `Font_checkAndRepair` we can decide that a font isn't TrueType, and instead parse it as CFF. In that case it's quite possible that the `fontMatrix` will be changed, and without calling `adjustWidths` we're failing to update the glyph widths correctly.
Fixes 5027.
Fixes 5084.
Fixes 6556.
Fixes https://bugzilla.mozilla.org/show_bug.cgi?id=1204903 .
2015-12-08 00:49:22 +01:00
Jonas Jenwald
4810b7b8fc
Fix the charCodeOf
method in IdentityToUnicodeMap
in order to prevent text selection from breaking
...
After PR 6590, `font.spaceWidth` is now called in more cases than before (in `PartialEvaluator_getTextContent`), which exposed an underlying issue with `IdentityToUnicodeMap_charCodeOf` throwing an error.
This breaks text-selection in some PDF files found in the wild, hence this patch replaces the `error` with an actual function instead (modelled after `IdentityCMap_charCodeOf`).
2015-12-05 13:15:55 +01:00
Brendan Dahl
87762afec4
Remove glyph id's outside the range of valid glyphs.
...
OTS does not like invalid glyph ids in a camp table.
2015-12-03 11:53:06 -08:00
Manas
a2ba1b8189
Uses editorconfig to maintain consistent coding styles
...
Removes the following as they unnecessary
/* -*- Mode: Java; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* vim: set shiftwidth=2 tabstop=2 autoindent cindent expandtab: */
2015-11-14 07:32:18 +05:30
Jonas Jenwald
ff64ef0243
Prevent readCmapTable
from failing if the cmap
is missing in TrueType fonts
...
Fixes http://arrow.dit.ie/cgi/viewcontent.cgi?article=1000&context=aaschadpoth#page=3 .
2015-11-08 16:48:37 +01:00
Yury Delendik
cc5bc18728
Fixes incorrect PDF file font metrics.
2015-11-06 14:47:10 -06:00
Yury Delendik
fa46b73c47
Better spacing in text layer.
2015-11-02 08:54:15 -06:00
Jonas Jenwald
29a1cdb6a6
Only choose a (3, 1) cmap table for TrueType fonts that have an encoding specified (issue 6410)
...
For (1, 0) cmaps, we have two different codepaths depending on whether the font has/hasn't got an encoding. But with (3, 1) cmaps we don't have a good fallback when the encoding is missing, hence this patch changes `readCmapTable` to only choose a (3, 1) cmap table if the font is non-symbolic *and* an encoding exists. Without this, we'll not be able to successfully create a working glyph map for some TrueType fonts with (3, 1) cmap tables.
Fixes 6410.
2015-09-07 16:56:05 +02:00
Jonas Jenwald
0fb31a4a9e
Fallback in readCmapTable
, instead of using error
, for TrueType fonts with unsupported cmap formats (bug 1200096)
...
Fixes https://bugzilla.mozilla.org/show_bug.cgi?id=1200096 .
The problematic font has a `format 2` cmap, which we've never supported properly. Prior to PR 2606, we were able to fallback to a working state, despite not having proper support for that cmap format.
Obviously the best/correct solution would be to implement actual support for more cmap formats[1]. However, I'm hoping that a simple patch will be OK for now, given that:
- `format 2` cmaps seem to be quite rare in practice, since this has been broken for 2.5 years before anyone noticed.
- Having a simple patch will make potential uplifts a lot easier.
[1] See the specification at https://developer.apple.com/fonts/TrueType-Reference-Manual/RM06/Chap6cmap.html
2015-09-01 14:01:19 +02:00
Jonas Jenwald
99d29487ab
Adjust which TrueType (3, 1) glyphs we attempt to skip mapping of (issue 6336)
...
Fixes 6336.
2015-08-09 12:51:43 +02:00
Jonas Jenwald
0a024b5051
Adjust the heuristics used to detect OpenType font file with CFF data (bug 1186827, bug 1182130, issue 6264)
...
*This is a tentative patch.*
Fixes https://bugzilla.mozilla.org/show_bug.cgi?id=1186827 .
Fixes https://bugzilla.mozilla.org/show_bug.cgi?id=1182130 .
Fixes 6264.
2015-07-25 12:26:36 +02:00
Tim van der Meij
5af49f8bbb
Merge pull request #6166 from Snuffleupagus/issue-5801-2
...
Add a supplemental glyph map for non-embedded ArialBlack fonts (issue 5801)
2015-07-10 22:29:50 +02:00
Yury Delendik
0787182e6f
Adds more characters to the PUA range
2015-07-02 16:47:47 -05:00
Jonas Jenwald
d0477302be
Add a supplemental glyph map for non-embedded ArialBlack fonts (issue 5801)
...
This should, hopefully, finally fix 5801.
2015-07-01 22:16:52 +02:00
Jonas Jenwald
aa3a64e975
Skip mapping of CIDFontType2 glyphs when the font either has a |IdentityToUnicodeMap| or a |toUnicodeMap| with 65536 elements (issue 5677)
...
This patch slightly extends the heuristics used when trying to skip mapping of missing glyphs.
Fixes 5677.
2015-06-18 21:53:15 +02:00
Jonas Jenwald
bf20334bea
Merge pull request #6090 from Snuffleupagus/issue-6068
...
Map missing glyphs to the notdef glyph for TrueType (3, 1) fonts (issue 6068)
2015-06-13 00:29:08 +02:00
Jonas Jenwald
5eae3e29c5
Map missing glyphs to the notdef glyph for TrueType (3, 1) fonts (issue 6068)
...
Fixes 6068.
The most notable issue with the font in question is that the `differences` array contains lots of strange entries (of the type `uniXXXX`, instead of proper glyph names).
2015-06-06 18:28:16 +02:00
Jonas Jenwald
6f2f0700b7
Don't map glyphs to certain problematic Thai/Lao Unicode locations (issue 5994)
...
*This patch depends on PR 5990.*
According to https://dxr.mozilla.org/mozilla-central/source/gfx/harfbuzz/src/hb-ot-shape-fallback.cc#38 , certain Thai/Lao characters are treated as special by the font shaping code in Firefox.
Further down in that file, https://dxr.mozilla.org/mozilla-central/source/gfx/harfbuzz/src/hb-ot-shape-fallback.cc#216 , the vertical position of glyphs is modified, which should thus explain why some glyphs end up in the wrong position in the PDF file.
Fixes 5994.
2015-06-05 23:53:22 +02:00
Brendan Dahl
749a60a0b7
Merge pull request #5990 from Snuffleupagus/missing-glyphs-identityUnicode
...
Skip mapping of CIDFontType2 glyphs in fonts with a |IdentityToUnicodeMap|, unless |properties.widths| is defined for the glyph
2015-06-05 14:50:02 -07:00
Jonas Jenwald
6fbc5428bd
Skip mapping of CIDFontType2 glyphs in fonts with a |IdentityToUnicodeMap|, unless |properties.widths| is defined for the glyph
...
Fixes https://bugzilla.mozilla.org/show_bug.cgi?id=1142033 .
Also fixes issue 5874.
2015-05-14 22:38:04 +02:00
Jonas Jenwald
0365baf5ab
Fall back to the |defaultEncoding| when no valid "post" table is found in TrueType fonts (bug 1050040)
...
Fixes https://bugzilla.mozilla.org/show_bug.cgi?id=1050040 .
With this patch the file is completely readable, but given that the font is broken enough to be rejected by OTS the rendering differs slightly from Adobe Reader.
*Note:* the PDF file is sufficiently broken that even Adobe Reader complains about the font, *and* also about another more general issue.
2015-05-14 13:16:14 +02:00
Jonas Jenwald
70b839386a
Ensure that the cmap position is within the bounds of the font file in |readCmapTable|
2015-05-14 13:16:09 +02:00
Tim van der Meij
b34366d2fc
Merge pull request #5898 from stri8ed/master
...
Extract more accurate glyph heights from type3 fonts
2015-05-13 21:07:17 +02:00
Tim van der Meij
48b2f6d023
Merge pull request #5756 from Snuffleupagus/issue-5751
...
Guess CIDFontType0 subtype based on font file contents (issue 5751)
2015-04-24 23:50:07 +02:00
Jonas Jenwald
fda858ae33
Don't map glyphs to certain problematic General Punctuation Unicode locations (bug 911034)
...
Fixes the remaining missing characters in https://bugzilla.mozilla.org/show_bug.cgi?id=911034 .
For reference, see http://www.unicode.org/charts/PDF/U2000.pdf (and also http://en.wikipedia.org/wiki/General_Punctuation_%28Unicode_block%29 ).
2015-04-09 17:27:03 +02:00
Jonas Jenwald
a54ec673c5
Move the checks for problematic Unicode locations from |adjustMapping| to a separate helper function
2015-04-09 12:56:29 +02:00
Levi Melamed
a5159a7942
extract more accurate glpyh heights from type-3 fonts
2015-04-03 08:49:06 -05:00
Jonas Jenwald
2b1a13ba28
Don't map glyphs to Unicode position 0x0E33, i.e. Thai character SARA AM (bug1046314)
...
*A similar approach as in PR 5705.*
Fixes https://bugzilla.mozilla.org/show_bug.cgi?id=1046314 .
According to https://dxr.mozilla.org/mozilla-central/source/gfx/harfbuzz/src/hb-ot-shape-complex-thai.cc#270-365 , `0x0E33` is treated as a special case (by the font shaping code in Firefox). Hence it seems reasonable to skip it when adjusting the font mapping.
2015-03-26 13:22:45 +01:00
Brendan Dahl
3a8d4a7d72
Merge pull request #5713 from Snuffleupagus/evaluator-IdentityToUnicodeMap
...
Create a IdentityToUnicodeMap in evaluator.js when toUnicode contains IdentityH/IdentityV
2015-03-25 10:33:29 -07:00
Brendan Dahl
519b6669f0
Merge pull request #5705 from Snuffleupagus/bug-1108301
...
Don't map glyphs to Unicode "Dotted circle" combining mark (bug 1108301)
2015-03-24 16:33:04 -07:00
Jonas Jenwald
e894a0a4c6
Guess CIDFontType0 subtype based on font file contents (issue 5751)
2015-03-15 13:35:48 +01:00
Jonas Jenwald
f81fc9091a
Correctly detect OpenType font files with CFF data
...
Fixes 5334.
Fixes 215.
Fixes https://bugzilla.mozilla.org/show_bug.cgi?id=1125614 .
According to the specification, http://www.microsoft.com/typography/otspec/otff.htm , OpenType font files with CFF data should have `OTTO` in the header.
2015-02-28 13:43:53 +01:00
Jonas Jenwald
0a3341dadc
Don't map glyphs to Unicode "Dotted circle" combining mark (bug 1108301)
...
It seems that `0x25CC` is another bad spot for charCodes.
Fixes https://bugzilla.mozilla.org/show_bug.cgi?id=1108301 .
2015-02-27 00:20:38 +01:00
Jonas Jenwald
417800a1b5
Only skip the |!isSymbolicFont| check for TrueType (3, 1) cmap tables if no previous cmap table was found (PR 5703 followup)
...
Fixes https://bugzilla.mozilla.org/show_bug.cgi?id=894572 .
2015-02-19 13:58:03 +01:00
Jonas Jenwald
592890a758
Relax the |isSymbolicFont| check for TrueType (3, 1) cmap tables (issue 5701)
2015-02-13 01:03:10 +01:00
Brendan Dahl
394b38b22f
Merge pull request #5651 from Snuffleupagus/missing-glyphs
...
Try to skip mapping of missing TrueType and CIDFontType2 glyphs
2015-02-11 19:31:22 -08:00
Brendan Dahl
fb8200096b
Merge pull request #5634 from Snuffleupagus/cmap-0,0
...
Add support for TrueType (0, 0) cmap tables (issue 5501, issue 5574, and bug 1037973)
2015-02-11 15:04:03 -08:00
Jonas Jenwald
f19a1db414
Create a IdentityToUnicodeMap in evaluator.js when toUnicode contains IdentityH/IdentityV
...
Currently if a font contains a `toUnicode` entry, we always create a new `ToUnicodeMap` in evaluator.js. This is done even for `IdentityV/IdentityH`, despite to possibility to use the much more compact `IdentityToUnicodeMap` representation.
This patch refactors the `IdentityH/IdentityV` cases, to:
- Avoid calling `IdentityCMap.getMap`, since this prevents allocating and iterating through an array with 65536 elements.
- Ensure that the handling of `toUnicode` is actually correct in fonts.js.
We rely on `toUnicode instanceof IdentityToUnicodeMap` in a few places, and currently this does not work correctly for `IdentityH/IdentityV`.
2015-02-09 16:52:31 +01:00
Jonas Jenwald
01e6565dd4
Try to skip mapping of missing TrueType glyphs
...
Also don't skip mapping of glyphs which are empty, if the corresponding charCode is included in toUnicode.
2015-02-07 12:19:38 +01:00
Jonas Jenwald
8174da61fb
Don't skip mapping of glyphs for CIDFontType2 fonts with a CIDToGIDMap
...
Also don't skip mapping of glyphs which are empty, if the corresponding charCode is included in toUnicode.
2015-02-07 12:19:37 +01:00
Brendan Dahl
cb27707277
Try to skip mapping of missing glyphs.
2015-02-07 12:19:37 +01:00
Jonas Jenwald
c2c54257f2
Prevent setting |isStandardFont| to |undefined| for non-embedded fonts
...
This is a very small follow-up to PR 5536, which sets `isStandardFont` to `false` instead of `undefined` (as currently happens for some font names).
Since the patch is so small, I hope it's OK to also fix an unrelated copy-and-paste error in a comment that was added in PR 5260.
2015-01-13 15:44:34 +01:00
Jonas Jenwald
ad41a2d574
Add support for TrueType (0, 0) cmap tables (issue 5501 and 5574)
2015-01-11 14:54:12 +01:00
Jonas Jenwald
d8b905048b
Add fallback for non-embedded "Century Gothic" CIDFontType2 font (issue 4722 and bug 879561)
...
According to practical experiments, falling back to "Helvetica" when we encounter a non-embedded "[Century Gothic](http://en.wikipedia.org/wiki/Century_Gothic )" `CIDFontType2` font seems to work well.
(Also, the section on Wikipedia about "Printer ink usage" *might* provide some anecdotal evidence that Century Gothic is a fairly standard sans-serif font.)
Obviously this patch doesn't make "Century Gothic" fonts render perfectly, as is often the case with non-embedded fonts, but all the text is now legible in the referenced issues.
Fixes 4722.
Fixes https://bugzilla.mozilla.org/show_bug.cgi?id=879561 .
2014-12-18 23:19:34 +01:00
Yury Delendik
31ae5f2a3d
Merge pull request #5379 from brendandahl/nbsp
...
Don't map glyphs to unicode non breaking space.
2014-12-18 13:38:03 -06:00
Jonas Jenwald
96a77e9d6a
Add basic support for non-embedded Wingdings fonts
...
This is a tentative patch that adds *very* basic support for non-embedded Wingdings fonts (a Windows version of Dingbats), by falling back to the ZapfDingbats encoding. Obviously this approach will not work perfectly, but in my opinion it seems to work reasonably well in pratice.
Instead of this very simple patch, another option would be to try and include more complete glyph data for Wingdings, e.g. a Unicode map and glyph widths, similar to what was done for ZapfDingbats.
However there is, in my opinion, one important difference between Wingdings and ZapfDingbats: ZapfDingbats is part of the 14 standard fonts, which in previous versions of the PDF specification was assumed to be available in PDF readers. To improve compatibility with older files, it thus makes sense for us to include data for ZapfDingbats.
However Wingdings has never been a standard font in PDF files, hence PDF files using it *should* thus contain all the necessary font data.
Given the above, I thus believe that it should be OK to fall back to ZapfDingbats for now. If non-embedded Wingdings fonts turns out to be *a lot* more common, then we can revisit this later.
Fixes 4301 completely.
Fixes 4837 almost completely. With this patch the bullets are displayed correctly, but the arrows are not of the correct type.
Fixes `artofwar.pdf`, pages 14 and 15.
2014-12-09 00:28:22 +01:00
Brendan Dahl
8a536ac346
Map missing glyphs in encoding to notdef glyph.
2014-10-03 12:11:20 -07:00
Brendan Dahl
2fc5e6a9ad
Don't map glyphs to unicode non breaking space.
2014-10-02 10:58:56 -07:00
Jonas Jenwald
df2a4afd36
Use |toUnicode| when creating the glyph map for standard CIDFontType2 fonts without embedded font file
2014-09-27 13:20:04 +02:00
Yury Delendik
744c8e8d7e
Merge pull request #5250 from Snuffleupagus/issue-5238
...
Fix Symbol fonts without font file but with Encoding dictionary (issue 5238)
2014-09-26 15:18:33 -05:00
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