Faux Bold and Italic

Faux bold and italic using Freetype API
 

Modern Outline fonts (Truetype and Opentype) have a separate file for each weight and style for better readability. They are usually suffixed as normal, Bold, Italic and Bold-Italic. This means that one cannot render these variants if the font files are missing. From the end user perspective this is annoying at times.

Following APIs can be used to generate faux bold and italic variants.

 

Freetype API

  cairo_ft_font_face_set_synthesize (font_face, CAIRO_FT_SYNTHESIZE_BOLD
                     | CAIRO_FT_SYNTHESIZE_OBLIQUE);

 

Cairo transformation API

Use x-stretch transformation for bold and skew transformation for italic.

cairo_matrix_t font_matrix;
 
font_matrix.xx *= 1.5; // Bold - stretch
font_matrix.xy = -5;     // Italic - skew

 

Harfbuzz API

This didn't work for me.

 hb_font_set_synthetic_slant(font, .5);
 

 

 

Comments

Popular posts from this blog

GNU Emacs as a Comic Book Reader

Mozilla Readability in GNU Emacs

Data Visualization with GNU Emacs