我正在研究一个文本渲染系统,我正在尝试实现一种机制,用于自动缩小文本大小以适应指定的框。
禁用自动换行功能,任务既简单又简单。我所要做的就是检查宽度或高度是否按比例增大,然后按相同的比例缩小文本。
不幸的是,启用自动换行功能后,任务变得更加复杂。如果文本大于框并且我将其缩小,则较小的文本大小可能能够在每条线上放置更多的单词,这可能会更改整个边界框,以便不同的比例使其更好地适合框。然后应用不同的比例可能再次意味着有更好的方式来自我包装,等等。
我能找到的大多数其他解决方案基本上都是:
while (isTooBig) { DecrementFontSize(); }
那可行,但可能效率很低,所以我想知道是否有人知道任何直接处理文本解析的低级算法?如果不这样做,您是否知道任何包含此功能的开源程序,以便我可以获取他们的源代码并了解他们是如何做到的?
编辑:我在Unity3D中这样做,但由于我正在实现自己的文本渲染系统,这对我的问题没有任何影响。