emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

scratch/emoji 38008df 1/2: Add new font-has-char-p primitive


From: Lars Ingebrigtsen
Subject: scratch/emoji 38008df 1/2: Add new font-has-char-p primitive
Date: Sun, 31 Oct 2021 11:51:41 -0400 (EDT)

branch: scratch/emoji
commit 38008dfea941ab132da0c49f988cea89d1c334f6
Author: Lars Ingebrigtsen <larsi@gnus.org>
Commit: Lars Ingebrigtsen <larsi@gnus.org>

    Add new font-has-char-p primitive
---
 src/font.c | 27 +++++++++++++++++++++++++++
 1 file changed, 27 insertions(+)

diff --git a/src/font.c b/src/font.c
index 5e761ab..ef77875 100644
--- a/src/font.c
+++ b/src/font.c
@@ -4977,6 +4977,32 @@ If the font is not OpenType font, CAPABILITY is nil.  */)
                 : Qnil));
 }
 
+DEFUN ("font-has-char-p", Ffont_has_char_p, Sfont_has_char_p, 2, 3, 0,
+       doc:
+       /* Say whether FONT-OBJECT has a glyph for CHAR.
+If the optional FRAME parameter is nil, the selected frame is used.  */)
+  (Lisp_Object font_object, Lisp_Object character, Lisp_Object frame)
+{
+  struct frame* f;
+  CHECK_FONT (font_object);
+  CHECK_CHARACTER (character);
+
+  if (NILP (frame))
+    f = XFRAME (selected_frame);
+  else
+    {
+      CHECK_FRAME (frame);
+      f = XFRAME (frame);
+    }
+
+  int c = XFIXNAT (character);
+
+  if (font_has_char (f, font_object, c) <= 0)
+    return Qnil;
+  else
+    return Qt;
+}
+
 DEFUN ("font-get-glyphs", Ffont_get_glyphs, Sfont_get_glyphs, 3, 4, 0,
        doc:
        /* Return a vector of FONT-OBJECT's glyphs for the specified characters.
@@ -5548,6 +5574,7 @@ syms_of_font (void)
   defsubr (&Sclose_font);
   defsubr (&Squery_font);
   defsubr (&Sfont_get_glyphs);
+  defsubr (&Sfont_has_char_p);
   defsubr (&Sfont_match_p);
   defsubr (&Sfont_at);
 #if 0



reply via email to

[Prev in Thread] Current Thread [Next in Thread]