java—“英文中的中文字体名称和中文中的中文字体名称不一样”如何下载中文字体文件

6l7fqoea  于 2021-07-06  发布在  Java
关注(0)|答案(0)|浏览(252)

我从以下内容中得到了主题行的引用(尽管与我使用的系统或API没有直接关系),“格式:英文中的中文字体名称无法识别”:
https://bugs.documentfoundation.org/show_bug.cgi?id=63011
我正在使用spire.xls for java(免费版):
https://www.e-iceblue.com/introduce/free-xls-for-java.html
我正在使用这个api将excel文档转换为webapp中的pdf,在websphere的as/400(即ibmiseries)上运行,使用java8。
为了解决字体丢失的错误,我将所有windows10字体文件复制到jre/lib/fonts目录中。我还将几个中文字体文件复制到了这个目录中(请参阅下面的更多信息,了解哪些文件)。
日志中的异常没有说明缺少哪种字体:
“java.lang.illegalstateexception:找不到系统上安装的字体”
我在spire的开发者论坛上写了一篇文章。回复只是说将相关字体复制到as/400上的相关目录中。
我在excel上使用processmonitor加载相关文档,以检查如何加载字体文件。它似乎使用了一种回退机制,在云中进行查找,而在as/400上没有这样做。它似乎是在向上看pmingliu(关于这个的更多信息,见下文)。
由于spire是一个许可的api,反编译器并没有真正的用途,因为类文件是模糊的。这也使得在调试器中深入研究代码变得毫无用处。
在我正在测试的excel文件中,一旦解压缩,特别是在其中的styles.xml中,我发现了以下内容,它似乎表明实际使用的是哪些字体:

PC MINGW64 /c/Users/xxxxx/WebDocsTesting/excel-to-pdf/xxxxxxx/xl
$ xmllint styles.xml --format | grep -A 2  "<font>" | grep "<name"
      <name val="新細明體"/>
      <name val="新細明體"/>
      <name val="新細明體"/>
      <name val="細明體"/>
      <name val="Arial"/>
      <name val="Arial"/>
      <name val="Arial"/>
      <name val="Arial"/>
      <name val="宋体"/>
      <name val="Arial"/>
      <name val="Helv"/>
      <name val="新細明體"/>

在使用google translate的同时,我发现了以下内容:
https://bugzilla.mozilla.org/show_bug.cgi?id=88579

EnglishName   ChineseName
MingLiU       細明體     (MonoSpace, like Courier)
PMingLiU      新細明體   (Proportional, like Courier New)

起初,这似乎证实了我的怀疑,我需要添加中文字体文件,但我已经这样做了,特别是“明柳”。
所以,现在我在想,部分基于这篇文章的主题行引用的内容,问题是我复制的明柳字体文件有一个英文名,而不是中文名,代码中引用它的方式。
我在google上搜索了一些关于ttf文件格式的信息,但是我还不知道文件名是否需要是中文的。我也意识到这个文件实际上是一个ttc文件。我可能需要使用我找到引用的工具之一,从该文件中提取组成ttf文件。然而,如果他们需要用中文来命名,那么,至少不是用中文来命名是不够的。
我在谷歌上搜索了一下,下载了一个中文命名的字体文件。我找到了一个可能的网站,但我想和其他人核实一下,然后我进一步走这条路。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题