从包含字符像素宽度的hashmap中完美地进行wordwrapping的像素

时间:2014-08-08 20:46:26

标签: java

我正在为使用自定义字体的应用程序编写插件,我创建了一个包含每个字符作为键的hashmap,以及以像素为单位的宽度(包括字符之间的1个额外像素)。但我仍然无法找到一种解决方案,感觉我不知道自己在做什么:P我试着检查其他问题,但它们似乎都是关于字符行的长度,或者使用外部罐子来处理标准字体。

  • 可以修剪尾随空格(可选)。
  • 不适合该行的单词需要转到下一行。
  • 大于整行的单词应该在可以在一行上的最后一个字符之后拆分。 (线宽只有112像素宽,这应该考虑到 - 一个单词可能需要多次分割)。
  • 拆分应与中间的换行符相结合。

  • 输入是一个包含一些现有换行符的字符串。

  • 最大行长度(以像素为单位)= 112。

如果有更好的方法来解决这个问题,那么请不要忽略这一点。

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

如果您只需要支持ASCII或ISO-8859-1,那么由二进制字符值索引的简单宽度数组将是更好的选择。如果你需要支持Unicode,那么Map会更好,因为数组会非常庞大​​且稀疏(即大部分为空)。

给出112像素宽度,你必须为嵌入式显示器写这个,所以你可能不关心连字符,分裂音节和这样的细节。根据您的显示器有多少行,您可能需要考虑设置分割单词的最小阈值,例如其宽度的25%。即如果你不能获得该行中至少25%的字母,则将整个单词分成下一行,并在前一行的末尾留下空格。但鉴于空间有限,这可能不是一个考虑因素的美学决定。