ALT Linux Sisyphus discussions
 help / color / mirror / Atom feed
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 все-таки уже попатчен таким образом?



  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