Subject: 28.1.50; Unable to form Brahmi conjuncts in Emacs

From: Sameer Singh <[email-masked]>
Date: Wed, 13 Apr 2022 16:25:41 +0530

Brahmi just like any other Indic script also has the ability to form
conjuncts, but despite using "Segoe UI Historic" font which supports Brahmi
Conjuncts, Emacs is not able to display them.
Steps to Reproduce:
1. Add "(set-fontset-font t 'brahmi (font-spec :family "Segoe UI
Historic"))" to init.el

2. In the scratch buffer type any combination of brahmi
consonant+virama+consonant. e.g. 𑀓𑁆𑀯 𑀜𑁆𑀚 𑀝𑁆𑀞 𑀭𑁆𑀓𑁆𑀭𑁆𑀢 𑀳𑁆𑀮
𑀗𑁆𑀓𑁆𑀢

3. Instead of forming a conjunct they appear separately.
It is as if devanagari स्म is displayed as स्‌म

I have attached the correct render from "hb-view" in the file
"hb-brahmi.png" and the incorrect render from emacs in the file
"emacs-brahmi.png"
Note: "Noto Sans Brahmi" has negligible amount of brahmi conjuncts so it
will be preferable to use "Segoe UI Historic"

In GNU Emacs 28.1.50 (build 1, x86_64-pc-linux-gnu, GTK+ Version 3.24.33,
cairo version 1.17.6)
 of 2022-04-12 built on a0567577fe19
Repository revision: 322091604b73bf6ef8ca2458a97df41de600dc42
Repository branch: pgtk-nativecomp
Windowing system distributor 'System Description: Arch Linux

Configured using:
 'configure --prefix=/usr --sysconfdir=/etc --libexecdir=/usr/lib
 --localstatedir=/var --mandir=/usr/share/man --with-gameuser=:games
 --with-sound=alsa --with-modules --with-x-toolkit=gtk3 --with-cairo
 --with-xwidgets --with-native-compilation --with-pgtk
 --without-compress-install --without-gconf --without-gsettings
 --without-m17n-flt --enable-autodepend --enable-link-time-optimization
 'CFLAGS=-march=x86-64 -mtune=generic -O2 -pipe -fno-plt -fexceptions
 -Wp,-D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security
 -fstack-clash-protection -fcf-protection -g -flto'
 LDFLAGS=-Wl,-O1,--sort-common,--as-needed,-z,relro,-z,now'

Configured features:
ACL CAIRO DBUS FREETYPE GIF GLIB GMP GNUTLS GPM HARFBUZZ JPEG JSON LCMS2
LIBOTF LIBSYSTEMD LIBXML2 MODULES NATIVE_COMP NOTIFY INOTIFY PDUMPER
PGTK PNG RSVG SECCOMP SOUND THREADS TIFF TOOLKIT_SCROLL_BARS XIM
XWIDGETS GTK3 ZLIB

Important settings:
  value of $LANG: hi_IN.UTF-8
  value of $XMODIFIERS: @im=ibus
  locale-coding-system: utf-8-unix

Major mode: Lisp Interaction

Minor modes in effect:
  text-scale-mode: t
  tooltip-mode: t
  global-eldoc-mode: t
  eldoc-mode: t
  show-paren-mode: t
  electric-indent-mode: t
  mouse-wheel-mode: t
  tool-bar-mode: t
  menu-bar-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  blink-cursor-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t
  line-number-mode: t
  indent-tabs-mode: t
  transient-mark-mode: t

Load-path shadows:
None found.

Features:
(shadow sort mail-extr emacsbug message rmc puny dired dired-loaddefs
rfc822 mml mml-sec epa derived epg rfc6068 epg-config gnus-util rmail
rmail-loaddefs auth-source cl-seq eieio eieio-core cl-macs
eieio-loaddefs password-cache json map text-property-search seq byte-opt
gv bytecomp byte-compile cconv mm-decode mm-bodies mm-encode mail-parse
rfc2231 mailabbrev gmm-utils mailheader sendmail rfc2047 rfc2045
ietf-drums mm-util mail-prsvr mail-utils time-date subr-x cl-loaddefs
cl-lib face-remap iso-transl tooltip eldoc paren electric uniquify
ediff-hook vc-hooks lisp-float-type elisp-mode mwheel term/pgtk-win
pgtk-win term/common-win tool-bar dnd fontset image regexp-opt fringe
tabulated-list replace newcomment text-mode lisp-mode prog-mode register
page tab-bar menu-bar rfn-eshadow isearch easymenu timer select
scroll-bar mouse jit-lock font-lock syntax font-core term/tty-colors
frame minibuffer cl-generic cham georgian utf-8-lang misc-lang
vietnamese tibetan thai tai-viet lao korean japanese eucjp-ms cp51932
hebrew greek romanian slovak czech european ethiopic indian cyrillic
chinese composite emoji-zwj charscript charprop case-table epa-hook
jka-cmpr-hook help simple abbrev obarray cl-preloaded nadvice button
loaddefs faces cus-face macroexp files window text-properties overlay
sha1 md5 base64 format env code-pages mule custom widget
hashtable-print-readable backquote threads xwidget-internal dbusbind
inotify dynamic-setting font-render-setting cairo move-toolbar gtk
x-toolkit pgtk lcms2 multi-tty make-network-process native-compile
emacs)

Memory information:
((conses 16 71882 7789)
 (symbols 48 6679 0)
 (strings 32 19692 1760)
 (string-bytes 1 653683)
 (vectors 16 14235)
 (vector-slots 8 304684 17309)
 (floats 8 28 45)
 (intervals 56 397 0)
 (buffers 992 12))