windows 7上的clozure cl:cl-freetype2

时间:2013-06-16 06:56:10

标签: windows common-lisp freetype ccl

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

我需要一些常见的lisp的freetype2绑定。 (将字符映射到字形+字距信息)

我尝试使用

安装“cl-freetype2”
(ql:quickload "cl-freetype")

来自32位clozure cl,我遇到了几个问题。

  1. “grovel.lisp”(位于quicklisp/software/cffi_0.11.1/grovel/grovel.lisp)假设我在“c:/msys/1.0/bin/gcc.exe”安装了gcc(我在路径中有mingw-gcc,但没有)。通过在“grovel.lisp”中将“c:/msys/1.0/bin/gcc.exe”替换为“gcc”来修复。
  2. 当尝试为freetype2编译cffi绑定时,同一文件在将包含目录传递给编译器时不包含驱动器号(即代替-i"d:/somedir"它将-i"/somedir"传递给gcc`。
  3. “grovel.lisp”尝试包含unix include目录。
  4. 我自己无法修复#2。 我找到this discussions,尝试了两个列出的补丁,但都没有。 (第一个打破cffi,因为ccl既没有找到“namestring-prefix”函数也没有找到“pathname-prefix”函数),第二个不能解决问题。

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

    1. 加载truetype字体。
    2. 将unicode char映射到字形。
    3. 获取字形对的字距调整信息。
    4. 加载字形位图。
    5. 有什么想法吗?

1 个答案:

答案 0 :(得分:3)

想出来。

通过quicklisp安装cl-freetype2需要MinGW的全功能安装。

  1. 确保已安装mingw-gmp。 (mingw-get install gmp
  2. 确保mingw / bin目录在系统路径中(右键单击“我的电脑” - > gt;属性 - >高级 - >环境变量)。已设定。应该是“D:/ development / MinGW / bin”(假设MinGW安装在“d:/ development”中)。
  3. 在ccl安装中找到“grovel.lisp”,并用“gcc”替换“”c:/msys/1.0/bin/gcc.exe“。如果在此安装gcc,则不必这样做位置。
  4. 启动mingw shell。
  5. 使用“.configure&& make&& make install”下载解压缩并安装最新的Freetype2 tarball,类似于unix enviornment。
  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”等)。
  10. 我必须承认这很麻烦,所以我仍然认为在内部使用freetype创建一个提供我需要的最少函数集的小dll会更好,然后使用cffi加载这个dll。这应该会容易得多。