blob: 51577b2f81b15d4cfe0fb476b91a5b387231f7d9 [file] [log] [blame]
About Hunspell
NOTICE: Verison 2 is in the works. For contributing see
[version 2 specification][v2spec] and the folder `src/hunspell2`.
Hunspell is a spell checker and morphological analyzer library and program
designed for languages with rich morphology and complex word compounding or
character encoding. Hunspell interfaces: Ispell-like terminal interface
using Curses library, Ispell pipe interface, C++ class and C functions.
Hunspell's code base comes from the MySpell
AUTHORS.MYSPELL and license.myspell files.
Hunspell is designed to eventually replace Myspell in
Main features of Hunspell spell checker and morphological analyzer:
- Unicode support (affix rules work only with the first 65535 Unicode
- Morphological analysis (in custom item and arrangement style) and stemming
- Max. 65535 affix classes and twofold affix stripping (for agglutinative
languages, like Azeri, Basque, Estonian, Finnish, Hungarian, Turkish, etc.)
- Support complex compoundings (for example, Hungarian and German)
- Support language specific features (for example, special casing of
Azeri and Turkish dotted i, or German sharp s)
- Handle conditional affixes, circumfixes, fogemorphemes,
forbidden words, pseudoroots and homonyms.
- Free software. Versions 1.x are licenced under LGPL, GPL, MPL tri-license.
Version 2 is licenced only under GNU LGPL.
Compiling on Unix/Linux and others
autoreconf -vfi
make install #if neccesary prefix with sudo
ldconfig #not needed on windows, on linux sudo may be needed
For dictionary development, use the --with-warnings option of configure.
For interactive user interface of Hunspell executable, use the --with-ui option.
The developer packages you need to compile Hunspell's interface:
autoconf automake autopoint libtool g++
optional developer packages:
- ncurses (need for --with-ui), eg. libncursesw5 for UTF-8
- readline (for fancy input line editing,
configure parameter: --with-readline)
- locale and gettext (but you can also use the
--with-included-gettext configure parameter)
Compiling on Windows
1. Compiling with Mingw64 and MSYS2
Download Msys2, update everything and install the following packages:
pacman -S base-devel mingw-w64-x86_64-toolchain mingw-w64-x86_64-libtool
Open Mingw-w64 Win64 prompt and compile the same way as on Linux, see above.
2. Compiling in Cygwin environment
Download and install Cygwin environment for Windows with the following
extra packages:
- make
- automake
- autoconf
- gcc-g++ development package
- ncurses, readline (for user interface)
- iconv (character conversion)
###3.1. Cygwin1.dll dependent compiling
Same as on Linux.
Testing Hunspell (see tests in tests/ subdirectory):
make check
or with Valgrind debugger:
make check
VALGRIND=[Valgrind_tool] make check
For example:
make check
VALGRIND=memcheck make check
features and dictionary format:
man 5 hunspell
man hunspell
hunspell -h
The src/tools dictionary contains ten executables after compiling:
- affixcompress: dictionary generation from large (millions of words)
- analyze: example of spell checking, stemming and morphological analysis
- chmorph: example of automatic morphological generation and conversion
- example: example of spell checking and suggestion
- hunspell: main program for spell checking and others (see manual)
- hunzip: decompressor of hzip format
- hzip: compressor of hzip format
- makealias: alias compression (Hunspell only, not back compatible with MySpell)
- munch: dictionary generation from vocabularies (it needs an affix file, too).
- unmunch: list all recognized words of a MySpell dictionary
- wordforms: word generation (Hunspell version of unmunch)
After compiling and installing (see INSTALL) you can
run the Hunspell spell checker (compiled with user interface)
with a Hunspell or Myspell dictionary:
hunspell -d en_US text.txt
or without interface:
hunspell -d en_UK -l <text.txt
Dictionaries consist of an affix and dictionary file, see tests/
Using Hunspell library with GCC
Including in your program:
#include <hunspell.hxx>
Linking with Hunspell static library:
g++ -lhunspell example.cxx
Myspell & Hunspell dictionaries:
Aspell dictionaries (need some conversion):
Conversion steps: see relevant feature request at .
László Németh
nemeth at numbertext org