V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
judging47
V2EX  ›  Android

TXT 阅读器如何“快速准确”跳转到标记文本所在的页面

  •  
  •   judging47 · 2017-11-25 17:44:14 +08:00 · 8977 次点击
    这是一个创建于 2553 天前的主题,其中的信息可能已经有所发展或是发生改变。

    最简单的方法是从被标记的地方开始加载文本,这样跳转后的页面是以标记的文本开头。但实际上如果从章节首部开始进行分页(往后面逐个翻页),标记文本的位置未必在页面的首部(如中间或者尾部)。

    为了阅读的体验,阅读器应该找到包含标记文本页面的首个文字开始加载内容(而不是从标记文本位置开始),难点在于怎么找到这个位置?如果能够快速对章节进行分页,相信应该能够做到这点。不过找到的几种方法不是很靠谱:

    1. 按照每页固定字数分页(不适用于非等宽字体和换行)
    2. 按照每个分页包含的行数快速定位(不适用于非等宽字体、耗时大)
    3. 从章节开始位置逐个进行分页(耗时大,不适用章节较大情形)

    请问有好的方法能实现上面的功能吗?

    PS:
    目前发现掌阅的“想法”和“书签”能够做到这样(在更换字体和修改字体大小的情况下同样如此),QQ 阅读和 FBReader 都不支持。

    2 条回复    2017-11-27 12:10:39 +08:00
    winglight2016
        1
    winglight2016  
       2017-11-26 09:36:19 +08:00
    我也碰到过类似的问题,只是没有进一步去实现,所以只提供两个思路:
    1.使用 html 锚定
    2.计算页数的时候,只渲染一页出来,然后统计当前字数,再来计算页数,这样即使不完全准确,误差也是可以接受的,毕竟还有每章开头结尾的自动分页,所以把这个差距也考虑就差不多了
    judging47
        2
    judging47  
    OP
       2017-11-27 12:10:39 +08:00
    感谢!!!
    第一种方法我还没想到,这个思路很好,我得研究一下;
    第二种方法应该能做到大概,对于非等宽字体可能误差比较大,不过比直接加载标记文本要好;
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5303 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 18ms · UTC 07:08 · PVG 15:08 · LAX 23:08 · JFK 02:08
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.