{"id":22507,"library":"ufo2ft","title":"ufo2ft","description":"A Python library that compiles UFO (Unified Font Object) sources into OpenType font binaries (.otf and .ttf) using FontTools. Version 3.7.1 requires Python >=3.10. It bridges UFO data structures with FontTools' font compilation pipeline, supporting features like Mark-to-Mark positioning, kern feature generation, and variable font instantiation. Release cadence is irregular with patches every few months.","status":"active","version":"3.7.1","language":"python","source_language":"en","source_url":"https://github.com/googlefonts/ufo2ft","tags":["font","opentype","ufo","fonttools","type-design"],"install":[{"cmd":"pip install ufo2ft","lang":"bash","label":"Install from PyPI"}],"dependencies":[{"reason":"Core dependency for font compilation and feature processing","package":"fonttools[ufo,lxml,feaLib]","optional":false}],"imports":[{"wrong":"from ufo2ft import compileInterpolatableFontFromUFOs","symbol":"compileOTF","correct":"from ufo2ft import compileOTF"},{"symbol":"compileTTF","correct":"from ufo2ft import compileTTF"},{"symbol":"compileVariableTTF","correct":"from ufo2ft import compileVariableTTF"}],"quickstart":{"code":"from ufo2ft import compileOTF\nfrom fontTools.ufoLib import UFOReader\n\n# Replace with actual path to your .ufo\npath = \"path/to/font.ufo\"\nreader = UFOReader(path)\nfont = compileOTF(reader)\nfont.save(\"output.otf\")\nprint(\"OpenType font saved.\")","lang":"python","description":"Compile a single UFO into an OpenType font file."},"warnings":[{"fix":"Upgrade to Python 3.10 or higher.","message":"Python 3.9 dropped as of v3.7.0; requires Python >=3.10.","severity":"breaking","affected_versions":">=3.7.0"},{"fix":"Upgrade to v3.6.9 or later, or avoid pinning ufo2ft with exact constraints.","message":"In v3.6.8, dependencies were pinned to exact versions, causing clashes. This was fixed in v3.6.9.","severity":"breaking","affected_versions":"3.6.8 only"},{"fix":"Use top-level imports from ufo2ft package.","message":"Some internal modules like ufo2ft.outlineCompiler may change; rely on stable public API (compileOTF, compileTTF, compileInterpolatableFontFromUFOs).","severity":"deprecated","affected_versions":"all"},{"fix":"Install defcon explicitly if needed: pip install defcon.","message":"ufo2ft works with both defcon and ufoLib2 for UFO objects, but v3.7.0 made neither strictly required. If using defcon, ensure it's installed separately.","severity":"gotcha","affected_versions":">=3.7.0"},{"fix":"Validate master UFOs before compiling with compileInterpolatableFontFromUFOs().","message":"When compiling variable fonts, ensure all master UFOs have the same glyph set and consistent outlines; otherwise compilation may fail silently or produce incorrect data.","severity":"gotcha","affected_versions":"all"}],"env_vars":null,"search_vec":"'3.10':25 '3.7.1':22 'binari':15 'bridg':27 'cadenc':52 'compil':6,34 'data':29 'design':66 'everi':57 'featur':37,45 'font':9,14,33,49,60 'fonttool':20,32,63 'generat':46 'instanti':50 'irregular':54 'kern':44 'librari':4 'like':38 'mark':40,42 'mark-to-mark':39 'month':59 'object':10 'opentyp':13,61 'otf':16 'patch':56 'pipelin':35 'posit':43 'python':3,24 'releas':51 'requir':23 'sourc':11 'structur':30 'support':36 'ttf':18 'type':65 'type-design':64 'ufo':7,28,62 'ufo2ft':1 'unifi':8 'use':19 'variabl':48 'version':21","created_at":"2026-04-27T17:05:32.384340+00:00","updated_at":"2026-04-27T17:05:32.384340+00:00","problems":null,"ecosystem":"pypi","meta_description":null,"install_score":null,"quickstart_score":null,"quickstart_tag":null,"pypi_latest":"3.8.2","cli_name":"","cli_version":null,"type":"library","homepage":null,"github":"https://github.com/googlefonts/ufo2ft","docs":null,"changelog":null,"pypi":"https://pypi.org/project/ufo2ft/","npm":null,"openapi_spec":null,"status_page":null,"smithery":null,"categories":["data"],"base_url":null,"auth_type":null,"provenance":{"verified_status":"passing","verified_at":"2026-06-30","last_verified":"2026-06-30","next_check":"2026-07-30","install_tag":null}}