summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLiu Kunpeng(柳鲲鹏) <liukunpeng@ts-it.cn>2022-10-16 22:10:19 -0400
committerAlexei Podtelezhnikov <apodtele@gmail.com>2022-10-16 22:10:19 -0400
commitbb59c3c958cac48044dc5ce3c0a393196c627974 (patch)
treed274e1f5010d0f431357e914d2dcac45394cd455
parent3ab1875cd22536b3d715b3b104b7fb744b9c25c5 (diff)
downloadfreetype2-bb59c3c958cac48044dc5ce3c0a393196c627974.tar.gz
* src/base/ftsynth.c (FT_GlyphSlot_Slant): New API with custom slant.
* include/freetype/ftsynth.h (FT_GlyphSlot_Slant): Declare it.
-rw-r--r--include/freetype/ftsynth.h7
-rw-r--r--src/base/ftsynth.c16
2 files changed, 18 insertions, 5 deletions
diff --git a/include/freetype/ftsynth.h b/include/freetype/ftsynth.h
index afc40b1d8..013f1cc78 100644
--- a/include/freetype/ftsynth.h
+++ b/include/freetype/ftsynth.h
@@ -68,10 +68,15 @@ FT_BEGIN_HEADER
FT_EXPORT( void )
FT_GlyphSlot_Embolden( FT_GlyphSlot slot );
- /* 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_GlyphSlot_Oblique( FT_GlyphSlot slot );
+ /* Slant an outline glyph by a given sine of an angle. */
+ FT_EXPORT( void )
+ FT_GlyphSlot_Slant( FT_GlyphSlot slot,
+ FT_Fixed slant );
+
/* */
diff --git a/src/base/ftsynth.c b/src/base/ftsynth.c
index 10bbe0dfd..fd595e118 100644
--- a/src/base/ftsynth.c
+++ b/src/base/ftsynth.c
@@ -46,6 +46,16 @@
FT_EXPORT_DEF( void )
FT_GlyphSlot_Oblique( FT_GlyphSlot slot )
{
+ FT_GlyphSlot_Slant( slot, 0x0366A );
+ }
+
+
+ /* documentation is in ftsynth.h */
+
+ FT_EXPORT_DEF( void )
+ FT_GlyphSlot_Slant( FT_GlyphSlot slot,
+ FT_Fixed slant )
+ {
FT_Matrix transform;
FT_Outline* outline;
@@ -61,13 +71,11 @@
/* we don't touch the advance width */
- /* For italic, simply apply a shear transform, with an angle */
- /* of about 12 degrees. */
-
+ /* For italic, simply apply a shear transform */
transform.xx = 0x10000L;
transform.yx = 0x00000L;
- transform.xy = 0x0366AL;
+ transform.xy = slant;
transform.yy = 0x10000L;
FT_Outline_Transform( outline, &transform );