bug-gnu-emacs
[Top][All Lists]
Advanced

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

bug#15273: 24.3.50; Combining character sequences are displayed weirdly


From: Eli Zaretskii
Subject: bug#15273: 24.3.50; Combining character sequences are displayed weirdly
Date: Sun, 08 Sep 2013 14:03:50 +0300

> Date: Sun, 8 Sep 2013 06:48:55 +0800
> From: Xue Fuqiao <xfq.free@gmail.com>
> 
> I've attached my "C-u C-x =" information.

Thanks.  This is quite different from what I get on MS-Windows with
the Uniscribe shaping engine.  I don't know the explanation of these
differences; in fact I cannot even identify the code in nsfont.m that
generates these data structures.  Perhaps Handa-san could help us out
here.

What shaping engine is used by the NS port, btw?

I summarize some of the differences in the computed composition data
below, the data format is defined in the doc string of
composition-get-gstring as follows:

    [ FROM-IDX TO-IDX C CODE WIDTH LBEARING RBEARING ASCENT DESCENT
      [ [X-OFF Y-OFF WADJUST] | nil] ]
where
    FROM-IDX and TO-IDX are used internally and should not be touched.
    C is the character of the glyph.
    CODE is the glyph-code of C in FONT-OBJECT.
    WIDTH thru DESCENT are the metrics (in pixels) of the glyph.
    X-OFF and Y-OFF are offsets to the base position for the glyph.
    WADJUST is the adjustment to the normal width of the glyph.

It looks like NS consistently produces more negative values of X-OFF,
which might explain why portions of the combining characters are drawn
off screen.

 Character seq.              W32                        NS
===============================================================================
  a + u+0303    [0 1 97 165 7 0 7 12 3 nil]    [0 1 97 68 7 0 8 6 0 nil]
                                               [0 1 771 692 2 -7 6 1 0 [-3 0 0]]

  a + u+0307    [0 1 97 489 7 0 7 12 3 nil]    [0 1 97 68 7 0 8 6 0 nil]
                                               [0 1 775 696 2 -6 3 2 0 [-2 0 0]]


u+00e3 + u+0323 [0 1 227 165 7 0 7 12 3 nil]   [0 1 227 165 7 0 8 9 0 nil]
                [0 1 227 724 0 -3 -2 12 3 nil] [0 1 803 724 2 -6 3 0 2 [-2 1 0]]

a + u+0303 + u+0323
                [0 2 97 68 7 0 7 12 3 nil]         [0 2 97 68 7 0 8 6 0 nil]
                [0 2 97 692 0 -4 -1 12 3 [-1 0 0]] [0 2 771 692 2 -7 6 1 0 [-3 
0 0]]
                [0 2 97 724 0 -3 -2 12 3 [-1 0 0]] [0 2 803 724 2 -6 3 0 2 [-2 
1 0]]

u+1ea1 + u+0303 [0 1 7841 2458 7 0 7 12 3 nil]  [0 1 7841 2458 7 0 8 6 2 nil]
                [0 1 7841 692 0 -4 -1 12 3 nil] [0 1 771 692 2 -7 6 1 0 [-3 0 
0]]

a + u+0323 + u+0303
                [0 2 97 68 7 0 7 12 3 nil]         [0 2 97 68 7 0 8 6 0 nil]
                [0 2 97 724 0 -3 -2 12 3 [-1 0 0]] [0 2 803 724 2 -6 3 0 2 [-2 
1 0]]
                [0 2 97 692 0 -4 -1 12 3 [-1 0 0]] [0 2 771 692 2 -7 6 1 0 [-3 
0 0]]

u+1ea1 + u+0307 [0 1 7841 2458 7 0 7 12 3 nil]  [0 1 7841 2458 7 0 8 6 2 nil]
                [0 1 7841 696 0 -3 -2 12 3 nil] [0 1 775 696 2 -6 3 2 0 [-2 0 
0]]

a + u+0323 + u+0307
                [0 2 97 68 7 0 7 12 3 nil]         [0 2 97 68 7 0 8 6 0 nil]
                [0 2 97 724 0 -3 -2 12 3 [-1 0 0]] [0 2 803 724 2 -6 3 0 2 [-2 
1 0]]
                [0 2 97 696 0 -3 -2 12 3 [-1 0 0]] [0 2 775 696 2 -6 3 2 0 [-2 
0 0]]

u+0227 + u+0323 [0 1 551 489 7 0 7 12 3 nil]    [0 1 551 489 7 0 8 9 0 nil]
                [0 1 551 724 0 -3 -2 12 3 nil]  [0 1 803 724 2 -6 3 0 2 [-2 1 
0]]

a + u+0307 + u+0323
                [0 2 97 68 7 0 7 12 3 nil]         [0 2 97 68 7 0 8 6 0 nil]
                [0 2 97 696 0 -3 -2 12 3 [-1 0 0]] [0 2 775 696 2 -6 3 2 0 [-2 
0 0]]
                [0 2 97 724 0 -3 -2 12 3 [-1 0 0]] [0 2 803 724 2 -6 3 0 2 [-2 
1 0]]

u+00e1 + u+0302 [0 1 225 163 7 0 7 12 3 nil]   [0 1 225 163 7 0 8 9 0 nil]
                [0 1 225 691 0 -4 -1 12 3 nil] [0 1 770 691 2 -7 6 2 0 [-3 0 0]]






reply via email to

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