From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Lars Ingebrigtsen Newsgroups: gmane.emacs.devel Subject: Variable pitch text filling Date: Fri, 26 Nov 2021 15:45:46 +0100 Message-ID: <87ilwft1ph.fsf@gnus.org> Mime-Version: 1.0 Content-Type: text/plain Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="22037"; mail-complaints-to="usenet@ciao.gmane.io" User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/29.0.50 (gnu/linux) To: emacs-devel@gnu.org Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Fri Nov 26 15:46:35 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 1mqcUl-0005UX-Im for ged-emacs-devel@m.gmane-mx.org; Fri, 26 Nov 2021 15:46:35 +0100 Original-Received: from localhost ([::1]:40112 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1mqcUk-0005fQ-4J for ged-emacs-devel@m.gmane-mx.org; Fri, 26 Nov 2021 09:46:34 -0500 Original-Received: from eggs.gnu.org ([209.51.188.92]:35010) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mqcU6-0004tU-AN for emacs-devel@gnu.org; Fri, 26 Nov 2021 09:45:54 -0500 Original-Received: from [2a01:4f9:2b:f0f::2] (port=42072 helo=quimby.gnus.org) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mqcU4-0005RB-Hp for emacs-devel@gnu.org; Fri, 26 Nov 2021 09:45:54 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnus.org; s=20200322; h=Content-Type:MIME-Version:Message-ID:Date:Subject:To:From: Sender:Reply-To:Cc:Content-Transfer-Encoding:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:List-Subscribe: List-Post:List-Owner:List-Archive; bh=htl34FW2l2ihECERUxOlU45wQ09DTpzv/yEaCY64L10=; b=EoSIu3vLlDCc43zceqmoD8lK50 qFU3VyMrkUwE/rR9d504Y0zBLqk5zHXYwAeRM5/66FXCmEEBaFUBmUvvKmfdAZCOOeyiRs0pPp58w KbsOj46z4hrkq1U5EBvrIMx8B3wLRL6Z7iPBR6eF0z+z8iygZg932O1ltoQ6hSvkp5Iw=; Original-Received: from [84.212.220.105] (helo=xo) by quimby.gnus.org with esmtpsa (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1mqcTz-0005VW-E3 for emacs-devel@gnu.org; Fri, 26 Nov 2021 15:45:50 +0100 Face: iVBORw0KGgoAAAANSUhEUgAAADAAAAAwAgMAAAAqbBEUAAAABGdBTUEAALGPC/xhBQAAACBj SFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAADFBMVEXctD2gZjx1ZVn/ //8/Za3xAAAAAWJLR0QDEQxM8gAAAAd0SU1FB+ULGg4dL5wK2jQAAAGGSURBVCjPTZK/btswEMY/ GqSRelIDEUg1eegiPoUcwBo8UYDOQD3Xhc2nUIF0VwYBaScbiAPqnjJHKQXyLeLvjvdXBD7LErUg mr+Whsa2cqQhQWuzNkNlk2fbVDk12m4agfp50wK0qW8T0J65p/o6wSOLfk+w9WEUGE2K8TVP6lWC MG6Z4dgIVCFajuQ4eXYcw4sSSAl2Y7z90cqx1MlXHA9PXmJijnsW6NZwb/yEFY/xV3zIXOALivDW BS4qaeMkd7nLsey/ynW4f4xSw2u5nrIgaGQqHZzEnWQXajdBh+8KXmpEFBF40KignXgqiEFVUI9i tgJnIybZhB0BszK9QdnCCWizvGikGIE7LF5V9QFfsLgsO4Fy9vQl3AnrUspnbiN93GHtgMaPBgm+ Cfgs1wpjmqea/5pKvUmjkxYC5b6fYZmAfs6w+ntCOcQZ5kl5hjAlmDOotJ3/UtOj8PIiRETbFsWV yMt8x339iuL5cCQyNIQE1/ORAg+Hs4BtbpT04yAxn/UOx/mZrxMvg30AAAAldEVYdGRhdGU6Y3Jl YXRlADIwMjEtMTEtMjZUMTQ6Mjk6NDYrMDA6MDAwyWIkAAAAJXRFWHRkYXRlOm1vZGlmeQAyMDIx LTExLTI2VDE0OjI5OjQ2KzAwOjAwQZTamAAAAABJRU5ErkJggg== X-Now-Playing: Neil Young's _Homegrown_: "Homegrown" X-Host-Lookup-Failed: Reverse DNS lookup failed for 2a01:4f9:2b:f0f::2 (failed) Received-SPF: pass client-ip=2a01:4f9:2b:f0f::2; envelope-from=larsi@gnus.org; helo=quimby.gnus.org X-Spam_score_int: -35 X-Spam_score: -3.6 X-Spam_bar: --- X-Spam_report: (-3.6 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_MED=-2.3, RDNS_NONE=0.793, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.29 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:280250 Archived-At: I've we're going to grow variable pitch usage, we should probably have a little library for doing variable pitch filling. This is already implemented in shr.el, so it's mostly just a matter of extracting it from there -- if that's all we want. (It just does simple filling -- i.e., breaking the lines after a given pixel width.) But I'm wondering to what degree (if any) we'd want to support the more advanced (and seldom used) features from our normal filling machinery. For instance -- justification (i.e., having straight borders on both sides). To do this with a variable pitch text, you'd have to first fill a line normally, and then go over the line and distribute some space pixels everywhere (or just on spaces in the line). (This can (conveniently enough) probably be done with the new `min-width' spec (if we're distributing the extra pixels on all characters and not just the spaces).) But... is that too niche? Perhaps? Perhaps not? I mean, if you have a HiDPI screen, then having a straight right margin might be cool? (Or left, in an r2l language.) Our normal filling machinery also has a bunch of support for various modes, with auto-filling and paragraphs etc, and my feeling is that this library doesn't have to -- it'll only be used for displaying natural-language text. So that should simplify things quite a bit. I.e., it might only have a single entry point and not a lot of knobs to twiddle: (fill-region-to-pixel-width start end (- (window-pixel-width) 100) 'justify) Has anybody pondered these deep and eternal questions before? If so, please chime in before I start typing away at this library. -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no