# Crossword Quirks
**Status**: implemented


## Problem Statement

One challenge we've run into is per-language (and per-puzzle)
quirks. As an example, Dutch has an "IJ" digraph that appears in
puzzles as a character pair. Another example is the existence of rebus
puzzles in english. To handle that, we need to provide alternate
behaviors for crosswords.

Quirks is our way of encapsulating the game behavior in a single
place. It is primarily used by an XwordState to adjust the behavior of
a grid, but can be used outside of a play state to adjust the outer
chrome.

## Assumptions

To best handle that, we have a quirk GObject that can be included with
a puzzle state. It's optional – no quirks means standard behavior. But
it's a way to change the behavior on a per-puzzle basis. In addition,
it's possible to have quirks based on the environment of the crossword
game, so a quirks object without an associated crossword is possible

## List of quirks

* **IJ_DIGRAPH:** Dutch support for IJ digraph
* **GUESS_ADVANCE:** User setting for how to advance the cursor after a guess
