@@ -223,6 +223,12 @@ this restore operation is an internal detail of the algorithms in this specifica
223
223
be used by other standards. Implementations are free to find alternative ways to implement such
224
224
algorithms, as detailed in [[#implementation-considerations]] .
225
225
226
+ <hr>
227
+
228
+ <p> To obtain a <dfn>scalar value from surrogates</dfn> , given a <a for=/>leading surrogate</a>
229
+ <var> leading</var> and a <a for=/>trailing surrogate</a> <var> trailing</var> , return
230
+ 0x10000 + ((<var> leading</var> − 0xD800) << 10) + (<var> trailing</var> − 0xDC00).
231
+
226
232
227
233
228
234
<h2 id=encodings>Encodings</h2>
@@ -1855,8 +1861,8 @@ TextEncoderStream includes GenericTransformStream;
1855
1861
<dt> <dfn for=TextEncoderStream>encoder</dfn>
1856
1862
<dd> An <a for=/>encoder</a> instance.
1857
1863
1858
- <dt> <dfn for=TextEncoderStream>pending high surrogate</dfn>
1859
- <dd> Null or a <a for=/>surrogate</a> , initially null.
1864
+ <dt> <dfn for=TextEncoderStream id=textencoderstream-pending- high-surrogate>leading surrogate</dfn>
1865
+ <dd> Null or a <a for=/>leading surrogate</a> , initially null.
1860
1866
</dl>
1861
1867
1862
1868
<p class="note no-backref"> A {{TextEncoderStream}} object offers no <var> label</var> argument as it
@@ -1974,26 +1980,26 @@ constructor steps are:
1974
1980
1975
1981
<ol>
1976
1982
<li>
1977
- <p> If <var> encoder</var> 's <a>pending high surrogate</a> is non-null, then:
1983
+ <p> If <var> encoder</var> 's <a for=TextEncoderStream>leading surrogate</a> is non-null, then:
1978
1984
1979
1985
<ol>
1980
- <li><p> Let <var> high surrogate</var> be <var> encoder</var> 's <a>pending high surrogate</a> .
1986
+ <li><p> Let <var> leadingSurrogate</var> be <var> encoder</var> 's
1987
+ <a for=TextEncoderStream>leading surrogate</a> .
1981
1988
1982
- <li><p> Set <var> encoder</var> 's <a>pending high surrogate</a> to null.
1989
+ <li><p> Set <var> encoder</var> 's <a for=TextEncoderStream>leading surrogate</a> to null.
1983
1990
1984
- <li><p> If <var> item</var> is in the range U+DC00 to U+DFFF, inclusive, then return a scalar value
1985
- whose value is 0x10000 + ((<var> high surrogate</var> − 0xD800) << 10) +
1986
- (<var> item</var> − 0xDC00).
1991
+ <li><p> If <var> item</var> is a <a for=/>trailing surrogate</a> , then return a
1992
+ <a>scalar value from surrogates</a> given <var> leadingSurrogate</var> and <var> item</var> .
1987
1993
1988
1994
<li><p> <a>Restore</a> <var> item</var> to <var> input</var> .
1989
1995
1990
1996
<li><p> Return U+FFFD.
1991
1997
</ol>
1992
1998
1993
- <li><p> If <var> item</var> is in the range U+D800 to U+DBFF, inclusive, then set <a>pending high
1994
- surrogate</a> to <var> item</var> and return <a>continue</a> .
1999
+ <li><p> If <var> item</var> is a <a for=/>leading surrogate</a> , then set <var> encoder </var> 's
2000
+ <a for=TextEncoderStream>leading surrogate</a> to <var> item</var> and return <a>continue</a> .
1995
2001
1996
- <li><p> If <var> item</var> is in the range U+DC00 to U+DFFF, inclusive , then return U+FFFD.
2002
+ <li><p> If <var> item</var> is a <a for=/>trailing surrogate</a> , then return U+FFFD.
1997
2003
1998
2004
<li><p> Return <var> item</var> .
1999
2005
</ol>
@@ -2007,7 +2013,7 @@ that are split between strings. [[!INFRA]]
2007
2013
2008
2014
<ol>
2009
2015
<li>
2010
- <p> If <var> encoder</var> 's <a>pending high surrogate</a> is non-null, then:
2016
+ <p> If <var> encoder</var> 's <a for=TextEncoderStream>leading surrogate</a> is non-null, then:
2011
2017
2012
2018
<ol>
2013
2019
<li>
@@ -3322,20 +3328,20 @@ in deployed content. Therefore it is not part of the <a>shared UTF-16 decoder</a
3322
3328
rather the <a>decode</a> algorithm.
3323
3329
3324
3330
<p> <a>shared UTF-16 decoder</a> has an associated <dfn>UTF-16 lead byte</dfn> and
3325
- <dfn>UTF-16 lead surrogate</dfn> (both initially null), and
3331
+ <dfn id=utf-16-lead-surrogate >UTF-16 leading surrogate</dfn> (both initially null), and
3326
3332
<dfn id=utf-16be-decoder-flag>is UTF-16BE decoder</dfn> (initially false).
3327
3333
3328
3334
<p> <a>shared UTF-16 decoder</a> 's <a>handler</a> , given <var> ioQueue</var> and
3329
3335
<var> byte</var> , runs these steps:
3330
3336
3331
3337
<ol>
3332
3338
<li><p> If <var> byte</var> is <a>end-of-queue</a> and either
3333
- <a>UTF-16 lead byte</a> or <a>UTF-16 lead surrogate</a> is non-null, set
3334
- <a>UTF-16 lead byte</a> and <a>UTF-16 lead surrogate</a> to null, and return
3339
+ <a>UTF-16 lead byte</a> or <a>UTF-16 leading surrogate</a> is non-null, set
3340
+ <a>UTF-16 lead byte</a> and <a>UTF-16 leading surrogate</a> to null, and return
3335
3341
<a>error</a> .
3336
3342
3337
3343
<li><p> If <var> byte</var> is <a>end-of-queue</a> and
3338
- <a>UTF-16 lead byte</a> and <a>UTF-16 lead surrogate</a> are null, return
3344
+ <a>UTF-16 lead byte</a> and <a>UTF-16 leading surrogate</a> are null, return
3339
3345
<a>finished</a> .
3340
3346
3341
3347
<li><p> If <a>UTF-16 lead byte</a> is null, set <a>UTF-16 lead byte</a> to
@@ -3354,13 +3360,15 @@ rather the <a>decode</a> algorithm.
3354
3360
<p> Then set <a>UTF-16 lead byte</a> to null.
3355
3361
3356
3362
<li>
3357
- <p> If <a>UTF-16 lead surrogate</a> is non-null, let <var> lead surrogate</var> be
3358
- <a>UTF-16 lead surrogate</a> , set <a>UTF-16 lead surrogate</a> to null, and then:
3363
+ <p> If <a>UTF-16 leading surrogate</a> is non-null:
3359
3364
3360
3365
<ol>
3361
- <li><p> If <var> code unit</var> is in the range U+DC00 to U+DFFF, inclusive,
3362
- return a code point whose value is
3363
- 0x10000 + ((<var> lead surrogate</var> − 0xD800) << 10) + (<var> code unit</var> − 0xDC00).
3366
+ <li><p> Let <var> leadingSurrogate</var> be <a>UTF-16 leading surrogate</a> .
3367
+
3368
+ <li><p> Set <a>UTF-16 leading surrogate</a> to null.
3369
+
3370
+ <li><p> If <var> code unit</var> is a <a for=/>trailing surrogate</a> , then return a
3371
+ <a>scalar value from surrogates</a> given <var> leadingSurrogate</var> and <var> code unit</var> .
3364
3372
3365
3373
<li><p> Let <var> byte1</var> be <var> code unit</var> >> 8.
3366
3374
@@ -3371,16 +3379,12 @@ rather the <a>decode</a> algorithm.
3371
3379
<var> byte1</var> .
3372
3380
3373
3381
<li><p> <a>Restore</a> <var> bytes</var> to <var> ioQueue</var> and return <a>error</a> .
3374
- <!-- unpaired surrogates; IE/WebKit output them, Gecko/Opera U+FFFD them -->
3375
3382
</ol>
3376
3383
3377
- <li><p> If <var> code unit</var> is in the range U+D800 to U+DBFF, inclusive, set
3378
- <a>UTF-16 lead surrogate</a> to <var> code unit</var> and return
3379
- <a>continue</a> .
3384
+ <li><p> If <var> code unit</var> is a <a for=/>leading surrogate</a> , then set
3385
+ <a>UTF-16 leading surrogate</a> to <var> code unit</var> and return <a>continue</a> .
3380
3386
3381
- <li><p> If <var> code unit</var> is in the range U+DC00 to U+DFFF, inclusive,
3382
- return <a>error</a> .
3383
- <!-- unpaired surrogates; IE/WebKit output them, Gecko/Opera U+FFFD them -->
3387
+ <li><p> If <var> code unit</var> is a <a for=/>trailing surrogate</a> , then return <a>error</a> .
3384
3388
3385
3389
<li><p> Return code point <var> code unit</var> .
3386
3390
</ol>
0 commit comments