我想创建带有增强符号,斜体或粗体拉丁字符,有时(常规)希腊字符的附言或pdf图形。一般如何做?
比方说我downloaded CMU Sans Serif,这是一种字体,其中包含我要使用的所有奇特字符的字形。我用online tool将它们转换为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文件,相关部分如下所示:
根据Ethan's answer,我在术语选项中添加了adobeglyphnames
。它至少使字母可用,但其他Unicode符号仍然不可用。结果是:
出了什么问题?我该如何产生所需的输出?
如此之多,可能会出错:字体不适合此任务吗?我下载了错误的版本吗? pfa转换器做得不好吗?我是否错误地包含了字体文件? set encoding
出问题了吗?我是否使用错误的矢量图形编辑器?我安装了错误的字体并且矢量图形编辑器尝试使用它们吗?
答案 0 :(得分:2)
恐怕答案是,一般而言,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特定名称: agl-aglfn glyph list
从gnuplot中选择PostScript输出时,您可以告诉它所提供的字体使用了这两种约定中的哪一种。默认值为“ noadobeglyphnames”。
set term postscript {no}adobeglyphnames
==
(使用“设置术语pdfcairo”的方法)
不幸的是,字体处理是特定于系统的,因此我无法告诉您如何在所有目标计算机上安装或配置字体。我将向您展示一个在Linux桌面上工作的过程,该桌面使用fontconfig实用程序进行系统字体处理。
(已通过5.2.6版测试)
set term pdfcairo font "CMU Sans Serif,15"
set output 'enhanced_utf8.pdf'
load 'enhanced_utf8.dem'
使用以下命令将输出pdf文件转换为PostScript
pdf2ps enhanced_utf8.pdf enhanced_utf8.ps
答案 1 :(得分:1)
CMU Sans Serif似乎不包含您要的UTF-8字符。使用诸如Birdfont之类的字体编辑器检查字体。尽管网页上显示了您要使用的符号,但字体本身不包含这些符号。但是,您的浏览器可能会显示符号,但它们只是其他字体的后备表示形式。