text: add NewDecodingReader and NewReplacementReader