diff --git a/.travis.yml b/.travis.yml index ce78796e6..5c7b7c19a 100644 --- a/.travis.yml +++ b/.travis.yml @@ -75,8 +75,8 @@ matrix: env: global: - PYTHON=python3 - - PKG_CONFIG_PATH=$HOME/glfw/lib/pkgconfig:$PKG_CONFIG_PATH - - LD_LIBRARY_PATH=$HOME/glfw/lib:$LD_LIBRARY_PATH + - PKG_CONFIG_PATH=$HOME/glfw/lib/pkgconfig:$HOME/harfbuzz/lib/pkgconfig:$PKG_CONFIG_PATH + - LD_LIBRARY_PATH=$HOME/glfw/lib:$HOME/harfbuzz/lib:$LD_LIBRARY_PATH - ASAN_OPTIONS=leak_check_at_exit=0 install: | @@ -94,15 +94,25 @@ install: | curl https://download.calibre-ebook.com/travis/kitty/osx.tar.xz | tar xJ -C $SW; fi else + pushd /tmp wget -O glfw-3.2.1.zip https://github.com/glfw/glfw/archive/3.2.1.zip unzip -q glfw-3.2.1.zip cd glfw-3.2.1 cmake -DBUILD_SHARED_LIBS=ON -DGLFW_BUILD_EXAMPLES=OFF -DGLFW_BUILD_TESTS=OFF -DGLFW_BUILD_DOCS=OFF -DCMAKE_INSTALL_PREFIX=$HOME/glfw make make install + + wget https://github.com/behdad/harfbuzz/releases/download/1.6.3/harfbuzz-1.6.3.tar.bz2 + tar xf harfbuzz-1.6.3.tar.bz2 + cd harfbuzz-1.6.3 + ./configure --prefix=$HOME/harfbuzz --disable-dependency-tracking --disable-static --with-glib=no --with-gobject=no --with-cairo=no --with-fontconfig=no --with-icu=no --with-directwrite=no --with-freetype=yes + make -j2 + make install cd .. + popd fi pkg-config --cflags glfw3 + pkg-config --cflags harfbuzz if [[ "$TRAVIS_OS_NAME" != 'osx' ]]; then PLIB=$(ldd `which python` | grep libpython | cut -d ' ' -f 3) export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:`dirname $PLIB` diff --git a/kitty/fonts.c b/kitty/fonts.c index ce184eb6d..978c524c8 100644 --- a/kitty/fonts.c +++ b/kitty/fonts.c @@ -8,13 +8,6 @@ #include "fonts.h" #include "state.h" -#if HB_VERSION_MAJOR > 0 || (HB_VERSION_MAJOR == 0 && (HB_VERSION_MINOR > 9 || (HB_VERSION_MINOR == 9 && HB_VERSION_MICRO >= 42))) -#define HARBUZZ_HAS_SET_CLUSTER_LEVEL -#endif -#if HB_VERSION_MAJOR < 1 || (HB_VERSION_MAJOR == 1 && (HB_VERSION_MINOR < 5)) -#define HB_GLYPH_FLAG_UNSAFE_TO_BREAK 1 -#endif - #define MISSING_GLYPH 4 typedef uint16_t glyph_index; @@ -685,10 +678,8 @@ init_fonts(PyObject *module) { } harfbuzz_buffer = hb_buffer_create(); if (harfbuzz_buffer == NULL || !hb_buffer_allocation_successful(harfbuzz_buffer) || !hb_buffer_pre_allocate(harfbuzz_buffer, 2048)) { PyErr_NoMemory(); return false; } -#ifdef HARBUZZ_HAS_SET_CLUSTER_LEVEL // A cluster level of HB_BUFFER_CLUSTER_LEVEL_MONOTONE_CHARACTERS is needed for the unsafe to break API hb_buffer_set_cluster_level(harfbuzz_buffer, HB_BUFFER_CLUSTER_LEVEL_MONOTONE_CHARACTERS); -#endif if (PyModule_AddFunctions(module, module_methods) != 0) return false; current_send_sprite_to_gpu = send_sprite_to_gpu; return true; diff --git a/kitty/freetype.c b/kitty/freetype.c index 114df1b4b..9b35cfba5 100644 --- a/kitty/freetype.c +++ b/kitty/freetype.c @@ -11,9 +11,6 @@ #include #include -#if HB_VERSION_MAJOR > 1 || (HB_VERSION_MAJOR == 1 && (HB_VERSION_MINOR > 0 || (HB_VERSION_MINOR == 0 && HB_VERSION_MICRO >= 5))) -#define HARBUZZ_HAS_LOAD_FLAGS -#endif #if HB_VERSION_MAJOR > 1 || (HB_VERSION_MAJOR == 1 && (HB_VERSION_MINOR > 6 || (HB_VERSION_MINOR == 6 && HB_VERSION_MICRO >= 3))) #define HARFBUZZ_HAS_CHANGE_FONT #endif @@ -131,9 +128,7 @@ new(PyTypeObject *type, PyObject *args, PyObject UNUSED *kwds) { if (!set_size_for_face((PyObject*)self, size_in_pts, xdpi, ydpi)) { Py_CLEAR(self); return NULL; } self->harfbuzz_font = hb_ft_font_create(self->face, NULL); if (self->harfbuzz_font == NULL) { Py_CLEAR(self); return PyErr_NoMemory(); } -#ifdef HARBUZZ_HAS_LOAD_FLAGS hb_ft_font_set_load_flags(self->harfbuzz_font, get_load_flags(self->hinting, self->hintstyle, FT_LOAD_DEFAULT)); -#endif } return (PyObject*)self; } diff --git a/setup.py b/setup.py index 839673da1..d2cf70408 100755 --- a/setup.py +++ b/setup.py @@ -171,6 +171,7 @@ def init_env( # automatically if this version is high enough cflags.append('-DPRIMARY_VERSION={}'.format(version[0] + 4000)) cflags.append('-DSECONDARY_VERSION={}'.format(version[1])) + at_least_version('harfbuzz', 1, 5) cflags.extend(pkg_config('libpng', '--cflags-only-I')) if isosx: font_libs = ['-framework', 'CoreText', '-framework', 'CoreGraphics']