diff options
Diffstat (limited to 'src/ftfont.c')
-rw-r--r-- | src/ftfont.c | 47 |
1 files changed, 25 insertions, 22 deletions
diff --git a/src/ftfont.c b/src/ftfont.c index d9ae9be090..a20f2013e5 100644 --- a/src/ftfont.c +++ b/src/ftfont.c @@ -1,6 +1,6 @@ /* ftfont.c -- FreeType font driver. - Copyright (C) 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. - Copyright (C) 2006, 2007, 2008, 2009, 2010 + Copyright (C) 2006-2011 Free Software Foundation, Inc. + Copyright (C) 2006, 2007, 2008, 2009, 2010, 2011 National Institute of Advanced Industrial Science and Technology (AIST) Registration Number H13PRO009 @@ -392,7 +392,7 @@ ftfont_lookup_cache (Lisp_Object key, enum ftfont_cache_for cache_for) if (cache_for == FTFONT_CACHE_FOR_FACE ? ! cache_data->ft_face : ! cache_data->fc_charset) { - char *filename = (char *) SDATA (XCAR (key)); + char *filename = SSDATA (XCAR (key)); int index = XINT (XCDR (key)); if (cache_for == FTFONT_CACHE_FOR_FACE) @@ -555,7 +555,7 @@ ftfont_get_cache (FRAME_PTR f) static int ftfont_get_charset (Lisp_Object registry) { - char *str = (char *) SDATA (SYMBOL_NAME (registry)); + char *str = SSDATA (SYMBOL_NAME (registry)); char *re = alloca (SBYTES (SYMBOL_NAME (registry)) * 2 + 1); Lisp_Object regexp; int i, j; @@ -749,7 +749,10 @@ ftfont_spec_pattern (Lisp_Object spec, char *otlayout, struct OpenTypeSpec **ots key = XCAR (XCAR (extra)), val = XCDR (XCAR (extra)); if (EQ (key, QCdpi)) - dpi = XINT (val); + { + if (INTEGERP (val)) + dpi = XINT (val); + } else if (EQ (key, QClang)) { if (! langset) @@ -769,12 +772,15 @@ ftfont_spec_pattern (Lisp_Object spec, char *otlayout, struct OpenTypeSpec **ots } else if (EQ (key, QCotf)) { - *otspec = ftfont_get_open_type_spec (val); - if (! *otspec) - return NULL; - strcat (otlayout, "otlayout:"); - OTF_TAG_STR ((*otspec)->script_tag, otlayout + 9); - script = (*otspec)->script; + if (CONSP (val)) + { + *otspec = ftfont_get_open_type_spec (val); + if (! *otspec) + return NULL; + strcat (otlayout, "otlayout:"); + OTF_TAG_STR ((*otspec)->script_tag, otlayout + 9); + script = (*otspec)->script; + } } else if (EQ (key, QCscript)) script = val; @@ -1767,13 +1773,13 @@ setup_otf_gstring (int size) position adjustment information in ADJUSTMENT. */ static int -ftfont_drive_otf (font, spec, in, from, to, out, adjustment) - MFLTFont *font; - MFLTOtfSpec *spec; - MFLTGlyphString *in; - int from, to; - MFLTGlyphString *out; - MFLTGlyphAdjustment *adjustment; +ftfont_drive_otf (MFLTFont *font, + MFLTOtfSpec *spec, + MFLTGlyphString *in, + int from, + int to, + MFLTGlyphString *out, + MFLTGlyphAdjustment *adjustment) { struct MFLTFontFT *flt_font_ft = (struct MFLTFontFT *) font; FT_Face ft_face = flt_font_ft->ft_face; @@ -2453,7 +2459,7 @@ ftfont_shape_by_flt (Lisp_Object lgstring, struct font *font, flt_font_ft.flt_font.family = Mnil; else flt_font_ft.flt_font.family - = msymbol ((char *) SDATA (Fdowncase (SYMBOL_NAME (family)))); + = msymbol (SSDATA (Fdowncase (SYMBOL_NAME (family)))); } flt_font_ft.flt_font.x_ppem = ft_face->size->metrics.x_ppem; flt_font_ft.flt_font.y_ppem = ft_face->size->metrics.y_ppem; @@ -2675,6 +2681,3 @@ syms_of_ftfont (void) ftfont_driver.type = Qfreetype; register_font_driver (&ftfont_driver, NULL); } - -/* arch-tag: 7cfa432c-33a6-4988-83d2-a82ed8604aca - (do not change this comment) */ |