diff --git a/lib/modules/Protocols.pmod/X.pmod/Xlib.pmod b/lib/modules/Protocols.pmod/X.pmod/Xlib.pmod
index 267ea9f92cf1b10a595a2d0813cf5175def3c621..9605637fa2130e408112cd9bf375a1f2417654e7 100644
--- a/lib/modules/Protocols.pmod/X.pmod/Xlib.pmod
+++ b/lib/modules/Protocols.pmod/X.pmod/Xlib.pmod
@@ -896,8 +896,11 @@ class Display
     return req;
   }
 
+  mapping (string:object) fonts = ([]);
+
   object OpenFont(string name)
   {
+    if(fonts[name]) return fonts[name];
     object req = OpenFont_req(name);
     send_request(req);
     return Types.Font(this_object(), req->fid);