【问题标题】:How do I build Cairo/Harfbuzz?如何构建 Cairo/Harfbuzz?
【发布时间】:2017-06-05 15:38:12
【问题描述】:

Cairo 依赖于 FontConfig。 FontConfig 依赖于 Freetype。我已经构建了 FreeType,但是当我尝试构建 FontConfig 时出现链接错误,因为 FreeType 需要 HarfBuzz。

当我尝试构建 Harfbuzz 时,它依赖于 FreeType。因此我们有一个循环依赖。此时的 makefile 已损坏:当它尝试构建测试时,它们无法链接,因为它们需要 Harbuzz 本身的符号。这可以通过在链接行中使用两次 HarfBuzz 来解决。或者通过删除我所做的所有测试。这样就解决了这个问题。

Harfbuzz 有一个名为“helper-cairo.cc”的文件。当我尝试编译它时,它抱怨缺少 FontConfig 头文件,因此显然存在对 FontConfig 的依赖。但是,如果不先构建 HarfBuzz,我就无法构建 FontConfig!

我不知道如何解决这种依赖关系。也许我可以在构建 HarfBuzz 时禁用 Cairo 助手,使用生成的库来构建 FontConfig,然后使用生成的 FontConfig 重新构建 HarfBuzz,然后重新构建 FontConfig?这一切似乎都令人讨厌。

我正在使用 MinGW 构建,而 Windows DLL 不喜欢未解析的符号,所以我认为我无法使用共享库来解决这个问题。我不确定为什么在链接 FontConfig 时需要 HarfBuzz - 也许它正在尝试构建一个 DLL :(

有什么想法可以在不丢失重要功能的情况下解决这个问题吗?

【问题讨论】:

    标签: mingw cairo fontconfig harfbuzz


    【解决方案1】:

    freetype 和 HarfBuzz 之间也存在循环依赖关系。

    请注意,只有使用 HarfBuzz 构建的测试和工具才需要 fontconfig 和 Cairo,因此配置它们似乎是安全的:

    1. 使用以下方法构建 Freetype:

      ./configure --prefix=${PREFIX} --host=x86_64-w64-mingw32 --with-sysroot=/usr/x86_64-w64-mingw32 --with-harfbuzz=no

    2. 使用以下方法构建 HarfBuzz:

      ./configure --prefix=${PREFIX} --host=x86_64-w64-mingw32 --with-fontconfig=no --with-cairo=no --with-sysroot=/usr/x86_64-w64- mingw32

    3. 使用以下方法构建 Freetype:

      ./configure --prefix=${PREFIX} --host=x86_64-w64-mingw32 --with-sysroot=/usr/x86_64-w64-mingw32 --with-harfbuzz=yes

    4. 构建字体配置。

    5. 建造开罗。

    尚未完全测试,但应该可以工作。

    【讨论】:

      【解决方案2】:

      我最近进入了 harfbuzz 场景。我编写并收集了一些基本的 harfbuzz 示例。脚本依赖于 freetype2、harfbuzz 和 cairo。 这是link。 要运行它们,只需键入 python3 filename.py

      【讨论】:

        猜你喜欢
        • 2014-04-19
        • 2015-03-01
        • 1970-01-01
        • 2023-03-22
        • 1970-01-01
        • 1970-01-01
        • 2020-03-13
        • 2014-02-14
        • 1970-01-01
        相关资源
        最近更新 更多