Skip to content

B. Implementation Suggestions

Font server implementations will probably wish to use techniques such as the following to avoid limits on the number of simultaneous connections:

  • The initial connection information returned by the font server contains the names of other font servers that may be used as substitutes. A font server may refuse to accept a connection, indicating that the client should try one of the alternatives instead.

  • On operating systems that support processing forking, font servers might choose to fork so that the child can continue processing the existing connections and the parent can accept new connections. Such implementations are encouraged to use shared memory so that in-memory font databases can be shared.

  • On operating systems that support passing stream file descriptors between processes, cooperating font servers could collect connections in a single process when there are few connections and spread them among several processes as the load increases.

  • If a font client is unable to connect to a server (as opposed to having the connection terminated), it should retry for an implementation-dependent length of time (see Xlib's handling of ECONNREFUSED in XConnDis.c).