From 259126fb6c5e9c6421b00750a7bf00108631f103 Mon Sep 17 00:00:00 2001 From: Ryan Ackley Date: Tue, 16 Sep 2014 13:11:47 -0400 Subject: [PATCH] Fixes #34, adjusts inline style for all text containers --- js/helpers.js | 35 +++++++++++++++++++++++++++++++++++ js/views/one_page_view.js | 2 +- js/views/reflowable_view.js | 2 +- 3 files changed, 37 insertions(+), 2 deletions(-) diff --git a/js/helpers.js b/js/helpers.js index b073c0565..812d1f94f 100644 --- a/js/helpers.js +++ b/js/helpers.js @@ -85,6 +85,41 @@ ReadiumSDK.Helpers.Rect.fromElement = function($element) { return new ReadiumSDK.Helpers.Rect(offsetLeft, offsetTop, offsetWidth, offsetHeight); }; +ReadiumSDK.Helpers.UpdateHtmlFontSize = function($epubHtml, fontSize){ + var factor = fontSize/100; + var win = $epubHtml[0].ownerDocument.defaultView; + var $textblocks = $('p, div, span', $epubHtml); + + + // need to do two passes because it is possible to have nested text blocks. + // If you change the font size of the parent this will then create an inaccurate + // font size for any children. + for (var i = 0; i < $textblocks.length; i++){ + var ele = $textblocks[i], + fontSizeAttr = ele.getAttribute('data-original-font-size'); + + if (!fontSizeAttr){ + var style = win.getComputedStyle(ele); + var originalFontSize = parseInt(style.fontSize); + var originalLineHeight = parseInt(style.lineHeight); + ele.setAttribute('data-original-font-size', originalFontSize); + ele.setAttribute('data-original-line-height', originalLineHeight) + } + } + + for (var i = 0; i < $textblocks.length; i++){ + var ele = $textblocks[i], + fontSizeAttr = ele.getAttribute('data-original-font-size'), + lineHeightAttr = ele.getAttribute('data-original-line-height'), + originalFontSize = Number(fontSizeAttr), + originalLineHeight = Number(lineHeightAttr); + + ele.style.fontSize = (originalFontSize * factor) + 'px'; + ele.style.lineHeight = (originalLineHeight * factor) + 'px'; + + } +} + /** * @return {string} diff --git a/js/views/one_page_view.js b/js/views/one_page_view.js index d209d807a..621fa468d 100644 --- a/js/views/one_page_view.js +++ b/js/views/one_page_view.js @@ -420,7 +420,7 @@ ReadiumSDK.Views.OnePageView = function(options, classes, enableBookStyleOverrid if (!_enableBookStyleOverrides) return; if(_$epubHtml && _viewSettings) { - _$epubHtml.css("font-size", _viewSettings.fontSize + "%"); + ReadiumSDK.Helpers.UpdateHtmlFontSize(_$epubHtml, _viewSettings.fontSize); } } diff --git a/js/views/reflowable_view.js b/js/views/reflowable_view.js index e343b2f2f..14d638c83 100644 --- a/js/views/reflowable_view.js +++ b/js/views/reflowable_view.js @@ -195,7 +195,7 @@ ReadiumSDK.Views.ReflowableView = function(options, reader){ function updateHtmlFontSize() { if(_$epubHtml) { - _$epubHtml.css("font-size", _fontSize + "%"); + ReadiumSDK.Helpers.UpdateHtmlFontSize(_$epubHtml, _fontSize); } }