Updated text canvas code to fully support custom fonts and fallbacks.