我已经找到了有关编译与Harfbuzz相关的Freetype的已知问题的良好文档:http://www.gregwessels.com/dev/2017/05/02/freetype-harfbuzz.html和此处44184890

但如今它们似乎已经过时了:带有harfbuzz-1.7.6的freetype-2.9

这是我的编译方式:

  • 下载Freetype tarball
  • 提取压缩包...
  • 打开builds \ windows \ vc2010 \ freetype.sln
  • 它应该已经生成良好(作为dll)
  • 下载Harfbuzz
  • 提取自由类型旁边的压缩包...
  • 在根级别运行cmake ./以获取.sln
  • 它必须已经生成好(作为lib)

  • 此时,您有2个单独的库无法一起使用,这意味着:

    Freetype将不会打开您字体的GSUB脚本。 (或者我错了)

    为此,我需要帮助!我也需要确认!!!

    似乎需要在编译时在Freetype中启用Harfbuzz;我发现了一个名为FT_CONFIG_OPTION_USE_HARFBUZZ的预编译器指令

    但是在激活它时,在第三个项目中同时使用两个库时,我会遇到一些编译链接错误:
    autofit.obj : error LNK2019: external symbol not found _hb_ft_font_create referenced in function _af_face_globals_new
    

    众所周知,hb_ft_font_create是harfbuzz中的外部函数。

    所以这似乎是一个周期性的外部问题...我当然一点时候都没有好的配置,但是我浏览了许多文档和帮助,却一无所获...

    -编辑-
    在两个对象都解压缩之后,您通常会获得这样的树:
    .
    ├── freetype-2.9
    │   ├── autogen.sh
    │   ├── builds
    │   │   ├── ...
    │   │   └── windows
    │   │       └── vc2010    <<<< The .sln to use is in here
    │   ├── CMakeLists.txt    <<<< It is also good to obtain proper sln
    │   ├── configure
    │   ├── devel
    │   │   ├── ft2build.h
    │   │   └── ftoption.h
    │   ├── include
    │   │   ├── freetype
    │   │   └── ft2build.h
    │   ├── ...
    │   ├── objs
    │   │   ├── freetype.dll
    │   │   ├── freetype.lib
    │   │   ├── README
    │   │   └── Win32
    │   ├── README
    │   ├── README.git
    │   └── src
    └── harfbuzz-1.7.6
        ├── ...
        ├── cmake_install.cmake
        ├── CMakeLists.txt   <<<< The cmake project to obtain proper sln is this one
        ├── compile
        ├── ...
        ├── COPYING
        ├── CTestTestfile.cmake
        ├── Debug
        │   ├── harfbuzz.lib
        │   ├── harfbuzz-subset.lib
        │   └── ...
        ├── depcomp
        ├── docs
        ├── gtk-doc.make
        ├── harfbuzz.sln
        ├── harfbuzz.vcxproj
        ├── ...
        ├── main.dir
        │   └── Debug
        ├── NEWS
        ├── README
        ├── README.python
        ├── RELEASING.md
        ├── replace-enum-strings.cmake
        ├── RUN_TESTS.vcxproj
        ├── RUN_TESTS.vcxproj.filters
        ├── src
        │   ├── *.hh
        │   └── *.cc
        ├── test
        ├── THANKS
        ├── TODO
        ├── util
        └── Win32
            └── Debug
    

    最佳答案

    只需使用https://github.com/Microsoft/vcpkg/即可安装它们,不要回头:) HarfBuzz和Freetype都具有一个端口,并且受到很好的支持。

    关于循环依赖性,从FreeType到HarfBuzz的依赖性并不是必须考虑的。 vcpkg将HarfBuzz处理为FreeType依赖项,这是大多数项目所需要的。

    关于c++ - 如何编译Freetype(2)和Harfbuzz(使用Visual Studio)以使其协同工作?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49896474/

    10-09 22:44