Commits (11)
......@@ -163,7 +163,7 @@ project(freetype C)
set(VERSION_MAJOR "2")
set(VERSION_MINOR "11")
set(VERSION_PATCH "0")
set(VERSION_PATCH "1")
# Generate LIBRARY_VERSION and LIBRARY_SOVERSION.
set(LIBTOOL_REGEX "version_info='([0-9]+):([0-9]+):([0-9]+)'")
......
FreeType 2.11.0
FreeType 2.11.1
===============
Homepage: https://www.freetype.org
......@@ -30,9 +30,9 @@ sites. Go to
and download one of the following files.
freetype-doc-2.11.0.tar.xz
freetype-doc-2.11.0.tar.gz
ftdoc2110.zip
freetype-doc-2.11.1.tar.xz
freetype-doc-2.11.1.tar.gz
ftdoc2111.zip
To view the documentation online, go to
......
......@@ -226,6 +226,7 @@ patch := $(firstword $(patch))
# else
version := $(major).$(minor).$(patch)
winversion := $(major)$(minor)$(patch)
version_tag := VER-$(major)-$(minor)-$(patch)
# endif
......@@ -282,6 +283,10 @@ dist:
CONFIG_GUESS = ~/git/config/config.guess
CONFIG_SUB = ~/git/config/config.sub
# We also use this repository to access the gnulib script that converts git
# commit messages to a ChangeLog file.
CHANGELOG_SCRIPT = ~/git/config/gitlog-to-changelog
# Don't say `make do-dist'. Always use `make dist' instead.
#
......@@ -299,6 +304,15 @@ do-dist: distclean refdoc
cp $(CONFIG_GUESS) builds/unix
cp $(CONFIG_SUB) builds/unix
@# Generate `ChangeLog' file with commits since previous release.
$(CHANGELOG_SCRIPT) \
--format='%B%n' \
--no-cluster \
-- `git describe --tags \
--abbrev=0 \
$(version_tag)^`..$(version_tag) \
> ChangeLog
@# Remove intermediate files created by the `refdoc' target.
rm -rf docs/markdown
rm -f docs/mkdocs.yml
......
......@@ -17,7 +17,7 @@ AC_CONFIG_SRCDIR([ftconfig.h.in])
# Don't forget to update `docs/VERSIONS.TXT'!
version_info='24:0:18'
version_info='24:1:18'
AC_SUBST([version_info])
ft_version=`echo $version_info | tr : .`
AC_SUBST([ft_version])
......
......@@ -21,7 +21,7 @@ the following targets:
<li>PPC/SP WM6 (Windows Mobile 6)</li>
</ul>
It compiles the following libraries from the FreeType 2.11.0 sources:</p>
It compiles the following libraries from the FreeType 2.11.1 sources:</p>
<ul>
<pre>
......
......@@ -21,7 +21,7 @@ the following targets:
<li>PPC/SP WM6 (Windows Mobile 6)</li>
</ul>
It compiles the following libraries from the FreeType 2.11.0 sources:</p>
It compiles the following libraries from the FreeType 2.11.1 sources:</p>
<ul>
<pre>
......
......@@ -93,28 +93,60 @@
#ifdef FT_DEBUG_LEVEL_ERROR
#include <stdarg.h>
#include <stdlib.h>
#include <string.h>
#define WIN32_LEAN_AND_MEAN
#include <windows.h>
#ifdef _WIN32_WCE
FT_LOACAL_DEF( void )
OutputDebugStringA( LPCSTR lpOutputString )
{
int len;
LPWSTR lpOutputStringW;
/* allocate memory space for converted string */
len = MultiByteToWideChar( CP_ACP, MB_ERR_INVALID_CHARS,
lpOutputString, -1, NULL, 0 );
lpOutputStringW = (LPWSTR)_alloca( len * sizeof ( WCHAR ) );
if ( !len || !lpOutputStringW )
return;
/* now it is safe to do the translation */
MultiByteToWideChar( CP_ACP, MB_ERR_INVALID_CHARS,
lpOutputString, -1, lpOutputStringW, len );
OutputDebugStringW( lpOutputStringW );
}
#endif /* _WIN32_WCE */
/* documentation is in ftdebug.h */
FT_BASE_DEF( void )
FT_Message( const char* fmt,
... )
{
static char buf[8192];
va_list ap;
va_list ap;
va_start( ap, fmt );
vfprintf( stderr, fmt, ap );
/* send the string to the debugger as well */
vsprintf( buf, fmt, ap );
OutputDebugStringA( buf );
#if ( defined( _WIN32_WINNT ) && _WIN32_WINNT >= 0x0400 ) || \
( defined( _WIN32_WCE ) && _WIN32_WCE >= 0x0600 )
if ( IsDebuggerPresent() )
{
static char buf[1024];
vsnprintf( buf, sizeof buf, fmt, ap );
OutputDebugStringA( buf );
}
#endif
va_end( ap );
}
......@@ -125,13 +157,22 @@
FT_Panic( const char* fmt,
... )
{
static char buf[8192];
va_list ap;
va_list ap;
va_start( ap, fmt );
vsprintf( buf, fmt, ap );
OutputDebugStringA( buf );
vfprintf( stderr, fmt, ap );
#if ( defined( _WIN32_WINNT ) && _WIN32_WINNT >= 0x0400 ) || \
( defined( _WIN32_WCE ) && _WIN32_WCE >= 0x0600 )
if ( IsDebuggerPresent() )
{
static char buf[1024];
vsnprintf( buf, sizeof buf, fmt, ap );
OutputDebugStringA( buf );
}
#endif
va_end( ap );
exit( EXIT_FAILURE );
......
......@@ -233,6 +233,10 @@
dwFlagsAndAttributes, hTemplateFile );
}
#endif
#if defined( _WIN32_WCE ) || defined ( _WIN32_WINDOWS ) || \
!defined( _WIN32_WINNT ) || _WIN32_WINNT <= 0x0400
FT_LOCAL_DEF( BOOL )
GetFileSizeEx( HANDLE hFile,
......@@ -248,7 +252,7 @@
return TRUE;
}
#endif /* _WIN32_WCE */
#endif
/* documentation is in ftobjs.h */
......
......@@ -12,7 +12,7 @@
<p>This directory contains solution and project files for
Visual&nbsp;C++&nbsp;2010 or newer, named <tt>freetype.sln</tt>,
and <tt>freetype.vcxproj</tt>. It compiles the following libraries
from the FreeType 2.11.0 sources:</p>
from the FreeType 2.11.1 sources:</p>
<ul>
<li>freetype.dll using 'Release' or 'Debug' configurations</li>
......
......@@ -434,6 +434,10 @@
/>
</FileConfiguration>
</File>
<File
RelativePath="..\..\..\src\sdf\sdf.c"
>
</File>
<File
RelativePath="..\..\..\src\smooth\smooth.c"
>
......
......@@ -12,7 +12,7 @@
<p>This directory contains project files <tt>freetype.dsp</tt> for
Visual C++ 6.0, and <tt>freetype.vcproj</tt> for Visual C++ 2002
through 2008, which you might need to upgrade automatically.
It compiles the following libraries from the FreeType 2.11.0 sources:</p>
It compiles the following libraries from the FreeType 2.11.1 sources:</p>
<ul>
<li>freetype.dll using 'Release' or 'Debug' configurations</li>
......
......@@ -21,7 +21,7 @@ the following targets:
<li>PPC/SP WM6 (Windows Mobile 6)</li>
</ul>
It compiles the following libraries from the FreeType 2.11.0 sources:</p>
It compiles the following libraries from the FreeType 2.11.1 sources:</p>
<ul>
<pre>
......
......@@ -60,6 +60,7 @@ found on _most_ systems, but not all of them:
release libtool so
-------------------------------
2.11.1 24.1.18 6.18.1
2.11.0 24.0.18 6.18.0
2.10.4 23.4.17 6.17.4
2.10.3 23.3.17 6.17.3
......
.TH FREETYPE-CONFIG 1 "July 2021" "FreeType 2.11.0"
.TH FREETYPE-CONFIG 1 "December 2021" "FreeType 2.11.1"
.
.
.SH NAME
......
......@@ -15,9 +15,6 @@ How to prepare a new release
. docs/VERSIONS.TXT: Document changed `version_info`.
. ChangeLog: Announce new release (both in the 'freetype' and
'freetype-demos' repositories).
. Clone the git archive to another directory with
git clone -l -s . ../freetype.test
......@@ -175,15 +172,9 @@ How to prepare a new release
`freetype-XXX.tar.xz` files as the default files to download for
'Windows' and 'Others', respectively.
. Copy the reference files (generated by `make dist`) to
<freetype-web git repository>/freetype2/docs/reference
. Update the 'freetype-web' repository. `git push` then automatically
triggers an update of the public web pages within ten minutes due to
a cron script (on 'wl@freedesktop.org') that rsyncs with
freedesktop.org://srv/freetype.freedesktop.org/www
. Trigger the automatic generation of the online API reference by
updating the `FT_VERSION` variable in file `.gitlab-ci.yml` of the
'freetype-web' repository.
. Announce new release on 'freetype-announce@nongnu.org' and to
relevant newsgroups.
......
......@@ -4740,7 +4740,7 @@ FT_BEGIN_HEADER
*/
#define FREETYPE_MAJOR 2
#define FREETYPE_MINOR 11
#define FREETYPE_PATCH 0
#define FREETYPE_PATCH 1
/**************************************************************************
......
......@@ -1390,8 +1390,8 @@ FT_BEGIN_HEADER
* hdmx_record_size ::
* The size of a single hdmx record.
*
* hdmx_record_sizes ::
* An array holding the ppem sizes available in the 'hdmx' table.
* hdmx_records ::
* A array of pointers to the 'hdmx' table records sorted by ppem.
*
* sbit_table ::
* A pointer to the font's embedded bitmap location table.
......@@ -1605,7 +1605,7 @@ FT_BEGIN_HEADER
FT_ULong hdmx_table_size;
FT_UInt hdmx_record_count;
FT_ULong hdmx_record_size;
FT_Byte* hdmx_record_sizes;
FT_Byte** hdmx_records;
FT_Byte* sbit_table;
FT_ULong sbit_table_size;
......@@ -1769,6 +1769,9 @@ FT_BEGIN_HEADER
/* since version 2.6.2 */
FT_ListRec composites;
/* since version 2.11.2 */
FT_Byte* widthp;
} TT_LoaderRec;
......
......@@ -3230,8 +3230,8 @@
scaled_w = ( scaled_w + 32 ) >> 6;
scaled_h = ( scaled_h + 32 ) >> 6;
if ( scaled_w > FT_USHORT_MAX ||
scaled_h > FT_USHORT_MAX )
if ( scaled_w > (FT_Long)FT_USHORT_MAX ||
scaled_h > (FT_Long)FT_USHORT_MAX )
{
FT_ERROR(( "FT_Request_Metrics: Resulting ppem size too large\n" ));
error = FT_ERR( Invalid_Pixel_Size );
......
......@@ -18,8 +18,8 @@
#include<windows.h>
#define FT_VERSION 2,11,0,0
#define FT_VERSION_STR "2.11.0"
#define FT_VERSION 2,11,1,0
#define FT_VERSION_STR "2.11.1"
VS_VERSION_INFO VERSIONINFO
FILEVERSION FT_VERSION
......
......@@ -2230,10 +2230,6 @@
FT_UInt glyph_index )
{
TT_Face face = loader->face;
#if defined TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY || \
defined TT_SUPPORT_SUBPIXEL_HINTING_MINIMAL
TT_Driver driver = (TT_Driver)FT_FACE_DRIVER( face );
#endif
FT_BBox bbox;
FT_Fixed y_scale;
......@@ -2256,53 +2252,10 @@
glyph->metrics.horiBearingX = bbox.xMin;
glyph->metrics.horiBearingY = bbox.yMax;
glyph->metrics.horiAdvance = SUB_LONG(loader->pp2.x, loader->pp1.x);
/* Adjust advance width to the value contained in the hdmx table */
/* unless FT_LOAD_COMPUTE_METRICS is set or backward compatibility */
/* mode of the v40 interpreter is active. See `ttinterp.h' for */
/* details on backward compatibility mode. */
if (
#ifdef TT_SUPPORT_SUBPIXEL_HINTING_MINIMAL
!( driver->interpreter_version == TT_INTERPRETER_VERSION_40 &&
( loader->exec && loader->exec->backward_compatibility ) ) &&
#endif
!face->postscript.isFixedPitch &&
IS_HINTED( loader->load_flags ) &&
!( loader->load_flags & FT_LOAD_COMPUTE_METRICS ) )
{
FT_Byte* widthp;
widthp = tt_face_get_device_metrics( face,
size->metrics->x_ppem,
glyph_index );
#ifdef TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY
if ( driver->interpreter_version == TT_INTERPRETER_VERSION_38 )
{
FT_Bool ignore_x_mode;
ignore_x_mode = FT_BOOL( FT_LOAD_TARGET_MODE( loader->load_flags ) !=
FT_RENDER_MODE_MONO );
if ( widthp &&
( ( ignore_x_mode && loader->exec->compatible_widths ) ||
!ignore_x_mode ||
SPH_OPTION_BITMAP_WIDTHS ) )
glyph->metrics.horiAdvance = *widthp * 64;
}
else
#endif /* TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY */
{
if ( widthp )
glyph->metrics.horiAdvance = *widthp * 64;
}
}
if ( loader->widthp )
glyph->metrics.horiAdvance = loader->widthp[glyph_index] * 64;
else
glyph->metrics.horiAdvance = SUB_LONG(loader->pp2.x, loader->pp1.x);
/* set glyph dimensions */
glyph->metrics.width = SUB_LONG( bbox.xMax, bbox.xMin );
......@@ -2736,11 +2689,64 @@
if ( driver->interpreter_version == TT_INTERPRETER_VERSION_38 &&
exec->GS.instruct_control & 4 )
exec->ignore_x_mode = 0;
#endif
exec->iup_called = FALSE;
#endif /* TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY */
#ifdef TT_SUPPORT_SUBPIXEL_HINTING_MINIMAL
/*
* Toggle backward compatibility according to what font wants, except
* when
*
* 1) we have a `tricky' font that heavily relies on the interpreter to
* render glyphs correctly, for example DFKai-SB, or
* 2) FT_RENDER_MODE_MONO (i.e, monochome rendering) is requested.
*
* In those cases, backward compatibility needs to be turned off to get
* correct rendering. The rendering is then completely up to the
* font's programming.
*
*/
if ( driver->interpreter_version == TT_INTERPRETER_VERSION_38 &&
subpixel_hinting_lean &&
!FT_IS_TRICKY( glyph->face ) )
exec->backward_compatibility = !( exec->GS.instruct_control & 4 );
else
exec->backward_compatibility = FALSE;
exec->iupx_called = FALSE;
exec->iupy_called = FALSE;
#endif /* TT_SUPPORT_SUBPIXEL_HINTING_MINIMAL */
exec->pedantic_hinting = FT_BOOL( load_flags & FT_LOAD_PEDANTIC );
loader->exec = exec;
loader->instructions = exec->glyphIns;
/* Use the hdmx table if any unless FT_LOAD_COMPUTE_METRICS */
/* is set or backward compatibility mode of the v38 or v40 */
/* interpreters is active. See `ttinterp.h' for details on */
/* backward compatibility mode. */
if ( IS_HINTED( loader->load_flags ) &&
!( loader->load_flags & FT_LOAD_COMPUTE_METRICS ) &&
#ifdef TT_SUPPORT_SUBPIXEL_HINTING_MINIMAL
!( driver->interpreter_version == TT_INTERPRETER_VERSION_40 &&
exec->backward_compatibility ) &&
#endif
#ifdef TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY
!( driver->interpreter_version == TT_INTERPRETER_VERSION_38 &&
!SPH_OPTION_BITMAP_WIDTHS &&
FT_LOAD_TARGET_MODE( loader->load_flags ) !=
FT_RENDER_MODE_MONO &&
exec->compatible_widths ) &&
#endif
!face->postscript.isFixedPitch )
{
loader->widthp = tt_face_get_device_metrics( face,
size->metrics->x_ppem,
0 );
}
else
loader->widthp = NULL;
}
#endif /* TT_USE_BYTECODE_INTERPRETER */
......@@ -2939,6 +2945,13 @@
if ( error )
goto Exit;
/* done if we are only interested in the `hdmx` advance */
if ( load_flags & FT_LOAD_ADVANCE_ONLY && loader.widthp )
{
glyph->metrics.horiAdvance = loader.widthp[glyph_index] * 64;
goto Done;
}
glyph->format = FT_GLYPH_FORMAT_OUTLINE;
glyph->num_subglyphs = 0;
glyph->outline.flags = 0;
......@@ -3017,6 +3030,7 @@
glyph->outline.n_points,
glyph->outline.flags ));
Done:
tt_loader_done( &loader );
Exit:
......