代码之家  ›  专栏  ›  技术社区  ›  mooware

Java:字体在Linux上看起来很混乱,但在Windows上很好

  •  4
  • mooware  · 技术社区  · 15 年前

    我正在编写一个Java应用程序,它将PDF文档呈现给图像,当我在Windows上运行它时,它工作得很好。但是当我在Linux上呈现PDF时,标准字体看起来有点混乱,就像某些字符的右侧会丢失一些像素。

    我只在新安装的带有OpenJDK6的Ubuntu9.04上测试过它,但我确信我以前在Linux上也看到过类似的问题。我还尝试用其他Java PDF应用程序打开PDF,比如SaveLabdPdFrEnDeReR和ICEPDF演示小程序,它们也有同样的问题。在Windows上,它们都能很好地呈现文档。我还用默认的PDF查看器evince在同一台Ubuntu机器上打开了文档。由于没有字体问题,文档呈现出来,所以我确信这是一个普通的Java+Linux问题。

    作比较:
    This image 在窗口上呈现。
    This image 在Linux上呈现。我用红环标记了几个乱七八糟的字。
    This one 也在Linux上呈现。看起来只有标准字体受到影响。

    感谢您的帮助。

    10 回复  |  直到 12 年前
        1
  •  6
  •   ante.sabo    15 年前

    OpenJDK必须输出受版权保护的字体。安装Sun的Java和字体会更好一些。

        2
  •  3
  •   Aditya Vicky T    12 年前

    我在Linux中安装了openjdk,所有的应用程序都使用非常非常糟糕的字体…在多次尝试更改字体、抗锯齿、安装Lucida字体等之后,我发现我的问题在于 /etc/fonts/conf.d/35-freefont.conf .

    我只是把那根链子拆了,跑 fc-cache -f 所有新的Java应用程序都有了更好的字体。

    在我的例子中,FielFunt配置文件告诉Java使用它而不是更好的字体。如果有类似的问题,只需运行 sudo mv /etc/fonts/conf.d /etc/fonts/conf.d.off 和A FC高速缓存 并测试…

    如果它正常工作,您还有一个错误的默认字体替换,您应该恢复该目录并测试每个文件。

    如果它保持不变,那么您可能还有其他问题(不要忘记恢复 conf.d 迪尔)

    更新

    在Ubuntu 12.04上,我遇到了一个类似的问题,所有的Java字体都是粗体的。去除 /etc/fonts/conf.d/65-nonlatin.conf 解决了问题。

        3
  •  1
  •   Sam DeFabbia-Kane    15 年前

    可能是字体不好。检查正在使用的Linux操作系统的字体提示设置。

    也可以是字体——请尝试指定其他字体。在Linux上,您所使用的可能只是渲染得很糟糕——有些人就是这样做的。帕拉蒂诺是我发现特别糟糕的一个。

        4
  •  1
  •   jwaddell    15 年前

    你可以尝试使用 pdffonts 为了帮助您分析问题,它至少会告诉您PDF文件中使用的字体名称、字体类型、是否嵌入等。如果字体未嵌入,您可以尝试在Linux计算机上安装它们。

        5
  •  1
  •   mark stephens    15 年前

    有8个标准字体系列,您不需要嵌入,因为PDF查看器应该提供。否则将被替换。PDF Java开源查看器(多价,JPedal)中PDF看起来像什么?

        6
  •  1
  •   somegirl    14 年前

    您可以使用OpenJDK和Sun/Oracle的字体!

    首先安装opendjk(运行时和dev包)

    然后只安装Sun/Oracle的运行时。这将安装字体,但是你仍然会使用OpenJDK的Java来运行所有的东西。

        7
  •  1
  •   gn1    12 年前

    安装最新版本的OpenJDK。或者在启用提示的情况下重新编译freetype。苹果关于暗示的专利已经过期。

        8
  •  0
  •   mark stephens    15 年前

    PDF中是否嵌入了字体?

        9
  •  0
  •   janetsmith    12 年前

    尝试复制所有的Windows字体,并将它们放到Linux环境中。

        10
  •  0
  •   Christian Vielma    12 年前

    我没有测试过,但是根据这个 forum post at inductiveautomation.com 您可以通过安装字体来更正:

    sudo apt-get install msttcorefonts
    

    在Java字体的属性中改变LuxIsAsAs为ARIAL:

    sudo nano /usr/lib/jvm/java-6-sun/jre/lib/fontconfig.properties