all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: Eric Abrahamsen <eric@ericabrahamsen.net>
To: emacs-orgmode@gnu.org
Subject: Re: double-width characters in tables
Date: Wed, 13 Feb 2013 09:46:15 +0800	[thread overview]
Message-ID: <87a9r93s0o.fsf@ericabrahamsen.net> (raw)
In-Reply-To: 877gmdcqzd.fsf@Rainer.invalid

Achim Gratz <Stromeko@nexgo.de> writes:

> Eric Abrahamsen writes:
>> Yes, org-string-width eventually calls string-width, so that behaves
>> "correctly" as far as it goes, but unfortunately that's not where the
>> value in the text properties comes from...
>>
>> 《蛙》
>> 123456
>>
>> Doesn't that line up for you? Those bracket characters come with their
>> own "whitespace", maybe this is clearer:
>>
>> 正能量
>> 123456
>>
>> One Chinese character should definitely take up two screen columns.
>
> That's a function of the font that is ultimately used and their
> run-length.  Since you are unlikely to use a font that has _all_ those
> glyphs, eventually the ones that are missing in your specified font will
> be replaced with the glyph corresponding to the same codepoint in a
> different font if it exists or possibly a composition of multiple glyphs
> (if not you'll get a placeholder).

Thanks for all the responses here! Obviously the question is more
complicated than I thought. Chinese fonts are fixed-width by default, so
I assumed things would line up with a fixed-width latin font, though
clearly I wasn't thinking hard enough about typefaces and their
different widths/sizes. It's obvious from the screenshots that
everyone's got a little something different going on.

Takaaki's unicode WHITE CIRCLE is weird -- it's classified as CJK, but
Chinese characters are usually named CJK IDEOGRAPH BLAH, and this isn't.
It's displayed using a Chinese font on my machine, making it
double-width, but sure enough `string-width' returns 1. I actually have
the same problem with EM DASH here -- Inconsolata doesn't have that
glyph, so a Chinese font is substituted, and I get a double-width
character that reports its width as 1.

Anyhoo... I still think the original problem is valid: strings in table
fields should be measured with `string-width', not `length'. It might
not be perfect, but surely it would be better than the present
situation?

On second thought I don't think it's a problem with text properties.
(add-text-properties 0 6 '() "正能量") gives an Args out of range error,
and it probably should, since all it cares about is the number of
characters in the string.

Solving the problem then might mean just using `org-string-width'
directly in the code, in the places where string width is currently
calculated from text property values. I'll poke at it, and see how badly
I break it.

Thanks again,
Eric

  reply	other threads:[~2013-02-13  1:41 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-02-12 10:56 double-width characters in tables Eric Abrahamsen
2013-02-12 11:02 ` Jambunathan K
2013-02-12 11:22   ` Bastien
2013-02-12 11:16 ` Bastien
2013-02-12 15:43   ` Eric Abrahamsen
2013-02-12 15:50     ` Nick Dokos
2013-02-12 15:55     ` Bastien
2013-02-12 17:55       ` Takaaki ISHIKAWA
2013-02-12 18:43     ` Achim Gratz
2013-02-13  1:46       ` Eric Abrahamsen [this message]
2013-02-13  2:23         ` [PATCH] " Eric Abrahamsen
2013-02-13 11:42           ` Bastien
2013-02-13 13:18             ` Eric Abrahamsen
2013-02-13  8:50         ` Eric Abrahamsen
2013-02-13 11:31         ` Bastien

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=87a9r93s0o.fsf@ericabrahamsen.net \
    --to=eric@ericabrahamsen.net \
    --cc=emacs-orgmode@gnu.org \
    /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
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this external index

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

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.