+2003-04-09 Kenichi Handa <handa@etlken2>
+
+ The following changes are to make the font rescaling facility
+ compatible with Emacs 21.
+
+ * xfaces.c (Vface_font_rescale_alist): Renamed from
+ Vface_resizing_fonts.
+ (struct font_name): Rename member resizing_ratio to rescale_ratio.
+ (font_rescale_ratio): Renamed from font_resizing_ratio.
+ (split_font_name): Set font->rescale_ratio.
+ (better_font_p): Pay attention to font->rescale_ratio.
+ (build_scalable_font_name): Likewise. Change RESX, and RESY
+ fields.
+ (syms_of_xfaces): Declare Vface_font_rescale_alist as a Lisp
+ variable.
+
+2003-03-28 Kenichi Handa <handa@etlken2>
+
+ * coding.c (Qutf_16_be_nosig, Qutf_16_be, Qutf_16_le_nosig)
+ (Qutf_16_le): Remove these variables.
+ (syms_of_coding): Don't DEFSYM them.
+ (decode_coding_utf_16): Fix handling of BOM.
+ (encode_coding_utf_16): Fix handling of BOM.
+
2003-03-14 Kenichi Handa <handa@m17n.org>
* fileio.c (Finsert_file_contents): On replacing, before decoding
Lisp_Object Vface_ignored_fonts;
-/* Alist of font name patterns vs the resizing factor. */
+/* Alist of font name patterns vs the rescaling factor. */
-Lisp_Object Vface_resizing_fonts;
+Lisp_Object Vface_font_rescale_alist;
/* Maximum number of fonts to consider in font_list. If not an
integer > 0, DEFAULT_FONT_LIST_LIMIT is used instead. */
split_font_name for which these are. */
int numeric[XLFD_LAST];
- /* If the original name matches one of Vface_resizing_fonts, the
- value is the corresponding resizing ratio. Otherwise, the value
- is 1.0. */
- double resizing_ratio;
+ /* If the original name matches one of Vface_font_rescale_alist,
+ the value is the corresponding rescale ratio. Otherwise, the
+ value is 1.0. */
+ double rescale_ratio;
/* Lower value mean higher priority. */
int registry_priority;
}
-/* Return a resizing ratio of a font of NAME. */
+/* Return a rescaling ratio of a font of NAME. */
-static INLINE double
-font_resizing_ratio (char *name)
+static double
+font_rescale_ratio (char *name)
{
Lisp_Object tail, elt;
- if (CONSP (Vface_resizing_fonts))
+ for (tail = Vface_font_rescale_alist; CONSP (tail); tail = XCDR (tail))
{
- for (tail = Vface_resizing_fonts; CONSP (tail); tail = XCDR (tail))
- {
- elt = XCAR (tail);
- if (STRINGP (XCAR (elt)) && FLOATP (XCDR (elt))
- && fast_c_string_match_ignore_case (XCAR (elt), name) >= 0)
- return XFLOAT_DATA (XCDR (elt));
- }
+ elt = XCAR (tail);
+ if (STRINGP (XCAR (elt)) && FLOATP (XCDR (elt))
+ && fast_c_string_match_ignore_case (XCAR (elt), name) >= 0)
+ return XFLOAT_DATA (XCDR (elt));
}
return 1.0;
}
{
int i = 0;
int success_p;
- double resizing_ratio = 1.0;
+ double rescale_ratio;
- if (numeric_p && CONSP (Vface_resizing_fonts))
- resizing_ratio = font_resizing_ratio (font->name);
+ if (numeric_p)
+ /* This must be done before splitting the font name. */
+ rescale_ratio = font_rescale_ratio (font->name);
if (*font->name == '-')
{
font->numeric[XLFD_WEIGHT] = xlfd_numeric_weight (font);
font->numeric[XLFD_SWIDTH] = xlfd_numeric_swidth (font);
font->numeric[XLFD_AVGWIDTH] = atoi (font->fields[XLFD_AVGWIDTH]);
- font->resizing_ratio = resizing_ratio;
+ font->rescale_ratio = rescale_ratio;
}
/* Initialize it to zero. It will be overridden by font_list while
if (xlfd_idx == XLFD_POINT_SIZE)
{
delta1 = abs (values[i] - (font1->numeric[xlfd_idx]
- / font1->resizing_ratio));
+ / font1->rescale_ratio));
delta2 = abs (values[i] - (font2->numeric[xlfd_idx]
- / font2->resizing_ratio));
+ / font2->rescale_ratio));
if (abs (delta1 - delta2) < FONT_POINT_SIZE_QUANTUM)
continue;
}
pixel_value = resy / (PT_PER_INCH * 10.0) * pt;
}
/* We may need a font of the different size. */
- pixel_value *= font->resizing_ratio;
-
- /* Set pixel size. */
- sprintf (pixel_size, "%d", pixel_value);
- font->fields[XLFD_PIXEL_SIZE] = pixel_size;
- font->numeric[XLFD_PIXEL_SIZE] = pixel_value;
+ pixel_value *= font->rescale_ratio;
- /* We don't have to change POINT_SIZE, RESX, and RESY of the font
- name. */
+ /* We should keep POINT_SIZE 0. Otherwise, X server can't open a
+ font of the specified PIXEL_SIZE. */
#if 0
/* Set point size of the font. */
sprintf (point_size, "%d", (int) pt);
font->fields[XLFD_POINT_SIZE] = point_size;
font->numeric[XLFD_POINT_SIZE] = pt;
+#endif
+
+ /* Set pixel size. */
+ sprintf (pixel_size, "%d", pixel_value);
+ font->fields[XLFD_PIXEL_SIZE] = pixel_size;
+ font->numeric[XLFD_PIXEL_SIZE] = pixel_value;
/* If font doesn't specify its resolution, use the
resolution of the display. */
font->fields[XLFD_RESX] = buffer;
font->numeric[XLFD_RESX] = resx;
}
-#endif
return build_font_name (font);
}
ignore. */);
Vface_ignored_fonts = Qnil;
- DEFVAR_LISP ("face-resizing-fonts", &Vface_resizing_fonts,
- doc: /* Alist of fonts vs the resizing factors.
-Each element is a cons (FONT-NAME-PATTERN . RESIZING-RATIO), where
+
+ DEFVAR_LISP ("face-font-rescale-alist", &Vface_font_rescale_alist,
+ doc: /* Alist of fonts vs the rescaling factors.
+Each element is a cons (FONT-NAME-PATTERN . RESCALE-RATIO), where
FONT-NAME-PATTERN is a regular expression matching a font name, and
-RESIZING-RATIO is a floating point number to specify how much larger
+RESCALE-RATIO is a floating point number to specify how much larger
\(or smaller) font we should use. For instance, if a face requests
-a font of 10 point, we actually use a font of 10 * RESIZING-FACE points. */);
+a font of 10 point, we actually use a font of 10 * RESCALE-RATIO point. */);
+ Vface_font_rescale_alist = Qnil;
#ifdef HAVE_WINDOW_SYSTEM
defsubr (&Sbitmap_spec_p);