emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
* mis-alignment in org-tables with Tibetan characters
@ 2014-02-03  3:29 Steffan Iverson
  2014-02-03  5:33 ` Steffan Iverson
  2014-02-03  9:20 ` Bastien
  0 siblings, 2 replies; 15+ messages in thread
From: Steffan Iverson @ 2014-02-03  3:29 UTC (permalink / raw)
  To: emacs-orgmode

[-- Attachment #1: Type: text/plain, Size: 924 bytes --]

Hello all,


I've made an org table that includes both English and Tibetan characters,
and the columns don't line up. I suspect this is because of the way Tibetan
characters are displayed - they "stack" below and above each other, making
the characters vertically taller than the English characters. You can see
this
same problem in the text pasted below, it behaves the same way in an org
table. Any way to solve this problem? Perhaps somehow changing the height
of all the text in the table? Thanks!

| རྐུ་བ་    | rku-ba     | བརྐུས་པ་  | brkus-pa    | བརྐུ་བ་   | brku-ba
| རྐུས་   | rkus    |
| གསོ་བ་   | gso-ba     | གསོས་པ་  | gsos-pa     | གསོ་བ་   | gso-ba     |
གསོས་  | gsos    |
| འཆོར་བ་  | 'chor-ba   | ཤོར་བ་   | shor-ba     | འཆོར་བ་  | 'chor-ba   |

[-- Attachment #2: Type: text/html, Size: 1081 bytes --]

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: mis-alignment in org-tables with Tibetan characters
  2014-02-03  3:29 mis-alignment in org-tables with Tibetan characters Steffan Iverson
@ 2014-02-03  5:33 ` Steffan Iverson
  2014-02-04 18:13   ` Michael Brand
  2014-02-03  9:20 ` Bastien
  1 sibling, 1 reply; 15+ messages in thread
From: Steffan Iverson @ 2014-02-03  5:33 UTC (permalink / raw)
  To: emacs-orgmode

[-- Attachment #1: Type: text/plain, Size: 1101 bytes --]

Screenshot: http://oi59.tinypic.com/lz893.jpg


On Sun, Feb 2, 2014 at 7:29 PM, Steffan Iverson
<steffan.iverson@gmail.com>wrote:

> Hello all,
>
>
> I've made an org table that includes both English and Tibetan characters,
> and the columns don't line up. I suspect this is because of the way
> Tibetan
> characters are displayed - they "stack" below and above each other, making
> the characters vertically taller than the English characters. You can see
> this
> same problem in the text pasted below, it behaves the same way in an org
> table. Any way to solve this problem? Perhaps somehow changing the height
> of all the text in the table? Thanks!
>
> | རྐུ་བ་    | rku-ba     | བརྐུས་པ་  | brkus-pa    | བརྐུ་བ་   |
> brku-ba    | རྐུས་   | rkus    |
> | གསོ་བ་   | gso-ba     | གསོས་པ་  | gsos-pa     | གསོ་བ་   | gso-ba     |
> གསོས་  | gsos    |
> | འཆོར་བ་  | 'chor-ba   | ཤོར་བ་   | shor-ba     | འཆོར་བ་  | 'chor-ba   |
>

[-- Attachment #2: Type: text/html, Size: 1599 bytes --]

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: mis-alignment in org-tables with Tibetan characters
  2014-02-03  3:29 mis-alignment in org-tables with Tibetan characters Steffan Iverson
  2014-02-03  5:33 ` Steffan Iverson
@ 2014-02-03  9:20 ` Bastien
  2014-02-04 14:18   ` Eric Abrahamsen
  1 sibling, 1 reply; 15+ messages in thread
From: Bastien @ 2014-02-03  9:20 UTC (permalink / raw)
  To: Steffan Iverson; +Cc: Eric Abrahamsen, emacs-orgmode

Hi Steffan,

thanks for reporting this.

Steffan Iverson <steffan.iverson@gmail.com> writes:

> Any way to solve this problem?

This is a recurring problem, and Eric is the one who tried
to solve it.

Eric, I don't remember why we didn't follow-up on your patch
here:

http://lists.gnu.org/archive/html/emacs-orgmode/2013-02/msg00664.html

Would that help in this situation?

Thanks,

-- 
 Bastien

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: mis-alignment in org-tables with Tibetan characters
  2014-02-03  9:20 ` Bastien
@ 2014-02-04 14:18   ` Eric Abrahamsen
  2014-02-04 16:35     ` Bastien
  0 siblings, 1 reply; 15+ messages in thread
From: Eric Abrahamsen @ 2014-02-04 14:18 UTC (permalink / raw)
  To: Bastien; +Cc: Steffan Iverson, emacs-orgmode

Bastien <bzg@gnu.org> writes:

> Hi Steffan,
>
> thanks for reporting this.
>
> Steffan Iverson <steffan.iverson@gmail.com> writes:
>
>> Any way to solve this problem?
>
> This is a recurring problem, and Eric is the one who tried
> to solve it.
>
> Eric, I don't remember why we didn't follow-up on your patch
> here:
>
> http://lists.gnu.org/archive/html/emacs-orgmode/2013-02/msg00664.html
>
> Would that help in this situation?

I've been using that patch or something like it for nearly a year now,
with no adverse effects. I'm on the road right now, give me a day and
I'll take a closer look at what I've got...

E

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: mis-alignment in org-tables with Tibetan characters
  2014-02-04 14:18   ` Eric Abrahamsen
@ 2014-02-04 16:35     ` Bastien
  2014-02-10  4:09       ` Eric Abrahamsen
  0 siblings, 1 reply; 15+ messages in thread
From: Bastien @ 2014-02-04 16:35 UTC (permalink / raw)
  To: Eric Abrahamsen; +Cc: Steffan Iverson, emacs-orgmode

Eric Abrahamsen <eric@ericabrahamsen.net> writes:

> I've been using that patch or something like it for nearly a year now,
> with no adverse effects. I'm on the road right now, give me a day and
> I'll take a closer look at what I've got...

Great -- thanks in advance!  I'll then wait before releasing a new
minor version and merging it into Emacs for Emacs 24.4.

To other core maintainers: if you see important issues that needs to
be fixed in maint, let me know.

-- 
 Bastien

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: mis-alignment in org-tables with Tibetan characters
  2014-02-03  5:33 ` Steffan Iverson
@ 2014-02-04 18:13   ` Michael Brand
  2014-02-05  0:00     ` Steffan Iverson
  0 siblings, 1 reply; 15+ messages in thread
From: Michael Brand @ 2014-02-04 18:13 UTC (permalink / raw)
  To: Steffan Iverson; +Cc: Org Mode

Hi Steffan

On Mon, Feb 3, 2014 at 6:33 AM, Steffan Iverson
<steffan.iverson@gmail.com> wrote:
> Screenshot: http://oi59.tinypic.com/lz893.jpg

Judging from e. g. this part
| རྐུས་  | rkus |
| གསོས་ | gsos |
in your screenshot my speculation is that you get glyphs from not only your
default monospace font but also from other (maybe variable width) font(s).
Either because some glyphs are not available in your default monospace font
or are not used due to an incomplete configuration with set-fontset-font.

For a diagnosis in this direction I would check the alignment of "|" after
some characters just repeated like here:

xxxxxxxxxx|
་་་་་་་་་་|
གགགགགགགགགག|
རརརརརརརརརར|
སསསསསསསསསས|
ུུུུུུུུུུ|
ོོོོོོོོོོ|
ྐྐྐྐྐྐྐྐྐྐ|
xxxxxxxxxx|
∞∞∞∞∞∞∞∞∞∞|

Michael

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: mis-alignment in org-tables with Tibetan characters
  2014-02-04 18:13   ` Michael Brand
@ 2014-02-05  0:00     ` Steffan Iverson
  2014-02-05  5:35       ` Michael Brand
  0 siblings, 1 reply; 15+ messages in thread
From: Steffan Iverson @ 2014-02-05  0:00 UTC (permalink / raw)
  To: Michael Brand; +Cc: Org Mode

[-- Attachment #1: Type: text/plain, Size: 1375 bytes --]

Michael, that test case you suggest does indeed cause the same spacing
problem. So this isn't a problem from the vowel stacking in Tibetan,
because of the type of font it is? Sorry, generally new to Emacs so I'm not
sure how to move forward with that insight.


On Tue, Feb 4, 2014 at 10:13 AM, Michael Brand
<michael.ch.brand@gmail.com>wrote:

> Hi Steffan
>
> On Mon, Feb 3, 2014 at 6:33 AM, Steffan Iverson
> <steffan.iverson@gmail.com> wrote:
> > Screenshot: http://oi59.tinypic.com/lz893.jpg
>
> Judging from e. g. this part
> | རྐུས་  | rkus |
> | གསོས་ | gsos |
> in your screenshot my speculation is that you get glyphs from not only your
> default monospace font but also from other (maybe variable width) font(s).
> Either because some glyphs are not available in your default monospace font
> or are not used due to an incomplete configuration with set-fontset-font.
>
> For a diagnosis in this direction I would check the alignment of "|" after
> some characters just repeated like here:
>
> xxxxxxxxxx|
> ་་་་་་་་་་|
> གགགགགགགགགག|
> རརརརརརརརརར|
> སསསསསསསསསས|
> ུུུུུུུུུུ|
> ོོོོོོོོོོ|
> ྐྐྐྐྐྐྐྐྐྐ|
> xxxxxxxxxx|
> ∞∞∞∞∞∞∞∞∞∞|
>
> Michael
>

[-- Attachment #2: Type: text/html, Size: 1940 bytes --]

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: mis-alignment in org-tables with Tibetan characters
  2014-02-05  0:00     ` Steffan Iverson
@ 2014-02-05  5:35       ` Michael Brand
  2014-02-06 13:03         ` Michael Brand
  0 siblings, 1 reply; 15+ messages in thread
From: Michael Brand @ 2014-02-05  5:35 UTC (permalink / raw)
  To: Steffan Iverson; +Cc: Org Mode

Hi Steffan

On Wed, Feb 5, 2014 at 1:00 AM, Steffan Iverson
<steffan.iverson@gmail.com> wrote:
> Michael, that test case you suggest does indeed cause the same spacing
> problem. So this isn't a problem from the vowel stacking in Tibetan,

Such combining characters and and also double width characters may
still remain as separate issues for Org table alignment and maybe the
patches from Eric Abrahamsen are required to resolve one or both.

> because of the type of font it is? Sorry, generally new to Emacs so
> I'm not sure how to move forward with that insight.

Several steps to go with choosing font(s) and probably tweaking
set-fontset-font which I don't have much insight neither.

Regarding the choice of font: Is there any font that is monospaced
even in the Tibetan range at all? What does a "cat" (not "less" or any
other ncurses) of your file look like in different terminal emulators
like xterm, gnome-terminal etc. on different OSes? What does "locale"
from these terminal emulators tell?

Regarding a possible first step with Emacs set-fontset-font: How did
the glyph for INFINITY from the test look like, was this aligned for
you?:

xxxxxxxxxx|
∞∞∞∞∞∞∞∞∞∞|

Michael

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: mis-alignment in org-tables with Tibetan characters
  2014-02-05  5:35       ` Michael Brand
@ 2014-02-06 13:03         ` Michael Brand
  0 siblings, 0 replies; 15+ messages in thread
From: Michael Brand @ 2014-02-06 13:03 UTC (permalink / raw)
  To: Steffan Iverson; +Cc: Org Mode

Hi Steffan

On Wed, Feb 5, 2014 at 6:35 AM, Michael Brand
<michael.ch.brand@gmail.com> wrote:
> Is there any font that is monospaced even in the Tibetan range at all?

On one of my "trips" of learning more about unicode I just discovered
the monospaced bitmap font GNU Unifont [1] [2] which implements most
of (!) the range U+0000 to U+FFFF and should be ok for a whole lot of
tests. See PNG image of e. g. version 6.3.20131006 [3]. The unicode
script Tibetan you need starts at 0F00.

Michael

[1] http://en.wikipedia.org/wiki/GNU_Unifont
[2] http://unifoundry.com/unifont.html
[3] http://upload.wikimedia.org/wikipedia/commons/e/e3/Unifont-6.3.20131006.png

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: mis-alignment in org-tables with Tibetan characters
  2014-02-04 16:35     ` Bastien
@ 2014-02-10  4:09       ` Eric Abrahamsen
  2014-02-11  2:50         ` Steffan Iverson
  2014-05-24 10:01         ` Bastien
  0 siblings, 2 replies; 15+ messages in thread
From: Eric Abrahamsen @ 2014-02-10  4:09 UTC (permalink / raw)
  To: Bastien; +Cc: Steffan Iverson, emacs-orgmode

[-- Attachment #1: Type: text/plain, Size: 1078 bytes --]

Bastien <bzg@gnu.org> writes:

> Eric Abrahamsen <eric@ericabrahamsen.net> writes:
>
>> I've been using that patch or something like it for nearly a year now,
>> with no adverse effects. I'm on the road right now, give me a day and
>> I'll take a closer look at what I've got...
>
> Great -- thanks in advance!  I'll then wait before releasing a new
> minor version and merging it into Emacs for Emacs 24.4.
>
> To other core maintainers: if you see important issues that needs to
> be fixed in maint, let me know.

Sorry this took a while to get to...

I think it was a little simpler than I thought -- at least I hope that's
true, and I'm not missing something really obvious. There are two
patches attached, a simple one that handles re-justification of table
fields during field movement, and another that allows for narrowing of
columns with double-width strings. The second patch is uglier, and
doesn't work 100% well (you get misalignment if you try to narrow a
double-wide to an odd number of single-width characters), but it's
better than nothing.

Please test!

Eric


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: 0001-Make-table-field-justification-respect-string-width.patch --]
[-- Type: text/x-diff, Size: 1285 bytes --]

From f03f4755b2d3e62d9f88845d93390a364805c131 Mon Sep 17 00:00:00 2001
From: Eric Abrahamsen <eric@ericabrahamsen.net>
Date: Wed, 13 Feb 2013 11:56:18 +0800
Subject: [PATCH 1/9] Make table field justification respect string width

---
 lisp/org-table.el | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/lisp/org-table.el b/lisp/org-table.el
index 520ac8a..33ae63e 100644
--- a/lisp/org-table.el
+++ b/lisp/org-table.el
@@ -973,14 +973,16 @@ Optional argument NEW may specify text to replace the current field content."
 	    (progn
 	      (setq s (match-string 1)
 		    o (match-string 0)
-		    l (max 1 (- (match-end 0) (match-beginning 0) 3))
+		    l (max 1
+			   (- (org-string-width
+			       (buffer-substring
+				(match-end 0) (match-beginning 0))) 3))
 		    e (not (= (match-beginning 2) (match-end 2))))
 	      (setq f (format (if num " %%%ds %s" " %%-%ds %s")
 			      l (if e "|" (setq org-table-may-need-update t) ""))
 		    n (format f s))
 	      (if new
-		  (if (<= (length new) l)      ;; FIXME: length -> str-width?
+		  (if (<= (org-string-width new) l)
 		      (setq n (format f new))
 		    (setq n (concat new "|") org-table-may-need-update t)))
 	      (if (equal (string-to-char n) ?-) (setq n (concat " " n)))
-- 
1.8.5.4


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #3: 0002-Make-table-column-narrowing-play-nice-with-variable-.patch --]
[-- Type: text/x-diff, Size: 1876 bytes --]

From 85aee797a97194d9c29d7baac6415555f3849f7f Mon Sep 17 00:00:00 2001
From: Eric Abrahamsen <eric@ericabrahamsen.net>
Date: Wed, 13 Feb 2013 16:46:33 +0800
Subject: [PATCH 2/9] Make table column narrowing play nice with variable-width
 strings

---
 lisp/org-table.el | 19 ++++++++++++++-----
 1 file changed, 14 insertions(+), 5 deletions(-)

diff --git a/lisp/org-table.el b/lisp/org-table.el
index 33ae63e..32dd025 100644
--- a/lisp/org-table.el
+++ b/lisp/org-table.el
@@ -758,7 +758,7 @@ When nil, simply write \"#ERROR\" in corrupted fields.")
 	 (hfmt1 (concat
 		 (make-string sp2 ?-) "%s" (make-string sp1 ?-) "+"))
 	 emptystrings links dates emph raise narrow
-	 falign falign1 fmax f1 len c e space)
+	 falign falign1 fmax f1 f2 len c e space)
     (untabify beg end)
     (remove-text-properties beg end '(org-cwidth t org-dwidth t display t))
     ;; Check if we have links or dates
@@ -843,10 +843,19 @@ When nil, simply write \"#ERROR\" in corrupted fields.")
 		  (unless (> f1 1)
 		    (user-error "Cannot narrow field starting with wide link \"%s\""
 			   (match-string 0 xx)))
-		  (add-text-properties f1 (length xx) (list 'org-cwidth t) xx)
-		  (add-text-properties (- f1 2) f1
-				       (list 'display org-narrow-column-arrow)
-				       xx)))))
+		  (setq f2 (length xx))
+		  (if (= (org-string-width xx)
+			 f2)
+		      (setq f2 f1)
+		    (setq f2 1)
+		    (while (< (org-string-width (substring xx 0 f2))
+			      f1)
+		      (setq f2 (1+ f2))))
+		  (add-text-properties f2 (length xx) (list 'org-cwidth t) xx)
+		  (add-text-properties (if (>= (string-width (substring xx (1- f2) f2)) 2)
+					   (1- f2) (- f2 2)) f2
+					   (list 'display org-narrow-column-arrow)
+					   xx)))))
       ;; Get the maximum width for each column
       (push (apply 'max (or fmax 1) 1 (mapcar 'org-string-width column))
 	    lengths)
-- 
1.8.5.4


^ permalink raw reply related	[flat|nested] 15+ messages in thread

* Re: mis-alignment in org-tables with Tibetan characters
  2014-02-10  4:09       ` Eric Abrahamsen
@ 2014-02-11  2:50         ` Steffan Iverson
  2014-02-11  3:12           ` Eric Abrahamsen
  2014-05-24 10:01         ` Bastien
  1 sibling, 1 reply; 15+ messages in thread
From: Steffan Iverson @ 2014-02-11  2:50 UTC (permalink / raw)
  To: Eric Abrahamsen; +Cc: Bastien, Org Mode

[-- Attachment #1: Type: text/plain, Size: 1434 bytes --]

Thanks Eric - I've used this patch but I doesn't seem to solve the problem.
I'm working on an earlier suggestion by Michael about the unicode type that
my Tibetan font is. I very much appreciate all this help!

Steffan


On Sun, Feb 9, 2014 at 8:09 PM, Eric Abrahamsen <eric@ericabrahamsen.net>wrote:

> Bastien <bzg@gnu.org> writes:
>
> > Eric Abrahamsen <eric@ericabrahamsen.net> writes:
> >
> >> I've been using that patch or something like it for nearly a year now,
> >> with no adverse effects. I'm on the road right now, give me a day and
> >> I'll take a closer look at what I've got...
> >
> > Great -- thanks in advance!  I'll then wait before releasing a new
> > minor version and merging it into Emacs for Emacs 24.4.
> >
> > To other core maintainers: if you see important issues that needs to
> > be fixed in maint, let me know.
>
> Sorry this took a while to get to...
>
> I think it was a little simpler than I thought -- at least I hope that's
> true, and I'm not missing something really obvious. There are two
> patches attached, a simple one that handles re-justification of table
> fields during field movement, and another that allows for narrowing of
> columns with double-width strings. The second patch is uglier, and
> doesn't work 100% well (you get misalignment if you try to narrow a
> double-wide to an odd number of single-width characters), but it's
> better than nothing.
>
> Please test!
>
> Eric
>
>

[-- Attachment #2: Type: text/html, Size: 2141 bytes --]

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: mis-alignment in org-tables with Tibetan characters
  2014-02-11  2:50         ` Steffan Iverson
@ 2014-02-11  3:12           ` Eric Abrahamsen
  0 siblings, 0 replies; 15+ messages in thread
From: Eric Abrahamsen @ 2014-02-11  3:12 UTC (permalink / raw)
  To: Steffan Iverson; +Cc: Bastien, Org Mode

Ah yes, this won't work if your font draws characters at variable
widths. I use Chinese a lot, and some Chinese fonts will still create
misalignment, simply because a Chinese character as drawn as 192% the
width of an ascii character. Dunno how to get around that.

On 02/11/14 10:50 AM, Steffan Iverson wrote:
> Thanks Eric - I've used this patch but I doesn't seem to solve the
> problem. I'm working on an earlier suggestion by Michael about the
> unicode type that my Tibetan font is. I very much appreciate all this
> help!
>
> Steffan
>
>
> On Sun, Feb 9, 2014 at 8:09 PM, Eric Abrahamsen <
> eric@ericabrahamsen.net> wrote:
>
>     Bastien <bzg@gnu.org> writes:
>    
>     > Eric Abrahamsen <eric@ericabrahamsen.net> writes:
>     >
>     >> I've been using that patch or something like it for nearly a
>     year now,
>     >> with no adverse effects. I'm on the road right now, give me a
>     day and
>     >> I'll take a closer look at what I've got...
>     >
>     > Great -- thanks in advance!  I'll then wait before releasing a
>     new
>     > minor version and merging it into Emacs for Emacs 24.4.
>     >
>     > To other core maintainers: if you see important issues that
>     needs to
>     > be fixed in maint, let me know.
>    
>     Sorry this took a while to get to...
>    
>     I think it was a little simpler than I thought -- at least I hope
>     that's
>     true, and I'm not missing something really obvious. There are two
>     patches attached, a simple one that handles re-justification of
>     table
>     fields during field movement, and another that allows for
>     narrowing of
>     columns with double-width strings. The second patch is uglier,
>     and
>     doesn't work 100% well (you get misalignment if you try to narrow
>     a
>     double-wide to an odd number of single-width characters), but
>     it's
>     better than nothing.
>    
>     Please test!
>    
>     Eric
>    

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: mis-alignment in org-tables with Tibetan characters
  2014-02-10  4:09       ` Eric Abrahamsen
  2014-02-11  2:50         ` Steffan Iverson
@ 2014-05-24 10:01         ` Bastien
  2014-05-25  5:14           ` Eric Abrahamsen
  1 sibling, 1 reply; 15+ messages in thread
From: Bastien @ 2014-05-24 10:01 UTC (permalink / raw)
  To: Eric Abrahamsen; +Cc: Steffan Iverson, emacs-orgmode

Hi Eric,

Eric Abrahamsen <eric@ericabrahamsen.net> writes:

> Sorry this took a while to get to...
>
> I think it was a little simpler than I thought -- at least I hope that's
> true, and I'm not missing something really obvious. There are two
> patches attached, a simple one that handles re-justification of table
> fields during field movement, and another that allows for narrowing of
> columns with double-width strings. The second patch is uglier, and
> doesn't work 100% well (you get misalignment if you try to narrow a
> double-wide to an odd number of single-width characters), but it's
> better than nothing.

I want to apply the patches on master -- can you give them a commit
message with an Emacs changelog?  Also, the first one (0001-...) does
not apply on master anymore.

Thanks in advance!

-- 
 Bastien

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: mis-alignment in org-tables with Tibetan characters
  2014-05-24 10:01         ` Bastien
@ 2014-05-25  5:14           ` Eric Abrahamsen
  2014-05-25  5:18             ` Bastien
  0 siblings, 1 reply; 15+ messages in thread
From: Eric Abrahamsen @ 2014-05-25  5:14 UTC (permalink / raw)
  To: emacs-orgmode

[-- Attachment #1: Type: text/plain, Size: 1148 bytes --]

Bastien <bzg@gnu.org> writes:

> Hi Eric,
>
> Eric Abrahamsen <eric@ericabrahamsen.net> writes:
>
>> Sorry this took a while to get to...
>>
>> I think it was a little simpler than I thought -- at least I hope that's
>> true, and I'm not missing something really obvious. There are two
>> patches attached, a simple one that handles re-justification of table
>> fields during field movement, and another that allows for narrowing of
>> columns with double-width strings. The second patch is uglier, and
>> doesn't work 100% well (you get misalignment if you try to narrow a
>> double-wide to an odd number of single-width characters), but it's
>> better than nothing.
>
> I want to apply the patches on master -- can you give them a commit
> message with an Emacs changelog?  Also, the first one (0001-...) does
> not apply on master anymore.
>
> Thanks in advance!

The patch series that would not die!

I'm not a git wizard, but I think I was able to apply both these patches
to master with no problem: they're now sitting on top of 56b47fb and
nothing is going wrong (I think). Can you try again?

Here they are with better commit messages.

E


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: 0001-Use-string-width-in-table-field-justification.patch --]
[-- Type: text/x-diff, Size: 1468 bytes --]

From 3e6fd0e2790156a9bd68401bdabbf1b170408ba6 Mon Sep 17 00:00:00 2001
From: Eric Abrahamsen <eric@ericabrahamsen.net>
Date: Wed, 13 Feb 2013 11:56:18 +0800
Subject: [PATCH 1/2] Use string width in table field justification

lisp/org-table.el (org-table-justify-field-maybe): Use
org-string-width instead of length to calculate the visual width of
table cells -- helps with double-width charsets, etc.
---
 lisp/org-table.el | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/lisp/org-table.el b/lisp/org-table.el
index 6a7935e..5e0177f 100644
--- a/lisp/org-table.el
+++ b/lisp/org-table.el
@@ -981,13 +981,16 @@ Optional argument NEW may specify text to replace the current field content."
 	    (progn
 	      (setq s (match-string 1)
 		    o (match-string 0)
-		    l (max 1 (- (match-end 0) (match-beginning 0) 3))
+		    l (max 1
+			   (- (org-string-width
+			       (buffer-substring-no-properties
+				(match-end 0) (match-beginning 0))) 3))
 		    e (not (= (match-beginning 2) (match-end 2))))
 	      (setq f (format (if num " %%%ds %s" " %%-%ds %s")
 			      l (if e "|" (setq org-table-may-need-update t) ""))
 		    n (format f s))
 	      (if new
-		  (if (<= (length new) l)      ;; FIXME: length -> str-width?
+		  (if (<= (org-string-width new) l)
 		      (setq n (format f new))
 		    (setq n (concat new "|") org-table-may-need-update t)))
 	      (if (equal (string-to-char n) ?-) (setq n (concat " " n)))
-- 
1.9.3


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #3: 0002-Improve-table-column-narrowing-with-variable-width-s.patch --]
[-- Type: text/x-diff, Size: 2143 bytes --]

From 7850f739a6ef21bcc92763150861a67798282f12 Mon Sep 17 00:00:00 2001
From: Eric Abrahamsen <eric@ericabrahamsen.net>
Date: Wed, 13 Feb 2013 16:46:33 +0800
Subject: [PATCH 2/2] Improve table column narrowing with variable-width
 strings

lisp/org-table.el (org-table-align): Use org-string-width to make a
better guess as to how wide a narrowed table column should actually
be. This won't work perfectly with variable-width scripts, as it still
only narrows in full-column increments, but it's better than before.
---
 lisp/org-table.el | 19 ++++++++++++++-----
 1 file changed, 14 insertions(+), 5 deletions(-)

diff --git a/lisp/org-table.el b/lisp/org-table.el
index 5e0177f..d1f9686 100644
--- a/lisp/org-table.el
+++ b/lisp/org-table.el
@@ -765,7 +765,7 @@ When nil, simply write \"#ERROR\" in corrupted fields.")
 	 (hfmt1 (concat
 		 (make-string sp2 ?-) "%s" (make-string sp1 ?-) "+"))
 	 emptystrings links dates emph raise narrow
-	 falign falign1 fmax f1 len c e space)
+	 falign falign1 fmax f1 f2 len c e space)
     (untabify beg end)
     (remove-text-properties beg end '(org-cwidth t org-dwidth t display t))
     ;; Check if we have links or dates
@@ -851,10 +851,19 @@ When nil, simply write \"#ERROR\" in corrupted fields.")
 		  (unless (> f1 1)
 		    (user-error "Cannot narrow field starting with wide link \"%s\""
 			   (match-string 0 xx)))
-		  (add-text-properties f1 (length xx) (list 'org-cwidth t) xx)
-		  (add-text-properties (- f1 2) f1
-				       (list 'display org-narrow-column-arrow)
-				       xx)))))
+		  (setq f2 (length xx))
+		  (if (= (org-string-width xx)
+			 f2)
+		      (setq f2 f1)
+		    (setq f2 1)
+		    (while (< (org-string-width (substring xx 0 f2))
+			      f1)
+		      (setq f2 (1+ f2))))
+		  (add-text-properties f2 (length xx) (list 'org-cwidth t) xx)
+		  (add-text-properties (if (>= (string-width (substring xx (1- f2) f2)) 2)
+					   (1- f2) (- f2 2)) f2
+					   (list 'display org-narrow-column-arrow)
+					   xx)))))
       ;; Get the maximum width for each column
       (push (apply 'max (or fmax 1) 1 (mapcar 'org-string-width column))
 	    lengths)
-- 
1.9.3


^ permalink raw reply related	[flat|nested] 15+ messages in thread

* Re: mis-alignment in org-tables with Tibetan characters
  2014-05-25  5:14           ` Eric Abrahamsen
@ 2014-05-25  5:18             ` Bastien
  0 siblings, 0 replies; 15+ messages in thread
From: Bastien @ 2014-05-25  5:18 UTC (permalink / raw)
  To: Eric Abrahamsen; +Cc: emacs-orgmode

Eric Abrahamsen <eric@ericabrahamsen.net> writes:

> The patch series that would not die!

:)

Applied, thanks!

-- 
 Bastien

^ permalink raw reply	[flat|nested] 15+ messages in thread

end of thread, other threads:[~2014-05-25  5:18 UTC | newest]

Thread overview: 15+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-02-03  3:29 mis-alignment in org-tables with Tibetan characters Steffan Iverson
2014-02-03  5:33 ` Steffan Iverson
2014-02-04 18:13   ` Michael Brand
2014-02-05  0:00     ` Steffan Iverson
2014-02-05  5:35       ` Michael Brand
2014-02-06 13:03         ` Michael Brand
2014-02-03  9:20 ` Bastien
2014-02-04 14:18   ` Eric Abrahamsen
2014-02-04 16:35     ` Bastien
2014-02-10  4:09       ` Eric Abrahamsen
2014-02-11  2:50         ` Steffan Iverson
2014-02-11  3:12           ` Eric Abrahamsen
2014-05-24 10:01         ` Bastien
2014-05-25  5:14           ` Eric Abrahamsen
2014-05-25  5:18             ` Bastien

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).