summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAnuj Verma <anujv@iitbhilai.ac.in>2020-08-16 10:47:41 +0530
committerWerner Lemberg <wl@gnu.org>2020-12-22 08:32:39 +0100
commit6882fe02fd724cce0ff284b392b27a57136a0a1f (patch)
treea8f13b2674783c0a7d7cba62c975a02f149f4ede
parent65bca9c9ff90593355a3cb8f4dab1530c7079dd3 (diff)
downloadfreetype2-6882fe02fd724cce0ff284b392b27a57136a0a1f.tar.gz
Add data types required for the forthcoming 'sdf' module.
* include/freetype/freetype.h (FT_Render_Mode): Add new render mode `FT_RENDER_MODE_SDF`, which will be used to generate SDF. * include/freetype/ftimage.h (FT_Pixel_Mode): Add new pixel mode `FT_PIXEL_MODE_GRAY16`, which will be the output of the 'sdf' module. (FT_RASTER_FLAG_SDF): New raster flag to be used internally by the 'sdf' module. * include/freetype/fttypes.h (FT_F6Dot10): New data type.
-rw-r--r--ChangeLog15
-rw-r--r--include/freetype/freetype.h24
-rw-r--r--include/freetype/ftimage.h14
-rw-r--r--include/freetype/fttypes.h12
4 files changed, 60 insertions, 5 deletions
diff --git a/ChangeLog b/ChangeLog
index 1e0503256..3f398d83c 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,20 @@
2020-08-16 Anuj Verma <anujv@iitbhilai.ac.in>
+ Add data types required for the forthcoming 'sdf' module.
+
+ * include/freetype/freetype.h (FT_Render_Mode): Add new render mode
+ `FT_RENDER_MODE_SDF`, which will be used to generate SDF.
+
+ * include/freetype/ftimage.h (FT_Pixel_Mode): Add new pixel mode
+ `FT_PIXEL_MODE_GRAY16`, which will be the output of the 'sdf'
+ module.
+ (FT_RASTER_FLAG_SDF): New raster flag to be used internally by the
+ 'sdf' module.
+
+ * include/freetype/fttypes.h (FT_F6Dot10): New data type.
+
+2020-08-16 Anuj Verma <anujv@iitbhilai.ac.in>
+
[base] Allow renderers of different formats.
* src/base/ftobjs.c (FT_Render_Glyph_Internal): Do not return if the
diff --git a/include/freetype/freetype.h b/include/freetype/freetype.h
index b19a1b7c5..8a441744d 100644
--- a/include/freetype/freetype.h
+++ b/include/freetype/freetype.h
@@ -3204,7 +3204,7 @@ FT_BEGIN_HEADER
*
* @note:
* This function is provided as a convenience, but keep in mind that
- * @FT_Matrix coefficients are only 16.16 fixed point values, which can
+ * @FT_Matrix coefficients are only 16.16 fixed-point values, which can
* limit the accuracy of the results. Using floating-point computations
* to perform the transform directly in client code instead will always
* yield better numbers.
@@ -3236,10 +3236,14 @@ FT_BEGIN_HEADER
* in the @FT_GlyphSlotRec structure gives the format of the returned
* bitmap.
*
- * All modes except @FT_RENDER_MODE_MONO use 256 levels of opacity,
- * indicating pixel coverage. Use linear alpha blending and gamma
- * correction to correctly render non-monochrome glyph bitmaps onto a
- * surface; see @FT_Render_Glyph.
+ * All modes except @FT_RENDER_MODE_MONO and @FT_RENDER_MODE_SDF use 256
+ * levels of opacity, indicating pixel coverage. Use linear alpha
+ * blending and gamma correction to correctly render non-monochrome
+ * glyph bitmaps onto a surface; see @FT_Render_Glyph.
+ *
+ * The @FT_RENDER_MODE_SDF is a special render mode that uses up to
+ * 65536 distance values, indicating the signed distance from the grid
+ * position to the nearest outline.
*
* @values:
* FT_RENDER_MODE_NORMAL ::
@@ -3266,6 +3270,15 @@ FT_BEGIN_HEADER
* bitmaps that are 3~times the height of the original glyph outline in
* pixels and use the @FT_PIXEL_MODE_LCD_V mode.
*
+ * FT_RENDER_MODE_SDF ::
+ * This mode corresponds to 16-bit signed distance fields (SDF)
+ * bitmaps. Each pixel in a SDF bitmap contains information about the
+ * nearest edge of the glyph outline. The distances are calculated
+ * from the center of the pixel and are positive if they are filled by
+ * the outline (i.e., inside the outline) and negative otherwise. The
+ * output bitmap buffer is represented as 6.10 fixed-point values; use
+ * @FT_6Dot10 and convert accordingly.
+ *
* @note:
* The selected render mode only affects vector glyphs of a font.
* Embedded bitmaps often have a different pixel mode like
@@ -3279,6 +3292,7 @@ FT_BEGIN_HEADER
FT_RENDER_MODE_MONO,
FT_RENDER_MODE_LCD,
FT_RENDER_MODE_LCD_V,
+ FT_RENDER_MODE_SDF,
FT_RENDER_MODE_MAX
diff --git a/include/freetype/ftimage.h b/include/freetype/ftimage.h
index 5e2257f96..8cf8a48da 100644
--- a/include/freetype/ftimage.h
+++ b/include/freetype/ftimage.h
@@ -157,6 +157,13 @@ FT_BEGIN_HEADER
* in font files according to the OpenType specification. We haven't
* found a single font using this format, however.
*
+ * FT_PIXEL_MODE_GRAY16 ::
+ * A 16-bit per pixel bitmap used to represent signed distances in a
+ * signed distance field bitmap as needed by @FT_RENDER_MODE_SDF.
+ * Values are represented in a 6.10 fixed-point format; this means
+ * that you have to divide by 1024 to get the actual data generated by
+ * the SDF rasterizers.
+ *
* FT_PIXEL_MODE_LCD ::
* An 8-bit bitmap, representing RGB or BGR decimated glyph images used
* for display on LCD displays; the bitmap is three times wider than
@@ -184,6 +191,7 @@ FT_BEGIN_HEADER
FT_PIXEL_MODE_GRAY,
FT_PIXEL_MODE_GRAY2,
FT_PIXEL_MODE_GRAY4,
+ FT_PIXEL_MODE_GRAY16,
FT_PIXEL_MODE_LCD,
FT_PIXEL_MODE_LCD_V,
FT_PIXEL_MODE_BGRA,
@@ -959,11 +967,17 @@ FT_BEGIN_HEADER
* will be clipped to a box specified in the `clip_box` field of the
* @FT_Raster_Params structure. Otherwise, the `clip_box` is
* effectively set to the bounding box and all spans are generated.
+ *
+ * FT_RASTER_FLAG_SDF ::
+ * This flag is set to indicate that a signed distance field glyph
+ * image should be generated. This is only used while rendering with
+ * the @FT_RENDER_MODE_SDF render mode.
*/
#define FT_RASTER_FLAG_DEFAULT 0x0
#define FT_RASTER_FLAG_AA 0x1
#define FT_RASTER_FLAG_DIRECT 0x2
#define FT_RASTER_FLAG_CLIP 0x4
+#define FT_RASTER_FLAG_SDF 0x8
/* these constants are deprecated; use the corresponding */
/* `FT_RASTER_FLAG_XXX` values instead */
diff --git a/include/freetype/fttypes.h b/include/freetype/fttypes.h
index aaeb9e878..8200ba066 100644
--- a/include/freetype/fttypes.h
+++ b/include/freetype/fttypes.h
@@ -78,6 +78,7 @@ FT_BEGIN_HEADER
* FT_FWord
* FT_UFWord
* FT_F2Dot14
+ * FT_F6Dot10
* FT_UnitVector
* FT_F26Dot6
* FT_Data
@@ -267,6 +268,17 @@ FT_BEGIN_HEADER
/**************************************************************************
*
* @type:
+ * FT_F6Dot10
+ *
+ * @description:
+ * A signed 6.10 fixed-point type used for signed distance values.
+ */
+ typedef signed short FT_F6Dot10;
+
+
+ /**************************************************************************
+ *
+ * @type:
* FT_F26Dot6
*
* @description: