THE SOFTWARE.
*/
+#include "fcint.h"
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
-#include <libgen.h>
-#include "fcint.h"
#include <ft2build.h>
#include FT_FREETYPE_H
#include FT_TRUETYPE_TABLES_H
for (i = 0; i < NUM_CODE_PAGE_RANGE; i++)
{
- if (FcLangCompare (lang, FcCodePageRange[i].lang) != FcLangDifferentLang)
+ if (FcLangCompare (lang, FcCodePageRange[i].lang) == FcLangEqual)
return FcTrue;
}
return FcFalse;
if (!FcStrCmpIgnoreBlanksAndCase (old, string))
{
return FcTrue;
- break;
}
return FcFalse;
}
* or which are simply a FC_FAMILY and FC_STYLE glued together
*/
{
- int fn, fa, st;
+ int fn, fa;
FcChar8 *full;
FcChar8 *fam;
FcChar8 *style;
}
file2 = FcStrCopy (file);
- if (!FcPatternAddString (pat, FC_FILE, (FcChar8 *)basename((char *)file2)))
+ if (!FcPatternAddString (pat, FC_FILE, FcStrBasename(file2)))
{
FcStrFree (file2);
goto bail1;
if (!foundry)
{
int rc;
- BDF_PropertyRec prop;
rc = FT_Get_BDF_Property(face, "FOUNDRY", &prop);
if(rc == 0 && prop.type == BDF_PROPERTY_TYPE_ATOM)
foundry = (FcChar8 *) prop.u.atom;
for (i = 0; i < face->num_fixed_sizes; i++)
if (!FcPatternAddDouble (pat, FC_PIXEL_SIZE,
FcGetPixelSize (face, i)))
- goto bail1;
+ goto bail2;
if (!FcPatternAddBool (pat, FC_ANTIALIAS, FcFalse))
- goto bail1;
+ goto bail2;
#if HAVE_FT_GET_BDF_PROPERTY
if(face->num_fixed_sizes == 1) {
int rc;
int value;
- BDF_PropertyRec prop;
+
+ /* skip bitmap fonts which do not even have a family name */
+ rc = FT_Get_BDF_Property(face, "FAMILY_NAME", &prop);
+ if (rc != 0 || prop.type != BDF_PROPERTY_TYPE_ATOM)
+ goto bail2;
rc = FT_Get_BDF_Property(face, "POINT_SIZE", &prop);
if(rc == 0 && prop.type == BDF_PROPERTY_TYPE_INTEGER)
int p;
initial = 0;
+
+ if (!face)
+ return 0;
+
/*
* Find the current encoding
*/
FcCharSet *
FcFreeTypeCharSetAndSpacing (FT_Face face, FcBlanks *blanks, int *spacing)
{
- FcChar32 page, off, max, ucs4;
+ FcChar32 page, off, ucs4;
#ifdef CHECK
FcChar32 font_max = 0;
#endif
{
FT_UInt gindex;
- max = fcFontDecoders[o].max;
/*
* Find the first encoded character in the font
*/
FT_Stream stream = face->stream;
FT_Error error;
FT_UShort n, p;
- FT_Memory memory = stream->memory;
+ FT_Memory memory;
if ( !stream )
return TT_Err_Invalid_Face_Handle;
+ memory = stream->memory;
+
if (( error = ftglue_face_goto_table( face, tabletag, stream ) ))
return error;
if ( ftglue_stream_seek ( stream, base_offset + 4L ) || ftglue_stream_frame_enter( stream, 2L ) )
return error;
- new_offset = ((FT_UShort)ftglue_stream_get_short ( stream )) + base_offset;
+ new_offset = GET_UShort() + base_offset;
ftglue_stream_frame_exit( stream );
if ( ftglue_stream_frame_enter( stream, 2L ) )
return error;
- *script_count = ((FT_UShort)ftglue_stream_get_short ( stream ));
+ *script_count = GET_UShort ();
ftglue_stream_frame_exit( stream );
if ( ftglue_stream_frame_enter( stream, 6L ) )
goto Fail;
- (*stags)[p] = ((FT_ULong)ftglue_stream_get_long ( stream ));
- new_offset = ((FT_UShort)ftglue_stream_get_short ( stream )) + base_offset;
+ (*stags)[p] = GET_ULong ();
+ new_offset = GET_UShort () + base_offset;
ftglue_stream_frame_exit( stream );
cur_offset = ftglue_stream_pos( stream );
- if ( ftglue_stream_seek( stream, new_offset ) )
- goto Fail;
+ error = ftglue_stream_seek( stream, new_offset );
if ( error == TT_Err_Ok )
p++;
- else if ( error != TTO_Err_Empty_Script )
- goto Fail;
(void)ftglue_stream_seek( stream, cur_offset );
}
goto Fail;
}
- // sort the tag list before returning it
+ /* sort the tag list before returning it */
qsort(*stags, *script_count, sizeof(FT_ULong), compareulong);
return TT_Err_Ok;
Fail:
*script_count = 0;
ftglue_free( memory, *stags );
+ *stags = NULL;
return error;
}