Broken conjunct letters fonts in Bengali

I recently installed NixOS, and I need support for the Bengali language. Its conjunct letters are broken. I’ve tried installing “Noto,” but that doesn’t fix the problem.

For example:

5843tatop4zd1

this text above is showing like this:

nutfrzg2q4zd1

As you can see some of the conjunct letters are broken.

I need support for this.

Here are some additional things if you need:

configuration.nix file:

{ config, pkgs, ... }:

{
  imports =
    [ 
      ./hardware-configuration.nix
    ];

  # Bootloader.
  boot.loader.grub.enable = true;
  boot.loader.grub.device = "/dev/sda";
  boot.loader.grub.useOSProber = true;

  networking.hostName = "nixos"; # Define your hostname.
  networking.networkmanager.enable = true;

  # Set time zone
  time.timeZone = "Asia/Dhaka";

  # Set locale
  i18n.defaultLocale = "en_US.UTF-8";
  i18n.extraLocaleSettings = {
    LC_ADDRESS = "en_US.UTF-8";
    LC_IDENTIFICATION = "en_US.UTF-8";
    LC_MEASUREMENT = "en_US.UTF-8";
    LC_MONETARY = "en_US.UTF-8";
    LC_NAME = "en_US.UTF-8";
    LC_NUMERIC = "en_US.UTF-8";
    LC_PAPER = "en_US.UTF-8";
    LC_TELEPHONE = "en_US.UTF-8";
    LC_TIME = "en_US.UTF-8";
  };
  # Enable X11 and GNOME
  services.xserver.enable = true;
  services.xserver.displayManager.gdm.enable = true;
  services.xserver.desktopManager.gnome.enable = true;
  services.xserver.xkb = {
    layout = "us";
    variant = "";
  };

  # Enable printing
  services.printing.enable = true;

  # Enable pipewire sound support
  hardware.pulseaudio.enable = false;
  security.rtkit.enable = true;
  services.pipewire = {
    enable = true;
    alsa.enable = true;
    alsa.support32Bit = true;
    pulse.enable = true;
  };

  # User configuration
  users.users.sazid = {
    isNormalUser = true;
    description = "Muhammed Sazid Ul Bari";
    extraGroups = [ "networkmanager" "wheel" ];
    packages = with pkgs; [
      # Add any other packages you want for the user here
    ];
  };

  # Auto-login
  services.xserver.displayManager.autoLogin.enable = true;
  services.xserver.displayManager.autoLogin.user = "sazid";

  # Workaround for GNOME autologin
  systemd.services."getty@tty1".enable = false;
  systemd.services."autovt@tty1".enable = false;

  # Allow unfree packages
  nixpkgs.config.allowUnfree = true;

  # Install required packages
  environment.systemPackages = with pkgs; [
    wget
    vscode
    google-chrome
    discord
    gnome.gnome-tweaks
    papirus-icon-theme
    numix-icon-theme
    vlc
    obs-studio
    python3
    nodejs
    zoom-us
    git
    inkscape
    gimp
    neofetch
    gnome.dconf-editor
    gnome.gnome-shell-extensions
    tree
    wayfarer
    pnpm_8
    glibcLocales
    locale
    iconv
    ibus
  ];
  fonts.packages = with pkgs; [
    noto-fonts
    noto-fonts-cjk
    noto-fonts-emoji
    liberation_ttf
    fira-code
    fira-code-symbols
    mplus-outline-fonts.githubRelease
    dina-font
    proggyfonts
  ];
  # Some services
  # services.openssh.enable = true; # Uncomment if you need OpenSSH

  # Set state version
  system.stateVersion = "24.05"; # Keep this as is
}

Thanks

What app is it broken in?

Hi, this is not app-specific. Wherever there is Bengali text, it’s disjointed, for example, in the Chrome browser. I have further investigated this problem and figured out that my system is not using the correct Bengali font. But I don’t know how to change it. Any help with that?

Judging from the problem description I am not really sure if you have the right fonts installed. Do you know which ones you need?

The problem was that the system used DejaVu fonts, which don’t fully support Bengali fonts. I downloaded GNOME tweaks and set the fonts to "Noto Serif Bengali 12, " which fixed the problem. I appreciate your reply. Thanks

1 Like