Big patch... 1. use harfbuzz for text layout; 2. use icu for text representation; 3. use OpenGL for rendering