* 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
2613
ChangeLog.20
Normal file
2613
ChangeLog.20
Normal file
File diff suppressed because it is too large
Load Diff
9439
ChangeLog.21
Normal file
9439
ChangeLog.21
Normal file
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
Block a user