7 System spell checker service
Patrick Goldinger edited this page 2024-09-23 18:47:57 +02:00

Applies to: v0.3.13-beta05 until 0.3.16 (inclusive)
Does NOT apply to: 0.4.0 or newer
Past implementation status: Beta


FlorisBoard is able to perform spell checking of input text on a system level with the help of Nuspell. For this, FlorisBoard registers a spell checker service, which receives requests from the Android framework to check the spelling of given words and sentences. These words are passed along to Nuspell, which, when loaded with a Hunspell dictionary, is able to check the spelling for a given word and possibly try to generate correction suggestions. As this feature is pretty complex and may not work on first try, this wiki FAQ tries to summarize the most frequently asked questions and answers.

How do I set up the Floris spell checker?

The spelling preferences are accessible through Typing > Corrections > Spell checker. First click on Active spell checker, which takes you to the system spell checker settings. There, change the spell checker from your default one to "FlorisBoard". While in this screen, you can also set the mode (called "Language" on most devices) the Floris spell checker should use. There are two modes available:

  • Use system languages: this mode uses the default language set across the entire system and will thus only recognize words for this language. You must provide a dictionary with a matching locale for this language.
  • Use keyboard subtypes: will use the language of the current Floris keyboard subtype. Note that changing the subtype while writing in a text field may require a restart of the app you are using.

How do I add dictionaries for spell checking?

FlorisBoard does not ship with any spell check dictionaries out-of-the-box, but it is easy to import some from pre-existing sources. Click on Manage spell checker dictionaries, which will take you to the dictionary management screen. There, click on "Where do I get spell checker dictionaries?" to get a list of well-known and supported import sources. Go to one of those sites listed, download either the affix and dictionary file or the extension archive. If you cannot find a matching dictionary for your desired dialect/language, you can also manually search Google for "Hunspell dictionaries <language/dialect>" and see if any .aff/.dic files are available.

Back in FlorisBoard, click on the plus button, then select the source you chose, import the files and finally click on "Import". After the import, it should appear in the list of dictionaries. When you are now writing in text fields of apps, FlorisBoard searches for a dictionary with a matching locale, loads this dictionary and then queries the written words.

Are spell check suggestions also shown in the Floris Smartbar?

Currently, spell checking is only performed through the spell check API and no spell checking is done within the keyboard itself, thus also no corrected words are suggested in the Smartbar. This idea is although planned to be added in the future.

All words are marked as incorrect, even correct ones!

Check if the language you are writing in matches with the one currently active (either system language or Floris subtype, dependent on the selected mode in the system spell check screen). If you made sure that these match up, this can possibly point to an transmission error between Java and the native code or an encoding error (UTF-8/UTF-16). In this case report this as a bug.

After all the above configuration steps, no words are checked at all!

  1. Make sure you have set the mode correctly in the system spell checker activity, else no dictionary will be chosen.
  2. Some fields like URL bars in browsers specifically disable spell checking, thus no spell checking occurs here. Try out a messaging app like WhatsApp, Signal etc., these apps have spell check enabled for the message input field.
  3. Try out if your default spell checker is working for the apps you tested FlorisBoard's spell checker. If it does not work either, this means either all apps disable spell checking or the system spell check manager fails to work correctly.