diff --git a/docs/usermanual-fonts-and-faces.xml b/docs/usermanual-fonts-and-faces.xml
index 1258bec8c..2f8592a2d 100644
--- a/docs/usermanual-fonts-and-faces.xml
+++ b/docs/usermanual-fonts-and-faces.xml
@@ -260,18 +260,18 @@
- You can fetch the font-functions configuration for a font object
- by calling hb_font_get_font_funcs():
+ You can create new font-functions by calling
+ hb_font_funcs_create():
- hb_font_funcs_t *ffunctions;
- ffunctions = hb_font_get_font_funcs (font);
+ hb_font_funcs_t *ffunctions = hb_font_funcs_create ();
+ hb_font_set_funcs (font, ffunctions, font_data, destroy);
- The individual methods can each be replaced with their own setter
+ The individual methods can each be set with their own setter
function, such as
- hb_font_funcs_set_nominal_glyph_func(*ffunctions,
- func, *user_data, destroy).
+ hb_font_funcs_set_nominal_glyph_func(ffunctions,
+ func, user_data, destroy).
Font-functions structures can be reused for multiple font
@@ -291,6 +291,19 @@
programs from changing the configuration and introducing
inconsistencies and errors downstream.
+
+ To override only some functions while using the default implementation
+ for the others, you will need to create a sub-font. By default, the
+ sub-font uses the font functions of its parent except for the functions
+ that were explicitly set. The following code will override only the
+ hb_font_get_nominal_glyph_func_t for the sub-font:
+
+
+ hb_font_t *subfont = hb_font_create_sub_font (font)
+ hb_font_funcs_t *ffunctions = hb_font_funcs_create ();
+ hb_font_funcs_set_nominal_glyph_func(ffunctions, func, user_data, destroy);
+ hb_font_set_funcs (subfont, ffunctions, font_data, destroy);
+