Re: Surrogate space in Unicode

From: J M Sykes (
Date: Fri Feb 16 2001 - 06:29:30 EST

See end ->

----- Original Message -----
From: <>
To: "Unicode List" <>
Sent: Friday, February 16, 2001 6:05 AM
Subject: Re: Surrogate space in Unicode

> In a message dated 2001-02-15 15:26:55 Pacific Standard Time,
> writes:
> > > At 2001-02-06 07:48:29 -0800 Mark Davis wrote:
> > >> At 2001-02-06 01:51 "nikita k" <> wrote:
> > >> What is surrogate space in unicode?
> >
> > (Mark defines various terms relating to 'supplementary' and
> >
> > So, I guess it's safe to say that a surrogate code point is
> > a surrogate code point... which is a surrogate for a supplementary
> > code point, which is a code point between something and something
> > else.
> >
> > Someone needs to take a break from the bureaucrateze and learn
> > again how to communicate clearly. Is that not a part of the
> > goal, here?
> I thought Mark's definitions were both accurate and clear, unlike John's
> rejoinder, which was neither.
> It has proven difficult to come up with convenient terms for the Unicode
> characters encoded at U+10000 and beyond. The term 'surrogate' has been
> misused in an attempt to do this. It is important to use consistent terms
> that demonstrate an understanding of what is going on.
> I am not a member of the Consortium, and certainly would not consider
> a bureaucrat, so I wil take a stab at this in the plainest English I can
> that does not sacrifice accuracy.
> 1. A Unicode 'code point' is a number between 0 and 1,114,111 inclusive,
> usually expressed in hexadecimal (U+0000 through U+10FFFF). Not every
> point necessarily represents a valid character, although most do. For
> example, there is no character encoded at U+FFFF.
> 2. A 'basic' code point, which may represent a 'basic character', can
> from U+0000 through U+FFFF. The remaining code points (U+10000 through
> U+10FFFF) are 'supplementary' code points, each of which may represent a
> 'supplementary character'.
> 3. 'Surrogate' code points range from U+D800 through U+DFFF (not U+DC00).
> They do not directly represent characters (so there is no such thing as a
> 'surrogate character'), but two of them may be used together according to
> rules of UTF-16 to represent a supplementary character. The two surrogate
> code points used for this purpose would be called a 'surrogate pair'.
> separate them.
> Is that better?

It's clearer, but misses what I understand to be the absolutely crucial
distinction between a code point (correctly defined) and a code unit
(mentioned by Mark but not by Doug). For what a code unit is, see

I would question whether 'surrogate code points' are really code points. In
the sense that they are a subset of 'code points' as defined, I guess they
are; but they are not only unlike every other code point in that they "do
not directly represent characters", they are explicitly and inexorably
disqualified from so doing, being reserved for use, in pairs, as UTF-16 code
units. (Which is what Mark said, of course.)

Looked at in this way, surely it makes it clearer that the transcoding of a
surrogate (code point) into UTF-8 is an abomination.

Simplification is all very well, but it can be taken too far, as when
important distinctions are lost.

For what it's worth,



J M Sykes Email:
97 Oakdale Drive
Heald Green
Cheshire SK8 3SN
UK Tel: (44) 161 437 5413


This archive was generated by hypermail 2.1.2 : Tue Jul 10 2001 - 17:21:18 EDT