Pass options from one configure script to another as-is (not
expanded). This is needed for options like --includedir='${prefix}/include'. * builds/unix/detect.mk, configure: Prevent argument expansion in call to the (real) `configure' script. * src/truetype/ttgload.c (load_truetype_glyph): Fix compilation if TT_USE_BYTECODE_INTERPRETER isn't defined. There exist CFFs which contain opcodes for the Type 1 operators `hsbw' and `closepath' which are both invalid in Type 2 charstrings. However, it doesn't harm to support them. * src/cff/cffgload.c (CFF_Operator): Add `cff_op_hsbw' and `cff_op_closepath.' (cff_argument_counts): Ditto. (cff_decoder_parse_charstrings): Handle Type 1 opcodes 9 (closepath) and 13 (hsbw) which are invalid in Type 2 charstrings.
This commit is contained in:
parent
a6d36573bd
commit
bd7e1c3ce0
39
ChangeLog
39
ChangeLog
|
@ -1,9 +1,36 @@
|
||||||
|
2007-12-06 Fix <4d876b82@gmail.com>
|
||||||
|
|
||||||
|
Pass options from one configure script to another as-is (not
|
||||||
|
expanded). This is needed for options like
|
||||||
|
--includedir='${prefix}/include'.
|
||||||
|
|
||||||
|
* builds/unix/detect.mk, configure: Prevent argument expansion in
|
||||||
|
call to the (real) `configure' script.
|
||||||
|
|
||||||
|
2007-12-06 Werner Lemberg <wl@gnu.org>
|
||||||
|
|
||||||
|
* src/truetype/ttgload.c (load_truetype_glyph): Fix compilation if
|
||||||
|
TT_USE_BYTECODE_INTERPRETER isn't defined.
|
||||||
|
|
||||||
|
2007-12-06 Werner Lemberg <wl@gnu.org>
|
||||||
|
|
||||||
|
There exist CFFs which contain opcodes for the Type 1 operators
|
||||||
|
`hsbw' and `closepath' which are both invalid in Type 2 charstrings.
|
||||||
|
However, it doesn't harm to support them.
|
||||||
|
|
||||||
|
* src/cff/cffgload.c (CFF_Operator): Add `cff_op_hsbw' and
|
||||||
|
`cff_op_closepath.'
|
||||||
|
(cff_argument_counts): Ditto.
|
||||||
|
|
||||||
|
(cff_decoder_parse_charstrings): Handle Type 1 opcodes 9 (closepath)
|
||||||
|
and 13 (hsbw) which are invalid in Type 2 charstrings.
|
||||||
|
|
||||||
2007-12-06 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
|
2007-12-06 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
|
||||||
|
|
||||||
* src/base/ftrfork.c (raccess_guess_darwin_newvfs): New function
|
* src/base/ftrfork.c (raccess_guess_darwin_newvfs): New function to
|
||||||
to support new pathname syntax "..namedfork/rsrc" to access
|
support new pathname syntax `..namedfork/rsrc' to access a resource
|
||||||
a resource fork on Mac OS X. The legacy syntax "/rsrc" does not
|
fork on Mac OS X. The legacy syntax `/rsrc' does not work on
|
||||||
work on case-sensitive HFS+.
|
case-sensitive HFS+.
|
||||||
(raccess_guess_darwin_hfsplus): Fix a bug in the calculation of
|
(raccess_guess_darwin_hfsplus): Fix a bug in the calculation of
|
||||||
buffer size to store a pathname.
|
buffer size to store a pathname.
|
||||||
* include/freetype/internal/ftrfork.h: Increment the number of
|
* include/freetype/internal/ftrfork.h: Increment the number of
|
||||||
|
@ -11,9 +38,9 @@
|
||||||
|
|
||||||
2007-12-06 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
|
2007-12-06 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
|
||||||
|
|
||||||
* builds/unix/configure.raw: improve the compile tests to search
|
* builds/unix/configure.raw: Improve the compile tests to search
|
||||||
Carbon functions.
|
Carbon functions.
|
||||||
* builds/mac/ftmac.c: import fixes for Carbon incompatibilities
|
* builds/mac/ftmac.c: Import fixes for Carbon incompatibilities
|
||||||
proposed by Sean McBride from src/base/ftmac.c (see 2007-11-16).
|
proposed by Sean McBride from src/base/ftmac.c (see 2007-11-16).
|
||||||
|
|
||||||
2007-12-06 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
|
2007-12-06 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>
|
||||||
|
|
|
@ -79,9 +79,9 @@ ifeq ($(PLATFORM),unix)
|
||||||
ifdef must_configure
|
ifdef must_configure
|
||||||
ifneq ($(have_Makefile),)
|
ifneq ($(have_Makefile),)
|
||||||
# we are building FT2 not in the src tree
|
# we are building FT2 not in the src tree
|
||||||
$(TOP_DIR)/builds/unix/configure $(CFG)
|
$(TOP_DIR)/builds/unix/configure $(value CFG)
|
||||||
else
|
else
|
||||||
cd builds/unix; ./configure $(CFG)
|
cd builds/unix; ./configure $(value CFG)
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
|
|
@ -93,7 +93,7 @@ fi
|
||||||
|
|
||||||
CFG=
|
CFG=
|
||||||
for x in ${1+"$@"}; do
|
for x in ${1+"$@"}; do
|
||||||
CFG="$CFG \"$x\""
|
CFG="$CFG '$x'"
|
||||||
done
|
done
|
||||||
CFG=$CFG $GNUMAKE setup unix
|
CFG=$CFG $GNUMAKE setup unix
|
||||||
|
|
||||||
|
|
|
@ -110,6 +110,9 @@
|
||||||
cff_op_callgsubr,
|
cff_op_callgsubr,
|
||||||
cff_op_return,
|
cff_op_return,
|
||||||
|
|
||||||
|
cff_op_hsbw, /* Type 1 opcode: invalid but seen in real life */
|
||||||
|
cff_op_closepath, /* ditto */
|
||||||
|
|
||||||
/* do not remove */
|
/* do not remove */
|
||||||
cff_op_max
|
cff_op_max
|
||||||
|
|
||||||
|
@ -187,6 +190,9 @@
|
||||||
|
|
||||||
1, /* callsubr */
|
1, /* callsubr */
|
||||||
1,
|
1,
|
||||||
|
0,
|
||||||
|
|
||||||
|
2, /* hsbw */
|
||||||
0
|
0
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -393,7 +399,7 @@
|
||||||
error = CFF_Err_Invalid_File_Format;
|
error = CFF_Err_Invalid_File_Format;
|
||||||
goto Exit;
|
goto Exit;
|
||||||
}
|
}
|
||||||
|
|
||||||
sub = cff->subfonts[fd_index];
|
sub = cff->subfonts[fd_index];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -954,6 +960,9 @@
|
||||||
case 8:
|
case 8:
|
||||||
op = cff_op_rrcurveto;
|
op = cff_op_rrcurveto;
|
||||||
break;
|
break;
|
||||||
|
case 9:
|
||||||
|
op = cff_op_closepath;
|
||||||
|
break;
|
||||||
case 10:
|
case 10:
|
||||||
op = cff_op_callsubr;
|
op = cff_op_callsubr;
|
||||||
break;
|
break;
|
||||||
|
@ -1055,6 +1064,9 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
case 13:
|
||||||
|
op = cff_op_hsbw;
|
||||||
|
break;
|
||||||
case 14:
|
case 14:
|
||||||
op = cff_op_endchar;
|
op = cff_op_endchar;
|
||||||
break;
|
break;
|
||||||
|
@ -1168,7 +1180,7 @@
|
||||||
req_args = 0;
|
req_args = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
req_args &= 15;
|
req_args &= 0x000F;
|
||||||
if ( num_args < req_args )
|
if ( num_args < req_args )
|
||||||
goto Stack_Underflow;
|
goto Stack_Underflow;
|
||||||
args -= req_args;
|
args -= req_args;
|
||||||
|
@ -2022,6 +2034,30 @@
|
||||||
FT_TRACE4(( " dotsection" ));
|
FT_TRACE4(( " dotsection" ));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case cff_op_closepath:
|
||||||
|
/* this is an invalid Type 2 operator; however, there */
|
||||||
|
/* exist fonts which are incorrectly converted from probably */
|
||||||
|
/* Type 1 to CFF, and some parsers seem to accept it */
|
||||||
|
|
||||||
|
FT_TRACE4(( " closepath (invalid op)" ));
|
||||||
|
|
||||||
|
args = stack;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case cff_op_hsbw:
|
||||||
|
/* this is an invalid Type 2 operator; however, there */
|
||||||
|
/* exist fonts which are incorrectly converted from probably */
|
||||||
|
/* Type 1 to CFF, and some parsers seem to accept it */
|
||||||
|
|
||||||
|
FT_TRACE4(( " hsbw (invalid op)" ));
|
||||||
|
|
||||||
|
decoder->glyph_width = decoder->nominal_width +
|
||||||
|
(args[1] >> 16);
|
||||||
|
x = args[0];
|
||||||
|
y = 0;
|
||||||
|
args = stack;
|
||||||
|
break;
|
||||||
|
|
||||||
case cff_op_and:
|
case cff_op_and:
|
||||||
{
|
{
|
||||||
FT_Fixed cond = args[0] && args[1];
|
FT_Fixed cond = args[0] && args[1];
|
||||||
|
|
|
@ -1402,11 +1402,13 @@
|
||||||
|
|
||||||
FT_Stream old_stream = loader->stream;
|
FT_Stream old_stream = loader->stream;
|
||||||
|
|
||||||
|
#ifdef TT_USE_BYTECODE_INTERPRETER
|
||||||
TT_GraphicsState saved_GS;
|
TT_GraphicsState saved_GS;
|
||||||
|
|
||||||
|
|
||||||
if ( loader->exec )
|
if ( loader->exec )
|
||||||
saved_GS = loader->exec->GS;
|
saved_GS = loader->exec->GS;
|
||||||
|
#endif
|
||||||
|
|
||||||
FT_GlyphLoader_Add( gloader );
|
FT_GlyphLoader_Add( gloader );
|
||||||
|
|
||||||
|
@ -1416,9 +1418,11 @@
|
||||||
FT_Vector pp[4];
|
FT_Vector pp[4];
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef TT_USE_BYTECODE_INTERPRETER
|
||||||
/* reinitialize graphics state */
|
/* reinitialize graphics state */
|
||||||
if ( loader->exec )
|
if ( loader->exec )
|
||||||
loader->exec->GS = saved_GS;
|
loader->exec->GS = saved_GS;
|
||||||
|
#endif
|
||||||
|
|
||||||
/* Each time we call load_truetype_glyph in this loop, the */
|
/* Each time we call load_truetype_glyph in this loop, the */
|
||||||
/* value of `gloader.base.subglyphs' can change due to table */
|
/* value of `gloader.base.subglyphs' can change due to table */
|
||||||
|
|
Loading…
Reference in New Issue