dchar front(char[] s) {
  dchar c = s[0];
  if (!(c & 0x80))
    return c;
  byte b = (c >> 4) & 3;
  b += !b;
  c &= 63 >> b;
  char *p = s.ptr;
  do {
    p++;
    c = c << 6 | *p & 63;
  } while(--b);
  return c;
}

Reply via email to