Source
======
http://www.dicollecte.org/download.php

Table of contents
=================
README_dict_fr.txt

README_dict_fr.txt
==================
_______________________________________________________________________________

   DICTIONNAIRES ORTHOGRAPHIQUES FRANÇAIS
   version 4.8

   Olivier R. - dicollecte<at>free<dot>fr
   Dicollecte : http://www.dicollecte.org/

   Licence :
   * MPL : Mozilla Public License
     version 2.0  --  http://www.mozilla.org/MPL/2.0/

   Ce dictionnaire ne peut fonctionner qu’avec un logiciel utilisant le
   correcteur Hunspell : OpenOffice.org 3.2+, Firefox 4+, Thunderbird 5+

   Principaux contributeurs :
   - Sylvain P. ;
   - Laurent Dubois ;
   - Jean-Luc T. ;
   - Pierre Poisson ;
   - Dominique Pellé ;
   - Pierre-Yves ;
   - Leywen ;
   - Romain Muller et Serge Bibauw, de l’association RENOUVO, grâce à qui
     la nouvelle orthographe et ses anciennes variantes ont pu être établies ;
   - Chantal Contant, pour ses recherches sur la réforme de 1990 ;
   - Benoît Sagot, qui nous a autorisé à comparer notre lexique avec Lefff,
     ce qui a mis en évidence des dizaines d’erreurs d’étiquetage grammatical ;
   - Philipp Burgess, pour la normalisation Unicode avec Hunspell.

   Merci aussi à tous ceux qui ont apporté leur pierre à l’édifice.
   http://www.dicollecte.org/members.php?prj=fr

   Pour participer à l’amélioration du dictionnaire, allez sur :
   http://www.dicollecte.org/home.php?prj=fr

_______________________________________________________________________________

   À propos des différents dictionnaires français
_______________________________________________________________________________

   En 1990, le Conseil supérieur à la langue française et l’Académie française
   ont proposé une réforme de l’orthographe qui concerne plusieurs milliers de
   mots. L’emploi des nouvelles graphies n’est pas obligatoire. Les anciennes
   comme les nouvelles sont considérées comme correctes.

   Pour en savoir plus sur la réforme de 1990 :
   http://www.renouvo.org/regles.php
   http://www.orthographe-recommandee.info/

   Malgré les rectifications modestes apportées par cette réforme, la nouvelle
   orthographe suscite beaucoup de polémiques. Afin de satisfaire les exigences
   de chacun, quatre dictionnaires existent, respectant différemment cette
   réforme.

    Dictionnaire «Moderne»  [recommandé]
        Ce dictionnaire propose une sélection des graphies classiques et
        réformées, suivant la lente évolution de l’orthographe actuelle. Ce
        dictionnaire contient les graphies les moins polémiques de la réforme.

    Dictionnaire «Classique»
        Ce dictionnaire est une extension du dictionnaire «Moderne» et propose
        en sus des graphies alternatives, parfois encore très usitées, parfois
        tombées en désuétude.

    Dictionnaire «Réforme 1990»
        Ce dictionnaire ne connaît que les graphies nouvelles des mots concernés
        par la réforme de 1990.

    Dictionnaire «Toutes variantes»
        Ce dictionnaire contient les nouvelles et les anciennes graphies des
        mots concernés par la réforme de 1990.

