let utf8_char_of_index s i =
let len = String.length s in
if i >= len or i < 0 then
invalid_arg "utf8_char_from_index"
else
begin
let char_count = ref (-1) in
let pos = ref 0 in
while !pos <= i && !pos < len do
incr char_count;
pos := !pos + utf8_nb_bytes_of_char s.[!pos]
done;
!char_count
end