gnuplot pdfcairo 匹配乳胶字体大小
gnuplot pdfcairo matches latex font size
我使用带有 pdfcairo 终端的 gnuplot 5.0 绘制了一个 pdf 图,然后使用 latex 将该图插入到一个 pdf 文件中。但是,我发现gunplot中的字体大小与latex中的字体大小不同,尽管我将它们设置为相同。
为了让gnuplot和latex中的字体大小一致,我必须将gnuplot中的fontscale设置为0.75,如下代码所示。
gnuplot 代码:用蓝色绘制 'A'(Helvetica,大小 12,字体比例 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
Latex codes: 插入原尺寸的上图,并在上一个'A'.
旁边写上黑色'A' (Helvetica, size 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'下是完全一样的大小。我不明白为什么在gnuplot中应该使用'fontscale 0.75',而不是'fontscale 1'?
这是开罗的问题吗?有什么优雅的方法可以解决这个字体大小问题吗?
简答:gnuplot 使用 72dpi,而 cairo 使用 96dpi。 (96/72=4/3)
注意:出于同样的原因,如果使用 pngcairo,也应使用 'fontscale 0.75' 以获得正确的字体大小。
替代解决方案:cairolatex。 @user8153
我认为这可能是由于 cairo 渲染造成的。为了设置字体大小,Gnuplot 使用提供的大小调用函数 pango_font_description_set_size,即在您的情况下为 12。然而,这随后被翻译成开罗单位:
the size of the font in points, scaled by PANGO_SCALE. (That is, a
size value of 10 * PANGO_SCALE is a 10 point font. The conversion
factor between points and device units depends on system configuration
and the output device. For screen display, a logical DPI of 96 is
common, in which case a 10 point font corresponds to a 10 * (96 / 72)
= 13.3 pixel font.
此外,来自函数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 的字体。 [=13= 的缩放因子] 然后你应用的将恢复它。
我使用带有 pdfcairo 终端的 gnuplot 5.0 绘制了一个 pdf 图,然后使用 latex 将该图插入到一个 pdf 文件中。但是,我发现gunplot中的字体大小与latex中的字体大小不同,尽管我将它们设置为相同。
为了让gnuplot和latex中的字体大小一致,我必须将gnuplot中的fontscale设置为0.75,如下代码所示。
gnuplot 代码:用蓝色绘制 'A'(Helvetica,大小 12,字体比例 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
Latex codes: 插入原尺寸的上图,并在上一个'A'.
旁边写上黑色'A' (Helvetica, size 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'下是完全一样的大小。我不明白为什么在gnuplot中应该使用'fontscale 0.75',而不是'fontscale 1'? 这是开罗的问题吗?有什么优雅的方法可以解决这个字体大小问题吗?
简答:gnuplot 使用 72dpi,而 cairo 使用 96dpi。 (96/72=4/3)
注意:出于同样的原因,如果使用 pngcairo,也应使用 'fontscale 0.75' 以获得正确的字体大小。
替代解决方案:cairolatex。 @user8153
我认为这可能是由于 cairo 渲染造成的。为了设置字体大小,Gnuplot 使用提供的大小调用函数 pango_font_description_set_size,即在您的情况下为 12。然而,这随后被翻译成开罗单位:
the size of the font in points, scaled by PANGO_SCALE. (That is, a size value of 10 * PANGO_SCALE is a 10 point font. The conversion factor between points and device units depends on system configuration and the output device. For screen display, a logical DPI of 96 is common, in which case a 10 point font corresponds to a 10 * (96 / 72) = 13.3 pixel font.
此外,来自函数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 的字体。 [=13= 的缩放因子] 然后你应用的将恢复它。