From b6077c739810dae8265486892e49c8d66cc62c77 Mon Sep 17 00:00:00 2001 From: benbro Date: Sat, 12 May 2012 03:40:40 +0300 Subject: [PATCH 1/4] IE9 breaks when adding to many style elements to the page. --- src/fonts.js | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/src/fonts.js b/src/fonts.js index 22037e724..d22a54352 100644 --- a/src/fonts.js +++ b/src/fonts.js @@ -20,6 +20,9 @@ var kPDFGlyphSpaceUnits = 1000; // Until hinting is fully supported this constant can be used var kHintingEnabled = false; +// A reference to a reusable style sheet. +var styleSheet; + var FontFlags = { FixedPitch: 1, Serif: 2, @@ -2374,11 +2377,14 @@ var Font = (function FontClosure() { window.btoa(data) + ');'); var rule = "@font-face { font-family:'" + fontName + "';src:" + url + '}'; - var styleElement = document.createElement('style'); - document.documentElement.getElementsByTagName('head')[0].appendChild( - styleElement); - var styleSheet = styleElement.sheet; + if(!styleSheet) { + var styleElement = document.createElement('style'); + document.documentElement.getElementsByTagName('head')[0].appendChild( + styleElement); + + styleSheet = styleElement.sheet; + } styleSheet.insertRule(rule, styleSheet.cssRules.length); if (PDFJS.pdfBug && FontInspector.enabled) From 4e39685753b5f70979496b42f45dc69f68c43a2b Mon Sep 17 00:00:00 2001 From: benbro Date: Thu, 31 May 2012 12:01:15 +0300 Subject: [PATCH 2/4] Use a style tag with an ID instead of keeping a reference to it. --- src/fonts.js | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/src/fonts.js b/src/fonts.js index d22a54352..e0dfe8b2b 100644 --- a/src/fonts.js +++ b/src/fonts.js @@ -20,9 +20,6 @@ var kPDFGlyphSpaceUnits = 1000; // Until hinting is fully supported this constant can be used var kHintingEnabled = false; -// A reference to a reusable style sheet. -var styleSheet; - var FontFlags = { FixedPitch: 1, Serif: 2, @@ -2377,14 +2374,14 @@ var Font = (function FontClosure() { window.btoa(data) + ');'); var rule = "@font-face { font-family:'" + fontName + "';src:" + url + '}'; - - if(!styleSheet) { - var styleElement = document.createElement('style'); - document.documentElement.getElementsByTagName('head')[0].appendChild( - styleElement); - - styleSheet = styleElement.sheet; + var styleElement = document.getElementById('PDFJS_FONT_STYLE_TAG'); + if (!styleElement) { + styleElement = document.createElement('style'); + document.documentElement.getElementsByTagName('head')[0].appendChild( + styleElement); } + + var styleSheet = styleElement.sheet; styleSheet.insertRule(rule, styleSheet.cssRules.length); if (PDFJS.pdfBug && FontInspector.enabled) From 6de284acc9a5fdbb6073eea440a43fcbb4a95d02 Mon Sep 17 00:00:00 2001 From: benbro Date: Thu, 31 May 2012 12:05:06 +0300 Subject: [PATCH 3/4] Set the style element ID. --- src/fonts.js | 1 + 1 file changed, 1 insertion(+) diff --git a/src/fonts.js b/src/fonts.js index e0dfe8b2b..0e505a808 100644 --- a/src/fonts.js +++ b/src/fonts.js @@ -2377,6 +2377,7 @@ var Font = (function FontClosure() { var styleElement = document.getElementById('PDFJS_FONT_STYLE_TAG'); if (!styleElement) { styleElement = document.createElement('style'); + styleElement.id = 'PDFJS_FONT_STYLE_TAG'; document.documentElement.getElementsByTagName('head')[0].appendChild( styleElement); } From 76a296cac45b655c0142997da648bc88336fd498 Mon Sep 17 00:00:00 2001 From: benbro Date: Mon, 18 Jun 2012 23:02:23 +0300 Subject: [PATCH 4/4] Remove space at end of line. --- src/fonts.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/fonts.js b/src/fonts.js index 0e505a808..c8415c911 100644 --- a/src/fonts.js +++ b/src/fonts.js @@ -2379,7 +2379,7 @@ var Font = (function FontClosure() { styleElement = document.createElement('style'); styleElement.id = 'PDFJS_FONT_STYLE_TAG'; document.documentElement.getElementsByTagName('head')[0].appendChild( - styleElement); + styleElement); } var styleSheet = styleElement.sheet;