GNU bug report logs - #35005
27.0.50; Fontification unexpectedly works with anonymous faces

Previous Next

Package: emacs;

Reported by: Markus Triska <triska <at> metalevel.at>

Date: Tue, 26 Mar 2019 16:36:01 UTC

Severity: normal

Tags: fixed

Found in version 27.0.50

Fixed in version 27.1

Done: Lars Ingebrigtsen <larsi <at> gnus.org>

Bug is archived. No further changes may be made.

To add a comment to this bug, you must first unarchive it, by sending
a message to control AT debbugs.gnu.org, with unarchive 35005 in the body.
You can then email your comments to 35005 AT debbugs.gnu.org in the normal way.

Toggle the display of automated, internal messages from the tracker.

View this report as an mbox folder, status mbox, maintainer mbox


Report forwarded to bug-gnu-emacs <at> gnu.org:
bug#35005; Package emacs. (Tue, 26 Mar 2019 16:36:01 GMT) Full text and rfc822 format available.

Acknowledgement sent to Markus Triska <triska <at> metalevel.at>:
New bug report received and forwarded. Copy sent to bug-gnu-emacs <at> gnu.org. (Tue, 26 Mar 2019 16:36:02 GMT) Full text and rfc822 format available.

Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):

From: Markus Triska <triska <at> metalevel.at>
To: bug-gnu-emacs <at> gnu.org
Subject: 27.0.50; Fontification unexpectedly works with anonymous faces
Date: Tue, 26 Mar 2019 17:37:04 +0100
The Elisp info material states in "39.12 Faces": 

      Many parts of Emacs require named faces, and do not accept
   anonymous faces. These include the functions documented in Attribute
   Functions, and the variable ‘font-lock-keywords’ (see Search-based
   Fontification). Unless otherwise stated, we will use the term “face”
   to refer only to named faces.

However, when I start Emacs with "emacs -Q", and then evaluate in
the *scratch* buffer the form:

    (progn
      (font-lock-add-keywords nil '(("hello" 0 '(:background "green")) t))
      (insert "hello"))

then I see that "hello" is inserted and highlighted in green, apparently
due to search-based fontification where an anonymous face is specified!

I am currently working on an application where this functionality (i.e.,
anonymous faces that can be specified for fontification) would be
extremely useful. Could you please consider supporting this feature,
and - if this already works as intended - officially document it?

Thank you and all the best!
Markus

In GNU Emacs 27.0.50 (build 1, x86_64-apple-darwin18.0.0, X toolkit, Xaw scroll bars)
 of 2018-11-15 built on mt-computer
Repository revision: b4eb908f858284a7962851fd99c94598f76afa6f
Windowing system distributor 'The X.Org Foundation', version 11.0.11804000






Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#35005; Package emacs. (Thu, 28 Mar 2019 16:15:01 GMT) Full text and rfc822 format available.

Message #8 received at 35005 <at> debbugs.gnu.org (full text, mbox):

From: Eli Zaretskii <eliz <at> gnu.org>
To: Markus Triska <triska <at> metalevel.at>
Cc: 35005 <at> debbugs.gnu.org
Subject: Re: bug#35005: 27.0.50;
 Fontification unexpectedly works with anonymous faces
Date: Thu, 28 Mar 2019 18:14:28 +0200
> From: Markus Triska <triska <at> metalevel.at>
> Date: Tue, 26 Mar 2019 17:37:04 +0100
> 
> 
> The Elisp info material states in "39.12 Faces": 
> 
>       Many parts of Emacs require named faces, and do not accept
>    anonymous faces. These include the functions documented in Attribute
>    Functions, and the variable ‘font-lock-keywords’ (see Search-based
>    Fontification). Unless otherwise stated, we will use the term “face”
>    to refer only to named faces.
> 
> However, when I start Emacs with "emacs -Q", and then evaluate in
> the *scratch* buffer the form:
> 
>     (progn
>       (font-lock-add-keywords nil '(("hello" 0 '(:background "green")) t))
>       (insert "hello"))
> 
> then I see that "hello" is inserted and highlighted in green, apparently
> due to search-based fontification where an anonymous face is specified!
> 
> I am currently working on an application where this functionality (i.e.,
> anonymous faces that can be specified for fontification) would be
> extremely useful. Could you please consider supporting this feature,
> and - if this already works as intended - officially document it?

I suggest to ask on emacs-devel whether the documentation is correct
or not.  It's possible that there are some subtle use cases where
anonymous faces won't work in this situation.  The real experts on
this matter don't read the bug list.




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#35005; Package emacs. (Thu, 31 Oct 2019 17:25:01 GMT) Full text and rfc822 format available.

Message #11 received at 35005 <at> debbugs.gnu.org (full text, mbox):

From: Lars Ingebrigtsen <larsi <at> gnus.org>
To: Markus Triska <triska <at> metalevel.at>,  35005 <at> debbugs.gnu.org,
 emacs-devel <at> gnu.org
Subject: Re: bug#35005: 27.0.50; Fontification unexpectedly works with
 anonymous faces
Date: Thu, 31 Oct 2019 18:24:38 +0100
Eli Zaretskii <eliz <at> gnu.org> writes:

>> The Elisp info material states in "39.12 Faces": 
>> 
>>       Many parts of Emacs require named faces, and do not accept
>>    anonymous faces. These include the functions documented in Attribute
>>    Functions, and the variable ‘font-lock-keywords’ (see Search-based
>>    Fontification). Unless otherwise stated, we will use the term “face”
>>    to refer only to named faces.
>> 
>> However, when I start Emacs with "emacs -Q", and then evaluate in
>> the *scratch* buffer the form:
>> 
>>     (progn
>>       (font-lock-add-keywords nil '(("hello" 0 '(:background "green")) t))
>>       (insert "hello"))
>> 
>> then I see that "hello" is inserted and highlighted in green, apparently
>> due to search-based fontification where an anonymous face is specified!
>> 
>> I am currently working on an application where this functionality (i.e.,
>> anonymous faces that can be specified for fontification) would be
>> extremely useful. Could you please consider supporting this feature,
>> and - if this already works as intended - officially document it?
>
> I suggest to ask on emacs-devel whether the documentation is correct
> or not.  It's possible that there are some subtle use cases where
> anonymous faces won't work in this situation.  The real experts on
> this matter don't read the bug list.

I'm not sure whether this was ever brought up on emacs-devel?  I
wondered about that restriction myself -- I could see why it might be an
issue (some parts of the font locking machinery checking for whether an
element is a list and interpreting is as something other than a face),
but it would be nice if this worked with anonymous faces.

Does anybody know what the manual is referring to here, or whether it's
an outdated restriction that has gone away?

-- 
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#35005; Package emacs. (Thu, 31 Oct 2019 20:39:01 GMT) Full text and rfc822 format available.

Message #14 received at 35005 <at> debbugs.gnu.org (full text, mbox):

From: Stefan Monnier <monnier <at> iro.umontreal.ca>
To: Lars Ingebrigtsen <larsi <at> gnus.org>
Cc: Markus Triska <triska <at> metalevel.at>, 35005 <at> debbugs.gnu.org,
 emacs-devel <at> gnu.org
Subject: Re: bug#35005: 27.0.50;
 Fontification unexpectedly works with anonymous faces
Date: Thu, 31 Oct 2019 16:38:38 -0400
> I'm not sure whether this was ever brought up on emacs-devel?  I
> wondered about that restriction myself -- I could see why it might be an
> issue (some parts of the font locking machinery checking for whether an
> element is a list and interpreting is as something other than a face),
> but it would be nice if this worked with anonymous faces.
>
> Does anybody know what the manual is referring to here, or whether it's
> an outdated restriction that has gone away?

AFAIK anonymous faces work fine in font-lock.  They can be a bit more
delicate to us because many places that accept faces also accept lists
(either of faces or of other things) but in general there's no real
restriction that I know of.

So I think the "do not accept" part is not true (any more?), but it's
still the case that you're generally better off using named faces
when possible.


        Stefan





Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#35005; Package emacs. (Thu, 31 Oct 2019 21:10:02 GMT) Full text and rfc822 format available.

Message #17 received at 35005 <at> debbugs.gnu.org (full text, mbox):

From: Markus Triska <triska <at> metalevel.at>
To: Lars Ingebrigtsen <larsi <at> gnus.org>
Cc: 35005 <at> debbugs.gnu.org, emacs-devel <at> gnu.org
Subject: Re: bug#35005: 27.0.50;
 Fontification unexpectedly works with anonymous faces
Date: Thu, 31 Oct 2019 22:09:10 +0100
Dear Lars,

Lars Ingebrigtsen <larsi <at> gnus.org> writes:

> I'm not sure whether this was ever brought up on emacs-devel?

It was, but I have not received any answer so far:

  https://lists.gnu.org/archive/html/emacs-devel/2019-03/msg01092.html

Thank you for looking into this!

All the best,
Markus





Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#35005; Package emacs. (Fri, 01 Nov 2019 13:14:03 GMT) Full text and rfc822 format available.

Message #20 received at 35005 <at> debbugs.gnu.org (full text, mbox):

From: Lars Ingebrigtsen <larsi <at> gnus.org>
To: Stefan Monnier <monnier <at> iro.umontreal.ca>
Cc: Markus Triska <triska <at> metalevel.at>, 35005 <at> debbugs.gnu.org,
 emacs-devel <at> gnu.org
Subject: Re: bug#35005: 27.0.50; Fontification unexpectedly works with
 anonymous faces
Date: Fri, 01 Nov 2019 14:13:32 +0100
Stefan Monnier <monnier <at> iro.umontreal.ca> writes:

> AFAIK anonymous faces work fine in font-lock.  They can be a bit more
> delicate to us because many places that accept faces also accept lists
> (either of faces or of other things) but in general there's no real
> restriction that I know of.
>
> So I think the "do not accept" part is not true (any more?), but it's
> still the case that you're generally better off using named faces
> when possible.

OK, I'll adjust the text in the manual.  Names faces are preferable, but
generating faces on the fly is sometimes necessary. 

-- 
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no




Added tag(s) fixed. Request was from Lars Ingebrigtsen <larsi <at> gnus.org> to control <at> debbugs.gnu.org. (Fri, 01 Nov 2019 13:19:02 GMT) Full text and rfc822 format available.

bug marked as fixed in version 27.1, send any further explanations to 35005 <at> debbugs.gnu.org and Markus Triska <triska <at> metalevel.at> Request was from Lars Ingebrigtsen <larsi <at> gnus.org> to control <at> debbugs.gnu.org. (Fri, 01 Nov 2019 13:19:02 GMT) Full text and rfc822 format available.

Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#35005; Package emacs. (Sat, 02 Nov 2019 09:11:01 GMT) Full text and rfc822 format available.

Message #27 received at 35005 <at> debbugs.gnu.org (full text, mbox):

From: Markus Triska <triska <at> metalevel.at>
To: Lars Ingebrigtsen <larsi <at> gnus.org>
Cc: Stefan Monnier <monnier <at> iro.umontreal.ca>, 35005 <at> debbugs.gnu.org,
 emacs-devel <at> gnu.org
Subject: Re: bug#35005: 27.0.50;
 Fontification unexpectedly works with anonymous faces
Date: Sat, 02 Nov 2019 10:10:27 +0100
Lars Ingebrigtsen <larsi <at> gnus.org> writes:

> OK, I'll adjust the text in the manual.  Names faces are preferable, but
> generating faces on the fly is sometimes necessary.

In my opinion, this issue is not resolved, please consider reopening it.

With the change that is now installed, the documentation reads:

   Many parts of Emacs require named faces, but some do not accept
   anonymous faces (e.g., the functions documented in @ref{Attribute
   Functions})

Where "require named faces" and "do not accept anonymous faces" amounts
to the same thing, so the wording seems not to be the intended one.

So in fact, the documentation now stresses further that named faces are
required, whereas the point of this issue is to document that anonymous
faces can be used for fontification. This still cannot be deduced from
the current manual. If that works, could you please document it?

Thank you and all the best,
Markus




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#35005; Package emacs. (Sat, 02 Nov 2019 15:08:02 GMT) Full text and rfc822 format available.

Message #30 received at 35005 <at> debbugs.gnu.org (full text, mbox):

From: Lars Ingebrigtsen <larsi <at> gnus.org>
To: Markus Triska <triska <at> metalevel.at>
Cc: Stefan Monnier <monnier <at> iro.umontreal.ca>, 35005 <at> debbugs.gnu.org,
 emacs-devel <at> gnu.org
Subject: Re: bug#35005: 27.0.50; Fontification unexpectedly works with
 anonymous faces
Date: Sat, 02 Nov 2019 16:07:51 +0100
Markus Triska <triska <at> metalevel.at> writes:

> With the change that is now installed, the documentation reads:
>
>    Many parts of Emacs require named faces, but some do not accept
>    anonymous faces (e.g., the functions documented in @ref{Attribute
>    Functions})
>
> Where "require named faces" and "do not accept anonymous faces" amounts
> to the same thing, so the wording seems not to be the intended one.

Yeah, that's a very awkward of putting it, so I've now tweaked it some.

> So in fact, the documentation now stresses further that named faces are
> required, whereas the point of this issue is to document that anonymous
> faces can be used for fontification. This still cannot be deduced from
> the current manual. If that works, could you please document it?

It just mentions one example where named faces are required, and I think
the reader will take from that that Emacs will document when you can't
use anonymous faces.  Since font locking doesn't say anything about
that, then the natural interpretation is that font locking doesn't
require named faces.

-- 
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#35005; Package emacs. (Sat, 09 Nov 2019 17:44:01 GMT) Full text and rfc822 format available.

Message #33 received at 35005 <at> debbugs.gnu.org (full text, mbox):

From: Markus Triska <triska <at> metalevel.at>
To: Lars Ingebrigtsen <larsi <at> gnus.org>
Cc: Stefan Monnier <monnier <at> iro.umontreal.ca>, 35005 <at> debbugs.gnu.org,
 emacs-devel <at> gnu.org
Subject: Re: bug#35005: 27.0.50;
 Fontification unexpectedly works with anonymous faces
Date: Sat, 09 Nov 2019 18:43:11 +0100
Lars Ingebrigtsen <larsi <at> gnus.org> writes:

> It just mentions one example where named faces are required, and I think
> the reader will take from that that Emacs will document when you can't
> use anonymous faces.  Since font locking doesn't say anything about
> that, then the natural interpretation is that font locking doesn't
> require named faces.

Please consider specifically the documentation of the function
font-lock-add-keywords that I used in the example. Its documentation
points to that of font-lock-keywords, which contains the description:

   FACENAME is an expression whose value is the face name to use.
   Instead of a face, FACENAME can evaluate to a property list of
   the form (face FACE PROP1 VAL1 PROP2 VAL2 ...)  in which case all
   the listed text-properties will be set rather than just FACE.

This currently states that a face name is expected.

Since the Elisp documentation also states: "Unless otherwise stated, we
will use the term “face” to refer only to named faces.", the notion of
"face" in the description above also does not include anonymous faces.

Would it work to mention that "face FACE" can also be omitted, i.e.,
that an anonymous face can also be specified here?

Thank you and all the best,
Markus




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#35005; Package emacs. (Sat, 09 Nov 2019 18:02:05 GMT) Full text and rfc822 format available.

Message #36 received at 35005 <at> debbugs.gnu.org (full text, mbox):

From: Stefan Monnier <monnier <at> iro.umontreal.ca>
To: Markus Triska <triska <at> metalevel.at>
Cc: Lars Ingebrigtsen <larsi <at> gnus.org>, 35005 <at> debbugs.gnu.org,
 emacs-devel <at> gnu.org
Subject: Re: bug#35005: 27.0.50; Fontification unexpectedly works with
 anonymous faces
Date: Sat, 09 Nov 2019 13:01:05 -0500
>    FACENAME is an expression whose value is the face name to use.
>    Instead of a face, FACENAME can evaluate to a property list of
>    the form (face FACE PROP1 VAL1 PROP2 VAL2 ...)  in which case all
>    the listed text-properties will be set rather than just FACE.
>
> This currently states that a face name is expected.
>
> Since the Elisp documentation also states: "Unless otherwise stated, we
> will use the term “face” to refer only to named faces.", the notion of
> "face" in the description above also does not include anonymous faces.
>
> Would it work to mention that "face FACE" can also be omitted, i.e.,
> that an anonymous face can also be specified here?

No, the `face FACE` *cannot* be omitted: the `face' symbol in the car is
tested to distinguish this case.  Note also that the `PROP1 VAL1 ...`
are *not* face properties, they are *text* properties.

The above docstring should probably replace "face name" by "face" but
other than that it looks about right.


        Stefan





Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#35005; Package emacs. (Sat, 09 Nov 2019 20:03:01 GMT) Full text and rfc822 format available.

Message #39 received at 35005 <at> debbugs.gnu.org (full text, mbox):

From: Lars Ingebrigtsen <larsi <at> gnus.org>
To: Stefan Monnier <monnier <at> iro.umontreal.ca>
Cc: Markus Triska <triska <at> metalevel.at>, 35005 <at> debbugs.gnu.org,
 emacs-devel <at> gnu.org
Subject: Re: bug#35005: 27.0.50; Fontification unexpectedly works with
 anonymous faces
Date: Sat, 09 Nov 2019 21:02:34 +0100
Stefan Monnier <monnier <at> iro.umontreal.ca> writes:

> The above docstring should probably replace "face name" by "face" but
> other than that it looks about right.

OK; updated.

-- 
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#35005; Package emacs. (Sat, 09 Nov 2019 21:03:02 GMT) Full text and rfc822 format available.

Message #42 received at 35005 <at> debbugs.gnu.org (full text, mbox):

From: Markus Triska <triska <at> metalevel.at>
To: Lars Ingebrigtsen <larsi <at> gnus.org>
Cc: Stefan Monnier <monnier <at> iro.umontreal.ca>, 35005 <at> debbugs.gnu.org,
 emacs-devel <at> gnu.org
Subject: Re: bug#35005: 27.0.50;
 Fontification unexpectedly works with anonymous faces
Date: Sat, 09 Nov 2019 22:02:54 +0100
Lars Ingebrigtsen <larsi <at> gnus.org> writes:

>> The above docstring should probably replace "face name" by "face" but
>> other than that it looks about right.
>
> OK; updated.

Initially, I also thought this would solve it. However, as I mentioned,
the Emacs documentation states:

   "Unless otherwise stated, we will use the term “face” to refer only
   to named faces."

Therefore, the description now still does not make clear that anonymous
faces can be used here. I filed this issue to document this feature, and
I would appreciate if a phrasing to that effect could be added.

Thank you and all the best,
Markus





Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#35005; Package emacs. (Sat, 09 Nov 2019 21:12:02 GMT) Full text and rfc822 format available.

Message #45 received at 35005 <at> debbugs.gnu.org (full text, mbox):

From: Stefan Monnier <monnier <at> iro.umontreal.ca>
To: Markus Triska <triska <at> metalevel.at>
Cc: Lars Ingebrigtsen <larsi <at> gnus.org>, 35005 <at> debbugs.gnu.org,
 emacs-devel <at> gnu.org
Subject: Re: bug#35005: 27.0.50; Fontification unexpectedly works with
 anonymous faces
Date: Sat, 09 Nov 2019 16:10:58 -0500
> Therefore, the description now still does not make clear that anonymous
> faces can be used here.

Maybe we should simply better document the general rules about where
anonymous faces can usually be used and where they usually can't be used
(AFAICT they can be used where they affect the redisplay (e.g. in the
`face` and `font-lock-face` properties) but they can't be passed to face
manipulation functions like `set-face-attributes` and `describe-face`).
Their usage in font-lock is a natural consequence of those general
rules and doesn't merit extra discussion in the font-lock-keywords
doc which is already complex enough IMO.


        Stefan





Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#35005; Package emacs. (Sat, 09 Nov 2019 21:30:02 GMT) Full text and rfc822 format available.

Message #48 received at 35005 <at> debbugs.gnu.org (full text, mbox):

From: Markus Triska <triska <at> metalevel.at>
To: Stefan Monnier <monnier <at> iro.umontreal.ca>
Cc: Lars Ingebrigtsen <larsi <at> gnus.org>, 35005 <at> debbugs.gnu.org,
 emacs-devel <at> gnu.org
Subject: Re: bug#35005: 27.0.50;
 Fontification unexpectedly works with anonymous faces
Date: Sat, 09 Nov 2019 22:29:10 +0100
Stefan Monnier <monnier <at> iro.umontreal.ca> writes:

> Maybe we should simply better document the general rules about where
> anonymous faces can usually be used and where they usually can't be
> used

Yes, I would greatly appreciate this, and it would also solve this
concrete issue.

Thank you and all the best,
Markus




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#35005; Package emacs. (Sun, 10 Nov 2019 01:53:02 GMT) Full text and rfc822 format available.

Message #51 received at 35005 <at> debbugs.gnu.org (full text, mbox):

From: Drew Adams <drew.adams <at> oracle.com>
To: Markus Triska <triska <at> metalevel.at>, Lars Ingebrigtsen <larsi <at> gnus.org>
Cc: Stefan Monnier <monnier <at> iro.umontreal.ca>, 35005 <at> debbugs.gnu.org,
 emacs-devel <at> gnu.org
Subject: RE: bug#35005: 27.0.50; Fontification unexpectedly works with
 anonymous faces
Date: Sat, 9 Nov 2019 17:52:04 -0800 (PST)
Sorry to interrupt, but is there a good
reason y'all are sending this to both
the bug list and emacs-devel?  If not,
please consider sending it to only the
bug list.  Thx.




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#35005; Package emacs. (Thu, 14 Nov 2019 09:01:02 GMT) Full text and rfc822 format available.

Message #54 received at 35005 <at> debbugs.gnu.org (full text, mbox):

From: Eli Zaretskii <eliz <at> gnu.org>
To: Stefan Monnier <monnier <at> iro.umontreal.ca>
Cc: larsi <at> gnus.org, triska <at> metalevel.at, 35005 <at> debbugs.gnu.org
Subject: Re: bug#35005: 27.0.50;
 Fontification unexpectedly works with anonymous faces
Date: Thu, 14 Nov 2019 11:00:36 +0200
> From: Stefan Monnier <monnier <at> iro.umontreal.ca>
> Date: Sat, 09 Nov 2019 16:10:58 -0500
> Cc: Lars Ingebrigtsen <larsi <at> gnus.org>, 35005 <at> debbugs.gnu.org,
>  emacs-devel <at> gnu.org
> 
> > Therefore, the description now still does not make clear that anonymous
> > faces can be used here.
> 
> Maybe we should simply better document the general rules about where
> anonymous faces can usually be used and where they usually can't be used
> (AFAICT they can be used where they affect the redisplay (e.g. in the
> `face` and `font-lock-face` properties) but they can't be passed to face
> manipulation functions like `set-face-attributes` and `describe-face`).
> Their usage in font-lock is a natural consequence of those general
> rules and doesn't merit extra discussion in the font-lock-keywords
> doc which is already complex enough IMO.

If someone knows enough to write a documentation patch about this,
please feel free, and TIA.




bug archived. Request was from Debbugs Internal Request <help-debbugs <at> gnu.org> to internal_control <at> debbugs.gnu.org. (Thu, 12 Dec 2019 12:24:05 GMT) Full text and rfc822 format available.

This bug report was last modified 4 years and 128 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.