Кто-то знает, как программы-читалки нарезают текст поэкранно?
Был несколько удивлён :)
По идее, не так уж и сложно должно быть. Зависит от придирчивости к реализации, конечно. Для моноширинного шрифта будет очень просто, для немоноширинного, да ещё и с переносами — гораздо сложнее. А зачем перевёрстывать текст, я не понимаю. Поясни, а то вдруг я действительно не вижу реальной проблемы.
Да я тоже не очень понял. Но, видимо, хотят на экране повторить типа читалку. То есть чтобы был определенный объем текста на одной странице. Идея, мне кажется в том, чтобы по типу подачи материала было что-то похожее на презентацию - стандартные куски информации в стандартных окнах. Ну может быть, чтобы книжный текст не сильно бы отличался от какого-то материала, сделанного в виде презентации (в PowerPoint, например).
Пока вручную это представляется как нарезка сплошного HTML-текста на страницы. Причем, если в стандартной книге страниц 500, резать придется каждую страницу не меньше чем на две. Итого таких отрезов-вырезок придется сделать 1000 раз и получить, соответственно, 1000 html файликов (0001.html,0002.html, ... 1000.html) со ссылками на предыдущий и последующий (чтобы листать стрелками). Ну и содержание, само собой. Но содержание уже есть (почти))). А вот нарезка - тут надо попотеть/подумать.
Входные данные такие: экран (площадь, выделенная под сам текст в окне браузера) например задать как 900 на 600 (то есть примерно как площадь iPad'a) за вычетом верхней шапки и подвала. И шрифт с засечками (типа Times) - 26 px. Но вообще интересно, как примерно это реализуется в программах-читалках? Какой там может быть алгоритм, когда программа решает, что надо переводить каретку и когда - что надо перекидывать текст (строку/слово) на сл. страницу?
Вообще, интересная тема в плане реализации для различных устройств. Зацепило.
Вообще, интересная тема в плане реализации для различных устройств. Зацепило.
Все это делают обычные читалки: они берут html-текст (вроде бы основной формат e-книг: epub, fb2, mobi и пр.) и режут его на "экраны" в зависимости от размера экрана и величины выбранного шрифта.
CSS3 вроде по этому поводу ничего не говорит, так как нарезка предполагает (как я понимаю) наличие отдельного HTML-документа, с заданной площадью окна. А все CSS'ы работают с содержимым окна, а не с набором окон. И смысл именно в динамической нарезке/создании как бы временных html'ов в соответствии умещаемостью данного текста в заданную площадь. не понятно, можно ли это вообще реализовать в рамках стандартного браузера, не прибегая к изготовлению нового приложения для чтения электронных книг?
То есть задача стоит так: как сделать, что бы перемещаться по некоторому объему текста без прокручиваний страницы, а просто листая текст определенными порциями. Ведь эта проблема уже ж решенная (кем-то и когда-то))) [см., опять же, все программы-читалки].
P.S. По поводу собственной реализации верстки (качественной) -- Кнуту в TeX-е удалось, но даже ему не так скоро, как надеялся. :)