每个人都知道使用专有 API 是一件非常糟糕的事情。在几乎所有情况下,您都可以用您自己的实现或一些额外的库来替换该 API。
几乎...
这是您找不到任何替代方案的情况:
table.put ( SwingUtilities2.AA_TEXT_PROPERTY_KEY, SwingUtilities2.AATextInfo.getAATextInfo ( true ) );
这行代码将正确的文本抗锯齿设置放入 L&F 默认表中。如果您不使用这些设置,您将在任何文本组件中渲染某些特定符号时遇到大量问题(例如泰语 - “ข้อความที่เรียบง่าย”或阿拉伯语 - “رسالة نصية بسيطة”)。
它不能被其他东西替换,因为 AATextInfo 的实例(是的,正是那个类,而不是其他东西)在涉及文本呈现时在 Swing 架构中使用,而 Look and Feel 只是将该实例添加到默认值中,以便组件可以使用它。
所以这是我必须决定的关键——要么在我的 L&F 中使用非常非常糟糕的泰语/阿拉伯语/其他字体渲染,要么使用该死的专有 API。
正如您可能知道的那样 - 警告如下:
XXX 是 Sun 专有的 API,可能会在未来的版本中删除
无法抑制:http
://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6476630
嗯,这实际上是一个合理的限制,所以它不是问题。
问题是 - 为什么我不能用别的东西代替那个该死的东西?
也许我错过了什么?
当然,只有在您尝试创建自己的 L&F 时才会出现这些问题,否则您将永远不需要在任何地方使用那个东西。
所以问题是:
该渲染功能是否有任何替代/解决方法?