001    package com.thaiopensource.util;
002    
003    public abstract class Utf16 {
004      // 110110XX XXXXXX 110111XX XXXXXX
005      static public boolean isSurrogate(char c) {
006        return (c & 0xF800) == 0xD800;
007      }
008      static public boolean isSurrogate1(char c) {
009        return (c & 0xFC00) == 0xD800;
010      }
011      static public boolean isSurrogate2(char c) {
012        return (c & 0xFC00) == 0xDC00;
013      }
014      static public int scalarValue(char c1, char c2) {
015        return (((c1 & 0x3FF) << 10) | (c2 & 0x3FF)) + 0x10000;
016      }
017      static public char surrogate1(int c) {
018        return (char)(((c - 0x10000) >> 10) | 0xD800);
019      }
020      static public char surrogate2(int c) {
021        return (char)(((c - 0x10000) & 0x3FF) | 0xDC00);
022      }
023    }
024