| @@ 2688-2694 (lines=7) @@ | ||
| 2685 | if (0 === (0x80 & $in)) { |
|
| 2686 | // US-ASCII, pass straight through. |
|
| 2687 | $mBytes = 1; |
|
| 2688 | } elseif (0xC0 === (0xE0 & $in)) { |
|
| 2689 | // First octet of 2 octet sequence. |
|
| 2690 | $mUcs4 = $in; |
|
| 2691 | $mUcs4 = ($mUcs4 & 0x1F) << 6; |
|
| 2692 | $mState = 1; |
|
| 2693 | $mBytes = 2; |
|
| 2694 | } elseif (0xE0 === (0xF0 & $in)) { |
|
| 2695 | // First octet of 3 octet sequence. |
|
| 2696 | $mUcs4 = $in; |
|
| 2697 | $mUcs4 = ($mUcs4 & 0x0F) << 12; |
|
| @@ 2700-2706 (lines=7) @@ | ||
| 2697 | $mUcs4 = ($mUcs4 & 0x0F) << 12; |
|
| 2698 | $mState = 2; |
|
| 2699 | $mBytes = 3; |
|
| 2700 | } elseif (0xF0 === (0xF8 & $in)) { |
|
| 2701 | // First octet of 4 octet sequence. |
|
| 2702 | $mUcs4 = $in; |
|
| 2703 | $mUcs4 = ($mUcs4 & 0x07) << 18; |
|
| 2704 | $mState = 3; |
|
| 2705 | $mBytes = 4; |
|
| 2706 | } elseif (0xF8 === (0xFC & $in)) { |
|
| 2707 | /* First octet of 5 octet sequence. |
|
| 2708 | * |
|
| 2709 | * This is illegal because the encoded codepoint must be either |
|
| @@ 2719-2725 (lines=7) @@ | ||
| 2716 | $mUcs4 = ($mUcs4 & 0x03) << 24; |
|
| 2717 | $mState = 4; |
|
| 2718 | $mBytes = 5; |
|
| 2719 | } elseif (0xFC === (0xFE & $in)) { |
|
| 2720 | // First octet of 6 octet sequence, see comments for 5 octet sequence. |
|
| 2721 | $mUcs4 = $in; |
|
| 2722 | $mUcs4 = ($mUcs4 & 1) << 30; |
|
| 2723 | $mState = 5; |
|
| 2724 | $mBytes = 6; |
|
| 2725 | } else { |
|
| 2726 | /* Current octet is neither in the US-ASCII range nor a legal first |
|
| 2727 | * octet of a multi-octet sequence. |
|
| 2728 | */ |
|