Utf 8 斜体、粗体拉丁字母和希腊字母使用gnuplot中的自定义unicode字体生成(e)ps或pdf

Utf 8 斜体、粗体拉丁字母和希腊字母使用gnuplot中的自定义unicode字体生成(e)ps或pdf,utf-8,fonts,gnuplot,postscript,Utf 8,Fonts,Gnuplot,Postscript,我想创建一个postscript或pdf图形,带有增强的符号、斜体或粗体拉丁字符,有时还有(常规)希腊字符。一般怎么做 比方说我,一种字体,它有我想要使用的所有奇怪字符的字形。我将它们转换为pfa,并将文件复制到工作目录的路径 期望 假设我想在某处产生以下符号。 我试过的:原创 我创建了一个编码在utf-8文件(没有BOM)中的gnuplot脚本,其中包含 set term postscript eps enhanced "CMUSansSerif" 15 fontfile add 'CMUS

我想创建一个postscript或pdf图形,带有增强的符号、斜体或粗体拉丁字符,有时还有(常规)希腊字符。一般怎么做

比方说我,一种字体,它有我想要使用的所有奇怪字符的字形。我将它们转换为pfa,并将文件复制到工作目录的路径

期望 假设我想在某处产生以下符号。

我试过的:原创 我创建了一个编码在utf-8文件(没有BOM)中的gnuplot脚本,其中包含

set term postscript eps enhanced "CMUSansSerif" 15 fontfile add 'CMUSansSerif.pfa' fontfile add 'CMUSansSerif-Oblique.pfa' fontfile add 'CMUSansSerif-Bold.pfa'
set encoding utf8
set o "print.eps"

p x t "Label: {/CMUSansSerif-Bold important }{/CMUSansSerif-Oblique note}: ∫⟨α₂ + β²⟩ = äßű"
set o
并使用最新的gnuplot版本5.2.6执行

我得到了什么 我使用矢量图形编辑器打开eps文件,相关部分如下所示:


我也试过了 根据我在术语选项中添加了
adobeglyphnames
。它至少使字母可用,但其他Unicode符号仍然不可用。结果是:

问题: 出了什么问题?我怎样才能产生期望的输出


这么多的可能性,哪里会出错:字体不适合这个任务吗?我下载了一个错误的版本吗?pfa转换器工作不好吗?我是否错误地包含字体文件?
设置编码是否有问题?我是否使用了错误的矢量图形编辑器?我是否安装了错误的字体,而矢量图形编辑器试图使用它们?

我担心答案是,一般来说,PostScript是错误的工具。如果您可以使用PDF输出,我建议您这样做。甚至可以通过标准工具(如pdf2ps)将生成的PDF文件转换为PostScript文件。如果非ascii字符仅限于希腊语和其他相对常见的符号,那么这可能会起作用,但我不知道这些标准工具涵盖了多少完整的unicode表

如果您确实需要直接从gnuplot生成包含其他unicode字符的PostScript,您可以在gnuplot分发文件中找到完整的说明和示例字符编码表:

.../term/PostScript/unicode_maps.README
.../term/PostScript/unicode_big.map
.../term/PostScript/unicode_small.map
我不熟悉您使用的联机工具字体转换,但可能它失败了,因为它没有或至少没有使用适合所需转换的字符编码表

===

还有一个想法。*.pfa字体有两种编码unicode字符的方法,这些字符足够常见,可以由Adobe指定名称用于PostScript。(1) 它可以使用Unicode码点的通用名称,如uni0439。(2) 它可以使用以下列表中的Adobe特定名称:

从gnuplot选择PostScript输出时,您可以告诉它您提供的字体使用了这两种约定中的哪一种。默认值为“noadobeglyphnames”

==

(使用“设置术语pdfcairo”的方法)

不幸的是,字体处理是特定于系统的,因此我无法告诉您如何在所有目标计算机上安装或配置字体。我将向您展示一个在linux桌面上使用fontconfig实用程序进行系统字体处理的过程

  • 创建目录/home/share/font/CMUSans
  • 将此目录添加到文件/etc/fonts/local.conf中的搜索列表中
  • 将*.ttf文件从原始查询中链接到的CMU Sans Serif zip存档复制到此目录中。system fontconfig系统工具现在应该能够找到这些字体。通过检查,他们自我报告为“CMU无衬线”
  • 在gnuplot中(使用版本5.2.6测试)
    设置术语pdfcairo字体“CMU无衬线,15”
    设置输出“增强型_utf8.pdf”
    加载“增强型\u utf8.dem”

  • 使用以下命令将输出pdf文件转换为PostScript

    pdf2ps增强型\u utf8.pdf增强型\u utf8.ps

  • 结果的屏幕截图如下所示

    CMU Sans Serif似乎不包含您要求的UTF-8字符。使用类似的字体编辑器检查字体。尽管网页显示了您想要使用的符号,但字体本身并不包含这些符号。但是,您的浏览器可能会显示符号,但它们只是其他字体的回退表示形式。

    使用adobeglyphnames时,效果会尽可能好。问题始于CMU无衬线字符不包含所需字符这一事实。
    set term postscript {no}adobeglyphnames