diff options
author | Alexei Podtelezhnikov <apodtele@gmail.com> | 2023-03-16 03:28:59 +0000 |
---|---|---|
committer | Alexei Podtelezhnikov <apodtele@gmail.com> | 2023-03-16 03:28:59 +0000 |
commit | dd78d4a77458fa572c633b81e1f84b567f981ecc (patch) | |
tree | 464a907c640a2ea78766d834f943b65f7d04d1e8 /src | |
parent | 764bc8e41c19dac021e4ffe6ec6a207ed09df69a (diff) | |
download | freetype2-dd78d4a77458fa572c633b81e1f84b567f981ecc.tar.gz |
* src/base/ftsynth.c (FT_GlyphSlot_AdjustWeight): New API.
Diffstat (limited to 'src')
-rw-r--r-- | src/base/ftsynth.c | 20 |
1 files changed, 14 insertions, 6 deletions
diff --git a/src/base/ftsynth.c b/src/base/ftsynth.c index 6ec25e13e..f32edd338 100644 --- a/src/base/ftsynth.c +++ b/src/base/ftsynth.c @@ -98,8 +98,17 @@ FT_EXPORT_DEF( void ) FT_GlyphSlot_Embolden( FT_GlyphSlot slot ) { + FT_GlyphSlot_AdjustWeight( slot, 0x0AAA, 0x0AAA ); + } + + + FT_EXPORT_DEF( void ) + FT_GlyphSlot_AdjustWeight( FT_GlyphSlot slot, + FT_Fixed xdelta, + FT_Fixed ydelta ) + { FT_Library library; - FT_Face face; + FT_Size size; FT_Error error; FT_Pos xstr, ystr; @@ -108,16 +117,15 @@ return; library = slot->library; - face = slot->face; + size = slot->face->size; if ( slot->format != FT_GLYPH_FORMAT_OUTLINE && slot->format != FT_GLYPH_FORMAT_BITMAP ) return; - /* some reasonable strength */ - xstr = FT_MulFix( face->units_per_EM, - face->size->metrics.y_scale ) / 24; - ystr = xstr; + /* express deltas in pixels in 26.6 format */ + xstr = (FT_Pos)size->metrics.x_ppem * xdelta / 1024; + ystr = (FT_Pos)size->metrics.y_ppem * ydelta / 1024; if ( slot->format == FT_GLYPH_FORMAT_OUTLINE ) FT_Outline_EmboldenXY( &slot->outline, xstr, ystr ); |