% copyright: Daniel Flipo, Bernard Gaulle 1994-2002
% title: French hyphenation patterns
% version: V2.12 2002/12/11
% notice: >
%     This file is part of the hyph-utf8 package.
%     See http://www.hyphenation.org for more information.
% licence:
%     name: MIT
%     url: https://opensource.org/licenses/MIT
%     text: >
%         Permission is hereby granted, free of charge, to any person obtaining
%         a copy of this software and associated documentation files (the
%         "Software"), to deal in the Software without restriction, including
%         without limitation the rights to use, copy, modify, merge, publish,
%         distribute, sublicense, and/or sell copies of the Software, and to
%         permit persons to whom the Software is furnished to do so, subject to
%         the following conditions:
%
%         The above copyright notice and this permission notice shall be
%         included in all copies or substantial portions of the Software.
%
%         THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
%         EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
%         MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
%         NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
%         BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
%         ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
%         CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
%         SOFTWARE.
% ==========================================
%%%%%%%% The most famous good guys who worked hard to obtain something usable.
% Jacques Desarmenien, Universite de Strasbourg :
%          -  << how to run TeX in a French environment: hyphenation, fonts,
%             typography. >> in Tugboat, 5 (1984) 91-102. and TeX85 conference
%          -  << La division par ordinateur des mots francais :
%             application a TeX >> in TSI vol. 5 No 4, 1986 (C) AFCET-
%                                                             Gauthier-Villars
% Norman Buckle, UQAH (nb; many additions)
% Michael Ferguson, INRS-Telecommunications (mjf) June 1988
% Justin Bur, Universite de Montreal (jbb; checked against original list)
%                    all patterns including apostrophe missing from nb list
% after that, GUTenberg  and specially Daniel Flipo and Bernard Gaulle
% did their best effort to improve the list of patterns.
%
%
