]> git.eshelyaron.com Git - emacs.git/commitdiff
Make VS-15 and VS-16 compositions work correctly
authorRobert Pluim <rpluim@gmail.com>
Fri, 2 Jun 2023 11:54:56 +0000 (13:54 +0200)
committerRobert Pluim <rpluim@gmail.com>
Fri, 2 Jun 2023 12:13:43 +0000 (14:13 +0200)
There is a conflict between forward matching and backward matching
composition rules involving the same codepoint, which can cause the
backward matching ones not to be invoked.  Ensure that VS-15 (U+FE0E)
and VS-16 (U+FE0F) are composed by forward matching rules instead in
order to avoid this issue.

* admin/unidata/emoji-zwj.awk: Add rules for CHAR+VS-15 and CHAR+VS-16.
* lisp/composite.el: remove backward matching rule for VS-15.  (Bug#63731)

admin/unidata/emoji-zwj.awk
lisp/composite.el

index 7d2ff6cb9008c26963381320d43d4b5889dda3ca..f13f796bcacdc71b607daa6951ce8f3907d56682 100644 (file)
@@ -106,7 +106,8 @@ END {
 
      for (elt in ch)
     {
-        printf("(#x%s .\n,(eval-when-compile (regexp-opt\n'(\n%s\n))))\n", elt, vec[elt])
+        entries = sprintf("%s\n\"\\N{U+%s}\\N{U+FE0E}\"\n\"\\N{U+%s}\\N{U+FE0F}\"", vec[elt], elt, elt)
+        printf("(#x%s .\n,(eval-when-compile (regexp-opt\n'(\n%s\n))))\n", elt, entries)
     }
      print "))"
      print "  (set-char-table-range composition-function-table"
index fb8b76114f46a798944e37390c18a3c97566e56b..9710c3c371b9b9d56b738ca6f504981d3918248a 100644 (file)
@@ -861,7 +861,7 @@ and the second is a glyph for a variation selector."
 ;; handled in font_range, we end up choosing the Emoji presentation
 ;; rather than the Text presentation.
 (let ((elt '([".." 1 compose-gstring-for-variation-glyph])))
-  (set-char-table-range composition-function-table '(#xFE00 . #xFE0E) elt)
+  (set-char-table-range composition-function-table '(#xFE00 . #xFE0D) elt)
   (set-char-table-range composition-function-table '(#xE0100 . #xE01EF) elt))
 
 (defun auto-compose-chars (func from to font-object string direction)