Page 1 of 1

Баг: Unicode CJK Extension B

PostPosted: Tue May 22, 2012 8:11 am
by zongxiong
Программа не показывает (и не ищет) символы из CJK Extension B, несмотря на то, что в системе установлены необходимые шрифты (в частности SimSun Ext B).

Пример:
Установите 康熙字典 с данной ссылки. Сделайте запрос, например, по иероглифу 女, в полученной статье будет много квадратиков. Например, сразу во второй строке, после слова 古文. Но если выделить статью и скопировать в блокнот, то всё нормально отображается.

Исправьте, пожалуйста.

Re: Баг: Unicode CJK Extension B

PostPosted: Wed May 23, 2012 1:27 pm
by zongxiong
Нашёл временное решение проблемы. Добавляем в article-style.css в font-family после запятой SimSun-ExtB или MingLiU-ExtB или другой Extension B шрифт. Теперь 康熙字典 отображается полноценно.

Re: Баг: Unicode CJK Extension B

PostPosted: Thu Jun 07, 2012 8:47 am
by zongxiong
Делать запрос по Extension B всё равно нельзя. Товарищ разработчик, ответьте пожалуйста, сложно ли реализовать этот функционал, и будет ли он в будущем добавлен.

Пример относительно распространённого Extension B знака: U+20024. GoldenDict пытается прочитать его как два символа и соответственно не находит результат.

Re: Баг: Unicode CJK Extension B

PostPosted: Mon Jul 02, 2012 10:48 am
by ikm
Вообще-то оно работать должно. Видимо, где-то в процессе кодировка искажается - с символами, не входящими в BMP, часто бывают баги, причем везде - в редакторах, в тулкитах, и т.п. Надо искать, где именно это происходит. Про то, что программа пытается прочитать указанный символ как два - не понимаю, что имеется в виду.

Re: Баг: Unicode CJK Extension B

PostPosted: Wed Jul 04, 2012 8:36 am
by zongxiong
Что интересно, в мобильной версии всё работает нормально (если умудриться поставить Extension B шрифты в систему, надеюсь, вы скоро сделаете поддержку CSS, чтобы не нужно было больше танцевать с бубном), запрос по Extension B символам и ссылки, их содержащие, работают без проблем.

Я создал issue с более подробным описанием проблемы, почитайте.

Ссылка на 康熙字典 умерла, вот новые:
http://jaist.dl.sourceforge.net/sourcef ... .2.tar.bz2
http://ishare.iask.sina.com.cn/f/231712 ... ?retcode=0

Re: Баг: Unicode CJK Extension B

PostPosted: Thu Jul 19, 2012 2:03 pm
by Abs62
QT фокусничает. QString::toUcs4(), встречая такие символы, зачем-то добавляет в конец строки нули, по штуке на каждый.
Пробуйте эту версию.

Re: Баг: Unicode CJK Extension B

PostPosted: Fri Jul 20, 2012 6:06 am
by zongxiong
Заработало! Огромное спасибо.

Правда остался маленький косметический дефект. В ссылках, содержащих такие символы, всё равно есть нули, хотя переход работает нормально.

Вот, посмотрите. Никаких пробелов в ссылках быть не должно, там по одному знаку на каждую ссылку. Я лично создавал этот файл, так что проблема не там.
Image

Re: Баг: Unicode CJK Extension B

PostPosted: Fri Jul 20, 2012 4:00 pm
by Abs62
Это глюк где-то в потрохах QWebView. Если сохранить статью в файл (по F2), можно убедиться, что там всё как положено - никаких лишних символов. А при отображении они появляются, причём только внутри ссылок.

Re: Баг: Unicode CJK Extension B

PostPosted: Sun Aug 05, 2012 6:54 pm
by zongxiong
Нашёл ещё один баг по этой теме. Если такой символ будет на границе переноса строк (зависит от размера окна программы), то он не будет отображён, заместо него мы увидим два квадратика, один в конце данной строки, другой в начале новой.

Re: Баг: Unicode CJK Extension B

PostPosted: Thu Aug 09, 2012 5:57 am
by ikm
В Qt QString внутри представлен как UTF-16. Не приложу ума, зачем они это так сделали (видимо, исторически сложилось?), но явно косяки вылазят из-за неправильной обработки суррогатных пар или чего-то связанного. В идеале надо писать баги в Qt, конечно. Например, можно просто сохранить html, который выводится неправильно, и вместе с простеньким WebView, который его выводит, присовокупить к багу, в котором описать, почему оно выглядит не так, как надо.