Subject: Re: bug#58098: Improve composition rules for Gumrukhi

From: समीर सिंह Sameer Singh<[email-masked]>
Date: Tue, 27 Sep 2022 20:54:22 +0530

The form
>
>        (chess-symbol #x1FA00 #x1FA67)
>
> requires that _both_ #x1FA00 and #x1FA67 be supported by a font, for
> it to be eligible to display chess-symbols.  By contrast, the form
>
>        (chess-symbol . [#x1FA00 #x1FA67])
>
> requires that _either_ of the two characters is supported.  So my
> question is: do we really want _both_ of the characters supported by a
> font, and if not, do we really want Emacs to reject such a font?
>

I have updated the patch accordingly and replaced (chess-symbol #x1FA00
#x1FA67) with  (chess-symbol . [#x1FA00 #x1FA67])

> You don't have Symbola installed?

I have the Symbola font installed via the gdouros-symbola-fonts package on
my Fedora37 system, but it does not seem to support
the chess-symbols block as verified by hb-view.
Its description in the fedora wiki also does not mention the chess-symbols
block:

> Symbola covers the following scripts and symbols supported by The Unicode
> Standard 5.2: Basic Latin, Latin-1 Supplement, Latin Extended-A, IPA
> Extensions, Spacing Modifier Letters, Greek and Coptic, Cyrillic, Cyrillic
> Supplementary, General Punctuation, Superscripts and Subscripts, Combining
> Diacritical Marks for Symbols, Letterlike Symbols, Number Forms, Arrows,
> Mathematical Operators, Miscellaneous Technical, Control Pictures, Optical
> Character Recognition, Box Drawing, Block Elements, Geometric Shapes,
> Miscellaneous Symbols, Dingbats, Miscellaneous Mathematical Symbols-A,
> Supplemental Arrows-A, Supplemental Arrows-B, Miscellaneous Mathematical
> Symbols-B, Supplemental Mathematical Operators, Miscellaneous Symbols and
> Arrows, Supplemental Punctuation, CJK Symbols and Punctuation, Yijing
> Hexagram Symbols, Vertical Forms, Combining Half Marks, CJK Compatibility
> Forms, Specials, Tai Xuan Jing Symbols, Counting Rod Numerals, Mathematical
> Alphanumeric Symbols, Mahjong Tile Symbols, Domino Tile Symbols.
>

On Tue, Sep 27, 2022 at 7:38 PM Eli Zaretskii <[email-masked]> wrote:

> > From: समीर सिंह Sameer Singh <[email-masked]>
> > Date: Tue, 27 Sep 2022 19:22:09 +0530
> > Cc: [email-masked]
> >
> >  I don't understand this part: why should we require #x1FA67?  Did you
> >  perhaps mean this:
> >
> >        (chess-symbol . [#x1FA00 #x1FA67])
> >
> > Isn't the script-representative-chars used to improve font selection by
> requesting more characters?
> > So does the specific character requested have any effect? because I
> chose it randomly.
>
> The form
>
>        (chess-symbol #x1FA00 #x1FA67)
>
> requires that _both_ #x1FA00 and #x1FA67 be supported by a font, for
> it to be eligible to display chess-symbols.  By contrast, the form
>
>        (chess-symbol . [#x1FA00 #x1FA67])
>
> requires that _either_ of the two characters is supported.  So my
> question is: do we really want _both_ of the characters supported by a
> font, and if not, do we really want Emacs to reject such a font?
>
> Did you look at what #x1FA67 looks like?  It is not a "traditional"
> chess symbol.  And neither are the characters that are its neighbors.
>
> >  We already have the setup for chess-symbol, below this line where you
> >  are making changes.  Is it not enough for some reason?
> >
> > Prior to this patch the chess symbol block was not rendered on my
> machine despite having its font (Noto
> > Sans Symbols2)
>
> You don't have Symbola installed?
>
From a5344e6b827f8db4b4db10f3dacf5587dc199525 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E0=A4=B8=E0=A4=AE=E0=A5=80=E0=A4=B0=20=E0=A4=B8=E0=A4=BF?=
 =?UTF-8?q?=E0=A4=82=E0=A4=B9=20Sameer=20Singh?= <[email-masked]>
Date: Tue, 27 Sep 2022 00:03:23 +0530
Subject: [PATCH] Improve Gurmukhi composition rules (Bug#58098)

* lisp/language/indian.el: Improve composition rules for Gurmukhi.

* lisp/international/fontset.el (script-representative-chars)
(setup-default-fontset): Support Chess Symbols.
---
 lisp/international/fontset.el | 6 ++++--
 lisp/language/indian.el       | 9 +++++----
 2 files changed, 9 insertions(+), 6 deletions(-)

diff --git a/lisp/international/fontset.el b/lisp/international/fontset.el
index 99c7848704..23ef17488d 100644
--- a/lisp/international/fontset.el
+++ b/lisp/international/fontset.el
@@ -300,7 +300,8 @@ font-encoding-charset-alist
 	(ottoman-siyaq-number #x1ed01)
 	(mahjong-tile #x1F000)
 	(domino-tile #x1F030)
-        (emoji #x1F300 #x1F600)))
+        (emoji #x1F300 #x1F600)
+        (chess-symbol . [#x1FA00 #x1FA67])))
 
 (defvar otf-script-alist)
 
@@ -836,7 +837,8 @@ setup-default-fontset
                     tai-tham
 		    mahjong-tile
 		    domino-tile
-                    emoji))
+                    emoji
+                    chess-symbol))
     (set-fontset-font "fontset-default"
 		      script (font-spec :registry "iso10646-1" :script script)
 		      nil 'append))
diff --git a/lisp/language/indian.el b/lisp/language/indian.el
index 407173827f..81b7cbd99b 100644
--- a/lisp/language/indian.el
+++ b/lisp/language/indian.el
@@ -340,23 +340,24 @@ bengali-composable-pattern
 
 (defconst gurmukhi-composable-pattern
   (let ((table
-	 '(("a" . "[\u0A01\u0A02\u0A70]") ; SIGN ADAK BINDI .. BINDI, TIPPI
+	 '(("a" . "[\u0A01\u0A02\u0A70\u0A71\u0A75]") ; SIGN ADAK BINDI .. BINDI, TIPPI, ADDAK, YAKASH
 	   ("A" . "\u0A03")		; SIGN VISARGA
-	   ("V" . "[\u0A05-\u0A14]")	; independent vowel
+	   ("V" . "[\u0A05-\u0A14\u0A72\u0A73]")	; independent vowel
 	   ("C" . "[\u0A15-\u0A39\u0A59-\u0A5E]")	; consonant
 	   ("Y" . "[\u0A2F\u0A30\u0A35\u0A39]") ; YA, RA, VA, HA
 	   ("n" . "\u0A3C")		; NUKTA
 	   ("v" . "[\u0A3E-\u0A4C]")	; vowel sign
 	   ("H" . "\u0A4D")		; VIRAMA
+           ("s" . "\u0A51")		; stress sign
 	   ("N" . "\u200C")		; ZWNJ
 	   ("J" . "\u200D")		; ZWJ
 	   ("X" . "[\u0A00-\u0A7F]"))))	; all coverage
     (indian-compose-regexp
      (concat
       ;; consonant-based syllables, or
-      "Cn?\\(?:J?HJ?Cn?\\)*\\(?:H[NJ]?\\|v*n?a?A?\\)\\|"
+      "Cn?\\(?:J?HJ?Cn?\\)*\\(?:H[NJ]?\\|v*n?a?s?v?A?\\)\\|"
       ;; syllables with an independent vowel, or
-      "Vn?\\(?:J?HY\\)?v*n?a?A?\\|"
+      "Vn?\\(?:J?HY\\)?v*n?a?s?A?\\|"
       ;; special consonant form, or
       "JHY\\|"
       ;; any other singleton characters
-- 
2.37.3