; Add an entry to TODO
* etc/TODO: Expand the ligature support entry. Add a new entry about better support of Emoji.
This commit is contained in:
parent
d424195905
commit
5af9e5baad
1 changed files with 70 additions and 0 deletions
70
etc/TODO
70
etc/TODO
|
@ -244,6 +244,23 @@ populate composition-function-table with those rules. See
|
||||||
composite.el for examples of this, and also grep lisp/language/*.el
|
composite.el for examples of this, and also grep lisp/language/*.el
|
||||||
for references to composition-function-table.
|
for references to composition-function-table.
|
||||||
|
|
||||||
|
One problem with character compositions that will need to be solved is
|
||||||
|
that composition-function-table, the char-table which holds the
|
||||||
|
composition rules, is a global variable, whereas use of ligatures is
|
||||||
|
inherently specific to buffer-local stuff like the major mode and the
|
||||||
|
script or language in use. So there should be a buffer-local variable
|
||||||
|
to augment/customize/override the global composition rules.
|
||||||
|
|
||||||
|
Another problem is that ligatures are frequently composed of ASCII
|
||||||
|
characters, and some of those ASCII characters are present in the mode
|
||||||
|
line, for example "--". Since displaying a ligature instead of 2
|
||||||
|
separate '-' characters on a mode line is not right, there should be a
|
||||||
|
way of preventing the ligation from happening. One possibility is to
|
||||||
|
have a ZWNJ character separate these ASCII characters; another
|
||||||
|
possibility is to introduce a special text property that prevents
|
||||||
|
character composition, and place that property on the relevant parts
|
||||||
|
of the mode line.
|
||||||
|
|
||||||
The prettify-symbols-mode should be deprecated once ligature support
|
The prettify-symbols-mode should be deprecated once ligature support
|
||||||
is in place.
|
is in place.
|
||||||
|
|
||||||
|
@ -267,6 +284,59 @@ should invoke the 'shape' method. 'hbfont_shape' should be extended
|
||||||
to pass to 'hb_shape_full' the required array of features, as
|
to pass to 'hb_shape_full' the required array of features, as
|
||||||
mentioned in the above HarfBuzz discussion.
|
mentioned in the above HarfBuzz discussion.
|
||||||
|
|
||||||
|
** Better support for displaying Emoji
|
||||||
|
|
||||||
|
Emacs is capable of displaying Emoji and some of the Emoji sequences,
|
||||||
|
provided that its fontsets are configured with a suitable font. To
|
||||||
|
make this easier out of the box, the following should be done:
|
||||||
|
|
||||||
|
*** Populate composition-function-table with Emoji rules
|
||||||
|
|
||||||
|
The Unicode Character Database (UCD) includes several data files that
|
||||||
|
define the valid Emoji sequences. These files should be imported into
|
||||||
|
the Emacs tree, and should be converted by some script at Emacs build
|
||||||
|
time to Lisp code that populates composition-function-table with the
|
||||||
|
corresponding composition rules.
|
||||||
|
|
||||||
|
*** Augment the default fontsets with Emoji-capable fonts
|
||||||
|
|
||||||
|
The default fontsets set up by fontest.el should include known free
|
||||||
|
fonts that provide good support for displaying Emoji sequences. In
|
||||||
|
addition, the rule that the default face's font is used for symbol and
|
||||||
|
punctuation characters, disregarding the fontsets, should be modified
|
||||||
|
to exempt Emoji from this rule (since Emoji characters belong to the
|
||||||
|
'symbol' script in Emacs), so that use-default-font-for-symbols would
|
||||||
|
not have to be tweaked to have Emoji display by default with a capable
|
||||||
|
font.
|
||||||
|
|
||||||
|
*** Consider changing the default display of Variation Selectors
|
||||||
|
|
||||||
|
Emacs by default displays the Variation Selector (VS) codepoints not
|
||||||
|
composed with base characters as thin 1-pixel space glyphs. The
|
||||||
|
Unicode FAQ says that if variation sequences cannot be supported, the
|
||||||
|
VS characters should not be shown, leaving just the base character of
|
||||||
|
the sequence visible. This could be handled via
|
||||||
|
glyphless-char-display, by changing the entries for VS codepoints to
|
||||||
|
'zero-width'.
|
||||||
|
|
||||||
|
*** Special face for displaying text presentation of Emoji
|
||||||
|
|
||||||
|
Emoji-capable fonts support Emoji sequences with the U+FE0F VARIATION
|
||||||
|
SELECTOR-16 (VS16) for emoji-style display, but usually don't support
|
||||||
|
the U+FE0F VARIATION SELECTOR-15 (VS15) for text-style display. There
|
||||||
|
are other fonts which support the text-style sequences, but not
|
||||||
|
emoji-style. Since Emacs selects a font based on a single character,
|
||||||
|
it cannot choose 2 different fonts for displaying both styles of the
|
||||||
|
same base character. To display both styles in the same buffer, one
|
||||||
|
could use a special face, placing a 'face' text property on portions
|
||||||
|
of the text. This special face could specify a specific font known to
|
||||||
|
support text-style Emoji sequences. Emacs could have such a face
|
||||||
|
built-in.
|
||||||
|
|
||||||
|
See the discussion of bug#39799 for more details about this task.
|
||||||
|
Another relevant resource is the Unicode Technical Standard #51
|
||||||
|
"Unicode Emoji" (http://www.unicode.org/reports/tr51/).
|
||||||
|
|
||||||
** Extend text-properties and overlays
|
** Extend text-properties and overlays
|
||||||
*** Several text-property planes
|
*** Several text-property planes
|
||||||
This would get us rid of font-lock-face property (and I'd be happy to
|
This would get us rid of font-lock-face property (and I'd be happy to
|
||||||
|
|
Loading…
Add table
Reference in a new issue