summaryrefslogtreecommitdiffstats
path: root/src/truetype
diff options
context:
space:
mode:
Diffstat (limited to 'src/truetype')
-rw-r--r--src/truetype/ttgload.c9
-rw-r--r--src/truetype/ttinterp.c19
-rw-r--r--src/truetype/ttobjs.c22
3 files changed, 20 insertions, 30 deletions
diff --git a/src/truetype/ttgload.c b/src/truetype/ttgload.c
index 22cbc09..ce8c888 100644
--- a/src/truetype/ttgload.c
+++ b/src/truetype/ttgload.c
@@ -1983,11 +1983,13 @@
FT_UInt glyph_index,
FT_Int32 load_flags )
{
+ TT_Face face;
FT_Error error;
TT_LoaderRec loader;
- error = TT_Err_Ok;
+ face = (TT_Face)glyph->face;
+ error = TT_Err_Ok;
#ifdef TT_CONFIG_OPTION_EMBEDDED_BITMAPS
@@ -2001,7 +2003,10 @@
error = load_sbit_image( size, glyph, glyph_index, load_flags );
if ( !error )
{
- if ( FT_IS_SCALABLE( glyph->face ) )
+ FT_Face root = &face->root;
+
+
+ if ( FT_IS_SCALABLE( root ) )
{
/* for the bbox we need the header only */
(void)tt_loader_init( &loader, size, glyph, load_flags, TRUE );
diff --git a/src/truetype/ttinterp.c b/src/truetype/ttinterp.c
index 3a8680f..3acb24a 100644
--- a/src/truetype/ttinterp.c
+++ b/src/truetype/ttinterp.c
@@ -52,7 +52,7 @@
/* */
/* In order to detect infinite loops in the code, we set up a counter */
/* within the run loop. A single stroke of interpretation is now */
- /* limited to a maximum number of opcodes defined below. */
+ /* limited to a maximal number of opcodes defined below. */
/* */
#define MAX_RUNNABLE_OPCODES 1000000L
@@ -1463,7 +1463,7 @@
#else
- /* compute (a*b)/2^14 with maximum accuracy and rounding */
+ /* compute (a*b)/2^14 with maximal accuracy and rounding */
static FT_Int32
TT_MulFix14( FT_Int32 a,
FT_Int b )
@@ -1493,7 +1493,7 @@
#endif
- /* compute (ax*bx+ay*by)/2^14 with maximum accuracy and rounding */
+ /* compute (ax*bx+ay*by)/2^14 with maximal accuracy and rounding */
static FT_Int32
TT_DotFix14( FT_Int32 ax,
FT_Int32 ay,
@@ -3110,9 +3110,14 @@
CUR.GS.single_width_cutin = (FT_F26Dot6)args[0];
-#define DO_SSW \
- CUR.GS.single_width_value = TT_MULFIX( args[0], \
- CUR.tt_metrics.scale );
+ /* XXX: UNDOCUMENTED! or bug in the Windows engine? */
+ /* */
+ /* It seems that the value that is read here is */
+ /* expressed in 16.16 format rather than in font */
+ /* units. */
+ /* */
+#define DO_SSW \
+ CUR.GS.single_width_value = (FT_F26Dot6)( args[0] >> 10 );
#define DO_FLIPON \
@@ -5767,7 +5772,7 @@
/* */
/* UNDOCUMENTED: According to Greg Hitchcock, there is one (virtual) */
/* contour in the twilight zone, namely contour number */
- /* zero which includes all points of it. */
+ /* zero. */
/* */
static void
Ins_SHC( INS_ARG )
diff --git a/src/truetype/ttobjs.c b/src/truetype/ttobjs.c
index 1f8a768..814c713 100644
--- a/src/truetype/ttobjs.c
+++ b/src/truetype/ttobjs.c
@@ -244,7 +244,7 @@
tt_check_trickyness_sfnt_ids( TT_Face face )
{
#define TRICK_SFNT_IDS_PER_FACE 3
-#define TRICK_SFNT_IDS_NUM_FACES 17
+#define TRICK_SFNT_IDS_NUM_FACES 13
static const tt_sfnt_id_rec sfnt_id[TRICK_SFNT_IDS_NUM_FACES]
[TRICK_SFNT_IDS_PER_FACE] = {
@@ -317,26 +317,6 @@
{ 0x00000000, 0x00000000 }, /* cvt */
{ 0x0d3de9cb, 0x00000141 }, /* fpgm */
{ 0xd4127766, 0x00002280 } /* prep */
- },
- { /* NEC FA-Gothic, 1996 */
- { 0x00000000, 0x00000000 }, /* cvt */
- { 0x4a692698, 0x000001f0 }, /* fpgm */
- { 0x340d4346, 0x00001fca } /* prep */
- },
- { /* NEC FA-Minchou, 1996 */
- { 0x00000000, 0x00000000 }, /* cvt */
- { 0xcd34c604, 0x00000166 }, /* fpgm */
- { 0x6cf31046, 0x000022b0 } /* prep */
- },
- { /* NEC FA-RoundGothicB, 1996 */
- { 0x00000000, 0x00000000 }, /* cvt */
- { 0x5da75315, 0x0000019d }, /* fpgm */
- { 0x40745a5f, 0x000022e0 } /* prep */
- },
- { /* NEC FA-RoundGothicM, 1996 */
- { 0x00000000, 0x00000000 }, /* cvt */
- { 0xf055fc48, 0x000001c2 }, /* fpgm */
- { 0x3900ded3, 0x00001e18 } /* prep */
}
};