From fdf1c367441b6f43b5f66a1e8581fab5d26b0b9a Mon Sep 17 00:00:00 2001 From: Duan Yao Date: Tue, 19 Aug 2014 10:30:43 +0800 Subject: [PATCH] Workaround chrome/webkit bug of word-spacing with leading spaces. --- src/HTMLTextLine.cc | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/HTMLTextLine.cc b/src/HTMLTextLine.cc index dc358d4..49e64f8 100644 --- a/src/HTMLTextLine.cc +++ b/src/HTMLTextLine.cc @@ -247,7 +247,11 @@ void HTMLTextLine::dump_text(ostream & out) if(!(state_iter1->hash_umask & State::umask_by_id(State::WORD_SPACE_ID))) { double space_off = state_iter1->single_space_offset(); - if(std::abs(target - space_off) <= param.h_eps) + if((std::abs(target - space_off) <= param.h_eps) + // Chrome/webkit don't apply CSS word-spacing to leading spaces, so we don't + // convert leading offsets to spaces. See also issue #412 and chromium issue #404444. + // TODO after browsers having this bug have vanished, just remove the line below. + && ((state_iter1->word_space == 0) || (cur_offset_iter->start_idx != 0))) { Unicode u = ' '; writeUnicodes(out, &u, 1);