Java 运行BIRT报告的Linux上缺少中文字符
我正在打印针叶樱桃提取物 在BIRT的PDF报告中。相反,它显示针桃提取物, 如此失踪叶樱 在PDF中。这是一个字体问题,类似于,但是,我们已经在使用无衬线字体。那个人的解决方案是在字体上有所不同Java 运行BIRT报告的Linux上缺少中文字符,java,unicode,fonts,birt,Java,Unicode,Fonts,Birt,我正在打印针叶樱桃提取物 在BIRT的PDF报告中。相反,它显示针桃提取物, 如此失踪叶樱 在PDF中。这是一个字体问题,类似于,但是,我们已经在使用无衬线字体。那个人的解决方案是在字体上有所不同 有人知道在Linux环境中使用这种字体的正确方法吗?问题 这种字体问题不是由于衬线/无衬线字体本身造成的,而是由于字体没有覆盖文本中的字符。未经描述的字符指的是“樱桃花之叶”,是汉文字()的一部分: unicode代码点是字符的“通用虚拟表示法”——它们既不包含在文件中,也不呈现在屏幕上 过程
有人知道在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
- 来自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中楷) 阿皮希乌凯
中定义的,例如/etc/fonts/fonts.conf
和/var/font/truetype、/usr/share/fonts、/usr/local/share/fonts、
)以及 缺点:您需要手动将这些字体分发给客户端。在非Linux客户端上存在不兼容的风险/home/.fonts
字体路径
元素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
(或Gnome版本的字符映射程序)charset
- 可用的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
- 来自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>