* bug#50951: 28.0.50; Urdu text is not displayed correctly @ 2021-10-01 20:11 Rah Guzar 2021-10-02 6:07 ` Eli Zaretskii 0 siblings, 1 reply; 44+ messages in thread From: Rah Guzar @ 2021-10-01 20:11 UTC (permalink / raw) To: 50951 [-- Attachment #1.1: Type: text/plain, Size: 30865 bytes --] Starting with 'emacs -Q' and using the menu bar to paste urdu text حرف نہیں جاں بخشی میں اس کی خوبی اپنی قسمت کی ہم سے جو پہلے کہہ بھیجا سو مرنے کا پیغام کیا the text is not rendered properly, some characters which should be joined together are instead rendered individually. It look like this [image: 2021-10-01T21:43:10,566697499+02:00.png] [image: 2021-10-01T21:49:10,611532571+02:00.png] Changing the font to a Nastaliq font more common for Urdu via (set-fontset-font t 'arabic (font-spec :family "NotoNastaliqUrdu")) the text is again rendered improperly but in a different way with chracters overlapping each other when they shouldn't, others have gaps where they should be joined. It looks like this [image: 2021-10-01T22:02:00,166113989+02:00.png] while it should look like this [image: 2021-10-01T22:05:28,910692941+02:00.png] In GNU Emacs 28.0.50 (build 1, x86_64-suse-linux-gnu, GTK+ Version 3.24.30, cairo version 1.16.0) of 2021-09-29 built on goat11 Windowing system distributor 'System Description: openSUSE Tumbleweed Configured using: 'configure --host=x86_64-suse-linux-gnu --build=x86_64-suse-linux-gnu --program-prefix= --disable-dependency-tracking --prefix=/usr --exec-prefix=/usr --bindir=/usr/bin --sbindir=/usr/sbin --sysconfdir=/etc --datadir=/usr/share --includedir=/usr/include --libdir=/usr/lib64 --libexecdir=/usr/libexec --localstatedir=/var --sharedstatedir=/var/lib --mandir=/usr/share/man --infodir=/usr/share/info --disable-dependency-tracking --with-pgtk --with-native-compilation --with-cairo --with-libotf --with-jpeg --with-tiff --with-gif --with-png --with-rsvg --with-xft --with-dbus --with-sound --with-xwidgets --enable-locallisppath=/usr/share/emacs/28.0.50/site-lisp:/usr/share/emacs/site-lisp 'CFLAGS=-O2 -Wall -D_FORTIFY_SOURCE=2 -fstack-protector-strong -funwind-tables -fasynchronous-unwind-tables -fstack-clash-protection -Werror=return-type -flto=auto -g' LDFLAGS=-Wl,-O2' Configured features: CAIRO DBUS FREETYPE GIF GLIB GMP GNUTLS GSETTINGS HARFBUZZ JPEG JSON LIBOTF LIBSELINUX 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: en_US.UTF-8 locale-coding-system: utf-8-unix Major mode: DOOM v3.0.0-alpha Minor modes in effect: diff-hl-margin-mode: t delete-selection-mode: t TeX-PDF-mode: t TeX-source-correlate-mode: t global-evil-surround-mode: t evil-surround-mode: t eros-mode: t projectile-mode: t solaire-global-mode: t solaire-mode: t global-git-commit-mode: t yas-global-mode: t yas-minor-mode: t which-key-mode: t savehist-mode: t better-jumper-mode: t better-jumper-local-mode: t global-company-mode: t company-mode: t vertico-mode: t marginalia-mode: t evil-goggles-mode: t evil-escape-mode: t evil-snipe-override-mode: t evil-snipe-mode: t evil-snipe-override-local-mode: t evil-snipe-local-mode: t recentf-mode: t save-place-mode: t global-so-long-mode: t gcmh-mode: t global-hl-line-mode: t hl-line-mode: t winner-mode: t show-paren-mode: t smartparens-global-mode: t ws-butler-global-mode: t global-undo-fu-session-mode: t undo-fu-mode: t global-flycheck-mode: t persp-mode: t shell-dirtrack-mode: t evil-mode: t evil-local-mode: t windmove-mode: t +popup-mode: t +modeline-global-mode: t +modeline-mode: t general-override-mode: t global-eldoc-mode: t mouse-wheel-mode: t file-name-shadow-mode: t global-font-lock-mode: t font-lock-mode: t window-divider-mode: t auto-composition-mode: t auto-encryption-mode: t auto-compression-mode: t buffer-read-only: t size-indication-mode: t line-number-mode: t transient-mark-mode: t Load-path shadows: /home/azeem/.emacs.d/.local/straight/build-28.0.50/org-contrib/ox-koma-letter hides /home/azeem/.emacs.d/.local/straight/build-28.0.50/org/ox-koma-letter /home/azeem/.emacs.d/.local/straight/build-28.0.50/use-package/use-package hides /home/azeem/.emacs.d/.local/straight/repos/use-package/use-package /home/azeem/.emacs.d/.local/straight/build-28.0.50/use-package/use-package-lint hides /home/azeem/.emacs.d/.local/straight/repos/use-package/use-package-lint /home/azeem/.emacs.d/.local/straight/build-28.0.50/use-package/use-package-jump hides /home/azeem/.emacs.d/.local/straight/repos/use-package/use-package-jump /home/azeem/.emacs.d/.local/straight/build-28.0.50/use-package/use-package-ensure hides /home/azeem/.emacs.d/.local/straight/repos/use-package/use-package-ensure /home/azeem/.emacs.d/.local/straight/build-28.0.50/use-package/use-package-diminish hides /home/azeem/.emacs.d/.local/straight/repos/use-package/use-package-diminish /home/azeem/.emacs.d/.local/straight/build-28.0.50/use-package/use-package-delight hides /home/azeem/.emacs.d/.local/straight/repos/use-package/use-package-delight /home/azeem/.emacs.d/.local/straight/build-28.0.50/use-package/use-package-core hides /home/azeem/.emacs.d/.local/straight/repos/use-package/use-package-core /home/azeem/.emacs.d/.local/straight/build-28.0.50/use-package/use-package-bind-key hides /home/azeem/.emacs.d/.local/straight/repos/use-package/use-package-bind-key /home/azeem/.emacs.d/.local/straight/build-28.0.50/bind-key/bind-key hides /home/azeem/.emacs.d/.local/straight/repos/use-package/bind-key /home/azeem/.emacs.d/.local/straight/build-28.0.50/straight/straight hides /home/azeem/.emacs.d/.local/straight/repos/straight.el/straight /home/azeem/.emacs.d/.local/straight/build-28.0.50/straight/straight-x hides /home/azeem/.emacs.d/.local/straight/repos/straight.el/straight-x /home/azeem/.emacs.d/.local/straight/build-28.0.50/auctex/tex-site hides /usr/share/emacs/site-lisp/tex-site /home/azeem/.emacs.d/.local/straight/build-28.0.50/auctex/toolbar-x hides /usr/share/emacs/site-lisp/auctex/toolbar-x /home/azeem/.emacs.d/.local/straight/build-28.0.50/auctex/texmathp hides /usr/share/emacs/site-lisp/auctex/texmathp /home/azeem/.emacs.d/.local/straight/build-28.0.50/auctex/tex hides /usr/share/emacs/site-lisp/auctex/tex /home/azeem/.emacs.d/.local/straight/build-28.0.50/auctex/tex-style hides /usr/share/emacs/site-lisp/auctex/tex-style /home/azeem/.emacs.d/.local/straight/build-28.0.50/auctex/tex-mik hides /usr/share/emacs/site-lisp/auctex/tex-mik /home/azeem/.emacs.d/.local/straight/build-28.0.50/auctex/tex-jp hides /usr/share/emacs/site-lisp/auctex/tex-jp /home/azeem/.emacs.d/.local/straight/build-28.0.50/auctex/tex-ispell hides /usr/share/emacs/site-lisp/auctex/tex-ispell /home/azeem/.emacs.d/.local/straight/build-28.0.50/auctex/tex-info hides /usr/share/emacs/site-lisp/auctex/tex-info /home/azeem/.emacs.d/.local/straight/build-28.0.50/auctex/tex-font hides /usr/share/emacs/site-lisp/auctex/tex-font /home/azeem/.emacs.d/.local/straight/build-28.0.50/auctex/tex-fold hides /usr/share/emacs/site-lisp/auctex/tex-fold /home/azeem/.emacs.d/.local/straight/build-28.0.50/auctex/tex-buf hides /usr/share/emacs/site-lisp/auctex/tex-buf /home/azeem/.emacs.d/.local/straight/build-28.0.50/auctex/tex-bar hides /usr/share/emacs/site-lisp/auctex/tex-bar /home/azeem/.emacs.d/.local/straight/build-28.0.50/auctex/preview hides /usr/share/emacs/site-lisp/auctex/preview /home/azeem/.emacs.d/.local/straight/build-28.0.50/auctex/plain-tex hides /usr/share/emacs/site-lisp/auctex/plain-tex /home/azeem/.emacs.d/.local/straight/build-28.0.50/auctex/multi-prompt hides /usr/share/emacs/site-lisp/auctex/multi-prompt /home/azeem/.emacs.d/.local/straight/build-28.0.50/auctex/latex hides /usr/share/emacs/site-lisp/auctex/latex /home/azeem/.emacs.d/.local/straight/build-28.0.50/auctex/latex-flymake hides /usr/share/emacs/site-lisp/auctex/latex-flymake /home/azeem/.emacs.d/.local/straight/build-28.0.50/auctex/font-latex hides /usr/share/emacs/site-lisp/auctex/font-latex /home/azeem/.emacs.d/.local/straight/build-28.0.50/auctex/context hides /usr/share/emacs/site-lisp/auctex/context /home/azeem/.emacs.d/.local/straight/build-28.0.50/auctex/context-nl hides /usr/share/emacs/site-lisp/auctex/context-nl /home/azeem/.emacs.d/.local/straight/build-28.0.50/auctex/context-en hides /usr/share/emacs/site-lisp/auctex/context-en /home/azeem/.emacs.d/.local/straight/build-28.0.50/auctex/bib-cite hides /usr/share/emacs/site-lisp/auctex/bib-cite /home/azeem/.emacs.d/.local/straight/build-28.0.50/auctex/auctex hides /usr/share/emacs/site-lisp/site-start.d/auctex /home/azeem/.emacs.d/.local/straight/build-28.0.50/transient/transient hides /usr/share/emacs/28.0.50/lisp/transient /home/azeem/.emacs.d/.local/straight/repos/straight.el/indent hides /usr/share/emacs/28.0.50/lisp/indent /home/azeem/.emacs.d/.local/straight/build-28.0.50/xref/xref hides /usr/share/emacs/28.0.50/lisp/progmodes/xref /home/azeem/.emacs.d/.local/straight/build-28.0.50/project/project hides /usr/share/emacs/28.0.50/lisp/progmodes/project /home/azeem/.emacs.d/.local/straight/build-28.0.50/org/ox hides /usr/share/emacs/28.0.50/lisp/org/ox /home/azeem/.emacs.d/.local/straight/build-28.0.50/org/ox-texinfo hides /usr/share/emacs/28.0.50/lisp/org/ox-texinfo /home/azeem/.emacs.d/.local/straight/build-28.0.50/org/ox-publish hides /usr/share/emacs/28.0.50/lisp/org/ox-publish /home/azeem/.emacs.d/.local/straight/build-28.0.50/org/ox-org hides /usr/share/emacs/28.0.50/lisp/org/ox-org /home/azeem/.emacs.d/.local/straight/build-28.0.50/org/ox-odt hides /usr/share/emacs/28.0.50/lisp/org/ox-odt /home/azeem/.emacs.d/.local/straight/build-28.0.50/org/ox-md hides /usr/share/emacs/28.0.50/lisp/org/ox-md /home/azeem/.emacs.d/.local/straight/build-28.0.50/org/ox-man hides /usr/share/emacs/28.0.50/lisp/org/ox-man /home/azeem/.emacs.d/.local/straight/build-28.0.50/org/ox-latex hides /usr/share/emacs/28.0.50/lisp/org/ox-latex /home/azeem/.emacs.d/.local/straight/build-28.0.50/org/ox-icalendar hides /usr/share/emacs/28.0.50/lisp/org/ox-icalendar /home/azeem/.emacs.d/.local/straight/build-28.0.50/org/ox-html hides /usr/share/emacs/28.0.50/lisp/org/ox-html /home/azeem/.emacs.d/.local/straight/build-28.0.50/org/ox-beamer hides /usr/share/emacs/28.0.50/lisp/org/ox-beamer /home/azeem/.emacs.d/.local/straight/build-28.0.50/org/ox-ascii hides /usr/share/emacs/28.0.50/lisp/org/ox-ascii /home/azeem/.emacs.d/.local/straight/build-28.0.50/org/org hides /usr/share/emacs/28.0.50/lisp/org/org /home/azeem/.emacs.d/.local/straight/build-28.0.50/org/org-version hides /usr/share/emacs/28.0.50/lisp/org/org-version /home/azeem/.emacs.d/.local/straight/build-28.0.50/org/org-timer hides /usr/share/emacs/28.0.50/lisp/org/org-timer /home/azeem/.emacs.d/.local/straight/build-28.0.50/org/org-tempo hides /usr/share/emacs/28.0.50/lisp/org/org-tempo /home/azeem/.emacs.d/.local/straight/build-28.0.50/org/org-table hides /usr/share/emacs/28.0.50/lisp/org/org-table /home/azeem/.emacs.d/.local/straight/build-28.0.50/org/org-src hides /usr/share/emacs/28.0.50/lisp/org/org-src /home/azeem/.emacs.d/.local/straight/build-28.0.50/org/org-refile hides /usr/share/emacs/28.0.50/lisp/org/org-refile /home/azeem/.emacs.d/.local/straight/build-28.0.50/org/org-protocol hides /usr/share/emacs/28.0.50/lisp/org/org-protocol /home/azeem/.emacs.d/.local/straight/build-28.0.50/org/org-plot hides /usr/share/emacs/28.0.50/lisp/org/org-plot /home/azeem/.emacs.d/.local/straight/build-28.0.50/org/org-pcomplete hides /usr/share/emacs/28.0.50/lisp/org/org-pcomplete /home/azeem/.emacs.d/.local/straight/build-28.0.50/org/org-num hides /usr/share/emacs/28.0.50/lisp/org/org-num /home/azeem/.emacs.d/.local/straight/build-28.0.50/org/org-mouse hides /usr/share/emacs/28.0.50/lisp/org/org-mouse /home/azeem/.emacs.d/.local/straight/build-28.0.50/org/org-mobile hides /usr/share/emacs/28.0.50/lisp/org/org-mobile /home/azeem/.emacs.d/.local/straight/build-28.0.50/org/org-macs hides /usr/share/emacs/28.0.50/lisp/org/org-macs /home/azeem/.emacs.d/.local/straight/build-28.0.50/org/org-macro hides /usr/share/emacs/28.0.50/lisp/org/org-macro /home/azeem/.emacs.d/.local/straight/build-28.0.50/org/org-loaddefs hides /usr/share/emacs/28.0.50/lisp/org/org-loaddefs /home/azeem/.emacs.d/.local/straight/build-28.0.50/org/org-list hides /usr/share/emacs/28.0.50/lisp/org/org-list /home/azeem/.emacs.d/.local/straight/build-28.0.50/org/org-lint hides /usr/share/emacs/28.0.50/lisp/org/org-lint /home/azeem/.emacs.d/.local/straight/build-28.0.50/org/org-keys hides /usr/share/emacs/28.0.50/lisp/org/org-keys /home/azeem/.emacs.d/.local/straight/build-28.0.50/org/org-install hides /usr/share/emacs/28.0.50/lisp/org/org-install /home/azeem/.emacs.d/.local/straight/build-28.0.50/org/org-inlinetask hides /usr/share/emacs/28.0.50/lisp/org/org-inlinetask /home/azeem/.emacs.d/.local/straight/build-28.0.50/org/org-indent hides /usr/share/emacs/28.0.50/lisp/org/org-indent /home/azeem/.emacs.d/.local/straight/build-28.0.50/org/org-id hides /usr/share/emacs/28.0.50/lisp/org/org-id /home/azeem/.emacs.d/.local/straight/build-28.0.50/org/org-habit hides /usr/share/emacs/28.0.50/lisp/org/org-habit /home/azeem/.emacs.d/.local/straight/build-28.0.50/org/org-goto hides /usr/share/emacs/28.0.50/lisp/org/org-goto /home/azeem/.emacs.d/.local/straight/build-28.0.50/org/org-footnote hides /usr/share/emacs/28.0.50/lisp/org/org-footnote /home/azeem/.emacs.d/.local/straight/build-28.0.50/org/org-feed hides /usr/share/emacs/28.0.50/lisp/org/org-feed /home/azeem/.emacs.d/.local/straight/build-28.0.50/org/org-faces hides /usr/share/emacs/28.0.50/lisp/org/org-faces /home/azeem/.emacs.d/.local/straight/build-28.0.50/org/org-entities hides /usr/share/emacs/28.0.50/lisp/org/org-entities /home/azeem/.emacs.d/.local/straight/build-28.0.50/org/org-element hides /usr/share/emacs/28.0.50/lisp/org/org-element /home/azeem/.emacs.d/.local/straight/build-28.0.50/org/org-duration hides /usr/share/emacs/28.0.50/lisp/org/org-duration /home/azeem/.emacs.d/.local/straight/build-28.0.50/org/org-datetree hides /usr/share/emacs/28.0.50/lisp/org/org-datetree /home/azeem/.emacs.d/.local/straight/build-28.0.50/org/org-ctags hides /usr/share/emacs/28.0.50/lisp/org/org-ctags /home/azeem/.emacs.d/.local/straight/build-28.0.50/org/org-crypt hides /usr/share/emacs/28.0.50/lisp/org/org-crypt /home/azeem/.emacs.d/.local/straight/build-28.0.50/org/org-compat hides /usr/share/emacs/28.0.50/lisp/org/org-compat /home/azeem/.emacs.d/.local/straight/build-28.0.50/org/org-colview hides /usr/share/emacs/28.0.50/lisp/org/org-colview /home/azeem/.emacs.d/.local/straight/build-28.0.50/org/org-clock hides /usr/share/emacs/28.0.50/lisp/org/org-clock /home/azeem/.emacs.d/.local/straight/build-28.0.50/org/org-capture hides /usr/share/emacs/28.0.50/lisp/org/org-capture /home/azeem/.emacs.d/.local/straight/build-28.0.50/org/org-attach hides /usr/share/emacs/28.0.50/lisp/org/org-attach /home/azeem/.emacs.d/.local/straight/build-28.0.50/org/org-attach-git hides /usr/share/emacs/28.0.50/lisp/org/org-attach-git /home/azeem/.emacs.d/.local/straight/build-28.0.50/org/org-archive hides /usr/share/emacs/28.0.50/lisp/org/org-archive /home/azeem/.emacs.d/.local/straight/build-28.0.50/org/org-agenda hides /usr/share/emacs/28.0.50/lisp/org/org-agenda /home/azeem/.emacs.d/.local/straight/build-28.0.50/org/ol hides /usr/share/emacs/28.0.50/lisp/org/ol /home/azeem/.emacs.d/.local/straight/build-28.0.50/org/ol-w3m hides /usr/share/emacs/28.0.50/lisp/org/ol-w3m /home/azeem/.emacs.d/.local/straight/build-28.0.50/org/ol-rmail hides /usr/share/emacs/28.0.50/lisp/org/ol-rmail /home/azeem/.emacs.d/.local/straight/build-28.0.50/org/ol-mhe hides /usr/share/emacs/28.0.50/lisp/org/ol-mhe /home/azeem/.emacs.d/.local/straight/build-28.0.50/org/ol-irc hides /usr/share/emacs/28.0.50/lisp/org/ol-irc /home/azeem/.emacs.d/.local/straight/build-28.0.50/org/ol-info hides /usr/share/emacs/28.0.50/lisp/org/ol-info /home/azeem/.emacs.d/.local/straight/build-28.0.50/org/ol-gnus hides /usr/share/emacs/28.0.50/lisp/org/ol-gnus /home/azeem/.emacs.d/.local/straight/build-28.0.50/org/ol-eww hides /usr/share/emacs/28.0.50/lisp/org/ol-eww /home/azeem/.emacs.d/.local/straight/build-28.0.50/org/ol-eshell hides /usr/share/emacs/28.0.50/lisp/org/ol-eshell /home/azeem/.emacs.d/.local/straight/build-28.0.50/org/ol-docview hides /usr/share/emacs/28.0.50/lisp/org/ol-docview /home/azeem/.emacs.d/.local/straight/build-28.0.50/org/ol-bibtex hides /usr/share/emacs/28.0.50/lisp/org/ol-bibtex /home/azeem/.emacs.d/.local/straight/build-28.0.50/org/ol-bbdb hides /usr/share/emacs/28.0.50/lisp/org/ol-bbdb /home/azeem/.emacs.d/.local/straight/build-28.0.50/org/ob hides /usr/share/emacs/28.0.50/lisp/org/ob /home/azeem/.emacs.d/.local/straight/build-28.0.50/org/ob-vala hides /usr/share/emacs/28.0.50/lisp/org/ob-vala /home/azeem/.emacs.d/.local/straight/build-28.0.50/org/ob-tangle hides /usr/share/emacs/28.0.50/lisp/org/ob-tangle /home/azeem/.emacs.d/.local/straight/build-28.0.50/org/ob-table hides /usr/share/emacs/28.0.50/lisp/org/ob-table /home/azeem/.emacs.d/.local/straight/build-28.0.50/org/ob-stan hides /usr/share/emacs/28.0.50/lisp/org/ob-stan /home/azeem/.emacs.d/.local/straight/build-28.0.50/org/ob-sqlite hides /usr/share/emacs/28.0.50/lisp/org/ob-sqlite /home/azeem/.emacs.d/.local/straight/build-28.0.50/org/ob-sql hides /usr/share/emacs/28.0.50/lisp/org/ob-sql /home/azeem/.emacs.d/.local/straight/build-28.0.50/org/ob-shen hides /usr/share/emacs/28.0.50/lisp/org/ob-shen /home/azeem/.emacs.d/.local/straight/build-28.0.50/org/ob-shell hides /usr/share/emacs/28.0.50/lisp/org/ob-shell /home/azeem/.emacs.d/.local/straight/build-28.0.50/org/ob-sed hides /usr/share/emacs/28.0.50/lisp/org/ob-sed /home/azeem/.emacs.d/.local/straight/build-28.0.50/org/ob-screen hides /usr/share/emacs/28.0.50/lisp/org/ob-screen /home/azeem/.emacs.d/.local/straight/build-28.0.50/org/ob-scheme hides /usr/share/emacs/28.0.50/lisp/org/ob-scheme /home/azeem/.emacs.d/.local/straight/build-28.0.50/org/ob-sass hides /usr/share/emacs/28.0.50/lisp/org/ob-sass /home/azeem/.emacs.d/.local/straight/build-28.0.50/org/ob-ruby hides /usr/share/emacs/28.0.50/lisp/org/ob-ruby /home/azeem/.emacs.d/.local/straight/build-28.0.50/org/ob-ref hides /usr/share/emacs/28.0.50/lisp/org/ob-ref /home/azeem/.emacs.d/.local/straight/build-28.0.50/org/ob-python hides /usr/share/emacs/28.0.50/lisp/org/ob-python /home/azeem/.emacs.d/.local/straight/build-28.0.50/org/ob-processing hides /usr/share/emacs/28.0.50/lisp/org/ob-processing /home/azeem/.emacs.d/.local/straight/build-28.0.50/org/ob-plantuml hides /usr/share/emacs/28.0.50/lisp/org/ob-plantuml /home/azeem/.emacs.d/.local/straight/build-28.0.50/org/ob-picolisp hides /usr/share/emacs/28.0.50/lisp/org/ob-picolisp /home/azeem/.emacs.d/.local/straight/build-28.0.50/org/ob-perl hides /usr/share/emacs/28.0.50/lisp/org/ob-perl /home/azeem/.emacs.d/.local/straight/build-28.0.50/org/ob-org hides /usr/share/emacs/28.0.50/lisp/org/ob-org /home/azeem/.emacs.d/.local/straight/build-28.0.50/org/ob-octave hides /usr/share/emacs/28.0.50/lisp/org/ob-octave /home/azeem/.emacs.d/.local/straight/build-28.0.50/org/ob-ocaml hides /usr/share/emacs/28.0.50/lisp/org/ob-ocaml /home/azeem/.emacs.d/.local/straight/build-28.0.50/org/ob-mscgen hides /usr/share/emacs/28.0.50/lisp/org/ob-mscgen /home/azeem/.emacs.d/.local/straight/build-28.0.50/org/ob-maxima hides /usr/share/emacs/28.0.50/lisp/org/ob-maxima /home/azeem/.emacs.d/.local/straight/build-28.0.50/org/ob-matlab hides /usr/share/emacs/28.0.50/lisp/org/ob-matlab /home/azeem/.emacs.d/.local/straight/build-28.0.50/org/ob-makefile hides /usr/share/emacs/28.0.50/lisp/org/ob-makefile /home/azeem/.emacs.d/.local/straight/build-28.0.50/org/ob-lua hides /usr/share/emacs/28.0.50/lisp/org/ob-lua /home/azeem/.emacs.d/.local/straight/build-28.0.50/org/ob-lob hides /usr/share/emacs/28.0.50/lisp/org/ob-lob /home/azeem/.emacs.d/.local/straight/build-28.0.50/org/ob-lisp hides /usr/share/emacs/28.0.50/lisp/org/ob-lisp /home/azeem/.emacs.d/.local/straight/build-28.0.50/org/ob-lilypond hides /usr/share/emacs/28.0.50/lisp/org/ob-lilypond /home/azeem/.emacs.d/.local/straight/build-28.0.50/org/ob-ledger hides /usr/share/emacs/28.0.50/lisp/org/ob-ledger /home/azeem/.emacs.d/.local/straight/build-28.0.50/org/ob-latex hides /usr/share/emacs/28.0.50/lisp/org/ob-latex /home/azeem/.emacs.d/.local/straight/build-28.0.50/org/ob-js hides /usr/share/emacs/28.0.50/lisp/org/ob-js /home/azeem/.emacs.d/.local/straight/build-28.0.50/org/ob-java hides /usr/share/emacs/28.0.50/lisp/org/ob-java /home/azeem/.emacs.d/.local/straight/build-28.0.50/org/ob-io hides /usr/share/emacs/28.0.50/lisp/org/ob-io /home/azeem/.emacs.d/.local/straight/build-28.0.50/org/ob-hledger hides /usr/share/emacs/28.0.50/lisp/org/ob-hledger /home/azeem/.emacs.d/.local/straight/build-28.0.50/org/ob-haskell hides /usr/share/emacs/28.0.50/lisp/org/ob-haskell /home/azeem/.emacs.d/.local/straight/build-28.0.50/org/ob-groovy hides /usr/share/emacs/28.0.50/lisp/org/ob-groovy /home/azeem/.emacs.d/.local/straight/build-28.0.50/org/ob-gnuplot hides /usr/share/emacs/28.0.50/lisp/org/ob-gnuplot /home/azeem/.emacs.d/.local/straight/build-28.0.50/org/ob-fortran hides /usr/share/emacs/28.0.50/lisp/org/ob-fortran /home/azeem/.emacs.d/.local/straight/build-28.0.50/org/ob-forth hides /usr/share/emacs/28.0.50/lisp/org/ob-forth /home/azeem/.emacs.d/.local/straight/build-28.0.50/org/ob-exp hides /usr/share/emacs/28.0.50/lisp/org/ob-exp /home/azeem/.emacs.d/.local/straight/build-28.0.50/org/ob-eval hides /usr/share/emacs/28.0.50/lisp/org/ob-eval /home/azeem/.emacs.d/.local/straight/build-28.0.50/org/ob-eshell hides /usr/share/emacs/28.0.50/lisp/org/ob-eshell /home/azeem/.emacs.d/.local/straight/build-28.0.50/org/ob-emacs-lisp hides /usr/share/emacs/28.0.50/lisp/org/ob-emacs-lisp /home/azeem/.emacs.d/.local/straight/build-28.0.50/org/ob-ebnf hides /usr/share/emacs/28.0.50/lisp/org/ob-ebnf /home/azeem/.emacs.d/.local/straight/build-28.0.50/org/ob-dot hides /usr/share/emacs/28.0.50/lisp/org/ob-dot /home/azeem/.emacs.d/.local/straight/build-28.0.50/org/ob-ditaa hides /usr/share/emacs/28.0.50/lisp/org/ob-ditaa /home/azeem/.emacs.d/.local/straight/build-28.0.50/org/ob-css hides /usr/share/emacs/28.0.50/lisp/org/ob-css /home/azeem/.emacs.d/.local/straight/build-28.0.50/org/ob-core hides /usr/share/emacs/28.0.50/lisp/org/ob-core /home/azeem/.emacs.d/.local/straight/build-28.0.50/org/ob-coq hides /usr/share/emacs/28.0.50/lisp/org/ob-coq /home/azeem/.emacs.d/.local/straight/build-28.0.50/org/ob-comint hides /usr/share/emacs/28.0.50/lisp/org/ob-comint /home/azeem/.emacs.d/.local/straight/build-28.0.50/org/ob-clojure hides /usr/share/emacs/28.0.50/lisp/org/ob-clojure /home/azeem/.emacs.d/.local/straight/build-28.0.50/org/ob-calc hides /usr/share/emacs/28.0.50/lisp/org/ob-calc /home/azeem/.emacs.d/.local/straight/build-28.0.50/org/ob-awk hides /usr/share/emacs/28.0.50/lisp/org/ob-awk /home/azeem/.emacs.d/.local/straight/build-28.0.50/org/ob-asymptote hides /usr/share/emacs/28.0.50/lisp/org/ob-asymptote /home/azeem/.emacs.d/.local/straight/build-28.0.50/org/ob-abc hides /usr/share/emacs/28.0.50/lisp/org/ob-abc /home/azeem/.emacs.d/.local/straight/build-28.0.50/org/ob-R hides /usr/share/emacs/28.0.50/lisp/org/ob-R /home/azeem/.emacs.d/.local/straight/build-28.0.50/org/ob-J hides /usr/share/emacs/28.0.50/lisp/org/ob-J /home/azeem/.emacs.d/.local/straight/build-28.0.50/org/ob-C hides /usr/share/emacs/28.0.50/lisp/org/ob-C Features: (shadow sort mail-extr emacsbug sendmail elisp-mode org-indent ol-bibtex magit-patch magit-subtree magit-gitignore magit-ediff evil-collection-ediff ediff ediff-merg ediff-mult ediff-wind ediff-diff ediff-help ediff-init ediff-util diff-hl-margin diff-hl-dired diff-hl evil-collection-log-view log-view evil-collection-vc-dir vc-dir ewoc magit-extras goto-addr vc-mtn vc-hg vc-bzr vc-src vc-sccs vc-svn vc-cvs vc-rcs vc bug-reference magit-gitflow evil-collection-vc-git vc-git vc-dispatcher company-yasnippet delsel restart-emacs desktop frameset evil-collection-help vertico-directory tabify elisp-demos evil-collection-indent evil-collection-helpful helpful trace evil-collection-edebug edebug info-look evil-collection-info info evil-collection-elisp-refs elisp-refs jka-compr hide-mode-line help-fns radix-tree cl-print evil-collection-debug debug backtrace mule-util vertico-repeat cursor-sensor consult-flycheck evil-collection-consult consult-org consult-imenu consult-vertico consult magit-bookmark evil-collection-bookmark bookmark preview cdlatex adaptive-wrap evil-tex reftex-dcr reftex-auc laas aas tex-fold spell-fu font-latex latex-mode-expansions bibtex-actions-filenotify bibtex-actions-latex evil-collection-reftex reftex-toc reftex-cite reftex-ref reftex-parse reftex reftex-loaddefs reftex-vars bibtex-actions bibtex-completion biblio biblio-download biblio-dissemin biblio-ieee biblio-hal biblio-dblp biblio-crossref biblio-arxiv timezone biblio-doi biblio-core url-queue ido parsebib bibtex-actions-file org-id bibtex iso8601 auctex-latexmk tex-buf latex latex-flymake evil-collection-flymake flymake-proc flymake project tex-ispell tex-style tex dbus xml texmathp smartparens-latex tex-mode latexenc auto-minor-mode disp-table whitespace flycheck-popup-tip evil-collection-popup popup flycheck-cask evil-embrace evil-surround embrace expand-region text-mode-expansions the-org-mode-expansions er-basic-expansions expand-region-core expand-region-custom eros highlight-quoted rainbow-delimiters highlight-numbers parent-mode display-line-numbers projectile ibuffer-vc ibuf-ext evil-collection-ibuffer ibuffer ibuffer-loaddefs doom-themes-ext-org solaire-mode face-remap doom-tomorrow-day-theme doom-themes doom-themes-base org-capture org-agenda org-refile evil-collection-magit-todos magit-todos pcre2el rxt re-builder hl-todo async evil-collection-grep grep evil-collection-compile compile orgit smartparens-org org-yt org-element avl-tree generator org ob ob-tangle ob-ref ob-lob ob-table ob-exp org-macro org-footnote org-src ob-comint org-pcomplete org-list org-faces org-entities noutline outline org-version ob-emacs-lisp ob-core ob-eval org-table ol org-keys oc org-compat org-macs org-loaddefs evil-collection-calendar cal-menu calendar cal-loaddefs github-review ghub-graphql treepy gsexp ghub url-http url-gw nsm url-auth gnutls deferred a evil-collection-magit magit-autoloads magit-submodule magit-obsolete magit-popup magit-blame magit-stash magit-reflog magit-bisect magit-push magit-pull magit-fetch magit-clone magit-remote magit-commit magit-sequence magit-notes magit-worktree magit-tag magit-merge magit-branch magit-reset magit-files magit-refs magit-status magit magit-repos magit-apply magit-wip magit-log which-func magit-diff smerge-mode diff evil-collection-diff-mode diff-mode magit-core magit-autorevert autorevert filenotify magit-margin magit-transient magit-process magit-mode git-commit transient format-spec evil-collection-log-edit log-edit message rmc puny evil-collection-dired dired dired-loaddefs rfc822 mml mml-sec evil-collection-epa epa epg rfc6068 epg-config gnus-util rmail rmail-loaddefs text-property-search time-date mm-decode mm-bodies mm-encode mailabbrev mail-utils gmm-utils mailheader pcvs-util add-log magit-git magit-section magit-utils crm with-editor f s doom-snippets doom-snippets-lib yasnippet evil-collection-elisp-mode server dtrt-indent evil-collection-which-key which-key savehist better-jumper company-capf company vertico orderless marginalia evil-goggles pulse color evil-easymotion evil-escape evil-snipe recentf tree-widget saveplace so-long gcmh hl-line winner paren smartparens-config smartparens-text smartparens ws-butler undo-fu-session undo-fu flycheck-package package-lint evil-collection-imenu imenu evil-collection-finder finder finder-inf lisp-mnt mail-parse rfc2231 rfc2047 rfc2045 mm-util ietf-drums mail-prsvr evil-collection-package-menu core-packages package browse-url url url-proxy url-privacy url-expand url-methods url-history url-cookie url-domsuf url-util mailcap url-handlers url-parse auth-source eieio eieio-core eieio-loaddefs password-cache url-vars evil-collection-flycheck evil-collection-custom cus-edit cus-start cus-load wid-edit evil-collection-comint evil-collection annalist flycheck json map find-func dash persp-mode ibuf-macs evil evil-integration evil-maps evil-commands reveal flyspell evil-jumps evil-command-window evil-types evil-search shell pcomplete comint ansi-color evil-macros evil-repeat evil-states evil-core advice evil-common windmove calc calc-loaddefs calc-macs thingatpt rect evil-digraphs evil-vars ring all-the-icons all-the-icons-faces data-material data-weathericons data-octicons data-fileicons data-faicons data-alltheicons let-alist derived edmacro kmacro core-editor core-projects core-ui easy-mmode comp comp-cstr warnings rx core-keybinds pp general cl-extra help-mode seq byte-opt cl-seq use-package-core bytecomp byte-compile cconv core-modules tex-site core core-lib pcase cl-macs gv cl-loaddefs cl-lib subr-x iso-transl tooltip eldoc electric uniquify ediff-hook vc-hooks lisp-float-type 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 system-font-setting font-render-setting cairo move-toolbar gtk x-toolkit pgtk multi-tty make-network-process native-compile emacs) Memory information: ((conses 16 1057984 116256) (symbols 48 69380 3) (strings 32 354565 43630) (string-bytes 1 8886860) (vectors 16 122135) (vector-slots 8 3279970 69608) (floats 8 1209 337) (intervals 56 15396 641) (buffers 992 31)) [-- Attachment #1.2: Type: text/html, Size: 32061 bytes --] [-- Attachment #2: 2021-10-01T21:43:10,566697499+02:00.png --] [-- Type: image/png, Size: 22221 bytes --] [-- Attachment #3: 2021-10-01T21:49:10,611532571+02:00.png --] [-- Type: image/png, Size: 8086 bytes --] [-- Attachment #4: 2021-10-01T22:02:00,166113989+02:00.png --] [-- Type: image/png, Size: 30011 bytes --] [-- Attachment #5: 2021-10-01T22:05:28,910692941+02:00.png --] [-- Type: image/png, Size: 11781 bytes --] ^ permalink raw reply [flat|nested] 44+ messages in thread
* bug#50951: 28.0.50; Urdu text is not displayed correctly 2021-10-01 20:11 bug#50951: 28.0.50; Urdu text is not displayed correctly Rah Guzar @ 2021-10-02 6:07 ` Eli Zaretskii [not found] ` <CAP094xCyzg62eHeYCUkWy+eBCbEXC_AAU5YFbhTCcCR0cAOCQw@mail.gmail.com> 0 siblings, 1 reply; 44+ messages in thread From: Eli Zaretskii @ 2021-10-02 6:07 UTC (permalink / raw) To: Rah Guzar; +Cc: 50951 > From: Rah Guzar <aikrahguzar@gmail.com> > Date: Fri, 1 Oct 2021 22:11:32 +0200 > > Starting with 'emacs -Q' and using the menu bar to paste urdu text > حرف نہیں جاں بخشی میں اس کی خوبی اپنی قسمت کی > ہم سے جو پہلے کہہ بھیجا سو مرنے کا پیغام کیا > the text is not rendered properly, some characters which should be > joined together are instead rendered individually. > > It look like this > 2021-10-01T21:43:10,566697499+02:00.png > 2021-10-01T21:49:10,611532571+02:00.png Can you give a few specific examples of characters that should be joined, but aren't? Please name the characters and also give they positions relative to the beginning of this text, as I don't read Urdu, so the images are useless for me without some additional data and explanations. > Changing the font to a Nastaliq font more common for Urdu via > > (set-fontset-font t 'arabic (font-spec :family "NotoNastaliqUrdu")) > > the text is again rendered improperly but in a different way with chracters overlapping each other when they > shouldn't, others have gaps where they should be joined. It looks like this > > 2021-10-01T22:02:00,166113989+02:00.png > while it should look like this > > 2021-10-01T22:05:28,910692941+02:00.png So isn't this a matter of finding a proper font, in particularly given the "Nastaliq vs Naskh" issues? NotoNastaliqUrdu is not the only font supporting Nastaliq, so perhaps other fonts fare better? Since Urdu uses the Arabic characters, Emacs uses character composition rules for Arabic when displaying this text. Do you know if the composition rules for Urdu are different? Also, which version of HarfBuzz do you have installed? Thanks. ^ permalink raw reply [flat|nested] 44+ messages in thread
[parent not found: <CAP094xCyzg62eHeYCUkWy+eBCbEXC_AAU5YFbhTCcCR0cAOCQw@mail.gmail.com>]
* bug#50951: Fwd: bug#50951: 28.0.50; Urdu text is not displayed correctly [not found] ` <CAP094xCyzg62eHeYCUkWy+eBCbEXC_AAU5YFbhTCcCR0cAOCQw@mail.gmail.com> @ 2021-10-02 11:43 ` Rah Guzar 2021-10-02 12:18 ` Eli Zaretskii 0 siblings, 1 reply; 44+ messages in thread From: Rah Guzar @ 2021-10-02 11:43 UTC (permalink / raw) To: 50951 [-- Attachment #1: Type: text/plain, Size: 3483 bytes --] I forgot to reply all for my reply and it didn't go to the mailing list. Sorry about that and I am forwarding it to the mailing list now. ---------- Forwarded message --------- From: Rah Guzar <aikrahguzar@gmail.com> Date: Sat, Oct 2, 2021 at 1:40 PM Subject: Re: bug#50951: 28.0.50; Urdu text is not displayed correctly To: Eli Zaretskii <eliz@gnu.org> Hi, Thanks a lot for the reply. On Sat, Oct 2, 2021 at 8:07 AM Eli Zaretskii <eliz@gnu.org> wrote: > -10-01T21:49:10,611532571+02:00.png > > Can you give a few specific examples of characters that should be > joined, but aren't? Please name the characters and also give they > positions relative to the beginning of this text, as I don't read > Urdu, so the images are useless for me without some additional data > and explanations. > Let us consider the word نہیں It is composed of four letters. I will use character field from `describe-char` for each of them below 1) ن (displayed as ن) (codepoint 1606, #o3106, #x646) 2) ہ (displayed as ہ) (codepoint 1729, #o3301, #x6c1) 3) ی (displayed as ی) (codepoint 1740, #o3314, #x6cc) 4) ں (displayed as ں) (codepoint 1722, #o3272, #x6ba) It should be displayed with all 4 characters joined together, instead they are all displayed individually. If I change to `NotoNastaliqUrdu` this word is displayed correctly. But there is problem with حرف It consist of three letters, 1) ح (displayed as ح) (codepoint 1581, #o3055, #x62d) 2) ر (displayed as ر) (codepoint 1585, #o3061, #x631) 3) ف (displayed as ف) (codepoint 1601, #o3101, #x641) The first two characters should be joined and the last one should be on its own. This seems to be the case. But the two groups are rendered on top of each other making it illegible. So isn't this a matter of finding a proper font, in particularly given > the "Nastaliq vs Naskh" issues? NotoNastaliqUrdu is not the only font > supporting Nastaliq, so perhaps other fonts fare better? > My knowledge here is very deficient but my impression is Nastaliq and Naskh are styles and shouldn't affect composition. NotoNastaliqUrdu was the only Urdu font available from my distro. Libreoffice which also uses harfbuzz renders it correctly so I didn't try another font at first. Like emacs libreoffice also uses a Naskh font by default but all the characters are joined properly. I did try some fonts from https://urdufonts.net/ after your suggestions and they render correctly. Specifically the font I tried were: Jameel Noori Nastaleeq Regular Alvi Nastaleeq Zohra Unicode Manzor Unicode I didn't notice a problem with any of them except a very minor one for the last two which have visible boundaries where glyphs are joined. Since Urdu uses the Arabic characters, Emacs uses character > composition rules for Arabic when displaying this text. Do you know > if the composition rules for Urdu are different? > I think using Arabic composition rules might be part of the problem. Urdu alphabet is a superset of Arabic alphabet and if I don't set a font specifically designed for Urdu, the words where some characters should be joined but aren't always seem to include a character like ہ which is in Urdu alphabet but not in Arabic. Also, which version of HarfBuzz do you have installed? > It is 2.9.1 Please let me know if you need any more information. Thanks a lot again. [-- Attachment #2: Type: text/html, Size: 5132 bytes --] ^ permalink raw reply [flat|nested] 44+ messages in thread
* bug#50951: Fwd: bug#50951: 28.0.50; Urdu text is not displayed correctly 2021-10-02 11:43 ` bug#50951: Fwd: " Rah Guzar @ 2021-10-02 12:18 ` Eli Zaretskii 2021-10-02 12:47 ` Rah Guzar 0 siblings, 1 reply; 44+ messages in thread From: Eli Zaretskii @ 2021-10-02 12:18 UTC (permalink / raw) To: Rah Guzar; +Cc: 50951 > From: Rah Guzar <aikrahguzar@gmail.com> > Date: Sat, 2 Oct 2021 13:43:47 +0200 > > Let us consider the word نہیں > > It is composed of four letters. I will use character field from `describe-char` for each of them below > 1) ن (displayed as ن) (codepoint 1606, #o3106, #x646) > 2) ہ (displayed as ہ) (codepoint 1729, #o3301, #x6c1) > 3) ی (displayed as ی) (codepoint 1740, #o3314, #x6cc) > 4) ں (displayed as ں) (codepoint 1722, #o3272, #x6ba) > > It should be displayed with all 4 characters joined together, instead they are all displayed individually. What font displays them individually? You should be able to tell that if you type "C-u C-x =" on one of these characters. For me, they display joined together. > If I change to `NotoNastaliqUrdu` this word is displayed correctly. But there is problem with حرف > > It consist of three letters, > 1) ح (displayed as ح) (codepoint 1581, #o3055, #x62d) > 2) ر (displayed as ر) (codepoint 1585, #o3061, #x631) > 3) ف (displayed as ف) (codepoint 1601, #o3101, #x641) > > The first two characters should be joined and the last one should be on its own. This seems to be the case. > But the two groups are rendered on top of each other making it illegible. > > So isn't this a matter of finding a proper font, in particularly given > the "Nastaliq vs Naskh" issues? NotoNastaliqUrdu is not the only font > supporting Nastaliq, so perhaps other fonts fare better? > > My knowledge here is very deficient but my impression is Nastaliq and Naskh are styles and shouldn't affect > composition. > NotoNastaliqUrdu was the only Urdu font available from my distro. Libreoffice which also uses harfbuzz > renders it > correctly so I didn't try another font at first. Like emacs libreoffice also uses a Naskh font by default but all the > characters are joined properly. > > I did try some fonts from https://urdufonts.net/ after your suggestions and they render correctly. Specifically > the font I tried > were: > Jameel Noori Nastaleeq Regular > Alvi Nastaleeq > Zohra Unicode > Manzor Unicode > > I didn't notice a problem with any of them except a very minor one for the last two which have visible > boundaries where glyphs > are joined. So would it be correct to say that using a proper font solves the problem? > Since Urdu uses the Arabic characters, Emacs uses character > composition rules for Arabic when displaying this text. Do you know > if the composition rules for Urdu are different? > > I think using Arabic composition rules might be part of the problem. Urdu alphabet is a superset of Arabic > alphabet and if I > don't set a font specifically designed for Urdu, the words where some characters should be joined but aren't > always seem to > include a character like ہ which is in Urdu alphabet but not in Arabic. I don't think the problem is with compositions, because in the 2 examples you described above, there are no character compositions. Moreover, our pattern for asking HarfBuzz to shape Arabic text is this: "[\u0600-\u074F\u200C\u200D]+" which includes all of the characters, including U+06C1 which you say causes problems. You could try setting current-iso639-language to the symbol 'ur' (without the quotes), that should tell HarfBuzz to shape the text as appropriate for Urdu. But I think the real problem is with the font, not with shaping. ^ permalink raw reply [flat|nested] 44+ messages in thread
* bug#50951: Fwd: bug#50951: 28.0.50; Urdu text is not displayed correctly 2021-10-02 12:18 ` Eli Zaretskii @ 2021-10-02 12:47 ` Rah Guzar 2021-10-02 13:09 ` Eli Zaretskii 2021-10-02 14:18 ` Andreas Schwab 0 siblings, 2 replies; 44+ messages in thread From: Rah Guzar @ 2021-10-02 12:47 UTC (permalink / raw) To: Eli Zaretskii; +Cc: 50951 [-- Attachment #1: Type: text/plain, Size: 1403 bytes --] On Sat, Oct 2, 2021 at 2:18 PM Eli Zaretskii <eliz@gnu.org> wrote: > What font displays them individually? You should be able to tell that > if you type "C-u C-x =" on one of these characters. > This is the default font that `emacs -Q` chooses. Using "C-u C-x =" I see, ftcrhb:-PfEd-DejaVu Sans-normal-normal-normal-*-13-*-*-*-*-0-iso10646-1 (#x56F) > So would it be correct to say that using a proper font solves the > problem? > This is almost correct except that the font (NotoNastaliqUrdu) that causes problems with emacs works fine in libreoffice and both use harfbuzz. > I don't think the problem is with compositions, because in the 2 > examples you described above, there are no character compositions. > > Moreover, our pattern for asking HarfBuzz to shape Arabic text is > this: > > "[\u0600-\u074F\u200C\u200D]+" > > which includes all of the characters, including U+06C1 which you say > causes problems. > > You could try setting current-iso639-language to the symbol 'ur' > (without the quotes), that should tell HarfBuzz to shape the text as > appropriate for Urdu. But I think the real problem is with the font, > not with shaping. > Sorry, my lack of understanding of terminology got in the way here. I thought composition referred to joining characters together. I did try setting `current-iso639-language` to the symbol `ur`. As you expected it didn't make a difference. [-- Attachment #2: Type: text/html, Size: 2251 bytes --] ^ permalink raw reply [flat|nested] 44+ messages in thread
* bug#50951: Fwd: bug#50951: 28.0.50; Urdu text is not displayed correctly 2021-10-02 12:47 ` Rah Guzar @ 2021-10-02 13:09 ` Eli Zaretskii 2021-10-02 14:19 ` Rah Guzar 2021-10-02 14:18 ` Andreas Schwab 1 sibling, 1 reply; 44+ messages in thread From: Eli Zaretskii @ 2021-10-02 13:09 UTC (permalink / raw) To: Rah Guzar; +Cc: 50951 > From: Rah Guzar <aikrahguzar@gmail.com> > Date: Sat, 2 Oct 2021 14:47:37 +0200 > Cc: 50951@debbugs.gnu.org > > On Sat, Oct 2, 2021 at 2:18 PM Eli Zaretskii <eliz@gnu.org> wrote: > > What font displays them individually? You should be able to tell that > if you type "C-u C-x =" on one of these characters. > > This is the default font that `emacs -Q` chooses. Using "C-u C-x =" I see, > > ftcrhb:-PfEd-DejaVu Sans-normal-normal-normal-*-13-*-*-*-*-0-iso10646-1 (#x56F) I guess that font is problematic (in more than one way). > So would it be correct to say that using a proper font solves the > problem? > > This is almost correct except that the font (NotoNastaliqUrdu) that causes problems with emacs > works fine in libreoffice and both use harfbuzz. The way to investigate such problems is to see what does hb-view, a program that is part of the HarfBuzz installation, produce for the same text with the same font. If hb-view produces correct display, but Emacs doesn't, then the problem is indeed in Emacs; otherwise the problem is probably with the font, and in any case should be taken up with the HarfBuzz developers. (Are you sure that LibreOffice uses NotoNastaliqUrdu for the text you type there? They could use a different font under the hood.) ^ permalink raw reply [flat|nested] 44+ messages in thread
* bug#50951: Fwd: bug#50951: 28.0.50; Urdu text is not displayed correctly 2021-10-02 13:09 ` Eli Zaretskii @ 2021-10-02 14:19 ` Rah Guzar 2021-10-02 14:50 ` Eli Zaretskii 0 siblings, 1 reply; 44+ messages in thread From: Rah Guzar @ 2021-10-02 14:19 UTC (permalink / raw) To: Eli Zaretskii; +Cc: 50951 [-- Attachment #1.1: Type: text/plain, Size: 4656 bytes --] On Sat, Oct 2, 2021 at 3:09 PM Eli Zaretskii <eliz@gnu.org> wrote: > The way to investigate such problems is to see what does hb-view, a > program that is part of the HarfBuzz installation, produce for the > same text with the same font. If hb-view produces correct display, > but Emacs doesn't, then the problem is indeed in Emacs; otherwise the > problem is probably with the font, and in any case should be taken up > with the HarfBuzz developers. > I tried hb-view with NotoNastaliqUrdu and the text: خوبی اپنی قسمت کی This is what I get [image: urduhbtestnoto.png] While in emacs I discovered how it is displayed depends a lot on the font size. For the same text at size 16, I get [image: emacsq16.png] At size 24 it looks almost correct [image: emacsq24.png] At size 32 it is really bad again [image: emacsq32.png] And the issue seem to be glyph placement rather than shaping. NotoNastaliqUrdu seems to be the only font with this issue. I am not sure if the problem is due to Nastaliq. The other two Nastaliq fonts seem to handle joining characters through composition. If I change font using (set-fontset-font t 'arabic (font-spec :family "Jameel Noori Nastaleeq" :size 32)) and move cursor to the word "قسمت" which has 4 characters, the cursor encompasses all of them and "C-u C-x u" gives ----------------------------------------------------------------------------------------------------------------------- position: 157 of 283 (55%), column: 11 character: ق (displayed as ق) (codepoint 1602, #o3102, #x642) charset: unicode (Unicode (ISO10646)) code point in charset: 0x0642 script: arabic syntax: w which means: word category: .:Base, R:Right-to-left (strong), b:Arabic to input: type "C-x 8 RET 642" or "C-x 8 RET ARABIC LETTER QAF" buffer code: #xD9 #x82 file code: #xD9 #x82 (encoded by coding system utf-8-unix) display: composed to form "قسمت" (see below) Composed with the following character(s) "سمت" using this font: ftcrhb:-pdms-Jameel Noori Nastaleeq-normal-normal-normal-*-32-*-*-*-*-0-iso10646-1 by these glyphs: [0 3 1578 11352 50 1 51 30 1 nil] with these character(s): س (#x633) ARABIC LETTER SEEN م (#x645) ARABIC LETTER MEEM ت (#x62a) ARABIC LETTER TEH Character code properties: customize what to show name: ARABIC LETTER QAF general-category: Lo (Letter, Other) decomposition: (1602) ('ق') There are text properties here: fontified nil ----------------------------------------------------------------------------------------------------------------------------- Changing to NotoNastaliqUrdu using (set-fontset-font t 'arabic (font-spec :family "NotoNastaliqUrdu" :size 32)) the cursor moves through one character at a time and moving the cursor to the beginning of the same word "C-u C-x =" gives ----------------------------------------------------------------------------------------------------------------------------------------- position: 157 of 282 (55%), column: 11 character: ق (displayed as ق) (codepoint 1602, #o3102, #x642) charset: unicode (Unicode (ISO10646)) code point in charset: 0x0642 script: arabic syntax: w which means: word category: .:Base, R:Right-to-left (strong), b:Arabic to input: type "C-x 8 RET 642" or "C-x 8 RET ARABIC LETTER QAF" buffer code: #xD9 #x82 file code: #xD9 #x82 (encoded by coding system utf-8-unix) display: composed to form "ق" (see below) Composed using this font: ftcrhb:-GOOG-Noto Nastaliq Urdu-normal-normal-normal-*-32-*-*-*-*-0-iso10646-1 by these glyphs: [0 0 1602 16 0 -6 6 35 -26 [3 -16 0]] [0 0 1602 983 0 0 0 0 0 nil] [0 0 1602 284 8 -1 8 24 6 [0 -23 8]] Character code properties: customize what to show name: ARABIC LETTER QAF general-category: Lo (Letter, Other) decomposition: (1602) ('ق') There are text properties here: fontified t ----------------------------------------------------------------------------------------------------------------------------------------- (Are you sure that LibreOffice uses NotoNastaliqUrdu for the text you > type there? They could use a different font under the hood.) > LibreOffice uses something else by default and when I changed to NotoNastaliqUrdu the appearance changes and is the same as what I get with hb-view. [-- Attachment #1.2: Type: text/html, Size: 6234 bytes --] [-- Attachment #2: urduhbtestnoto.png --] [-- Type: image/png, Size: 28533 bytes --] [-- Attachment #3: emacsq16.png --] [-- Type: image/png, Size: 1642 bytes --] [-- Attachment #4: emacsq24.png --] [-- Type: image/png, Size: 3916 bytes --] [-- Attachment #5: emacsq32.png --] [-- Type: image/png, Size: 4810 bytes --] ^ permalink raw reply [flat|nested] 44+ messages in thread
* bug#50951: Fwd: bug#50951: 28.0.50; Urdu text is not displayed correctly 2021-10-02 14:19 ` Rah Guzar @ 2021-10-02 14:50 ` Eli Zaretskii [not found] ` <CAP094xBq9YjL6xS56t-C3uhSH69TawhsCrF2FdSMySeDpZfGNw@mail.gmail.com> 0 siblings, 1 reply; 44+ messages in thread From: Eli Zaretskii @ 2021-10-02 14:50 UTC (permalink / raw) To: Rah Guzar; +Cc: 50951 > From: Rah Guzar <aikrahguzar@gmail.com> > Date: Sat, 2 Oct 2021 16:19:01 +0200 > Cc: 50951@debbugs.gnu.org > > I tried hb-view with NotoNastaliqUrdu and the text: > خوبی اپنی قسمت کی > This is what I get > urduhbtestnoto.png > While in emacs I discovered how it is displayed depends a lot on the font size. > > For the same text at size 16, I get > > emacsq16.png > > At size 24 it looks almost correct > emacsq24.png > At size 32 it is really bad again > emacsq32.png > And the issue seem to be glyph placement rather than shaping. > > NotoNastaliqUrdu seems to be the only font with this issue. I am not sure if the problem is due to Nastaliq. If you set bidi-display-reordering to a nil value, does the display become better or worse? ^ permalink raw reply [flat|nested] 44+ messages in thread
[parent not found: <CAP094xBq9YjL6xS56t-C3uhSH69TawhsCrF2FdSMySeDpZfGNw@mail.gmail.com>]
* bug#50951: Fwd: bug#50951: 28.0.50; Urdu text is not displayed correctly [not found] ` <CAP094xBq9YjL6xS56t-C3uhSH69TawhsCrF2FdSMySeDpZfGNw@mail.gmail.com> @ 2021-10-02 15:09 ` Eli Zaretskii 2021-10-02 15:18 ` Rah Guzar 0 siblings, 1 reply; 44+ messages in thread From: Eli Zaretskii @ 2021-10-02 15:09 UTC (permalink / raw) To: Rah Guzar; +Cc: 50951 > From: Rah Guzar <aikrahguzar@gmail.com> > Date: Sat, 2 Oct 2021 17:05:24 +0200 > > If you set bidi-display-reordering to a nil value, does the display > become better or worse? > > Setting it to nil completely garbles the text. This I what I see afterwards > reordering-nil.png OK, that's what I expected. It was a stab in the dark. > By the way, the problem of size dependent misplacement happens with another Urdu font > Urdu_Emad_Nastaliq that doesn't rely on extensive composition which I tried. I'm afraid this is where I must stop trying to help investigating this issue, as I'm long out of my depth in this area. It sounds like some tricky issue with the fonts, but maybe something else is at work here, e.g., with Cairo display or something. But I'm just guessing at this point, sorry. ^ permalink raw reply [flat|nested] 44+ messages in thread
* bug#50951: Fwd: bug#50951: 28.0.50; Urdu text is not displayed correctly 2021-10-02 15:09 ` Eli Zaretskii @ 2021-10-02 15:18 ` Rah Guzar 0 siblings, 0 replies; 44+ messages in thread From: Rah Guzar @ 2021-10-02 15:18 UTC (permalink / raw) To: Eli Zaretskii; +Cc: 50951 [-- Attachment #1: Type: text/plain, Size: 659 bytes --] On Sat, Oct 2, 2021 at 5:10 PM Eli Zaretskii <eliz@gnu.org> wrote: > I'm afraid this is where I must stop trying to help investigating this > issue, as I'm long out of my depth in this area. It sounds like some > tricky issue with the fonts, but maybe something else is at work here, > e.g., with Cairo display or something. But I'm just guessing at this > point, sorry. > Thanks a lot for the help. It would be nice if there is a proper solution to this problem but there is at least an easy workaround of using large Urdu fonts like "Jameel Noori Nastaleeq" or "Alvi Nastaleeq". It seems like only small fonts like "NotoNastaliqUrdu" have this problem. [-- Attachment #2: Type: text/html, Size: 1091 bytes --] ^ permalink raw reply [flat|nested] 44+ messages in thread
* bug#50951: Fwd: bug#50951: 28.0.50; Urdu text is not displayed correctly 2021-10-02 12:47 ` Rah Guzar 2021-10-02 13:09 ` Eli Zaretskii @ 2021-10-02 14:18 ` Andreas Schwab 2021-10-02 14:40 ` Eli Zaretskii 2021-10-02 15:07 ` Rah Guzar 1 sibling, 2 replies; 44+ messages in thread From: Andreas Schwab @ 2021-10-02 14:18 UTC (permalink / raw) To: Rah Guzar; +Cc: 50951 On Okt 02 2021, Rah Guzar wrote: > On Sat, Oct 2, 2021 at 2:18 PM Eli Zaretskii <eliz@gnu.org> wrote: > >> What font displays them individually? You should be able to tell that >> if you type "C-u C-x =" on one of these characters. >> > This is the default font that `emacs -Q` chooses. Using "C-u C-x =" I see, > > ftcrhb:-PfEd-DejaVu Sans-normal-normal-normal-*-13-*-*-*-*-0-iso10646-1 > (#x56F) DejaVu Sans misses a glyph for ARABIC LETTER HEH GOAL, so Emacs has to select a different font for it. -- Andreas Schwab, schwab@linux-m68k.org GPG Key fingerprint = 7578 EB47 D4E5 4D69 2510 2552 DF73 E780 A9DA AEC1 "And now for something completely different." ^ permalink raw reply [flat|nested] 44+ messages in thread
* bug#50951: Fwd: bug#50951: 28.0.50; Urdu text is not displayed correctly 2021-10-02 14:18 ` Andreas Schwab @ 2021-10-02 14:40 ` Eli Zaretskii 2021-10-02 15:07 ` Rah Guzar 1 sibling, 0 replies; 44+ messages in thread From: Eli Zaretskii @ 2021-10-02 14:40 UTC (permalink / raw) To: Andreas Schwab; +Cc: 50951, aikrahguzar > From: Andreas Schwab <schwab@linux-m68k.org> > Cc: Eli Zaretskii <eliz@gnu.org>, 50951@debbugs.gnu.org > Date: Sat, 02 Oct 2021 16:18:35 +0200 > > On Okt 02 2021, Rah Guzar wrote: > > > On Sat, Oct 2, 2021 at 2:18 PM Eli Zaretskii <eliz@gnu.org> wrote: > > > >> What font displays them individually? You should be able to tell that > >> if you type "C-u C-x =" on one of these characters. > >> > > This is the default font that `emacs -Q` chooses. Using "C-u C-x =" I see, > > > > ftcrhb:-PfEd-DejaVu Sans-normal-normal-normal-*-13-*-*-*-*-0-iso10646-1 > > (#x56F) > > DejaVu Sans misses a glyph for ARABIC LETTER HEH GOAL, so Emacs has to > select a different font for it. Thanks, should be fixed now. ^ permalink raw reply [flat|nested] 44+ messages in thread
* bug#50951: Fwd: bug#50951: 28.0.50; Urdu text is not displayed correctly 2021-10-02 14:18 ` Andreas Schwab 2021-10-02 14:40 ` Eli Zaretskii @ 2021-10-02 15:07 ` Rah Guzar 2021-10-02 15:14 ` Eli Zaretskii 1 sibling, 1 reply; 44+ messages in thread From: Rah Guzar @ 2021-10-02 15:07 UTC (permalink / raw) To: Andreas Schwab; +Cc: 50951 [-- Attachment #1: Type: text/plain, Size: 276 bytes --] On Sat, Oct 2, 2021 at 4:18 PM Andreas Schwab <schwab@linux-m68k.org> wrote: > DejaVu Sans misses a glyph for ARABIC LETTER HEH GOAL, so Emacs has to > select a different font for it. > This also true for ARABIC LETTER YEH BARREE which causes also causes the same problem. [-- Attachment #2: Type: text/html, Size: 625 bytes --] ^ permalink raw reply [flat|nested] 44+ messages in thread
* bug#50951: Fwd: bug#50951: 28.0.50; Urdu text is not displayed correctly 2021-10-02 15:07 ` Rah Guzar @ 2021-10-02 15:14 ` Eli Zaretskii [not found] ` <CAP094xAoHdQZoPL9y6aZOq-WGZe0cYtNsm9Trm+yBiyjyZ4j7g@mail.gmail.com> 0 siblings, 1 reply; 44+ messages in thread From: Eli Zaretskii @ 2021-10-02 15:14 UTC (permalink / raw) To: Rah Guzar; +Cc: schwab, 50951 > From: Rah Guzar <aikrahguzar@gmail.com> > Date: Sat, 2 Oct 2021 17:07:57 +0200 > Cc: Eli Zaretskii <eliz@gnu.org>, 50951@debbugs.gnu.org > > On Sat, Oct 2, 2021 at 4:18 PM Andreas Schwab <schwab@linux-m68k.org> wrote: > > DejaVu Sans misses a glyph for ARABIC LETTER HEH GOAL, so Emacs has to > select a different font for it. > > This also true for ARABIC LETTER YEH BARREE which causes also causes the same problem. As I already added U+06C1 ARABIC LETTER HEH GOAL to the list of required characters for displaying Arabic, the question is now: are there fonts inappropriate for Arabic that support U+06C1, but do NOT support U+06D2 ARABIC LETTER YEH BARREE? If there are such fonts, then we should add U+06D2 to the list of required characters as well. ^ permalink raw reply [flat|nested] 44+ messages in thread
[parent not found: <CAP094xAoHdQZoPL9y6aZOq-WGZe0cYtNsm9Trm+yBiyjyZ4j7g@mail.gmail.com>]
* bug#50951: Fwd: bug#50951: 28.0.50; Urdu text is not displayed correctly [not found] ` <CAP094xAoHdQZoPL9y6aZOq-WGZe0cYtNsm9Trm+yBiyjyZ4j7g@mail.gmail.com> @ 2021-10-02 15:54 ` Eli Zaretskii 2021-10-02 16:06 ` Rah Guzar 0 siblings, 1 reply; 44+ messages in thread From: Eli Zaretskii @ 2021-10-02 15:54 UTC (permalink / raw) To: Rah Guzar; +Cc: 50951 > From: Rah Guzar <aikrahguzar@gmail.com> > Date: Sat, 2 Oct 2021 17:27:33 +0200 > > As I already added U+06C1 ARABIC LETTER HEH GOAL to the list of > required characters for displaying Arabic, the question is now: are > there fonts inappropriate for Arabic that support U+06C1, but do NOT > support U+06D2 ARABIC LETTER YEH BARREE? If there are such fonts, > then we should add U+06D2 to the list of required characters as well. > > I haven't seen a font like this and I will reach out if I do. But I think this solution > might cause issues with fonts for just Arabic which don't support Urdu (if there > are such). What kind of issues did you have in mind? ^ permalink raw reply [flat|nested] 44+ messages in thread
* bug#50951: Fwd: bug#50951: 28.0.50; Urdu text is not displayed correctly 2021-10-02 15:54 ` Eli Zaretskii @ 2021-10-02 16:06 ` Rah Guzar 2021-10-02 16:09 ` Eli Zaretskii 0 siblings, 1 reply; 44+ messages in thread From: Rah Guzar @ 2021-10-02 16:06 UTC (permalink / raw) To: Eli Zaretskii; +Cc: 50951 [-- Attachment #1: Type: text/plain, Size: 339 bytes --] > What kind of issues did you have in mind? > This might be me not understanding how required characters work but if a user sets a font for only Arabic (not Urdu) and the font doesn't have these characters, will it cause emacs to use a fallback for Arabic text? Or is the restriction only relevant for the selection of implicit fallback? [-- Attachment #2: Type: text/html, Size: 612 bytes --] ^ permalink raw reply [flat|nested] 44+ messages in thread
* bug#50951: Fwd: bug#50951: 28.0.50; Urdu text is not displayed correctly 2021-10-02 16:06 ` Rah Guzar @ 2021-10-02 16:09 ` Eli Zaretskii 2022-09-04 21:07 ` Lars Ingebrigtsen 0 siblings, 1 reply; 44+ messages in thread From: Eli Zaretskii @ 2021-10-02 16:09 UTC (permalink / raw) To: Rah Guzar; +Cc: 50951 > From: Rah Guzar <aikrahguzar@gmail.com> > Date: Sat, 2 Oct 2021 18:06:09 +0200 > Cc: 50951@debbugs.gnu.org > > What kind of issues did you have in mind? > > This might be me not understanding how required characters work but if a user sets a font > for only Arabic (not Urdu) and the font doesn't have these characters, will it cause emacs > to use a fallback for Arabic text? Or is the restriction only relevant for the selection of implicit > fallback? No, if the user customizes the fontset, the font specified there will be used, no questions asked. The representative characters are only used for selecting the fonts by default. AFAIK, at least. ^ permalink raw reply [flat|nested] 44+ messages in thread
* bug#50951: 28.0.50; Urdu text is not displayed correctly 2021-10-02 16:09 ` Eli Zaretskii @ 2022-09-04 21:07 ` Lars Ingebrigtsen 2022-09-05 11:22 ` Eli Zaretskii 2022-09-05 11:57 ` Rah Guzar via Bug reports for GNU Emacs, the Swiss army knife of text editors 0 siblings, 2 replies; 44+ messages in thread From: Lars Ingebrigtsen @ 2022-09-04 21:07 UTC (permalink / raw) To: Eli Zaretskii; +Cc: 50951, Rah Guzar I've only lightly skimmed this thread, but it seems like at least some of the problems were solved. Is there anything more to do here on the Emacs side? ^ permalink raw reply [flat|nested] 44+ messages in thread
* bug#50951: 28.0.50; Urdu text is not displayed correctly 2022-09-04 21:07 ` Lars Ingebrigtsen @ 2022-09-05 11:22 ` Eli Zaretskii 2022-09-05 11:57 ` Rah Guzar via Bug reports for GNU Emacs, the Swiss army knife of text editors 1 sibling, 0 replies; 44+ messages in thread From: Eli Zaretskii @ 2022-09-05 11:22 UTC (permalink / raw) To: Lars Ingebrigtsen; +Cc: 50951, aikrahguzar > From: Lars Ingebrigtsen <larsi@gnus.org> > Cc: Rah Guzar <aikrahguzar@gmail.com>, 50951@debbugs.gnu.org > Date: Sun, 04 Sep 2022 23:07:30 +0200 > > I've only lightly skimmed this thread, but it seems like at least some > of the problems were solved. Is there anything more to do here on the > Emacs side? Not from my POV, no. ^ permalink raw reply [flat|nested] 44+ messages in thread
* bug#50951: 28.0.50; Urdu text is not displayed correctly 2022-09-04 21:07 ` Lars Ingebrigtsen 2022-09-05 11:22 ` Eli Zaretskii @ 2022-09-05 11:57 ` Rah Guzar via Bug reports for GNU Emacs, the Swiss army knife of text editors 2022-09-05 12:29 ` Eli Zaretskii 1 sibling, 1 reply; 44+ messages in thread From: Rah Guzar via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2022-09-05 11:57 UTC (permalink / raw) To: Lars Ingebrigtsen; +Cc: Eli Zaretskii, 50951 Lars Ingebrigtsen <larsi@gnus.org> writes: > I've only lightly skimmed this thread, but it seems like at least some > of the problems were solved. Is there anything more to do here on the > Emacs side? Hi Lars and Eli, I am on emacs 28 so this might not be accurate for the development version of emacs. Right now urdu text renders fine for me using the default font which for me is, -AXIS-Zohra Unicode-normal-normal-normal-*-32-*-*-*-*-0-iso10646-1 So that aspect has improved. However if I change my font to Noto Nastaliq by evaluating, (set-fontset-font t 'arabic (font-spec :family "NotoNastaliqUrdu")) rendering is still bad. There are nastaliq fonts (very big ones) that render fine. My experience is that if font size is around 10 megabytes it renders fine, if the size is less than that it has problems (on my system Noto Nastaliq is 1.1M). As in the thread this is specific to emacs and not a problem with harfbuzz generally. So situation is acceptable but needs workarounds to get a good experience. Rahguzar ^ permalink raw reply [flat|nested] 44+ messages in thread
* bug#50951: 28.0.50; Urdu text is not displayed correctly 2022-09-05 11:57 ` Rah Guzar via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2022-09-05 12:29 ` Eli Zaretskii 2022-09-05 13:03 ` Rah Guzar via Bug reports for GNU Emacs, the Swiss army knife of text editors 0 siblings, 1 reply; 44+ messages in thread From: Eli Zaretskii @ 2022-09-05 12:29 UTC (permalink / raw) To: Rah Guzar; +Cc: larsi, 50951 > From: Rah Guzar <rahguzar@zohomail.eu> > Cc: Eli Zaretskii <eliz@gnu.org>, 50951@debbugs.gnu.org > Date: Mon, 05 Sep 2022 13:57:24 +0200 > > > Lars Ingebrigtsen <larsi@gnus.org> writes: > > > I've only lightly skimmed this thread, but it seems like at least some > > of the problems were solved. Is there anything more to do here on the > > Emacs side? > > Hi Lars and Eli, > I am on emacs 28 so this might not be accurate for the development > version of emacs. Right now urdu text renders fine for me using the > default font which for me is, > > -AXIS-Zohra Unicode-normal-normal-normal-*-32-*-*-*-*-0-iso10646-1 > > So that aspect has improved. > > However if I change my font to Noto Nastaliq by evaluating, > > (set-fontset-font t 'arabic (font-spec :family "NotoNastaliqUrdu")) > > rendering is still bad. There are nastaliq fonts > (very big ones) that render fine. My experience is that if font size > is around 10 megabytes it renders fine, if the size is less than that > it has problems (on my system Noto Nastaliq is 1.1M). > > As in the thread this is specific to emacs and not a problem with > harfbuzz generally. It is unclear to me why this conclusion. Emacs uses HarfBuzz, and the only factor that could affect that, apart from selecting the font, is the setting of the current-iso639-language variable, which AFAIR Rahguzar tried setting with no success. > So situation is acceptable but needs workarounds to get a good > experience. My conclusion from this is that Noto Nastaliq is not a good font for Urdu. ^ permalink raw reply [flat|nested] 44+ messages in thread
* bug#50951: 28.0.50; Urdu text is not displayed correctly 2022-09-05 12:29 ` Eli Zaretskii @ 2022-09-05 13:03 ` Rah Guzar via Bug reports for GNU Emacs, the Swiss army knife of text editors 2022-09-05 13:55 ` Eli Zaretskii ` (2 more replies) 0 siblings, 3 replies; 44+ messages in thread From: Rah Guzar via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2022-09-05 13:03 UTC (permalink / raw) To: Eli Zaretskii; +Cc: larsi, 50951 Hi Eli, Eli Zaretskii <eliz@gnu.org> writes: > It is unclear to me why this conclusion. Emacs uses HarfBuzz, and the > only factor that could affect that, apart from selecting the font, is > the setting of the current-iso639-language variable, which AFAIR > Rahguzar tried setting with no success. At your suggestion, I tried hb-view and it renders Noto Nastaliq fine. Similarly Libre Office which also uses harfbuzz as far as I understand, also renders it fine. Which is why I said that the problem is limited to emacs. My understanding of font rendering is non-existent but visually what seems to happen is that emacs displays all the individual atoms (glyphs?) but it doesn't know how to position them relative to each other so they overlap and obscure each other. This positioning is especially tricky in Nastaliq fonts since it can require moving all of up, down, left, right. The big fonts that emacs render correctly, take care of this by prepackaging all these combinations of characters that require anything other than right to left movement as separate shapes. Sorry, if this reads as confused. > My conclusion from this is that Noto Nastaliq is not a good font for > Urdu. On an aesthetic level, I tend to agree. But linux distributions package very few Urdu fonts and it tends to be one of the few. ^ permalink raw reply [flat|nested] 44+ messages in thread
* bug#50951: 28.0.50; Urdu text is not displayed correctly 2022-09-05 13:03 ` Rah Guzar via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2022-09-05 13:55 ` Eli Zaretskii [not found] ` <87pmg97vsg.fsf@zohomail.eu> 2022-09-06 4:26 ` Visuwesh 2022-09-07 6:18 ` YAMAMOTO Mitsuharu 2 siblings, 1 reply; 44+ messages in thread From: Eli Zaretskii @ 2022-09-05 13:55 UTC (permalink / raw) To: Rah Guzar; +Cc: larsi, 50951 > From: Rah Guzar <rahguzar@zohomail.eu> > Cc: larsi@gnus.org, 50951@debbugs.gnu.org > Date: Mon, 05 Sep 2022 15:03:47 +0200 > > > My conclusion from this is that Noto Nastaliq is not a good font for > > Urdu. > > On an aesthetic level, I tend to agree. But linux distributions package > very few Urdu fonts and it tends to be one of the few. FWIW, on my system I cannot convince Emacs to use Noto Nastaliq Urdu font for Urdu. I have no idea what's going on here, sorry. ^ permalink raw reply [flat|nested] 44+ messages in thread
[parent not found: <87pmg97vsg.fsf@zohomail.eu>]
* bug#50951: 28.0.50; Urdu text is not displayed correctly [not found] ` <87pmg97vsg.fsf@zohomail.eu> @ 2022-09-05 15:47 ` Eli Zaretskii 0 siblings, 0 replies; 44+ messages in thread From: Eli Zaretskii @ 2022-09-05 15:47 UTC (permalink / raw) To: Rah Guzar; +Cc: rahguzar, larsi, 50951 > From: Rah Guzar <rahguzar@zohomail.eu> > Cc: Rah Guzar <rahguzar@zohomail.eu>, larsi@gnus.org, 50951@debbugs.gnu.org > Date: Mon, 05 Sep 2022 16:09:31 +0200 > > Eli Zaretskii <eliz@gnu.org> writes: > > > FWIW, on my system I cannot convince Emacs to use Noto Nastaliq Urdu > > font for Urdu. I have no idea what's going on here, sorry. > > I do it by evaluating, > > (set-fontset-font t 'arabic (font-spec :family "NotoNastaliqUrdu") > > and `describe-char` confirms that it is being used. I have attached a screenshot. That's what I tried as well, among many other things. Nothing worked. ^ permalink raw reply [flat|nested] 44+ messages in thread
* bug#50951: 28.0.50; Urdu text is not displayed correctly 2022-09-05 13:03 ` Rah Guzar via Bug reports for GNU Emacs, the Swiss army knife of text editors 2022-09-05 13:55 ` Eli Zaretskii @ 2022-09-06 4:26 ` Visuwesh 2022-09-06 11:05 ` Eli Zaretskii 2022-09-07 6:18 ` YAMAMOTO Mitsuharu 2 siblings, 1 reply; 44+ messages in thread From: Visuwesh @ 2022-09-06 4:26 UTC (permalink / raw) To: 50951; +Cc: rahguzar, eliz, larsi [திங்கள் செப்டம்பர் 05, 2022] Rah Guzar via "Bug reports for GNU Emacs, the Swiss army knife of text editors" wrote: > Hi Eli, > Eli Zaretskii <eliz@gnu.org> writes: > >> It is unclear to me why this conclusion. Emacs uses HarfBuzz, and the >> only factor that could affect that, apart from selecting the font, is >> the setting of the current-iso639-language variable, which AFAIR >> Rahguzar tried setting with no success. > > At your suggestion, I tried hb-view and it renders Noto Nastaliq fine. > Similarly Libre Office which also uses harfbuzz as far as I understand, > also renders it fine. Which is why I said that the problem is limited to > emacs. My understanding of font rendering is non-existent but visually > what seems to happen is that emacs displays all the individual atoms > (glyphs?) but it doesn't know how to position them relative to each > other so they overlap and obscure each other. This positioning is > especially tricky in Nastaliq fonts since it can require moving all of > up, down, left, right. The big fonts that emacs render correctly, take > care of this by prepackaging all these combinations of characters that > require anything other than right to left movement as separate shapes. To my ears, this sounds an awful lot like bug#54646 where I faced similar font clipping issues with Noto Serif Tamil (and other Tamil fonts). The issues with clipping and other glyph placement issues went away when I used the Xft+Harfbuzz backend, perhaps that might fix your issue as well? But you might trade crisp font rendering for a slightly blurry one though; in my case it was a trade-off I had to make. ^ permalink raw reply [flat|nested] 44+ messages in thread
* bug#50951: 28.0.50; Urdu text is not displayed correctly 2022-09-06 4:26 ` Visuwesh @ 2022-09-06 11:05 ` Eli Zaretskii 2022-09-06 13:18 ` Visuwesh 0 siblings, 1 reply; 44+ messages in thread From: Eli Zaretskii @ 2022-09-06 11:05 UTC (permalink / raw) To: Visuwesh; +Cc: rahguzar, 50951, larsi > From: Visuwesh <visuweshm@gmail.com> > Cc: Eli Zaretskii <eliz@gnu.org>, Rah Guzar <rahguzar@zohomail.eu>, > larsi@gnus.org, 50951@debbugs.gnu.org > Date: Tue, 06 Sep 2022 09:56:09 +0530 > > The issues with clipping and other glyph placement issues went > away when I used the Xft+Harfbuzz backend As opposed to what? Cairo+HarfBuzz? or something else? ^ permalink raw reply [flat|nested] 44+ messages in thread
* bug#50951: 28.0.50; Urdu text is not displayed correctly 2022-09-06 11:05 ` Eli Zaretskii @ 2022-09-06 13:18 ` Visuwesh 0 siblings, 0 replies; 44+ messages in thread From: Visuwesh @ 2022-09-06 13:18 UTC (permalink / raw) To: Eli Zaretskii; +Cc: rahguzar, 50951, larsi [செவ்வாய் செப்டம்பர் 06, 2022] Eli Zaretskii wrote: >> From: Visuwesh <visuweshm@gmail.com> >> Cc: Eli Zaretskii <eliz@gnu.org>, Rah Guzar <rahguzar@zohomail.eu>, >> larsi@gnus.org, 50951@debbugs.gnu.org >> Date: Tue, 06 Sep 2022 09:56:09 +0530 >> >> The issues with clipping and other glyph placement issues went >> away when I used the Xft+Harfbuzz backend > > As opposed to what? Cairo+HarfBuzz? or something else? Cairo+Harfbuzz. ^ permalink raw reply [flat|nested] 44+ messages in thread
* bug#50951: 28.0.50; Urdu text is not displayed correctly 2022-09-05 13:03 ` Rah Guzar via Bug reports for GNU Emacs, the Swiss army knife of text editors 2022-09-05 13:55 ` Eli Zaretskii 2022-09-06 4:26 ` Visuwesh @ 2022-09-07 6:18 ` YAMAMOTO Mitsuharu 2022-09-07 11:27 ` Eli Zaretskii 2 siblings, 1 reply; 44+ messages in thread From: YAMAMOTO Mitsuharu @ 2022-09-07 6:18 UTC (permalink / raw) To: Rah Guzar; +Cc: Eli Zaretskii, larsi, 50951 On Mon, 05 Sep 2022 22:03:47 +0900, Rah Guzar via Bug reports for GNU Emacs, the Swiss army knife of text editors wrote: > > At your suggestion, I tried hb-view and it renders Noto Nastaliq fine. > Similarly Libre Office which also uses harfbuzz as far as I understand, > also renders it fine. Which is why I said that the problem is limited to > emacs. Probably the following change will fix the problem: diff --git a/src/hbfont.c b/src/hbfont.c index 2721a66120..01db522909 100644 --- a/src/hbfont.c +++ b/src/hbfont.c @@ -598,6 +598,8 @@ hbfont_shape (Lisp_Object lgstring, Lisp_Object direction) make_fixnum (xoff), make_fixnum (yoff), make_fixnum (wadjust))); + else + LGLYPH_SET_ADJUSTMENT (lglyph, Qnil); } return make_fixnum (glyph_len); The other shapers except uniscribe_shape need to be changed, too. Alternatively, one could clear garbage entries at the caller side: diff --git a/src/composite.c b/src/composite.c index 22422cca09..249d7587f6 100644 --- a/src/composite.c +++ b/src/composite.c @@ -876,7 +876,8 @@ fill_gstring_body (Lisp_Object gstring) } LGLYPH_SET_ADJUSTMENT (g, Qnil); } - if (i < LGSTRING_GLYPH_LEN (gstring)) + len = LGSTRING_GLYPH_LEN (gstring); + for (; i < len; i++) LGSTRING_SET_GLYPH (gstring, i, Qnil); } YAMAMOTO Mitsuharu mituharu@math.s.chiba-u.ac.jp ^ permalink raw reply related [flat|nested] 44+ messages in thread
* bug#50951: 28.0.50; Urdu text is not displayed correctly 2022-09-07 6:18 ` YAMAMOTO Mitsuharu @ 2022-09-07 11:27 ` Eli Zaretskii 2022-09-08 6:06 ` Visuwesh 0 siblings, 1 reply; 44+ messages in thread From: Eli Zaretskii @ 2022-09-07 11:27 UTC (permalink / raw) To: YAMAMOTO Mitsuharu; +Cc: rahguzar, larsi, 50951 > Date: Wed, 07 Sep 2022 15:18:21 +0900 > From: YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp> > Cc: Eli Zaretskii <eliz@gnu.org>, > larsi@gnus.org, > 50951@debbugs.gnu.org > > Probably the following change will fix the problem: Thanks. Rah Guzar, can you try one of these changes and see if they fix the problem? ^ permalink raw reply [flat|nested] 44+ messages in thread
* bug#50951: 28.0.50; Urdu text is not displayed correctly 2022-09-07 11:27 ` Eli Zaretskii @ 2022-09-08 6:06 ` Visuwesh 2022-09-09 15:00 ` Rah Guzar via Bug reports for GNU Emacs, the Swiss army knife of text editors 2022-09-11 10:26 ` Visuwesh 0 siblings, 2 replies; 44+ messages in thread From: Visuwesh @ 2022-09-08 6:06 UTC (permalink / raw) To: Eli Zaretskii; +Cc: rahguzar, larsi, 50951, YAMAMOTO Mitsuharu [புதன் செப்டம்பர் 07, 2022] Eli Zaretskii wrote: >> Date: Wed, 07 Sep 2022 15:18:21 +0900 >> From: YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp> >> Cc: Eli Zaretskii <eliz@gnu.org>, >> larsi@gnus.org, >> 50951@debbugs.gnu.org >> >> Probably the following change will fix the problem: > > Thanks. Rah Guzar, can you try one of these changes and see if they > fix the problem? Not sure about Rah Guzar, but it squashes bug#54646 for me. Thank you so very much, Yamamoto Mitsuharu! With regards to the performance, my eyes say that patch no. 1 (i.e., the one that patches src/hbfont.c) is slightly faster than patch no. 2 when I continually zoomed to reproduce bug#54646. The test material was this random webpage https://www.dinamalar.com/news_detail.asp?id=3117719, and M-x report-emacs-bug report on the Emacs with the patch is at the end. The test that I used is the same as I outlined in bug#54646, namely, visit that webpage in eww, zoom in and out with C-scroll-wheel. The glyphs _do not_ bump into each other or get weirdly placed whereas without the patch, glyphs can be oddly spaced. In GNU Emacs 29.0.50 (build 6, x86_64-pc-linux-gnu, X toolkit, cairo version 1.16.0, Xaw scroll bars) of 2022-09-08 built on astatine Repository revision: 9219e83b3c0ef53df02caf4c8ba38f482937ab50 Repository branch: master Windowing system distributor 'The X.Org Foundation', version 11.0.12101004 System Description: Debian GNU/Linux bookworm/sid Configured using: 'configure --with-sound=alsa --with-x-toolkit=lucid --with-json --without-xaw3d --without-gconf --without-libsystemd' Configured features: ACL CAIRO DBUS FREETYPE GIF GLIB GMP GNUTLS GPM GSETTINGS HARFBUZZ JPEG JSON LIBOTF LIBSELINUX LIBXML2 MODULES NOTIFY INOTIFY PDUMPER PNG RSVG SECCOMP SOUND SQLITE3 THREADS TIFF TOOLKIT_SCROLL_BARS WEBP X11 XDBE XIM XINPUT2 XPM LUCID ZLIB Important settings: value of $LC_MONETARY: ta_IN.UTF-8 value of $LC_NUMERIC: ta_IN.UTF-8 value of $LANG: en_GB.UTF-8 locale-coding-system: utf-8-unix ^ permalink raw reply [flat|nested] 44+ messages in thread
* bug#50951: 28.0.50; Urdu text is not displayed correctly 2022-09-08 6:06 ` Visuwesh @ 2022-09-09 15:00 ` Rah Guzar via Bug reports for GNU Emacs, the Swiss army knife of text editors 2022-09-17 16:37 ` Rah Guzar via Bug reports for GNU Emacs, the Swiss army knife of text editors 2022-09-11 10:26 ` Visuwesh 1 sibling, 1 reply; 44+ messages in thread From: Rah Guzar via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2022-09-09 15:00 UTC (permalink / raw) To: Visuwesh; +Cc: rahguzar, Eli Zaretskii, larsi, YAMAMOTO Mitsuharu, 50951 Unfortunately I have very limited experience with building software and none at all with applying patches so testing this will be a non-trivial undertaking. I will try to do this next weekend. But what Visuwesh describes seem exactly the symptoms I was experiencing so I am pretty positive that it will work for me too. So thank you very much indeed! Rah Guzar Visuwesh <visuweshm@gmail.com> writes: > [புதன் செப்டம்பர் 07, 2022] Eli Zaretskii wrote: > >>> Date: Wed, 07 Sep 2022 15:18:21 +0900 >>> From: YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp> >>> Cc: Eli Zaretskii <eliz@gnu.org>, >>> larsi@gnus.org, >>> 50951@debbugs.gnu.org >>> >>> Probably the following change will fix the problem: >> >> Thanks. Rah Guzar, can you try one of these changes and see if they >> fix the problem? > > Not sure about Rah Guzar, but it squashes bug#54646 for me. Thank you > so very much, Yamamoto Mitsuharu! > > With regards to the performance, my eyes say that patch no. 1 (i.e., the > one that patches src/hbfont.c) is slightly faster than patch no. 2 when > I continually zoomed to reproduce bug#54646. The test material was this > random webpage https://www.dinamalar.com/news_detail.asp?id=3117719, > and M-x report-emacs-bug report on the Emacs with the patch is at the > end. > The test that I used is the same as I outlined in bug#54646, namely, > visit that webpage in eww, zoom in and out with C-scroll-wheel. The > glyphs _do not_ bump into each other or get weirdly placed whereas > without the patch, glyphs can be oddly spaced. > > In GNU Emacs 29.0.50 (build 6, x86_64-pc-linux-gnu, X toolkit, cairo > version 1.16.0, Xaw scroll bars) of 2022-09-08 built on astatine > Repository revision: 9219e83b3c0ef53df02caf4c8ba38f482937ab50 > Repository branch: master > Windowing system distributor 'The X.Org Foundation', version 11.0.12101004 > System Description: Debian GNU/Linux bookworm/sid > > Configured using: > 'configure --with-sound=alsa --with-x-toolkit=lucid --with-json > --without-xaw3d --without-gconf --without-libsystemd' > > Configured features: > ACL CAIRO DBUS FREETYPE GIF GLIB GMP GNUTLS GPM GSETTINGS HARFBUZZ JPEG > JSON LIBOTF LIBSELINUX LIBXML2 MODULES NOTIFY INOTIFY PDUMPER PNG RSVG > SECCOMP SOUND SQLITE3 THREADS TIFF TOOLKIT_SCROLL_BARS WEBP X11 XDBE XIM > XINPUT2 XPM LUCID ZLIB > > Important settings: > value of $LC_MONETARY: ta_IN.UTF-8 > value of $LC_NUMERIC: ta_IN.UTF-8 > value of $LANG: en_GB.UTF-8 > locale-coding-system: utf-8-unix ^ permalink raw reply [flat|nested] 44+ messages in thread
* bug#50951: 28.0.50; Urdu text is not displayed correctly 2022-09-09 15:00 ` Rah Guzar via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2022-09-17 16:37 ` Rah Guzar via Bug reports for GNU Emacs, the Swiss army knife of text editors 2022-09-17 17:00 ` Eli Zaretskii 2022-09-20 3:41 ` YAMAMOTO Mitsuharu 0 siblings, 2 replies; 44+ messages in thread From: Rah Guzar via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2022-09-17 16:37 UTC (permalink / raw) To: Rah Guzar; +Cc: 50951, Eli Zaretskii, larsi, YAMAMOTO Mitsuharu, Visuwesh I finally tested the patches and both of them improve the situation by a lot but problems still remain. One word that is not rendered by accurately by them is ہنگام Where is problem is fourth character which is character: گ (displayed as گ) (codepoint 1711, #o3257, #x6af) charset: unicode-bmp (Unicode Basic Multilingual Plane (U+0000..U+FFFF)) code point in charset: 0x06AF script: arabic This character should be rendered as a circle and two slanted lines which seem to get clipped. Both the patches seem to have the same effect, except that with the first one above a threshold I have seen a newline not getting rendered so what should be two lines appear as one. This doesn't happen with the second patch. Rah Guzar Rah Guzar <rahguzar@zohomail.eu> writes: > Unfortunately I have very limited experience with building software and > none at all with applying patches so testing this will be a non-trivial > undertaking. I will try to do this next weekend. > > But what Visuwesh describes seem exactly the symptoms I was experiencing > so I am pretty positive that it will work for me too. So thank you very > much indeed! > > Rah Guzar > > Visuwesh <visuweshm@gmail.com> writes: > >> [புதன் செப்டம்பர் 07, 2022] Eli Zaretskii wrote: >> >>>> Date: Wed, 07 Sep 2022 15:18:21 +0900 >>>> From: YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp> >>>> Cc: Eli Zaretskii <eliz@gnu.org>, >>>> larsi@gnus.org, >>>> 50951@debbugs.gnu.org >>>> >>>> Probably the following change will fix the problem: >>> >>> Thanks. Rah Guzar, can you try one of these changes and see if they >>> fix the problem? >> >> Not sure about Rah Guzar, but it squashes bug#54646 for me. Thank you >> so very much, Yamamoto Mitsuharu! >> >> With regards to the performance, my eyes say that patch no. 1 (i.e., the >> one that patches src/hbfont.c) is slightly faster than patch no. 2 when >> I continually zoomed to reproduce bug#54646. The test material was this >> random webpage https://www.dinamalar.com/news_detail.asp?id=3117719, >> and M-x report-emacs-bug report on the Emacs with the patch is at the >> end. >> The test that I used is the same as I outlined in bug#54646, namely, >> visit that webpage in eww, zoom in and out with C-scroll-wheel. The >> glyphs _do not_ bump into each other or get weirdly placed whereas >> without the patch, glyphs can be oddly spaced. >> >> In GNU Emacs 29.0.50 (build 6, x86_64-pc-linux-gnu, X toolkit, cairo >> version 1.16.0, Xaw scroll bars) of 2022-09-08 built on astatine >> Repository revision: 9219e83b3c0ef53df02caf4c8ba38f482937ab50 >> Repository branch: master >> Windowing system distributor 'The X.Org Foundation', version 11.0.12101004 >> System Description: Debian GNU/Linux bookworm/sid >> >> Configured using: >> 'configure --with-sound=alsa --with-x-toolkit=lucid --with-json >> --without-xaw3d --without-gconf --without-libsystemd' >> >> Configured features: >> ACL CAIRO DBUS FREETYPE GIF GLIB GMP GNUTLS GPM GSETTINGS HARFBUZZ JPEG >> JSON LIBOTF LIBSELINUX LIBXML2 MODULES NOTIFY INOTIFY PDUMPER PNG RSVG >> SECCOMP SOUND SQLITE3 THREADS TIFF TOOLKIT_SCROLL_BARS WEBP X11 XDBE XIM >> XINPUT2 XPM LUCID ZLIB >> >> Important settings: >> value of $LC_MONETARY: ta_IN.UTF-8 >> value of $LC_NUMERIC: ta_IN.UTF-8 >> value of $LANG: en_GB.UTF-8 >> locale-coding-system: utf-8-unix ^ permalink raw reply [flat|nested] 44+ messages in thread
* bug#50951: 28.0.50; Urdu text is not displayed correctly 2022-09-17 16:37 ` Rah Guzar via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2022-09-17 17:00 ` Eli Zaretskii 2022-09-20 3:41 ` YAMAMOTO Mitsuharu 1 sibling, 0 replies; 44+ messages in thread From: Eli Zaretskii @ 2022-09-17 17:00 UTC (permalink / raw) To: Rah Guzar; +Cc: larsi, 50951, mituharu, visuweshm > From: Rah Guzar <rahguzar@zohomail.eu> > Cc: Visuwesh <visuweshm@gmail.com>, Eli Zaretskii <eliz@gnu.org>, YAMAMOTO > Mitsuharu <mituharu@math.s.chiba-u.ac.jp>, larsi@gnus.org, > 50951@debbugs.gnu.org > Date: Sat, 17 Sep 2022 18:37:39 +0200 > > > I finally tested the patches and both of them improve the situation by a > lot but problems still remain. One word that is not rendered by > accurately by them is > > ہنگام > > Where is problem is fourth character which is > character: گ (displayed as گ) (codepoint 1711, #o3257, #x6af) > charset: unicode-bmp (Unicode Basic Multilingual Plane (U+0000..U+FFFF)) > code point in charset: 0x06AF > script: arabic > > This character should be rendered as a circle and two slanted lines > which seem to get clipped. > > Both the patches seem to have the same effect, except that with the > first one above a threshold I have seen a newline not getting rendered > so what should be two lines appear as one. This doesn't happen with the > second patch. Thanks, I've now installed the second patch on the master branch. ^ permalink raw reply [flat|nested] 44+ messages in thread
* bug#50951: 28.0.50; Urdu text is not displayed correctly 2022-09-17 16:37 ` Rah Guzar via Bug reports for GNU Emacs, the Swiss army knife of text editors 2022-09-17 17:00 ` Eli Zaretskii @ 2022-09-20 3:41 ` YAMAMOTO Mitsuharu 2022-09-20 11:07 ` Eli Zaretskii 2022-09-20 12:35 ` Rah Guzar via Bug reports for GNU Emacs, the Swiss army knife of text editors 1 sibling, 2 replies; 44+ messages in thread From: YAMAMOTO Mitsuharu @ 2022-09-20 3:41 UTC (permalink / raw) To: Rah Guzar; +Cc: 50951, Eli Zaretskii, larsi, Visuwesh [-- Attachment #1: Type: text/plain, Size: 1470 bytes --] On Sun, 18 Sep 2022 01:37:39 +0900, Rah Guzar wrote: > > > I finally tested the patches and both of them improve the situation by a > lot but problems still remain. One word that is not rendered by > accurately by them is > > ہنگام > > Where is problem is fourth character which is > character: گ (displayed as گ) (codepoint 1711, #o3257, #x6af) > charset: unicode-bmp (Unicode Basic Multilingual Plane (U+0000..U+FFFF)) > code point in charset: 0x06AF > script: arabic > > This character should be rendered as a circle and two slanted lines > which seem to get clipped. Thanks for testing. The width of grapheme cluster corresponding to U+06AF (ARABIC LETTER GAF) is rounded to zero, and Emacs does not display such clusters: xdisp.c: 32424 gstring = composition_gstring_from_id (it->cmp_it.id); 32425 it->pixel_width 32426 = composition_gstring_width (gstring, it->cmp_it.from, it->cmp_it.to, 32427 &metrics); 32428 if (it->pixel_width == 0) 32429 { 32430 it->glyph_not_available_p = true; 32431 it->phys_ascent = it->ascent; 32432 it->phys_descent = it->descent; 32433 it->pixel_width = face->font->space_width; 32434 } 32435 else The attached patch avoids zero-width grapheme clusters by adding 1 to the width of the last glyph in such clusters. YAMAMOTO Mitsuharu mituharu@math.s.chiba-u.ac.jp [-- Attachment #2: avoid-zero-width-grapheme-clusters.diff --] [-- Type: application/octet-stream, Size: 2464 bytes --] diff --git a/src/composite.c b/src/composite.c index 249d7587f6..5e856fd5e5 100644 --- a/src/composite.c +++ b/src/composite.c @@ -800,6 +800,48 @@ composition_gstring_width (Lisp_Object gstring, ptrdiff_t from, ptrdiff_t to, return width; } +/* Adjust the width of each grapheme cluster of GSTRING because + zero-width grapheme clusters are not displayed. If the width is + zero, then the width of the last glyph in the cluster is + incremented. */ + +void +composition_gstring_adjust_zero_width (Lisp_Object gstring) +{ + ptrdiff_t from = 0; + int width = 0; + + for (ptrdiff_t i = 0; i < LGSTRING_GLYPH_LEN (gstring); i++) + { + Lisp_Object glyph = LGSTRING_GLYPH (gstring, i); + + if (NILP (glyph) || from != LGLYPH_FROM (glyph)) + { + eassert (i > 0); + Lisp_Object last = LGSTRING_GLYPH (gstring, i - 1); + + if (width == 0) + { + if (NILP (LGLYPH_ADJUSTMENT (last))) + LGLYPH_SET_ADJUSTMENT (last, + CALLN (Fvector, + make_fixnum (0), make_fixnum (0), + make_fixnum (LGLYPH_WIDTH (last) + + 1))); + else + ASET (LGLYPH_ADJUSTMENT (last), 2, + make_fixnum (LGLYPH_WADJUST (last) + 1)); + } + if (NILP (glyph)) + break; + from = LGLYPH_FROM (glyph); + width = 0; + } + width += (NILP (LGLYPH_ADJUSTMENT (glyph)) + ? LGLYPH_WIDTH (glyph) : LGLYPH_WADJUST (glyph)); + } +} + static Lisp_Object gstring_work; static Lisp_Object gstring_work_headers; diff --git a/src/composite.h b/src/composite.h index d77dd0d506..8a6fd203d0 100644 --- a/src/composite.h +++ b/src/composite.h @@ -340,6 +340,7 @@ #define LGLYPH_WADJUST(g) (VECTORP (LGLYPH_ADJUSTMENT (g)) \ extern bool composition_gstring_p (Lisp_Object); extern int composition_gstring_width (Lisp_Object, ptrdiff_t, ptrdiff_t, struct font_metrics *); +extern void composition_gstring_adjust_zero_width (Lisp_Object); extern bool find_automatic_composition (ptrdiff_t, ptrdiff_t, ptrdiff_t, ptrdiff_t *, ptrdiff_t *, diff --git a/src/font.c b/src/font.c index 413cb381ee..defbb5084b 100644 --- a/src/font.c +++ b/src/font.c @@ -4678,6 +4678,7 @@ DEFUN ("font-shape-gstring", Ffont_shape_gstring, Sfont_shape_gstring, 2, 2, 0, from = LGLYPH_FROM (glyph); to = LGLYPH_TO (glyph); } + composition_gstring_adjust_zero_width (gstring); return composition_gstring_put_cache (gstring, XFIXNUM (n)); shaper_error: ^ permalink raw reply related [flat|nested] 44+ messages in thread
* bug#50951: 28.0.50; Urdu text is not displayed correctly 2022-09-20 3:41 ` YAMAMOTO Mitsuharu @ 2022-09-20 11:07 ` Eli Zaretskii 2022-09-21 2:20 ` YAMAMOTO Mitsuharu 2022-09-20 12:35 ` Rah Guzar via Bug reports for GNU Emacs, the Swiss army knife of text editors 1 sibling, 1 reply; 44+ messages in thread From: Eli Zaretskii @ 2022-09-20 11:07 UTC (permalink / raw) To: YAMAMOTO Mitsuharu; +Cc: rahguzar, larsi, 50951, visuweshm > Date: Tue, 20 Sep 2022 12:41:40 +0900 > From: YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp> > Cc: Visuwesh <visuweshm@gmail.com>, > Eli Zaretskii <eliz@gnu.org>, > larsi@gnus.org, > 50951@debbugs.gnu.org > > The width of grapheme cluster corresponding to U+06AF (ARABIC LETTER > GAF) is rounded to zero, and Emacs does not display such clusters: > > xdisp.c: > 32424 gstring = composition_gstring_from_id (it->cmp_it.id); > 32425 it->pixel_width > 32426 = composition_gstring_width (gstring, it->cmp_it.from, it->cmp_it.to, > 32427 &metrics); > 32428 if (it->pixel_width == 0) > 32429 { > 32430 it->glyph_not_available_p = true; > 32431 it->phys_ascent = it->ascent; > 32432 it->phys_descent = it->descent; > 32433 it->pixel_width = face->font->space_width; > 32434 } > 32435 else > > The attached patch avoids zero-width grapheme clusters by adding 1 to > the width of the last glyph in such clusters. If the problem is rounding, I think we should do this adjustment only when the last glyph has a non-zero width that was rounded to zero, no? Otherwise, we are inventing adjustments out of thin air, which could adversely affect the displayed result, I think? Or maybe we should have a variable that controls this heuristic? Bottom line: I'm uneasy with messing with the grapheme cluster data without some sound basis. We delegate this job to a text-shaping engine for a reason. But if there is a sound basis for this adjustment, could you please elaborate on it? Thanks. ^ permalink raw reply [flat|nested] 44+ messages in thread
* bug#50951: 28.0.50; Urdu text is not displayed correctly 2022-09-20 11:07 ` Eli Zaretskii @ 2022-09-21 2:20 ` YAMAMOTO Mitsuharu 2022-09-21 2:25 ` YAMAMOTO Mitsuharu 2022-09-22 5:37 ` Eli Zaretskii 0 siblings, 2 replies; 44+ messages in thread From: YAMAMOTO Mitsuharu @ 2022-09-21 2:20 UTC (permalink / raw) To: Eli Zaretskii; +Cc: rahguzar, larsi, 50951, visuweshm [-- Attachment #1: Type: text/plain, Size: 2453 bytes --] On Tue, 20 Sep 2022 20:07:12 +0900, Eli Zaretskii wrote: > > > Date: Tue, 20 Sep 2022 12:41:40 +0900 > > From: YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp> > > Cc: Visuwesh <visuweshm@gmail.com>, > > Eli Zaretskii <eliz@gnu.org>, > > larsi@gnus.org, > > 50951@debbugs.gnu.org > > > > The width of grapheme cluster corresponding to U+06AF (ARABIC LETTER > > GAF) is rounded to zero, and Emacs does not display such clusters: > > > > xdisp.c: > > 32424 gstring = composition_gstring_from_id (it->cmp_it.id); > > 32425 it->pixel_width > > 32426 = composition_gstring_width (gstring, it->cmp_it.from, it->cmp_it.to, > > 32427 &metrics); > > 32428 if (it->pixel_width == 0) > > 32429 { > > 32430 it->glyph_not_available_p = true; > > 32431 it->phys_ascent = it->ascent; > > 32432 it->phys_descent = it->descent; > > 32433 it->pixel_width = face->font->space_width; > > 32434 } > > 32435 else > > > > The attached patch avoids zero-width grapheme clusters by adding 1 to > > the width of the last glyph in such clusters. > > If the problem is rounding, I think we should do this adjustment only > when the last glyph has a non-zero width that was rounded to zero, no? > Otherwise, we are inventing adjustments out of thin air, which could > adversely affect the displayed result, I think? > > Or maybe we should have a variable that controls this heuristic? > > Bottom line: I'm uneasy with messing with the grapheme cluster data > without some sound basis. We delegate this job to a text-shaping > engine for a reason. But if there is a sound basis for this > adjustment, could you please elaborate on it? > > Thanks. IIUC, the only "unsound" case is that the width of a grapheme cluster is exactly 0 before rounding. I think such a case is quite rare. And even for such a case, Emacs needs to put at least extra 1 pixel to move the cursor to the position of the grapheme cluster. So the adjustment made by the patch is minimum and necessary. The current (unpatched) master may put multiple pixels (space width of the font as in Line 32433 above), and moreover the corresponding glyphs are not displayed. If we keep this behavior for the "unsound" case, the result would be much more apart from the optimal. (The attachment is for comparison between unpatched, patched, and the output of hb-view (optimal).) YAMAMOTO Mitsuharu mituharu@math.s.chiba-u.ac.jp [-- Attachment #2: unpatched.pdf --] [-- Type: application/pdf, Size: 8073 bytes --] [-- Attachment #3: patched.pdf --] [-- Type: application/pdf, Size: 8307 bytes --] [-- Attachment #4: hb-view.pdf --] [-- Type: application/pdf, Size: 3467 bytes --] ^ permalink raw reply [flat|nested] 44+ messages in thread
* bug#50951: 28.0.50; Urdu text is not displayed correctly 2022-09-21 2:20 ` YAMAMOTO Mitsuharu @ 2022-09-21 2:25 ` YAMAMOTO Mitsuharu 2022-09-22 5:37 ` Eli Zaretskii 1 sibling, 0 replies; 44+ messages in thread From: YAMAMOTO Mitsuharu @ 2022-09-21 2:25 UTC (permalink / raw) To: Eli Zaretskii; +Cc: rahguzar, larsi, 50951, visuweshm [-- Attachment #1: Type: text/plain, Size: 297 bytes --] On Wed, 21 Sep 2022 11:20:54 +0900, YAMAMOTO Mitsuharu wrote: > > (The attachment is for comparison between unpatched, patched, and the > output of hb-view (optimal).) Sorry, the unpatched one was wrong. Below is the correct one. YAMAMOTO Mitsuharu mituharu@math.s.chiba-u.ac.jp [-- Attachment #2: unpatched.pdf --] [-- Type: application/pdf, Size: 8053 bytes --] ^ permalink raw reply [flat|nested] 44+ messages in thread
* bug#50951: 28.0.50; Urdu text is not displayed correctly 2022-09-21 2:20 ` YAMAMOTO Mitsuharu 2022-09-21 2:25 ` YAMAMOTO Mitsuharu @ 2022-09-22 5:37 ` Eli Zaretskii 2022-09-25 7:18 ` YAMAMOTO Mitsuharu 1 sibling, 1 reply; 44+ messages in thread From: Eli Zaretskii @ 2022-09-22 5:37 UTC (permalink / raw) To: YAMAMOTO Mitsuharu; +Cc: rahguzar, larsi, 50951, visuweshm > Date: Wed, 21 Sep 2022 11:20:54 +0900 > From: YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp> > Cc: rahguzar@zohomail.eu, > visuweshm@gmail.com, > larsi@gnus.org, > 50951@debbugs.gnu.org > > > If the problem is rounding, I think we should do this adjustment only > > when the last glyph has a non-zero width that was rounded to zero, no? > > Otherwise, we are inventing adjustments out of thin air, which could > > adversely affect the displayed result, I think? > > > > Or maybe we should have a variable that controls this heuristic? > > > > Bottom line: I'm uneasy with messing with the grapheme cluster data > > without some sound basis. We delegate this job to a text-shaping > > engine for a reason. But if there is a sound basis for this > > adjustment, could you please elaborate on it? > > > > Thanks. > > IIUC, the only "unsound" case is that the width of a grapheme cluster > is exactly 0 before rounding. I think such a case is quite rare. And > even for such a case, Emacs needs to put at least extra 1 pixel to > move the cursor to the position of the grapheme cluster. So the > adjustment made by the patch is minimum and necessary. > > The current (unpatched) master may put multiple pixels (space width of > the font as in Line 32433 above), and moreover the corresponding > glyphs are not displayed. If we keep this behavior for the "unsound" > case, the result would be much more apart from the optimal. Can you please point me to the place(s) in our code where this rounding takes place? Also, I asked whether you could elaborate on the rationale for adjusting the zero width to be 1 pixel, and I don't think you answered that particular question. What you are saying (AFAIU) is that heuristically the results of using this adjustment are better, at least in this case. I don't argue with that, but I wonder whether there's some rationale for this that isn't just heuristics? IOW, do you know how come hb-view doesn't have this problem? what do we do that produces the zero width where hb-view doesn't? Thanks. ^ permalink raw reply [flat|nested] 44+ messages in thread
* bug#50951: 28.0.50; Urdu text is not displayed correctly 2022-09-22 5:37 ` Eli Zaretskii @ 2022-09-25 7:18 ` YAMAMOTO Mitsuharu 2022-09-26 7:18 ` Eli Zaretskii 0 siblings, 1 reply; 44+ messages in thread From: YAMAMOTO Mitsuharu @ 2022-09-25 7:18 UTC (permalink / raw) To: Eli Zaretskii; +Cc: rahguzar, larsi, 50951, visuweshm On Thu, 22 Sep 2022 14:37:24 +0900, Eli Zaretskii wrote: > > > Date: Wed, 21 Sep 2022 11:20:54 +0900 > > From: YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp> > > Cc: rahguzar@zohomail.eu, > > visuweshm@gmail.com, > > larsi@gnus.org, > > 50951@debbugs.gnu.org > > > > > If the problem is rounding, I think we should do this adjustment only > > > when the last glyph has a non-zero width that was rounded to zero, no? > > > Otherwise, we are inventing adjustments out of thin air, which could > > > adversely affect the displayed result, I think? > > > > > > Or maybe we should have a variable that controls this heuristic? > > > > > > Bottom line: I'm uneasy with messing with the grapheme cluster data > > > without some sound basis. We delegate this job to a text-shaping > > > engine for a reason. But if there is a sound basis for this > > > adjustment, could you please elaborate on it? > > > > > > Thanks. > > > > IIUC, the only "unsound" case is that the width of a grapheme cluster > > is exactly 0 before rounding. I think such a case is quite rare. And > > even for such a case, Emacs needs to put at least extra 1 pixel to > > move the cursor to the position of the grapheme cluster. So the > > adjustment made by the patch is minimum and necessary. > > > > The current (unpatched) master may put multiple pixels (space width of > > the font as in Line 32433 above), and moreover the corresponding > > glyphs are not displayed. If we keep this behavior for the "unsound" > > case, the result would be much more apart from the optimal. > > Can you please point me to the place(s) in our code where this > rounding takes place? For the HarfBuzz shaper, the width rounding happens at Line 595 directly, and at the callee of Line 586 indirectly: hbfont.c: 585 unsigned code = info[i].codepoint; 586 font->driver->text_extents (font, &code, 1, &metrics); 587 LGLYPH_SET_WIDTH (lglyph, metrics.width); 588 LGLYPH_SET_LBEARING (lglyph, metrics.lbearing); 589 LGLYPH_SET_RBEARING (lglyph, metrics.rbearing); 590 LGLYPH_SET_ASCENT (lglyph, metrics.ascent); 591 LGLYPH_SET_DESCENT (lglyph, metrics.descent); 592 593 xoff = lround (pos[i].x_offset * position_unit); 594 yoff = - lround (pos[i].y_offset * position_unit); 595 wadjust = lround (pos[i].x_advance * position_unit); The value of position_unit is usually 1.0 / 32. For the callee of Line 586, rounding may happen either at the Emacs side as in the ftcrhb font backend, ftcrfont.c: 99 cairo_scaled_font_glyph_extents (ftcrfont_info->cr_scaled_font, 100 &cr_glyph, 1, &extents); 101 cache->lbearing = floor (extents.x_bearing); 102 cache->rbearing = ceil (extents.width + extents.x_bearing); 103 cache->width = lround (extents.x_advance); or at the library side as in the xfthb font backend. xftfont.c: 469 block_input (); 470 XftGlyphExtents (xftfont_info->display, xftfont_info->xftfont, code, nglyphs, 471 &extents); 472 unblock_input (); 473 474 metrics->lbearing = - extents.x; 475 metrics->rbearing = - extents.x + extents.width; 476 metrics->width = extents.xOff; For the Uniscribe shaper, rounding seems to happen at the library side: w32uniscribe.c: 297 int *advances; : 346 advances = alloca (max_glyphs * sizeof (int)); : 399 result = ScriptPlace (context, (SCRIPT_CACHE) &(uniscribe_font->cache), 400 glyphs, nglyphs, attributes, &(items[i].a), 401 advances, offsets, &overall_metrics); : 501 LGLYPH_SET_WIDTH (lglyph, advances[j]); : 563 ASET (vec, 2, make_fixnum (advances[j])); 564 LGLYPH_SET_ADJUSTMENT (lglyph, vec); If rounding happens at the library side, we don't know whether the width before rounding was exactly 0 or not. > Also, I asked whether you could elaborate on the rationale for > adjusting the zero width to be 1 pixel, and I don't think you > answered that particular question. What you are saying (AFAIU) is > that heuristically the results of using this adjustment are better, > at least in this case. I don't argue with that, but I wonder > whether there's some rationale for this that isn't just heuristics? > IOW, do you know how come hb-view doesn't have this problem? what do > we do that produces the zero width where hb-view doesn't? The output of hb-view was in PDF, and its coordinate system does not directly correspond to the integral number of physical pixels unlike in Emacs. The display engine of Emacs only accepts positive integer as pixel-width of a glyph (in Emacs terminology). If the actual grapheme cluster has width zero (after rounding), then it is replaced to some positive integer (space width) in gui_produce_glyphs. Because some grapheme cluster in the result of shaping can be in very small width and rounded to 0, adjusting it to 1 is almost the best approximation. YAMAMOTO Mitsuharu mituharu@math.s.chiba-u.ac.jp ^ permalink raw reply [flat|nested] 44+ messages in thread
* bug#50951: 28.0.50; Urdu text is not displayed correctly 2022-09-25 7:18 ` YAMAMOTO Mitsuharu @ 2022-09-26 7:18 ` Eli Zaretskii 2022-09-27 0:29 ` YAMAMOTO Mitsuharu 0 siblings, 1 reply; 44+ messages in thread From: Eli Zaretskii @ 2022-09-26 7:18 UTC (permalink / raw) To: YAMAMOTO Mitsuharu; +Cc: rahguzar, larsi, 50951, visuweshm > Date: Sun, 25 Sep 2022 16:18:26 +0900 > From: YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp> > Cc: rahguzar@zohomail.eu, visuweshm@gmail.com, larsi@gnus.org, > 50951@debbugs.gnu.org > > > Also, I asked whether you could elaborate on the rationale for > > adjusting the zero width to be 1 pixel, and I don't think you > > answered that particular question. What you are saying (AFAIU) is > > that heuristically the results of using this adjustment are better, > > at least in this case. I don't argue with that, but I wonder > > whether there's some rationale for this that isn't just heuristics? > > IOW, do you know how come hb-view doesn't have this problem? what do > > we do that produces the zero width where hb-view doesn't? > > The output of hb-view was in PDF, and its coordinate system does not > directly correspond to the integral number of physical pixels unlike > in Emacs. > > The display engine of Emacs only accepts positive integer as > pixel-width of a glyph (in Emacs terminology). If the actual grapheme > cluster has width zero (after rounding), then it is replaced to some > positive integer (space width) in gui_produce_glyphs. Because some > grapheme cluster in the result of shaping can be in very small width > and rounded to 0, adjusting it to 1 is almost the best approximation. OK, thanks. Please install your patch on the master branch. ^ permalink raw reply [flat|nested] 44+ messages in thread
* bug#50951: 28.0.50; Urdu text is not displayed correctly 2022-09-26 7:18 ` Eli Zaretskii @ 2022-09-27 0:29 ` YAMAMOTO Mitsuharu 0 siblings, 0 replies; 44+ messages in thread From: YAMAMOTO Mitsuharu @ 2022-09-27 0:29 UTC (permalink / raw) To: Eli Zaretskii; +Cc: rahguzar, larsi, 50951-done, visuweshm On Mon, 26 Sep 2022 16:18:50 +0900, Eli Zaretskii wrote: > > > Date: Sun, 25 Sep 2022 16:18:26 +0900 > > From: YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp> > > Cc: rahguzar@zohomail.eu, visuweshm@gmail.com, larsi@gnus.org, > > 50951@debbugs.gnu.org > > > > > Also, I asked whether you could elaborate on the rationale for > > > adjusting the zero width to be 1 pixel, and I don't think you > > > answered that particular question. What you are saying (AFAIU) is > > > that heuristically the results of using this adjustment are better, > > > at least in this case. I don't argue with that, but I wonder > > > whether there's some rationale for this that isn't just heuristics? > > > IOW, do you know how come hb-view doesn't have this problem? what do > > > we do that produces the zero width where hb-view doesn't? > > > > The output of hb-view was in PDF, and its coordinate system does not > > directly correspond to the integral number of physical pixels unlike > > in Emacs. > > > > The display engine of Emacs only accepts positive integer as > > pixel-width of a glyph (in Emacs terminology). If the actual grapheme > > cluster has width zero (after rounding), then it is replaced to some > > positive integer (space width) in gui_produce_glyphs. Because some > > grapheme cluster in the result of shaping can be in very small width > > and rounded to 0, adjusting it to 1 is almost the best approximation. > > OK, thanks. Please install your patch on the master branch. I installed a slightly modified version because the previous one did not adjust the last grapheme cluster when its width is zero. Closing. YAMAMOTO Mitsuharu mituharu@math.s.chiba-u.ac.jp ^ permalink raw reply [flat|nested] 44+ messages in thread
* bug#50951: 28.0.50; Urdu text is not displayed correctly 2022-09-20 3:41 ` YAMAMOTO Mitsuharu 2022-09-20 11:07 ` Eli Zaretskii @ 2022-09-20 12:35 ` Rah Guzar via Bug reports for GNU Emacs, the Swiss army knife of text editors 1 sibling, 0 replies; 44+ messages in thread From: Rah Guzar via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2022-09-20 12:35 UTC (permalink / raw) To: YAMAMOTO Mitsuharu; +Cc: 50951, Rah Guzar, Eli Zaretskii, larsi, Visuwesh Hi, Thank you so much for this patch. Rendering is perfect in my cursory tests after applying this patch. One last problem which is unrelated to this patch: the beginning of some lines is often clipped. For example for me the word, تنہائی is shown clipped and is visible from the end of the second of two dots at the top if it is at the beginning of the line. This seems to be the case even for fonts which don't misbehave otherwise. My solution has been to set `bidi-paragraph-direction` to `left-to-right` but that is not ideal. Thanks a lot again, Rah Guzar YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp> writes: > On Sun, 18 Sep 2022 01:37:39 +0900, > Rah Guzar wrote: >> >> >> I finally tested the patches and both of them improve the situation by a >> lot but problems still remain. One word that is not rendered by >> accurately by them is >> >> ہنگام >> >> Where is problem is fourth character which is >> character: گ (displayed as گ) (codepoint 1711, #o3257, #x6af) >> charset: unicode-bmp (Unicode Basic Multilingual Plane (U+0000..U+FFFF)) >> code point in charset: 0x06AF >> script: arabic >> >> This character should be rendered as a circle and two slanted lines >> which seem to get clipped. > > Thanks for testing. > > The width of grapheme cluster corresponding to U+06AF (ARABIC LETTER > GAF) is rounded to zero, and Emacs does not display such clusters: > > xdisp.c: > 32424 gstring = composition_gstring_from_id (it->cmp_it.id); > 32425 it->pixel_width > 32426 = composition_gstring_width (gstring, it->cmp_it.from, it->cmp_it.to, > 32427 &metrics); > 32428 if (it->pixel_width == 0) > 32429 { > 32430 it->glyph_not_available_p = true; > 32431 it->phys_ascent = it->ascent; > 32432 it->phys_descent = it->descent; > 32433 it->pixel_width = face->font->space_width; > 32434 } > 32435 else > > The attached patch avoids zero-width grapheme clusters by adding 1 to > the width of the last glyph in such clusters. > > YAMAMOTO Mitsuharu > mituharu@math.s.chiba-u.ac.jp > > [2. text/x-patch; avoid-zero-width-grapheme-clusters.diff]... ^ permalink raw reply [flat|nested] 44+ messages in thread
* bug#50951: 28.0.50; Urdu text is not displayed correctly 2022-09-08 6:06 ` Visuwesh 2022-09-09 15:00 ` Rah Guzar via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2022-09-11 10:26 ` Visuwesh 2022-09-11 11:11 ` Visuwesh 1 sibling, 1 reply; 44+ messages in thread From: Visuwesh @ 2022-09-11 10:26 UTC (permalink / raw) To: Eli Zaretskii; +Cc: rahguzar, larsi, 50951, YAMAMOTO Mitsuharu [வியாழன் செப்டம்பர் 08, 2022] Visuwesh wrote: > [புதன் செப்டம்பர் 07, 2022] Eli Zaretskii wrote: > >>> Date: Wed, 07 Sep 2022 15:18:21 +0900 >>> From: YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp> >>> Cc: Eli Zaretskii <eliz@gnu.org>, >>> larsi@gnus.org, >>> 50951@debbugs.gnu.org >>> >>> Probably the following change will fix the problem: >> >> Thanks. Rah Guzar, can you try one of these changes and see if they >> fix the problem? > > Not sure about Rah Guzar, but it squashes bug#54646 for me. Thank you > so very much, Yamamoto Mitsuharu! Unfortunately, this turned out to be a false alarm. Before I could easily reproduce the issue at will but now it is not so easy—the fact that it took me so long to notice that the bug is still present speaks so. I was using patch no. 1 for the past days, I will try patch no. 2 and see if it improves the situation. ^ permalink raw reply [flat|nested] 44+ messages in thread
* bug#50951: 28.0.50; Urdu text is not displayed correctly 2022-09-11 10:26 ` Visuwesh @ 2022-09-11 11:11 ` Visuwesh 0 siblings, 0 replies; 44+ messages in thread From: Visuwesh @ 2022-09-11 11:11 UTC (permalink / raw) To: Eli Zaretskii; +Cc: rahguzar, larsi, 50951, YAMAMOTO Mitsuharu [ஞாயிறு செப்டம்பர் 11, 2022] Visuwesh wrote: >> Not sure about Rah Guzar, but it squashes bug#54646 for me. Thank you >> so very much, Yamamoto Mitsuharu! > > Unfortunately, this turned out to be a false alarm. Before I could > easily reproduce the issue at will but now it is not so easy—the fact > that it took me so long to notice that the bug is still present speaks > so. I was using patch no. 1 for the past days, I will try patch no. 2 > and see if it improves the situation. Patch no. 2 also exhibits the bug. I tried Rah Guzar's original test case given in [1] and [2] with the first and the second patch, and without any patches and I saw no mistakes in glyph placements. But of course, I cannot read Urdu so take this with a pound of salt... 1. https://debbugs.gnu.org/cgi/bugreport.cgi?bug=50951#11 2. https://debbugs.gnu.org/cgi/bugreport.cgi?bug=50951#26 ^ permalink raw reply [flat|nested] 44+ messages in thread
end of thread, other threads:[~2022-09-27 0:29 UTC | newest] Thread overview: 44+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2021-10-01 20:11 bug#50951: 28.0.50; Urdu text is not displayed correctly Rah Guzar 2021-10-02 6:07 ` Eli Zaretskii [not found] ` <CAP094xCyzg62eHeYCUkWy+eBCbEXC_AAU5YFbhTCcCR0cAOCQw@mail.gmail.com> 2021-10-02 11:43 ` bug#50951: Fwd: " Rah Guzar 2021-10-02 12:18 ` Eli Zaretskii 2021-10-02 12:47 ` Rah Guzar 2021-10-02 13:09 ` Eli Zaretskii 2021-10-02 14:19 ` Rah Guzar 2021-10-02 14:50 ` Eli Zaretskii [not found] ` <CAP094xBq9YjL6xS56t-C3uhSH69TawhsCrF2FdSMySeDpZfGNw@mail.gmail.com> 2021-10-02 15:09 ` Eli Zaretskii 2021-10-02 15:18 ` Rah Guzar 2021-10-02 14:18 ` Andreas Schwab 2021-10-02 14:40 ` Eli Zaretskii 2021-10-02 15:07 ` Rah Guzar 2021-10-02 15:14 ` Eli Zaretskii [not found] ` <CAP094xAoHdQZoPL9y6aZOq-WGZe0cYtNsm9Trm+yBiyjyZ4j7g@mail.gmail.com> 2021-10-02 15:54 ` Eli Zaretskii 2021-10-02 16:06 ` Rah Guzar 2021-10-02 16:09 ` Eli Zaretskii 2022-09-04 21:07 ` Lars Ingebrigtsen 2022-09-05 11:22 ` Eli Zaretskii 2022-09-05 11:57 ` Rah Guzar via Bug reports for GNU Emacs, the Swiss army knife of text editors 2022-09-05 12:29 ` Eli Zaretskii 2022-09-05 13:03 ` Rah Guzar via Bug reports for GNU Emacs, the Swiss army knife of text editors 2022-09-05 13:55 ` Eli Zaretskii [not found] ` <87pmg97vsg.fsf@zohomail.eu> 2022-09-05 15:47 ` Eli Zaretskii 2022-09-06 4:26 ` Visuwesh 2022-09-06 11:05 ` Eli Zaretskii 2022-09-06 13:18 ` Visuwesh 2022-09-07 6:18 ` YAMAMOTO Mitsuharu 2022-09-07 11:27 ` Eli Zaretskii 2022-09-08 6:06 ` Visuwesh 2022-09-09 15:00 ` Rah Guzar via Bug reports for GNU Emacs, the Swiss army knife of text editors 2022-09-17 16:37 ` Rah Guzar via Bug reports for GNU Emacs, the Swiss army knife of text editors 2022-09-17 17:00 ` Eli Zaretskii 2022-09-20 3:41 ` YAMAMOTO Mitsuharu 2022-09-20 11:07 ` Eli Zaretskii 2022-09-21 2:20 ` YAMAMOTO Mitsuharu 2022-09-21 2:25 ` YAMAMOTO Mitsuharu 2022-09-22 5:37 ` Eli Zaretskii 2022-09-25 7:18 ` YAMAMOTO Mitsuharu 2022-09-26 7:18 ` Eli Zaretskii 2022-09-27 0:29 ` YAMAMOTO Mitsuharu 2022-09-20 12:35 ` Rah Guzar via Bug reports for GNU Emacs, the Swiss army knife of text editors 2022-09-11 10:26 ` Visuwesh 2022-09-11 11:11 ` Visuwesh
Code repositories for project(s) associated with this external index https://git.savannah.gnu.org/cgit/emacs.git https://git.savannah.gnu.org/cgit/emacs/org-mode.git This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.