小编ale*_*rba的帖子

Gnuplot PDF 终端在 Mac 上显示字体问题

出乎意料的是,我的 Gnuplot 开始出现pdfcairo终端问题。生成的 PDF 文件中的字体被卡住,就好像单个字符的宽度设置为零一样。我在 Mac OS 上使用 Gnuplot 5.2.7,通过自制软件安装。

在这里,一个最小的不工作的例子:

reset
set terminal pdfcairo
set output "mnwe.pdf"
set xlabel "Time t"
set ylabel "sin(t)"
plot [0:2*pi] sin(x) with lines notitle
Run Code Online (Sandbox Code Playgroud)

产生以下输出:

在此处输入图片说明

我怀疑字体问题是在最近更新到补丁级别 7 之后发生的。我的 Ubuntu 机器上的 Gnuplot 5.2.2 按预期工作,并为相同的 Gnuplot 脚本生成以下输出:

在此处输入图片说明

不幸的是,似乎不可能使用自制软件恢复到以前的 Gnuplot 版本。

我确认epscairopngcairo终端在使用 Gnuplot 5.2.7 的 Mac 上按预期工作,因此问题仅在于pdfcairo终端。
编辑:事实上,该错误也影响了其他位于开罗的终端。不知道我第一次检查时做错了什么。

我将不胜感激有关如何解决此问题的任何指示。

macos homebrew gnuplot pango

11
推荐指数
2
解决办法
2307
查看次数

将一个C字符串数组传递给Fortran(iso_c_binding)

如何将C strings(char* cstrings[])数组传递给Fortran子例程?

问题使用iso_c_binding的fortran-C桥接器中的字符串数组肯定是相关的,但答案似乎不正确,甚至不能用GNU Fortran编译.

我目前正在为Fortran代码开发一个C接口,我预计iso_c_binding(我之前使用过的)会让这件事变得轻而易举.到目前为止C字符串数组没有运气......

Fortran子例程应该将一个字符串数组作为参数.在普通的Fortran中,我会写如下内容:

subroutine print_fstring_array(fstring)

  implicit none

  character(len=*), dimension(:), intent(in) :: fstring
  integer                                    :: i

  do i = 1, size(fstring)
    write(*,*) trim(fstring(i))
  end do

end subroutine print_fstring_array
Run Code Online (Sandbox Code Playgroud)

将单个C字符串传递给Fortran的一种方法是作为C指针(c_ptr)(我知道,我也可以使用一个数组character(kind=c_char))

subroutine print_cstring(cstring) bind(C)

  use iso_c_binding, only: c_ptr, c_f_pointer, c_loc, c_null_char
  implicit none

  type(c_ptr), target, intent(in) :: cstring
  character(len=1024), pointer    :: fstring
  integer                         :: slen

  call c_f_pointer(c_loc(cstring), fstring)
  slen = index(fstring, c_null_char) - 1
  write(*,*) fstring(1:slen)

end subroutine print_cstring …
Run Code Online (Sandbox Code Playgroud)

c string fortran fortran-iso-c-binding

5
推荐指数
1
解决办法
2195
查看次数

标签 统计

c ×1

fortran ×1

fortran-iso-c-binding ×1

gnuplot ×1

homebrew ×1

macos ×1

pango ×1

string ×1