Changeset 3053

Show
Ignore:
Timestamp:
03/09/03 07:31:31 (6 years ago)
Author:
himi
Message:

(Vmw32_windows_font_charset_database): Removed.
(mw32_windows_set_logical_font_from_char): Now it takes a Emacs char
not a charset of Windows LOGFONT.
(mw32_set_windows_logical_font): It takes a Emacs char as well, and
pass it to mw32_windows_set_logical_font_from_char.
(mw32_load_lf_from_lisp_object): Likewise, but pass it to
mw32_set_windows_logical_font.
(mw32_default_logical_font_loader): Ditto.
(mw32_convert_lface_to_LOGFONT): Use XCAR() and XCDR(), and if the
data is invalid, return 0.
(mw32_strict_logical_font_loader): Pass "c" to
mw32_load_lf_from_lisp_object.
(mw32_elisp_logical_font_loader): Ditto.
(syms_of_mw32font): Remove Vmw32_windows_font_charset_database.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • work/cvs2svn/src/mw32font.c

    r3046 r3053  
    119119} mw32_windows_font; 
    120120 
    121 Lisp_Object Vmw32_windows_font_charset_database; 
    122  
    123121static void 
    124 mw32_windows_set_logical_font_from_charset(MW32LogicalFont *plf, int charset) 
    125 
    126   int num; 
    127   Lisp_Object slot, obj; 
    128  
    129   /* Don't know such charset!.  */ 
    130   if ((charset > 255) 
    131       || (NILP(slot = AREF (Vmw32_windows_font_charset_database, charset)))) 
    132     return; 
    133  
    134   if (NILP (slot)) return; 
     122mw32_windows_set_logical_font_from_char(MW32LogicalFont *plf, int c) 
     123
     124  Lisp_Object charset_sym, slot; 
     125 
     126  if (c < 0) 
     127    { 
     128      charset_sym = CHARSET_SYMBOL (CHARSET_ASCII); 
     129    } 
     130  else 
     131    { 
     132      charset_sym = CHARSET_SYMBOL (CHAR_CHARSET(c)); 
     133    } 
     134 
     135  slot = assq_no_quit(charset_sym, Vmw32_charset_windows_font_info_alist); 
     136 
     137  if (NILP (slot) || !CONSP (slot)) return; 
     138  slot = XCDR (slot); 
     139  if (NILP (slot) || !CONSP (slot)) return; 
     140  slot = XCDR (slot); 
     141  if (NILP (slot) || !CONSP (slot)) return; 
     142  slot = XCAR (slot); 
    135143 
    136144  if (!mw32_valid_encoding_p (slot)) return; 
     
    351359static int 
    352360mw32_set_windows_logical_font (struct frame *f, MW32LogicalFont *plf, 
    353                                LOGFONT *plogf
     361                               LOGFONT *plogf, int c
    354362{ 
    355363  mw32_windows_font *pwf; 
     
    400408      plf->overhang = tm.tmOverhang; 
    401409      plf->fixed_pitch = !(tm.tmPitchAndFamily & TMPF_FIXED_PITCH); 
    402       mw32_windows_set_logical_font_from_charset(plf, tm.tmCharSet); 
     410      mw32_windows_set_logical_font_from_char(plf, c); 
    403411      plf->relative_compose = 0; 
    404412      plf->default_ascent = 0; 
     
    16461654                              MW32FontRequest *pfr, 
    16471655                              Lisp_Object llf, 
    1648                               Lisp_Object option) 
     1656                              Lisp_Object option, 
     1657                              int c) 
    16491658{ 
    16501659  MW32LogicalFont *plf; 
     
    16691678      lf = lisp_object_to_logfont(llf); 
    16701679      plf = mw32_add_logical_font(pfr); 
    1671       if (!mw32_set_windows_logical_font (f, plf, &lf)) 
     1680      if (!mw32_set_windows_logical_font (f, plf, &lf, c)) 
    16721681        { 
    16731682          mw32_delete_logical_font(plf); 
     
    16941703      slot = assq_no_quit(CHARSET_SYMBOL(CHAR_CHARSET(c)), 
    16951704                          Vmw32_charset_windows_font_info_alist); 
    1696       if (NILP(slot)) return 0; 
    1697       lcnum = CAR(CDR(slot)); 
     1705      if (NILP (slot) || !CONSP (slot)) return 0; 
     1706      slot = XCDR (slot); 
     1707      if (NILP (slot) || !CONSP (slot)) return 0; 
     1708      lcnum = XCAR (slot); 
    16981709      if (!NUMBERP(lcnum)) return 0; 
    16991710      cnum = XINT (lcnum); 
     
    17851796  plf = mw32_add_logical_font(pfr); 
    17861797  if ((!mw32_convert_lface_to_LOGFONT(f, attrs, &lf, c)) 
    1787       || (!mw32_set_windows_logical_font(f, plf, &lf))) 
     1798      || (!mw32_set_windows_logical_font(f, plf, &lf, c))) 
    17881799    { 
    17891800      mw32_delete_logical_font(plf); 
     
    19401951 
    19411952      if (!mw32_fr_spec_match_p (spec, attrs, c)) continue; 
    1942       plf = mw32_load_lf_from_lisp_object(f, pfr, logfont, option); 
     1953      plf = mw32_load_lf_from_lisp_object(f, pfr, logfont, option, c); 
    19431954      if (plf) return plf; 
    19441955    } 
     
    20012012  if ((!NILP (option)) && (!CONSP (option))) return NULL; 
    20022013 
    2003   plf = mw32_load_lf_from_lisp_object(f, pfr, logfont, option); 
     2014  plf = mw32_load_lf_from_lisp_object(f, pfr, logfont, option, c); 
    20042015 
    20052016  return plf; 
     
    27062717  Vmw32_charset_windows_font_info_alist = Qunbound; 
    27072718 
    2708   DEFVAR_LISP ("mw32-windows-font-charset-database", 
    2709                &Vmw32_windows_font_charset_database, 
    2710                "Windows font charset database.\n\ 
    2711 This is a 256-length vector, and each slot must be a nil or <encoding>."); 
    2712   Vmw32_windows_font_charset_database = Fmake_vector (make_number(256), Qnil); 
    2713    
    2714  
    27152719  Vmw32_font_request_table = Fmake_vector (make_number (0), Qnil); 
    27162720  staticpro (&Vmw32_font_request_table);