我有同样的问题为什么希腊字母无法在 R (v4) PDF 输出中呈现? https://stackoverflow.com/questions/65150098- 这就是我在 R 4.0.3 中修复它的方法:
打开configure
脚本,然后找到这个:
$as_echo_n "checking whether cairo including pango is >= 1.2 and works... " >&6; }
if ${r_cv_cairo_works+:} false; then :
$as_echo_n "(cached) " >&6
else
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <pango/pango.h>
#include <pango/pangocairo.h>
#include <cairo-xlib.h>
#if CAIRO_VERSION < 10200
#error cairo version >= 1.2 required
#endif
int main(void) {
cairo_t *CC = NULL; // silence picky compilers
cairo_arc(CC, 0.0, 0.0, 1.0, 0.0, 6.28);
pango_cairo_create_layout(CC);
pango_font_description_new();
return 0;
}
_ACEOF
将这个核心代码部分复制到一些test.c
file:
#include <pango/pango.h>
#include <pango/pangocairo.h>
#include <cairo-xlib.h>
#if CAIRO_VERSION < 10200
#error cairo version >= 1.2 required
#endif
int main(void) {
cairo_t *CC = NULL; // silence picky compilers
cairo_arc(CC, 0.0, 0.0, 1.0, 0.0, 6.28);
pango_cairo_create_layout(CC);
pango_font_description_new();
return 0;
}
然后运行cc test.c $(pkg-config --cflags --libs pangocairo)
。这可能会为您提供更多有关原因的信息configure
测试失败。还使用
cc test.c $(pkg-config --cflags --libs pangocairo) --verbose
and
cc test.c $(pkg-config --cflags --libs pangocairo) -Wl,--verbose
以获得更多信息。
就我而言,在安装了一些丢失的软件包后我终于得到了这个:
/usr/lib64/gcc/x86_64-suse-linux/7/../../../../x86_64-suse-linux/bin/ld: cannot find -lharfbuzz
collect2: error: ld returned 1 exit status
The reason was a broken link in /usr/lib64
:
修复后,一切正常:缺乏 root 权限,我使用
mkdir ~/lib
cp /usr/lib64/libharfbuzz.so.0 ~/lib/libharfbuzz.so
export LIBRARY_PATH=~/lib
Then, cc test.c $(pkg-config --cflags --libs pangocairo)
完成了,使用 pango 和 cairo 进行配置也有效。