[api-minor] Prevent Font.exportData
from exporting internal/unused properties
A number of *internal* font properties, which only make sense on the worker-thread, were previously exported. Some of these properties could also contain potentially large Arrays/Objects, which thus unnecessarily increases memory usage since we're forced to copy these to the main-thread and also store them there. This patch stops exporting the following font properties: - "_shadowWidth": An internal property, which was never intended to be exported. - "charsCache": An internal cache, which was never intended to be exported and doesn't make any sense on the main-thread. Furthermore, by the time `Font.exportData` is called it's usually `undefined` or a mostly empty Object as well. - "cidEncoding": An internal property used with (some) composite fonts. As can be seen in the `PartialEvaluator.translateFont` method, `cidEncoding` will only be assigned a value when the font dictionary has an "Encoding" entry which is a `Name` (and not in the `Stream` case, since those obviously cannot be cloned). All-in-all this property doesn't really make sense on the main-thread and/or in the API, and note also that the resulting `cMap` property is (partially) available already. - "fallbackToUnicode": An internal map, part of the heuristics used to improve text-selection in (some) badly generated PDF documents with simple fonts. This was never intended to be exposed on the main-thread and/or in the API. - "glyphCache": An internal cache, which was never intended to be exported and which doesn't make any sense on the main-thread. Furthermore, by the time `Font.exportData` is called it's usually a mostly empty Object as well. - "isOpenType": An internal property, used only during font parsing on the worker-thread. In the *very* unlikely event that an API consumer actually needs that information, then `fontType` should be a (generally) much better property to use. Finally, in the (hopefully) unlikely event that any of these properties become necessary on the main-thread, re-adding them to the white-list is easy to do.
This commit is contained in:
parent
664f7de540
commit
a5e4cccf13
@ -88,15 +88,12 @@ var PDF_GLYPH_SPACE_UNITS = 1000;
|
||||
var SEAC_ANALYSIS_ENABLED = true;
|
||||
|
||||
const EXPORT_DATA_PROPERTIES = [
|
||||
"_shadowWidth",
|
||||
"ascent",
|
||||
"bbox",
|
||||
"black",
|
||||
"bold",
|
||||
"cMap",
|
||||
"charProcOperatorList",
|
||||
"charsCache",
|
||||
"cidEncoding",
|
||||
"composite",
|
||||
"data",
|
||||
"defaultEncoding",
|
||||
@ -105,12 +102,9 @@ const EXPORT_DATA_PROPERTIES = [
|
||||
"descent",
|
||||
"differences",
|
||||
"fallbackName",
|
||||
"fallbackToUnicode",
|
||||
"fontMatrix",
|
||||
"fontType",
|
||||
"glyphCache",
|
||||
"isMonospace",
|
||||
"isOpenType",
|
||||
"isSerifFont",
|
||||
"isSymbolicFont",
|
||||
"isType3Font",
|
||||
|
Loading…
x
Reference in New Issue
Block a user