gnuplot pdfcairo匹配乳胶字体大小

时间:2018-06-07 18:57:08

标签: latex gnuplot cairo

我使用gnuplot 5.0和pdfcairo终端绘制pdf图,然后使用latex将此图插入pdf文件中。但是,我发现gunplot中的字体大小与latex中的字体大小不同,尽管我将它们设置为相同。

为了使字体大小在gnuplot和latex中保持一致,我必须将gnuplot中的fontscale设置为0.75,如下面的代码所示。

gnuplot代码:用蓝色绘制'A'(Helvetica,大小12,fontscale 0.75)。

set terminal pdfcairo font 'Helvetica,12' size 1cm,1cm fontscale 0.75
set output 'test0.pdf'
set xrange [-1:1]
set yrange [-1:1]
unset xtics
unset ytics
unset border
set label 'A' at 0,0 textcolor 'blue'
p 1/0 notitle

胶乳代码:以原始大小插入上一个数字,并在前一个'A'旁边写上黑色'A'(Helvetica,大小为12)。

\documentclass[12pt]{standalone}
\usepackage{tikz}
\usepackage{helvet}
\usepackage{graphicx}
\begin{document}
\begin{tikzpicture}
\node at (0,0) {\includegraphics{test0.pdf}};
\node at (0.3, -0.025) {\textsf{A}};
\end{tikzpicture}
\end{document}

You can see the final pdf file here.现在我们可以看到这两个'A'在gnuplot设置'fontscale 0.75'下的大小完全相同。我不明白为什么'fontscale 0.75'应该用在gnuplot中,而不是'fontscale 1'? 这是开罗的问题吗?有没有优雅的方法来处理这个字体大小的问题?

简短回答:gnuplot使用72dpi,而cairo使用96dpi。 (72分之96= 4/3)

注意:出于同样的原因,如果使用pngcairo,还应使用'fontscale 0.75'来获得正确的字体大小。

替代解决方案:cairolatex。 @ user8153

1 个答案:

答案 0 :(得分:2)

我认为这可能是由于开罗渲染造成的。为了设置字体大小,Gnuplot使用提供的大小调用函数pango_font_description_set_size,即在您的情况下为12。然而,这被翻译成开罗单位:

  

以磅为单位的字体大小,按PANGO_SCALE缩放。 (这是一个   大小值10 * PANGO_SCALE是10磅字体。转换   点和设备单元之间的因数取决于系统配置   和输出设备。对于屏幕显示,逻辑DPI为96   常见的,在这种情况下,10点字体对应10 *(96/72)   = 13.3像素字体。

Moreveor,来自函数pango_cairo_font_map_set_resolution的文档:

/**
 * pango_cairo_font_map_set_resolution:
 * @fontmap: a #PangoCairoFontMap
 * @dpi: the resolution in "dots per inch". (Physical inches aren't actually
 *   involved; the terminology is conventional.)
 *
 * Sets the resolution for the fontmap. This is a scale factor between
 * points specified in a #PangoFontDescription and Cairo units. The
 * default value is 96, meaning that a 10 point font will be 13
 * units high. (10 * 96. / 72. = 13.3).
 *
 * Since: 1.10
 **/

总而言之,似乎提供的大小是为了渲染的目的乘以96/72 = 4/3,这有效地产生了大小为16而不是12的字体。0.75的缩放因子你申请然后还原这个。