检测EPUB中字体更改的时间

时间:2017-03-29 06:22:46

标签: javascript viewport font-size epub calibre

当用户使用Javascript在电子书阅读器中更改EPUB的字体大小时,我正在尝试使用或创建事件监听器,但我找不到方法。

我尝试过但没有成功:

  • SELECT ... FROM LoanContract lc WHERE lc.LoanTypeID = 1 AND lc.EmployeeID = emp.EmployeeID 事件监听器。
  • 测量字体大小的计时事件。
  • 衡量resize
  • 范围的听众

viewport(又名Calibre查看器)中,我可以在检查器中看到,每次更改字体大小时,控制台都会打印ebook-viewer。我看到当Viewport cfi: /2/4/2/2/1:1发生变化时,这是int数字中的某种比例。

这就是我尝试使用thisthis检测视口比例的原因。

所以我认为这是可能的,因为我可以通过1:1的检查员看到......

所有尝试都无法在iOS上运行。

更新

我知道ebook-viewer及其局限性。此外,JS是EPUB3的可选项。我想要解决的是,在西班牙诗歌中,当一个诗歌大于盒子的大小时,它必须是一个休息,下一行必须与支架正确对齐:

epubReadingSystem

我想出了如何做出这种改变。问题是当用户更改字体时,必须再次进行计算。我尝试通过修复EPUB来解决这个问题,但iBooks和 A short verse. A very very long [verse. 允许字体增加......

一个工作示例:jsfiddle.net/dxr9azy7

2 个答案:

答案 0 :(得分:0)

没有可靠的方法来做你想要的,可靠的"意味着"致力于任何可能的EPUB阅读系统"。原因是EPUB规范没有提供文件的官方方式,以便知道"上下文的属性---例如,呈现它的应用程序的当前读取设置,如字体大小。

请注意,EPUB 2中不存在Javascript支持,EPUB 3中只提供Javascript支持,许多阅读系统会限制您在EPUB中可以使用的Javascript代码类型。

EPUB 3规范为那些支持Javascript的阅读系统引入了epubReadingSystem对象,但它并不要求它提供例如可以由EPUB内的JS代码使用的事件绑定,以响应变化,例如在阅读设置中。 (见:http://www.idpf.org/epub/31/spec/epub-contentdocs.html#app-epubReadingSystem

另一方面,由于大多数阅读系统确实建立在像WebKit这样的渲染引擎之上,如果它们允许你运行Javascript,你确实可以做一些"逆向工程"并尝试捕获他们维护的正确全局对象以及用于显示的文档模型。运气好的话,您可以注册自己的绑定。但是,这个解决方案需要花费大量时间来解决它,它只能在您测试的给定读取系统上工作,并且可能会因应用程序更新而中断。简而言之,我不建议尝试这条路线。

编辑:顺便说一下,你问的是和我在我自己的EPUB 3阅读应用程序中实现的类似:https://www.readbeyond.it/minstrel/developers.html#js但不幸的是它是唯一一个实现建立通信机制的应用程序(我知道) EPUB文件中的JS与阅读系统之间的通道。

答案 1 :(得分:0)

感谢this post我们找到了一种方法来检测EPUB中的字体大小更改,至少在Calibre,ADE和iBooks for Mac和iOS中是这样。在Readium和EPUBReader中尝试它会很好...

您必须创建一个iframe:

window.addEventListener("load", function () {
    iframe = document.createElement("iframe");
    iframe.id = "some_id";
    iframe.style.top = "0";
    iframe.style.left = "0";
    iframe.style.width = "100%";
    iframe.style.height = "5em";
    iframe.style.zIndex = "-1";
    iframe.style.visibility = "hidden";

    document.body.insertBefore(iframe, document.body.childNodes[0]);

    window.frames["some_id"].addEventListener("resize", function () {
        // Event when font size changes.
    });
});

如果您正在寻找西班牙诗歌的工作脚本,see this。下载示例:mobileread.com/forums/attachment.php?attachmentid=155891&d=1490939383

谢谢!