Russian Qt Forum

Qt => Qt Script, QtWebKit => Тема начата: [Matrix] от Май 10, 2012, 00:15



Название: [РЕШЕНО]qwebview и непечатаемые символы
Отправлено: [Matrix] от Май 10, 2012, 00:15
Есть html, в котором есть символы типа ­ \xAD, которые отображаются как вертикальная жирная | в QWebView, например html-файл с содержимым

Код:
aaa­bbb

если открыть его в demos\browser\ это видно. В обычных браузерах все нормально, этот символ не отображается. Собственно вопрос - как их скрыть?
Пересобрать QtWebKit4.dll отфильтровав эти символы или есть возможность решить это другим способом?


Название: Re: qwebview и непечатаемые символы
Отправлено: [Matrix] от Май 11, 2012, 22:22
Собственно не нравилось, что рисовались прямоугольники вместо так называемых zero-width символов, что собственно похоже на ошибку, на то они и zero-width и создавались не для отображения.

После диагонального изучения исходных текстов src\3rdparty\webkit стало ясно, что сначала идет разбор html-текста с соответствующей интерпретацией значений всяких символов(этот этап устраивал ранее, поэтому был оставлен как есть) в строке или блоке текста, затем наступает отрисовка текста посредством qt-надстройки над webkit, в этот момент в строке заменяются определенные символы на один символ (типа zero-width со своим кодом), затем идет qpainter c его drawText.

В итоге вся задача свелась к удалению символов типа zero-width из строки перед отрисовкой, пересборке QtWebKit4.dll.