From: Sergey Vlasov <vsu@mivlgu.murom.ru>
To: sisyphus@linuxteam.iplabs.ru
Subject: Re: [devel] Re: [sisyphus] I gtk+-1.2.9
Date: Mon, 12 Mar 2001 20:31:06 +0300
Message-ID: <20010312173107.B817E83530@mail.mivlgu.murom.ru> (raw)
In-Reply-To: <20010311233705.A25690@avilink.net>
On Sun, 11 Mar 2001 23:37:05 +0200
Alexander Bokovoy <ab@avilink.net> wrote:
> В XFree86 используется 16-битные последовательности для символов, но при
> этом происходит конверсия (xc/lib/X11/lcUTF8.c):
> /* Part I: Conversion routines CompoundText/CharSet <--> Unicode/UTF-8.
> *
> * Note that this code works in any locale. We store Unicode values in
> * `ucs4_t' variables, but don't pass them to the user.
> *
> * This code has to support all character sets that are used for CompoundText,
> * nothing more, nothing less. See the table in lcCT.c.
> * Since the conversion _to_ CompoundText is likely to need the tables for all
> * character sets at once, we don't use dynamic loading (of tables or shared
> * libraries through iconv()). Use a fixed set of tables instead.
> *
> * We use statically computed tables, not dynamically allocated arrays,
> * because it's more memory efficient: Different processes using the same
> * libX11 shared library share the "text" and read-only "data" sections.
> */
> typedef unsigned int ucs4_t;
Все, глюк пойман. xc/lib/X11/lcUTF8.c в 3.3.6 отсутствует, но не в этом дело. В xc/lib/X11/lcGenConv.c и lcGeneric.c в структуре XLCdGenericPart есть такое интересное поле - use_stdc_env. Если там стоит True - используются функции из libc (из семейства mbtowc), False - собственная кодировка.
А поле устанавливается по содержимому /usr/X11R6/lib/X11/locale/koi8-r/XLC_LOCALE (или другого, в зависимости от LC_CTYPE). Так вот, в XFree 4.0.2 в этом файле стоит строка:
use_stdc_env True
А в 3.3.6 ее нет, поэтому используется wc_encoding_mask, wc_shift_bits и другие странные способы кодирования (честно говоря, я в них не разбирался, но достаточно того, что не юникод).
Сейчас попробовал на 3.3.6 запустить testgtk из 1.2.9 - GtkEntry не работает, как я и писал, выводит вместо русских букв младший байт юникода. Добавил в /usr/X11R6/lib/X11/locale/koi8-r/XLC_LOCALE строчку "use_stdc_env True" - русские буквы появились.
Вывод - для перехода на gtk-1.2.9 требуется одно из двух:
1) Отказаться от --with-native-locale (в этом случае gdk_mbstowcs будет использовать XmbTextListToTextProperty и XwcTextPropertyToTextList, и результат этого в любом случае будет пригоден для XwcDrawString).
2) Патчить XFree 3.3.6 на предмет внесения во все файлы XLC_LOCALE строки "use_stdc_env True" по образцу XFree 4. К каким глюкам это может привести - неизвестно.
Понятно, что вариант "выбросить XFree 3.3.6 вообще" не пройдет - в XFree 4.0.2 есть не все драйверы.
Я так понимаю, что у всех тестирующих уже стоит XFree 4.0.2, вот этого фокуса никто и не замечал. Или в Sisyphus 3.3.6 все-таки уже попатчен таким образом?
next prev parent reply other threads:[~2001-03-12 17:31 UTC|newest]
Thread overview: 50+ messages / expand[flat|nested] mbox.gz Atom feed top
2001-03-03 17:10 Aleksey Novodvorsky
2001-03-03 18:14 ` Vlad Harchev
2001-03-03 19:11 ` [devel] " Aleksey Novodvorsky
2001-03-03 18:42 ` Vlad Harchev
2001-03-03 20:36 ` Aleksey Novodvorsky
2001-03-11 13:06 ` Vlad Harchev
2001-03-11 14:07 ` rider
2001-03-11 14:10 ` Sergey Vlasov
2001-03-11 14:53 ` Vlad Harchev
2001-03-11 16:24 ` Sergey Vlasov
2001-03-11 17:00 ` Vlad Harchev
2001-03-11 17:43 ` Sergey Vlasov
2001-03-11 17:51 ` Sergey Vlasov
2001-03-11 18:53 ` Alexander Bokovoy
2001-03-11 19:21 ` Sergey Vlasov
2001-03-11 19:28 ` Alexander Bokovoy
2001-03-11 20:08 ` Sergey Vlasov
2001-03-11 21:37 ` Alexander Bokovoy
2001-03-12 17:31 ` Sergey Vlasov [this message]
2001-03-13 1:43 ` Aleksey Novodvorsky
2001-03-12 17:48 ` Sergey Vlasov
2001-03-12 2:56 ` aen
2001-03-11 18:58 ` Alexander Bokovoy
2001-03-12 3:45 ` aen
2001-03-11 19:53 ` Alexander Bokovoy
2001-03-12 4:07 ` aen
2001-03-11 21:38 ` Alexander Bokovoy
2001-03-12 5:46 ` aen
2001-03-11 21:59 ` Alexander Bokovoy
2001-03-12 15:34 ` Vlad Harchev
2001-03-13 0:25 ` Aleksey Novodvorsky
2001-03-12 18:52 ` Vlad Harchev
2001-03-13 4:12 ` [sisyphus] gtk+-1.2.9 Sergey S. Skulachenko
2001-03-13 7:59 ` Vlad Harchev
2001-03-13 8:44 ` Alexander Bokovoy
2001-03-13 17:31 ` Aleksey Novodvorsky
2001-03-13 15:56 ` Vlad Harchev
2001-03-13 16:22 ` Vlad Harchev
2001-03-14 2:03 ` Aleksey Novodvorsky
2001-03-13 18:58 ` Vlad Harchev
2001-03-14 3:51 ` Aleksey Novodvorsky
2001-03-13 19:58 ` Vlad Harchev
2001-03-13 20:38 ` Alexander Bokovoy
2001-03-13 20:33 ` Sergey Vlasov
2001-03-14 16:53 ` Sergey Vlasov
2001-03-14 1:12 ` Aleksey Novodvorsky
2001-03-13 17:11 ` [devel] Re: [sisyphus] I gtk+-1.2.9 Aleksey Novodvorsky
2001-03-13 16:17 ` Vlad Harchev
2001-03-14 1:19 ` Aleksey Novodvorsky
2001-03-13 18:32 ` Vlad Harchev
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20010312173107.B817E83530@mail.mivlgu.murom.ru \
--to=vsu@mivlgu.murom.ru \
--cc=sisyphus@linuxteam.iplabs.ru \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
ALT Linux Sisyphus discussions
This inbox may be cloned and mirrored by anyone:
git clone --mirror http://lore.altlinux.org/sisyphus/0 sisyphus/git/0.git
# If you have public-inbox 1.1+ installed, you may
# initialize and index your mirror using the following commands:
public-inbox-init -V2 sisyphus sisyphus/ http://lore.altlinux.org/sisyphus \
sisyphus@altlinux.ru sisyphus@altlinux.org sisyphus@lists.altlinux.org sisyphus@lists.altlinux.ru sisyphus@lists.altlinux.com sisyphus@linuxteam.iplabs.ru sisyphus@list.linux-os.ru
public-inbox-index sisyphus
Example config snippet for mirrors.
Newsgroup available over NNTP:
nntp://lore.altlinux.org/org.altlinux.lists.sisyphus
AGPL code for this site: git clone https://public-inbox.org/public-inbox.git