February 18, 2016
https://issues.dlang.org/show_bug.cgi?id=7054

--- Comment #11 from Stewart Gordon <smjg@iname.com> ---
What would supporting bidirectional text entail, exactly?  It seems to me it's the job of the terminal to render characters in the correct order....

--
February 24, 2016
https://issues.dlang.org/show_bug.cgi?id=7054

--- Comment #12 from Marco Leise <Marco.Leise@gmx.de> ---
(In reply to hsteoh from comment #10)
> Even if we concede that modern terminals ought to be Unicode-aware (if not fully supporting Unicode), there is still the slippery slope of how to print bidirectional text, vertical text, scripts that require glyph mutation, etc.. Where does one draw the line as to what writefln ought/ought not handle?

I tend to think like Steward. If I was using a script other than Latin, Cyrillic and similarly simple scripts I would most likely expect writefln's output on a terminal to look like when I print a text file of the same script to the terminal. Mixing vertical and horizontal text on a terminal is painfully hard and my expectation is that there is at most an option to render either horizontally or vertically (transposed). In that case "minimal width" would become "minimal height" and we are out of trouble.

What exactly do you mean by glyph mutation? In most cases it is probably a task
for the text layout engine the terminal uses. In other cases the user of
writefln should be aware of how their script will display on a terminal and
prepare their text accordingly before printing. There is no simple way to make
plurals work in all languages either:
http://localization-guide.readthedocs.org/en/latest/l10n/pluralforms.html
Is that comparable to what you had in mind?

--
October 15, 2016
https://issues.dlang.org/show_bug.cgi?id=7054

Andrei Alexandrescu <andrei@erdani.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Keywords|                            |bootcamp
                 CC|                            |andrei@erdani.com

--
September 07, 2017
https://issues.dlang.org/show_bug.cgi?id=7054
Issue 7054 depends on issue 13348, which changed state.

Issue 13348 Summary: std.uni.Grapheme is impure due to using C malloc and friends https://issues.dlang.org/show_bug.cgi?id=13348

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |RESOLVED
         Resolution|---                         |FIXED

--
January 08, 2018
https://issues.dlang.org/show_bug.cgi?id=7054

hsteoh@quickfur.ath.cx changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |dransic@gmail.com

--- Comment #13 from hsteoh@quickfur.ath.cx ---
*** Issue 18205 has been marked as a duplicate of this issue. ***

--
January 09, 2018
https://issues.dlang.org/show_bug.cgi?id=7054

Basile B. <b2.temp@gmx.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |b2.temp@gmx.com
            Summary|std.format.formattedWrite   |format() aligns using code
                   |uses code units count as    |units instead of graphemes
                   |width instead of characters |
                   |count                       |

--
January 09, 2018
https://issues.dlang.org/show_bug.cgi?id=7054

Basile B. <b2.temp@gmx.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Keywords|                            |pull

--- Comment #14 from Basile B. <b2.temp@gmx.com> ---
pull: https://github.com/dlang/phobos/pull/6008

--
January 13, 2018
https://issues.dlang.org/show_bug.cgi?id=7054

--- Comment #15 from github-bugzilla@puremagic.com ---
Commits pushed to master at https://github.com/dlang/phobos

https://github.com/dlang/phobos/commit/f9058bce6155b7b153c86fbeff06ba5b9ade5335 fix issue 7054 - format() aligns using code units instead of graphemes

https://github.com/dlang/phobos/commit/2c0adf01bb9c2337841b4b248f31c3f4772030db Merge pull request #6008 from BBasile/issue-18205

fix issue 7054 - format() aligns using code units instead of graphemes

--
January 13, 2018
https://issues.dlang.org/show_bug.cgi?id=7054

github-bugzilla@puremagic.com changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |RESOLVED
         Resolution|---                         |FIXED

--
January 13, 2018
https://issues.dlang.org/show_bug.cgi?id=7054

hsteoh@quickfur.ath.cx changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|RESOLVED                    |REOPENED
         Resolution|FIXED                       |---

--- Comment #16 from hsteoh@quickfur.ath.cx ---
There still remains the following cases that need to be handled:

- Zero-width characters such as U+200B should not add to the width of the string;

- Wide / Full-width characters as defined by Unicode TR11 (EastAsianWidth.txt) should occupy 2 spaces per character, as this is what is done in many monospace terminal applications;

- Hangul Jamo syllables, while correctly segmented as single graphemes by graphemeStride, are designated as wide characters, and thus should occupy 2 spaces per grapheme (note that there can be multiple dchars per Jamo grapheme).

--