不得不把我遇到的一个技术难题拿上来请教8da的神仙了
我在做一个电子书软件要求导入一个UTF8的TXT文件,就可以看书
开发平台为IPHONE
现在碰到一个问题。
由于字体的宽度因字而异,比如标点符号就比汉子的宽度要小
因此每一页所容纳的字数实际是不同的,这还不考虑换行问题
有什么办法能快速(1-2秒以内)迅速的将一个6M左右的文件根据屏幕宽度以及高度分页完毕
分页完毕时,每一页的页头都能对应这个TXT里的一个位置
为什么要这么做呢。。因为很多用户打开书籍以后,会想要跳转,比如打开后就想从书的一半看起
我如果没有分页数据,随便给他定位,他往前翻着翻着,最后就会发现第一页只显示了一半。
我看了下目前主流的软件如熊猫看书、qq阅读器、goodreader都能轻松做到,他们也不是用什么等宽字体。
到底是咋回事呢? 要是你有种子问题,我可以帮你问问6条2 要是你有种子问题,我可以帮你问问6条2
回复 暴力方法
是ansii字符 宽度+1 char index + 1
否则宽度+2, char index + 3
对付多字节编码的就不灵了,当哥你是不是还要先搞定文件的编码识别? 好消息是这么多的开源浏览器 他们的源码里面都有对于文件编码识别的实现, 抠出来用就好 rolin 发表于 2013-5-17 15:35 static/image/common/back.gif
暴力方法
是ansii字符 宽度+1 char index + 1
否则宽度+2, char index + 3
暴力的办法问题是速度太慢
一个6m的书,几百万字
暴力遍历一遍黄花菜已经凉了 先把所有的unicode解析一次
生成一个文件,存每个字的大小
再做索引和二级索引
以空间换时间 maddrone 发表于 2013-5-17 15:41 static/image/common/back.gif
先把所有的unicode解析一次
生成一个文件,存每个字的大小
再做索引和二级索引
但是用户换字体就得全部再算
除非把所有字体都算好。。
可是用户新导入一本书怎么办? 啊当 发表于 2013-5-17 15:42 static/image/common/back.gif
但是用户换字体就得全部再算
除非把所有字体都算好。。
可是用户新导入一本书怎么办?
新加入的字体当然需要重新计算索引
新加入书不用 我用的ieader软件往前翻的话就会变,变了的话会重新分页,其实没什么影响
ireader ireader 我觉得ireader最好用啊,即使它是会变的也影响不大。 原创内容 水晶 +2 [:103]
页:
[1]