ePub 是不是将 HTML 限制为仅某个子集?
Posted
技术标签:
【中文标题】ePub 是不是将 HTML 限制为仅某个子集?【英文标题】:Does ePub restrict HTML to only some subset?ePub 是否将 HTML 限制为仅某个子集? 【发布时间】:2021-10-24 12:22:59 【问题描述】:我正在考虑创建一个 ePub 阅读器。到目前为止,我看到的所有 ePub 文件似乎都非常简单:只是带有一些大字体标题的文本段落,以及一些矩形插图图像。所以,我认为 ePub 只提供了描述文本内容的简单方法。
但似乎 ePub 文件包含大量 html 和 CSS。我打开了a sample ePub,它在<p>
中包含带有class
属性的文本。这是否意味着它基本上可以像网站档案一样?作者可以使用创建 HTML 网站时使用的任何高级格式/布局功能吗?如果是这样,我将不得不实现一个完整的网络浏览器来创建一个 ePub 阅读器。
或者,ePub 中允许的 HTML 是否以某种方式仅限于某些 HTML 标记和属性,例如在在线论坛上写作时允许的 HTML。
PS:发完之后我自己做了一些研究,我的结论是前者。我在 android 市场上尝试了一些著名的 ePub 应用程序,它们在 GUI 方面似乎都很奇怪(意思是,可能是非本地的),虽然似乎没有确定的方法来知道一个应用程序是否是本地的或者一个网络应用程序,一个技巧是启用布局边界,这些应用程序在 ePub 视图本身内没有边界,这意味着它可能是一个网络视图。
我在 GitHub 上搜索了 ePub 查看器,他们似乎都在使用 javascript 或 Web 视图,包括 this Android ePub viewer。
所以,可能那些 ePub 应用程序只是解析 ePub 格式的元数据文件,而为了呈现图书本身,他们只是将其委托给 web-view 并使用某种 JavaScript 框架来添加Web 视图上的 UI。
如果有人知道的更好,请纠正我。
【问题讨论】:
【参考方案1】:我对以前的 ePub 规范的理解是它是一种网络档案。由元数据、字体、图像和内容组成的压缩存档。
以前这个内容只是在一个特殊的XHTML format中,但看起来他们还添加了SVG content documents。我承认我已经忘记了 ePub 规范的变化(我没有意识到他们已经与 W3C 合并了),但希望上面的规范链接可以让我们了解标准 html5 网页和 epub 期望的不同之处。
编辑:我还应该提一下,我以前共事过的很多读者都有去掉格式并只显示文本的坏习惯(甚至没有嵌入字体的文本——非英语文本的一大禁忌)。不确定这是否是阅读器软件“强大”并且针对 ePub 格式的行为会破坏他们的应用程序,或其他原因。
【讨论】:
我不知道为什么剥离格式对于非英文文本来说是“不可以”。我能想到的唯一案例可能是日本的假名(红宝石)?无论如何,我正在考虑“剥离格式并仅呈现文本”,因为我认为 ePub 主要只是文本,我和其他用户不希望发布者用户自己喜欢的阅读格式的特定格式(就像阅读器模式一样Web 浏览器会忽略网站的 CSS)。我想,我必须使用 webview,然后...... 您的日语假名示例正是您遇到的那种问题。非西方语言可能具有阅读器中默认字体不支持的代码点集,这将为您提供一个框或一个?当它尝试渲染时在它的位置。有些字体在它们支持的代码点范围内比其他字体表现更好(Android 的机器人字体非常好),但如果它们是为非英文文本定义的,最好检查嵌入字体并使用它们。以上是关于ePub 是不是将 HTML 限制为仅某个子集?的主要内容,如果未能解决你的问题,请参考以下文章
将 Spring Boot WebMvcConfigurer 限制为仅指定路径