forked from minhngoc25a/freetype2
Bitmap metrics presetting [2/2].
* src/base/ftobjs.c (FT_Load_Glyph): Preset the bitmap metrics when appropriate but `FT_Render_Glyph' is not called. * include/freetype/freetype.h (FT_GlyphSlotRec): Document the change.
This commit is contained in:
parent
ae7dc1f62d
commit
c26f7f975b
10
ChangeLog
10
ChangeLog
|
@ -1,3 +1,11 @@
|
||||||
|
2017-09-29 Alexei Podtelezhnikov <apodtele@gmail.com>
|
||||||
|
|
||||||
|
Bitmap metrics presetting [2/2].
|
||||||
|
|
||||||
|
* src/base/ftobjs.c (FT_Load_Glyph): Preset the bitmap metrics when
|
||||||
|
appropriate but `FT_Render_Glyph' is not called.
|
||||||
|
* include/freetype/freetype.h (FT_GlyphSlotRec): Document the change.
|
||||||
|
|
||||||
2017-09-28 Alexei Podtelezhnikov <apodtele@gmail.com>
|
2017-09-28 Alexei Podtelezhnikov <apodtele@gmail.com>
|
||||||
|
|
||||||
[smooth, raster] Miscellaneous cleanups.
|
[smooth, raster] Miscellaneous cleanups.
|
||||||
|
@ -38,7 +46,7 @@
|
||||||
function.
|
function.
|
||||||
|
|
||||||
* src/base/ftobjs.c (ft_glyphslot_preset_bitmap): New function that
|
* src/base/ftobjs.c (ft_glyphslot_preset_bitmap): New function that
|
||||||
calculates prespective bitmap metrics for the given rendering mode.
|
calculates prospective bitmap metrics for the given rendering mode.
|
||||||
* include/freetype/internal/ftobjs.h (ft_glyphslot_preset_bitmap):
|
* include/freetype/internal/ftobjs.h (ft_glyphslot_preset_bitmap):
|
||||||
Declare it.
|
Declare it.
|
||||||
|
|
||||||
|
|
|
@ -1696,17 +1696,13 @@ FT_BEGIN_HEADER
|
||||||
/* @FT_GLYPH_FORMAT_COMPOSITE, but other values */
|
/* @FT_GLYPH_FORMAT_COMPOSITE, but other values */
|
||||||
/* are possible. */
|
/* are possible. */
|
||||||
/* */
|
/* */
|
||||||
/* bitmap :: This field is used as a bitmap descriptor */
|
/* bitmap :: This field is used as a bitmap descriptor. */
|
||||||
/* when the slot format is */
|
/* Note that the address and content of the */
|
||||||
/* @FT_GLYPH_FORMAT_BITMAP. Note that the */
|
/* bitmap buffer can change between calls of */
|
||||||
/* address and content of the bitmap buffer can */
|
/* @FT_Load_Glyph and a few other functions. */
|
||||||
/* change between calls of @FT_Load_Glyph and a */
|
|
||||||
/* few other functions. */
|
|
||||||
/* */
|
/* */
|
||||||
/* bitmap_left :: The bitmap's left bearing expressed in */
|
/* bitmap_left :: The bitmap's left bearing expressed in */
|
||||||
/* integer pixels. Only valid if the format is */
|
/* integer pixels. */
|
||||||
/* @FT_GLYPH_FORMAT_BITMAP, this is, if the */
|
|
||||||
/* glyph slot contains a bitmap. */
|
|
||||||
/* */
|
/* */
|
||||||
/* bitmap_top :: The bitmap's top bearing expressed in integer */
|
/* bitmap_top :: The bitmap's top bearing expressed in integer */
|
||||||
/* pixels. This is the distance from the */
|
/* pixels. This is the distance from the */
|
||||||
|
@ -1753,7 +1749,9 @@ FT_BEGIN_HEADER
|
||||||
/* If @FT_Load_Glyph is called with default flags (see */
|
/* If @FT_Load_Glyph is called with default flags (see */
|
||||||
/* @FT_LOAD_DEFAULT) the glyph image is loaded in the glyph slot in */
|
/* @FT_LOAD_DEFAULT) the glyph image is loaded in the glyph slot in */
|
||||||
/* its native format (e.g., an outline glyph for TrueType and Type~1 */
|
/* its native format (e.g., an outline glyph for TrueType and Type~1 */
|
||||||
/* formats). */
|
/* formats). [Since 2.8.2] The prospective bitmap metrics are */
|
||||||
|
/* calculated according to @FT_LOAD_TARGET_XXX and other flags even */
|
||||||
|
/* for the outline glyph, even if @FT_LOAD_RENDER is not set. */
|
||||||
/* */
|
/* */
|
||||||
/* This image can later be converted into a bitmap by calling */
|
/* This image can later be converted into a bitmap by calling */
|
||||||
/* @FT_Render_Glyph. This function searches the current renderer for */
|
/* @FT_Render_Glyph. This function searches the current renderer for */
|
||||||
|
|
|
@ -983,20 +983,22 @@
|
||||||
FT_TRACE5(( " linear x advance: %d\n" , slot->linearHoriAdvance ));
|
FT_TRACE5(( " linear x advance: %d\n" , slot->linearHoriAdvance ));
|
||||||
FT_TRACE5(( " linear y advance: %d\n" , slot->linearVertAdvance ));
|
FT_TRACE5(( " linear y advance: %d\n" , slot->linearVertAdvance ));
|
||||||
|
|
||||||
/* do we need to render the image now? */
|
/* do we need to render the image or preset the bitmap now? */
|
||||||
if ( !error &&
|
if ( !error &&
|
||||||
slot->format != FT_GLYPH_FORMAT_BITMAP &&
|
slot->format != FT_GLYPH_FORMAT_BITMAP &&
|
||||||
slot->format != FT_GLYPH_FORMAT_COMPOSITE &&
|
slot->format != FT_GLYPH_FORMAT_COMPOSITE )
|
||||||
load_flags & FT_LOAD_RENDER )
|
|
||||||
{
|
{
|
||||||
FT_Render_Mode mode = FT_LOAD_TARGET_MODE( load_flags );
|
FT_Render_Mode mode = FT_LOAD_TARGET_MODE( load_flags );
|
||||||
|
|
||||||
|
|
||||||
if ( mode == FT_RENDER_MODE_NORMAL &&
|
if ( mode == FT_RENDER_MODE_NORMAL &&
|
||||||
(load_flags & FT_LOAD_MONOCHROME ) )
|
load_flags & FT_LOAD_MONOCHROME )
|
||||||
mode = FT_RENDER_MODE_MONO;
|
mode = FT_RENDER_MODE_MONO;
|
||||||
|
|
||||||
error = FT_Render_Glyph( slot, mode );
|
if ( load_flags & FT_LOAD_RENDER )
|
||||||
|
error = FT_Render_Glyph( slot, mode );
|
||||||
|
else if ( ( load_flags & FT_LOAD_NO_SCALE ) == 0 )
|
||||||
|
ft_glyphslot_preset_bitmap( slot, mode, NULL );
|
||||||
}
|
}
|
||||||
|
|
||||||
Exit:
|
Exit:
|
||||||
|
|
Loading…
Reference in New Issue