【问题标题】:Italic and bold Latin, and Greek letters using custom unicode font in gnuplot to produce (e)ps or pdf斜体和粗体拉丁文和希腊字母在 gnuplot 中使用自定义 unicode 字体生成 (e)ps 或 pdf
【发布时间】:2019-05-27 00:46:44
【问题描述】:

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

假设我是downloadedCMU 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,我在termoptions 中添加了adobeglyphnames。它至少使字母可用,但其他 Unicode 符号仍然不可用。结果是:


问题

出了什么问题?我怎样才能产生所需的输出?

这么多可能性,哪里会出错:字体不适合这个任务吗?我是不是下载错版本了? pfa转换器做得不好吗?我是否错误地包含了字体文件? set encoding 有什么问题吗?我是否使用了糟糕的矢量图形编辑器?我是否安装了错误的字体并且矢量图形编辑器尝试使用它们?

【问题讨论】:

    标签: utf-8 fonts gnuplot postscript


    【解决方案1】:

    恐怕答案是一般来说 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 字符进行编码,这些字符很常见,可以由 Adob​​e 指定一个名称以在 PostScript 中使用。 (1) 它可以使用通用名称,如 uni0439 用于 Unicode 代码点。 (2) 它可以使用此处列表中的 Adob​​e 特定名称: agl-aglfn glyph list

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

    set term postscript {no}adobeglyphnames
    

    ==

    (使用“set term pdfcairo”的方法)

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

    1. 创建目录/home/share/fonts/CMUSans
    2. 将此目录添加到文件 /etc/fonts/local.conf 中的搜索列表
    3. 将 *.ttf 文件从您在原始查询中链接到的 CMU Sans Serif zip 存档复制到此目录中。 system fontconfig 系统工具现在应该能够找到这些字体。通过检查,他们自我报告为“CMU Sans Serif”
    4. 在 gnuplot 中(使用版本 5.2.6 测试)
      set term pdfcairo font "CMU Sans Serif,15" set output 'enhanced_utf8.pdf' load 'enhanced_utf8.dem'

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

      pdf2ps enhanced_utf8.pdf enhanced_utf8.ps

    结果的屏幕截图如下所示

    【讨论】:

    • 使用 adobeglyphnames 可以做到最好。问题始于 CMU Sans Serif 不包含所需字符。
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2011-08-28
      • 1970-01-01
      • 2011-07-18
      • 2014-11-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-10
      • 2012-12-10
      相关资源
      最近更新 更多