About Hunspell
--------------

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, OpenOffice.org UNO module.

Hunspell's code base comes from the OpenOffice.org MySpell
(http://lingucomponent.openoffice.org/MySpell-3.zip). See README.MYSPELL,
AUTHORS.MYSPELL and license.myspell files.
Hunspell is designed to eventually replace Myspell in OpenOffice.org.

Main features of Hunspell spell checker and morphological analyzer:

- Unicode support (affix rules work only with the first 65535 Unicode characters)

- 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 (LGPL, GPL, MPL tri-license)

Compiling on Unix/Linux
-----------------------

./configure
make
make install

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:

glibc-devel

optional developer packages:

ncurses (need for --with-ui)
readline (for fancy input line editing,
  configure parameter: --with-readline)
locale and gettext (but you can also use the
  --with-included-gettext configure parameter)

Hunspell distribution uses new Autoconf (2.59) and Automake (1.9).

Compiling on Windows
--------------------

1. Compiling with Windows SDK

Download the free Windows SDK of Microsoft, open a command prompt
window and cd into hunspell/src/win_api. Use the following command
to compile hunspell:

vcbuild

2. Compiling in Cygwin environment

Download and install Cygwin environment for Windows with the following
extra packages: 

make
gcc-g++ development package
mingw development package (for cygwin.dll free native Windows compilation)
ncurses, readline (for user interface)
iconv (character conversion)

2.1. Cygwin1.dll dependent compiling

Open a Cygwin shell, cd into the hunspell root directory:

./configure
make
make install

For dictionary development, use the --with-warnings option of configure.

For interactive user interface of Hunspell executable, use the --with-ui option.

readline configure parameter: --with-readline (for fancy input line editing)

1.2. Cygwin1.dll free compiling

Open a Cygwin shell, cd into the hunspell/src/win_api and

make -f Makefile.cygwin

Testing
-------

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

Documentation
-------------

features and dictionary format:
man 4 hunspell

man hunspell
hunspell -h
http://hunspell.sourceforge.net

Usage
-----

The src/tools dictionary contains ten executables after compiling
(or some of them are in the src/win_api):

affixcompress: dictionary generation from large (millions of words) vocabularies
  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
hunspell -d en_UK -l <text.txt

Dictionaries consist of an affix and dictionary file, see tests/
or http://wiki.services.openoffice.org/wiki/Dictionaries.

Using Hunspell library with GCC
-------------------------------

Including in your program:
#include <hunspell.hxx>

Linking with Hunspell static library:
g++ -lhunspell example.cxx 

Dictionaries
------------

Myspell & Hunspell dictionaries:
http://wiki.services.openoffice.org/wiki/Dictionaries

Aspell dictionaries (need some conversion):
ftp://ftp.gnu.org/gnu/aspell/dict
Conversion steps: see relevant feature request at http://hunspell.sf.net.

László Németh
nemeth at OOo
