+struct kmscon_font_ops {
+ const char *name;
+ struct kmscon_module *owner;
+ int (*init) (struct kmscon_font *out,
+ const struct kmscon_font_attr *attr);
+ void (*destroy) (struct kmscon_font *font);
+ int (*render) (struct kmscon_font *font,
+ uint32_t id, const uint32_t *ch, size_t len,
+ const struct kmscon_glyph **out);
+ int (*render_empty) (struct kmscon_font *font,
+ const struct kmscon_glyph **out);
+ int (*render_inval) (struct kmscon_font *font,
+ const struct kmscon_glyph **out);
+};
+
+int kmscon_font_register(const struct kmscon_font_ops *ops);
+void kmscon_font_unregister(const char *name);
+
+int kmscon_font_find(struct kmscon_font **out,
+ const struct kmscon_font_attr *attr,
+ const char *backend);