Skip to content

Consider transition to harfbuzz subsetter for static instantiation #22

Open
@chrissimpkins

Description

@chrissimpkins

The harfbuzz subsetter is a compiled C++ lib that supports variable to static font instantiation. This appears to be exposed through the uharfbuzz Python bindings and it should be significantly faster.

https://github.com/harfbuzz/uharfbuzz/blob/da2e6d5a2c4607276378c84f0ba1fd3bf362beed/src/uharfbuzz/_harfbuzz.pyx#L387

so, I think that we could do something along the lines of the following:

import uharfbuzz

with open(fontpath, "rb") as fontbin:
        hb_face = uharfbuzz.Face(fontbin.read())

hb_font = uharfbuzz.Font(hb_face)

variation_axis_defs = {
    "opsz": "10",
    "wght": "700",
    "GRAD": "-25",
}

hb_font.set_variations(variation_axis_defs)

# TODO
# how do you write binary back to disk? 

It isn't clear to me based on a quick read through of the hb source what level of feature support it has relative to the pure Python varLib.mutator and varLib.instancer libs.

Questions

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions