crossword-arabic
v2.0.5
Published
Generate crossword puzzles in Arabic script
Downloads
4
Maintainers
Readme
Crossword-Arabic
Make crossword puzzles in Arabic script (can be Arabic, Persian, Urdu, or other languages using Arabic script)
Based on my earlier Unicode crossword https://github.com/mapmeld/crossword-unicode
Problems with regular crosswords
Most Arabic crossword puzzles (like this one) separate out the letters so that they can be read in horizontal (right-to-left) and vertical (top-to-bottom) directions. If instead the words were connected horizontally, it would still be awkward to write a vertical word over it and attempt to connect the letter at an angle.
A new way to intersect
I started thinking that words should intersect on the blank space or cut in certain Arabic words. As an example, the word 'Al-Arabiya' is like this: العَرَبِيَّة There are two gaps, one between the A and L, and then the between the R[a] and B. These gaps are common enough that words can intersect often, and it gives the puzzle-solver some hints about what letters should be in the words.
These cuts are marked with a light grey square, regardless of whether another word intersects over it or not.
Usage
Client-side javascript
var game = new Crossword(HTML5canvas, columns, rows);
game.clearCanvas(true);
var clue = 'Arabic in Arabic';
var answer = 'العَرَبِيَّة';
game.addWord(answer, function(error, clueAnchor, direction) {
// error is null or an error (answer is too small, too big, cannot be placed etc)
// clueAnchor is the number used by the system (for example "2" for "2 across")
// direction is "across" or "down"
});
// advanced language options
game.setNumberTransform(function (n) {
// use another numeral
return persianNumbers(n);
});
Node module
Using the crossword module in NodeJS requires node-canvas.
Installation pre-requisites:
- Amazon Linux EC2
- Fedora
- OSX
- Solaris / Illumos / SmartOS
- Ubuntu / Debian
- Windows
- Heroku
- Centos
npm install canvas crossword --save
var Canvas = require('canvas');
var Crossword = require('crossword');
var width = 20;
var height = 15;
var canv = new Canvas(40 * width, 40 * height);
var game = new Crossword(canv, width, height);
game.clearCanvas(true);
game.addWord(answer, function(err, clueAnchor, direction) {
//
});
Command Line
Make crosswords from a word list using command line.
Prerequisites: NodeJS and fonts which support your language (preferably Noto Sans Kufi Arabic)
npm install crossword -g
crosswordar wordlist.txt output.png
# more custom setup
# 20 columns wide, 15 rows high
crosswordar wordlist.txt output.png -w 20 -h 15
License
Open source, MIT license