.\"
.\" Copyright © 2002 Keith Packard
.\"
.\" Permission to use, copy, modify, distribute, and sell this software and its
.\" documentation for any purpose is hereby granted without fee, provided that
.\" the above copyright notice appear in all copies and that both that
.\" copyright notice and this permission notice appear in supporting
.\" documentation, and that the name of the author(s) not be used in
.\" advertising or publicity pertaining to distribution of the software without
.\" specific, written prior permission.  The authors make no
.\" representations about the suitability of this software for any purpose.  It
.\" is provided "as is" without express or implied warranty.
.\"
.\" THE AUTHOR(S) DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
.\" INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
.\" EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY SPECIAL, INDIRECT OR
.\" CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
.\" DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
.\" TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
.\" PERFORMANCE OF THIS SOFTWARE.
.\"
.\"
.\" fontconfig/fc-lang/fc-lang.man
.\"
.TH FC-LANG 1 __vendorversion__
.SH NAME
fc-lang, fclang.h \- create an database of language orthographies
.SH SYNOPSIS
.B "fc-lang"
.RI [ language-coverage
\|.\|.\|. ]
.SH DESCRIPTION
.I Fc-lang
builds the fclang.h file used in the fontconfig library to automatically
determine language coverage for fonts which don't contain this information.
.SH FILES
.TP 15
.B fclang.tmpl.h
The template file in which the tables are inserted
