mirror of
https://github.com/futurepress/epub.js.git
synced 2025-10-04 15:09:16 +02:00
Improved CFI generation - support for most popular breakable characters.
This commit is contained in:
parent
701ea1c115
commit
287cbcd317
9 changed files with 121 additions and 17 deletions
File diff suppressed because one or more lines are too long
32
reader/js/epub.min.js
vendored
32
reader/js/epub.min.js
vendored
|
@ -6608,13 +6608,35 @@ EPUBJS.Renderer.prototype.mapPage = function(){
|
|||
};
|
||||
|
||||
|
||||
EPUBJS.Renderer.prototype.indexOfBreakableChar = function (text, startPosition) {
|
||||
var whiteCharacters = "\x2D\x20\t\r\n\b\f";
|
||||
// '-' \x2D
|
||||
// ' ' \x20
|
||||
|
||||
if (! startPosition) {
|
||||
startPosition = 0;
|
||||
}
|
||||
|
||||
for (var i = startPosition; i < text.length; i++) {
|
||||
if (whiteCharacters.indexOf(text.charAt(i)) != -1) {
|
||||
return i;
|
||||
}
|
||||
}
|
||||
|
||||
return -1;
|
||||
};
|
||||
|
||||
|
||||
EPUBJS.Renderer.prototype.splitTextNodeIntoWordsRanges = function(node){
|
||||
var ranges = [];
|
||||
var text = node.textContent.trim();
|
||||
var range;
|
||||
var rect;
|
||||
var list;
|
||||
pos = text.indexOf(" ");
|
||||
// jaroslaw.bielski@7bulls.com
|
||||
// Usage of indexOf() function for space character as word delimiter
|
||||
// is not sufficient in case of other breakable characters like \r\n- etc
|
||||
pos = this.indexOfBreakableChar(text);
|
||||
|
||||
if(pos === -1) {
|
||||
range = this.doc.createRange();
|
||||
|
@ -6626,11 +6648,15 @@ EPUBJS.Renderer.prototype.splitTextNodeIntoWordsRanges = function(node){
|
|||
range.setStart(node, 0);
|
||||
range.setEnd(node, pos);
|
||||
ranges.push(range);
|
||||
range = false;
|
||||
|
||||
// jaroslaw.bielski@7bulls.com
|
||||
// there was a word miss in case of one letter words
|
||||
range = this.doc.createRange();
|
||||
range.setStart(node, pos+1);
|
||||
|
||||
while ( pos != -1 ) {
|
||||
|
||||
pos = text.indexOf(" ", pos + 1);
|
||||
pos = this.indexOfBreakableChar(text, pos + 1);
|
||||
if(pos > 0) {
|
||||
|
||||
if(range) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue