summaryrefslogtreecommitdiff
path: root/fitz
diff options
context:
space:
mode:
authorTor Andersson <tor.andersson@artifex.com>2012-03-14 13:55:43 +0100
committerTor Andersson <tor.andersson@artifex.com>2012-03-14 13:55:43 +0100
commit660c9c737f51a189d96eb3ed51e73bb4f038079f (patch)
tree6b16fa5307788b1aaa397a835186a6ac566a5167 /fitz
parent0eafbf0701d9d3676d6373e35801591b115943b0 (diff)
downloadmupdf-660c9c737f51a189d96eb3ed51e73bb4f038079f.tar.xz
Put 'lastchar' into the text device struct to remember what the
last character was across style changes.
Diffstat (limited to 'fitz')
-rw-r--r--fitz/dev_text.c11
1 files changed, 6 insertions, 5 deletions
diff --git a/fitz/dev_text.c b/fitz/dev_text.c
index d5c0cea9..4f27dd4f 100644
--- a/fitz/dev_text.c
+++ b/fitz/dev_text.c
@@ -17,6 +17,7 @@ struct fz_text_device_s
fz_text_line cur_line;
fz_text_span cur_span;
fz_point point;
+ int lastchar;
};
fz_text_sheet *
@@ -304,7 +305,6 @@ fz_text_extract(fz_context *ctx, fz_text_device *dev, fz_text *text, fz_matrix c
float descender = 0;
int multi;
int i, j, err;
- int lastchar = ' ';
if (text->len == 0)
return;
@@ -368,9 +368,9 @@ fz_text_extract(fz_context *ctx, fz_text_device *dev, fz_text *text, fz_matrix c
if (dist > size * LINE_DIST)
{
fz_flush_text_line(ctx, dev, style);
- lastchar = ' ';
+ dev->lastchar = ' ';
}
- else if (fabsf(dot) > 0.95f && dist > size * SPACE_DIST && lastchar != ' ')
+ else if (fabsf(dot) > 0.95f && dist > size * SPACE_DIST && dev->lastchar != ' ')
{
fz_rect spacerect;
spacerect.x0 = -0.2f;
@@ -379,7 +379,7 @@ fz_text_extract(fz_context *ctx, fz_text_device *dev, fz_text *text, fz_matrix c
spacerect.y1 = 1;
spacerect = fz_transform_rect(trm, spacerect);
fz_add_text_char(ctx, dev, style, ' ', spacerect);
- lastchar = ' ';
+ dev->lastchar = ' ';
}
}
@@ -437,7 +437,7 @@ fz_text_extract(fz_context *ctx, fz_text_device *dev, fz_text *text, fz_matrix c
}
}
- lastchar = text->items[i].ucs;
+ dev->lastchar = text->items[i].ucs;
}
}
@@ -524,6 +524,7 @@ fz_new_text_device(fz_context *ctx, fz_text_sheet *sheet, fz_text_page *page)
tdev->page = page;
tdev->point.x = -1;
tdev->point.y = -1;
+ tdev->lastchar = ' ';
init_line(ctx, &tdev->cur_line);
init_span(ctx, &tdev->cur_span, NULL);