Skip to main content

Freetype python bindings

Project description

FreeType (high-level Python API)

Freetype Python provides bindings for the FreeType library. Only the high-level API is bound.

Documentation available at: http://freetype-py.readthedocs.org/en/latest/

Installation

From PyPI, recommended: pip install freetype-py. This will install the library with a bundled FreeType binary, so you’re ready to go on Windows, macOS and Linux (all with 32 and 64 bit x86 architecture support).

Do note: if you specify the –no-binary paramater to pip, or use a different architecture for which we don’t pre-compile binaries, the package will default to using an external FreeType library. Specify the environment variable FREETYPEPY_BUNDLE_FT=1 before calling pip to compile a binary yourself.

Installation with compiling FreeType from source

If you don’t want to or can’t use the pre-built binaries, build FreeType yourself: export FREETYPEPY_BUNDLE_FT=yesplease && pip install .. This will download and compile FreeType with Harfbuzz support as specified in setup-build-freetype.py. Set the environment variable PYTHON_ARCH to 32 or 64 to explicitly set an architecture, default is whatever your host machine uses. On macOS, we will always build a universal 32 and 64 bit Intel binary.

  • Windows: You need CMake and a C and C++ compiler, e.g. the Visual Code Community 2017 distribution with the desktop C++ workload.

  • macOS: You need CMake and the XCode tools (full IDE not necessary)

  • Linux: You need CMake, gcc and g++. For building a 32 bit library on a 64 bit machine, you need gcc-multilib and g++-multilib (Debian) or glibc-devel.i686 and libstdc++-devel.i686 (Fedora).

Installation with an external FreeType library (the default)

Install just the pure Python library and let it find a system-wide installed FreeType at runtime.

Mac users

Freetype should be already installed on your system. If not, either install it using homebrew or compile it and place the library binary file in ‘/usr/local/lib’.

Linux users

Freetype should be already installed on your system. If not, either install relevant package from your package manager or compile from sources and place the library binary file in ‘/usr/local/lib’.

Window users

There are no official Freetype binary releases available, but they offer some links to precompiled Windows DLLs. Please see the FreeType Downloads page for links. You can also compile the FreeType library from source yourself.

If you are using freetype-py on Windows with a 32-Bit version of Python, you need the 32-Bit version of the Freetype binary. The same applies for a 64-Bit version of Python.

Because of the way Windows searches for dll files, make sure the resulting file is named ‘freetype.dll’ (and not something like Freetype245.dll). Windows expects the library in one of the directories listed in the $PATH environment variable. As it is not recommended to place the dll in a Windows system folder, you can choose one of the following ways to solve this:

  • Place library in a folder of your choice and edit the $PATH user environment variable

  • Place library in a folder of your choice and edit the $PATH system environment variable

  • For development purpose, place the library in the working directory of the application

  • Place the library in one of the existing directories listed in $PATH

To get a complete list of all the directories in the $PATH environment variable (user and system), open a command promt and type

echo %PATH%

Usage example

import freetype
face = freetype.Face("Vera.ttf")
face.set_char_size( 48*64 )
face.load_char('S')
bitmap = face.glyph.bitmap
print(bitmap.buffer)

Screenshots

Screenshot below comes from the wordle.py example. No clever tricks here, just brute force.

https://raw.githubusercontent.com/rougier/freetype-py/master/doc/_static/wordle.png

Screenshots below comes from the glyph-vector.py and glyph-vector-2.py examples showing how to access a glyph outline information and use it to draw the glyph. Rendering (with Bézier curves) is done using matplotlib.

https://raw.githubusercontent.com/rougier/freetype-py/master/doc/_static/S.png https://raw.githubusercontent.com/rougier/freetype-py/master/doc/_static/G.png

Screenshot below comes from the glyph-color.py showing how to draw and combine a glyph outline with the regular glyph.

https://raw.githubusercontent.com/rougier/freetype-py/master/doc/_static/outline.png

The screenshot below comes from the hello-world.py example showing how to draw text in a bitmap (that has been zoomed in to show antialiasing).

https://raw.githubusercontent.com/rougier/freetype-py/master/doc/_static/hello-world.png

The screenshot below comes from the agg-trick.py example showing an implementation of ideas from the Texts Rasterization Exposures by Maxim Shemarev.

https://raw.githubusercontent.com/rougier/freetype-py/master/doc/_static/agg-trick.png

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

freetype-py-2.3.0.zip (830.6 kB view details)

Uploaded Source

Built Distributions

freetype_py-2.3.0-py3-none-win_amd64.whl (772.9 kB view details)

Uploaded Python 3 Windows x86-64

freetype_py-2.3.0-py3-none-musllinux_1_1_x86_64.whl (1.0 MB view details)

Uploaded Python 3 musllinux: musl 1.1+ x86-64

freetype_py-2.3.0-py3-none-musllinux_1_1_aarch64.whl (1.0 MB view details)

Uploaded Python 3 musllinux: musl 1.1+ ARM64

freetype_py-2.3.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (972.2 kB view details)

Uploaded Python 3 manylinux: glibc 2.17+ ARM64

freetype_py-2.3.0-py3-none-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl (978.9 kB view details)

Uploaded Python 3 manylinux: glibc 2.12+ x86-64 manylinux: glibc 2.5+ x86-64

freetype_py-2.3.0-py3-none-macosx_10_9_universal2.whl (1.7 MB view details)

Uploaded Python 3 macOS 10.9+ universal2 (ARM64, x86-64)

File details

Details for the file freetype-py-2.3.0.zip.

File metadata

  • Download URL: freetype-py-2.3.0.zip
  • Upload date:
  • Size: 830.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.0 CPython/3.9.12

File hashes

Hashes for freetype-py-2.3.0.zip
Algorithm Hash digest
SHA256 f9b64ce3272a5c358dcee824800a32d70997fb872a0965a557adca20fce7a5d0
MD5 b675a1b97e76acec96751cb851f706b8
BLAKE2b-256 5d77341e6c61795a827390f394c7d5f682561c9fd79cc0b650937d3d5885e3cc

See more details on using hashes here.

File details

Details for the file freetype_py-2.3.0-py3-none-win_amd64.whl.

File metadata

File hashes

Hashes for freetype_py-2.3.0-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 3a552265b06c2cb3fa54f86ed6fcbf045d8dc8176f9475bedddf9a1b31f5402f
MD5 6c6e43628e08d828224e7c387a35bedb
BLAKE2b-256 a6eda6fa61ad28748045988fd201fb85e0ad66ccb462b7d6eca8d9472b2cb241

See more details on using hashes here.

File details

Details for the file freetype_py-2.3.0-py3-none-musllinux_1_1_x86_64.whl.

File metadata

File hashes

Hashes for freetype_py-2.3.0-py3-none-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 b95ccd52ff7e9bef34505f8af724cee114a3c3cc9cf13e0fd406fa0cc92b988a
MD5 b73eb1a1dd6353d9d291c40e45abe021
BLAKE2b-256 58594f3312fe3ad3b8e38f09ac2fb575447264d92a19608ff9a3cafda89a845a

See more details on using hashes here.

File details

Details for the file freetype_py-2.3.0-py3-none-musllinux_1_1_aarch64.whl.

File metadata

File hashes

Hashes for freetype_py-2.3.0-py3-none-musllinux_1_1_aarch64.whl
Algorithm Hash digest
SHA256 89cee8f4e7cf0a37b73a43a08c88703d84e3b9f9243fc665d8dc0b72a5d206a8
MD5 935e6852f068bd61d7f8af78c57badc1
BLAKE2b-256 9fd75f98b31f8191306719588655e9632286e51a467035c4aac1c49e39e07a81

See more details on using hashes here.

File details

Details for the file freetype_py-2.3.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for freetype_py-2.3.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 ccdb1616794a8ad48beaa9e29d3494e6643d24d8e925cc39263de21c062ea5a7
MD5 aadfb918404db46432867fbc9d39a29f
BLAKE2b-256 e590ee108b3f684819e3956230193fe74472bb17300a45d072f3b8b5e1ed24a8

See more details on using hashes here.

File details

Details for the file freetype_py-2.3.0-py3-none-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl.

File metadata

File hashes

Hashes for freetype_py-2.3.0-py3-none-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 c8f17c3ac35dc7cc9571ac37a00a6daa428a1a6d0fe6926a77d16066865ed5ef
MD5 0d1731696e53d9025015bbd575d29d0c
BLAKE2b-256 474aeaf409f4dee179aa8984b5cd6ff0130b2523c00f37f5221629b5df4b6918

See more details on using hashes here.

File details

Details for the file freetype_py-2.3.0-py3-none-macosx_10_9_universal2.whl.

File metadata

File hashes

Hashes for freetype_py-2.3.0-py3-none-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 ca7155de937af6f26bfd9f9089a6e9b01fa8f9d3040a3ddc0aeb3a53cf88f428
MD5 9bf861b893cc45eed24e539a72157e7b
BLAKE2b-256 95ef65ea003860dc95da1243f621fc3082254292ba0a3b9808ed3c935c19b555

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page