From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Eli Zaretskii Newsgroups: gmane.emacs.devel Subject: Re: Increase default `line-spacing' to 0.05, 0.10 or 0.15 [proposal] Date: Thu, 06 May 2021 13:10:30 +0300 Message-ID: <83mtt8dvft.fsf@gnu.org> References: <871ramlbpy.fsf@telefonica.net> <87fsz1zmhv.fsf@gmail.com> <87sg30usa2.fsf@gmail.com> Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="23134"; mail-complaints-to="usenet@ciao.gmane.io" Cc: jporterbugs@gmail.com, stefankangas@gmail.com, emacs-devel@gnu.org To: Augusto Stoffel Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Thu May 06 12:12:38 2021 Return-path: Envelope-to: ged-emacs-devel@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1leazl-0005qY-En for ged-emacs-devel@m.gmane-mx.org; Thu, 06 May 2021 12:12:37 +0200 Original-Received: from localhost ([::1]:44768 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1leazk-0001lZ-FP for ged-emacs-devel@m.gmane-mx.org; Thu, 06 May 2021 06:12:36 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:51096) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1leaxv-0000hZ-Og for emacs-devel@gnu.org; Thu, 06 May 2021 06:10:43 -0400 Original-Received: from fencepost.gnu.org ([2001:470:142:3::e]:55108) by eggs.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1leaxv-0007rX-CH; Thu, 06 May 2021 06:10:43 -0400 Original-Received: from 84.94.185.95.cable.012.net.il ([84.94.185.95]:2662 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.86_2) (envelope-from ) id 1leaxu-0008Dt-Vj; Thu, 06 May 2021 06:10:43 -0400 In-Reply-To: <87sg30usa2.fsf@gmail.com> (message from Augusto Stoffel on Thu, 06 May 2021 11:26:45 +0200) X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Original-Sender: "Emacs-devel" Xref: news.gmane.io gmane.emacs.devel:268959 Archived-At: > From: Augusto Stoffel > Date: Thu, 06 May 2021 11:26:45 +0200 > Cc: Jim Porter , emacs-devel@gnu.org > > Comparing the picture in [1] and what I see if I put the block cursor > over an "H", I conclude that monospaced fonts come with some built-in > leading. In other words, they are "bastard fonts" [2], and a nil for > `line-spacing' doesn't mean "solid" typesetting. I don't think this is true. First, what you cite refers to so-called "manual typesetting", not to digital typography. And second, the monospaced fonts we use define ascent and descent for each glyph, and we use that and nothing else (unless the font is broken, in which case we have fallbacks in place, but that's not relevant to the issue at hand). AFAIU, the ascent and descent of each font glyph in a monospaced font is set up such that they accommodate both the tallest glyph and the lowest one. Perhaps that is why you think they have some "leading", because you probably didn't examine all of the font's glyphs (we generally use as default fonts that cover many popular scripts). > Kerning, tracking and other forms of microtypography are case-by-case > adjustments, intended to be basically subliminal, so I'd say yes, the > overall condensedness is pretty much a fixed characteristic of the font. > And these things are out of reach for Emacs anyway. They are not out of reach for us, because the shaping engine(s) we use know how to apply these features. We just don't use them by default with most characters, that's all: we don't ask the text-shaping engine how to render each sequence of characters we need to display, we only ask it about some relatively rare sequences. The reason for that is that under the current design of the display engine, calling the shaping engine is very expensive, as it requires calling out to Lisp, which then calls back into C. So we only do that when necessary. But a Lisp program can change that.