forked from organicmaps/organicmaps
Updated freetype to 2.4.7
This commit is contained in:
parent
e35cbef616
commit
b3b588ffb4
84 changed files with 4184 additions and 3483 deletions
|
@ -1,3 +1,232 @@
|
|||
2011-10-18 Werner Lemberg <wl@gnu.org>
|
||||
|
||||
* Version 2.4.7 released.
|
||||
=========================
|
||||
|
||||
|
||||
Tag sources with `VER-2-4-7'.
|
||||
|
||||
* docs/CHANGES: Updated.
|
||||
|
||||
* docs/VERSION.DLL: Update documentation and bump version number to
|
||||
2.4.7.
|
||||
|
||||
* README, Jamfile (RefDoc),
|
||||
builds/win32/vc2005/freetype.vcproj, builds/win32/vc2005/index.html,
|
||||
builds/win32/vc2008/freetype.vcproj, builds/win32/vc2008/index.html,
|
||||
builds/win32/vc2010/freetype.vcxproj, builds/win32/vc2010/index.html,
|
||||
builds/win32/visualc/freetype.dsp,
|
||||
builds/win32/visualc/freetype.vcproj,
|
||||
builds/win32/visualc/index.html, builds/win32/visualce/freetype.dsp,
|
||||
builds/win32/visualce/freetype.vcproj,
|
||||
builds/win32/visualce/index.html,
|
||||
builds/wince/vc2005-ce/freetype.vcproj,
|
||||
builds/wince/vc2005-ce/index.html,
|
||||
builds/wince/vc2008-ce/freetype.vcproj,
|
||||
builds/wince/vc2008-ce/index.html: s/2.4.6/2.4.7/, s/246/247/.
|
||||
|
||||
* include/freetype/freetype.h (FREETYPE_PATCH): Set to 6.
|
||||
|
||||
* builds/unix/configure.raw (version_info): Set to 13:2:7.
|
||||
|
||||
2011-10-15 Kal Conley <kcconley@gmail.com>
|
||||
|
||||
Fix handling of transformations if no renderer is present.
|
||||
|
||||
* src/base/ftobjs.c (FT_Load_Glyph): Thinko.
|
||||
|
||||
2011-10-15 Kal Conley <kcconley@gmail.com>
|
||||
|
||||
Fix conditions for autohinting.
|
||||
|
||||
* src/base/ftobjs.c (FT_Load_Glyph): Handle
|
||||
FT_LOAD_IGNORE_TRANSFORM.
|
||||
|
||||
2011-10-07 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
|
||||
|
||||
[gxvalid] Fix a bug to detect too large offset in morx table.
|
||||
|
||||
* src/gxvalid/gxvmorx2.c
|
||||
(gxv_morx_subtable_type2_ligActionIndex_validate): Fix a bug
|
||||
that too large positive offset cannot be detected.
|
||||
|
||||
2011-10-01 Braden Thomas <bthomas@apple.com>
|
||||
|
||||
Handle some border cases.
|
||||
|
||||
* include/freetype/config/ftstdlib.h (FT_USHORT_MAX): New macro.
|
||||
|
||||
* src/base/ftbitmap.c (FT_Bitmap_Convert): Protect against invalid
|
||||
value of `target->rows'.
|
||||
|
||||
* src/psaux/t1decode.c (t1_decoder_parse_charstrings): Add check for
|
||||
flex start.
|
||||
|
||||
* src/raster/ftrend1.c (ft_raster1_render): Check `width' and
|
||||
`height'.
|
||||
|
||||
* src/truetype/ttgxvar.c (TT_Vary_Get_Glyph_Deltas): Protect against
|
||||
invalid values in `localpoints' array.
|
||||
|
||||
2011-10-01 Werner Lemberg <wl@gnu.org>
|
||||
|
||||
[psnames] Handle zapfdingbats.
|
||||
Problem reported by Nicolas Rougier <Nicolas.Rougier@inria.fr>.
|
||||
|
||||
* src/tools/glnames.py (adobe_glyph_list): Add data from AGL's
|
||||
`zapfdingbats.txt' file.
|
||||
|
||||
* src/psnames/pstables.h: Regenerated.
|
||||
|
||||
2011-09-27 Simon Bünzli <zeniko@gmail.com>
|
||||
|
||||
Fix Savannah bug #34189.
|
||||
|
||||
* src/type1/t1load.c (T1_Open_Face): Initialize
|
||||
`face->len_buildchar'.
|
||||
|
||||
2011-09-26 Werner Lemberg <wl@gnu.org>
|
||||
|
||||
[cff] Dump SIDs while tracing.
|
||||
|
||||
* src/cff/cffobjs.c (cff_face_init): Do it.
|
||||
|
||||
* src/cff/cffparse.c (cff_parser_run) [FT_DEBUG_LEVEL_TRACE]
|
||||
<cff_kind_string>: Identify as SID.
|
||||
|
||||
2011-09-17 Werner Lemberg <wl@gnu.org>
|
||||
|
||||
Remove unused FT_ALIGNMENT macro.
|
||||
|
||||
* builds/unix/ftconfig.in, builds/vms/ftconfig.h,
|
||||
include/freetype/config/ftconfig.h: Do it.
|
||||
|
||||
2011-09-17 Alexei Podtelezhnikov <apodtele@gmail.com>
|
||||
|
||||
[smooth] Slightly optimize conic and cubic flatterners.
|
||||
|
||||
* src/smooth/ftgrays.c (gray_render_conic, gray_render_cubic): Move
|
||||
out some code from the main loop to speed it up.
|
||||
|
||||
2011-09-11 Tomas Hoger <thoger@redhat.com>
|
||||
|
||||
Slightly improve LZW_CLEAR handling.
|
||||
|
||||
* src/lzw/ftzopen.c (ft_lzwstate_io) <FT_LZW_PHASE_CODE>:
|
||||
Ensure that subsequent (modulo garbage byte(s)) LZW_CLEAR codes are
|
||||
handled as clear codes. This also re-sets old_code and old_char to
|
||||
predictable values, which is a little better than using `random'
|
||||
ones if the code following LZW_CLEAR is invalid.
|
||||
|
||||
2011-09-11 Tomas Hoger <thoger@redhat.com>
|
||||
|
||||
Add explicit LZW decompression stack size limit.
|
||||
|
||||
Stack larger than 1<<LZW_MAX_BITS is never needed if prefix table is
|
||||
constructed correctly. It's even less than that, see e.g.
|
||||
libarchive code comment for a better size upper bound:
|
||||
|
||||
http://code.google.com/p/libarchive/source/browse/trunk/libarchive/archive_read_support_filter_compress.c?r=3635#121
|
||||
|
||||
This patch adds explicit stack size limit, enforced when stack is
|
||||
realloced.
|
||||
|
||||
An alternative is to ensure that code < state->prefix[code - 256]
|
||||
when traversing prefix table. Such check is less efficient and
|
||||
should not be required if prefix table is constructed correctly in
|
||||
the first place.
|
||||
|
||||
* src/lzw/ftzopen.c (ft_lzwstate_stack_grow): Implement it.
|
||||
|
||||
2011-09-11 Tomas Hoger <thoger@redhat.com>
|
||||
|
||||
Protect against loops in the prefix table.
|
||||
|
||||
LZW decompressor did not sufficiently check codes read from the
|
||||
input LZW stream. A specially-crafted or corrupted input could
|
||||
create a loop in the prefix table, which leads to memory usage
|
||||
spikes, as there's no decompression stack size limit.
|
||||
|
||||
* src/lzw/ftzopen.c (ft_lzwstate_io) <FT_LZW_PHASE_START>: First
|
||||
code in valid LZW stream must be 0..255.
|
||||
<FT_LZW_PHASE_CODE>: In the special KwKwK case, code == free_ent,
|
||||
code > free_ent is invalid.
|
||||
|
||||
2011-09-09 Werner Lemberg <wl@gnu.org>
|
||||
|
||||
Better tracing of metrics.
|
||||
|
||||
* src/base/ftobjs.c (FT_Request_Size, FT_Select_Size): Decorate with
|
||||
FT_TRACE.
|
||||
|
||||
2011-09-07 Werner Lemberg <wl@gnu.org>
|
||||
|
||||
Fix Savannah bug #33816.
|
||||
|
||||
* src/cff/cfftypes.h (CFF_FontRecDictRec): New member
|
||||
`has_font_matrix'.
|
||||
* src/cff/cffparse.c (cff_parse_font_matrix): Set it.
|
||||
Update tracing output.
|
||||
* src/cff/cffobjs.c (cff_face_init): Use it so that the heuristics
|
||||
can be removed.
|
||||
|
||||
2011-08-30 Werner Lemberg <wl@gnu.org>
|
||||
|
||||
Better tracing of metrics.
|
||||
|
||||
* src/base/ftobjs.c (FT_Select_Metrics, FT_Request_Metrics):
|
||||
Decorate with FT_TRACE.
|
||||
|
||||
2011-08-25 Werner Lemberg <wl@gnu.org>
|
||||
|
||||
[cff] Better tracing of the parsing process.
|
||||
|
||||
* src/cff/cffload.c (cff_subfont_load, cff_font_load): Decorate with
|
||||
FT_TRACE.
|
||||
|
||||
* src/cff/cffparse.c (cff_parse_font_matrix, cff_parse_font_bbox,
|
||||
cff_parse_private_dict, cff_parse_cid_ros): Updated.
|
||||
(CFF_FIELD_NUM, CFF_FIELD_FIXED, CFF_FIELD_FIXED_1000,
|
||||
CFF_FIELD_STRING, CFF_FIELD_BOOL, CFF_FIELD_CALLBACK, CFF_FIELD,
|
||||
CFF_FIELD_DELTA): Add argument for ID.
|
||||
(cff_parser_run): Decorate with FT_TRACE.
|
||||
|
||||
* src/cff/cffparse.h (CFF_Field_Handler) [FT_DEBUG_LEVEL_TRACE]: Add
|
||||
`id' member.
|
||||
|
||||
* src/cff/cfftoken.h: Add IDs to all fields.
|
||||
|
||||
2011-08-16 Werner Lemberg <wl@gnu.org>
|
||||
|
||||
Fix Savannah bug #34022.
|
||||
|
||||
* README, docs/INSTALL: Remove references to UPGRADE.UNIX.
|
||||
|
||||
2011-08-15 Werner Lemberg <wl@gnu.org>
|
||||
|
||||
Fix Savannah bug #34018.
|
||||
|
||||
* docs/UPGRADE.UNIX: Removed. Obsolete.
|
||||
|
||||
2011-08-15 David Bevan <david.bevan@pb.com>
|
||||
|
||||
Fix Savannah bug #33992.
|
||||
|
||||
* src/base/ftstroke.c (FT_Stroker_ParseOutline): Fix border case.
|
||||
|
||||
2011-08-12 Werner Lemberg <wl@gnu.org
|
||||
|
||||
[truetype] Fix degenerate case in S{P,F,DP}VTL opcodes.
|
||||
|
||||
* src/truetype/ttinterp.c (Ins_SxVTL): Handle p1 == p2 specially.
|
||||
(Ins_SDPVTL): Handle v1 == v2 specially.
|
||||
|
||||
2011-08-09 Werner Lemberg <wl@gnu.org>
|
||||
|
||||
Fix Savannah bug #33975.
|
||||
|
||||
* src/cff/cffparse.c (cff_parse_font_matrix): Fix typo.
|
||||
|
||||
2011-07-29 Werner Lemberg <wl@gnu.org>
|
||||
|
||||
* Version 2.4.6 released.
|
||||
|
|
|
@ -195,7 +195,7 @@ rule RefDoc
|
|||
|
||||
actions RefDoc
|
||||
{
|
||||
python $(FT2_SRC)/tools/docmaker/docmaker.py --prefix=ft2 --title=FreeType-2.4.6 --output=$(DOC_DIR) $(FT2_INCLUDE)/freetype/*.h $(FT2_INCLUDE)/freetype/config/*.h
|
||||
python $(FT2_SRC)/tools/docmaker/docmaker.py --prefix=ft2 --title=FreeType-2.4.7 --output=$(DOC_DIR) $(FT2_INCLUDE)/freetype/*.h $(FT2_INCLUDE)/freetype/config/*.h
|
||||
}
|
||||
|
||||
RefDoc refdoc ;
|
||||
|
|
|
@ -1,15 +1,4 @@
|
|||
Special notes to Unix users
|
||||
===========================
|
||||
|
||||
Please read the file `docs/UPGRADE.UNIX'. It contains important
|
||||
information regarding the installation of FreeType on Unix systems,
|
||||
especially GNU based operating systems like GNU/Linux.
|
||||
|
||||
FreeType 2's library is called `libfreetype', FreeType 1's library
|
||||
is called `libttf'. They are *not* compatible!
|
||||
|
||||
|
||||
FreeType 2.4.6
|
||||
FreeType 2.4.7
|
||||
==============
|
||||
|
||||
Please read the docs/CHANGES file, it contains IMPORTANT
|
||||
|
@ -26,9 +15,9 @@
|
|||
|
||||
and download one of the following files.
|
||||
|
||||
freetype-doc-2.4.6.tar.bz2
|
||||
freetype-doc-2.4.6.tar.gz
|
||||
ftdoc246.zip
|
||||
freetype-doc-2.4.7.tar.bz2
|
||||
freetype-doc-2.4.7.tar.gz
|
||||
ftdoc247.zip
|
||||
|
||||
|
||||
Bugs
|
||||
|
|
12
3party/freetype/builds/unix/config.guess
vendored
12
3party/freetype/builds/unix/config.guess
vendored
|
@ -4,7 +4,7 @@
|
|||
# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010,
|
||||
# 2011 Free Software Foundation, Inc.
|
||||
|
||||
timestamp='2011-06-03'
|
||||
timestamp='2011-10-01'
|
||||
|
||||
# This file is free software; you can redistribute it and/or modify it
|
||||
# under the terms of the GNU General Public License as published by
|
||||
|
@ -792,13 +792,12 @@ EOF
|
|||
echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE}
|
||||
exit ;;
|
||||
*:FreeBSD:*:*)
|
||||
case ${UNAME_MACHINE} in
|
||||
pc98)
|
||||
echo i386-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
|
||||
UNAME_PROCESSOR=`/usr/bin/uname -p`
|
||||
case ${UNAME_PROCESSOR} in
|
||||
amd64)
|
||||
echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
|
||||
*)
|
||||
echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
|
||||
echo ${UNAME_PROCESSOR}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
|
||||
esac
|
||||
exit ;;
|
||||
i*:CYGWIN*:*)
|
||||
|
@ -903,6 +902,9 @@ EOF
|
|||
frv:Linux:*:*)
|
||||
echo frv-unknown-linux-gnu
|
||||
exit ;;
|
||||
hexagon:Linux:*:*)
|
||||
echo hexagon-unknown-linux-gnu
|
||||
exit ;;
|
||||
i*86:Linux:*:*)
|
||||
LIBC=gnu
|
||||
eval $set_cc_for_build
|
||||
|
|
13
3party/freetype/builds/unix/config.sub
vendored
13
3party/freetype/builds/unix/config.sub
vendored
|
@ -4,7 +4,7 @@
|
|||
# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010,
|
||||
# 2011 Free Software Foundation, Inc.
|
||||
|
||||
timestamp='2011-06-03'
|
||||
timestamp='2011-10-08'
|
||||
|
||||
# This file is (in principle) common to ALL GNU software.
|
||||
# The presence of a machine in this file suggests that SOME GNU software
|
||||
|
@ -251,13 +251,17 @@ case $basic_machine in
|
|||
| alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \
|
||||
| am33_2.0 \
|
||||
| arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | avr32 \
|
||||
| be32 | be64 \
|
||||
| bfin \
|
||||
| c4x | clipper \
|
||||
| d10v | d30v | dlx | dsp16xx \
|
||||
| epiphany \
|
||||
| fido | fr30 | frv \
|
||||
| h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
|
||||
| hexagon \
|
||||
| i370 | i860 | i960 | ia64 \
|
||||
| ip2k | iq2000 \
|
||||
| le32 | le64 \
|
||||
| lm32 \
|
||||
| m32c | m32r | m32rle | m68000 | m68k | m88k \
|
||||
| maxq | mb | microblaze | mcore | mep | metag \
|
||||
|
@ -357,6 +361,7 @@ case $basic_machine in
|
|||
| alphapca5[67]-* | alpha64pca5[67]-* | arc-* \
|
||||
| arm-* | armbe-* | armle-* | armeb-* | armv*-* \
|
||||
| avr-* | avr32-* \
|
||||
| be32-* | be64-* \
|
||||
| bfin-* | bs2000-* \
|
||||
| c[123]* | c30-* | [cjt]90-* | c4x-* \
|
||||
| clipper-* | craynv-* | cydra-* \
|
||||
|
@ -365,8 +370,10 @@ case $basic_machine in
|
|||
| f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \
|
||||
| h8300-* | h8500-* \
|
||||
| hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
|
||||
| hexagon-* \
|
||||
| i*86-* | i860-* | i960-* | ia64-* \
|
||||
| ip2k-* | iq2000-* \
|
||||
| le32-* | le64-* \
|
||||
| lm32-* \
|
||||
| m32c-* | m32r-* | m32rle-* \
|
||||
| m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
|
||||
|
@ -813,6 +820,10 @@ case $basic_machine in
|
|||
basic_machine=i370-ibm
|
||||
os=-mvs
|
||||
;;
|
||||
nacl)
|
||||
basic_machine=le32-unknown
|
||||
os=-nacl
|
||||
;;
|
||||
ncr3000)
|
||||
basic_machine=i486-ncr
|
||||
os=-sysv4
|
||||
|
|
20
3party/freetype/builds/unix/configure
vendored
20
3party/freetype/builds/unix/configure
vendored
|
@ -1,6 +1,6 @@
|
|||
#! /bin/sh
|
||||
# Guess values for system-dependent variables and create Makefiles.
|
||||
# Generated by GNU Autoconf 2.68 for FreeType 2.4.6.
|
||||
# Generated by GNU Autoconf 2.68 for FreeType 2.4.7.
|
||||
#
|
||||
# Report bugs to <freetype@nongnu.org>.
|
||||
#
|
||||
|
@ -570,8 +570,8 @@ MAKEFLAGS=
|
|||
# Identity of this package.
|
||||
PACKAGE_NAME='FreeType'
|
||||
PACKAGE_TARNAME='freetype'
|
||||
PACKAGE_VERSION='2.4.6'
|
||||
PACKAGE_STRING='FreeType 2.4.6'
|
||||
PACKAGE_VERSION='2.4.7'
|
||||
PACKAGE_STRING='FreeType 2.4.7'
|
||||
PACKAGE_BUGREPORT='freetype@nongnu.org'
|
||||
PACKAGE_URL=''
|
||||
|
||||
|
@ -1285,7 +1285,7 @@ if test "$ac_init_help" = "long"; then
|
|||
# Omit some internal or obsolete options to make the list less imposing.
|
||||
# This message is too long to be a string in the A/UX 3.1 sh.
|
||||
cat <<_ACEOF
|
||||
\`configure' configures FreeType 2.4.6 to adapt to many kinds of systems.
|
||||
\`configure' configures FreeType 2.4.7 to adapt to many kinds of systems.
|
||||
|
||||
Usage: $0 [OPTION]... [VAR=VALUE]...
|
||||
|
||||
|
@ -1350,7 +1350,7 @@ fi
|
|||
|
||||
if test -n "$ac_init_help"; then
|
||||
case $ac_init_help in
|
||||
short | recursive ) echo "Configuration of FreeType 2.4.6:";;
|
||||
short | recursive ) echo "Configuration of FreeType 2.4.7:";;
|
||||
esac
|
||||
cat <<\_ACEOF
|
||||
|
||||
|
@ -1465,7 +1465,7 @@ fi
|
|||
test -n "$ac_init_help" && exit $ac_status
|
||||
if $ac_init_version; then
|
||||
cat <<\_ACEOF
|
||||
FreeType configure 2.4.6
|
||||
FreeType configure 2.4.7
|
||||
generated by GNU Autoconf 2.68
|
||||
|
||||
Copyright (C) 2010 Free Software Foundation, Inc.
|
||||
|
@ -2058,7 +2058,7 @@ cat >config.log <<_ACEOF
|
|||
This file contains any messages produced by compilers while
|
||||
running configure, to aid debugging if configure makes a mistake.
|
||||
|
||||
It was created by FreeType $as_me 2.4.6, which was
|
||||
It was created by FreeType $as_me 2.4.7, which was
|
||||
generated by GNU Autoconf 2.68. Invocation command line was
|
||||
|
||||
$ $0 $@
|
||||
|
@ -2414,7 +2414,7 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
|
|||
|
||||
# Don't forget to update docs/VERSION.DLL!
|
||||
|
||||
version_info='13:1:7'
|
||||
version_info='13:2:7'
|
||||
|
||||
ft_version=`echo $version_info | tr : .`
|
||||
|
||||
|
@ -13247,7 +13247,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
|
|||
# report actual input values of CONFIG_FILES etc. instead of their
|
||||
# values after options handling.
|
||||
ac_log="
|
||||
This file was extended by FreeType $as_me 2.4.6, which was
|
||||
This file was extended by FreeType $as_me 2.4.7, which was
|
||||
generated by GNU Autoconf 2.68. Invocation command line was
|
||||
|
||||
CONFIG_FILES = $CONFIG_FILES
|
||||
|
@ -13313,7 +13313,7 @@ _ACEOF
|
|||
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
|
||||
ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
|
||||
ac_cs_version="\\
|
||||
FreeType config.status 2.4.6
|
||||
FreeType config.status 2.4.7
|
||||
configured by $0, generated by GNU Autoconf 2.68,
|
||||
with options \\"\$ac_cs_config\\"
|
||||
|
||||
|
|
|
@ -11,13 +11,13 @@
|
|||
# indicate that you have read the license and understand and accept it
|
||||
# fully.
|
||||
|
||||
AC_INIT([FreeType], [2.4.6], [freetype@nongnu.org], [freetype])
|
||||
AC_INIT([FreeType], [2.4.7], [freetype@nongnu.org], [freetype])
|
||||
AC_CONFIG_SRCDIR([ftconfig.in])
|
||||
|
||||
|
||||
# Don't forget to update docs/VERSION.DLL!
|
||||
|
||||
version_info='13:1:7'
|
||||
version_info='13:2:7'
|
||||
AC_SUBST([version_info])
|
||||
ft_version=`echo $version_info | tr : .`
|
||||
AC_SUBST([ft_version])
|
||||
|
|
|
@ -17,7 +17,7 @@ AC_CONFIG_SRCDIR([ftconfig.in])
|
|||
|
||||
# Don't forget to update docs/VERSION.DLL!
|
||||
|
||||
version_info='13:1:7'
|
||||
version_info='13:2:7'
|
||||
AC_SUBST([version_info])
|
||||
ft_version=`echo $version_info | tr : .`
|
||||
AC_SUBST([ft_version])
|
||||
|
|
|
@ -117,10 +117,6 @@ FT_BEGIN_HEADER
|
|||
#endif /* !FT_USE_AUTOCONF_SIZEOF_TYPES */
|
||||
|
||||
|
||||
/* Preferred alignment of data */
|
||||
#define FT_ALIGNMENT 8
|
||||
|
||||
|
||||
/* FT_UNUSED is a macro used to indicate that a given parameter is not */
|
||||
/* used -- this is only used to get rid of unpleasant compiler warnings */
|
||||
#ifndef FT_UNUSED
|
||||
|
|
|
@ -70,10 +70,6 @@ FT_BEGIN_HEADER
|
|||
#define FT_CHAR_BIT 8
|
||||
|
||||
|
||||
/* Preferred alignment of data */
|
||||
#define FT_ALIGNMENT 8
|
||||
|
||||
|
||||
/* FT_UNUSED is a macro used to indicate that a given parameter is not */
|
||||
/* used -- this is only used to get rid of unpleasant compiler warnings */
|
||||
#ifndef FT_UNUSED
|
||||
|
|
|
@ -11,14 +11,14 @@
|
|||
|
||||
<p>This directory contains project files for Visual C++, named
|
||||
<tt>freetype.vcproj</tt>, and Visual Studio, called <tt>freetype.sln</tt>. It
|
||||
compiles the following libraries from the FreeType 2.4.6 sources:</p>
|
||||
compiles the following libraries from the FreeType 2.4.7 sources:</p>
|
||||
|
||||
<ul>
|
||||
<pre>
|
||||
freetype246.lib - release build; single threaded
|
||||
freetype246_D.lib - debug build; single threaded
|
||||
freetype246MT.lib - release build; multi-threaded
|
||||
freetype246MT_D.lib - debug build; multi-threaded</pre>
|
||||
freetype247.lib - release build; single threaded
|
||||
freetype247_D.lib - debug build; single threaded
|
||||
freetype247MT.lib - release build; multi-threaded
|
||||
freetype247MT_D.lib - debug build; multi-threaded</pre>
|
||||
</ul>
|
||||
|
||||
<p>Be sure to extract the files with the Windows (CR+LF) line endings. ZIP
|
||||
|
|
|
@ -11,14 +11,14 @@
|
|||
|
||||
<p>This directory contains project files for Visual C++, named
|
||||
<tt>freetype.vcproj</tt>, and Visual Studio, called <tt>freetype.sln</tt>. It
|
||||
compiles the following libraries from the FreeType 2.4.6 sources:</p>
|
||||
compiles the following libraries from the FreeType 2.4.7 sources:</p>
|
||||
|
||||
<ul>
|
||||
<pre>
|
||||
freetype246.lib - release build; single threaded
|
||||
freetype246_D.lib - debug build; single threaded
|
||||
freetype246MT.lib - release build; multi-threaded
|
||||
freetype246MT_D.lib - debug build; multi-threaded</pre>
|
||||
freetype247.lib - release build; single threaded
|
||||
freetype247_D.lib - debug build; single threaded
|
||||
freetype247MT.lib - release build; multi-threaded
|
||||
freetype247MT_D.lib - debug build; multi-threaded</pre>
|
||||
</ul>
|
||||
|
||||
<p>Be sure to extract the files with the Windows (CR+LF) line endings. ZIP
|
||||
|
|
|
@ -11,14 +11,14 @@
|
|||
|
||||
<p>This directory contains a project file for Visual C++, named
|
||||
<tt>freetype.vcxproj</tt>, and Visual Studio, called <tt>freetype.sln</tt>. It
|
||||
compiles the following libraries from the FreeType 2.4.6 sources:</p>
|
||||
compiles the following libraries from the FreeType 2.4.7 sources:</p>
|
||||
|
||||
<ul>
|
||||
<pre>
|
||||
freetype246.lib - release build; single threaded
|
||||
freetype246_D.lib - debug build; single threaded
|
||||
freetype246MT.lib - release build; multi-threaded
|
||||
freetype246MT_D.lib - debug build; multi-threaded</pre>
|
||||
freetype247.lib - release build; single threaded
|
||||
freetype247_D.lib - debug build; single threaded
|
||||
freetype247MT.lib - release build; multi-threaded
|
||||
freetype247MT_D.lib - debug build; multi-threaded</pre>
|
||||
</ul>
|
||||
|
||||
<p>Be sure to extract the files with the Windows (CR+LF) line endings. ZIP
|
||||
|
|
|
@ -54,7 +54,7 @@ BSC32=bscmake.exe
|
|||
# ADD BSC32 /nologo
|
||||
LIB32=link.exe -lib
|
||||
# ADD BASE LIB32 /nologo
|
||||
# ADD LIB32 /nologo /out:"..\..\..\objs\freetype246.lib"
|
||||
# ADD LIB32 /nologo /out:"..\..\..\objs\freetype247.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\freetype246_D.lib"
|
||||
# ADD LIB32 /nologo /out:"..\..\..\objs\freetype247_D.lib"
|
||||
|
||||
!ELSEIF "$(CFG)" == "freetype - Win32 Debug Multithreaded"
|
||||
|
||||
|
@ -102,8 +102,8 @@ BSC32=bscmake.exe
|
|||
# ADD BASE BSC32 /nologo
|
||||
# ADD BSC32 /nologo
|
||||
LIB32=link.exe -lib
|
||||
# ADD BASE LIB32 /nologo /out:"lib\freetype246_D.lib"
|
||||
# ADD LIB32 /nologo /out:"..\..\..\objs\freetype246MT_D.lib"
|
||||
# ADD BASE LIB32 /nologo /out:"lib\freetype247_D.lib"
|
||||
# ADD LIB32 /nologo /out:"..\..\..\objs\freetype247MT_D.lib"
|
||||
|
||||
!ELSEIF "$(CFG)" == "freetype - Win32 Release Multithreaded"
|
||||
|
||||
|
@ -126,8 +126,8 @@ BSC32=bscmake.exe
|
|||
# ADD BASE BSC32 /nologo
|
||||
# ADD BSC32 /nologo
|
||||
LIB32=link.exe -lib
|
||||
# ADD BASE LIB32 /nologo /out:"lib\freetype246.lib"
|
||||
# ADD LIB32 /nologo /out:"..\..\..\objs\freetype246MT.lib"
|
||||
# ADD BASE LIB32 /nologo /out:"lib\freetype247.lib"
|
||||
# ADD LIB32 /nologo /out:"..\..\..\objs\freetype247MT.lib"
|
||||
|
||||
!ELSEIF "$(CFG)" == "freetype - Win32 Release Singlethreaded"
|
||||
|
||||
|
@ -151,8 +151,8 @@ BSC32=bscmake.exe
|
|||
# ADD BASE BSC32 /nologo
|
||||
# ADD BSC32 /nologo
|
||||
LIB32=link.exe -lib
|
||||
# ADD BASE LIB32 /nologo /out:"..\..\..\objs\freetype246.lib"
|
||||
# ADD LIB32 /out:"..\..\..\objs\freetype246ST.lib"
|
||||
# ADD BASE LIB32 /nologo /out:"..\..\..\objs\freetype247.lib"
|
||||
# ADD LIB32 /out:"..\..\..\objs\freetype247ST.lib"
|
||||
# SUBTRACT LIB32 /nologo
|
||||
|
||||
!ELSEIF "$(CFG)" == "freetype - Win32 Debug Singlethreaded"
|
||||
|
@ -177,8 +177,8 @@ BSC32=bscmake.exe
|
|||
# ADD BASE BSC32 /nologo
|
||||
# ADD BSC32 /nologo
|
||||
LIB32=link.exe -lib
|
||||
# ADD BASE LIB32 /nologo /out:"..\..\..\objs\freetype246_D.lib"
|
||||
# ADD LIB32 /nologo /out:"..\..\..\objs\freetype246ST_D.lib"
|
||||
# ADD BASE LIB32 /nologo /out:"..\..\..\objs\freetype247_D.lib"
|
||||
# ADD LIB32 /nologo /out:"..\..\..\objs\freetype247ST_D.lib"
|
||||
|
||||
!ENDIF
|
||||
|
||||
|
|
|
@ -11,14 +11,14 @@
|
|||
|
||||
<p>This directory contains project files for Visual C++, named
|
||||
<tt>freetype.dsp</tt>, and Visual Studio, called <tt>freetype.sln</tt>. It
|
||||
compiles the following libraries from the FreeType 2.4.6 sources:</p>
|
||||
compiles the following libraries from the FreeType 2.4.7 sources:</p>
|
||||
|
||||
<ul>
|
||||
<pre>
|
||||
freetype246.lib - release build; single threaded
|
||||
freetype246_D.lib - debug build; single threaded
|
||||
freetype246MT.lib - release build; multi-threaded
|
||||
freetype246MT_D.lib - debug build; multi-threaded</pre>
|
||||
freetype247.lib - release build; single threaded
|
||||
freetype247_D.lib - debug build; single threaded
|
||||
freetype247MT.lib - release build; multi-threaded
|
||||
freetype247MT_D.lib - debug build; multi-threaded</pre>
|
||||
</ul>
|
||||
|
||||
<p>Be sure to extract the files with the Windows (CR+LF) line endings. ZIP
|
||||
|
|
|
@ -54,7 +54,7 @@ BSC32=bscmake.exe
|
|||
# ADD BSC32 /nologo
|
||||
LIB32=link.exe -lib
|
||||
# ADD BASE LIB32 /nologo
|
||||
# ADD LIB32 /nologo /out:"..\..\..\objs\freetype246.lib"
|
||||
# ADD LIB32 /nologo /out:"..\..\..\objs\freetype247.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\freetype246_D.lib"
|
||||
# ADD LIB32 /nologo /out:"..\..\..\objs\freetype247_D.lib"
|
||||
|
||||
!ELSEIF "$(CFG)" == "freetype - Win32 Debug Multithreaded"
|
||||
|
||||
|
@ -102,8 +102,8 @@ BSC32=bscmake.exe
|
|||
# ADD BASE BSC32 /nologo
|
||||
# ADD BSC32 /nologo
|
||||
LIB32=link.exe -lib
|
||||
# ADD BASE LIB32 /nologo /out:"lib\freetype246_D.lib"
|
||||
# ADD LIB32 /nologo /out:"..\..\..\objs\freetype246MT_D.lib"
|
||||
# ADD BASE LIB32 /nologo /out:"lib\freetype247_D.lib"
|
||||
# ADD LIB32 /nologo /out:"..\..\..\objs\freetype247MT_D.lib"
|
||||
|
||||
!ELSEIF "$(CFG)" == "freetype - Win32 Release Multithreaded"
|
||||
|
||||
|
@ -126,8 +126,8 @@ BSC32=bscmake.exe
|
|||
# ADD BASE BSC32 /nologo
|
||||
# ADD BSC32 /nologo
|
||||
LIB32=link.exe -lib
|
||||
# ADD BASE LIB32 /nologo /out:"lib\freetype246.lib"
|
||||
# ADD LIB32 /nologo /out:"..\..\..\objs\freetype246MT.lib"
|
||||
# ADD BASE LIB32 /nologo /out:"lib\freetype247.lib"
|
||||
# ADD LIB32 /nologo /out:"..\..\..\objs\freetype247MT.lib"
|
||||
|
||||
!ELSEIF "$(CFG)" == "freetype - Win32 Release Singlethreaded"
|
||||
|
||||
|
@ -151,8 +151,8 @@ BSC32=bscmake.exe
|
|||
# ADD BASE BSC32 /nologo
|
||||
# ADD BSC32 /nologo
|
||||
LIB32=link.exe -lib
|
||||
# ADD BASE LIB32 /nologo /out:"..\..\..\objs\freetype246.lib"
|
||||
# ADD LIB32 /out:"..\..\..\objs\freetype246ST.lib"
|
||||
# ADD BASE LIB32 /nologo /out:"..\..\..\objs\freetype247.lib"
|
||||
# ADD LIB32 /out:"..\..\..\objs\freetype247ST.lib"
|
||||
# SUBTRACT LIB32 /nologo
|
||||
|
||||
!ELSEIF "$(CFG)" == "freetype - Win32 Debug Singlethreaded"
|
||||
|
@ -177,8 +177,8 @@ BSC32=bscmake.exe
|
|||
# ADD BASE BSC32 /nologo
|
||||
# ADD BSC32 /nologo
|
||||
LIB32=link.exe -lib
|
||||
# ADD BASE LIB32 /nologo /out:"..\..\..\objs\freetype246_D.lib"
|
||||
# ADD LIB32 /nologo /out:"..\..\..\objs\freetype246ST_D.lib"
|
||||
# ADD BASE LIB32 /nologo /out:"..\..\..\objs\freetype247_D.lib"
|
||||
# ADD LIB32 /nologo /out:"..\..\..\objs\freetype247ST_D.lib"
|
||||
|
||||
!ENDIF
|
||||
|
||||
|
|
|
@ -21,14 +21,14 @@ the following targets:
|
|||
<li>PPC/SP WM6 (Windows Mobile 6)</li>
|
||||
</ul>
|
||||
|
||||
It compiles the following libraries from the FreeType 2.4.6 sources:</p>
|
||||
It compiles the following libraries from the FreeType 2.4.7 sources:</p>
|
||||
|
||||
<ul>
|
||||
<pre>
|
||||
freetype246.lib - release build; single threaded
|
||||
freetype246_D.lib - debug build; single threaded
|
||||
freetype246MT.lib - release build; multi-threaded
|
||||
freetype246MT_D.lib - debug build; multi-threaded</pre>
|
||||
freetype247.lib - release build; single threaded
|
||||
freetype247_D.lib - debug build; single threaded
|
||||
freetype247MT.lib - release build; multi-threaded
|
||||
freetype247MT_D.lib - debug build; multi-threaded</pre>
|
||||
</ul>
|
||||
|
||||
<p>Be sure to extract the files with the Windows (CR+LF) line endings. ZIP
|
||||
|
|
|
@ -21,14 +21,14 @@ the following targets:
|
|||
<li>PPC/SP WM6 (Windows Mobile 6)</li>
|
||||
</ul>
|
||||
|
||||
It compiles the following libraries from the FreeType 2.4.6 sources:</p>
|
||||
It compiles the following libraries from the FreeType 2.4.7 sources:</p>
|
||||
|
||||
<ul>
|
||||
<pre>
|
||||
freetype246.lib - release build; single threaded
|
||||
freetype246_D.lib - debug build; single threaded
|
||||
freetype246MT.lib - release build; multi-threaded
|
||||
freetype246MT_D.lib - debug build; multi-threaded</pre>
|
||||
freetype247.lib - release build; single threaded
|
||||
freetype247_D.lib - debug build; single threaded
|
||||
freetype247MT.lib - release build; multi-threaded
|
||||
freetype247MT_D.lib - debug build; multi-threaded</pre>
|
||||
</ul>
|
||||
|
||||
<p>Be sure to extract the files with the Windows (CR+LF) line endings. ZIP
|
||||
|
|
|
@ -21,14 +21,14 @@ the following targets:
|
|||
<li>PPC/SP WM6 (Windows Mobile 6)</li>
|
||||
</ul>
|
||||
|
||||
It compiles the following libraries from the FreeType 2.4.6 sources:</p>
|
||||
It compiles the following libraries from the FreeType 2.4.7 sources:</p>
|
||||
|
||||
<ul>
|
||||
<pre>
|
||||
freetype246.lib - release build; single threaded
|
||||
freetype246_D.lib - debug build; single threaded
|
||||
freetype246MT.lib - release build; multi-threaded
|
||||
freetype246MT_D.lib - debug build; multi-threaded</pre>
|
||||
freetype247.lib - release build; single threaded
|
||||
freetype247_D.lib - debug build; single threaded
|
||||
freetype247MT.lib - release build; multi-threaded
|
||||
freetype247MT_D.lib - debug build; multi-threaded</pre>
|
||||
</ul>
|
||||
|
||||
<p>Be sure to extract the files with the Windows (CR+LF) line endings. ZIP
|
||||
|
|
|
@ -1,3 +1,19 @@
|
|||
CHANGES BETWEEN 2.4.6 and 2.4.7
|
||||
|
||||
I. IMPORTANT BUG FIXES
|
||||
|
||||
- Some vulnerabilities in handling Type 1 fonts have been fixed;
|
||||
see CVE-2011-3256.
|
||||
|
||||
II. MISCELLANEOUS
|
||||
|
||||
- FreeType now properly handles ZapfDingbats glyph names while
|
||||
constructing a Unicode character map (for fonts which don't have
|
||||
one).
|
||||
|
||||
|
||||
======================================================================
|
||||
|
||||
CHANGES BETWEEN 2.4.5 and 2.4.6
|
||||
|
||||
I. IMPORTANT BUG FIXES
|
||||
|
|
|
@ -9,10 +9,10 @@ I. Normal installation and upgrades
|
|||
|
||||
1. Unix Systems (including Mac OS X, Cygwin, and MSys on Windows)
|
||||
|
||||
Please read *both* `UPGRADE.UNIX' and `INSTALL.UNIX' to install or
|
||||
upgrade FreeType 2 on a Unix system. Note that you *need* GNU
|
||||
Make for automatic compilation, since other make tools won't work
|
||||
(this includes BSD Make).
|
||||
Please read `INSTALL.UNIX' to install or upgrade FreeType 2 on a
|
||||
Unix system. Note that you *need* GNU Make for automatic
|
||||
compilation, since other make tools won't work (this includes BSD
|
||||
Make).
|
||||
|
||||
GNU Make VERSION 3.80 OR NEWER IS NEEDED!
|
||||
|
||||
|
@ -70,7 +70,7 @@ II. Custom builds of the library
|
|||
|
||||
----------------------------------------------------------------------
|
||||
|
||||
Copyright 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2010
|
||||
Copyright 2000-2008, 2010-2011
|
||||
by David Turner, Robert Wilhelm, and Werner Lemberg.
|
||||
|
||||
This file is part of the FreeType project, and may only be used,
|
||||
|
|
|
@ -1,137 +0,0 @@
|
|||
|
||||
SPECIAL NOTE FOR UNIX USERS
|
||||
===========================
|
||||
|
||||
If you are installing this release of FreeType on a system that
|
||||
already uses release 2.0.5 (or even an older version), you have to
|
||||
perform a few special steps to ensure that everything goes well.
|
||||
|
||||
|
||||
1. Enable the TrueType bytecode hinter if you need it
|
||||
-----------------------------------------------------
|
||||
|
||||
See the instructions in the file `TRUETYPE' of this directory.
|
||||
|
||||
Note that FreeType supports TrueType fonts without the bytecode
|
||||
interpreter through its auto-hinter, which now generates relatively
|
||||
good results with most fonts.
|
||||
|
||||
|
||||
2. Determine the correct installation path
|
||||
------------------------------------------
|
||||
|
||||
By default, the configure script installs the library in
|
||||
`/usr/local'. However, many Unix distributions now install the
|
||||
library in `/usr', since FreeType is becoming a critical system
|
||||
component.
|
||||
|
||||
If FreeType is already installed on your system, type
|
||||
|
||||
freetype-config --prefix
|
||||
|
||||
on the command line. This should return the installation path
|
||||
(e.g., `/usr' or `/usr/local'). To avoid problems of parallel
|
||||
FreeType versions, use this path for the --prefix option of the
|
||||
configure script.
|
||||
|
||||
Otherwise, simply use `/usr' (or whatever you think is adequate for
|
||||
your installation).
|
||||
|
||||
|
||||
3. Ensure that you are using GNU Make
|
||||
-------------------------------------
|
||||
|
||||
The FreeType build system _exclusively_ works with GNU Make (as an
|
||||
exception you can use make++ which emulates GNU Make sufficiently;
|
||||
see http://makepp.sourceforge.net). You will not be able to compile
|
||||
the library with the instructions below using any other alternative
|
||||
(including BSD Make).
|
||||
|
||||
Trying to compile the library with a different Make tool prints a
|
||||
message like:
|
||||
|
||||
Sorry, GNU make is required to build FreeType2.
|
||||
|
||||
and the build process is aborted. If this happens, install GNU Make
|
||||
on your system, and use the GNUMAKE environment variable to name it.
|
||||
|
||||
|
||||
4. Build and install the library
|
||||
--------------------------------
|
||||
|
||||
The following should work on all Unix systems where the `make'
|
||||
command invokes GNU Make:
|
||||
|
||||
./configure --prefix=<yourprefix>
|
||||
make
|
||||
make install (as root)
|
||||
|
||||
where `<yourprefix>' must be replaced by the prefix returned by the
|
||||
`freetype-config' command.
|
||||
|
||||
When using a different command to invoke GNU Make, use the GNUMAKE
|
||||
variable. For example, if `gmake' is the command to use on your
|
||||
system, do something like:
|
||||
|
||||
GNUMAKE=gmake ./configure --prefix=<yourprefix>
|
||||
gmake
|
||||
gmake install (as root)
|
||||
|
||||
|
||||
5. Take care of XFree86 version 4
|
||||
---------------------------------
|
||||
|
||||
Certain Linux distributions install _several_ versions of FreeType
|
||||
on your system. For example, on a fresh Mandrake 8.1 system, you
|
||||
can find the following files:
|
||||
|
||||
/usr/lib/libfreetype.so which links to
|
||||
/usr/lib/libfreetype.6.1.0.so
|
||||
|
||||
and
|
||||
|
||||
/usr/X11R6/lib/libfreetype.so which links to
|
||||
/usr/X11R6/lib/libfreetype.6.0.so
|
||||
|
||||
Note that these files correspond to two distinct versions of the
|
||||
library! It seems that this surprising issue is due to the install
|
||||
scripts of recent XFree86 servers (from 4.1.0) which install their
|
||||
own (dated) version of the library in `/usr/X11R6/lib'.
|
||||
|
||||
In certain _rare_ cases you may experience minor problems if you
|
||||
install this release of the library in `/usr' only, namely, that
|
||||
certain applications do not benefit from the bug fixes and rendering
|
||||
improvements you would expect.
|
||||
|
||||
There are two good ways to deal with this situation:
|
||||
|
||||
- Install the library _twice_, in `/usr' and in `/usr/X11R6' (you
|
||||
have to do that each time you install a new FreeType release
|
||||
though).
|
||||
|
||||
- Change the link in /usr/X11R6/lib/libfreetype.so to point to
|
||||
|
||||
/usr/lib/libfreetype.so,
|
||||
|
||||
and get rid of
|
||||
|
||||
/usr/X11R6/lib/libfreetype.6.0.so
|
||||
|
||||
The FreeType Team is not responsible for this problem, so please
|
||||
contact either the XFree86 development team or your Linux
|
||||
distributor to help clear this issue in case the information given
|
||||
here doesn't help.
|
||||
|
||||
------------------------------------------------------------------------
|
||||
|
||||
Copyright 2003, 2005 by
|
||||
David Turner, Robert Wilhelm, and Werner Lemberg.
|
||||
|
||||
This file is part of the FreeType project, and may only be used,
|
||||
modified, and distributed under the terms of the FreeType project
|
||||
license, LICENSE.TXT. By continuing to use, modify, or distribute this
|
||||
file you indicate that you have read the license and understand and
|
||||
accept it fully.
|
||||
|
||||
|
||||
---- end of UPGRADE.UNIX ---
|
|
@ -53,6 +53,7 @@ systems, but not all of them:
|
|||
|
||||
release libtool so
|
||||
-------------------------------
|
||||
2.4.7 13.2.7 6.7.2
|
||||
2.4.6 13.1.7 6.7.1
|
||||
2.4.5 13.0.7 6.7.0
|
||||
2.4.4 12.2.6 6.6.2
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<title>FreeType-2.4.6 API Reference</title>
|
||||
<title>FreeType-2.4.7 API Reference</title>
|
||||
<style type="text/css">
|
||||
body { font-family: Verdana, Geneva, Arial, Helvetica, serif;
|
||||
color: #000000;
|
||||
|
@ -35,7 +35,7 @@
|
|||
<table align=center><tr><td><font size=-1>[<a href="ft2-index.html">Index</a>]</font></td>
|
||||
<td width="100%"></td>
|
||||
<td><font size=-1>[<a href="ft2-toc.html">TOC</a>]</font></td></tr></table>
|
||||
<center><h1>FreeType-2.4.6 API Reference</h1></center>
|
||||
<center><h1>FreeType-2.4.7 API Reference</h1></center>
|
||||
|
||||
<center><h1>
|
||||
Base Interface
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<title>FreeType-2.4.6 API Reference</title>
|
||||
<title>FreeType-2.4.7 API Reference</title>
|
||||
<style type="text/css">
|
||||
body { font-family: Verdana, Geneva, Arial, Helvetica, serif;
|
||||
color: #000000;
|
||||
|
@ -35,7 +35,7 @@
|
|||
<table align=center><tr><td><font size=-1>[<a href="ft2-index.html">Index</a>]</font></td>
|
||||
<td width="100%"></td>
|
||||
<td><font size=-1>[<a href="ft2-toc.html">TOC</a>]</font></td></tr></table>
|
||||
<center><h1>FreeType-2.4.6 API Reference</h1></center>
|
||||
<center><h1>FreeType-2.4.7 API Reference</h1></center>
|
||||
|
||||
<center><h1>
|
||||
Basic Data Types
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<title>FreeType-2.4.6 API Reference</title>
|
||||
<title>FreeType-2.4.7 API Reference</title>
|
||||
<style type="text/css">
|
||||
body { font-family: Verdana, Geneva, Arial, Helvetica, serif;
|
||||
color: #000000;
|
||||
|
@ -35,7 +35,7 @@
|
|||
<table align=center><tr><td><font size=-1>[<a href="ft2-index.html">Index</a>]</font></td>
|
||||
<td width="100%"></td>
|
||||
<td><font size=-1>[<a href="ft2-toc.html">TOC</a>]</font></td></tr></table>
|
||||
<center><h1>FreeType-2.4.6 API Reference</h1></center>
|
||||
<center><h1>FreeType-2.4.7 API Reference</h1></center>
|
||||
|
||||
<center><h1>
|
||||
BDF and PCF Files
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<title>FreeType-2.4.6 API Reference</title>
|
||||
<title>FreeType-2.4.7 API Reference</title>
|
||||
<style type="text/css">
|
||||
body { font-family: Verdana, Geneva, Arial, Helvetica, serif;
|
||||
color: #000000;
|
||||
|
@ -35,7 +35,7 @@
|
|||
<table align=center><tr><td><font size=-1>[<a href="ft2-index.html">Index</a>]</font></td>
|
||||
<td width="100%"></td>
|
||||
<td><font size=-1>[<a href="ft2-toc.html">TOC</a>]</font></td></tr></table>
|
||||
<center><h1>FreeType-2.4.6 API Reference</h1></center>
|
||||
<center><h1>FreeType-2.4.7 API Reference</h1></center>
|
||||
|
||||
<center><h1>
|
||||
Bitmap Handling
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<title>FreeType-2.4.6 API Reference</title>
|
||||
<title>FreeType-2.4.7 API Reference</title>
|
||||
<style type="text/css">
|
||||
body { font-family: Verdana, Geneva, Arial, Helvetica, serif;
|
||||
color: #000000;
|
||||
|
@ -35,7 +35,7 @@
|
|||
<table align=center><tr><td><font size=-1>[<a href="ft2-index.html">Index</a>]</font></td>
|
||||
<td width="100%"></td>
|
||||
<td><font size=-1>[<a href="ft2-toc.html">TOC</a>]</font></td></tr></table>
|
||||
<center><h1>FreeType-2.4.6 API Reference</h1></center>
|
||||
<center><h1>FreeType-2.4.7 API Reference</h1></center>
|
||||
|
||||
<center><h1>
|
||||
BZIP2 Streams
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<title>FreeType-2.4.6 API Reference</title>
|
||||
<title>FreeType-2.4.7 API Reference</title>
|
||||
<style type="text/css">
|
||||
body { font-family: Verdana, Geneva, Arial, Helvetica, serif;
|
||||
color: #000000;
|
||||
|
@ -35,7 +35,7 @@
|
|||
<table align=center><tr><td><font size=-1>[<a href="ft2-index.html">Index</a>]</font></td>
|
||||
<td width="100%"></td>
|
||||
<td><font size=-1>[<a href="ft2-toc.html">TOC</a>]</font></td></tr></table>
|
||||
<center><h1>FreeType-2.4.6 API Reference</h1></center>
|
||||
<center><h1>FreeType-2.4.7 API Reference</h1></center>
|
||||
|
||||
<center><h1>
|
||||
Cache Sub-System
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<title>FreeType-2.4.6 API Reference</title>
|
||||
<title>FreeType-2.4.7 API Reference</title>
|
||||
<style type="text/css">
|
||||
body { font-family: Verdana, Geneva, Arial, Helvetica, serif;
|
||||
color: #000000;
|
||||
|
@ -35,7 +35,7 @@
|
|||
<table align=center><tr><td><font size=-1>[<a href="ft2-index.html">Index</a>]</font></td>
|
||||
<td width="100%"></td>
|
||||
<td><font size=-1>[<a href="ft2-toc.html">TOC</a>]</font></td></tr></table>
|
||||
<center><h1>FreeType-2.4.6 API Reference</h1></center>
|
||||
<center><h1>FreeType-2.4.7 API Reference</h1></center>
|
||||
|
||||
<center><h1>
|
||||
CID Fonts
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<title>FreeType-2.4.6 API Reference</title>
|
||||
<title>FreeType-2.4.7 API Reference</title>
|
||||
<style type="text/css">
|
||||
body { font-family: Verdana, Geneva, Arial, Helvetica, serif;
|
||||
color: #000000;
|
||||
|
@ -35,7 +35,7 @@
|
|||
<table align=center><tr><td><font size=-1>[<a href="ft2-index.html">Index</a>]</font></td>
|
||||
<td width="100%"></td>
|
||||
<td><font size=-1>[<a href="ft2-toc.html">TOC</a>]</font></td></tr></table>
|
||||
<center><h1>FreeType-2.4.6 API Reference</h1></center>
|
||||
<center><h1>FreeType-2.4.7 API Reference</h1></center>
|
||||
|
||||
<center><h1>
|
||||
Computations
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<title>FreeType-2.4.6 API Reference</title>
|
||||
<title>FreeType-2.4.7 API Reference</title>
|
||||
<style type="text/css">
|
||||
body { font-family: Verdana, Geneva, Arial, Helvetica, serif;
|
||||
color: #000000;
|
||||
|
@ -35,7 +35,7 @@
|
|||
<table align=center><tr><td><font size=-1>[<a href="ft2-index.html">Index</a>]</font></td>
|
||||
<td width="100%"></td>
|
||||
<td><font size=-1>[<a href="ft2-toc.html">TOC</a>]</font></td></tr></table>
|
||||
<center><h1>FreeType-2.4.6 API Reference</h1></center>
|
||||
<center><h1>FreeType-2.4.7 API Reference</h1></center>
|
||||
|
||||
<center><h1>
|
||||
Font Formats
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<title>FreeType-2.4.6 API Reference</title>
|
||||
<title>FreeType-2.4.7 API Reference</title>
|
||||
<style type="text/css">
|
||||
body { font-family: Verdana, Geneva, Arial, Helvetica, serif;
|
||||
color: #000000;
|
||||
|
@ -35,7 +35,7 @@
|
|||
<table align=center><tr><td><font size=-1>[<a href="ft2-index.html">Index</a>]</font></td>
|
||||
<td width="100%"></td>
|
||||
<td><font size=-1>[<a href="ft2-toc.html">TOC</a>]</font></td></tr></table>
|
||||
<center><h1>FreeType-2.4.6 API Reference</h1></center>
|
||||
<center><h1>FreeType-2.4.7 API Reference</h1></center>
|
||||
|
||||
<center><h1>
|
||||
Gasp Table
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<title>FreeType-2.4.6 API Reference</title>
|
||||
<title>FreeType-2.4.7 API Reference</title>
|
||||
<style type="text/css">
|
||||
body { font-family: Verdana, Geneva, Arial, Helvetica, serif;
|
||||
color: #000000;
|
||||
|
@ -35,7 +35,7 @@
|
|||
<table align=center><tr><td><font size=-1>[<a href="ft2-index.html">Index</a>]</font></td>
|
||||
<td width="100%"></td>
|
||||
<td><font size=-1>[<a href="ft2-toc.html">TOC</a>]</font></td></tr></table>
|
||||
<center><h1>FreeType-2.4.6 API Reference</h1></center>
|
||||
<center><h1>FreeType-2.4.7 API Reference</h1></center>
|
||||
|
||||
<center><h1>
|
||||
Glyph Management
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<title>FreeType-2.4.6 API Reference</title>
|
||||
<title>FreeType-2.4.7 API Reference</title>
|
||||
<style type="text/css">
|
||||
body { font-family: Verdana, Geneva, Arial, Helvetica, serif;
|
||||
color: #000000;
|
||||
|
@ -35,7 +35,7 @@
|
|||
<table align=center><tr><td><font size=-1>[<a href="ft2-index.html">Index</a>]</font></td>
|
||||
<td width="100%"></td>
|
||||
<td><font size=-1>[<a href="ft2-toc.html">TOC</a>]</font></td></tr></table>
|
||||
<center><h1>FreeType-2.4.6 API Reference</h1></center>
|
||||
<center><h1>FreeType-2.4.7 API Reference</h1></center>
|
||||
|
||||
<center><h1>
|
||||
Glyph Stroker
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<title>FreeType-2.4.6 API Reference</title>
|
||||
<title>FreeType-2.4.7 API Reference</title>
|
||||
<style type="text/css">
|
||||
body { font-family: Verdana, Geneva, Arial, Helvetica, serif;
|
||||
color: #000000;
|
||||
|
@ -35,7 +35,7 @@
|
|||
<table align=center><tr><td><font size=-1>[<a href="ft2-index.html">Index</a>]</font></td>
|
||||
<td width="100%"></td>
|
||||
<td><font size=-1>[<a href="ft2-toc.html">TOC</a>]</font></td></tr></table>
|
||||
<center><h1>FreeType-2.4.6 API Reference</h1></center>
|
||||
<center><h1>FreeType-2.4.7 API Reference</h1></center>
|
||||
|
||||
<center><h1>
|
||||
Glyph Variants
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<title>FreeType-2.4.6 API Reference</title>
|
||||
<title>FreeType-2.4.7 API Reference</title>
|
||||
<style type="text/css">
|
||||
body { font-family: Verdana, Geneva, Arial, Helvetica, serif;
|
||||
color: #000000;
|
||||
|
@ -35,7 +35,7 @@
|
|||
<table align=center><tr><td><font size=-1>[<a href="ft2-index.html">Index</a>]</font></td>
|
||||
<td width="100%"></td>
|
||||
<td><font size=-1>[<a href="ft2-toc.html">TOC</a>]</font></td></tr></table>
|
||||
<center><h1>FreeType-2.4.6 API Reference</h1></center>
|
||||
<center><h1>FreeType-2.4.7 API Reference</h1></center>
|
||||
|
||||
<center><h1>
|
||||
TrueTypeGX/AAT Validation
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<title>FreeType-2.4.6 API Reference</title>
|
||||
<title>FreeType-2.4.7 API Reference</title>
|
||||
<style type="text/css">
|
||||
body { font-family: Verdana, Geneva, Arial, Helvetica, serif;
|
||||
color: #000000;
|
||||
|
@ -35,7 +35,7 @@
|
|||
<table align=center><tr><td><font size=-1>[<a href="ft2-index.html">Index</a>]</font></td>
|
||||
<td width="100%"></td>
|
||||
<td><font size=-1>[<a href="ft2-toc.html">TOC</a>]</font></td></tr></table>
|
||||
<center><h1>FreeType-2.4.6 API Reference</h1></center>
|
||||
<center><h1>FreeType-2.4.7 API Reference</h1></center>
|
||||
|
||||
<center><h1>
|
||||
GZIP Streams
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<title>FreeType-2.4.6 API Reference</title>
|
||||
<title>FreeType-2.4.7 API Reference</title>
|
||||
<style type="text/css">
|
||||
body { font-family: Verdana, Geneva, Arial, Helvetica, serif;
|
||||
color: #000000;
|
||||
|
@ -35,7 +35,7 @@
|
|||
<table align=center><tr><td><font size=-1>[<a href="ft2-index.html">Index</a>]</font></td>
|
||||
<td width="100%"></td>
|
||||
<td><font size=-1>[<a href="ft2-toc.html">TOC</a>]</font></td></tr></table>
|
||||
<center><h1>FreeType-2.4.6 API Reference</h1></center>
|
||||
<center><h1>FreeType-2.4.7 API Reference</h1></center>
|
||||
|
||||
<center><h1>
|
||||
Header File Macros
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<title>FreeType-2.4.6 API Reference</title>
|
||||
<title>FreeType-2.4.7 API Reference</title>
|
||||
<style type="text/css">
|
||||
body { font-family: Verdana, Geneva, Arial, Helvetica, serif;
|
||||
color: #000000;
|
||||
|
@ -35,7 +35,7 @@
|
|||
<table align=center><tr><td><font size=-1>[<a href="ft2-index.html">Index</a>]</font></td>
|
||||
<td width="100%"></td>
|
||||
<td><font size=-1>[<a href="ft2-toc.html">TOC</a>]</font></td></tr></table>
|
||||
<center><h1>FreeType-2.4.6 API Reference</h1></center>
|
||||
<center><h1>FreeType-2.4.7 API Reference</h1></center>
|
||||
|
||||
<center><h1>
|
||||
Incremental Loading
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<title>FreeType-2.4.6 API Reference</title>
|
||||
<title>FreeType-2.4.7 API Reference</title>
|
||||
<style type="text/css">
|
||||
body { font-family: Verdana, Geneva, Arial, Helvetica, serif;
|
||||
color: #000000;
|
||||
|
@ -34,7 +34,7 @@
|
|||
|
||||
<table align=center><tr><td width="100%"></td>
|
||||
<td><font size=-1>[<a href="ft2-toc.html">TOC</a>]</font></td></tr></table>
|
||||
<center><h1>FreeType-2.4.6 API Reference</h1></center>
|
||||
<center><h1>FreeType-2.4.7 API Reference</h1></center>
|
||||
|
||||
<table align=center border=0 cellpadding=0 cellspacing=0>
|
||||
<tr><td><a href="ft2-bdf_fonts.html#FT_PropertyType">BDF_PROPERTY_TYPE_ATOM</a></td><td><a href="ft2-lcd_filtering.html#FT_LcdFilter">FT_LcdFilter</a></td><td><a href="ft2-glyph_stroker.html#FT_Stroker_New">FT_Stroker_New</a></td></tr>
|
||||
|
@ -289,5 +289,5 @@
|
|||
<table><tr><td width="100%"></td>
|
||||
<td><font size=-2>[<a href="ft2-toc.html">TOC</a>]</font></td></tr></table>
|
||||
|
||||
<center><font size=-2>generated on Fri Jul 29 06:39:20 2011</font></center></body>
|
||||
<center><font size=-2>generated on Tue Oct 18 13:41:09 2011</font></center></body>
|
||||
</html>
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<title>FreeType-2.4.6 API Reference</title>
|
||||
<title>FreeType-2.4.7 API Reference</title>
|
||||
<style type="text/css">
|
||||
body { font-family: Verdana, Geneva, Arial, Helvetica, serif;
|
||||
color: #000000;
|
||||
|
@ -35,7 +35,7 @@
|
|||
<table align=center><tr><td><font size=-1>[<a href="ft2-index.html">Index</a>]</font></td>
|
||||
<td width="100%"></td>
|
||||
<td><font size=-1>[<a href="ft2-toc.html">TOC</a>]</font></td></tr></table>
|
||||
<center><h1>FreeType-2.4.6 API Reference</h1></center>
|
||||
<center><h1>FreeType-2.4.7 API Reference</h1></center>
|
||||
|
||||
<center><h1>
|
||||
LCD Filtering
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<title>FreeType-2.4.6 API Reference</title>
|
||||
<title>FreeType-2.4.7 API Reference</title>
|
||||
<style type="text/css">
|
||||
body { font-family: Verdana, Geneva, Arial, Helvetica, serif;
|
||||
color: #000000;
|
||||
|
@ -35,7 +35,7 @@
|
|||
<table align=center><tr><td><font size=-1>[<a href="ft2-index.html">Index</a>]</font></td>
|
||||
<td width="100%"></td>
|
||||
<td><font size=-1>[<a href="ft2-toc.html">TOC</a>]</font></td></tr></table>
|
||||
<center><h1>FreeType-2.4.6 API Reference</h1></center>
|
||||
<center><h1>FreeType-2.4.7 API Reference</h1></center>
|
||||
|
||||
<center><h1>
|
||||
List Processing
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<title>FreeType-2.4.6 API Reference</title>
|
||||
<title>FreeType-2.4.7 API Reference</title>
|
||||
<style type="text/css">
|
||||
body { font-family: Verdana, Geneva, Arial, Helvetica, serif;
|
||||
color: #000000;
|
||||
|
@ -35,7 +35,7 @@
|
|||
<table align=center><tr><td><font size=-1>[<a href="ft2-index.html">Index</a>]</font></td>
|
||||
<td width="100%"></td>
|
||||
<td><font size=-1>[<a href="ft2-toc.html">TOC</a>]</font></td></tr></table>
|
||||
<center><h1>FreeType-2.4.6 API Reference</h1></center>
|
||||
<center><h1>FreeType-2.4.7 API Reference</h1></center>
|
||||
|
||||
<center><h1>
|
||||
LZW Streams
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<title>FreeType-2.4.6 API Reference</title>
|
||||
<title>FreeType-2.4.7 API Reference</title>
|
||||
<style type="text/css">
|
||||
body { font-family: Verdana, Geneva, Arial, Helvetica, serif;
|
||||
color: #000000;
|
||||
|
@ -35,7 +35,7 @@
|
|||
<table align=center><tr><td><font size=-1>[<a href="ft2-index.html">Index</a>]</font></td>
|
||||
<td width="100%"></td>
|
||||
<td><font size=-1>[<a href="ft2-toc.html">TOC</a>]</font></td></tr></table>
|
||||
<center><h1>FreeType-2.4.6 API Reference</h1></center>
|
||||
<center><h1>FreeType-2.4.7 API Reference</h1></center>
|
||||
|
||||
<center><h1>
|
||||
Mac Specific Interface
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<title>FreeType-2.4.6 API Reference</title>
|
||||
<title>FreeType-2.4.7 API Reference</title>
|
||||
<style type="text/css">
|
||||
body { font-family: Verdana, Geneva, Arial, Helvetica, serif;
|
||||
color: #000000;
|
||||
|
@ -35,7 +35,7 @@
|
|||
<table align=center><tr><td><font size=-1>[<a href="ft2-index.html">Index</a>]</font></td>
|
||||
<td width="100%"></td>
|
||||
<td><font size=-1>[<a href="ft2-toc.html">TOC</a>]</font></td></tr></table>
|
||||
<center><h1>FreeType-2.4.6 API Reference</h1></center>
|
||||
<center><h1>FreeType-2.4.7 API Reference</h1></center>
|
||||
|
||||
<center><h1>
|
||||
Module Management
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<title>FreeType-2.4.6 API Reference</title>
|
||||
<title>FreeType-2.4.7 API Reference</title>
|
||||
<style type="text/css">
|
||||
body { font-family: Verdana, Geneva, Arial, Helvetica, serif;
|
||||
color: #000000;
|
||||
|
@ -35,7 +35,7 @@
|
|||
<table align=center><tr><td><font size=-1>[<a href="ft2-index.html">Index</a>]</font></td>
|
||||
<td width="100%"></td>
|
||||
<td><font size=-1>[<a href="ft2-toc.html">TOC</a>]</font></td></tr></table>
|
||||
<center><h1>FreeType-2.4.6 API Reference</h1></center>
|
||||
<center><h1>FreeType-2.4.7 API Reference</h1></center>
|
||||
|
||||
<center><h1>
|
||||
Multiple Masters
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<title>FreeType-2.4.6 API Reference</title>
|
||||
<title>FreeType-2.4.7 API Reference</title>
|
||||
<style type="text/css">
|
||||
body { font-family: Verdana, Geneva, Arial, Helvetica, serif;
|
||||
color: #000000;
|
||||
|
@ -35,7 +35,7 @@
|
|||
<table align=center><tr><td><font size=-1>[<a href="ft2-index.html">Index</a>]</font></td>
|
||||
<td width="100%"></td>
|
||||
<td><font size=-1>[<a href="ft2-toc.html">TOC</a>]</font></td></tr></table>
|
||||
<center><h1>FreeType-2.4.6 API Reference</h1></center>
|
||||
<center><h1>FreeType-2.4.7 API Reference</h1></center>
|
||||
|
||||
<center><h1>
|
||||
OpenType Validation
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<title>FreeType-2.4.6 API Reference</title>
|
||||
<title>FreeType-2.4.7 API Reference</title>
|
||||
<style type="text/css">
|
||||
body { font-family: Verdana, Geneva, Arial, Helvetica, serif;
|
||||
color: #000000;
|
||||
|
@ -35,7 +35,7 @@
|
|||
<table align=center><tr><td><font size=-1>[<a href="ft2-index.html">Index</a>]</font></td>
|
||||
<td width="100%"></td>
|
||||
<td><font size=-1>[<a href="ft2-toc.html">TOC</a>]</font></td></tr></table>
|
||||
<center><h1>FreeType-2.4.6 API Reference</h1></center>
|
||||
<center><h1>FreeType-2.4.7 API Reference</h1></center>
|
||||
|
||||
<center><h1>
|
||||
Outline Processing
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<title>FreeType-2.4.6 API Reference</title>
|
||||
<title>FreeType-2.4.7 API Reference</title>
|
||||
<style type="text/css">
|
||||
body { font-family: Verdana, Geneva, Arial, Helvetica, serif;
|
||||
color: #000000;
|
||||
|
@ -35,7 +35,7 @@
|
|||
<table align=center><tr><td><font size=-1>[<a href="ft2-index.html">Index</a>]</font></td>
|
||||
<td width="100%"></td>
|
||||
<td><font size=-1>[<a href="ft2-toc.html">TOC</a>]</font></td></tr></table>
|
||||
<center><h1>FreeType-2.4.6 API Reference</h1></center>
|
||||
<center><h1>FreeType-2.4.7 API Reference</h1></center>
|
||||
|
||||
<center><h1>
|
||||
PFR Fonts
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<title>FreeType-2.4.6 API Reference</title>
|
||||
<title>FreeType-2.4.7 API Reference</title>
|
||||
<style type="text/css">
|
||||
body { font-family: Verdana, Geneva, Arial, Helvetica, serif;
|
||||
color: #000000;
|
||||
|
@ -35,7 +35,7 @@
|
|||
<table align=center><tr><td><font size=-1>[<a href="ft2-index.html">Index</a>]</font></td>
|
||||
<td width="100%"></td>
|
||||
<td><font size=-1>[<a href="ft2-toc.html">TOC</a>]</font></td></tr></table>
|
||||
<center><h1>FreeType-2.4.6 API Reference</h1></center>
|
||||
<center><h1>FreeType-2.4.7 API Reference</h1></center>
|
||||
|
||||
<center><h1>
|
||||
Quick retrieval of advance values
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<title>FreeType-2.4.6 API Reference</title>
|
||||
<title>FreeType-2.4.7 API Reference</title>
|
||||
<style type="text/css">
|
||||
body { font-family: Verdana, Geneva, Arial, Helvetica, serif;
|
||||
color: #000000;
|
||||
|
@ -35,7 +35,7 @@
|
|||
<table align=center><tr><td><font size=-1>[<a href="ft2-index.html">Index</a>]</font></td>
|
||||
<td width="100%"></td>
|
||||
<td><font size=-1>[<a href="ft2-toc.html">TOC</a>]</font></td></tr></table>
|
||||
<center><h1>FreeType-2.4.6 API Reference</h1></center>
|
||||
<center><h1>FreeType-2.4.7 API Reference</h1></center>
|
||||
|
||||
<center><h1>
|
||||
Scanline Converter
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<title>FreeType-2.4.6 API Reference</title>
|
||||
<title>FreeType-2.4.7 API Reference</title>
|
||||
<style type="text/css">
|
||||
body { font-family: Verdana, Geneva, Arial, Helvetica, serif;
|
||||
color: #000000;
|
||||
|
@ -35,7 +35,7 @@
|
|||
<table align=center><tr><td><font size=-1>[<a href="ft2-index.html">Index</a>]</font></td>
|
||||
<td width="100%"></td>
|
||||
<td><font size=-1>[<a href="ft2-toc.html">TOC</a>]</font></td></tr></table>
|
||||
<center><h1>FreeType-2.4.6 API Reference</h1></center>
|
||||
<center><h1>FreeType-2.4.7 API Reference</h1></center>
|
||||
|
||||
<center><h1>
|
||||
SFNT Names
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<title>FreeType-2.4.6 API Reference</title>
|
||||
<title>FreeType-2.4.7 API Reference</title>
|
||||
<style type="text/css">
|
||||
body { font-family: Verdana, Geneva, Arial, Helvetica, serif;
|
||||
color: #000000;
|
||||
|
@ -35,7 +35,7 @@
|
|||
<table align=center><tr><td><font size=-1>[<a href="ft2-index.html">Index</a>]</font></td>
|
||||
<td width="100%"></td>
|
||||
<td><font size=-1>[<a href="ft2-toc.html">TOC</a>]</font></td></tr></table>
|
||||
<center><h1>FreeType-2.4.6 API Reference</h1></center>
|
||||
<center><h1>FreeType-2.4.7 API Reference</h1></center>
|
||||
|
||||
<center><h1>
|
||||
Size Management
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<title>FreeType-2.4.6 API Reference</title>
|
||||
<title>FreeType-2.4.7 API Reference</title>
|
||||
<style type="text/css">
|
||||
body { font-family: Verdana, Geneva, Arial, Helvetica, serif;
|
||||
color: #000000;
|
||||
|
@ -35,7 +35,7 @@
|
|||
<table align=center><tr><td><font size=-1>[<a href="ft2-index.html">Index</a>]</font></td>
|
||||
<td width="100%"></td>
|
||||
<td><font size=-1>[<a href="ft2-toc.html">TOC</a>]</font></td></tr></table>
|
||||
<center><h1>FreeType-2.4.6 API Reference</h1></center>
|
||||
<center><h1>FreeType-2.4.7 API Reference</h1></center>
|
||||
|
||||
<center><h1>
|
||||
System Interface
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<title>FreeType-2.4.6 API Reference</title>
|
||||
<title>FreeType-2.4.7 API Reference</title>
|
||||
<style type="text/css">
|
||||
body { font-family: Verdana, Geneva, Arial, Helvetica, serif;
|
||||
color: #000000;
|
||||
|
@ -34,7 +34,7 @@
|
|||
|
||||
<table align=center><tr><td><font size=-1>[<a href="ft2-index.html">Index</a>]</font></td>
|
||||
<td width="100%"></td></tr></table>
|
||||
<center><h1>FreeType-2.4.6 API Reference</h1></center>
|
||||
<center><h1>FreeType-2.4.7 API Reference</h1></center>
|
||||
|
||||
<center><h1>Table of Contents</h1></center>
|
||||
<br><table align=center width="75%"><tr><td><h2>General Remarks</h2><ul class="empty"><li>
|
||||
|
@ -215,5 +215,5 @@
|
|||
<td width="100%"></td>
|
||||
</tr></table>
|
||||
|
||||
<center><font size=-2>generated on Fri Jul 29 06:39:20 2011</font></center></body>
|
||||
<center><font size=-2>generated on Tue Oct 18 13:41:09 2011</font></center></body>
|
||||
</html>
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<title>FreeType-2.4.6 API Reference</title>
|
||||
<title>FreeType-2.4.7 API Reference</title>
|
||||
<style type="text/css">
|
||||
body { font-family: Verdana, Geneva, Arial, Helvetica, serif;
|
||||
color: #000000;
|
||||
|
@ -35,7 +35,7 @@
|
|||
<table align=center><tr><td><font size=-1>[<a href="ft2-index.html">Index</a>]</font></td>
|
||||
<td width="100%"></td>
|
||||
<td><font size=-1>[<a href="ft2-toc.html">TOC</a>]</font></td></tr></table>
|
||||
<center><h1>FreeType-2.4.6 API Reference</h1></center>
|
||||
<center><h1>FreeType-2.4.7 API Reference</h1></center>
|
||||
|
||||
<center><h1>
|
||||
The TrueType Engine
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<title>FreeType-2.4.6 API Reference</title>
|
||||
<title>FreeType-2.4.7 API Reference</title>
|
||||
<style type="text/css">
|
||||
body { font-family: Verdana, Geneva, Arial, Helvetica, serif;
|
||||
color: #000000;
|
||||
|
@ -35,7 +35,7 @@
|
|||
<table align=center><tr><td><font size=-1>[<a href="ft2-index.html">Index</a>]</font></td>
|
||||
<td width="100%"></td>
|
||||
<td><font size=-1>[<a href="ft2-toc.html">TOC</a>]</font></td></tr></table>
|
||||
<center><h1>FreeType-2.4.6 API Reference</h1></center>
|
||||
<center><h1>FreeType-2.4.7 API Reference</h1></center>
|
||||
|
||||
<center><h1>
|
||||
TrueType Tables
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<title>FreeType-2.4.6 API Reference</title>
|
||||
<title>FreeType-2.4.7 API Reference</title>
|
||||
<style type="text/css">
|
||||
body { font-family: Verdana, Geneva, Arial, Helvetica, serif;
|
||||
color: #000000;
|
||||
|
@ -35,7 +35,7 @@
|
|||
<table align=center><tr><td><font size=-1>[<a href="ft2-index.html">Index</a>]</font></td>
|
||||
<td width="100%"></td>
|
||||
<td><font size=-1>[<a href="ft2-toc.html">TOC</a>]</font></td></tr></table>
|
||||
<center><h1>FreeType-2.4.6 API Reference</h1></center>
|
||||
<center><h1>FreeType-2.4.7 API Reference</h1></center>
|
||||
|
||||
<center><h1>
|
||||
Type 1 Tables
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<title>FreeType-2.4.6 API Reference</title>
|
||||
<title>FreeType-2.4.7 API Reference</title>
|
||||
<style type="text/css">
|
||||
body { font-family: Verdana, Geneva, Arial, Helvetica, serif;
|
||||
color: #000000;
|
||||
|
@ -35,7 +35,7 @@
|
|||
<table align=center><tr><td><font size=-1>[<a href="ft2-index.html">Index</a>]</font></td>
|
||||
<td width="100%"></td>
|
||||
<td><font size=-1>[<a href="ft2-toc.html">TOC</a>]</font></td></tr></table>
|
||||
<center><h1>FreeType-2.4.6 API Reference</h1></center>
|
||||
<center><h1>FreeType-2.4.7 API Reference</h1></center>
|
||||
|
||||
<center><h1>
|
||||
User allocation
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<title>FreeType-2.4.6 API Reference</title>
|
||||
<title>FreeType-2.4.7 API Reference</title>
|
||||
<style type="text/css">
|
||||
body { font-family: Verdana, Geneva, Arial, Helvetica, serif;
|
||||
color: #000000;
|
||||
|
@ -35,7 +35,7 @@
|
|||
<table align=center><tr><td><font size=-1>[<a href="ft2-index.html">Index</a>]</font></td>
|
||||
<td width="100%"></td>
|
||||
<td><font size=-1>[<a href="ft2-toc.html">TOC</a>]</font></td></tr></table>
|
||||
<center><h1>FreeType-2.4.6 API Reference</h1></center>
|
||||
<center><h1>FreeType-2.4.7 API Reference</h1></center>
|
||||
|
||||
<center><h1>
|
||||
FreeType Version
|
||||
|
@ -58,7 +58,7 @@ Defined in FT_FREETYPE_H (freetype/freetype.h).
|
|||
|
||||
#define <a href="ft2-version.html#FREETYPE_XXX">FREETYPE_MAJOR</a> 2
|
||||
#define <a href="ft2-version.html#FREETYPE_XXX">FREETYPE_MINOR</a> 4
|
||||
#define <a href="ft2-version.html#FREETYPE_XXX">FREETYPE_PATCH</a> 6
|
||||
#define <a href="ft2-version.html#FREETYPE_XXX">FREETYPE_PATCH</a> 7
|
||||
|
||||
</pre></table><br>
|
||||
<table align=center width="87%"><tr><td>
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<title>FreeType-2.4.6 API Reference</title>
|
||||
<title>FreeType-2.4.7 API Reference</title>
|
||||
<style type="text/css">
|
||||
body { font-family: Verdana, Geneva, Arial, Helvetica, serif;
|
||||
color: #000000;
|
||||
|
@ -35,7 +35,7 @@
|
|||
<table align=center><tr><td><font size=-1>[<a href="ft2-index.html">Index</a>]</font></td>
|
||||
<td width="100%"></td>
|
||||
<td><font size=-1>[<a href="ft2-toc.html">TOC</a>]</font></td></tr></table>
|
||||
<center><h1>FreeType-2.4.6 API Reference</h1></center>
|
||||
<center><h1>FreeType-2.4.7 API Reference</h1></center>
|
||||
|
||||
<center><h1>
|
||||
Window FNT Files
|
||||
|
|
|
@ -95,10 +95,6 @@ FT_BEGIN_HEADER
|
|||
#endif
|
||||
|
||||
|
||||
/* Preferred alignment of data */
|
||||
#define FT_ALIGNMENT 8
|
||||
|
||||
|
||||
/* FT_UNUSED is a macro used to indicate that a given parameter is not */
|
||||
/* used -- this is only used to get rid of unpleasant compiler warnings */
|
||||
#ifndef FT_UNUSED
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
/* ANSI-specific library and header configuration file (specification */
|
||||
/* only). */
|
||||
/* */
|
||||
/* Copyright 2002, 2003, 2004, 2005, 2006, 2007, 2009 by */
|
||||
/* Copyright 2002-2007, 2009, 2011 by */
|
||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
|
@ -59,11 +59,12 @@
|
|||
|
||||
#include <limits.h>
|
||||
|
||||
#define FT_CHAR_BIT CHAR_BIT
|
||||
#define FT_INT_MAX INT_MAX
|
||||
#define FT_INT_MIN INT_MIN
|
||||
#define FT_UINT_MAX UINT_MAX
|
||||
#define FT_ULONG_MAX ULONG_MAX
|
||||
#define FT_CHAR_BIT CHAR_BIT
|
||||
#define FT_USHORT_MAX USHRT_MAX
|
||||
#define FT_INT_MAX INT_MAX
|
||||
#define FT_INT_MIN INT_MIN
|
||||
#define FT_UINT_MAX UINT_MAX
|
||||
#define FT_ULONG_MAX ULONG_MAX
|
||||
|
||||
|
||||
/**********************************************************************/
|
||||
|
|
|
@ -3810,7 +3810,7 @@ FT_BEGIN_HEADER
|
|||
*/
|
||||
#define FREETYPE_MAJOR 2
|
||||
#define FREETYPE_MINOR 4
|
||||
#define FREETYPE_PATCH 6
|
||||
#define FREETYPE_PATCH 7
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
/* */
|
||||
/* FreeType utility functions for bitmaps (body). */
|
||||
/* */
|
||||
/* Copyright 2004, 2005, 2006, 2007, 2008, 2009 by */
|
||||
/* Copyright 2004-2009, 2011 by */
|
||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
|
@ -417,6 +417,10 @@
|
|||
|
||||
target->pitch = source->width + pad;
|
||||
|
||||
if ( target->pitch > 0 &&
|
||||
target->rows > FT_ULONG_MAX / target->pitch )
|
||||
return FT_Err_Invalid_Argument;
|
||||
|
||||
if ( target->rows * target->pitch > old_size &&
|
||||
FT_QREALLOC( target->buffer,
|
||||
old_size, target->rows * target->pitch ) )
|
||||
|
|
|
@ -620,7 +620,8 @@
|
|||
FT_DRIVER_IS_SCALABLE( driver ) &&
|
||||
FT_DRIVER_USES_OUTLINES( driver ) &&
|
||||
!FT_IS_TRICKY( face ) &&
|
||||
( ( face->internal->transform_matrix.yx == 0 &&
|
||||
( ( load_flags & FT_LOAD_IGNORE_TRANSFORM ) ||
|
||||
( face->internal->transform_matrix.yx == 0 &&
|
||||
face->internal->transform_matrix.xx != 0 ) ||
|
||||
( face->internal->transform_matrix.xx == 0 &&
|
||||
face->internal->transform_matrix.yx != 0 ) ) )
|
||||
|
@ -756,11 +757,11 @@
|
|||
else if ( slot->format == FT_GLYPH_FORMAT_OUTLINE )
|
||||
{
|
||||
/* apply `standard' transformation if no renderer is available */
|
||||
if ( &internal->transform_matrix )
|
||||
if ( internal->transform_flags & 1 )
|
||||
FT_Outline_Transform( &slot->outline,
|
||||
&internal->transform_matrix );
|
||||
|
||||
if ( &internal->transform_delta )
|
||||
if ( internal->transform_flags & 2 )
|
||||
FT_Outline_Translate( &slot->outline,
|
||||
internal->transform_delta.x,
|
||||
internal->transform_delta.y );
|
||||
|
@ -2613,6 +2614,18 @@
|
|||
metrics->height = bsize->height << 6;
|
||||
metrics->max_advance = bsize->x_ppem;
|
||||
}
|
||||
|
||||
FT_TRACE5(( "FT_Select_Metrics:\n" ));
|
||||
FT_TRACE5(( " x scale: %d (%f)\n",
|
||||
metrics->x_scale, metrics->x_scale / 65536.0 ));
|
||||
FT_TRACE5(( " y scale: %d (%f)\n",
|
||||
metrics->y_scale, metrics->y_scale / 65536.0 ));
|
||||
FT_TRACE5(( " ascender: %f\n", metrics->ascender / 64.0 ));
|
||||
FT_TRACE5(( " descender: %f\n", metrics->descender / 64.0 ));
|
||||
FT_TRACE5(( " height: %f\n", metrics->height / 64.0 ));
|
||||
FT_TRACE5(( " max advance: %f\n", metrics->max_advance / 64.0 ));
|
||||
FT_TRACE5(( " x ppem: %d\n", metrics->x_ppem ));
|
||||
FT_TRACE5(( " y ppem: %d\n", metrics->y_ppem ));
|
||||
}
|
||||
|
||||
|
||||
|
@ -2721,6 +2734,18 @@
|
|||
metrics->x_scale = 1L << 16;
|
||||
metrics->y_scale = 1L << 16;
|
||||
}
|
||||
|
||||
FT_TRACE5(( "FT_Request_Metrics:\n" ));
|
||||
FT_TRACE5(( " x scale: %d (%f)\n",
|
||||
metrics->x_scale, metrics->x_scale / 65536.0 ));
|
||||
FT_TRACE5(( " y scale: %d (%f)\n",
|
||||
metrics->y_scale, metrics->y_scale / 65536.0 ));
|
||||
FT_TRACE5(( " ascender: %f\n", metrics->ascender / 64.0 ));
|
||||
FT_TRACE5(( " descender: %f\n", metrics->descender / 64.0 ));
|
||||
FT_TRACE5(( " height: %f\n", metrics->height / 64.0 ));
|
||||
FT_TRACE5(( " max advance: %f\n", metrics->max_advance / 64.0 ));
|
||||
FT_TRACE5(( " x ppem: %d\n", metrics->x_ppem ));
|
||||
FT_TRACE5(( " y ppem: %d\n", metrics->y_ppem ));
|
||||
}
|
||||
|
||||
|
||||
|
@ -2742,7 +2767,33 @@
|
|||
clazz = face->driver->clazz;
|
||||
|
||||
if ( clazz->select_size )
|
||||
return clazz->select_size( face->size, (FT_ULong)strike_index );
|
||||
{
|
||||
FT_Error error;
|
||||
|
||||
|
||||
error = clazz->select_size( face->size, (FT_ULong)strike_index );
|
||||
|
||||
#ifdef FT_DEBUG_LEVEL_TRACE
|
||||
{
|
||||
FT_Size_Metrics* metrics = &face->size->metrics;
|
||||
|
||||
|
||||
FT_TRACE5(( "FT_Select_Size (font driver's `select_size'):\n" ));
|
||||
FT_TRACE5(( " x scale: %d (%f)\n",
|
||||
metrics->x_scale, metrics->x_scale / 65536.0 ));
|
||||
FT_TRACE5(( " y scale: %d (%f)\n",
|
||||
metrics->y_scale, metrics->y_scale / 65536.0 ));
|
||||
FT_TRACE5(( " ascender: %f\n", metrics->ascender / 64.0 ));
|
||||
FT_TRACE5(( " descender: %f\n", metrics->descender / 64.0 ));
|
||||
FT_TRACE5(( " height: %f\n", metrics->height / 64.0 ));
|
||||
FT_TRACE5(( " max advance: %f\n", metrics->max_advance / 64.0 ));
|
||||
FT_TRACE5(( " x ppem: %d\n", metrics->x_ppem ));
|
||||
FT_TRACE5(( " y ppem: %d\n", metrics->y_ppem ));
|
||||
}
|
||||
#endif
|
||||
|
||||
return error;
|
||||
}
|
||||
|
||||
FT_Select_Metrics( face, (FT_ULong)strike_index );
|
||||
|
||||
|
@ -2770,7 +2821,33 @@
|
|||
clazz = face->driver->clazz;
|
||||
|
||||
if ( clazz->request_size )
|
||||
return clazz->request_size( face->size, req );
|
||||
{
|
||||
FT_Error error;
|
||||
|
||||
|
||||
error = clazz->request_size( face->size, req );
|
||||
|
||||
#ifdef FT_DEBUG_LEVEL_TRACE
|
||||
{
|
||||
FT_Size_Metrics* metrics = &face->size->metrics;
|
||||
|
||||
|
||||
FT_TRACE5(( "FT_Request_Size (font driver's `request_size'):\n" ));
|
||||
FT_TRACE5(( " x scale: %d (%f)\n",
|
||||
metrics->x_scale, metrics->x_scale / 65536.0 ));
|
||||
FT_TRACE5(( " y scale: %d (%f)\n",
|
||||
metrics->y_scale, metrics->y_scale / 65536.0 ));
|
||||
FT_TRACE5(( " ascender: %f\n", metrics->ascender / 64.0 ));
|
||||
FT_TRACE5(( " descender: %f\n", metrics->descender / 64.0 ));
|
||||
FT_TRACE5(( " height: %f\n", metrics->height / 64.0 ));
|
||||
FT_TRACE5(( " max advance: %f\n", metrics->max_advance / 64.0 ));
|
||||
FT_TRACE5(( " x ppem: %d\n", metrics->x_ppem ));
|
||||
FT_TRACE5(( " y ppem: %d\n", metrics->y_ppem ));
|
||||
}
|
||||
#endif
|
||||
|
||||
return error;
|
||||
}
|
||||
|
||||
/*
|
||||
* The reason that a driver doesn't have `request_size' defined is
|
||||
|
|
|
@ -2222,7 +2222,6 @@
|
|||
if ( error )
|
||||
goto Exit;
|
||||
|
||||
// By VNG: http://old.nabble.com/Re%3A--bug--33992--heap-underflow-in-ft_stroke_border_close-td32265105.html
|
||||
/* don't try to end the path if no segments have been generated */
|
||||
if ( !stroker->first_point )
|
||||
{
|
||||
|
|
|
@ -4,8 +4,7 @@
|
|||
/* */
|
||||
/* OpenType and CFF data/program tables loader (body). */
|
||||
/* */
|
||||
/* Copyright 1996-2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, */
|
||||
/* 2010 by */
|
||||
/* Copyright 1996-2011 by */
|
||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
|
@ -1337,7 +1336,10 @@
|
|||
|
||||
error = cff_index_access_element( idx, font_index, &dict, &dict_len );
|
||||
if ( !error )
|
||||
{
|
||||
FT_TRACE4(( " top dictionary:\n" ));
|
||||
error = cff_parser_run( &parser, dict, dict + dict_len );
|
||||
}
|
||||
|
||||
cff_index_forget_element( idx, &dict );
|
||||
|
||||
|
@ -1366,6 +1368,7 @@
|
|||
FT_FRAME_ENTER( font->font_dict.private_size ) )
|
||||
goto Exit;
|
||||
|
||||
FT_TRACE4(( " private dictionary:\n" ));
|
||||
error = cff_parser_run( &parser,
|
||||
(FT_Byte*)stream->cursor,
|
||||
(FT_Byte*)stream->limit );
|
||||
|
@ -1494,6 +1497,7 @@
|
|||
goto Exit;
|
||||
|
||||
/* now, parse the top-level font dictionary */
|
||||
FT_TRACE4(( "parsing top-level\n" ));
|
||||
error = cff_subfont_load( &font->top_font,
|
||||
&font->font_dict_index,
|
||||
face_index,
|
||||
|
@ -1546,6 +1550,7 @@
|
|||
for ( idx = 0; idx < fd_index.count; idx++ )
|
||||
{
|
||||
sub = font->subfonts[idx];
|
||||
FT_TRACE4(( "parsing subfont %u\n", idx ));
|
||||
error = cff_subfont_load( sub, &fd_index, idx,
|
||||
stream, base_offset, library );
|
||||
if ( error )
|
||||
|
|
|
@ -607,7 +607,25 @@
|
|||
goto Bad_Format;
|
||||
}
|
||||
|
||||
if ( !dict->units_per_em )
|
||||
#ifdef FT_DEBUG_LEVEL_TRACE
|
||||
{
|
||||
FT_UInt idx;
|
||||
FT_String* s;
|
||||
|
||||
|
||||
FT_TRACE4(( "SIDs\n" ));
|
||||
|
||||
/* dump string index, including default strings for convenience */
|
||||
for ( idx = 0; idx < cff->num_strings + 390; idx++ )
|
||||
{
|
||||
s = cff_index_get_sid_string( cff, idx );
|
||||
if ( s )
|
||||
FT_TRACE4((" %5d %s\n", idx, s ));
|
||||
}
|
||||
}
|
||||
#endif /* FT_DEBUG_LEVEL_TRACE */
|
||||
|
||||
if ( !dict->has_font_matrix )
|
||||
dict->units_per_em = pure_cff ? 1000 : face->root.units_per_EM;
|
||||
|
||||
/* Normalize the font matrix so that `matrix->xx' is 1; the */
|
||||
|
@ -652,26 +670,32 @@
|
|||
FT_Fixed temp;
|
||||
|
||||
|
||||
if ( sub->units_per_em )
|
||||
if ( sub->has_font_matrix )
|
||||
{
|
||||
FT_Long scaling;
|
||||
|
||||
|
||||
if ( top->units_per_em > 1 && sub->units_per_em > 1 )
|
||||
scaling = FT_MIN( top->units_per_em, sub->units_per_em );
|
||||
else
|
||||
scaling = 1;
|
||||
/* if we have a top-level matrix, */
|
||||
/* concatenate the subfont matrix */
|
||||
|
||||
FT_Matrix_Multiply_Scaled( &top->font_matrix,
|
||||
&sub->font_matrix,
|
||||
scaling );
|
||||
FT_Vector_Transform_Scaled( &sub->font_offset,
|
||||
&top->font_matrix,
|
||||
scaling );
|
||||
if ( top->has_font_matrix )
|
||||
{
|
||||
if ( top->units_per_em > 1 && sub->units_per_em > 1 )
|
||||
scaling = FT_MIN( top->units_per_em, sub->units_per_em );
|
||||
else
|
||||
scaling = 1;
|
||||
|
||||
sub->units_per_em = FT_MulDiv( sub->units_per_em,
|
||||
top->units_per_em,
|
||||
scaling );
|
||||
FT_Matrix_Multiply_Scaled( &top->font_matrix,
|
||||
&sub->font_matrix,
|
||||
scaling );
|
||||
FT_Vector_Transform_Scaled( &sub->font_offset,
|
||||
&top->font_matrix,
|
||||
scaling );
|
||||
|
||||
sub->units_per_em = FT_MulDiv( sub->units_per_em,
|
||||
top->units_per_em,
|
||||
scaling );
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -690,16 +714,6 @@
|
|||
{
|
||||
*upm = FT_DivFix( *upm, temp );
|
||||
|
||||
/* if *upm is larger than 100*1000 we divide by 1000 -- */
|
||||
/* this can happen if e.g. there is no top-font FontMatrix */
|
||||
/* and the subfont FontMatrix already contains the complete */
|
||||
/* scaling for the subfont (see section 5.11 of the PLRM) */
|
||||
|
||||
/* 100 is a heuristic value */
|
||||
|
||||
if ( *upm > 100L * 1000L )
|
||||
*upm = ( *upm + 500 ) / 1000;
|
||||
|
||||
matrix->xx = FT_DivFix( matrix->xx, temp );
|
||||
matrix->yx = FT_DivFix( matrix->yx, temp );
|
||||
matrix->xy = FT_DivFix( matrix->xy, temp );
|
||||
|
|
|
@ -460,6 +460,8 @@
|
|||
|
||||
error = CFF_Err_Ok;
|
||||
|
||||
dict->has_font_matrix = TRUE;
|
||||
|
||||
/* We expect a well-formed font matrix, this is, the matrix elements */
|
||||
/* `xx' and `yy' are of approximately the same magnitude. To avoid */
|
||||
/* loss of precision, we use the magnitude of element `xx' to scale */
|
||||
|
@ -481,7 +483,7 @@
|
|||
|
||||
matrix->xx = 0x10000L;
|
||||
matrix->yx = 0;
|
||||
matrix->yx = 0;
|
||||
matrix->xy = 0;
|
||||
matrix->yy = 0x10000L;
|
||||
offset->x = 0;
|
||||
offset->y = 0;
|
||||
|
@ -498,11 +500,13 @@
|
|||
|
||||
*upm = power_tens[scaling];
|
||||
|
||||
FT_TRACE4(( " font matrix: [%f %f %f %f]\n",
|
||||
FT_TRACE4(( " [%f %f %f %f %f %f]\n",
|
||||
(double)matrix->xx / *upm / 65536,
|
||||
(double)matrix->xy / *upm / 65536,
|
||||
(double)matrix->yx / *upm / 65536,
|
||||
(double)matrix->yy / *upm / 65536 ));
|
||||
(double)matrix->yy / *upm / 65536,
|
||||
(double)offset->x / *upm / 65536,
|
||||
(double)offset->y / *upm / 65536 ));
|
||||
}
|
||||
|
||||
Exit:
|
||||
|
@ -529,7 +533,7 @@
|
|||
bbox->yMax = FT_RoundFix( cff_parse_fixed( data ) );
|
||||
error = CFF_Err_Ok;
|
||||
|
||||
FT_TRACE4(( " bbox: [%d %d %d %d]\n",
|
||||
FT_TRACE4(( " [%d %d %d %d]\n",
|
||||
bbox->xMin / 65536,
|
||||
bbox->yMin / 65536,
|
||||
bbox->xMax / 65536,
|
||||
|
@ -554,6 +558,9 @@
|
|||
{
|
||||
dict->private_size = cff_parse_num( data++ );
|
||||
dict->private_offset = cff_parse_num( data );
|
||||
FT_TRACE4(( " %lu %lu\n",
|
||||
dict->private_size, dict->private_offset ));
|
||||
|
||||
error = CFF_Err_Ok;
|
||||
}
|
||||
|
||||
|
@ -573,8 +580,8 @@
|
|||
|
||||
if ( parser->top >= parser->stack + 3 )
|
||||
{
|
||||
dict->cid_registry = (FT_UInt)cff_parse_num( data++ );
|
||||
dict->cid_ordering = (FT_UInt)cff_parse_num( data++ );
|
||||
dict->cid_registry = (FT_UInt)cff_parse_num( data++ );
|
||||
dict->cid_ordering = (FT_UInt)cff_parse_num( data++ );
|
||||
if ( **data == 30 )
|
||||
FT_TRACE1(( "cff_parse_cid_ros: real supplement is rounded\n" ));
|
||||
dict->cid_supplement = cff_parse_num( data );
|
||||
|
@ -583,7 +590,7 @@
|
|||
dict->cid_supplement ));
|
||||
error = CFF_Err_Ok;
|
||||
|
||||
FT_TRACE4(( " ROS: registry sid %d, ordering sid %d, supplement %d\n",
|
||||
FT_TRACE4(( " %d %d %d\n",
|
||||
dict->cid_registry,
|
||||
dict->cid_ordering,
|
||||
dict->cid_supplement ));
|
||||
|
@ -593,54 +600,59 @@
|
|||
}
|
||||
|
||||
|
||||
#define CFF_FIELD_NUM( code, name ) \
|
||||
CFF_FIELD( code, name, cff_kind_num )
|
||||
#define CFF_FIELD_FIXED( code, name ) \
|
||||
CFF_FIELD( code, name, cff_kind_fixed )
|
||||
#define CFF_FIELD_FIXED_1000( code, name ) \
|
||||
CFF_FIELD( code, name, cff_kind_fixed_thousand )
|
||||
#define CFF_FIELD_STRING( code, name ) \
|
||||
CFF_FIELD( code, name, cff_kind_string )
|
||||
#define CFF_FIELD_BOOL( code, name ) \
|
||||
CFF_FIELD( code, name, cff_kind_bool )
|
||||
#define CFF_FIELD_DELTA( code, name, max ) \
|
||||
CFF_FIELD( code, name, cff_kind_delta )
|
||||
#define CFF_FIELD_NUM( code, name, id ) \
|
||||
CFF_FIELD( code, name, id, cff_kind_num )
|
||||
#define CFF_FIELD_FIXED( code, name, id ) \
|
||||
CFF_FIELD( code, name, id, cff_kind_fixed )
|
||||
#define CFF_FIELD_FIXED_1000( code, name, id ) \
|
||||
CFF_FIELD( code, name, id, cff_kind_fixed_thousand )
|
||||
#define CFF_FIELD_STRING( code, name, id ) \
|
||||
CFF_FIELD( code, name, id, cff_kind_string )
|
||||
#define CFF_FIELD_BOOL( code, name, id ) \
|
||||
CFF_FIELD( code, name, id, cff_kind_bool )
|
||||
|
||||
#define CFFCODE_TOPDICT 0x1000
|
||||
#define CFFCODE_PRIVATE 0x2000
|
||||
|
||||
|
||||
#ifndef FT_CONFIG_OPTION_PIC
|
||||
|
||||
#define CFF_FIELD_CALLBACK( code, name ) \
|
||||
{ \
|
||||
cff_kind_callback, \
|
||||
code | CFFCODE, \
|
||||
0, 0, \
|
||||
cff_parse_ ## name, \
|
||||
0, 0 \
|
||||
},
|
||||
|
||||
#undef CFF_FIELD
|
||||
#define CFF_FIELD( code, name, kind ) \
|
||||
{ \
|
||||
kind, \
|
||||
code | CFFCODE, \
|
||||
FT_FIELD_OFFSET( name ), \
|
||||
FT_FIELD_SIZE( name ), \
|
||||
0, 0, 0 \
|
||||
#undef CFF_FIELD_DELTA
|
||||
|
||||
|
||||
#ifndef FT_DEBUG_LEVEL_TRACE
|
||||
|
||||
|
||||
#define CFF_FIELD_CALLBACK( code, name, id ) \
|
||||
{ \
|
||||
cff_kind_callback, \
|
||||
code | CFFCODE, \
|
||||
0, 0, \
|
||||
cff_parse_ ## name, \
|
||||
0, 0 \
|
||||
},
|
||||
|
||||
#undef CFF_FIELD_DELTA
|
||||
#define CFF_FIELD_DELTA( code, name, max ) \
|
||||
{ \
|
||||
cff_kind_delta, \
|
||||
code | CFFCODE, \
|
||||
FT_FIELD_OFFSET( name ), \
|
||||
FT_FIELD_SIZE_DELTA( name ), \
|
||||
0, \
|
||||
max, \
|
||||
FT_FIELD_OFFSET( num_ ## name ) \
|
||||
},
|
||||
#define CFF_FIELD( code, name, id, kind ) \
|
||||
{ \
|
||||
kind, \
|
||||
code | CFFCODE, \
|
||||
FT_FIELD_OFFSET( name ), \
|
||||
FT_FIELD_SIZE( name ), \
|
||||
0, 0, 0 \
|
||||
},
|
||||
|
||||
#define CFF_FIELD_DELTA( code, name, max, id ) \
|
||||
{ \
|
||||
cff_kind_delta, \
|
||||
code | CFFCODE, \
|
||||
FT_FIELD_OFFSET( name ), \
|
||||
FT_FIELD_SIZE_DELTA( name ), \
|
||||
0, \
|
||||
max, \
|
||||
FT_FIELD_OFFSET( num_ ## name ) \
|
||||
},
|
||||
|
||||
static const CFF_Field_Handler cff_field_handlers[] =
|
||||
{
|
||||
|
@ -651,83 +663,200 @@
|
|||
};
|
||||
|
||||
|
||||
#else /* FT_DEBUG_LEVEL_TRACE */
|
||||
|
||||
|
||||
|
||||
#define CFF_FIELD_CALLBACK( code, name, id ) \
|
||||
{ \
|
||||
cff_kind_callback, \
|
||||
code | CFFCODE, \
|
||||
0, 0, \
|
||||
cff_parse_ ## name, \
|
||||
0, 0, \
|
||||
id \
|
||||
},
|
||||
|
||||
#define CFF_FIELD( code, name, id, kind ) \
|
||||
{ \
|
||||
kind, \
|
||||
code | CFFCODE, \
|
||||
FT_FIELD_OFFSET( name ), \
|
||||
FT_FIELD_SIZE( name ), \
|
||||
0, 0, 0, \
|
||||
id \
|
||||
},
|
||||
|
||||
#define CFF_FIELD_DELTA( code, name, max, id ) \
|
||||
{ \
|
||||
cff_kind_delta, \
|
||||
code | CFFCODE, \
|
||||
FT_FIELD_OFFSET( name ), \
|
||||
FT_FIELD_SIZE_DELTA( name ), \
|
||||
0, \
|
||||
max, \
|
||||
FT_FIELD_OFFSET( num_ ## name ), \
|
||||
id \
|
||||
},
|
||||
|
||||
static const CFF_Field_Handler cff_field_handlers[] =
|
||||
{
|
||||
|
||||
#include "cfftoken.h"
|
||||
|
||||
{ 0, 0, 0, 0, 0, 0, 0, 0 }
|
||||
};
|
||||
|
||||
|
||||
#endif /* FT_DEBUG_LEVEL_TRACE */
|
||||
|
||||
|
||||
#else /* FT_CONFIG_OPTION_PIC */
|
||||
|
||||
void FT_Destroy_Class_cff_field_handlers(FT_Library library, CFF_Field_Handler* clazz)
|
||||
|
||||
void
|
||||
FT_Destroy_Class_cff_field_handlers( FT_Library library,
|
||||
CFF_Field_Handler* clazz )
|
||||
{
|
||||
FT_Memory memory = library->memory;
|
||||
FT_Memory memory = library->memory;
|
||||
|
||||
|
||||
if ( clazz )
|
||||
FT_FREE( clazz );
|
||||
}
|
||||
|
||||
FT_Error FT_Create_Class_cff_field_handlers(FT_Library library, CFF_Field_Handler** output_class)
|
||||
|
||||
FT_Error
|
||||
FT_Create_Class_cff_field_handlers( FT_Library library,
|
||||
CFF_Field_Handler** output_class )
|
||||
{
|
||||
CFF_Field_Handler* clazz;
|
||||
FT_Error error;
|
||||
FT_Memory memory = library->memory;
|
||||
int i=0;
|
||||
FT_Error error;
|
||||
FT_Memory memory = library->memory;
|
||||
|
||||
int i = 0;
|
||||
|
||||
|
||||
#undef CFF_FIELD
|
||||
#define CFF_FIELD( code, name, id, kind ) i++;
|
||||
#undef CFF_FIELD_DELTA
|
||||
#define CFF_FIELD_DELTA( code, name, max, id ) i++;
|
||||
#undef CFF_FIELD_CALLBACK
|
||||
#define CFF_FIELD_CALLBACK( code, name ) i++;
|
||||
#define CFF_FIELD( code, name, kind ) i++;
|
||||
#define CFF_FIELD_DELTA( code, name, max ) i++;
|
||||
#define CFF_FIELD_CALLBACK( code, name, id ) i++;
|
||||
|
||||
#include "cfftoken.h"
|
||||
i++;/*{ 0, 0, 0, 0, 0, 0, 0 }*/
|
||||
|
||||
if ( FT_ALLOC( clazz, sizeof(CFF_Field_Handler)*i ) )
|
||||
i++; /* { 0, 0, 0, 0, 0, 0, 0 } */
|
||||
|
||||
if ( FT_ALLOC( clazz, sizeof ( CFF_Field_Handler ) * i ) )
|
||||
return error;
|
||||
|
||||
i=0;
|
||||
#undef CFF_FIELD
|
||||
#undef CFF_FIELD_DELTA
|
||||
#undef CFF_FIELD_CALLBACK
|
||||
i = 0;
|
||||
|
||||
#define CFF_FIELD_CALLBACK( code_, name_ ) \
|
||||
clazz[i].kind = cff_kind_callback; \
|
||||
clazz[i].code = code_ | CFFCODE; \
|
||||
clazz[i].offset = 0; \
|
||||
clazz[i].size = 0; \
|
||||
clazz[i].reader = cff_parse_ ## name_; \
|
||||
clazz[i].array_max = 0; \
|
||||
clazz[i].count_offset = 0; \
|
||||
i++;
|
||||
|
||||
#ifndef FT_DEBUG_LEVEL_TRACE
|
||||
|
||||
|
||||
#undef CFF_FIELD_CALLBACK
|
||||
#define CFF_FIELD_CALLBACK( code_, name_, id_ ) \
|
||||
clazz[i].kind = cff_kind_callback; \
|
||||
clazz[i].code = code_ | CFFCODE; \
|
||||
clazz[i].offset = 0; \
|
||||
clazz[i].size = 0; \
|
||||
clazz[i].reader = cff_parse_ ## name_; \
|
||||
clazz[i].array_max = 0; \
|
||||
clazz[i].count_offset = 0; \
|
||||
i++;
|
||||
|
||||
#undef CFF_FIELD
|
||||
#define CFF_FIELD( code_, name_, kind_ ) \
|
||||
clazz[i].kind = kind_; \
|
||||
clazz[i].code = code_ | CFFCODE; \
|
||||
clazz[i].offset = FT_FIELD_OFFSET( name_ ); \
|
||||
clazz[i].size = FT_FIELD_SIZE( name_ ); \
|
||||
clazz[i].reader = 0; \
|
||||
clazz[i].array_max = 0; \
|
||||
clazz[i].count_offset = 0; \
|
||||
i++; \
|
||||
#define CFF_FIELD( code_, name_, id_, kind_ ) \
|
||||
clazz[i].kind = kind_; \
|
||||
clazz[i].code = code_ | CFFCODE; \
|
||||
clazz[i].offset = FT_FIELD_OFFSET( name_ ); \
|
||||
clazz[i].size = FT_FIELD_SIZE( name_ ); \
|
||||
clazz[i].reader = 0; \
|
||||
clazz[i].array_max = 0; \
|
||||
clazz[i].count_offset = 0; \
|
||||
i++; \
|
||||
|
||||
#undef CFF_FIELD_DELTA
|
||||
#define CFF_FIELD_DELTA( code_, name_, max_ ) \
|
||||
clazz[i].kind = cff_kind_delta; \
|
||||
clazz[i].code = code_ | CFFCODE; \
|
||||
clazz[i].offset = FT_FIELD_OFFSET( name_ ); \
|
||||
clazz[i].size = FT_FIELD_SIZE_DELTA( name_ ); \
|
||||
clazz[i].reader = 0; \
|
||||
clazz[i].array_max = max_; \
|
||||
clazz[i].count_offset = FT_FIELD_OFFSET( num_ ## name_ ); \
|
||||
i++;
|
||||
#define CFF_FIELD_DELTA( code_, name_, max_, id_ ) \
|
||||
clazz[i].kind = cff_kind_delta; \
|
||||
clazz[i].code = code_ | CFFCODE; \
|
||||
clazz[i].offset = FT_FIELD_OFFSET( name_ ); \
|
||||
clazz[i].size = FT_FIELD_SIZE_DELTA( name_ ); \
|
||||
clazz[i].reader = 0; \
|
||||
clazz[i].array_max = max_; \
|
||||
clazz[i].count_offset = FT_FIELD_OFFSET( num_ ## name_ ); \
|
||||
i++;
|
||||
|
||||
#include "cfftoken.h"
|
||||
|
||||
clazz[i].kind = 0;
|
||||
clazz[i].code = 0;
|
||||
clazz[i].offset = 0;
|
||||
clazz[i].size = 0;
|
||||
clazz[i].reader = 0;
|
||||
clazz[i].array_max = 0;
|
||||
clazz[i].kind = 0;
|
||||
clazz[i].code = 0;
|
||||
clazz[i].offset = 0;
|
||||
clazz[i].size = 0;
|
||||
clazz[i].reader = 0;
|
||||
clazz[i].array_max = 0;
|
||||
clazz[i].count_offset = 0;
|
||||
|
||||
|
||||
#else /* FT_DEBUG_LEVEL_TRACE */
|
||||
|
||||
|
||||
#undef CFF_FIELD_CALLBACK
|
||||
#define CFF_FIELD_CALLBACK( code_, name_, id_ ) \
|
||||
clazz[i].kind = cff_kind_callback; \
|
||||
clazz[i].code = code_ | CFFCODE; \
|
||||
clazz[i].offset = 0; \
|
||||
clazz[i].size = 0; \
|
||||
clazz[i].reader = cff_parse_ ## name_; \
|
||||
clazz[i].array_max = 0; \
|
||||
clazz[i].count_offset = 0; \
|
||||
clazz[i].id = id_; \
|
||||
i++;
|
||||
|
||||
#undef CFF_FIELD
|
||||
#define CFF_FIELD( code_, name_, id_, kind_ ) \
|
||||
clazz[i].kind = kind_; \
|
||||
clazz[i].code = code_ | CFFCODE; \
|
||||
clazz[i].offset = FT_FIELD_OFFSET( name_ ); \
|
||||
clazz[i].size = FT_FIELD_SIZE( name_ ); \
|
||||
clazz[i].reader = 0; \
|
||||
clazz[i].array_max = 0; \
|
||||
clazz[i].count_offset = 0; \
|
||||
clazz[i].id = id_; \
|
||||
i++; \
|
||||
|
||||
#undef CFF_FIELD_DELTA
|
||||
#define CFF_FIELD_DELTA( code_, name_, max_, id_ ) \
|
||||
clazz[i].kind = cff_kind_delta; \
|
||||
clazz[i].code = code_ | CFFCODE; \
|
||||
clazz[i].offset = FT_FIELD_OFFSET( name_ ); \
|
||||
clazz[i].size = FT_FIELD_SIZE_DELTA( name_ ); \
|
||||
clazz[i].reader = 0; \
|
||||
clazz[i].array_max = max_; \
|
||||
clazz[i].count_offset = FT_FIELD_OFFSET( num_ ## name_ ); \
|
||||
clazz[i].id = id_; \
|
||||
i++;
|
||||
|
||||
#include "cfftoken.h"
|
||||
|
||||
clazz[i].kind = 0;
|
||||
clazz[i].code = 0;
|
||||
clazz[i].offset = 0;
|
||||
clazz[i].size = 0;
|
||||
clazz[i].reader = 0;
|
||||
clazz[i].array_max = 0;
|
||||
clazz[i].count_offset = 0;
|
||||
clazz[i].id = 0;
|
||||
|
||||
|
||||
#endif /* FT_DEBUG_LEVEL_TRACE */
|
||||
|
||||
|
||||
*output_class = clazz;
|
||||
|
||||
return CFF_Err_Ok;
|
||||
}
|
||||
|
||||
|
@ -743,7 +872,7 @@
|
|||
FT_Byte* p = start;
|
||||
FT_Error error = CFF_Err_Ok;
|
||||
FT_Library library = parser->library;
|
||||
FT_UNUSED(library);
|
||||
FT_UNUSED( library );
|
||||
|
||||
|
||||
parser->top = parser->stack;
|
||||
|
@ -824,6 +953,10 @@
|
|||
FT_Byte* q = (FT_Byte*)parser->object + field->offset;
|
||||
|
||||
|
||||
#ifdef FT_DEBUG_LEVEL_TRACE
|
||||
FT_TRACE4(( " %s", field->id ));
|
||||
#endif
|
||||
|
||||
/* check that we have enough arguments -- except for */
|
||||
/* delta encoded arrays, which can be empty */
|
||||
if ( field->kind != cff_kind_delta && num_args < 1 )
|
||||
|
@ -862,6 +995,34 @@
|
|||
default: /* for 64-bit systems */
|
||||
*(FT_Long*)q = val;
|
||||
}
|
||||
|
||||
#ifdef FT_DEBUG_LEVEL_TRACE
|
||||
switch ( field->kind )
|
||||
{
|
||||
case cff_kind_bool:
|
||||
FT_TRACE4(( " %s\n", val ? "true" : "false" ));
|
||||
break;
|
||||
|
||||
case cff_kind_string:
|
||||
FT_TRACE4(( " %ld (SID)\n", val ));
|
||||
break;
|
||||
|
||||
case cff_kind_num:
|
||||
FT_TRACE4(( " %ld\n", val ));
|
||||
break;
|
||||
|
||||
case cff_kind_fixed:
|
||||
FT_TRACE4(( " %f\n", (double)val / 65536 ));
|
||||
break;
|
||||
|
||||
case cff_kind_fixed_thousand:
|
||||
FT_TRACE4(( " %f\n", (double)val / 65536 / 1000 ));
|
||||
|
||||
default:
|
||||
; /* never reached */
|
||||
}
|
||||
#endif
|
||||
|
||||
break;
|
||||
|
||||
case cff_kind_delta:
|
||||
|
@ -875,6 +1036,8 @@
|
|||
if ( num_args > field->array_max )
|
||||
num_args = field->array_max;
|
||||
|
||||
FT_TRACE4(( " [" ));
|
||||
|
||||
/* store count */
|
||||
*qcount = (FT_Byte)num_args;
|
||||
|
||||
|
@ -900,9 +1063,13 @@
|
|||
*(FT_Long*)q = val;
|
||||
}
|
||||
|
||||
FT_TRACE4(( " %ld", val ));
|
||||
|
||||
q += field->size;
|
||||
num_args--;
|
||||
}
|
||||
|
||||
FT_TRACE4(( "]\n" ));
|
||||
}
|
||||
break;
|
||||
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
/* */
|
||||
/* CFF token stream parser (specification) */
|
||||
/* */
|
||||
/* Copyright 1996-2001, 2002, 2003 by */
|
||||
/* Copyright 1996-2003, 2011 by */
|
||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
|
@ -90,6 +90,10 @@ FT_BEGIN_HEADER
|
|||
FT_UInt array_max;
|
||||
FT_UInt count_offset;
|
||||
|
||||
#ifdef FT_DEBUG_LEVEL_TRACE
|
||||
const char* id;
|
||||
#endif
|
||||
|
||||
} CFF_Field_Handler;
|
||||
|
||||
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
/* */
|
||||
/* CFF token definitions (specification only). */
|
||||
/* */
|
||||
/* Copyright 1996-2001, 2002, 2003 by */
|
||||
/* Copyright 1996-2003, 2011 by */
|
||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
|
@ -22,48 +22,48 @@
|
|||
#undef CFFCODE
|
||||
#define CFFCODE CFFCODE_TOPDICT
|
||||
|
||||
CFF_FIELD_STRING ( 0, version )
|
||||
CFF_FIELD_STRING ( 1, notice )
|
||||
CFF_FIELD_STRING ( 0x100, copyright )
|
||||
CFF_FIELD_STRING ( 2, full_name )
|
||||
CFF_FIELD_STRING ( 3, family_name )
|
||||
CFF_FIELD_STRING ( 4, weight )
|
||||
CFF_FIELD_BOOL ( 0x101, is_fixed_pitch )
|
||||
CFF_FIELD_FIXED ( 0x102, italic_angle )
|
||||
CFF_FIELD_FIXED ( 0x103, underline_position )
|
||||
CFF_FIELD_FIXED ( 0x104, underline_thickness )
|
||||
CFF_FIELD_NUM ( 0x105, paint_type )
|
||||
CFF_FIELD_NUM ( 0x106, charstring_type )
|
||||
CFF_FIELD_CALLBACK( 0x107, font_matrix )
|
||||
CFF_FIELD_NUM ( 13, unique_id )
|
||||
CFF_FIELD_CALLBACK( 5, font_bbox )
|
||||
CFF_FIELD_NUM ( 0x108, stroke_width )
|
||||
CFF_FIELD_NUM ( 15, charset_offset )
|
||||
CFF_FIELD_NUM ( 16, encoding_offset )
|
||||
CFF_FIELD_NUM ( 17, charstrings_offset )
|
||||
CFF_FIELD_CALLBACK( 18, private_dict )
|
||||
CFF_FIELD_NUM ( 0x114, synthetic_base )
|
||||
CFF_FIELD_STRING ( 0x115, embedded_postscript )
|
||||
CFF_FIELD_STRING ( 0, version, "Version" )
|
||||
CFF_FIELD_STRING ( 1, notice, "Notice" )
|
||||
CFF_FIELD_STRING ( 0x100, copyright, "Copyright" )
|
||||
CFF_FIELD_STRING ( 2, full_name, "FullName" )
|
||||
CFF_FIELD_STRING ( 3, family_name, "FamilyName" )
|
||||
CFF_FIELD_STRING ( 4, weight, "Weight" )
|
||||
CFF_FIELD_BOOL ( 0x101, is_fixed_pitch, "isFixedPitch" )
|
||||
CFF_FIELD_FIXED ( 0x102, italic_angle, "ItalicAngle" )
|
||||
CFF_FIELD_FIXED ( 0x103, underline_position, "UnderlinePosition" )
|
||||
CFF_FIELD_FIXED ( 0x104, underline_thickness, "UnderlineThickness" )
|
||||
CFF_FIELD_NUM ( 0x105, paint_type, "PaintType" )
|
||||
CFF_FIELD_NUM ( 0x106, charstring_type, "CharstringType" )
|
||||
CFF_FIELD_CALLBACK( 0x107, font_matrix, "FontMatrix" )
|
||||
CFF_FIELD_NUM ( 13, unique_id, "UniqueID" )
|
||||
CFF_FIELD_CALLBACK( 5, font_bbox, "FontBBox" )
|
||||
CFF_FIELD_NUM ( 0x108, stroke_width, "StrokeWidth" )
|
||||
CFF_FIELD_NUM ( 15, charset_offset, "charset" )
|
||||
CFF_FIELD_NUM ( 16, encoding_offset, "Encoding" )
|
||||
CFF_FIELD_NUM ( 17, charstrings_offset, "CharStrings" )
|
||||
CFF_FIELD_CALLBACK( 18, private_dict, "Private" )
|
||||
CFF_FIELD_NUM ( 0x114, synthetic_base, "SyntheticBase" )
|
||||
CFF_FIELD_STRING ( 0x115, embedded_postscript, "PostScript" )
|
||||
|
||||
#if 0
|
||||
CFF_FIELD_STRING ( 0x116, base_font_name )
|
||||
CFF_FIELD_DELTA ( 0x117, base_font_blend, 16 )
|
||||
CFF_FIELD_CALLBACK( 0x118, multiple_master )
|
||||
CFF_FIELD_CALLBACK( 0x119, blend_axis_types )
|
||||
CFF_FIELD_STRING ( 0x116, base_font_name, "BaseFontName" )
|
||||
CFF_FIELD_DELTA ( 0x117, base_font_blend, 16, "BaseFontBlend" )
|
||||
CFF_FIELD_CALLBACK( 0x118, multiple_master, "MultipleMaster" )
|
||||
CFF_FIELD_CALLBACK( 0x119, blend_axis_types, "BlendAxisTypes" )
|
||||
#endif
|
||||
|
||||
CFF_FIELD_CALLBACK( 0x11E, cid_ros )
|
||||
CFF_FIELD_NUM ( 0x11F, cid_font_version )
|
||||
CFF_FIELD_NUM ( 0x120, cid_font_revision )
|
||||
CFF_FIELD_NUM ( 0x121, cid_font_type )
|
||||
CFF_FIELD_NUM ( 0x122, cid_count )
|
||||
CFF_FIELD_NUM ( 0x123, cid_uid_base )
|
||||
CFF_FIELD_NUM ( 0x124, cid_fd_array_offset )
|
||||
CFF_FIELD_NUM ( 0x125, cid_fd_select_offset )
|
||||
CFF_FIELD_STRING ( 0x126, cid_font_name )
|
||||
CFF_FIELD_CALLBACK( 0x11E, cid_ros, "ROS" )
|
||||
CFF_FIELD_NUM ( 0x11F, cid_font_version, "CIDFontVersion" )
|
||||
CFF_FIELD_NUM ( 0x120, cid_font_revision, "CIDFontRevision" )
|
||||
CFF_FIELD_NUM ( 0x121, cid_font_type, "CIDFontType" )
|
||||
CFF_FIELD_NUM ( 0x122, cid_count, "CIDCount" )
|
||||
CFF_FIELD_NUM ( 0x123, cid_uid_base, "UIDBase" )
|
||||
CFF_FIELD_NUM ( 0x124, cid_fd_array_offset, "FDArray" )
|
||||
CFF_FIELD_NUM ( 0x125, cid_fd_select_offset, "FDSelect" )
|
||||
CFF_FIELD_STRING ( 0x126, cid_font_name, "FontName" )
|
||||
|
||||
#if 0
|
||||
CFF_FIELD_NUM ( 0x127, chameleon )
|
||||
CFF_FIELD_NUM ( 0x127, chameleon, "Chameleon" )
|
||||
#endif
|
||||
|
||||
|
||||
|
@ -72,26 +72,26 @@
|
|||
#undef CFFCODE
|
||||
#define CFFCODE CFFCODE_PRIVATE
|
||||
|
||||
CFF_FIELD_DELTA ( 6, blue_values, 14 )
|
||||
CFF_FIELD_DELTA ( 7, other_blues, 10 )
|
||||
CFF_FIELD_DELTA ( 8, family_blues, 14 )
|
||||
CFF_FIELD_DELTA ( 9, family_other_blues, 10 )
|
||||
CFF_FIELD_FIXED_1000( 0x109, blue_scale )
|
||||
CFF_FIELD_NUM ( 0x10A, blue_shift )
|
||||
CFF_FIELD_NUM ( 0x10B, blue_fuzz )
|
||||
CFF_FIELD_NUM ( 10, standard_width )
|
||||
CFF_FIELD_NUM ( 11, standard_height )
|
||||
CFF_FIELD_DELTA ( 0x10C, snap_widths, 13 )
|
||||
CFF_FIELD_DELTA ( 0x10D, snap_heights, 13 )
|
||||
CFF_FIELD_BOOL ( 0x10E, force_bold )
|
||||
CFF_FIELD_FIXED ( 0x10F, force_bold_threshold )
|
||||
CFF_FIELD_NUM ( 0x110, lenIV )
|
||||
CFF_FIELD_NUM ( 0x111, language_group )
|
||||
CFF_FIELD_FIXED ( 0x112, expansion_factor )
|
||||
CFF_FIELD_NUM ( 0x113, initial_random_seed )
|
||||
CFF_FIELD_NUM ( 19, local_subrs_offset )
|
||||
CFF_FIELD_NUM ( 20, default_width )
|
||||
CFF_FIELD_NUM ( 21, nominal_width )
|
||||
CFF_FIELD_DELTA ( 6, blue_values, 14, "BlueValues" )
|
||||
CFF_FIELD_DELTA ( 7, other_blues, 10, "OtherBlues" )
|
||||
CFF_FIELD_DELTA ( 8, family_blues, 14, "FamilyBlues" )
|
||||
CFF_FIELD_DELTA ( 9, family_other_blues, 10, "FamilyOtherBlues" )
|
||||
CFF_FIELD_FIXED_1000( 0x109, blue_scale, "BlueScale" )
|
||||
CFF_FIELD_NUM ( 0x10A, blue_shift, "BlueShift" )
|
||||
CFF_FIELD_NUM ( 0x10B, blue_fuzz, "BlueFuzz" )
|
||||
CFF_FIELD_NUM ( 10, standard_width, "StdHW" )
|
||||
CFF_FIELD_NUM ( 11, standard_height, "StdVW" )
|
||||
CFF_FIELD_DELTA ( 0x10C, snap_widths, 13, "StemSnapH" )
|
||||
CFF_FIELD_DELTA ( 0x10D, snap_heights, 13, "StemSnapV" )
|
||||
CFF_FIELD_BOOL ( 0x10E, force_bold, "ForceBold" )
|
||||
CFF_FIELD_FIXED ( 0x10F, force_bold_threshold, "ForceBoldThreshold" )
|
||||
CFF_FIELD_NUM ( 0x110, lenIV, "lenIV" )
|
||||
CFF_FIELD_NUM ( 0x111, language_group, "LanguageGroup" )
|
||||
CFF_FIELD_FIXED ( 0x112, expansion_factor, "ExpansionFactor" )
|
||||
CFF_FIELD_NUM ( 0x113, initial_random_seed, "initialRandomSeed" )
|
||||
CFF_FIELD_NUM ( 19, local_subrs_offset, "Subrs" )
|
||||
CFF_FIELD_NUM ( 20, default_width, "defaultWidthX" )
|
||||
CFF_FIELD_NUM ( 21, nominal_width, "nominalWidthX" )
|
||||
|
||||
|
||||
/* END */
|
||||
|
|
|
@ -117,6 +117,7 @@ FT_BEGIN_HEADER
|
|||
FT_Int paint_type;
|
||||
FT_Int charstring_type;
|
||||
FT_Matrix font_matrix;
|
||||
FT_Bool has_font_matrix;
|
||||
FT_ULong units_per_em; /* temporarily used as scaling value also */
|
||||
FT_Vector font_offset;
|
||||
FT_ULong unique_id;
|
||||
|
|
|
@ -173,6 +173,7 @@
|
|||
FT_UShort store;
|
||||
#endif
|
||||
FT_ULong offset;
|
||||
FT_Long gid_limit;
|
||||
|
||||
|
||||
lig_action = FT_NEXT_ULONG( p );
|
||||
|
@ -186,8 +187,9 @@
|
|||
/* this offset is 30-bit signed value to add to GID */
|
||||
/* it is different from the location offset in mort */
|
||||
if ( ( offset & 0x3FFF0000UL ) == 0x3FFF0000UL )
|
||||
{
|
||||
if ( offset + valid->face->num_glyphs > 0x40000000UL )
|
||||
{ /* negative offset */
|
||||
gid_limit = valid->face->num_glyphs - ( offset & 0x0000FFFFUL );
|
||||
if ( gid_limit > 0 )
|
||||
return;
|
||||
|
||||
GXV_TRACE(( "ligature action table includes"
|
||||
|
@ -197,8 +199,8 @@
|
|||
GXV_SET_ERR_IF_PARANOID( FT_INVALID_OFFSET );
|
||||
}
|
||||
else if ( ( offset & 0x3FFF0000UL ) == 0x0000000UL )
|
||||
{
|
||||
if ( offset + valid->face->num_glyphs < 0 )
|
||||
{ /* positive offset */
|
||||
if ( (FT_Long)offset < valid->face->num_glyphs )
|
||||
return;
|
||||
|
||||
GXV_TRACE(( "ligature action table includes"
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
/* be used to parse compressed PCF fonts, as found with many X11 server */
|
||||
/* distributions. */
|
||||
/* */
|
||||
/* Copyright 2005, 2006, 2007, 2009 by David Turner. */
|
||||
/* Copyright 2005-2007, 2009, 2011 by David Turner. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
/* modified, and distributed under the terms of the FreeType project */
|
||||
|
@ -124,6 +124,15 @@
|
|||
old_size = 0;
|
||||
}
|
||||
|
||||
/* requirement of the character stack larger than 1<<LZW_MAX_BITS */
|
||||
/* implies bug in the decompression code */
|
||||
if ( new_size > ( 1 << LZW_MAX_BITS ) )
|
||||
{
|
||||
new_size = 1 << LZW_MAX_BITS;
|
||||
if ( new_size == old_size )
|
||||
return -1;
|
||||
}
|
||||
|
||||
if ( FT_RENEW_ARRAY( state->stack, old_size, new_size ) )
|
||||
return -1;
|
||||
|
||||
|
@ -279,7 +288,7 @@
|
|||
: state->max_free + 1;
|
||||
|
||||
c = ft_lzwstate_get_code( state );
|
||||
if ( c < 0 )
|
||||
if ( c < 0 || c > 255 )
|
||||
goto Eof;
|
||||
|
||||
old_code = old_char = (FT_UInt)c;
|
||||
|
@ -312,11 +321,12 @@
|
|||
/* why not LZW_FIRST-256 ? */
|
||||
state->free_ent = ( LZW_FIRST - 1 ) - 256;
|
||||
state->buf_clear = 1;
|
||||
c = ft_lzwstate_get_code( state );
|
||||
if ( c < 0 )
|
||||
goto Eof;
|
||||
|
||||
code = (FT_UInt)c;
|
||||
/* not quite right, but at least more predictable */
|
||||
old_code = 0;
|
||||
old_char = 0;
|
||||
|
||||
goto NextCode;
|
||||
}
|
||||
|
||||
in_code = code; /* save code for later */
|
||||
|
@ -326,6 +336,10 @@
|
|||
/* special case for KwKwKwK */
|
||||
if ( code - 256U >= state->free_ent )
|
||||
{
|
||||
/* corrupted LZW stream */
|
||||
if ( code - 256U > state->free_ent )
|
||||
goto Eof;
|
||||
|
||||
FTLZW_STACK_PUSH( old_char );
|
||||
code = old_code;
|
||||
}
|
||||
|
|
|
@ -764,6 +764,13 @@
|
|||
if ( arg_cnt != 0 )
|
||||
goto Unexpected_OtherSubr;
|
||||
|
||||
if ( decoder->flex_state == 0 )
|
||||
{
|
||||
FT_ERROR(( "t1_decoder_parse_charstrings:"
|
||||
" missing flex start\n" ));
|
||||
goto Syntax_Error;
|
||||
}
|
||||
|
||||
/* note that we should not add a point for index 0; */
|
||||
/* this will move our current position to the flex */
|
||||
/* point without adding any point to the outline */
|
||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -4,7 +4,7 @@
|
|||
/* */
|
||||
/* The FreeType glyph rasterizer interface (body). */
|
||||
/* */
|
||||
/* Copyright 1996-2001, 2002, 2003, 2005, 2006 by */
|
||||
/* Copyright 1996-2003, 2005, 2006, 2011 by */
|
||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
|
@ -176,6 +176,13 @@
|
|||
|
||||
width = (FT_UInt)( ( cbox.xMax - cbox.xMin ) >> 6 );
|
||||
height = (FT_UInt)( ( cbox.yMax - cbox.yMin ) >> 6 );
|
||||
|
||||
if ( width > FT_USHORT_MAX || height > FT_USHORT_MAX )
|
||||
{
|
||||
error = Raster_Err_Invalid_Argument;
|
||||
goto Exit;
|
||||
}
|
||||
|
||||
bitmap = &slot->bitmap;
|
||||
memory = render->root.memory;
|
||||
|
||||
|
|
|
@ -872,6 +872,7 @@ typedef ptrdiff_t FT_PtrDist;
|
|||
const FT_Vector* to )
|
||||
{
|
||||
TPos dx, dy;
|
||||
TPos min, max, y;
|
||||
int top, level;
|
||||
int* levels;
|
||||
FT_Vector* arc;
|
||||
|
@ -884,45 +885,45 @@ typedef ptrdiff_t FT_PtrDist;
|
|||
arc[1].y = UPSCALE( control->y );
|
||||
arc[2].x = ras.x;
|
||||
arc[2].y = ras.y;
|
||||
top = 0;
|
||||
|
||||
dx = FT_ABS( arc[2].x + arc[0].x - 2 * arc[1].x );
|
||||
dy = FT_ABS( arc[2].y + arc[0].y - 2 * arc[1].y );
|
||||
if ( dx < dy )
|
||||
dx = dy;
|
||||
|
||||
if ( dx < ONE_PIXEL / 4 )
|
||||
goto Draw;
|
||||
|
||||
/* short-cut the arc that crosses the current band */
|
||||
min = max = arc[0].y;
|
||||
|
||||
y = arc[1].y;
|
||||
if ( y < min ) min = y;
|
||||
if ( y > max ) max = y;
|
||||
|
||||
y = arc[2].y;
|
||||
if ( y < min ) min = y;
|
||||
if ( y > max ) max = y;
|
||||
|
||||
if ( TRUNC( min ) >= ras.max_ey || TRUNC( max ) < ras.min_ey )
|
||||
goto Draw;
|
||||
|
||||
level = 0;
|
||||
while ( dx > ONE_PIXEL / 6 )
|
||||
do
|
||||
{
|
||||
dx >>= 2;
|
||||
level++;
|
||||
}
|
||||
} while ( dx > ONE_PIXEL / 4 );
|
||||
|
||||
levels = ras.lev_stack;
|
||||
levels[0] = level;
|
||||
top = 0;
|
||||
|
||||
do
|
||||
{
|
||||
level = levels[top];
|
||||
if ( level > 1 )
|
||||
if ( level > 0 )
|
||||
{
|
||||
/* check that the arc crosses the current band */
|
||||
TPos min, max, y;
|
||||
|
||||
|
||||
min = max = arc[0].y;
|
||||
|
||||
y = arc[1].y;
|
||||
if ( y < min ) min = y;
|
||||
if ( y > max ) max = y;
|
||||
|
||||
y = arc[2].y;
|
||||
if ( y < min ) min = y;
|
||||
if ( y > max ) max = y;
|
||||
|
||||
if ( TRUNC( min ) >= ras.max_ey || TRUNC( max ) < ras.min_ey )
|
||||
goto Draw;
|
||||
|
||||
gray_split_conic( arc );
|
||||
arc += 2;
|
||||
top++;
|
||||
|
@ -973,6 +974,7 @@ typedef ptrdiff_t FT_PtrDist;
|
|||
const FT_Vector* to )
|
||||
{
|
||||
FT_Vector* arc;
|
||||
TPos min, max, y;
|
||||
|
||||
|
||||
arc = ras.bez_stack;
|
||||
|
@ -985,35 +987,32 @@ typedef ptrdiff_t FT_PtrDist;
|
|||
arc[3].x = ras.x;
|
||||
arc[3].y = ras.y;
|
||||
|
||||
/* Short-cut the arc that crosses the current band. */
|
||||
min = max = arc[0].y;
|
||||
|
||||
y = arc[1].y;
|
||||
if ( y < min )
|
||||
min = y;
|
||||
if ( y > max )
|
||||
max = y;
|
||||
|
||||
y = arc[2].y;
|
||||
if ( y < min )
|
||||
min = y;
|
||||
if ( y > max )
|
||||
max = y;
|
||||
|
||||
y = arc[3].y;
|
||||
if ( y < min )
|
||||
min = y;
|
||||
if ( y > max )
|
||||
max = y;
|
||||
|
||||
if ( TRUNC( min ) >= ras.max_ey || TRUNC( max ) < ras.min_ey )
|
||||
goto Draw;
|
||||
|
||||
for (;;)
|
||||
{
|
||||
/* Check that the arc crosses the current band. */
|
||||
TPos min, max, y;
|
||||
|
||||
|
||||
min = max = arc[0].y;
|
||||
|
||||
y = arc[1].y;
|
||||
if ( y < min )
|
||||
min = y;
|
||||
if ( y > max )
|
||||
max = y;
|
||||
|
||||
y = arc[2].y;
|
||||
if ( y < min )
|
||||
min = y;
|
||||
if ( y > max )
|
||||
max = y;
|
||||
|
||||
y = arc[3].y;
|
||||
if ( y < min )
|
||||
min = y;
|
||||
if ( y > max )
|
||||
max = y;
|
||||
|
||||
if ( TRUNC( min ) >= ras.max_ey || TRUNC( max ) < ras.min_ey )
|
||||
goto Draw;
|
||||
|
||||
/* Decide whether to split or draw. See `Rapid Termination */
|
||||
/* Evaluation for Recursive Subdivision of Bezier Curves' by Thomas */
|
||||
/* F. Hain, at */
|
||||
|
|
|
@ -412,8 +412,8 @@ t1_expert_encoding = \
|
|||
]
|
||||
|
||||
|
||||
# This data has been taken literally from the file `glyphlist.txt',
|
||||
# version 2.0, 22 Sept 2002. It is available from
|
||||
# This data has been taken literally from the files `glyphlist.txt'
|
||||
# and `zapfdingbats.txt' version 2.0, Sept 2002. It is available from
|
||||
#
|
||||
# http://sourceforge.net/adobe/aglfn/
|
||||
#
|
||||
|
@ -4699,6 +4699,207 @@ zretroflexhook;0290
|
|||
zstroke;01B6
|
||||
zuhiragana;305A
|
||||
zukatakana;30BA
|
||||
a100;275E
|
||||
a101;2761
|
||||
a102;2762
|
||||
a103;2763
|
||||
a104;2764
|
||||
a105;2710
|
||||
a106;2765
|
||||
a107;2766
|
||||
a108;2767
|
||||
a109;2660
|
||||
a10;2721
|
||||
a110;2665
|
||||
a111;2666
|
||||
a112;2663
|
||||
a117;2709
|
||||
a118;2708
|
||||
a119;2707
|
||||
a11;261B
|
||||
a120;2460
|
||||
a121;2461
|
||||
a122;2462
|
||||
a123;2463
|
||||
a124;2464
|
||||
a125;2465
|
||||
a126;2466
|
||||
a127;2467
|
||||
a128;2468
|
||||
a129;2469
|
||||
a12;261E
|
||||
a130;2776
|
||||
a131;2777
|
||||
a132;2778
|
||||
a133;2779
|
||||
a134;277A
|
||||
a135;277B
|
||||
a136;277C
|
||||
a137;277D
|
||||
a138;277E
|
||||
a139;277F
|
||||
a13;270C
|
||||
a140;2780
|
||||
a141;2781
|
||||
a142;2782
|
||||
a143;2783
|
||||
a144;2784
|
||||
a145;2785
|
||||
a146;2786
|
||||
a147;2787
|
||||
a148;2788
|
||||
a149;2789
|
||||
a14;270D
|
||||
a150;278A
|
||||
a151;278B
|
||||
a152;278C
|
||||
a153;278D
|
||||
a154;278E
|
||||
a155;278F
|
||||
a156;2790
|
||||
a157;2791
|
||||
a158;2792
|
||||
a159;2793
|
||||
a15;270E
|
||||
a160;2794
|
||||
a161;2192
|
||||
a162;27A3
|
||||
a163;2194
|
||||
a164;2195
|
||||
a165;2799
|
||||
a166;279B
|
||||
a167;279C
|
||||
a168;279D
|
||||
a169;279E
|
||||
a16;270F
|
||||
a170;279F
|
||||
a171;27A0
|
||||
a172;27A1
|
||||
a173;27A2
|
||||
a174;27A4
|
||||
a175;27A5
|
||||
a176;27A6
|
||||
a177;27A7
|
||||
a178;27A8
|
||||
a179;27A9
|
||||
a17;2711
|
||||
a180;27AB
|
||||
a181;27AD
|
||||
a182;27AF
|
||||
a183;27B2
|
||||
a184;27B3
|
||||
a185;27B5
|
||||
a186;27B8
|
||||
a187;27BA
|
||||
a188;27BB
|
||||
a189;27BC
|
||||
a18;2712
|
||||
a190;27BD
|
||||
a191;27BE
|
||||
a192;279A
|
||||
a193;27AA
|
||||
a194;27B6
|
||||
a195;27B9
|
||||
a196;2798
|
||||
a197;27B4
|
||||
a198;27B7
|
||||
a199;27AC
|
||||
a19;2713
|
||||
a1;2701
|
||||
a200;27AE
|
||||
a201;27B1
|
||||
a202;2703
|
||||
a203;2750
|
||||
a204;2752
|
||||
a205;276E
|
||||
a206;2770
|
||||
a20;2714
|
||||
a21;2715
|
||||
a22;2716
|
||||
a23;2717
|
||||
a24;2718
|
||||
a25;2719
|
||||
a26;271A
|
||||
a27;271B
|
||||
a28;271C
|
||||
a29;2722
|
||||
a2;2702
|
||||
a30;2723
|
||||
a31;2724
|
||||
a32;2725
|
||||
a33;2726
|
||||
a34;2727
|
||||
a35;2605
|
||||
a36;2729
|
||||
a37;272A
|
||||
a38;272B
|
||||
a39;272C
|
||||
a3;2704
|
||||
a40;272D
|
||||
a41;272E
|
||||
a42;272F
|
||||
a43;2730
|
||||
a44;2731
|
||||
a45;2732
|
||||
a46;2733
|
||||
a47;2734
|
||||
a48;2735
|
||||
a49;2736
|
||||
a4;260E
|
||||
a50;2737
|
||||
a51;2738
|
||||
a52;2739
|
||||
a53;273A
|
||||
a54;273B
|
||||
a55;273C
|
||||
a56;273D
|
||||
a57;273E
|
||||
a58;273F
|
||||
a59;2740
|
||||
a5;2706
|
||||
a60;2741
|
||||
a61;2742
|
||||
a62;2743
|
||||
a63;2744
|
||||
a64;2745
|
||||
a65;2746
|
||||
a66;2747
|
||||
a67;2748
|
||||
a68;2749
|
||||
a69;274A
|
||||
a6;271D
|
||||
a70;274B
|
||||
a71;25CF
|
||||
a72;274D
|
||||
a73;25A0
|
||||
a74;274F
|
||||
a75;2751
|
||||
a76;25B2
|
||||
a77;25BC
|
||||
a78;25C6
|
||||
a79;2756
|
||||
a7;271E
|
||||
a81;25D7
|
||||
a82;2758
|
||||
a83;2759
|
||||
a84;275A
|
||||
a85;276F
|
||||
a86;2771
|
||||
a87;2772
|
||||
a88;2773
|
||||
a89;2768
|
||||
a8;271F
|
||||
a90;2769
|
||||
a91;276C
|
||||
a92;276D
|
||||
a93;276A
|
||||
a94;276B
|
||||
a95;2774
|
||||
a96;2775
|
||||
a97;275B
|
||||
a98;275C
|
||||
a99;275D
|
||||
a9;2720
|
||||
"""
|
||||
|
||||
|
||||
|
@ -5066,7 +5267,7 @@ def main():
|
|||
write( "/* */\n" )
|
||||
write( "/* PostScript glyph names. */\n" )
|
||||
write( "/* */\n" )
|
||||
write( "/* Copyright 2005, 2008 by */\n" )
|
||||
write( "/* Copyright 2005, 2008, 2011 by */\n" )
|
||||
write( "/* David Turner, Robert Wilhelm, and Werner Lemberg. */\n" )
|
||||
write( "/* */\n" )
|
||||
write( "/* This file is part of the FreeType project, and may only be used, */\n" )
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
/* */
|
||||
/* TrueType GX Font Variation loader */
|
||||
/* */
|
||||
/* Copyright 2004, 2005, 2006, 2007, 2008, 2009, 2010 by */
|
||||
/* Copyright 2004-2011 by */
|
||||
/* David Turner, Robert Wilhelm, Werner Lemberg, and George Williams. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
|
@ -1474,6 +1474,9 @@
|
|||
{
|
||||
for ( j = 0; j < point_count; ++j )
|
||||
{
|
||||
if ( localpoints[j] >= n_points )
|
||||
continue;
|
||||
|
||||
delta_xy[localpoints[j]].x += FT_MulFix( deltas_x[j], apply );
|
||||
delta_xy[localpoints[j]].y += FT_MulFix( deltas_y[j], apply );
|
||||
}
|
||||
|
|
|
@ -16,6 +16,10 @@
|
|||
/***************************************************************************/
|
||||
|
||||
|
||||
/* Greg Hitchcock from Microsoft has helped a lot in resolving unclear */
|
||||
/* issues; many thanks! */
|
||||
|
||||
|
||||
#include <ft2build.h>
|
||||
#include FT_INTERNAL_DEBUG_H
|
||||
#include FT_INTERNAL_CALC_H
|
||||
|
@ -664,9 +668,9 @@
|
|||
FT_Int i;
|
||||
|
||||
|
||||
/* XXXX: Will probably disappear soon with all the code range */
|
||||
/* management, which is now rather obsolete. */
|
||||
/* */
|
||||
/* XXX: Will probably disappear soon with all the code range */
|
||||
/* management, which is now rather obsolete. */
|
||||
/* */
|
||||
size->num_function_defs = exec->numFDefs;
|
||||
size->num_instruction_defs = exec->numIDefs;
|
||||
|
||||
|
@ -2841,6 +2845,17 @@
|
|||
A = p1->x - p2->x;
|
||||
B = p1->y - p2->y;
|
||||
|
||||
/* If p1 == p2, SPVTL and SFVTL behave the same as */
|
||||
/* SPVTCA[X] and SFVTCA[X], respectively. */
|
||||
/* */
|
||||
/* Confirmed by Greg Hitchcock. */
|
||||
|
||||
if ( A == 0 && B == 0 )
|
||||
{
|
||||
A = 0x4000;
|
||||
aOpc = 0;
|
||||
}
|
||||
|
||||
if ( ( aOpc & 1 ) != 0 )
|
||||
{
|
||||
C = B; /* counter clockwise rotation */
|
||||
|
@ -5095,8 +5110,8 @@
|
|||
|
||||
CUR_Func_move( &CUR.zp2, L, args[1] - K );
|
||||
|
||||
/* not part of the specs, but here for safety */
|
||||
|
||||
/* UNDOCUMENTED! The MS rasterizer does that with */
|
||||
/* twilight points (confirmed by Greg Hitchcock) */
|
||||
if ( CUR.GS.gep2 == 0 )
|
||||
CUR.zp2.org[L] = CUR.zp2.cur[L];
|
||||
}
|
||||
|
@ -5177,7 +5192,8 @@
|
|||
Ins_SDPVTL( INS_ARG )
|
||||
{
|
||||
FT_Long A, B, C;
|
||||
FT_UShort p1, p2; /* was FT_Int in pas type ERROR */
|
||||
FT_UShort p1, p2; /* was FT_Int in pas type ERROR */
|
||||
FT_Int aOpc = CUR.opcode;
|
||||
|
||||
|
||||
p1 = (FT_UShort)args[1];
|
||||
|
@ -5198,9 +5214,20 @@
|
|||
|
||||
A = v1->x - v2->x;
|
||||
B = v1->y - v2->y;
|
||||
|
||||
/* If v1 == v2, SDPVTL behaves the same as */
|
||||
/* SVTCA[X], respectively. */
|
||||
/* */
|
||||
/* Confirmed by Greg Hitchcock. */
|
||||
|
||||
if ( A == 0 && B == 0 )
|
||||
{
|
||||
A = 0x4000;
|
||||
aOpc = 0;
|
||||
}
|
||||
}
|
||||
|
||||
if ( ( CUR.opcode & 1 ) != 0 )
|
||||
if ( ( aOpc & 1 ) != 0 )
|
||||
{
|
||||
C = B; /* counter clockwise rotation */
|
||||
B = A;
|
||||
|
@ -5218,7 +5245,7 @@
|
|||
B = v1->y - v2->y;
|
||||
}
|
||||
|
||||
if ( ( CUR.opcode & 1 ) != 0 )
|
||||
if ( ( aOpc & 1 ) != 0 )
|
||||
{
|
||||
C = B; /* counter clockwise rotation */
|
||||
B = A;
|
||||
|
@ -5704,7 +5731,6 @@
|
|||
}
|
||||
}
|
||||
else
|
||||
/* XXX: UNDOCUMENTED! SHP touches the points */
|
||||
MOVE_Zp2_Point( point, dx, dy, TRUE );
|
||||
|
||||
CUR.GS.loop--;
|
||||
|
@ -5765,7 +5791,6 @@
|
|||
last_point = 0;
|
||||
}
|
||||
|
||||
/* XXX: UNDOCUMENTED! SHC touches the points */
|
||||
for ( i = first_point; i <= last_point; i++ )
|
||||
{
|
||||
if ( zp.cur != CUR.zp2.cur || refp != i )
|
||||
|
@ -5920,9 +5945,9 @@
|
|||
return;
|
||||
}
|
||||
|
||||
/* XXX: UNDOCUMENTED! behaviour */
|
||||
if ( CUR.GS.gep1 == 0 ) /* if the point that is to be moved */
|
||||
/* is in twilight zone */
|
||||
/* UNDOCUMENTED! The MS rasterizer does that with */
|
||||
/* twilight points (confirmed by Greg Hitchcock) */
|
||||
if ( CUR.GS.gep1 == 0 )
|
||||
{
|
||||
CUR.zp1.org[point] = CUR.zp0.org[CUR.GS.rp0];
|
||||
CUR_Func_move_orig( &CUR.zp1, point, args[1] );
|
||||
|
@ -5965,8 +5990,6 @@
|
|||
return;
|
||||
}
|
||||
|
||||
/* XXX: Is there some undocumented feature while in the */
|
||||
/* twilight zone? ? */
|
||||
if ( ( CUR.opcode & 1 ) != 0 )
|
||||
{
|
||||
cur_dist = CUR_fast_project( &CUR.zp0.cur[point] );
|
||||
|
@ -6009,34 +6032,34 @@
|
|||
goto Fail;
|
||||
}
|
||||
|
||||
/* XXX: UNDOCUMENTED! */
|
||||
/* */
|
||||
/* The behaviour of an MIAP instruction is quite */
|
||||
/* different when used in the twilight zone. */
|
||||
/* */
|
||||
/* First, no control value cut-in test is performed */
|
||||
/* as it would fail anyway. Second, the original */
|
||||
/* point, i.e. (org_x,org_y) of zp0.point, is set */
|
||||
/* to the absolute, unrounded distance found in */
|
||||
/* the CVT. */
|
||||
/* */
|
||||
/* This is used in the CVT programs of the Microsoft */
|
||||
/* fonts Arial, Times, etc., in order to re-adjust */
|
||||
/* some key font heights. It allows the use of the */
|
||||
/* IP instruction in the twilight zone, which */
|
||||
/* otherwise would be `illegal' according to the */
|
||||
/* specification. */
|
||||
/* */
|
||||
/* We implement it with a special sequence for the */
|
||||
/* twilight zone. This is a bad hack, but it seems */
|
||||
/* to work. */
|
||||
/* UNDOCUMENTED! */
|
||||
/* */
|
||||
/* The behaviour of an MIAP instruction is quite different when used */
|
||||
/* in the twilight zone. */
|
||||
/* */
|
||||
/* First, no control value cut-in test is performed as it would fail */
|
||||
/* anyway. Second, the original point, i.e. (org_x,org_y) of */
|
||||
/* zp0.point, is set to the absolute, unrounded distance found in the */
|
||||
/* CVT. */
|
||||
/* */
|
||||
/* This is used in the CVT programs of the Microsoft fonts Arial, */
|
||||
/* Times, etc., in order to re-adjust some key font heights. It */
|
||||
/* allows the use of the IP instruction in the twilight zone, which */
|
||||
/* otherwise would be invalid according to the specification. */
|
||||
/* */
|
||||
/* We implement it with a special sequence for the twilight zone. */
|
||||
/* This is a bad hack, but it seems to work. */
|
||||
/* */
|
||||
/* Confirmed by Greg Hitchcock. */
|
||||
|
||||
distance = CUR_Func_read_cvt( cvtEntry );
|
||||
|
||||
if ( CUR.GS.gep0 == 0 ) /* If in twilight zone */
|
||||
{
|
||||
CUR.zp0.org[point].x = TT_MulFix14( (FT_UInt32)distance, CUR.GS.freeVector.x );
|
||||
CUR.zp0.org[point].y = TT_MulFix14( (FT_UInt32)distance, CUR.GS.freeVector.y ),
|
||||
CUR.zp0.org[point].x = TT_MulFix14( (FT_UInt32)distance,
|
||||
CUR.GS.freeVector.x );
|
||||
CUR.zp0.org[point].y = TT_MulFix14( (FT_UInt32)distance,
|
||||
CUR.GS.freeVector.y ),
|
||||
CUR.zp0.cur[point] = CUR.zp0.org[point];
|
||||
}
|
||||
|
||||
|
@ -6220,19 +6243,17 @@
|
|||
cvt_dist = -CUR.GS.single_width_value;
|
||||
}
|
||||
|
||||
/* XXX: UNDOCUMENTED! -- twilight zone */
|
||||
|
||||
/* UNDOCUMENTED! The MS rasterizer does that with */
|
||||
/* twilight points (confirmed by Greg Hitchcock) */
|
||||
if ( CUR.GS.gep1 == 0 )
|
||||
{
|
||||
CUR.zp1.org[point].x = CUR.zp0.org[CUR.GS.rp0].x +
|
||||
TT_MulFix14( (FT_UInt32)cvt_dist,
|
||||
CUR.GS.freeVector.x );
|
||||
|
||||
CUR.zp1.org[point].y = CUR.zp0.org[CUR.GS.rp0].y +
|
||||
TT_MulFix14( (FT_UInt32)cvt_dist,
|
||||
CUR.GS.freeVector.y );
|
||||
|
||||
CUR.zp1.cur[point] = CUR.zp0.cur[point];
|
||||
CUR.zp1.cur[point] = CUR.zp0.cur[point];
|
||||
}
|
||||
|
||||
org_dist = CUR_Func_dualproj( &CUR.zp1.org[point],
|
||||
|
@ -6306,7 +6327,6 @@
|
|||
if ( ( CUR.opcode & 16 ) != 0 )
|
||||
CUR.GS.rp0 = point;
|
||||
|
||||
/* XXX: UNDOCUMENTED! */
|
||||
CUR.GS.rp2 = point;
|
||||
}
|
||||
|
||||
|
|
|
@ -896,7 +896,7 @@
|
|||
}
|
||||
|
||||
|
||||
#endif /* T1_CONFIG_OPTION_NO_MM_SUPPORT */
|
||||
#endif /* !T1_CONFIG_OPTION_NO_MM_SUPPORT */
|
||||
|
||||
|
||||
|
||||
|
@ -2140,8 +2140,10 @@
|
|||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
face->len_buildchar = 0;
|
||||
|
||||
#endif /* T1_CONFIG_OPTION_NO_MM_SUPPORT */
|
||||
#endif /* !T1_CONFIG_OPTION_NO_MM_SUPPORT */
|
||||
|
||||
/* now, propagate the subrs, charstrings, and glyphnames tables */
|
||||
/* to the Type1 data */
|
||||
|
|
Loading…
Add table
Reference in a new issue