]> git.eshelyaron.com Git - emacs.git/commitdiff
(x_find_ccl_program): New function.
authorKenichi Handa <handa@m17n.org>
Wed, 15 Apr 1998 07:12:49 +0000 (07:12 +0000)
committerKenichi Handa <handa@m17n.org>
Wed, 15 Apr 1998 07:12:49 +0000 (07:12 +0000)
src/xterm.c

index 4afe386d39a81a9abf22137a6af5c8928f07c276..1d46d725fe9bb4e6a6f758eeb10965d6c66b101f 100644 (file)
@@ -6782,6 +6782,48 @@ x_query_font (f, fontname)
   return NULL;
 }
 
+/* Find a CCL program for a font specified by FONTP, and set the memer
+ `encoder' of the structure.  */
+
+void
+x_find_ccl_program (fontp)
+     struct font_info *fontp;
+{
+  extern Lisp_Object Vfont_ccl_encoder_alist, Vccl_program_table;
+  extern Lisp_Object Qccl_program_idx;
+  extern Lisp_Object resolve_symbol_ccl_program ();
+  Lisp_Object list, elt, ccl_prog, ccl_id;
+
+  for (list = Vfont_ccl_encoder_alist; CONSP (list); list = XCONS (list)->cdr)
+    {
+      elt = XCONS (list)->car;
+      if (CONSP (elt)
+         && STRINGP (XCONS (elt)->car)
+         && (fast_c_string_match_ignore_case (XCONS (elt)->car, fontp->name)
+             >= 0))
+       {
+         if (SYMBOLP (XCONS (elt)->cdr) &&
+             (!NILP (ccl_id = Fget (XCONS (elt)->cdr, Qccl_program_idx))))
+           {
+             ccl_prog = XVECTOR (Vccl_program_table)->contents[XUINT (ccl_id)];
+             if (!CONSP (ccl_prog)) continue;
+             ccl_prog = XCONS (ccl_prog)->cdr;
+           }
+         else
+           {
+             ccl_prog = XCONS (elt)->cdr;
+             if (!VECTORP (ccl_prog)) continue;
+           }
+           
+         fontp->font_encoder
+           = (struct ccl_program *) xmalloc (sizeof (struct ccl_program));
+         setup_ccl_program (fontp->font_encoder,
+                            resolve_symbol_ccl_program (ccl_prog));
+         break;
+       }
+    }
+}
+
 \f
 /* Initialization.  */