emacs-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Russian letters


From: Paul Pogonyshev
Subject: Re: Russian letters
Date: Sat, 8 Jul 2006 18:30:12 +0300
User-agent: KMail/1.7.2

Eli Zaretskii wrote:
> > From: Paul Pogonyshev <address@hidden>
> > Date: Fri, 7 Jul 2006 22:59:40 +0300
> > 
> > >     utf-fragment-on-decoding's value is nil
> > > 
> > >     Whether or not to decode some chars in UTF-8/16 text into iso8859 
> > > charsets.
> > >     [...]
> > 
> > Why not do the same to the typed characters?
> 
> Maybe it does, let's find out: how did you type those characters?  Did
> you use a Leim input method (which one?), or did you type them on your
> keyboard?

I think it is Leim input method `russian-computer'.  I.e. I use `C-\' in
Emacs to switch between US Engish and Russian keyboard layouts.

> > Current behavior is inconsistent---some characters are decoded (into
> > iso-8859 charsets), some are not.
> 
> I think it is consistent in the default configuration.

Yes, in the default.  But not if you change `utf-fragment-on-decoding',
I think.

> > > The reason why the default value is nil is precisely that most users
> > > will not want the fragmentation, they will want the characters to
> > > belong to a single character set.
> > 
> > I understand you, but actually, most users do not bother.  Emacs should
> > work `out of the box' and display the characters.
> 
> It does work `out of the box', if you don't change the value of
> utf-fragment-on-decoding.

And displays boxes in place of Russian characters (all of them.)  If
`utf-fragment-on-decoding' is non=nil, it displays read characters fine,
but not the newly typed characters.

> > Why doesn't Emacs try to decode characters on displaying?
> 
> Decoding happens on input, when the characters are inserted into a
> buffer, not when they are displayed.  Such insertion occurs when you
> either (a) type the characters at the keyboard, or (b) visit a file,
> or (c) paste them from an X selection or a clipboard, or (d) read
> output of some process which interacts with Emacs.  (I hope I didn't
> forget any other possibilities.)
> 
> If you describe how you typed those characters, maybe we will find a
> bug that needs to be fixed.

Maybe I used imprecise words.  We know that Emacs can display Russian
characters if they decoded into a national ISO charset.  The same
(conceptually, from the user point of view) characters are shown as
boxes when they are in UTF charset.  It should be possible to display
ranges from UTF charset as national charsets.  I.e. if character
U+0430 is displayed as ISO-8859-5 0x50, all problems solved.  No
matter how the characters are encoded, if they conceptually are the
same, they should be displayed using the same method, no?

> > > Did you set this variable to a non-nil value in your .emacs?  If so,
> > > how about removing that customization?  If the reason is that you
> > > don't have Unicode fonts installed, I think installing them is a
> > > better solution.
> > 
> > I use Debian Sarge which is only 1 year old.  And Emacs doesn't work
> > with its standard font and Cyrillic letters as is.  (Well, I didn't
> > try the standard package, but CVS `emacs -Q' shows boxes.)  I had enough
> > persistence to find the reason (here, thank you), but most users won't.
> > Especially since Emacs cannot even list font families (at least I don't
> > know how.)
> 
> I still don't understand whether you modified the value of
> utf-fragment-on-decoding or it came that way with Debian Sarge.  In
> the latter case, I think it's something to complain about to Debian
> maintainers.

I think modification of `utf-fragment-on-decoding' is a remnant of the
times I tried to solve Russian characters problem.  Maybe it worked then,
not sure.

> The missing fonts is also an issue with Debian, I think.  Perhaps they
> have an optional package you need to install, but since you live in a
> Cyrillic locale (if I understand correctly the headers of your
> message), I find it hard to believe that your system lacks Unicode
> fonts that don't support Cyrillic characters.

I'll try writing to Debian.  However, Emacs does poor job: while it _can_
show Cyrillic characters in `adobe-courier', it does so only when they are
in a certain encoding.

Cronyx fonts do indeed support Russian characters.  However, customizing
`default' face to use cronyx-courier for some reason influences only the
current Emacs session.  Bug?

In the current session: I customize the default face to use `cronyx-courier'
and press the ``Save for Future Sessions'' button.  Cyrillic characters
are now displayed with the Cronyx font, but ASCII characters are shown with
`adobe-courier'...

A new session: all characters are shown with `adobe-courier'.  In particular,
Cyrillic characters are shown as boxes.  `.emacs' does indeed contain
`cronyx-courier', but for some reason it doesn't take effect at all...

Actually, I now see that I had this problem before and wrote about it in
``Pango-like font fallback (was Re: Russian numero sign)'' thread:

    I went to install all the fonts I could find in my Debian Sarge.  And
    found cronyx-courier font, which looks nice _and_ has Cyrillic
    characters.  However, when I customize the default face in Emacs and
    set that font family, latin characters are still displayed in
    adobe-courier (though Cyrillic ones are shown in cronyx-courier)...
    And the customization doesn't take any effect after I restart Emacs...
    Any ideas?

Kenichi Handa answered:

   Perhaps that because you don't have
   -cronyx-courier-...-iso8859-1.  Emacs by default uses an
   iso8859-1 font for ASCII.  To change it, you must create a
   proper fontset by one of these ways: [...]

How an average user is supposed to find it is beyond me.  I disovered it
only here.

Paul




reply via email to

[Prev in Thread] Current Thread [Next in Thread]