unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
* bug#36914: Font Ligatures
@ 2019-08-03 20:34 Charles Jackson
  2019-08-04  2:45 ` Eli Zaretskii
  0 siblings, 1 reply; 3+ messages in thread
From: Charles Jackson @ 2019-08-03 20:34 UTC (permalink / raw)
  To: 36914

[-- Attachment #1: Type: text/plain, Size: 5238 bytes --]

I am requesting that GNU Emacs supports ligatures out of the box. I know
about pretty-symbols-mode, and it is great, but it is not font
ligatures.

Take my case for example: I just found the a new (new to me) font called
Monoid (https://larsenwork.com/monoid/). It provides ligatures for
various programming symbols That I would like to use. The ligatures are
provided as actual True Type Font ligatures rather than Unicode symbols
used by pretty-symbols-mode. Thus I couldn't use them at all. I even
tried to look at the source code for the font to find the character
code, but the codes for the ligature glyphs were not correct or did not
exist.

I am asking you to provide font ligatures out of the box (emacs -Q) by
using whatever fancy system that True Type Fonts use. This has become a
feature that most text editors and word processors have by
default. Emacs has no excuse.

I would also like to help but have no idea how fonts work.
Have a great day.

In GNU Emacs 26.2 (build 1, x86_64-redhat-linux-gnu, GTK+ Version 3.24.8)
of 2019-04-30 built on buildvm-06.phx2.fedoraproject.org
Windowing system distributor 'Fedora Project', version 11.0.12004000
System Description: Fedora release 30 (Thirty)

Configured using:
'configure --build=x86_64-redhat-linux-gnu
--host=x86_64-redhat-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 --with-dbus --with-gif --with-jpeg --with-png
--with-rsvg --with-tiff --with-xft --with-xpm --with-x-toolkit=gtk3
--with-gpm=no --with-xwidgets --with-modules
build_alias=x86_64-redhat-linux-gnu host_alias=x86_64-redhat-linux-gnu
'CFLAGS=-DMAIL_USE_LOCKF -O2 -g -pipe -Wall -Werror=format-security
-Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fexceptions
-fstack-protector-strong -grecord-gcc-switches
-specs=/usr/lib/rpm/redhat/redhat-hardened-cc1
-specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mtune=generic
-fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection'
LDFLAGS=-Wl,-z,relro
PKG_CONFIG_PATH=:/usr/lib64/pkgconfig:/usr/share/pkgconfig'

Configured features:
XPM JPEG TIFF GIF PNG RSVG IMAGEMAGICK SOUND DBUS GSETTINGS GLIB NOTIFY
ACL LIBSELINUX GNUTLS LIBXML2 FREETYPE M17N_FLT LIBOTF XFT ZLIB
TOOLKIT_SCROLL_BARS GTK3 X11 XDBE XIM MODULES THREADS XWIDGETS LCMS2

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

Major mode: Emacs-Lisp

Minor modes in effect:
  display-line-numbers-mode: t
  show-paren-mode: t
  electric-pair-mode: t
  display-time-mode: t
  tooltip-mode: t
  global-eldoc-mode: t
  eldoc-mode: t
  electric-indent-mode: t
  mouse-wheel-mode: t
  prettify-symbols-mode: t
  menu-bar-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  blink-cursor-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t
  line-number-mode: t
  transient-mark-mode: t

Load-path shadows:
/home/charles/.emacs.d/elpa/flymake-1.0.8/flymake hides /usr/share/emacs/26.2/lisp/progmodes/flymake

Features:
(shadow sort flyspell ispell mail-extr emacsbug message rmc puny dired
dired-loaddefs format-spec rfc822 mml mml-sec epa derived epg gnus-util
rmail rmail-loaddefs mm-decode mm-bodies mm-encode mail-parse rfc2231
mailabbrev gmm-utils mailheader sendmail rfc2047 rfc2045 ietf-drums
mm-util mail-prsvr mail-utils suscolors-theme display-line-numbers
warnings paren elec-pair time cus-start cus-load project-run json map
finder-inf edmacro kmacro info cl rx package easymenu epg-config
url-handlers url-parse auth-source cl-seq eieio eieio-core cl-macs
eieio-loaddefs password-cache url-vars seq byte-opt gv bytecomp
byte-compile cconv cl-loaddefs cl-lib time-date mule-util tooltip eldoc
electric uniquify ediff-hook vc-hooks lisp-float-type mwheel term/x-win
x-win term/common-win x-dnd tool-bar dnd fontset image regexp-opt fringe
tabulated-list replace newcomment text-mode elisp-mode lisp-mode
prog-mode register page menu-bar rfn-eshadow isearch timer select
scroll-bar mouse jit-lock font-lock syntax facemenu font-core
term/tty-colors frame 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 charscript charprop case-table epa-hook jka-cmpr-hook
help simple abbrev obarray minibuffer cl-preloaded nadvice loaddefs
button faces cus-face macroexp files text-properties overlay sha1 md5
base64 format env code-pages mule custom widget hashtable-print-readable
backquote threads dbusbind inotify lcms2 dynamic-setting
system-font-setting font-render-setting xwidget-internal move-toolbar
gtk x-toolkit x multi-tty make-network-process emacs)

Memory information:
((conses 16 249172 76444)
(symbols 48 28706 2)
(miscs 40 98 293)
(strings 32 80014 25169)
(string-bytes 1 1975530)
(vectors 16 25557)
(vector-slots 8 1006508 65574)
(floats 8 67 399)
(intervals 56 737 53)
(buffers 992 14))

[-- Attachment #2: Type: text/html, Size: 7152 bytes --]

^ permalink raw reply	[flat|nested] 3+ messages in thread

* bug#36914: Font Ligatures
  2019-08-03 20:34 bug#36914: Font Ligatures Charles Jackson
@ 2019-08-04  2:45 ` Eli Zaretskii
       [not found]   ` <xUQAga-e27WNWZq6JAcGl-0xS2xTVjwZRRrnDk1JDe6XFdPDCOxwqEjUGxpePRTkjlXx78F94pOeTmZBkeWLKEiL0duPsUEsD9cwgvnNPhE=@protonmail.com>
  0 siblings, 1 reply; 3+ messages in thread
From: Eli Zaretskii @ 2019-08-04  2:45 UTC (permalink / raw)
  To: Charles Jackson; +Cc: 36914

> Date: Sat, 03 Aug 2019 20:34:14 +0000
> From: Charles Jackson <charles.b.jackson@protonmail.com>
> 
> I am requesting that GNU Emacs supports ligatures out of the box. I know
> about pretty-symbols-mode, and it is great, but it is not font
> ligatures.
> 
> Take my case for example: I just found the a new (new to me) font called
> Monoid (https://larsenwork.com/monoid/). It provides ligatures for
> various programming symbols That I would like to use. The ligatures are
> provided as actual True Type Font ligatures rather than Unicode symbols
> used by pretty-symbols-mode. Thus I couldn't use them at all. I even
> tried to look at the source code for the font to find the character
> code, but the codes for the ligature glyphs were not correct or did not
> exist.
> 
> I am asking you to provide font ligatures out of the box (emacs -Q) by
> using whatever fancy system that True Type Fonts use. This has become a
> feature that most text editors and word processors have by
> default. Emacs has no excuse.

Please be more specific about the feature you'd like to see: how would
Emacs support the ligatures? should it, for example, automatically
produce ff when you type "ff" and ffi when you type "ffi"?  Or do you
want the ligation to happen only on-demand?

IOW, we need a user-level specification to make this happen.  Because
the infrastructure for supporting ligatures already exist, since we
started supporting the HarfBuzz shaping engine in Emacs.

Thanks.





^ permalink raw reply	[flat|nested] 3+ messages in thread

* bug#36914: Font Ligatures
       [not found]   ` <xUQAga-e27WNWZq6JAcGl-0xS2xTVjwZRRrnDk1JDe6XFdPDCOxwqEjUGxpePRTkjlXx78F94pOeTmZBkeWLKEiL0duPsUEsD9cwgvnNPhE=@protonmail.com>
@ 2019-08-04 15:32     ` Eli Zaretskii
  0 siblings, 0 replies; 3+ messages in thread
From: Eli Zaretskii @ 2019-08-04 15:32 UTC (permalink / raw)
  To: Charles Jackson; +Cc: 36914

> Date: Sun, 04 Aug 2019 03:05:28 +0000
> From: Charles Jackson <charles.b.jackson@protonmail.com>
> 
> I would think that it should be able to be turned on and off. as well as each ligature should be able to be turned on and off. If someone likes "fi" but not "ffi" then they should be able to turn "ffi" off. I would also think that it should be mode specific: "fi" should be enabled for text-mode but not for any prog-mode. On the other hand a ligature for != (becoming a not equals sign) should be enabled for C like language modes but /= should form the same ligature for Haskell and Lisp.
> 
> Another important thing about ligatures that is different than pretty symbols mode is that the ligature should take up the same amount of space as the original characters. For example: the not equals ligature should not simply be the "≠" Unicode character because that only takes up one space but the original characters != or /= take up two spaces. this will solve the spacing (indenting) issue. Similarly the ligature for === in Javascript (that many programming ligature font enable) should take up a full three character widths.
> 
> What do you think?

First, please keep the bug address on the CC list (use "Reply to
All"), so that this discussion is recorded by our issue tracker.

More to the point, I think this makes the job somewhat complicated,
especially the "same amount of space" part, and hope that someone
volunteers to do it.

Thanks.





^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2019-08-04 15:32 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2019-08-03 20:34 bug#36914: Font Ligatures Charles Jackson
2019-08-04  2:45 ` Eli Zaretskii
     [not found]   ` <xUQAga-e27WNWZq6JAcGl-0xS2xTVjwZRRrnDk1JDe6XFdPDCOxwqEjUGxpePRTkjlXx78F94pOeTmZBkeWLKEiL0duPsUEsD9cwgvnNPhE=@protonmail.com>
2019-08-04 15:32     ` Eli Zaretskii

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).