Dictionaries are store as a DAWG (Directed Acyclic Word Graph) which is very well adapted for fast searching (although suffix base search will be slow), and is very compact.

Roughly speaking, a DAWG stores a lexicon (rather than a dictionary, since it not possible to associate any data, e.g. word definition, translation, together with each word) in a graph, each common prefix and suffixes sharing the same nodes.


French dictionary contains 300 000 words (each conjuged form counting for a word), and is stored in less than 200 kbytes : this is smaller than the gziped word list. (Amazingly, English dictionary contains only 110 000 words, but is stored in 240 kbytes : this is because French grammar is far richer/complicated than English grammar, e.g. one verbs will have dozens of forms, each consuming very little space in a DAWG).

To learn more about DAWG, read Andrew W. Appel and Guy J. Jacobson article : The World's Fastest Scrabble Program. Comm. ACM 31(5):572-578,585, May 1988.
Sources of the original Appel and Jacobson program are available on here, and the article here.

Note that although fDic is based on the algorithm described in this article, it is a complete rewrite and contains no Appel and Jacobson code.
Several (more or less ugly) hacks are used in fDic to gain few more bytes of storage.