2

我正在使用安装了 quicklisp 的 clozure cl(版本 1.8-r15286m)在 Windows 7 64 位系统上工作。

我需要一些用于普通 lisp 的 freetype2 绑定。(将字符映射到字形 + 字距调整信息)

我尝试使用安装“cl-freetype2”

(ql:quickload "cl-freetype")

从 32bit clozure cl 开始,我遇到了几个问题。

  1. quicklisp/software/cffi_0.11.1/grovel/grovel.lisp“ grovel.lisp ”(位于 通过将“grovel.lisp”中的“c:/msys/1.0/bin/gcc.exe”替换为“gcc”来修复。
  2. 当尝试为 freetype2 编译 cffi 绑定时,在将包含目录传递给编译器时,同一文件不包含驱动器号(即,而不是-i"d:/somedir"传递-i"/somedir"给 gcc`)。
  3. “grovel.lisp”试图包含 unix 包含目录。

我自己无法修复#2。我找到了这个讨论,尝试了两个列出的补丁,但它们都不起作用。(第一个破坏了 cffi,因为 ccl 既找不到“namestring-prefix”函数也找不到“pathname-prefix”函数),第二个没有解决问题。

在这种情况下我能做什么?我宁愿避免自己修复“groveller”,我只需要一些freetype2的绑定。基本上,我需要能够

  1. 加载 truetype 字体。
  2. 将 unicode char 映射到字形。
  3. 获取一对字形的字距调整信息。
  4. 加载字形位图。

有任何想法吗?

4

1 回答 1

4

弄清楚了。

通过 quicklisp 安装 cl-freetype2 需要完整的 MinGW 安装。

  1. 确保安装了 mingw-gmp。( mingw-get install gmp)
  2. 确保 mingw/bin 目录在系统路径中(右键单击“我的电脑”-> 属性-> 高级-> 环境变量)。已设置。应该类似于“D:/development/MinGW/bin”(假设 MinGW 安装在“d:/development”中)。
  3. 在您的 ccl 安装中找到“grovel.lisp”,并将“c:/msys/1.0/bin/gcc.exe”替换为“gcc”。如果 gcc 安装在此位置,则不必这样做。
  4. 启动 mingw 外壳。
  5. 使用“.configure && make && make install”下载解压并安装最新的 Freetype2 tarball,类似于 unix 环境。
  6. 将其freetype-6.dll复制到freetype.dll并移动freetype.dll到系统路径中的位置。
  7. (假设 MinGW 安装在“d:/development/MinGW”中),使用以下上下文创建 CPATH 用户环境变量:D:\development\MinGW\msys\1.0\local\include\freetype2;D:\development\MinGW\msys\1.0\local\include. 也就是说 - 如果您在 freetype2 编译期间没有指定“/usr”前缀。
  8. 在 mingw shell 中,启动 wx86cl 并尝试(ql:quickload "cl-freetype2"). 它应该可以正常工作。
  9. 如果它仍然不起作用,请在所有根驱动器中创建目录连接到安装 mingw 的目录。(即“c:/development”链接到“d:/development”等)。

我必须承认这很麻烦,所以我仍然认为制作一个小 dll 会更好,它提供我在内部使用 freetype 时所需的最少功能集,然后使用 cffi 加载这个 dll。这应该容易得多。

于 2013-06-16T15:15:19.843 回答