Fix Savannah bug #27921.
* src/cff/cffobjs.c (cff_face_init), src/cid/cidobjs.c (cid_face_init), src/type1/t1afm.c (T1_Read_Metrics), src/type1/t1objs.c (T1_Face_Init): Don't use unsigned constant values for rounding if the argument can be negative.
This commit is contained in:
parent
8821cc5df1
commit
012552f143
10
ChangeLog
10
ChangeLog
|
@ -1,6 +1,16 @@
|
|||
2009-11-04 Werner Lemberg <wl@gnu.org>
|
||||
|
||||
Fix Savannah bug #27921.
|
||||
|
||||
* src/cff/cffobjs.c (cff_face_init), src/cid/cidobjs.c
|
||||
(cid_face_init), src/type1/t1afm.c (T1_Read_Metrics),
|
||||
src/type1/t1objs.c (T1_Face_Init): Don't use unsigned constant
|
||||
values for rounding if the argument can be negative.
|
||||
|
||||
2009-11-03 Bram Tassyns <bramt@enfocus.be>
|
||||
|
||||
Add basic support for Type1 charstrings in CFF.
|
||||
This fixes Savannah bug #27922.
|
||||
|
||||
* src/cff/cffgload.c (CFF_Operator, cff_argument_counts): Handle
|
||||
`seac', `sbw', and `setcurrentpoint' opcodes.
|
||||
|
|
|
@ -657,10 +657,11 @@
|
|||
cffface->num_glyphs = cff->charstrings_index.count;
|
||||
|
||||
/* set global bbox, as well as EM size */
|
||||
cffface->bbox.xMin = dict->font_bbox.xMin >> 16;
|
||||
cffface->bbox.yMin = dict->font_bbox.yMin >> 16;
|
||||
cffface->bbox.xMax = ( dict->font_bbox.xMax + 0xFFFFU ) >> 16;
|
||||
cffface->bbox.yMax = ( dict->font_bbox.yMax + 0xFFFFU ) >> 16;
|
||||
cffface->bbox.xMin = dict->font_bbox.xMin >> 16;
|
||||
cffface->bbox.yMin = dict->font_bbox.yMin >> 16;
|
||||
/* no `U' suffix here to 0xFFFF! */
|
||||
cffface->bbox.xMax = ( dict->font_bbox.xMax + 0xFFFF ) >> 16;
|
||||
cffface->bbox.yMax = ( dict->font_bbox.yMax + 0xFFFF ) >> 16;
|
||||
|
||||
cffface->units_per_EM = (FT_UShort)( dict->units_per_em );
|
||||
|
||||
|
|
|
@ -413,10 +413,11 @@
|
|||
cidface->num_fixed_sizes = 0;
|
||||
cidface->available_sizes = 0;
|
||||
|
||||
cidface->bbox.xMin = cid->font_bbox.xMin >> 16;
|
||||
cidface->bbox.yMin = cid->font_bbox.yMin >> 16;
|
||||
cidface->bbox.xMax = ( cid->font_bbox.xMax + 0xFFFFU ) >> 16;
|
||||
cidface->bbox.yMax = ( cid->font_bbox.yMax + 0xFFFFU ) >> 16;
|
||||
cidface->bbox.xMin = cid->font_bbox.xMin >> 16;
|
||||
cidface->bbox.yMin = cid->font_bbox.yMin >> 16;
|
||||
/* no `U' suffix here to 0xFFFF! */
|
||||
cidface->bbox.xMax = ( cid->font_bbox.xMax + 0xFFFF ) >> 16;
|
||||
cidface->bbox.yMax = ( cid->font_bbox.yMax + 0xFFFF ) >> 16;
|
||||
|
||||
if ( !cidface->units_per_EM )
|
||||
cidface->units_per_EM = 1000;
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
/* */
|
||||
/* AFM support for Type 1 fonts (body). */
|
||||
/* */
|
||||
/* Copyright 1996-2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 by */
|
||||
/* Copyright 1996-2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 by */
|
||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
|
@ -285,13 +285,15 @@
|
|||
{
|
||||
t1_font->font_bbox = fi->FontBBox;
|
||||
|
||||
t1_face->bbox.xMin = fi->FontBBox.xMin >> 16;
|
||||
t1_face->bbox.yMin = fi->FontBBox.yMin >> 16;
|
||||
t1_face->bbox.xMax = ( fi->FontBBox.xMax + 0xFFFFU ) >> 16;
|
||||
t1_face->bbox.yMax = ( fi->FontBBox.yMax + 0xFFFFU ) >> 16;
|
||||
t1_face->bbox.xMin = fi->FontBBox.xMin >> 16;
|
||||
t1_face->bbox.yMin = fi->FontBBox.yMin >> 16;
|
||||
/* no `U' suffix here to 0xFFFF! */
|
||||
t1_face->bbox.xMax = ( fi->FontBBox.xMax + 0xFFFF ) >> 16;
|
||||
t1_face->bbox.yMax = ( fi->FontBBox.yMax + 0xFFFF ) >> 16;
|
||||
|
||||
t1_face->ascender = (FT_Short)( ( fi->Ascender + 0x8000U ) >> 16 );
|
||||
t1_face->descender = (FT_Short)( ( fi->Descender + 0x8000U ) >> 16 );
|
||||
/* no `U' suffix here to 0x8000! */
|
||||
t1_face->ascender = (FT_Short)( ( fi->Ascender + 0x8000 ) >> 16 );
|
||||
t1_face->descender = (FT_Short)( ( fi->Descender + 0x8000 ) >> 16 );
|
||||
|
||||
if ( fi->NumKernPair )
|
||||
{
|
||||
|
|
|
@ -441,10 +441,11 @@
|
|||
root->num_fixed_sizes = 0;
|
||||
root->available_sizes = 0;
|
||||
|
||||
root->bbox.xMin = type1->font_bbox.xMin >> 16;
|
||||
root->bbox.yMin = type1->font_bbox.yMin >> 16;
|
||||
root->bbox.xMax = ( type1->font_bbox.xMax + 0xFFFFU ) >> 16;
|
||||
root->bbox.yMax = ( type1->font_bbox.yMax + 0xFFFFU ) >> 16;
|
||||
root->bbox.xMin = type1->font_bbox.xMin >> 16;
|
||||
root->bbox.yMin = type1->font_bbox.yMin >> 16;
|
||||
/* no `U' suffix here to 0xFFFF! */
|
||||
root->bbox.xMax = ( type1->font_bbox.xMax + 0xFFFF ) >> 16;
|
||||
root->bbox.yMax = ( type1->font_bbox.yMax + 0xFFFF ) >> 16;
|
||||
|
||||
/* Set units_per_EM if we didn't set it in parse_font_matrix. */
|
||||
if ( !root->units_per_EM )
|
||||
|
|
Loading…
Reference in New Issue