chromium/third_party/utf/src/README.md

libutf
------

[![Build Status](https://travis-ci.org/cls/libutf.svg)](https://travis-ci.org/cls/libutf)

This is a C89 UTF-8 library, with an API compatible with that of Plan 9's
libutf, but with a number of improvements:

 * Support for runes beyond the Basic Multilingual Plane.
 * `utflen` and `utfnlen` cannot overflow on 32- or 64-bit machines.
 * `chartorune` treats all invalid codepoints as though `Runeerror`.
 * `fullrune`, `utfecpy`, and `utfnlen` do not overestimate the length of
   malformed runes.
 * An extra function, `charntorune(p,s,n)`, equivalent to
   `fullrune(s,n) ? chartorune(p,s) : 0`.
 * `Runeerror` may be set to an alternative replacement value, such as -1, to be
   used instead of U+FFFD.

Differences to be aware of:

 * `UTFmax` is 6, though `runetochar` will never write more than 4 bytes. Plan
   9's `UTFmax` is 3.
 * `chartorune` may consume multiple bytes for each illegal rune. Plan 9 always
   consumes 1.
 * `runelen` and `runetochar` return 0 if the rune is too large to print. Plan 9
   erroneously returns `UTFmax`.