mirror of https://github.com/freetype/freetype
* src/base/ftoutln.c (FT_Outline_Embolden): Strength should be
halved. * src/base/ftsynth.c (FT_GlyphSlot_Embolden): Change the default strength. Don't increase slot->advance.y. * include/freetype/freetype.h (FREETYPE_MINOR): Set to 2. (FREETYPE_PATCH): Set to 0. * builds/unix/configure.ac (version_info): Set to 9:9:3. Currently, we are still binary compatible. * builds/win32/visualc/index.html, builds/win32/visualc/freetype.dsp, builds/win32/visualc/freetype.vcproj: s/219/2110/, s/2.1.9/2.1.10/. * builds/freetype.mk (refdoc), README, Jamfile (RefDoc): s/2.1.9/2.1.10/. * docs/CHANGES, docs/VERSION.DLL: Updated. * ChangeLog: Split off older entries into... * ChangeLog.20, ChangeLog.21: These new files. The next release will be 2.2.0, so don't worry about source code backwards compatibility. * include/freetype/ftimage.h (FT_Outline_MoveToFunc, FT_Outline_LineToFunc, FT_Outline_ConicToFunc, FT_Outline_CubicToFunc, FT_SpanFunc, FT_Raster_RenderFunc), include/freetype/ftrender.h (FT_Glyph_TransformFunc, FT_Renderer_RenderFunc, FT_Renderer_TransformFunc): Decorate parameters with `const' where appropriate. * src/sfnt/ttsbit.c (tt_face_load_sbit_image): Compute vertBearingY to make glyphs centered vertically. * src/truetype/ttgload.c (compute_glyph_metrics): Compute vertBearingY to make glyphs centered vertically. Fix some bugs in vertical metrics: . loader->pp3.y and loader->pp4.y are in 26.6 format, not in font units. . As we use the glyph's cbox to calculate the top bearing now there iss no need to adjust `top'. * src/otvalid/otvcommn.h (OTV_OPTIONAL_TABLE): Use FT_UShort to be in sync with OTV_OPTIONAL_OFFSET. Reported by YAMATO Masatake. * docs/release: Update.
This commit is contained in:
parent
765cb0fa70
commit
49f4d34ed3
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -17,7 +17,7 @@ AC_CONFIG_SRCDIR([ftconfig.in])
|
|||
|
||||
# Don't forget to update docs/VERSION.DLL!
|
||||
|
||||
version_info='9:8:3'
|
||||
version_info='9:9:3'
|
||||
AC_SUBST([version_info])
|
||||
ft_version=`echo $version_info | tr : .`
|
||||
AC_SUBST([ft_version])
|
||||
|
|
|
@ -54,7 +54,7 @@ BSC32=bscmake.exe
|
|||
# ADD BSC32 /nologo
|
||||
LIB32=link.exe -lib
|
||||
# ADD BASE LIB32 /nologo
|
||||
# ADD LIB32 /nologo /out:"..\..\..\objs\freetype2110.lib"
|
||||
# ADD LIB32 /nologo /out:"..\..\..\objs\freetype220.lib"
|
||||
|
||||
!ELSEIF "$(CFG)" == "freetype - Win32 Debug"
|
||||
|
||||
|
@ -78,7 +78,7 @@ BSC32=bscmake.exe
|
|||
# ADD BSC32 /nologo
|
||||
LIB32=link.exe -lib
|
||||
# ADD BASE LIB32 /nologo
|
||||
# ADD LIB32 /nologo /out:"..\..\..\objs\freetype2110_D.lib"
|
||||
# ADD LIB32 /nologo /out:"..\..\..\objs\freetype220_D.lib"
|
||||
|
||||
!ELSEIF "$(CFG)" == "freetype - Win32 Debug Multithreaded"
|
||||
|
||||
|
@ -103,7 +103,7 @@ BSC32=bscmake.exe
|
|||
# ADD BSC32 /nologo
|
||||
LIB32=link.exe -lib
|
||||
# ADD BASE LIB32 /nologo /out:"lib\freetype200b8_D.lib"
|
||||
# ADD LIB32 /nologo /out:"..\..\..\objs\freetype2110MT_D.lib"
|
||||
# ADD LIB32 /nologo /out:"..\..\..\objs\freetype220MT_D.lib"
|
||||
|
||||
!ELSEIF "$(CFG)" == "freetype - Win32 Release Multithreaded"
|
||||
|
||||
|
@ -127,7 +127,7 @@ BSC32=bscmake.exe
|
|||
# ADD BSC32 /nologo
|
||||
LIB32=link.exe -lib
|
||||
# ADD BASE LIB32 /nologo /out:"lib\freetype200b8.lib"
|
||||
# ADD LIB32 /nologo /out:"..\..\..\objs\freetype2110MT.lib"
|
||||
# ADD LIB32 /nologo /out:"..\..\..\objs\freetype220MT.lib"
|
||||
|
||||
!ELSEIF "$(CFG)" == "freetype - Win32 Release Singlethreaded"
|
||||
|
||||
|
@ -152,7 +152,7 @@ BSC32=bscmake.exe
|
|||
# ADD BSC32 /nologo
|
||||
LIB32=link.exe -lib
|
||||
# ADD BASE LIB32 /nologo /out:"..\..\..\objs\freetype206.lib"
|
||||
# ADD LIB32 /out:"..\..\..\objs\freetype2110ST.lib"
|
||||
# ADD LIB32 /out:"..\..\..\objs\freetype220ST.lib"
|
||||
# SUBTRACT LIB32 /nologo
|
||||
|
||||
!ELSEIF "$(CFG)" == "freetype - Win32 Debug Singlethreaded"
|
||||
|
@ -178,7 +178,7 @@ BSC32=bscmake.exe
|
|||
# ADD BSC32 /nologo
|
||||
LIB32=link.exe -lib
|
||||
# ADD BASE LIB32 /nologo /out:"..\..\..\objs\freetype206_D.lib"
|
||||
# ADD LIB32 /nologo /out:"..\..\..\objs\freetype2110ST_D.lib"
|
||||
# ADD LIB32 /nologo /out:"..\..\..\objs\freetype220ST_D.lib"
|
||||
|
||||
!ENDIF
|
||||
|
||||
|
|
|
@ -41,7 +41,7 @@
|
|||
Name="VCCustomBuildTool"/>
|
||||
<Tool
|
||||
Name="VCLibrarianTool"
|
||||
OutputFile="..\..\..\objs\freetype2110.lib"
|
||||
OutputFile="..\..\..\objs\freetype220.lib"
|
||||
SuppressStartupBanner="TRUE"/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"/>
|
||||
|
@ -94,7 +94,7 @@
|
|||
Name="VCCustomBuildTool"/>
|
||||
<Tool
|
||||
Name="VCLibrarianTool"
|
||||
OutputFile="..\..\..\objs\freetype2110MT.lib"
|
||||
OutputFile="..\..\..\objs\freetype220MT.lib"
|
||||
SuppressStartupBanner="TRUE"/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"/>
|
||||
|
@ -147,7 +147,7 @@
|
|||
Name="VCCustomBuildTool"/>
|
||||
<Tool
|
||||
Name="VCLibrarianTool"
|
||||
OutputFile="..\..\..\objs\freetype2110ST.lib"/>
|
||||
OutputFile="..\..\..\objs\freetype220ST.lib"/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"/>
|
||||
<Tool
|
||||
|
@ -197,7 +197,7 @@
|
|||
Name="VCCustomBuildTool"/>
|
||||
<Tool
|
||||
Name="VCLibrarianTool"
|
||||
OutputFile="..\..\..\objs\freetype2110_D.lib"
|
||||
OutputFile="..\..\..\objs\freetype220_D.lib"
|
||||
SuppressStartupBanner="TRUE"/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"/>
|
||||
|
@ -248,7 +248,7 @@
|
|||
Name="VCCustomBuildTool"/>
|
||||
<Tool
|
||||
Name="VCLibrarianTool"
|
||||
OutputFile="..\..\..\objs\freetype2110ST_D.lib"
|
||||
OutputFile="..\..\..\objs\freetype220ST_D.lib"
|
||||
SuppressStartupBanner="TRUE"/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"/>
|
||||
|
@ -300,7 +300,7 @@
|
|||
Name="VCCustomBuildTool"/>
|
||||
<Tool
|
||||
Name="VCLibrarianTool"
|
||||
OutputFile="..\..\..\objs\freetype2110MT_D.lib"
|
||||
OutputFile="..\..\..\objs\freetype220MT_D.lib"
|
||||
SuppressStartupBanner="TRUE"/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"/>
|
||||
|
|
|
@ -12,14 +12,14 @@
|
|||
|
||||
<p>This directory contains project files for Visual C++, named
|
||||
<tt>freetype.dsp</tt>, and Visual Studio, called <tt>freetype.sln</tt>. It
|
||||
will compile the following libraries from the FreeType 2.1.10 sources:</p>
|
||||
will compile the following libraries from the FreeType 2.2.0 sources:</p>
|
||||
|
||||
<ul>
|
||||
<pre>
|
||||
freetype2110.lib - release build; single threaded
|
||||
freetype2110_D.lib - debug build; single threaded
|
||||
freetype2110MT.lib - release build; multi-threaded
|
||||
freetype2110MT_D.lib - debug build; multi-threaded</pre>
|
||||
freetype220.lib - release build; single threaded
|
||||
freetype220_D.lib - debug build; single threaded
|
||||
freetype220MT.lib - release build; multi-threaded
|
||||
freetype220MT_D.lib - debug build; multi-threaded</pre>
|
||||
</ul>
|
||||
|
||||
<p>Be sure to extract the files with the Windows (CR+LF) line endings. ZIP
|
||||
|
|
29
docs/CHANGES
29
docs/CHANGES
|
@ -1,3 +1,32 @@
|
|||
LATEST CHANGES BETWEEN 2.2.0 and 2.1.10
|
||||
|
||||
I. IMPORTANT BUG FIXES
|
||||
|
||||
- Vertical metrics for SFNT fonts were incorrect sometimes.
|
||||
|
||||
II. IMPORTANT CHANGES
|
||||
|
||||
- The following callback function types have changed slightly (by
|
||||
adding the `const' keyword where appropriate):
|
||||
|
||||
FT_Outline_MoveToFunc
|
||||
FT_Outline_LineToFunc
|
||||
FT_Outline_ConicToFunc
|
||||
FT_Outline_CubicToFunc
|
||||
FT_SpanFunc
|
||||
FT_Raster_RenderFunc
|
||||
|
||||
FT_Glyph_TransformFunc
|
||||
FT_Renderer_RenderFunc
|
||||
FT_Renderer_TransformFunc
|
||||
|
||||
Note that this doesn't affect binary backwards compatibility.
|
||||
|
||||
III. MISCELLANEOUS
|
||||
|
||||
|
||||
======================================================================
|
||||
|
||||
LATEST CHANGES BETWEEN 2.1.10 and 2.1.9
|
||||
|
||||
I. IMPORTANT BUG FIXES
|
||||
|
|
|
@ -52,6 +52,7 @@ systems, but not all of them:
|
|||
|
||||
release libtool so
|
||||
-------------------------------
|
||||
2.2.0 9.9.3 6.3.9
|
||||
2.1.10 9.8.3 6.3.8
|
||||
2.1.9 9.7.3 6.3.7
|
||||
2.1.8 9.6.3 6.3.6
|
||||
|
@ -109,7 +110,7 @@ other release numbers.
|
|||
|
||||
------------------------------------------------------------------------
|
||||
|
||||
Copyright 2002, 2003, 2004 by
|
||||
Copyright 2002, 2003, 2004, 2005 by
|
||||
David Turner, Robert Wilhelm, and Werner Lemberg.
|
||||
|
||||
This file is part of the FreeType project, and may only be used,
|
||||
|
|
38
docs/release
38
docs/release
|
@ -6,8 +6,8 @@ How to prepare a new release
|
|||
|
||||
. builds/unix/configure.ac (version_info): Update according to the libtool
|
||||
rules, then regenerate the configure script with the top-level
|
||||
`autogen.sh'. After that, update `config.guess' and `config.sub' to
|
||||
the most recent versions (from the `config' CVS repository).
|
||||
`autogen.sh'. After that, update `config.guess' and `config.sub' to the
|
||||
most recent versions (from the `config' CVS repository).
|
||||
|
||||
. builds/freetype.mk (refdoc): Update the `--title' option.
|
||||
|
||||
|
@ -19,24 +19,32 @@ How to prepare a new release
|
|||
|
||||
. ChangeLog: Announce new release.
|
||||
|
||||
|
||||
********* The items below should be done but are out-of-date due *********
|
||||
********* to the move of the FreeType CVS and web pages. *********
|
||||
|
||||
|
||||
. Call `make refdoc' to update HTML reference. Copy it to
|
||||
freetype2/docs/reference in the `www' CVS module and update the CVS.
|
||||
Then call `update-www' in ~/cvs/scripts on www.freetype.org to
|
||||
update and distribute everything to sourceforge.
|
||||
freetype.freedesktop.org:/srv/freetype.freedesktop.org/\
|
||||
freetype2/docs/reference.
|
||||
|
||||
. Tag the CVS (freetype, ft2demos, www/freetype2/docs).
|
||||
TODO: Create FreeType home page CVS on savannah.nongnu.org and update it
|
||||
accordingly.
|
||||
|
||||
. Update `make-release' and `make-current' in ~/cvs/scripts/ on
|
||||
www.freetype.org, then call them.
|
||||
Write script to automatically do this.
|
||||
|
||||
. Create an md5 checksum file (with md5sum).
|
||||
Mirror FreeType's savannah home page everywhere.
|
||||
|
||||
. Announce new release on announce@freetype.org and to relevant newsgroups.
|
||||
. Tag the CVS (freetype2, ft2demos).
|
||||
|
||||
TODO: Tag the home page CVS on savannah.nongnu.org.
|
||||
|
||||
. Create packages for freetype2, ft2demos, and documentation.
|
||||
|
||||
TODO: Write scripts and/or provide make targets to do that.
|
||||
|
||||
. Create signature files with `gpg -b' and upload files to savannah and
|
||||
sourceforge.
|
||||
|
||||
TODO: Write script to do this. Cf. automake's `gnupload' script.
|
||||
|
||||
. Announce new release on freetype-announce@nongnu.org and to relevant
|
||||
newsgroups.
|
||||
|
||||
------------------------------------------------------------------------
|
||||
|
||||
|
|
|
@ -43,8 +43,8 @@
|
|||
/* drivers. It starts at 2.0. */
|
||||
/* */
|
||||
#define FREETYPE_MAJOR 2
|
||||
#define FREETYPE_MINOR 1
|
||||
#define FREETYPE_PATCH 10
|
||||
#define FREETYPE_MINOR 2
|
||||
#define FREETYPE_PATCH 0
|
||||
|
||||
|
||||
#include <ft2build.h>
|
||||
|
|
|
@ -486,8 +486,8 @@ FT_BEGIN_HEADER
|
|||
/* Error code. 0 means success. */
|
||||
/* */
|
||||
typedef int
|
||||
(*FT_Outline_MoveToFunc)( FT_Vector* to,
|
||||
void* user );
|
||||
(*FT_Outline_MoveToFunc)( const FT_Vector* to,
|
||||
void* user );
|
||||
|
||||
#define FT_Outline_MoveTo_Func FT_Outline_MoveToFunc
|
||||
|
||||
|
@ -512,8 +512,8 @@ FT_BEGIN_HEADER
|
|||
/* Error code. 0 means success. */
|
||||
/* */
|
||||
typedef int
|
||||
(*FT_Outline_LineToFunc)( FT_Vector* to,
|
||||
void* user );
|
||||
(*FT_Outline_LineToFunc)( const FT_Vector* to,
|
||||
void* user );
|
||||
|
||||
#define FT_Outline_LineTo_Func FT_Outline_LineToFunc
|
||||
|
||||
|
@ -542,9 +542,9 @@ FT_BEGIN_HEADER
|
|||
/* Error code. 0 means success. */
|
||||
/* */
|
||||
typedef int
|
||||
(*FT_Outline_ConicToFunc)( FT_Vector* control,
|
||||
FT_Vector* to,
|
||||
void* user );
|
||||
(*FT_Outline_ConicToFunc)( const FT_Vector* control,
|
||||
const FT_Vector* to,
|
||||
void* user );
|
||||
|
||||
#define FT_Outline_ConicTo_Func FT_Outline_ConicToFunc
|
||||
|
||||
|
@ -573,10 +573,10 @@ FT_BEGIN_HEADER
|
|||
/* Error code. 0 means success. */
|
||||
/* */
|
||||
typedef int
|
||||
(*FT_Outline_CubicToFunc)( FT_Vector* control1,
|
||||
FT_Vector* control2,
|
||||
FT_Vector* to,
|
||||
void* user );
|
||||
(*FT_Outline_CubicToFunc)( const FT_Vector* control1,
|
||||
const FT_Vector* control2,
|
||||
const FT_Vector* to,
|
||||
void* user );
|
||||
|
||||
#define FT_Outline_CubicTo_Func FT_Outline_CubicToFunc
|
||||
|
||||
|
@ -861,10 +861,10 @@ FT_BEGIN_HEADER
|
|||
/* only for those scanlines that do have `gray' pixels on them. */
|
||||
/* */
|
||||
typedef void
|
||||
(*FT_SpanFunc)( int y,
|
||||
int count,
|
||||
FT_Span* spans,
|
||||
void* user );
|
||||
(*FT_SpanFunc)( int y,
|
||||
int count,
|
||||
const FT_Span* spans,
|
||||
void* user );
|
||||
|
||||
#define FT_Raster_Span_Func FT_SpanFunc
|
||||
|
||||
|
@ -1183,8 +1183,8 @@ FT_BEGIN_HEADER
|
|||
/* composition). */
|
||||
/* */
|
||||
typedef int
|
||||
(*FT_Raster_RenderFunc)( FT_Raster raster,
|
||||
FT_Raster_Params* params );
|
||||
(*FT_Raster_RenderFunc)( FT_Raster raster,
|
||||
const FT_Raster_Params* params );
|
||||
|
||||
#define FT_Raster_Render_Func FT_Raster_RenderFunc
|
||||
|
||||
|
|
|
@ -46,9 +46,9 @@ FT_BEGIN_HEADER
|
|||
(*FT_Glyph_DoneFunc)( FT_Glyph glyph );
|
||||
|
||||
typedef void
|
||||
(*FT_Glyph_TransformFunc)( FT_Glyph glyph,
|
||||
FT_Matrix* matrix,
|
||||
FT_Vector* delta );
|
||||
(*FT_Glyph_TransformFunc)( FT_Glyph glyph,
|
||||
const FT_Matrix* matrix,
|
||||
const FT_Vector* delta );
|
||||
|
||||
typedef void
|
||||
(*FT_Glyph_GetBBoxFunc)( FT_Glyph glyph,
|
||||
|
@ -85,16 +85,16 @@ FT_BEGIN_HEADER
|
|||
|
||||
|
||||
typedef FT_Error
|
||||
(*FT_Renderer_RenderFunc)( FT_Renderer renderer,
|
||||
FT_GlyphSlot slot,
|
||||
FT_UInt mode,
|
||||
FT_Vector* origin );
|
||||
(*FT_Renderer_RenderFunc)( FT_Renderer renderer,
|
||||
FT_GlyphSlot slot,
|
||||
FT_UInt mode,
|
||||
const FT_Vector* origin );
|
||||
|
||||
typedef FT_Error
|
||||
(*FT_Renderer_TransformFunc)( FT_Renderer renderer,
|
||||
FT_GlyphSlot slot,
|
||||
FT_Matrix* matrix,
|
||||
FT_Vector* delta );
|
||||
(*FT_Renderer_TransformFunc)( FT_Renderer renderer,
|
||||
FT_GlyphSlot slot,
|
||||
const FT_Matrix* matrix,
|
||||
const FT_Vector* delta );
|
||||
|
||||
|
||||
typedef void
|
||||
|
|
|
@ -683,6 +683,7 @@
|
|||
if ( !outline )
|
||||
return FT_Err_Invalid_Argument;
|
||||
|
||||
strength /= 2;
|
||||
if ( strength == 0 )
|
||||
return FT_Err_Ok;
|
||||
|
||||
|
|
|
@ -81,7 +81,7 @@
|
|||
|
||||
/* some reasonable strength */
|
||||
xstr = FT_MulFix( face->units_per_EM,
|
||||
face->size->metrics.y_scale ) / 42;
|
||||
face->size->metrics.y_scale ) / 24;
|
||||
ystr = xstr;
|
||||
|
||||
if ( slot->format == FT_GLYPH_FORMAT_OUTLINE )
|
||||
|
@ -122,8 +122,8 @@
|
|||
/* modify the metrics accordingly */
|
||||
if ( !error )
|
||||
{
|
||||
/* assume the layout is horizontal */
|
||||
slot->advance.x += xstr;
|
||||
slot->advance.y += ystr;
|
||||
|
||||
slot->metrics.width += xstr;
|
||||
slot->metrics.height += ystr;
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
/* */
|
||||
/* OpenType common tables validation (specification). */
|
||||
/* */
|
||||
/* Copyright 2004 by */
|
||||
/* Copyright 2004, 2005 by */
|
||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
|
@ -70,8 +70,8 @@ FT_BEGIN_HEADER
|
|||
#define FT_INVALID_( _prefix, _error ) \
|
||||
ft_validator_error( valid->root, _prefix ## _error )
|
||||
|
||||
#define OTV_OPTIONAL_TABLE( _table ) FT_UInt _table; \
|
||||
FT_Bytes _table ## _p
|
||||
#define OTV_OPTIONAL_TABLE( _table ) FT_UShort _table; \
|
||||
FT_Bytes _table ## _p
|
||||
|
||||
#define OTV_OPTIONAL_OFFSET( _offset ) \
|
||||
FT_BEGIN_STMNT \
|
||||
|
|
|
@ -1501,7 +1501,7 @@
|
|||
/* some heuristic values */
|
||||
|
||||
metrics->vertBearingX = (FT_Char)(-metrics->width / 2 );
|
||||
metrics->vertBearingY = (FT_Char)( advance / 10 );
|
||||
metrics->vertBearingY = (FT_Char)( ( advance - metrics->height ) / 2 );
|
||||
metrics->vertAdvance = (FT_Char)( advance * 12 / 10 );
|
||||
}
|
||||
|
||||
|
|
|
@ -1765,41 +1765,43 @@
|
|||
if ( face->vertical_info &&
|
||||
face->vertical.number_Of_VMetrics > 0 )
|
||||
{
|
||||
advance_height = (FT_UShort)( loader->pp4.y - loader->pp3.y );
|
||||
top_bearing = (FT_Short)( loader->pp3.y - bbox.yMax );
|
||||
top_bearing = (FT_Short)FT_DivFix( loader->pp3.y - bbox.yMax,
|
||||
y_scale );
|
||||
|
||||
if ( loader->pp3.y <= loader->pp4.y )
|
||||
advance_height = 0;
|
||||
else
|
||||
advance_height = (FT_UShort)FT_DivFix( loader->pp3.y - loader->pp4.y,
|
||||
y_scale );
|
||||
}
|
||||
else
|
||||
{
|
||||
/* Make up the distances from the horizontal header. */
|
||||
FT_Short max_height, height;
|
||||
|
||||
|
||||
/* XXX Compute top side bearing and advance height in */
|
||||
/* Get_VMetrics instead of here. */
|
||||
|
||||
/* NOTE: The OS/2 values are the only `portable' ones, */
|
||||
/* which is why we use them, if there is an OS/2 */
|
||||
/* table in the font. Otherwise, we use the */
|
||||
/* values defined in the horizontal header. */
|
||||
/* */
|
||||
/* NOTE2: The sTypoDescender is negative, which is why */
|
||||
/* we compute the baseline-to-baseline distance */
|
||||
/* here with: */
|
||||
/* ascender - descender + linegap */
|
||||
/* */
|
||||
/* NOTE3: This is different from what MS's rasterizer */
|
||||
/* appears to do when getting default values */
|
||||
/* for the vertical phantom points. We leave */
|
||||
/* the old code untouched, but relying on */
|
||||
/* phantom points alone might be reasonable */
|
||||
/* (i.e., removing the `if' above). */
|
||||
|
||||
height = FT_DivFix( bbox.yMax - bbox.yMin, y_scale );
|
||||
if ( face->os2.version != 0xFFFFU )
|
||||
{
|
||||
top_bearing = (FT_Short)( face->os2.sTypoLineGap / 2 );
|
||||
advance_height = (FT_UShort)( face->os2.sTypoAscender -
|
||||
face->os2.sTypoDescender +
|
||||
face->os2.sTypoLineGap );
|
||||
/* sTypoDescender is negative */
|
||||
max_height = face->os2.sTypoAscender - face->os2.sTypoDescender;
|
||||
|
||||
top_bearing = (FT_Short)( ( max_height - height ) / 2 );
|
||||
advance_height = (FT_UShort)( max_height + face->os2.sTypoLineGap );
|
||||
}
|
||||
else
|
||||
{
|
||||
top_bearing = (FT_Short)( face->horizontal.Line_Gap / 2 );
|
||||
advance_height = (FT_UShort)( face->horizontal.Ascender +
|
||||
face->horizontal.Descender +
|
||||
max_height = face->horizontal.Ascender + face->horizontal.Descender;
|
||||
|
||||
top_bearing = (FT_Short)( ( max_height - height ) / 2 );
|
||||
advance_height = (FT_UShort)( max_height +
|
||||
face->horizontal.Line_Gap );
|
||||
}
|
||||
}
|
||||
|
@ -1817,7 +1819,7 @@
|
|||
|
||||
metrics.bearing_x = 0;
|
||||
metrics.bearing_y = top_bearing;
|
||||
metrics.advance = advance_height;
|
||||
metrics.advance = advance_height;
|
||||
error =
|
||||
face->root.internal->incremental_interface->funcs->get_glyph_metrics(
|
||||
face->root.internal->incremental_interface->object,
|
||||
|
@ -1834,20 +1836,15 @@
|
|||
|
||||
#endif /* FT_CONFIG_OPTION_INCREMENTAL */
|
||||
|
||||
/* We must adjust the top_bearing value from the bounding box given */
|
||||
/* in the glyph header to the bounding box calculated with */
|
||||
/* FT_Get_Outline_CBox(). */
|
||||
|
||||
/* scale the metrics */
|
||||
if ( !( loader->load_flags & FT_LOAD_NO_SCALE ) )
|
||||
{
|
||||
top = FT_MulFix( top_bearing + loader->bbox.yMax, y_scale )
|
||||
- bbox.yMax;
|
||||
top = FT_MulFix( top_bearing, y_scale );
|
||||
advance = FT_MulFix( advance_height, y_scale );
|
||||
}
|
||||
else
|
||||
{
|
||||
top = top_bearing + loader->bbox.yMax - bbox.yMax;
|
||||
top = top_bearing;
|
||||
advance = advance_height;
|
||||
}
|
||||
|
||||
|
@ -1864,7 +1861,8 @@
|
|||
if ( IS_HINTED( loader->load_flags ) )
|
||||
{
|
||||
left = FT_PIX_FLOOR( left );
|
||||
top = FT_PIX_CEIL( top );
|
||||
/* top should be floor'ed */
|
||||
top = FT_PIX_FLOOR( top );
|
||||
advance = FT_PIX_ROUND( advance );
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue