-1

I am using Ubuntu 18.04.2 LTS and with GNOME Terminal 3.28.2 I type the following command:

echo -e "\u0928\u094d\u0928"

The output should consist in two Devengari glyphs (ligature): न्न . Instead, what I got is a composition of three glyphs, combination of \u0928\u094d (न्) and the last one \u0928 ().

This is my locale output:

LANG=en_US.UTF-8
LANGUAGE=en_US
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC=pl_PL.UTF-8
LC_TIME=pl_PL.UTF-8
LC_COLLATE="en_US.UTF-8"
LC_MONETARY=pl_PL.UTF-8
LC_MESSAGES="en_US.UTF-8"
LC_PAPER=pl_PL.UTF-8
LC_NAME=pl_PL.UTF-8
LC_ADDRESS=pl_PL.UTF-8
LC_TELEPHONE=pl_PL.UTF-8
LC_MEASUREMENT=pl_PL.UTF-8
LC_IDENTIFICATION=pl_PL.UTF-8
LC_ALL=  

Why I can not properly represent that ligature? Should I have to point to a specific font family ?

I have also tried the same with a simple C++ program:

#include <iostream>
#include <string>

int main()
{
    std::string hindi = "न्न";

    std::cout << hindi << std::endl;    
    return 0;
    }

Also in this case, the output is the same (wrong) three glyph concatenation on the shell. I am wondering if the font render engine of the terminal is causing this problem rather than C++ or echo.

1 Answers1

0

It looks like the unicode characters being outputted are correct in these cases. It could be that the ligature tables necessary for this glyph aren't supported by your terminal (even if the font does support them). Are you able to try another terminal with better ligature support? It looks like someone had some success with Kitty

Jack Humbert
  • 129
  • 2
  • 9