-
在C:驱动器的根目录下创建一个名为src的目录,然后
转到该目录:
C:\>mkdir src
C:\>cd src
-
运行以下命令将vcpkg克隆到src目录:
git clone https://github.com/microsoft/vcpkg
您需要安装Git 才能运行上述命令。
-
然后引导vcpkg并移动到vcpkg目录:
C:\src>.\vcpkg\bootstrap-vcpkg.bat
C:\src>cd vcpkg
-
现在运行以下命令来安装pango(及其依赖项):
vcpkg install pango --triplet x64-windows
-
pango 安装成功后,从https://pypi.org/project/Kivy/2.0.0rc3/#files 下载 Kivy 2.0.0rc3 版本的源码包并解压到任何合适的文件夹中。
-
现在转到解压 Kivy 2.0.0rc3 源文件的文件夹,并在文本编辑器(最好是 Notepad++)中打开 setup.py 文件。搜索包含if c_options['use_pangoft2'] in (None, True) 的行并在该行之前添加以下代码块并保存文件:
if c_options['use_pangoft2'] in (None, True) and platform == 'win32':
pango_flags = {}
pango_flags['include_dirs'] = (['C:/src/vcpkg/installed/x64-windows/include', 'C:/src/vcpkg/installed/x64-windows/include/harfbuzz'])
pango_flags['library_dirs'] = (['C:/src/vcpkg/installed/x64-windows/lib'])
pango_flags['libraries'] = (['pangoft2-1.0', 'pango-1.0', 'gobject-2.0', 'glib-2.0', 'harfbuzz', 'freetype', 'fontconfig'])
c_options['use_pangoft2'] = True
pango_depends = {'depends': ['lib/pango/pangoft2.pxi', 'lib/pango/pangoft2.h']}
sources['core/text/_text_pango.pyx'] = merge(base_flags, pango_flags, pango_depends)
import subprocess
subprocess.call(["setx", "FONTCONFIG_FILE", "C:\\src\\vcpkg\\installed\\x64-windows\\tools\\fontconfig\\fonts.conf"])
目前需要手动配置为vcpkg
不会为编译器的自动填充生成 .pc 文件
通过pkg-conifg 链接变量。到目前为止还有
没有pkg-config 工具与vcpkg 的集成。
-
将C:/src/vcpkg/installed/x64-windows/lib 和C:/src/vcpkg/installed/x64-windows/bin 添加到PATH 系统环境变量中。
-
现在 Kivy 需要从它的源代码编译。如果 Kivy 已经安装,请先卸载它。然后可以遵循官方 kivy 网站中提到的程序 - 尽管我在这里列出了需要遵循的步骤。升级点子和轮子:
python -m pip install --upgrade pip wheel setuptools
-
获取Visual C++ Build Tools 并从“visual c++ 构建工具”部分安装以下组件:“Windows 10 SDK(版本)”、“适用于 Windows 的 C++ CMake 工具”、“C++/CLI 支持”、“MSVC v142 - VS 2019 C++ x64/x86 构建工具”。
-
设置所需的环境变量:
set USE_SDL2=1
set USE_PANGOFT2=1
set USE_GSTREAMER=1
-
安装最新版本的kivy依赖:
python -m pip install Cython==0.29.10 docutils pygments pypiwin32 kivy_deps.sdl2 kivy_deps.glew kivy_deps.gstreamer kivy_deps.glew_dev kivy_deps.sdl2_dev kivy_deps.gstreamer_dev
-
现在转到解压 Kivy 2.0.0rc3 源文件的根文件夹(```setup.py`` 文件所在的位置)并发出以下命令来编译和安装 Kivy:
python -m pip install .
-
Kivy安装成功后,可以运行下面的例子:
import os
os.environ['KIVY_TEXT'] = 'pango'
from kivy.app import App
from kivy.lang import Builder
APP_KV = """
BoxLayout:
Label:
text: "অল্প বিস্তর"
font_size: '48sp'
font_name: 'font/kalpurush.ttf'
"""
class MainApp(App):
def build(self):
return Builder.load_string(APP_KV)
if __name__ == '__main__':
MainApp().run()
您需要在名为font 的子目录下拥有字体文件kalpurush.ttf(或任何其他bangla unicode 字体文件)。
运行程序时的Kivy日志如下:
[INFO ] [Logger ] Record log in C:\Users\user\.kivy\logs\kivy_20-09-06_12.txt
[INFO ] [deps ] Successfully imported "kivy_deps.gstreamer_dev" 0.2.0
[INFO ] [deps ] Successfully imported "kivy_deps.gstreamer" 0.2.0
[INFO ] [deps ] Successfully imported "kivy_deps.glew" 0.2.0
[INFO ] [deps ] Successfully imported "kivy_deps.glew_dev" 0.2.0
[INFO ] [deps ] Successfully imported "kivy_deps.sdl2" 0.2.0
[INFO ] [deps ] Successfully imported "kivy_deps.sdl2_dev" 0.2.0
[INFO ] [Kivy ] v2.0.0rc3, git-Unknown, 20200906
[INFO ] [Kivy ] Installed at "C:\Python\Python36\lib\site-packages\kivy\__init__.py"
[INFO ] [Python ] v3.6.8 (tags/v3.6.8:3c6b436a57, Dec 24 2018, 00:16:47) [MSC v.1916 64 bit (AMD64)]
[INFO ] [Python ] Interpreter at "C:\Python\Python36\python.exe"
[INFO ] [Factory ] 185 symbols loaded
[INFO ] [Image ] Providers: img_tex, img_dds, img_sdl2 (img_pil, img_ffpyplayer, img_gif ignored)
[INFO ] [Window ] Provider: sdl2
[INFO ] [GL ] Using the "OpenGL" graphics system
[INFO ] [GL ] GLEW initialization succeeded
[INFO ] [GL ] Backend used <glew>
[INFO ] [GL ] OpenGL version <b'4.6.0 - Build 26.20.100.7812'>
[INFO ] [GL ] OpenGL vendor <b'Intel'>
[INFO ] [GL ] OpenGL renderer <b'Intel(R) HD Graphics 520'>
[INFO ] [GL ] OpenGL parsed version: 4, 6
[INFO ] [GL ] Shading version <b'4.60 - Build 26.20.100.7812'>
[INFO ] [GL ] Texture max size <16384>
[INFO ] [GL ] Texture max units <32>
[INFO ] [Window ] auto add sdl2 input provider
[INFO ] [Window ] virtual keyboard not allowed, single mode, not docked
[INFO ] [Text ] Provider: pango
[INFO ] [Base ] Start application main loop
[INFO ] [GL ] NPOT texture support is available
请注意,文本提供者是pango。
程序的输出:
文本正确呈现。使用pango 其他具有字体回退要求的非英语语言字体,复杂的字形处理将正确呈现。
还有其他安装pango 的过程,如GTK 官方网站中提到的gvsbuild 脚本。它还具有pkg-config 集成。但它没有与 Kivy 成功集成。通过vcpkg 进行安装,如此过程中所述,是我发现的唯一成功的过程。