| @@ 3142-3148 (lines=7) @@ | ||
| 3139 | if (0 === (0x80 & $in)) { |
|
| 3140 | // US-ASCII, pass straight through. |
|
| 3141 | $mBytes = 1; |
|
| 3142 | } elseif (0xC0 === (0xE0 & $in)) { |
|
| 3143 | // First octet of 2 octet sequence. |
|
| 3144 | $mUcs4 = $in; |
|
| 3145 | $mUcs4 = ($mUcs4 & 0x1F) << 6; |
|
| 3146 | $mState = 1; |
|
| 3147 | $mBytes = 2; |
|
| 3148 | } elseif (0xE0 === (0xF0 & $in)) { |
|
| 3149 | // First octet of 3 octet sequence. |
|
| 3150 | $mUcs4 = $in; |
|
| 3151 | $mUcs4 = ($mUcs4 & 0x0F) << 12; |
|
| @@ 3154-3160 (lines=7) @@ | ||
| 3151 | $mUcs4 = ($mUcs4 & 0x0F) << 12; |
|
| 3152 | $mState = 2; |
|
| 3153 | $mBytes = 3; |
|
| 3154 | } elseif (0xF0 === (0xF8 & $in)) { |
|
| 3155 | // First octet of 4 octet sequence. |
|
| 3156 | $mUcs4 = $in; |
|
| 3157 | $mUcs4 = ($mUcs4 & 0x07) << 18; |
|
| 3158 | $mState = 3; |
|
| 3159 | $mBytes = 4; |
|
| 3160 | } elseif (0xF8 === (0xFC & $in)) { |
|
| 3161 | /* First octet of 5 octet sequence. |
|
| 3162 | * |
|
| 3163 | * This is illegal because the encoded codepoint must be either |
|
| @@ 3173-3179 (lines=7) @@ | ||
| 3170 | $mUcs4 = ($mUcs4 & 0x03) << 24; |
|
| 3171 | $mState = 4; |
|
| 3172 | $mBytes = 5; |
|
| 3173 | } elseif (0xFC === (0xFE & $in)) { |
|
| 3174 | // First octet of 6 octet sequence, see comments for 5 octet sequence. |
|
| 3175 | $mUcs4 = $in; |
|
| 3176 | $mUcs4 = ($mUcs4 & 1) << 30; |
|
| 3177 | $mState = 5; |
|
| 3178 | $mBytes = 6; |
|
| 3179 | } else { |
|
| 3180 | /* Current octet is neither in the US-ASCII range nor a legal first |
|
| 3181 | * octet of a multi-octet sequence. |
|
| 3182 | */ |
|