gnuplot pdfcairo соответствует размеру латексного шрифта - PullRequest
0 голосов
/ 07 июня 2018

Я строю рисунок в формате pdf, используя gnuplot 5.0 с терминалом pdfcairo, а затем вставляю этот рисунок в файл pdf, используя латекс.Однако я обнаружил, что размер шрифта в оружейном графике отличается от размера шрифта в латексе, хотя я установил их одинаковыми.

Чтобы согласовать размер шрифта в gnuplot и latex, я должен установить масштаб шрифтав gnuplot как 0.75, как показано в следующих кодах.

коды gnuplot: нанесите букву «А» синим цветом (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

Латексные коды:вставьте предыдущую цифру в исходном размере и напишите черную букву «А» (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}

Окончательный файл PDF можно посмотреть здесь. Теперь мы можем видеть, что эти два «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

1 Ответ

0 голосов
/ 08 июня 2018

Я думаю, это может быть связано с рендерингом в Каире.Чтобы установить размер шрифта, 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, который вы применили, затем восстановит это.

...