After an evaluation, GNOME has moved from Bugzilla to GitLab. Learn more about GitLab.
No new issues can be reported in GNOME Bugzilla anymore.
To report an issue in a GNOME project, go to GNOME GitLab.
Do not go to GNOME Gitlab for: Bluefish, Doxygen, GnuCash, GStreamer, java-gnome, LDTP, NetworkManager, Tomboy.
Bug 584160 - (vtecomplex) use harfbuzz directly (to handle Unicode complex text rendering)
(vtecomplex)
use harfbuzz directly (to handle Unicode complex text rendering)
Status: RESOLVED OBSOLETE
Product: vte
Classification: Core
Component: general
unspecified
Other All
: Normal enhancement
: ---
Assigned To: VTE Maintainers
VTE Maintainers
: 555641 583718 606370 673601 688494 744121 757944 761511 762832 763947 767715 770117 773552 784602 (view as bug list)
Depends on:
Blocks:
 
 
Reported: 2009-05-28 21:07 UTC by Taxman
Modified: 2021-06-10 14:12 UTC
See Also:
GNOME target: ---
GNOME version: Unversioned Enhancement


Attachments
Screenshot showing the problem (33.24 KB, image/png)
2009-05-28 21:09 UTC, Taxman
  Details
Pango patch for Thai (2.24 KB, patch)
2010-01-09 01:03 UTC, Theppitak Karoonboonyanan
none Details | Review
Problem with Gnome Terminal (92.25 KB, image/png)
2010-09-23 12:25 UTC, ujjwollamichhane
  Details
Devanagari File used in Testing Gnome Terminal's Rendering (435 bytes, text/plain)
2010-09-23 12:27 UTC, ujjwollamichhane
  Details
Rendering of Devanagari script before making any changes (38.06 KB, image/png)
2011-01-07 08:51 UTC, Mihir Kulkarni
  Details
Rendering of Devanagari script after making changes to vte (44.09 KB, image/png)
2011-01-07 08:53 UTC, Mihir Kulkarni
  Details
Patch for Devanagari script rendering (6.55 KB, patch)
2011-01-07 09:39 UTC, Swapnil Kulkarni
rejected Details | Review
Image showing the Devanagari rendering in VTE (152.35 KB, image/png)
2011-06-27 11:53 UTC, Swapnil Kulkarni
  Details
Width 1: make spacing-marks actually behave like non-spacing-marks (415 bytes, patch)
2014-06-15 01:49 UTC, Egmont Koblinger
none Details | Review
Width 2: Make spacing-marks combine with the previous and form a double wide cell (2.05 KB, patch)
2014-06-15 01:50 UTC, Egmont Koblinger
none Details | Review
Render spacing marks (5.20 KB, patch)
2018-09-23 15:08 UTC, Egmont Koblinger
none Details | Review
Special treatment of Virama (3.46 KB, patch)
2018-09-23 15:29 UTC, Egmont Koblinger
rejected Details | Review
Render spacing marks, v2 (5.73 KB, patch)
2018-11-12 10:33 UTC, Egmont Koblinger
none Details | Review
Render spacing marks, v3 (4.12 KB, patch)
2018-12-11 19:15 UTC, Egmont Koblinger
none Details | Review
Render spacing marks, v4 (4.70 KB, patch)
2019-02-04 14:20 UTC, Egmont Koblinger
committed Details | Review

Description Taxman 2009-05-28 21:07:48 UTC
Please describe the problem:
When the correct Unicode text is copied from the Wikipedia edit box (Of http://en.wikipedia.org/w/index.php?title=Hindi&action=edit for example, pick the devanagari for the word Hindi) and pasted into the terminal, it gets mangled since complex text support is not respected as needed for Hindi and many other Asian languages. If I recall, previous versions of Gnome-terminal did not have this problem.

Steps to reproduce:
1. Open Gnome-terminal
2. Paste in Unicode text that needs complex text rendering
3. Text will be mangled


Actual results:
Text is mangled

Expected results:
Text would read correctly according to http://en.wikipedia.org/wiki/Complex_text_rendering rules.

Does this happen every time?
Yes

Other information:
I'll try attaching a screenshot if I can, if not I've attached one to the Ubuntu launchpad bug report
https://bugs.launchpad.net/ubuntu/+source/gnome-terminal/+bug/381429
Comment 1 Taxman 2009-05-28 21:09:21 UTC
Created attachment 135519 [details]
Screenshot showing the problem

Adding a screenshot that shows the error. The correct Unicode text is shown in the Wikipedia Window and the mangled text is shown in the gnome-terminal
Comment 2 Christian Persch 2009-05-28 21:18:31 UTC
-> vte
Comment 3 Behdad Esfahbod 2009-10-24 00:53:03 UTC
*** Bug 583718 has been marked as a duplicate of this bug. ***
Comment 4 Theppitak Karoonboonyanan 2009-12-28 13:17:09 UTC
As bug 583718 has been resolved as this bug's duplicate, can I discuss some Thai-specific solution here? Probably, similar approach is available for other scripts as well.

For Thai, as stated in bug 583718, the only case in problem is SARA AM (U+0E33), which is handled in traditional typewriters by rendering it in composed form in a separate cell. This can be achieved by hacking the Thai shaper so it does not decompose this character when the font is monospace. And I have got a patch for this, which has been applied to a customized and locally distributed version of Pango for a while.

Is similar approach possible for other complex text scripts? If so, let's discuss how traditional typewriters work for those scripts. Otherwise, and if CTL is not likely to be fully supported soon, can I reopen bug 583718 and propose the Pango patch there?

Note that partial CTL support in vte becomes a regression for Thai, compared to no support at all, where pure monospace rendering is acceptable at some degree. And the workaround is quite small.
Comment 5 Behdad Esfahbod 2010-01-08 17:55:36 UTC
*** Bug 606370 has been marked as a duplicate of this bug. ***
Comment 6 Theppitak Karoonboonyanan 2010-01-09 01:03:25 UTC
Created attachment 151075 [details] [review]
Pango patch for Thai

For discussion's sake, this is my pango workaround for Thai. It makes pango render SARA AM in its separate cell if the font is monospace. And this is how Thai traditional typewriters behave. So, it's what users expect.

How about Indic typewriters?
Comment 7 Theppitak Karoonboonyanan 2010-07-08 05:43:54 UTC
Bug 583718 reopened. I think it's not a duplicate to this bug if we choose a simple path for Thai.
Comment 8 ujjwollamichhane 2010-09-23 12:18:06 UTC
Why isn't this begin fixed ? This is an emergency.
Comment 9 ujjwollamichhane 2010-09-23 12:25:41 UTC
Created attachment 170898 [details]
Problem with Gnome Terminal

This clearly shows what is the problem.
Comment 10 ujjwollamichhane 2010-09-23 12:27:35 UTC
Created attachment 170899 [details]
Devanagari File used in Testing Gnome Terminal's Rendering

This is file used in the previous attachment.
Comment 11 ujjwollamichhane 2010-09-23 12:29:50 UTC
The status must be confirmed. I can recreate this problem. This is all in systems. This is critical.
Comment 12 Behdad Esfahbod 2010-09-23 13:59:05 UTC
Cool down...
Comment 13 ujjwollamichhane 2010-09-23 14:04:41 UTC
So, what is the problem behind this ?
It has been posted at 2009-05-28 and today it's 2010-09-23 .
Comment 14 Behdad Esfahbod 2010-09-23 14:13:58 UTC
Even if it was posted in 2001 it wouldn't have made much difference.  Complex text in terminal is a generally hard problem, and we simply have not got to fix it yet.  I have no clear idea of when it will be fixed.  Feel free to submit a patch.
Comment 15 Taxman 2010-09-24 14:14:53 UTC
And if you don't have the time or skills to fix the bug that's fine, but it still should be listed as confirmed and probably high priority.
Comment 16 ujjwollamichhane 2010-09-24 15:31:09 UTC
Ya! At least that.
Comment 17 Theppitak Karoonboonyanan 2010-09-24 15:41:11 UTC
How about starting with a survey on how traditional typewriters work for CTL scripts?
Comment 18 Christian Persch 2010-09-24 16:20:09 UTC
@Taxman, @ujjwollamichhane: Please stop spamming this bug with irrelevant comments. Comment 0 and comment 1 describe the problem sufficiently well, no more confirmation is needed at this time. For the developer's response, see comment 14. 

The fact that bug was 'unconfirmed' has no relevance; we simply don't make a difference between UNCONFIRMED and NEW bugs.

The bug priority is for the _developers_ to set; not you. If this bug is 'high priority' for _you_, consider hiring someone to work on it.
Comment 19 Theppitak Karoonboonyanan 2010-09-24 17:16:24 UTC
Anyway, please consider providing some input, such as adding some information to comment 4. Probably, such information for Indic and other CTL scripts could help shape the idea on how to solve this. I'm not a vte developer. So, that's what I can do.
Comment 20 PraveenP 2010-09-25 00:57:02 UTC
(In reply to comment #18) 
> The bug priority is for the _developers_ to set; not you. If this bug is 'high
> priority' for _you_, consider hiring someone to work on it.

I really hate this guy. Oh man, please realize that almost all non-latin script using languages are broken.
Comment 21 ujjwollamichhane 2010-09-25 04:30:44 UTC
I don't know why complex scripts don't work. I just know that it doesn't work. The only think I can say is that this is an critical issue, and why don't you use the same rendering engine for gedit uses for the gnome-terminal. Gedit renders it correct. Or that can't be done, why can't you release a different terminal will gedit's rendering engine. That's all I can say. I had been a programmer, I would really work into it.
Comment 22 Theppitak Karoonboonyanan 2010-09-25 05:37:26 UTC
(In reply to comment #21)
> I don't know why complex scripts don't work. I just know that it doesn't work.
> The only think I can say is that this is an critical issue, and why don't you
> use the same rendering engine for gedit uses for the gnome-terminal. Gedit
> renders it correct. Or that can't be done, why can't you release a different
> terminal will gedit's rendering engine. That's all I can say. I had been a
> programmer, I would really work into it.

This may be an important point why people have given few input to my comment so far.. Not a vte developer, I'll still try to clarify it as far as I know.

In Gedit, the whole text is rendered as a single unit, as it's proportional by nature. So, the rendering engine is free to interact between character cells, including reordering and composing conjuncts as required by Indic and other CTL scripts.

Terminals, on the other hand, are display grid, where individual characters are put in grid. And the grid cells are independent of one another. That's how it works from the beginning. This is fine for Latin and CJK, and probably for Thai-Lao with typewriter convention applied. But it needs a tremendous change to support complex text like Indic and Arabic, where adjacent display cells must interact with one another. So, such deep structural change is not an easy task. It even deserves a redesign.

However, as Thai has demonstrated a simple path to solve it with typewriter convention, I'm curious how much this can be applied to other CTL. For Thai, the only problem is the decomposition of SARA AM, which requires an interaction with its previous cell. But in traditional typewriters, it's just rendered undecomposed. And people are familiar with it enough to accept it. So, I wonder how much we can fall back similarly in case of Indic, as I learned that there once existed Hindi typewriters, at least.
Comment 23 ujjwollamichhane 2010-09-25 08:36:31 UTC
Ya! Hindi had typewriters but the problem is that typing sequence in typewriter is wrong according to system of writing Devanagari, it is not used nowadays. As it requires changing sequence too much it like a new layout to learn. The standard unicode input is the correct sequence of writing Devanagari. Also another thing to consider is the monospace fonts for terminal. Devanagari is written under a common line so there is nothing called mono-space fonts for Devanagari as required by terminal (If I'm sorry, somebody correct it).
Comment 24 Theppitak Karoonboonyanan 2010-09-25 15:52:08 UTC
So, Thai seems to be lucky that it doesn't have the problem with encoding order. The "logical" order for writing is the same as that for typewriters. Thus, terminal implementation for Thai is relatively straightforward.

Behdad, does this convince you to reconsider bug 583718 and treat Thai separately from CTL category?

For Indic, I'm sure the required change is quite substantial, then. Let's give up the typewriter model and continue the discussion with something more radical.
Comment 25 ujjwollamichhane 2010-09-25 16:08:52 UTC
Ya! That's nice.
There are many things to consider before coming up with something radical. As far as I know is the issue is grid-wise treatment of chars. Grid-wise treatment of chars for devanagari is impossible every glyph has different size, many may merge to become one, shifting of position is required which makes grid-wise treatment no wise for devanagari. The question comes is why, grid-wise treatment in first place ?
Devanagari is written continuously under a connected head-line. So there is way to consider for spacing between chars and putting it into grid.
Comment 26 Theppitak Karoonboonyanan 2010-09-25 16:54:20 UTC
(In reply to comment #25)
> The question comes is why, grid-wise treatment in first place ?

Because it's a "terminal emulator", that is, a program that emulates text console.

> Devanagari is written continuously under a connected head-line. So there is way
> to consider for spacing between chars and putting it into grid.

Please still consider fitting it into grid. Imagine many fullscreen text console programs that use line drawing characters to appear ugly if the co-existing Devanagari text is not monospace, for example.

Instead, imagine a VGA text console and try to place Devanagari into it. That's our task. It may not be proportionally spaced, but the top line can still be connected. And a grid cell can contain vertically stacking characters, or even a conjunct composed of multiple characters. All these considered, Devanagari can certainly be monospace.

The problem is rather at how to make computing multiple adjacent cells at a time possible, so the reordering can take place. This change alone is technically substantial enough, I think.
Comment 27 Behdad Esfahbod 2010-09-27 15:35:17 UTC
(In reply to comment #24)

> Behdad, does this convince you to reconsider bug 583718 and treat Thai
> separately from CTL category?

I'm afraid not.  I don't have any interest in maintaining a separate shaping system just for the terminal.
Comment 28 Behdad Esfahbod 2010-09-27 15:36:13 UTC
(In reply to comment #20)
> (In reply to comment #18) 
> > The bug priority is for the _developers_ to set; not you. If this bug is 'high
> > priority' for _you_, consider hiring someone to work on it.
> 
> I really hate this guy. Oh man, please realize that almost all non-latin script
> using languages are broken.

Stop your hateful behavior *now* (ie. no followup needed.).
Comment 29 Theppitak Karoonboonyanan 2010-09-27 16:24:39 UTC
(In reply to comment #27)
> (In reply to comment #24)
> 
> > Behdad, does this convince you to reconsider bug 583718 and treat Thai
> > separately from CTL category?
> 
> I'm afraid not.  I don't have any interest in maintaining a separate shaping
> system just for the terminal.

No, it's not a separate *system*. SARA AM appears to be a *special case* in many Thai implementations. This situation is well-known to Thai implementors.

Rendering it in undecomposed form is how it has been implemented since MS-DOS age. Note that this is still true in some famebuffer terminals in Linux. The decomposition has just been introduced in graphical environments, where proportional rendering is possible. Trying to follow CTL path for Thai in terminal would mean inventing a new system which never existed before. (Well, you may say such extra point is good. But all Thai users want now is just a terminal that works like others.)
Comment 30 Mihir Kulkarni 2011-01-07 08:51:55 UTC
Created attachment 177719 [details]
Rendering of Devanagari script before making any changes

This figure shows the rendering of Devanagari script on the vte terminal before making any changes to it.
Comment 31 Mihir Kulkarni 2011-01-07 08:53:50 UTC
Created attachment 177720 [details]
Rendering of Devanagari script after making changes to vte

This image shows the rendering of Devanagari script after we made some changes to the code of vte.
Comment 32 Mihir Kulkarni 2011-01-07 08:54:18 UTC
 We are 3 students from the College of Engineering, Pune working on providing support for Devanagari script on GNOME terminal. For that we have modified 3 files of vte.

 All the details of our present work can be found at:- http://indiclanguagecomputing.wordpress.com

 I am uploading the two screenshots which show the previous rendering and new rendering after we made the changes.

 There are still some issues which need to be resolved [explained on the blog].

 My colleague will attach the patches for the same.
Comment 33 Swapnil Kulkarni 2011-01-07 09:39:49 UTC
Created attachment 177729 [details] [review]
Patch for Devanagari script rendering

I am attaching the patch for rendering of Devanagari script on vte. Please review and suggest the improvements.
Comment 34 Theppitak Karoonboonyanan 2011-06-24 06:22:07 UTC
Christian Persch has changed this bug's severity from Normal to Enhancement. I'd say this is not true for Thai. For Thai, this bug is considered a *regression* from some ancient versions of VTE, where Pango shaping had not been applied at all. See bug 583718 for more info.

But if you accept that Thai should *not* be handled along with Indic scripts in this bug, but rather fixing bug 583718 instead, that's another story.
Comment 35 Behdad Esfahbod 2011-06-24 13:30:51 UTC
Coding shaping login in vte is not an option.  So all complex text is simply one request, which is hooking up harfbuzz or pango shaping into vte.
Comment 36 Theppitak Karoonboonyanan 2011-06-24 16:08:44 UTC
Yeah, but Thai used to be acceptably rendered on VTE without Pango. Just simple monospace stacking (aka charcell in XLFD term) applied elsewhere are sufficient, including xterm, emacs, or even framebuffer consoles and DOS VGA. And this had been achieved using proper monospace (charcell) fonts. No complex text handling has been required so far. Just direct imitation of traditional typewriters.

While hooking Pango helps improve the quality a little bit in some cases, it introduces a noticeable regression for Thai, which could be treated as non-CTL in text console aspect. But as Pango or Harfbuzz is to be applied, regression should be fixed, so it works the way it does everywhere else, with or without the CTL handling to be implemented, as proposed in bug 583718.
Comment 37 Theppitak Karoonboonyanan 2011-06-24 17:38:01 UTC
For clarity: my proposal is to fix Pango, not to unhook it.
Comment 38 Swapnil Kulkarni 2011-06-27 11:53:24 UTC
Created attachment 190746 [details]
Image showing the Devanagari rendering in VTE

Image shows the rendering of Devanagari script in VTE.
Comment 39 Swapnil Kulkarni 2011-06-27 11:55:23 UTC
We are trying with the same concept. Devanagari rendering is almost perfect now, but we are trying to fix other issues caused due to our changes to the code. I can fix those issues, if I get the help from the community immediately. You can see the rendering of Devanagari script in the attached file. I think the rendering of other languages can be done in similar way.
Comment 40 Christian Persch 2012-04-05 19:26:47 UTC
*** Bug 673601 has been marked as a duplicate of this bug. ***
Comment 41 Christian Persch 2012-05-29 21:31:47 UTC
Comment on attachment 177729 [details] [review]
Patch for Devanagari script rendering

Rejected as per comment 35.
Comment 42 Behdad Esfahbod 2012-08-25 20:40:25 UTC
*** Bug 583718 has been marked as a duplicate of this bug. ***
Comment 43 Behdad Esfahbod 2012-11-17 22:39:21 UTC
*** Bug 688494 has been marked as a duplicate of this bug. ***
Comment 44 Christian Persch 2014-04-27 07:53:49 UTC
*** Bug 555641 has been marked as a duplicate of this bug. ***
Comment 45 Egmont Koblinger 2014-06-12 17:13:46 UTC
See bug 535896 for relevant discussions.  Copy-pasting the most important bits:

Problems arise with Devanagari spacing-marks.  These characters extend the width of the base character (from 1 to 2) and place an accent before/after/around it.  Because of these possible different positions, the approach of storing the base character in the first cell and the accent in the second (or conditionally the other way around - ouch!) is not feasible.

I believe the right approach would be the CJK-like approach.  The base character and the vowel are combined into a vteunistr (just like with non-spacing-marks currently), and is stored in a double wide cell.  Rendering probably wouldn't be that hard, since we render correctly with non-spacing-mark accents already and we also render CJK, this would the combination of these two.  Chances are it'd work out of the box.  

The logic to combine the base char and the vowel (especially across a line
wrap) is a bit tricky, but not that hopeless.  Once they are combined, they live together forever, copy-pasting or rewrapping shouldn't separate them, the cursor over them should be double wide etc., just as with CJKs.

We'd need to study if let's say multiple spacing-marks over a base character
are allowed (I hope not!) and have corresponding safety guards.
Comment 46 Behdad Esfahbod 2014-06-12 17:42:33 UTC
(In reply to comment #45)
> See bug 535896 for relevant discussions.  Copy-pasting the most important bits:
> 
> Problems arise with Devanagari spacing-marks.  These characters extend the
> width of the base character (from 1 to 2) and place an accent
> before/after/around it.  Because of these possible different positions, the
> approach of storing the base character in the first cell and the accent in the
> second (or conditionally the other way around - ouch!) is not feasible.
> 
> I believe the right approach would be the CJK-like approach.  The base
> character and the vowel are combined into a vteunistr (just like with
> non-spacing-marks currently), and is stored in a double wide cell.  Rendering
> probably wouldn't be that hard, since we render correctly with non-spacing-mark
> accents already and we also render CJK, this would the combination of these
> two.  Chances are it'd work out of the box.  
> 
> The logic to combine the base char and the vowel (especially across a line
> wrap) is a bit tricky, but not that hopeless.  Once they are combined, they
> live together forever, copy-pasting or rewrapping shouldn't separate them, the
> cursor over them should be double wide etc., just as with CJKs.
> 
> We'd need to study if let's say multiple spacing-marks over a base character
> are allowed (I hope not!) and have corresponding safety guards.

This might work, but would essentially be a partial hack.  I think we should first switch vte to call directly into HarfBuzz instead of Pango.  At that point, there are a variety of ways to improve things, including getting rid of the dotted-circle first.
Comment 47 Egmont Koblinger 2014-06-12 17:49:28 UTC
> This might work, but would essentially be a partial hack.  I think we should
> first switch vte to call directly into HarfBuzz instead of Pango.

Would that make my suggestion unnecessary?  Would that know how to render if a cell contains a base char, and the next cell contains a vowel that should be drawn to the left of the base char?

Mouse highlight, line wrapping etc. would still remain issues.

> At that
> point, there are a variety of ways to improve things, including getting rid of
> the dotted-circle first.

Seems that these two works are (mostly) orthogonal.  My suggestion is mostly terminal logic with little bit of UI, your one is mostly UI.
Comment 48 Egmont Koblinger 2014-06-13 11:18:15 UTC
(In reply to comment #45)
> I believe the right approach would be the CJK-like approach.

I haven't tested, but I have a feeling that libraries optimizing for screen updates (e.g. ncurses) might not care about any other properties of these spacing-mark chars that they are single wide.  And if this is the case, they might update the base cell only and not the vowel, or the vowel only and not the base cell, if that's the shortest way to update the terminal's state.

So we'd need to double check that we properly split or combine these characters whenever necessary.

Splitting is already done (because of CJK), just the details would have to be modified a bit (restore the individual base char and spacing-mark, rather than replacing by spaces).

Joining is something we don't quite have.  On every character insertion, we'd need to try to join the new one with the preceding as well as with the following cell's character.  We'd need to watch out for all other cases where existing characters can become adjacent (e.g. delete-characters, anything else?).
Comment 49 Egmont Koblinger 2014-06-15 01:48:17 UTC
I've quickly prototyped up two possible patches.  Apply one or the other, but not both.

Patch #1 takes the approach that spacing marks should not extend the base character's width.  Pros/cons:

+ This is what vim (incorrectly?) expects, vim will work perfectly.
+ The text looks nice (to me).
+ The patch is complete.
- Any apps other than vim are likely to fall apart.

Patch #2 takes the approach that spacing marks should widen the base character to be double wide.  Pros/cons:

+ This is what probably all applications (except for vim) expect.
- Rendering is not that nice, there's a large visible space where two letters should not be visually separated.  I've no clue if we can modify font rendering to at least continue the horizontal line that's present in most of these glyphs.
- The patch is incomplete, there are many corner cases yet to be taken care of.

Similarly to the already existing "ambiguous width characters" option, I guess we may need to implement both behaviors, and have another config option to choose one.

At this step I'd like to request feedback from people familiar with the Devanagari script.
Comment 50 Egmont Koblinger 2014-06-15 01:49:32 UTC
Created attachment 278463 [details] [review]
Width 1: make spacing-marks actually behave like non-spacing-marks
Comment 51 Egmont Koblinger 2014-06-15 01:50:14 UTC
Created attachment 278464 [details] [review]
Width 2: Make spacing-marks combine with the previous and form a double wide cell
Comment 52 Egmont Koblinger 2014-06-15 10:51:25 UTC
Review of attachment 177729 [details] [review]:

This patch might be a nice proof-of-concept, but is very far from production quality. See individual comments for details.
The patch only handles when characters are emitted one-by-one, with no other operation in between. Care has to be taken to study the desired behavior and carefully implement this if e.g. the cursor is moved between printing a base character and a combining one, etc.
Code formatting (e.g. usage of spaces) has to follow the rest of VTE.

::: iso2022.c
@@ +390,3 @@
+	It returns 1 if found in that array,else returns 0.
+*/
+short iscomplex(gunichar c){

This name should be more specific, e.g. is_devnagari. Make the function static.

@@ +392,3 @@
+short iscomplex(gunichar c){
+	short i=0;
+	while(devnagari[i]!='\0'){

Please check if there's a glib method doing what you need (g_unichar_type, g_unichar_get_script...). If not, please start by checking upper/lower boundaries so that the most common use case (i.e. the letter is not devanagari) doesn't perform a linear search over ~20 items.

@@ +412,3 @@
+		The following condition should actually return 2 as it is ambiguous width character but just to
+		differentiate between ambiguous width character and characters in the array "devnagari" we are 
+		returning 4. Actually we have set it to 2 again when its job is done, not to affect any other

Don't misuse semantics. It's very bad coding practice if the value of width==4 means that the width is 2 and there's some other condition. Use values that have the exact semantics that their name suggests. Use more values or enums if desired.

::: vte.c
@@ +77,2 @@
+//this flag is for printing the characters with halant in devnagari.
+static short halant_flag=0;

Don't use static. An application (e.g. gnome-terminal) might have multiple vte widgets. Using static means that what happens in one of them has influence on the other. If you need to store a status, add a new field under terminal->pvt. Make sure to properly update this status on all kinds of operations (cursor moving, deletion, reset...) I think it's a better approach not to store a status anywhere but examine the contents of the preceding cells.

@@ +78,3 @@
+static short halant_flag=0;
+// this flag is for the characters which requires more space when appended to previous character.
+static short iscomplex_flag=0; 

Ditto.

@@ +3047,3 @@
 
+		/*
+			In case of halant we look behind for two characters. Halant is zero width character so

Could you please explain to me in details what the exact behavior of Halant should be? It's not clear to me from your comment, I only have a feeling that it's something more complicated than the other spacing-mark vowel signs.
Comment 53 Christian Persch 2014-06-16 12:29:40 UTC
(In reply to comment #46)
> I think we should first switch vte to call directly into HarfBuzz instead of 
> Pango. 

How will this be done, something like the cairo stuff in hb's util/ directory ?
Comment 54 Egmont Koblinger 2015-02-08 11:43:44 UTC
*** Bug 744121 has been marked as a duplicate of this bug. ***
Comment 55 Christian Persch 2015-09-14 16:18:51 UTC
Behdad: I guess you probably won't have time to work on this yourself, but if you have any thoughts, could you outline how you think using harfbuzz should work in vte, as a guideline for someone else to implement this? Thanks!
Comment 56 Christian Persch 2015-11-11 14:42:36 UTC
*** Bug 757944 has been marked as a duplicate of this bug. ***
Comment 57 Christian Persch 2016-02-29 08:57:03 UTC
*** Bug 762832 has been marked as a duplicate of this bug. ***
Comment 58 Christian Persch 2016-03-20 17:44:34 UTC
*** Bug 763947 has been marked as a duplicate of this bug. ***
Comment 59 Christian Persch 2016-05-08 08:28:33 UTC
*** Bug 761511 has been marked as a duplicate of this bug. ***
Comment 60 Christian Persch 2016-06-16 07:56:32 UTC
*** Bug 767715 has been marked as a duplicate of this bug. ***
Comment 61 Christian Persch 2016-06-18 20:09:37 UTC
*** Bug 767715 has been marked as a duplicate of this bug. ***
Comment 62 Egmont Koblinger 2016-08-18 21:33:30 UTC
*** Bug 770117 has been marked as a duplicate of this bug. ***
Comment 63 Christian Persch 2016-10-26 19:33:02 UTC
*** Bug 773552 has been marked as a duplicate of this bug. ***
Comment 65 Khaled Hosny 2017-02-20 23:47:38 UTC
If anyone is still trying to work on this, checking how mlterm is doing Arabic and Indic might be a good start (https://bitbucket.org/arakiken/mlterm), it seems to even be able to use HarfBuzz these days (and it has a vte emulation layer that was usable at some point but last time I tested it myself was a while ago).
Comment 66 Behdad Esfahbod 2017-05-04 00:47:48 UTC
(In reply to Khaled Hosny from comment #65)
> If anyone is still trying to work on this, checking how mlterm is doing
> Arabic and Indic might be a good start

Does it do Indic?!  I took a look at mlterm, looks very similar to what running bicon does, with same limitations mostly. Maybe a bit better...


> (https://bitbucket.org/arakiken/mlterm), it seems to even be able to use
> HarfBuzz these days (and it has a vte emulation layer that was usable at
> some point but last time I tested it myself was a while ago).

The HarfBuzz seems to be used in the UI toolkit only.
Comment 67 Khaled Hosny 2017-05-04 15:29:09 UTC
(In reply to Behdad Esfahbod from comment #66)
> (In reply to Khaled Hosny from comment #65)
> > If anyone is still trying to work on this, checking how mlterm is doing
> > Arabic and Indic might be a good start
> 
> Does it do Indic?!  I took a look at mlterm, looks very similar to what
> running bicon does, with same limitations mostly. Maybe a bit better...

It supports Indic text, at least according to this https://bitbucket.org/arakiken/mlterm/src/tip/doc/en/README.indic, which also suggests that HarfBuzz is used at least for Indic text.
Comment 68 Christian Persch 2017-07-06 08:03:53 UTC
*** Bug 784602 has been marked as a duplicate of this bug. ***
Comment 69 chillaranand 2017-07-06 08:43:08 UTC
Complex font is rendering correctly in konsole. Any knows how it handles this?
Comment 70 shreeshrii 2017-09-27 13:14:29 UTC
Has there been any update on this. I am also looking for a terminal which supports Indic/Devanagari.
Comment 71 Christian Persch 2017-09-27 19:27:25 UTC
There's been no further development yet, as evident from this bug report.

Apparently kde's konsole works with indic.
Comment 72 Egmont Koblinger 2017-09-27 20:05:57 UTC
(In reply to Christian Persch from comment #71)

> Apparently kde's konsole works with indic.

It might be "by accident" though :)

I'm quite certain Gtk+ and Qt can both render complex text in their regular widgets. Konsole is the only terminal emulator I've seen which doesn't render characters individually for each cell, but asks whatever font rendering engine to draw larger chunks or text. Sometimes this results in truly nasty bugs like https://bugs.kde.org/show_bug.cgi?id=379535 and a few others that I'm lazy to look up now, whereas here I suspect this generic behavior results in Indic "accidentally" working.
Comment 73 shreeshrii 2017-09-28 03:57:25 UTC
Thank you for your replies.

>I'm quite certain Gtk+ and Qt can both render complex text in their regular widgets. 

So, is it possible to use 'regular' rendering for complex scripts rather than cell based rendering, just for complex scripts/Indic.

Alternately, for Indic scripts instead of using one unicode character for each cell (I am assuming that is how cell based rendering works) use a syllable, example text 

अ हँ रु द्रे भि र्व सु भि श्च रा म्य ह मा दि त्यै

Please see http://www.typophile.com/comment/521602#comment-521602
Comment 74 shreeshrii 2017-09-28 04:27:40 UTC
The following documents maybe helpful in defining an Indic Syllable.

http://www.unicode.org/L2/L2016/16161-indic-text-seg.pdf

http://www.unicode.org/L2/L2016/16215-indic-presentation.pdf
Comment 75 Egmont Koblinger 2017-09-29 21:24:14 UTC
By the way, slightly related: do we know anything about the issue reported e.g. at https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=854149?

Even "simple" combining accents are often displayed on top of the following letter rather than the previous one. This depends on some weird combination of the base letter, the combining accent itself, and the font(!). It's definitely not an emulation but a presentational problem. It's not specific to VTE, other software such as gedit or konsole are also effected.

Whose fault is it? Will this problem remain if we switch to harfbuzz? Can we expect complex text to show up properly if this much simpler issue isn't handled correctly? Or are we okay blaming certain (quite a few) fonts and asking users to avoid them?
Comment 76 Khaled Hosny 2017-09-29 21:30:31 UTC
Gedit (and essentially any GTK application other than VTE) shouldn’t have any issue with accents and any such issue is definitely a bug (either font or software).
Comment 77 Egmont Koblinger 2017-09-29 21:35:24 UTC
<off>
Gedit can't even display the space character properly, see bug 780068. LOL.
</off>
Comment 78 Christian Persch 2017-09-29 21:52:12 UTC
(I think that's a pango and/or font bug, given that using 'pango-view --font "DejaVu Sans Mono, 10" filename' reproduces, showing a '1-2' rendering. (The - being over the 2 is then because vte renders the 2 on top of the 1- overrunning its cell.) In any case, let's discuss that in a separate bug.)
Comment 79 Michael Heyns 2018-01-14 04:24:27 UTC
This issue has been referenced here https://github.com/tonsky/FiraCode/issues/162

I couldn't figure out why all equal "=" signs are invisible in vte terminals.
Comment 80 Egmont Koblinger 2018-01-14 09:09:11 UTC
Michael, please see also bug 762832 comment 1 why the idea of using of such ligatures is theoretically somewhat problematic in terminal emulators. We could do something, it'd probably be good enough in some sense, but it would definitely look ugly at the margins, and those who care enough about ligatures probably wouldn't be happy about that.

IMHO (but this is a completely different story) instead of such ligatures, programming languages should accept fancy Unicode signs such as triple equals, does not equal etc., and text editors could help the user by replacing the ASCII sequences with the Unicode codepoint.

---

Behdad, how would Persian/Arabic/etc. shaping be influenced by line wrapping, as well as words cut in half (e.g. because they overflow from the text editor's viewport, and the terminal emulator is not aware about the rest of the word)? Would it look "good enough"?
Comment 81 Michael Heyns 2018-01-14 09:28:35 UTC
Thanks for the reference, Egmont. I've been playing with kitty over the past few hours and must say the font rendering is wonderful, especially for ligatures and icon fonts (in my case non-monospaced) used in nvim, tmux status line and vcs-info promptline. The latter of which works well in vte terminals.

Regarding line wrapping, I understand now what you mean and I am able to produce some funky results by resizing the kitty terminal window. That doesn't happen in gtksourceview or this html input form.

---

Off topic: I was just reading your insights on unrelated https://github.com/kovidgoyal/kitty/issues/160 in another tab when the inbox notification popped up. :)
Comment 82 Christian Persch 2018-02-12 15:51:15 UTC
*** Bug 793391 has been marked as a duplicate of this bug. ***
Comment 83 Sah 2018-02-28 10:34:02 UTC
Besides the invisible equal sign, I'd like to add that '>' is shown as '=>' when using FiraCode 1.205.

What amuses me a lot is that when the window of gnome-terminal loses focus, the '=>' gets extended on its left and collapses with the '$' at the end of the prompt.
Comment 84 Egmont Koblinger 2018-02-28 13:26:57 UTC
(In reply to Sah from comment #83)
> Besides the invisible equal sign, I'd like to add that '>' is shown as '=>'
> when using FiraCode 1.205.
> 
> What amuses me a lot is that when the window of gnome-terminal loses focus,
> the '=>' gets extended on its left and collapses with the '$' at the end of
> the prompt.

This one is tracked in bug 793391 and will be fixed soon.
Comment 85 Egmont Koblinger 2018-09-23 11:43:50 UTC
@Theppitak Karoonboonyanan

Many years later, is Thai SARA AM still an issue in VTE?

As far as I understand, ideally this character places a circle over the preceding character, and itself shows in its own cell looking like an "upside down J". With some of the fonts the behavior is this. One drawback is that if SARA AM is the first character in a row then the circle doesn't show up. Another drawback is that temporary visual glitches might occur e.g. when the screen is partially repainted, https://gitlab.gnome.org/GNOME/vte/issues/26 is going to (mostly) eliminate these visual glitches.

If I understand you correctly, for typewriters the alternate display is to place the circle inside SARA AM's cell, that is, on top of this "upside down J". This is well accepted, or even expected from Thai users on typewriter-like devices. Did I understand this correctly? With some other fonts this is the behavior I get. This behavior is more robust when a line happens to break just before the SARA AM.

Users can pick a font according to their preferred behavior between these two.

None of the fonts I could try displayed a dotted circle (bug 583718) for me, so I suspect this has been fixed in fonts or in pango through the last couple of years.

Is there anything right now that VTE could do to fix/improve around SARA AM?

For Devanagari spacing makrs we'll probably have to implement a change to the emulation layer. When the cursor is just about to wrap to the next line, a freshly received spacing mark will grab the previous base character and move it to the next line, so that they stick together. Do you think this would be the desired behavior with SARA AM too, so that it's guaranteed to be on the same line as its preceding character?
Comment 86 Egmont Koblinger 2018-09-23 15:08:17 UTC
Created attachment 373741 [details] [review]
Render spacing marks

This patch makes VTE render spacing marks along with the previous character, thus fixing the most annoying rendering issue with Devanagari: the dotted circles. I believe Devanagari text becomes significantly more readable with this patch, although I cannot read this script so I cannot tell for sure.

The patch goes on top of these two patches from https://gitlab.gnome.org/GNOME/vte/issues/26:
- vte-26-draw_rows-v4.patch
- vte-26-invalidate_rows-v1.patch

Known bugs, limitations:

- Dotted circle still might appear under or next to the cursor, if block cursor shape is used. A workaround is to use underline or i-beam cursor shape.

- Probably the result is far from ideal when a spacing mark wraps to the next line while its base character is still in the previous one. I think it should be fixed in the emulation logic (a wrapping spacing mark should grab the previous base character to the beginning of the new line), and not in the displaying part. I'm planning to do it shortly.

- No special support for Virama a.k.a. Halant (yet).

- Each character still goes into its desired cell, or pair of cell in case of base character + spacing mark. As a result, there's more whitespace between letters than desired. (Can we blame the fonts here? Is there a monospace font for Devanagari, obeying the logical width specified in Unicode?) Truly beautiful rendering would require breaking out of the grid, I'm not sure how that'll work out. We'll see when we begin porting to Harfbuzz.

- No sign of harfbuzz yet.
Comment 87 Egmont Koblinger 2018-09-23 15:29:45 UTC
Created attachment 373742 [details] [review]
Special treatment of Virama

On top of the previous patch, this one adds special treatment for Virama/Halant.

Readers of Devanagari scripts: Feedback welcome, for the previous patch only, as well as the previous + this patch. Thanks in advance!

By the way, what's the ideal rendering when a word is wrapped at a Virama? Also, do we need to handle three or more letters joined by Viramas?
Comment 88 Egmont Koblinger 2018-09-23 15:45:50 UTC
(In reply to Wesley Moore from comment #64)

> FYI I put a [...] bounty on this bug

Wesley, and the two other backers at this moment: This is very kind of you, highly appreciated!

Could you please clarify: What are the acceptance criteria? This bug is becoming a mixture of multiple issues. E.g. the original summary of the bug didn't mention harfbuzz, it was added later (but was already there by the time you put this bounty).

Does it necessarily have to be harfbuzz, or are you okay with anything else that's "reasonably good"?

I'm planning to significantly improve on the current situtation for the next stable release 0.56, including BiDi support, some basic Arabic shaping, and the aforementioned Devaganari dotted circle issues.

I'll also take a look at harfbuzz, I might add support at a later step (maybe still in time for 0.56, or one or two cycles later), but at this early stage I cannot foresee how that can play along with the strict grid nature of terminal emulators. I don't want to do what Konsole does where columns just get totally misaligned. Nice rendering is an important goal, but I don't think we should sacrifice proper alignment for that. We'll see... :)
Comment 89 Behdad Esfahbod 2018-09-23 18:30:26 UTC
I'm.. not excited about adding rendering hacks in vte ;).  I know you wrote to me re harfbuzz.  I'll reply to your messages this week.
Comment 90 Egmont Koblinger 2018-09-23 20:52:54 UTC
I think rendering spacing marks together with their base character (the first patch), rather than on their own resulting in dotted circles, should be perfectly okay and reasonable until we have something even better in place (e.g. harfbuzz).

The Virama hack... I'm not excited about that one either ;)
Comment 91 Egmont Koblinger 2018-09-24 10:55:20 UTC
In two recent comments I menioned I'd probably modify the emulation behavior so that a wrapping spacing mark grabs the preceding base letter into the new row.

I'm no longer sure about this. This would most likely break apps that rely on exact cursor tracking, and in the same time do soft breaks at end of lines. Examples include bash/readline, zsh, probably any other modern shell, less in folding mode, and maybe more.

These apps would need to be adjusted, causing them to break in terminal emulators that don't support this new method of wrapping. We could introduce a new escape sequence to choose between the two behaviors, but probably no one would care enough to properly toggle it.

Another slight inconsistency with the proposed wrapping behavior is that it's unreasonable and expensive (and prone to further breakage) to unwrap (move the base letter back to the previous line and rearrange the rest) any time the spacing mark disappears (e.g. is overridden by a normal letter). (That disappearing spacing mark might not even be the last character of that paragraph at that time, it could be in any earlier line inside a long paragraph.) However, rewrapping on a back-and-forth resize would snap it back. This is not strictly speaking a bug or a problem, but a sign of poor design.

At this moment I have no idea how to handle this case of a wrapping spacing mark. Let's postpone this for a while.
Comment 92 Wesley Moore 2018-09-25 06:02:56 UTC
(In reply to Egmont Koblinger from comment #88)
> 
> Wesley, and the two other backers at this moment: This is very kind of you,
> highly appreciated!
> 
> Could you please clarify: What are the acceptance criteria? This bug is
> becoming a mixture of multiple issues. E.g. the original summary of the bug
> didn't mention harfbuzz, it was added later (but was already there by the
> time you put this bounty).
> 
> Does it necessarily have to be harfbuzz, or are you okay with anything else
> that's "reasonably good"?

For me the underlying motivation was better general support for ligatures in VTE so that I could potentially use a font with ligatures (PragmataPro). I'm not fussed by the particular approach. In the end, I think if this bug was closed with a result that solved the issue reported in the first comment then I'd pay out the bounty.
Comment 93 Egmont Koblinger 2018-11-12 10:33:21 UTC
Created attachment 374146 [details] [review]
Render spacing marks, v2

Updated to apply on top of current master.

Do render a standalone spacing mark in the first column, rather than skipping it.
Comment 94 Christian Persch 2018-11-25 23:39:53 UTC
The unistr functions look ok.

-#define VTE_ATTR_BOLD_SHIFT            (VTE_ATTR_FRAGMENT_SHIFT + VTE_ATTR_FRAGMENT_BITS)
+#define VTE_ATTR_SPACING_MARK_SHIFT    (VTE_ATTR_FRAGMENT_SHIFT + VTE_ATTR_FRAGMENT_BITS)

I'd add that at the end (after INVISIBLE, with a comment separating it from the others) since this is just a cached value derived from the cell's character, not an independent attribute.

+                         * Skip spacing mark cell (it's combined with the preceding regular one) except in the first column. */

For the first column, could just put the mark on a U+00A0 (NBSP) instead of treating this differently here?

Actually I don't see why we don't just combine the mark with the preceding character always just like for non-spacing marks, and then we don't need the ismark() except when inserting the character?
Comment 95 Egmont Koblinger 2018-11-26 09:45:25 UTC
(In reply to Christian Persch from comment #94)

> -#define VTE_ATTR_BOLD_SHIFT            (VTE_ATTR_FRAGMENT_SHIFT +
> VTE_ATTR_FRAGMENT_BITS)
> +#define VTE_ATTR_SPACING_MARK_SHIFT    (VTE_ATTR_FRAGMENT_SHIFT +
> VTE_ATTR_FRAGMENT_BITS)
> 
> I'd add that at the end (after INVISIBLE, with a comment separating it from
> the others) since this is just a cached value derived from the cell's
> character, not an independent attribute.

Actually, I can't recall why I added this bit for the cached value, rather than calling g_unichar_ismark() directly from draw_rows().

One reason could have been the case if we ever introduce a way (API or esc seq) of modifying the set of spacing marks, similarly to the ambiguous width one; in that case the property as of the time the character was emitted should be relevant. But I don't see a use case for introducing such a feature (at least not within the case of such characters already occupying a separate cell).

Another reason could be some tiny speedup when the emulation (e.g. rewrap on resize) cares about this, but it doesn't, see below.

Caching is a tiny bit faster during regular usage of the terminal, not caching is a tiny bit faster if tons of data is produced that don't ever make it into rendered glyphs.

Without doing any measurements, I have the feeling that the difference is so tiny that it's not worth it to make extra rounds. That is, I'm tempted to remove this caching, and call g_unichar_ismark() right from draw_rows().

> For the first column, could just put the mark on a U+00A0 (NBSP) instead of
> treating this differently here?

This is an excellent idea! (I'm wondering why it doesn't work with a regular space; nevermind.) This avoids displaying the "dotted circle" placeholder.

There is one trick, though. Most of the combining marks are applied in the regular order (to the right of the base glyph), a few are applied in front of it, or perhaps have other tricks. With the typical case in mind, if the spacing mark is logically in (0-based) column 0, it would show up in column 1 (over whichever letter is there). So maybe the best behaivor would be to display this combined glyph beginning at offscreen column -1. That way the space goes to column -1 and the accent goes to column 0. (This wouldn't be that great for "swapped" marks, though, but probably we can live with that.)

I'll experiment with this.

> Actually I don't see why we don't just combine the mark with the preceding
> character always just like for non-spacing marks, and then we don't need the
> ismark() except when inserting the character?

So, there's basically two possible approaches I can think of for handling spacing marks: to do in the emulation layer, or in the display layer. I pondered about these in comments 45-48-ish.

I ended up dropping the idea of doing it in the emulation layer. There are so many crazy corner cases that it's almost impossible to get it right:

- Screen drawing libraries probably don't distinguish spacing marks from regular letters, and they might only overwrite the ones that actually changed. Unlike with CJK where overwriting one half might wipe out the other, here it would be important to preserve the other half (split the joined character).

- It's possible that multiple consecutive cells contain spacing marks. Even updating "normal" real-life text might temporarily introduce one, e.g. currently columns 10-11 contain a letter + spacing mark, the desired update is that columns 9-10 will contain a letter + spacing mark; during emitting the update there's a moment when column 9-10-11 contain a letter + 2 spacing marks. Maliciously crafted output can generate even more, can split a longer run of spacing marks in two, or can join two existing runs of spacing marks. Handling all these cases correctly, especially with our vteunistr model, sounds like a nightmare.

- We'd need to implement the case of an arriving spacing mark retroactively dragging the preceding character into the next line (which we'll have to do with VS16 anyway) – or even dragging the preceding character + its already present several spacing marks?

So I decided to leave the emulation layer unchanged, and handle these on the display layer.

This might not be that ideal when such a combo happens to cross the line boundary. For that use case, the other model would probably be better (but then again, how far would we go with this? Would we also recognize ZWJ, Virama/Halant etc.?)

The current code doesn't handle such cases that well, although with your U+00A0 trick it would probably be reasonably good, and we can always iterate if the need arises. We could improve the code to look for such combos (as well as standard ligatures of Firacode and such) across linebreaks, and let's say split the glyph in two. This should probably be considered if/whenever we switch to harfbuzz.

Does this make sense?
Comment 96 Khaled Hosny 2018-11-26 16:36:35 UTC
The use of the term “spacing mark” in this discussion is rather confusing, spacing marks are marks that standalone like an other letter and do not combine with preceding characters, like `, on the other hand NON-spacing marks are the one that combine with preceding characters and usually have zero-width.
Comment 97 Egmont Koblinger 2018-11-27 10:15:34 UTC
We're talking about the "Mark, spacing combining" [Mc] category of Unicode (see e.g. https://www.unicode.org/versions/Unicode11.0.0/ch04.pdf chapter 4.5), that is, combining characters that have a width of their own (wcwidth() returns 1), thus combine with the base character and extend their width.

The loose wording of "spacing mark" is also seen in some official Unicode docs (e.g. in http://unicode.org/glossary/), and is used by glib too (https://developer.gnome.org/glib/stable/glib-Unicode-Manipulation.html#GUnicodeType).

I haven't seen ` and friends being being referred to as "spacing marks", they are "punctuation" or "symbol" characters.
Comment 98 Egmont Koblinger 2018-12-11 19:15:34 UTC
Created attachment 374174 [details] [review]
Render spacing marks, v3

This patch removes the caching of the spacing_mark attribute.

I'm still about to implement the NBSP trick.
Comment 99 Egmont Koblinger 2019-01-29 11:14:27 UTC
FYI:

BiDi support (including Arabic shaping) is being worked on at https://gitlab.gnome.org/GNOME/vte/issues/53.
Comment 100 Egmont Koblinger 2019-02-04 14:20:28 UTC
Created attachment 374190 [details] [review]
Render spacing marks, v4

The NSBP trick implemented.

Luckily, the code ended up much simpler than I had hoped for :)

It's still not drawn correctly when the rectangle cursor is over one of such two cells (especially the spacing mark). It'll require heavy reworking of how we paint the cursor, so I'd defer it to some undefined point in the future. Until then, other cursor shapes are a good workaround.
Comment 101 Egmont Koblinger 2019-02-04 22:12:36 UTC
"Render spacing marks, v4" committed to master (0-55).
Comment 102 j-tull 2019-08-12 08:24:27 UTC
well, this need was submitted more than 10 years ago and yet vte still is not supporting fonts with ligatures. It should also be noted that some solutions have been submitted long time ago. Sounds like a joke!
Comment 103 Christian Persch 2019-08-12 09:04:43 UTC
That comment added nothing to this bug; please refrain from commenting further. See https://bugzilla.mozilla.org/page.cgi?id=etiquette.html for bugzilla etiquette.
Comment 104 GNOME Infrastructure Team 2021-06-10 14:12:34 UTC
-- GitLab Migration Automatic Message --

This bug has been migrated to GNOME's GitLab instance and has been closed from further activity.

You can subscribe and participate further through the new bug through this link to our GitLab instance: https://gitlab.gnome.org/GNOME/vte/-/issues/1661.