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: Can watermarking Unicode text using invisible differences sneak through Emacs, or can Emacs detect it? Date: Fri, 04 Feb 2022 10:03:08 +0200 Message-ID: <83tudf2h4z.fsf@gnu.org> References: <87sftk49ih.fsf@yahoo.com> <837dawt0h4.fsf@gnu.org> <838rv9plyf.fsf@gnu.org> <837dasntoj.fsf@gnu.org> <834k5tl4a9.fsf@gnu.org> <87mtjkt6m9.fsf@gmail.com> <83ilu8htws.fsf@gnu.org> <3E718CA2-889F-4AEE-B79C-EB3A221D1CB2@gnu.org> <83o83wc7gs.fsf@gnu.org> <8335l5brov.fsf@gnu.org> <83mtjc838i.fsf@gnu.org> <83zgna7hyd.fsf@gnu.org> <83ee4l78rw.fsf@gnu.org> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="26016"; mail-complaints-to="usenet@ciao.gmane.io" Cc: psainty@orcon.net.nz, luangruo@yahoo.com, kevin.legouguec@gmail.com, emacs-devel@gnu.org To: rms@gnu.org Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Fri Feb 04 09:49:08 2022 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 1nFuHE-0006bB-0N for ged-emacs-devel@m.gmane-mx.org; Fri, 04 Feb 2022 09:49:08 +0100 Original-Received: from localhost ([::1]:37894 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nFuHC-0007KL-Su for ged-emacs-devel@m.gmane-mx.org; Fri, 04 Feb 2022 03:49:06 -0500 Original-Received: from eggs.gnu.org ([209.51.188.92]:43696) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nFtYo-0000Ac-I9 for emacs-devel@gnu.org; Fri, 04 Feb 2022 03:03:20 -0500 Original-Received: from [2001:470:142:3::e] (port=44034 helo=fencepost.gnu.org) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nFtYm-0001Cs-Mg; Fri, 04 Feb 2022 03:03:12 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=MIME-version:References:Subject:In-Reply-To:To:From: Date; bh=g4rsP2EgQsYZHv9ifyHUTtHbl3xpOOKOIznSvx98YcU=; b=OfYbColGqSIAdkNCVYc4 HFfXxB2fVk9Dl8qDwaGsr+CC6lKCmks0sjnPgSmMA6s7kFN07FW0weZr4awG8ANV7vwic6TeGH6Hj A7526BwLGSIgvqQusZqUzrA2kjitHN6O2jnljgWFvQaUHTnywm5X5eOia4ezOBxsTGQGGkbSER1cz NHGVcRxgWHqR/FvAg1JKvfILFj0a+d86cFTL164HwbXe1nsqsa6EaNBMBy9AtbQXvz3kMePiFq/UL 8GAMBb+VlUPRheaq18vcm6sNmIzilzOiIdpMFJZLXdlqd/QNWHqWYDAOkTBju5NsYXlXkgQvurzV+ aBEB2qrrWtBQjQ==; Original-Received: from [87.69.77.57] (port=4593 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nFtYc-0004Vu-EJ; Fri, 04 Feb 2022 03:03:04 -0500 In-Reply-To: (message from Richard Stallman on Thu, 03 Feb 2022 22:52:07 -0500) 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:285856 Archived-At: > From: Richard Stallman > Cc: eliz@gnu.org, psainty@orcon.net.nz, luangruo@yahoo.com, > emacs-devel@gnu.org, kevin.legouguec@gmail.com > Date: Thu, 03 Feb 2022 22:52:07 -0500 > > It would be useful to be able to analyze and construct complex > characters -- for instance, to operate on a-with-breve-and-tilde > and find out that represents an a with two diacritics. This already exists, see below. But you seem to have something different in mind: > So I propose a function, `diacriticize'. Its arguments are > characters, and if they can be graphically combined to make a single > character, that's what diacriticize returns. Otherwise, it returns > nil. > > (diacriticize ?a ?~ ?˘) => ?㯠> (diacriticize ?a ?Z) => nil > > It could have an inverse function, criticanalyze, which given the > character code for a character that is (in spirit) a composition, > would return the characters it consists of: > > (criticanalyze ?ã˘) => (?a ?~ ?˘) > > With these functions, latin1-display could figure out automatically > which conversions to make. I don't understand the specification of these functions. How would diacriticize decide/know that ?~ is equivalent to the ?̃ (U+0303 COMBINING TILDE) that is part of ?ã ? We do have infrastructure in place to decompose characters like ã into the base character ?a and the combining diacritic(s): the call (ucs-normalize-NFD-string "ã") returns a string of 2 characters, ?a and ?̃. But how do you propose to make the leap from ?̃ to ?~ ?