New user registration is currently disabled due to spam abuse / Регистрация новых пользователей в настоящее время приостановлена из-за злоупотреблений спаммерами

Баг: Unicode CJK Extension B

Обо всём по программе

Баг: Unicode CJK Extension B

Postby zongxiong » Tue May 22, 2012 8:11 am

Программа не показывает (и не ищет) символы из CJK Extension B, несмотря на то, что в системе установлены необходимые шрифты (в частности SimSun Ext B).

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

Исправьте, пожалуйста.
zongxiong
 
Posts: 33
Joined: Sat Nov 05, 2011 4:18 am

Re: Баг: Unicode CJK Extension B

Postby zongxiong » Wed May 23, 2012 1:27 pm

Нашёл временное решение проблемы. Добавляем в article-style.css в font-family после запятой SimSun-ExtB или MingLiU-ExtB или другой Extension B шрифт. Теперь 康熙字典 отображается полноценно.
zongxiong
 
Posts: 33
Joined: Sat Nov 05, 2011 4:18 am

Re: Баг: Unicode CJK Extension B

Postby zongxiong » Thu Jun 07, 2012 8:47 am

Делать запрос по Extension B всё равно нельзя. Товарищ разработчик, ответьте пожалуйста, сложно ли реализовать этот функционал, и будет ли он в будущем добавлен.

Пример относительно распространённого Extension B знака: U+20024. GoldenDict пытается прочитать его как два символа и соответственно не находит результат.
zongxiong
 
Posts: 33
Joined: Sat Nov 05, 2011 4:18 am

Re: Баг: Unicode CJK Extension B

Postby ikm » Mon Jul 02, 2012 10:48 am

Вообще-то оно работать должно. Видимо, где-то в процессе кодировка искажается - с символами, не входящими в BMP, часто бывают баги, причем везде - в редакторах, в тулкитах, и т.п. Надо искать, где именно это происходит. Про то, что программа пытается прочитать указанный символ как два - не понимаю, что имеется в виду.
ikm
Автор GoldenDict
 
Posts: 1595
Joined: Wed Feb 04, 2009 10:40 am

Re: Баг: Unicode CJK Extension B

Postby zongxiong » Wed Jul 04, 2012 8:36 am

Что интересно, в мобильной версии всё работает нормально (если умудриться поставить 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
zongxiong
 
Posts: 33
Joined: Sat Nov 05, 2011 4:18 am

Re: Баг: Unicode CJK Extension B

Postby Abs62 » Thu Jul 19, 2012 2:03 pm

QT фокусничает. QString::toUcs4(), встречая такие символы, зачем-то добавляет в конец строки нули, по штуке на каждый.
Пробуйте эту версию.
Abs62
 
Posts: 631
Joined: Mon Jun 14, 2010 11:51 am

Re: Баг: Unicode CJK Extension B

Postby zongxiong » Fri Jul 20, 2012 6:06 am

Заработало! Огромное спасибо.

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

Вот, посмотрите. Никаких пробелов в ссылках быть не должно, там по одному знаку на каждую ссылку. Я лично создавал этот файл, так что проблема не там.
Image
zongxiong
 
Posts: 33
Joined: Sat Nov 05, 2011 4:18 am

Re: Баг: Unicode CJK Extension B

Postby Abs62 » Fri Jul 20, 2012 4:00 pm

Это глюк где-то в потрохах QWebView. Если сохранить статью в файл (по F2), можно убедиться, что там всё как положено - никаких лишних символов. А при отображении они появляются, причём только внутри ссылок.
Abs62
 
Posts: 631
Joined: Mon Jun 14, 2010 11:51 am

Re: Баг: Unicode CJK Extension B

Postby zongxiong » Sun Aug 05, 2012 6:54 pm

Нашёл ещё один баг по этой теме. Если такой символ будет на границе переноса строк (зависит от размера окна программы), то он не будет отображён, заместо него мы увидим два квадратика, один в конце данной строки, другой в начале новой.
zongxiong
 
Posts: 33
Joined: Sat Nov 05, 2011 4:18 am

Re: Баг: Unicode CJK Extension B

Postby ikm » Thu Aug 09, 2012 5:57 am

В Qt QString внутри представлен как UTF-16. Не приложу ума, зачем они это так сделали (видимо, исторически сложилось?), но явно косяки вылазят из-за неправильной обработки суррогатных пар или чего-то связанного. В идеале надо писать баги в Qt, конечно. Например, можно просто сохранить html, который выводится неправильно, и вместе с простеньким WebView, который его выводит, присовокупить к багу, в котором описать, почему оно выглядит не так, как надо.
ikm
Автор GoldenDict
 
Posts: 1595
Joined: Wed Feb 04, 2009 10:40 am


Return to Общий

Who is online

Users browsing this forum: No registered users and 29 guests