* src/base/ftsynth.c (FT_GlyphSlot_AdjustWeight): New API.
* include/freetype/ftsynth.h (FT_GlyphSlot_AdjustWeight): Document it.
This commit is contained in:
parent
bd6208b712
commit
faf5d5adce
|
@ -68,6 +68,18 @@ FT_BEGIN_HEADER
|
||||||
FT_EXPORT( void )
|
FT_EXPORT( void )
|
||||||
FT_GlyphSlot_Embolden( FT_GlyphSlot slot );
|
FT_GlyphSlot_Embolden( FT_GlyphSlot slot );
|
||||||
|
|
||||||
|
/* Precisely adjust the glyph weight either horizontally or vertically. */
|
||||||
|
/* The `xdelta` and `ydelta` values are fractions of the face Em size */
|
||||||
|
/* (in fixed-point format). Considering that a regular face would have */
|
||||||
|
/* stem widths on the order of 0.1 Em, a delta of 0.05 (0x0CCC) should */
|
||||||
|
/* be very noticeable. To increase or decrease the weight, use positive */
|
||||||
|
/* or negative values, respectively. */
|
||||||
|
FT_EXPORT( void )
|
||||||
|
FT_GlyphSlot_AdjustWeight( FT_GlyphSlot slot,
|
||||||
|
FT_Fixed xdelta,
|
||||||
|
FT_Fixed ydelta );
|
||||||
|
|
||||||
|
|
||||||
/* Slant an outline glyph to the right by about 12 degrees. */
|
/* Slant an outline glyph to the right by about 12 degrees. */
|
||||||
FT_EXPORT( void )
|
FT_EXPORT( void )
|
||||||
FT_GlyphSlot_Oblique( FT_GlyphSlot slot );
|
FT_GlyphSlot_Oblique( FT_GlyphSlot slot );
|
||||||
|
|
|
@ -97,9 +97,18 @@
|
||||||
|
|
||||||
FT_EXPORT_DEF( void )
|
FT_EXPORT_DEF( void )
|
||||||
FT_GlyphSlot_Embolden( FT_GlyphSlot slot )
|
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_Library library;
|
||||||
FT_Face face;
|
FT_Size size;
|
||||||
FT_Error error;
|
FT_Error error;
|
||||||
FT_Pos xstr, ystr;
|
FT_Pos xstr, ystr;
|
||||||
|
|
||||||
|
@ -108,16 +117,15 @@
|
||||||
return;
|
return;
|
||||||
|
|
||||||
library = slot->library;
|
library = slot->library;
|
||||||
face = slot->face;
|
size = slot->face->size;
|
||||||
|
|
||||||
if ( slot->format != FT_GLYPH_FORMAT_OUTLINE &&
|
if ( slot->format != FT_GLYPH_FORMAT_OUTLINE &&
|
||||||
slot->format != FT_GLYPH_FORMAT_BITMAP )
|
slot->format != FT_GLYPH_FORMAT_BITMAP )
|
||||||
return;
|
return;
|
||||||
|
|
||||||
/* some reasonable strength */
|
/* express deltas in pixels in 26.6 format */
|
||||||
xstr = FT_MulFix( face->units_per_EM,
|
xstr = (FT_Pos)size->metrics.x_ppem * xdelta / 1024;
|
||||||
face->size->metrics.y_scale ) / 24;
|
ystr = (FT_Pos)size->metrics.y_ppem * ydelta / 1024;
|
||||||
ystr = xstr;
|
|
||||||
|
|
||||||
if ( slot->format == FT_GLYPH_FORMAT_OUTLINE )
|
if ( slot->format == FT_GLYPH_FORMAT_OUTLINE )
|
||||||
FT_Outline_EmboldenXY( &slot->outline, xstr, ystr );
|
FT_Outline_EmboldenXY( &slot->outline, xstr, ystr );
|
||||||
|
|
Loading…
Reference in New Issue