我正在尝试提出一种独立于平台的方式来将 unicode 文本呈现到某个平台特定的表面,但假设大多数平台都支持至少有点相似的东西,也许我们可以谈谈 win32 API。我对渲染 LARGE 缓冲区和支持富文本最感兴趣,所以虽然我绝对不想查看 unicode 缓冲区,但我想被告知要绘制什么并被提示在哪里绘制它,所以如果缓冲区被修改,我可能会正确要求更新缓冲区的部分区域。
所以实际的问题。GetTextExtentExPointW 清楚地允许我获取每个字符的宽度,我如何获取不间断文本范围的宽度?如果我有一些长词,他可能应该换行而不是拆分词。我怎么知道在哪里打破文本?我需要实际查看 unicode 缓冲区吗?这似乎非常危险。另外,我如何计算渲染时每个基线应该有多远?
最后,这看起来已经非常复杂了。是否有替代策略来做我想做的事情?每次我更改一小块缓冲区时,我真的一点都不想重新渲染一个巨大的缓冲区。在查看单个字形和只是给一个框来吐出文本之间的东西。
最后,我对使用 knuth 的分词算法之类的东西不感兴趣。没有连字符。理想情况下,我想呈现合理的文本,但如果给出了单词定位,那是我的事。粗糙的右手边距对我来说很好。