当我尝试构建Harfbuzz时,它依赖于FreeType。因此,我们有一个循环依赖。此时的makefile已损坏:当它试图构建测试时,它们无法链接,因为它们需要Harbuzz本身的符号。这可以通过在链路线上具有两次HarfBuzz来解决。或者删除所有测试,这就是我所做的。这就解决了这个问题。
Harfbuzz有一个名为"helper-cairo.cc"的文件。当我试图编译它时,它抱怨FontConfig头文件错误,所以很明显存在对FontConfig的依赖。然而,如果不首先构建HarfBuzz,我就无法构建FontConfig!
我不知道如何解决这种依赖关系。也许我可以在构建HarfBuzz时禁用Cairo助手,使用生成的库来构建FontConfig,然后用生成的FontConfig重建HarfBuz,然后重建FontConfig?这一切看起来很麻烦。
我是用MinGW构建的,Windows DLL不喜欢未解析的符号,所以我认为我不能用共享库来解决这个问题。我真的不确定为什么我在链接FontConfig时需要HarfBuzz——也许它试图构建一个DLL:(
有什么想法可以在不失去重要功能的情况下解决这个问题吗?
freetype和HarfBuzz之间还有一个循环依赖关系。
请注意,fontconfig和Cairo仅用于使用HarfBuzz构建的测试和工具,因此配置它们似乎是安全的:
-
使用构建自由类型
/configure--prefix=${prefix}--host=x86_64-w64-mingw32--with sysroot=/usr/x86_664-w64-mingw32--with harfbuzz=no
-
使用构建HarfBuzz
/configure--prefix=${prefix}--host=x86_64-w64-mingw32--with fontconfig=no--with cairo=no--withsysroot=/usr/x86_64w64-mingw32
-
构建Freetype使用:
/configure--prefix=${prefix}--host=x86_64-w64-mingw32--with sysroot=/usr/x86_664-w64-mingw32--with harfbuzz=yes
-
构建fontconfig。
-
建设开罗。
尚未完全测试,但应该可以工作。
我最近进入了harfbuzz场景。我写并收集了一些基本的harfbuzz示例。脚本依赖于freetype2、harfbuzz和cairo。这是链接。要运行它们,只需键入python3 filename.py