From: Richard Stallman <rms@gnu.org>
To: Eli Zaretskii <eliz@gnu.org>
Cc: psainty@orcon.net.nz, luangruo@yahoo.com, emacs-devel@gnu.org,
kevin.legouguec@gmail.com
Subject: Re: Can watermarking Unicode text using invisible differences sneak through Emacs, or can Emacs detect it?
Date: Sat, 05 Feb 2022 23:13:37 -0500 [thread overview]
Message-ID: <E1nGYvh-00058o-9o@fencepost.gnu.org> (raw)
In-Reply-To: <83tudf2h4z.fsf@gnu.org> (message from Eli Zaretskii on Fri, 04 Feb 2022 10:03:08 +0200)
[[[ To any NSA and FBI agents reading my email: please consider ]]]
[[[ whether defending the US Constitution against all enemies, ]]]
[[[ foreign or domestic, requires you to follow Snowden's example. ]]]
> 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 ?ã ?
You know more about Unicode than I do, so I'm sure it is true _in some
sense_ that "U+0303 (COMBINING TILDE) is part of ?ã".
But I have doubts that that particular sense is the one that is
pertinent to the job `diacriticize' is meant to do.
I think you mean that one can represent the glyph image `ã' in Unicode
as a composition using a sequence of `a' and COMBINING TILDE. Please
tell me if I am mistaken.
The ã in this sentence is not a composition. It is a single
Unicode character, which is also in Latin-1. I don't think that
COMBINING TILDE is "part of it".
COMBINING TILDE can be used to create its glyph image by composition,
but as to what is graphically part of that glyph image, I think
that is ordinary `~'.
the call (ucs-normalize-NFD-string "ã")
returns a string of 2 characters, ?a and ?̃..
Interesting. I think it would be easy to implement `diacriticize' with that.
But how do you propose
to make the leap from ?̃ to ?~ ?
(defconst unicode-combining-chars-alist '(... (?~ . ?̃ ) ...))
... (car (rassq combining-char unicode-combining-chars-alist)) ...
Indeed, I think this does the job for `criticanalyze'.
(defun criticanalyze (char)
(let* ((composition (ucs-normalize-NFD-string (char-to-string char)))
charlist)
(mapcar (lambda (c) (or (car (rassq c unicode-combining-chars-alist)) c))
composition)))
There is probably an equally simple way to handle `diacriticize'.
I proposed those two functions because I thought we had no way
for Lisp programs to get info about this. Since we already have one,
maybe we don't need those two functions. Popping back to the question
of `latin1-display.el', it could use the `ucs-...' functions directly
to figure out what substitutions to make.
However, `ucs-normalize-NFD-string' does not know anything about
ligatures. Given the fi ligature, it returns the fi ligature. So it
can't be the sole method for `latin1-display' to find useful
substitutions. We would have to tell it the list of ligatures.
It already uses `char-displayable-p' to determine at run time which
characters could use display substitutions.
--
Dr Richard Stallman (https://stallman.org)
Chief GNUisance of the GNU Project (https://gnu.org)
Founder, Free Software Foundation (https://fsf.org)
Internet Hall-of-Famer (https://internethalloffame.org)
next prev parent reply other threads:[~2022-02-06 4:13 UTC|newest]
Thread overview: 104+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-01-19 4:15 Can watermarking Unicode text using invisible differences sneak through Emacs, or can Emacs detect it? Richard Stallman
2022-01-19 4:47 ` Po Lu
2022-01-19 10:05 ` Phil Sainty
2022-01-19 11:43 ` Eli Zaretskii
2022-01-21 4:13 ` Richard Stallman
2022-01-21 7:49 ` Eli Zaretskii
2022-01-22 4:37 ` Richard Stallman
2022-01-22 6:58 ` Eli Zaretskii
2022-01-24 4:33 ` Richard Stallman
2022-01-24 5:06 ` Po Lu
2022-01-25 4:17 ` Richard Stallman
2022-01-25 4:58 ` Po Lu
2022-01-24 12:14 ` Eli Zaretskii
2022-01-25 4:16 ` Richard Stallman
2022-01-25 6:35 ` Eli Zaretskii
2022-01-25 12:12 ` Eli Zaretskii
2022-01-25 4:16 ` New feature: displaying ligature characters in the buffer Richard Stallman
2022-01-25 6:31 ` Eli Zaretskii
2022-01-27 4:12 ` Richard Stallman
2022-01-27 7:58 ` Eli Zaretskii
2022-01-25 11:08 ` Can watermarking Unicode text using invisible differences sneak through Emacs, or can Emacs detect it? Kévin Le Gouguec
2022-01-25 12:38 ` Eli Zaretskii
2022-01-26 3:39 ` Richard Stallman
2022-01-26 5:38 ` Eli Zaretskii
2022-01-28 13:04 ` Richard Stallman
2022-01-28 13:31 ` Eli Zaretskii
2022-01-30 4:17 ` Richard Stallman
2022-01-30 7:36 ` Eli Zaretskii
2022-01-31 4:02 ` Richard Stallman
2022-01-31 13:05 ` Eli Zaretskii
2022-02-01 5:06 ` Richard Stallman
2022-02-01 14:57 ` Eli Zaretskii
2022-02-02 3:58 ` Richard Stallman
2022-02-02 12:28 ` Eli Zaretskii
2022-02-03 4:23 ` Richard Stallman
2022-02-03 7:53 ` Eli Zaretskii
2022-02-03 8:16 ` Yuri Khan
2022-02-03 9:26 ` Eli Zaretskii
2022-02-04 3:52 ` Richard Stallman
2022-02-04 4:56 ` Yuri Khan
2022-02-06 4:13 ` Richard Stallman
2022-02-04 8:10 ` Eli Zaretskii
2022-02-06 4:13 ` Richard Stallman
2022-02-03 20:28 ` Tomas Hlavaty
2022-02-04 7:07 ` Eli Zaretskii
2022-02-05 4:20 ` Richard Stallman
2022-02-05 13:55 ` Tomas Hlavaty
2022-02-05 14:06 ` Eli Zaretskii
2022-02-05 14:12 ` Eli Zaretskii
2022-02-06 1:29 ` Tomas Hlavaty
2022-02-06 8:30 ` Eli Zaretskii
2022-02-06 10:38 ` Tomas Hlavaty
2022-02-06 10:44 ` Eli Zaretskii
2022-02-06 10:54 ` Andreas Schwab
2022-02-06 1:10 ` Tomas Hlavaty
2022-02-06 4:16 ` Richard Stallman
2022-02-06 4:16 ` Richard Stallman
2022-02-06 11:29 ` Tomas Hlavaty
2022-02-04 3:52 ` Richard Stallman
2022-02-04 8:03 ` Eli Zaretskii
2022-02-06 4:13 ` Richard Stallman [this message]
2022-02-06 8:56 ` Eli Zaretskii
2022-02-07 5:11 ` Richard Stallman
2022-02-07 13:16 ` Eli Zaretskii
2022-02-08 3:55 ` Richard Stallman
2022-02-08 12:20 ` Eli Zaretskii
2022-02-09 4:06 ` Richard Stallman
2022-02-09 13:50 ` Eli Zaretskii
2022-02-10 3:57 ` Richard Stallman
2022-02-10 6:26 ` Eli Zaretskii
2022-02-12 3:57 ` Richard Stallman
2022-02-12 7:36 ` Eli Zaretskii
2022-02-14 4:13 ` Richard Stallman
2022-02-14 12:07 ` Eli Zaretskii
2022-02-15 4:33 ` Richard Stallman
2022-02-15 13:32 ` Eli Zaretskii
2022-02-16 4:14 ` Richard Stallman
2022-02-16 12:10 ` Eli Zaretskii
2022-02-19 4:54 ` Richard Stallman
2022-02-12 20:10 ` Tomas Hlavaty
2022-02-14 4:14 ` Richard Stallman
2022-01-26 8:20 ` Andreas Schwab
2022-01-27 4:13 ` Richard Stallman
2022-01-27 6:39 ` Eli Zaretskii
2022-01-27 8:13 ` Kévin Le Gouguec
2022-01-27 9:55 ` Eli Zaretskii
2022-01-27 10:29 ` Eli Zaretskii
2022-01-27 17:36 ` Kévin Le Gouguec
2022-01-27 18:38 ` Eli Zaretskii
2022-01-20 3:17 ` Richard Stallman
2022-01-20 4:54 ` Phil Sainty
2022-01-20 6:39 ` tomas
2022-01-20 17:58 ` [External] : " Drew Adams
2022-01-22 4:37 ` Richard Stallman
2022-01-22 5:16 ` Po Lu
2022-01-20 7:57 ` Eli Zaretskii
2022-01-20 6:35 ` Tim Cross
2022-01-20 7:39 ` tomas
2022-01-20 8:20 ` Eli Zaretskii
2022-01-20 7:48 ` Eli Zaretskii
2022-01-20 8:17 ` Lars Ingebrigtsen
2022-01-21 4:14 ` Richard Stallman
2022-01-19 8:20 ` Eli Zaretskii
2022-01-19 17:36 ` T.V Raman
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://www.gnu.org/software/emacs/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=E1nGYvh-00058o-9o@fencepost.gnu.org \
--to=rms@gnu.org \
--cc=eliz@gnu.org \
--cc=emacs-devel@gnu.org \
--cc=kevin.legouguec@gmail.com \
--cc=luangruo@yahoo.com \
--cc=psainty@orcon.net.nz \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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).