Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 运行BIRT报告的Linux上缺少中文字符_Java_Unicode_Fonts_Birt - Fatal编程技术网

Java 运行BIRT报告的Linux上缺少中文字符

Java 运行BIRT报告的Linux上缺少中文字符,java,unicode,fonts,birt,Java,Unicode,Fonts,Birt,我正在打印针叶樱桃提取物 在BIRT的PDF报告中。相反,它显示针桃提取物, 如此失踪叶樱 在PDF中。这是一个字体问题,类似于,但是,我们已经在使用无衬线字体。那个人的解决方案是在字体上有所不同 有人知道在Linux环境中使用这种字体的正确方法吗?问题 这种字体问题不是由于衬线/无衬线字体本身造成的,而是由于字体没有覆盖文本中的字符。未经描述的字符指的是“樱桃花之叶”,是汉文字()的一部分: unicode代码点是字符的“通用虚拟表示法”——它们既不包含在文件中,也不呈现在屏幕上 过程

我正在打印针叶樱桃提取物 在BIRT的PDF报告中。相反,它显示针桃提取物, 如此失踪叶樱 在PDF中。这是一个字体问题,类似于,但是,我们已经在使用无衬线字体。那个人的解决方案是在字体上有所不同


有人知道在Linux环境中使用这种字体的正确方法吗?

问题

这种字体问题不是由于衬线/无衬线字体本身造成的,而是由于字体没有覆盖文本中的字符。未经描述的字符指的是“樱桃花之叶”,是汉文字()的一部分:




unicode代码点是字符的“通用虚拟表示法”——它们既不包含在文件中,也不呈现在屏幕上

过程如下:

Author's Head/        Virtual Space           Bytes In
Generating Tool --->  (Incl. Strings    --->  File        ---->  Screen/Printer
                       In Tool Memory)

Desired               Unicode             Character Encoded    Symbol Rendered Via 
Language Symbol       Code Point          Via Nominated        Nominated Font In  
                                          File Encoding        File
在Microsoft上,Arial屏蔽了字体与文本匹配的需要,因为字体实际上是字体之外的一个大扩展-它包括大多数Microsoft代码页,包括,其中包含这两个字符

现代Linux安装应该有支持的字体。如果你的没有,那么它肯定是在没有中文功能的情况下安装的。一个使用来修复此问题的示例。键入以下内容以查找匹配的字体:

xlsfonts | grep gb
xlsfonts | grep big5
xlsfonts | grep han
xlsfonts | grep ming
xlsfonts | grep song
xlsfonts | grep kai
  • 下载Linux中文/亚洲字体

    • 来自Adobe:

      (转到附加组件)

      优点:如果您使用这些字体生成PDF,则当用户试图在未安装字体的情况下使用adobe reader阅读PDF时,会自动通知他们并提示他们下载字体。在非Linux客户端上提供兼容性

      Adobe在

    • 非Adobe:

      字体支持

      在Linux上,以下字体支持这两个字符:

      • GNU Unifont

      • 明体

      • AR PL Luming(或AR PL ShanHeiSun Uni,AR PL上海宋)
      • 心音
      • 文泉驿点阵歌(文泉驿点阵宋体) wqy位图字体

      • 无衬线

      • 文泉驿禅黑(文泉驿正黑) wqy zenhei
      • 文泉驿微黑(文泉驿微米黑) wqy-microhei

      • 规则字体

      • AR PL UKai(AR PL中楷) 阿皮希乌凯

      如果您自己下载,则需要管理员权限才能将字体复制到相应的linux目录(如
      /etc/fonts/fonts.conf
      中定义的,例如
      /var/font/truetype、/usr/share/fonts、/usr/local/share/fonts、
      /home/.fonts
      )以及

      缺点:您需要手动将这些字体分发给客户端。在非Linux客户端上存在不兼容的风险

  • 在Birt中配置字体路径

    在本步骤和下一步骤中更改fontsConfig.xml后,需要重新启动BIRT以使更改生效。

    设置
    字体路径
    元素fontsConfig.xml

    <font-paths>
         ---------------
         ---------------
         ---------------
          <path path="/var/font/truetype" />
    </font-paths>
    
    注意:包含的任何True Type字体都将嵌入到PDF中,这将显著影响其大小,同时也确保所有客户端都能正确阅读文档

    这些是Adobe编码,涵盖了更广泛的GB10380字符集的大部分/全部,而旧的GB2312字符集(或EUC-CN)对您来说太窄了。上面的示例来自BIRT论坛,但有一个小警告是Adobe已弃用UCS2-您可以将字符串中的“UCS2”替换为“UTF16”

    使用Adobe编码的原因:Adobe被认为是跨平台广泛CJK字符编码的标准。过去很少有系统直接支持GB10380字符集。此外,许多打印机都支持Adobe编码和字体,这是一个重要因素。默认Linux字符集/编码可能不支持不支持您的需要,但您可以尝试参考可用的Linux编码:

    • 可用字符集(编码):
      locale-c
      charset
      (或Gnome版本的字符映射程序)

    • 可用的Linux语言环境:
      locale-a

    • 当前Linux语言环境:
      locale
    • 当前默认字符集:
      locale字符集

  • 问题

    这种字体问题不是由于衬线/无衬线字体本身造成的,而是由于字体没有覆盖文本中的字符。未渲染的字符指的是“Cherryblosson的叶子”,是汉字()的一部分:




    unicode代码点是字符的“通用虚拟表示法”——它们既不包含在文件中,也不呈现在屏幕上

    过程如下:

    Author's Head/        Virtual Space           Bytes In
    Generating Tool --->  (Incl. Strings    --->  File        ---->  Screen/Printer
                           In Tool Memory)
    
    Desired               Unicode             Character Encoded    Symbol Rendered Via 
    Language Symbol       Code Point          Via Nominated        Nominated Font In  
                                              File Encoding        File
    
    在Microsoft上,Arial屏蔽了字体与文本匹配的需要,因为字体实际上是字体之外的一个大扩展-它包括大多数Microsoft代码页,包括,其中包含这两个字符

    现代Linux安装应具有支持字体。如果您的没有,则肯定是在没有中文功能的情况下安装的。使用的示例可解决此问题。键入以下内容可查找匹配字体:

    xlsfonts | grep gb
    xlsfonts | grep big5
    xlsfonts | grep han
    xlsfonts | grep ming
    xlsfonts | grep song
    xlsfonts | grep kai
    
  • 下载Linux中文/亚洲字体

    • 来自Adobe:

      (转到附加组件)

      优点:如果您使用这些字体生成PDF,则当用户尝试在未安装字体的情况下使用adobe reader阅读PDF时,会自动通知并提示他们下载字体。在非Linux客户端上提供兼容性

      Adobe在

    • 非Adobe:

      字体支持

      在Linux上,以下字体支持这些
      <font-encodings>
          <encoding font-family="STSong-Light" encoding="UniGB-UCS2-H" />
          <encoding font-family="STSongStd-Light" encoding="UniGB-UCS2-H" />
          <encoding font-family="MHei-Medium" encoding="UniCNS-UCS2-H" />
          <encoding font-family="MSung-Light" encoding="UniCNS-UCS2-H" />
          <encoding font-family="MSungStd-Light" encoding="UniCNS-UCS2-H" />
      </font-encodings>