我正在制作一个unicode僧伽罗语 - 英语翻译。当我打印一个字体大小<1的Sinhala unicode字母时100,字母未正确呈现。但是当我使用字体大小&gt; 100,所有字母都顺利呈现。我找不到为什么会这样。另一方面,所有Sinhala unicode字体都做同样的事情。这不是我使用的字体的错误。 An Example is shown here
请帮帮我。
答案 0 :(得分:0)
我不知道Java在Windows 7上使用自己的字体呈现。所以它应该是一个Windows错误但是如果是这样的话,你会在所有Windows应用程序中看到问题 - 但你只能看到它Java的。
您可能想尝试Java 2D API。例如,使用140px渲染字体并将Graphics2D
缩放0.5以获得70px字体。
[旧答案]
你不是说哪个操作系统,但我的猜测是这是在Linux上。如果是这种情况,则可能是因为FreeType中的“字体提示”。
基本上,如果字体变得“太小”而无法呈现,则真实类型文件可以包含“渲染提示”。在您的示例中,您可以看到大字体具有平滑边缘,但小示例更加方形边缘。你可以看到像素;消除锯齿应该可以防止这种情况。
所以我的猜测是你是Font Hinting专利的受害者。该专利已于去年到期。尝试为您的系统找到更新版本的“freetype”。