Braille System for West African Languages Introduced in DBT 12.7

Duxbury Systems introduces a braille translator for Windows and Mac that handles the underserved languages of West Africa (and across Africa). Duxbury Systems is a company located in Massachusetts, USA, which produces the Duxbury Braille Translator, known and respected around the world. The software supports over 170 languages and many systems of braille mathematics from around the world.

Duxbury Systems analyzed the characters used (orthography) in hundreds of African languages and worked out a single braille system that could be written out in two dozen simple rules. Using the same technology that Duxbury Systems used to create a single braille translator for biblical scholars, Duxbury added support for Arabic, extended Arabic (a separate Unicode range previously not supported by Duxbury), Ethiopic, N'ko, Tifinagh, and Vai scripts. There is a matching braille-to-print translator to make inkprint from braille material written in this new braille system.

Here is a short 5 page description translated into 30 different languages. Feel free to widely distribute this file.

The Chart

Basic Principles

Here are the basic principles in a simple chart. Lines 1-6 are single braille cells for some letters with an underdot. For other letters needing an underdot, use dots 56 (see line 20 of the chart). Lines 7-16 are special characters often encountred. Lines 17-23 are for braille prefix characters to modify the next character. Notice that the modifiers only use the right portion of the braille cell (dots 4, 5, and 6).

Columns 3, 4, and 5 all have the same information, but displayed differently. The USA-ASCII is important, because it is the form that the computer reads and processes. A link below explains it.

LineCharacter or AccentBrailleBraille DotsUSA-ASCIIUnicode
1a underdotdots 12356(
2e underdotdots 265
3i underdotdots 359
4o underdotdots 1256\
5u underdotdots 23456)
6s underdotdots 246%
7firm apostrophe - ʼdot 3'
8script a - ɑdots 123456=U+0251
9ae - ædots 345>U+00e6
10ezh - ʒdots 146%U+0292
11open e - ɛdots 12456]U+025b
12schwa - ədots 2346!U+0259
13eng - ŋdots 346+U+014b
14open o - ɔdots 246[U+0254
15glottal stop - ʔdots 16*U+0294
16rev glottal stop - ʕdots 16*U+0295
17accent acutedot 4@
18accent gravedot 5"
19accent macrondots 45^
20underdotdots 56;
21combo voweldots 456_
22altered letter #1dot 4@
23altered letter #2dots 456_

Clarifications and Exceptions:

Braille for underdot is also used for underbar and stroke (and the dotless i and oe).

The dots 45 for macron is used for other accents above the letter which is not accent acute or accent grave.

The letter u can have a double accent acute. I solved this with two dot 4's in a row. I welcome a better approach.

The dot 4 is used for both an accent acute and an altered letter. Only three consonants have accent acute: c, n, and p. All other uses with a consonant are altered letters. The dot 4 y is an altered y, not accent acute y. In this instance, the y is an honorary consonant.

Duxbury Implementation:

A braille system is more than letters. How the other characters are handled is a tricky subject. We follow American standards (such as dot 6 for capitalization and dropped h for question mark), but avoid multi-cell UEB combinations. For many braille systems, dot 4 is used for currency symbols. The dot 4 is heavily used here, so dots 1246 or $ is used instead. We have implemented $c for cents, $d for dollar, $e for Euro, $l for pound, $n for Naira, and $y for yen. Many of the assignments are designed to be easy to learn: dropped g for parenthesis, dots 46 in front for brackets, dots 456 in front for braces. For emphasis, we used an old system using dots 46 simply because it was easy to program.


The braille is shown as US-ASCII braille. There is a chart of US-ASCII braille at the second half of this web page.

Feel free to contact David at languages@duxsys.com with your thoughts. He needs to know if there is a language which uses different characters which would be the same thing in braille. He also needs modest length sample files to test this new translator. By the way, here is the list of braille translators that Duxbury Systems offers for Africa. Here is the list of clashes between the West African languages translator and other translators for West African translators.

Here is a graphical display of the density of West African languages.


Sample Translations into Braille

(1) Here are some text samples from over 12 languages. The next link is the same files in US-ASCII braille. (2) Here is bible text in Agnang. The next link is the same bible text in US-ASCII braille (over 200 pages long).

A demonstration of handling different scripts: (1) Arabic text converted into uncontracted Arabic braille (2) N'ko (and Latin script) text converted into braille (3) Armharic text converted into Amharic braille. The point is that all the samples on this page were translated by the same Duxbury Systems translator built into DBT 12.7.


In the chart below, a color shows a new letter. A lighter color separates vowels using a underbar or underdot. The computer generated data deleted much of the geographic data (the X's in the chart).

3
L CaseUnicodeU CaseUnicode Benin Burkina
Faso
Cameroon Ghana Guinea Ivory
Coast
Liberia Mali Niger Nigeria Senegal Sierra
Leone
Togo Brlwhywhat
ʼ02BC XXXXXXXXX 'rule(s): 7firm apostrophe
á00e1Á00c1@arule(s): 17a acute
'a+0301'A+0301@arule(s): 17a acute
â00e2Â00c2^arule(s): 19a circumflex
ã00e3Ã00c3^arule(s): 19a tilde
ä00e4Ä00c4^arule(s): 19a umlaut
ā0101Ā0100^arule(s): 19a macon
ă0103Ă0102^arule(s): 19a breve
ǎ01ceǍ01cd^arule(s): 19a caron
'a+0302'A+0302^arule(s): 19a circumflex
'a+0303'A+0303^arule(s): 19a tilde
'a+0304'A+0304^arule(s): 19a macon
'a+0306'A+0306^arule(s): 19a breve
'a+030c'A+030c^arule(s): 19a caron
à00e0À00c0;arule(s): 18a grave
'a+0300'A+0300;arule(s): 18a grave
á̟00e1+031fÁ̟x00c1+031f@(rule(s): 1+17a acute underdot
ạ́00e1+0323Ạ́x00c1+0323@(rule(s): 1+17a acute underdot
á̱00e1+0331Á̱x00c1+0331@(rule(s): 1+17a acute underbar
â̟00e2+031fÂ̟x00c2+031f^(rule(s): 1+19a circumflex underdot
ậ00e2+0323Ậx00c2+0323^(rule(s): 1+19a circumflex underdot
â̱00e2+0331Â̱x00c2+0331^(rule(s): 1+19a circumflex underbar
ã̟00e3+031fÃ̟x00c3+031f^(rule(s): 1+19a tilde underdot
ạ̃00e3+0323Ạ̃x00c3+0323^(rule(s): 1+19a tilde underdot
ã̱00e3+0331Ã̱x00c3+0331^(rule(s): 1+19a tilde underbar
ä̟00e4+031fÄ̟x00c4+031f^(rule(s): 1+19a umlaut underdot
ạ̈00e4+0323Ạ̈x00c4+0323^(rule(s): 1+19a umlaut underdot
ä̱00e4+0331Ä̱x00c4+0331^(rule(s): 1+19a umlaut underbar
ā̟0101+031fĀ̟x0100+031f^(rule(s): 1+19a macon underdot
ạ̄0101+0323Ạ̄x0100+0323^(rule(s): 1+19a macon underdot
ā̱0101+0331Ā̱x0100+0331^(rule(s): 1+19a macon underbar
ă̟0103+031fĂ̟x0102+031f^(rule(s): 1+19a breve underdot
ặ0103+0323Ặx0102+0323^(rule(s): 1+19a breve underdot
ă̱0103+0331Ă̱x0102+0331^(rule(s): 1+19a breve underbar
ǎ̟01ce+031fǍ̟x01cd+031f^(rule(s): 1+19a caron underdot
ạ̌01ce+0323Ạ̌x01cd+0323^(rule(s): 1+19a caron underdot
ǎ̱01ce+0331Ǎ̱x01cd+0331^(rule(s): 1+19a caron underbar
1ea11ea0(rule(s): 1a underdot
'a+031f'A+031f(rule(s): 1a underdot
'a+0323'A+0323(rule(s): 1a underdot
'a+0331'A+0331(rule(s): 1a underbar
à̟00e0+031fÀ̟x00c0+031f;(rule(s): 1+18a grave underdot
ạ̀00e0+0323Ạ̀x00c0+0323;(rule(s): 1+18a grave underdot
à̱00e0+0331À̱x00c0+0331;(rule(s): 1+18a grave underbar
ɑ02512c6dX=rule(s): 8script a
ɑ́0251+0301Ɑ́2c6d+0301@=rule(s): 8+17script a acute
ɑ̂0251+0302Ɑ̂2c6d+0302^=rule(s): 8+19script a circumflex
ɑ̃0251+0303Ɑ̃2c6d+0303^=rule(s): 8+19script a tilde
ɑ̄0251+0304Ɑ̄2c6d+0304^=rule(s): 8+19script a macon
ɑ̆0251+0306Ɑ̆2c6d+0306^=rule(s): 8+19script a breve
ɑ̌0251+030cⱭ̌2c6d+030c^=rule(s): 8+19script a caron
ɑ̀0251+0300Ɑ̀2c6d+0300;=rule(s): 8+18script a grave
æ00e6Æ00c6X>rule(s): 9ae character
ǽ00e6+0301Ǽ00c6+0301@>rule(s): 9+17ae char. acute
æ̂00e6+0302Æ̂00c6+0302^>rule(s): 9+19ae char. circumflex
æ̃00e6+0303Æ̃00c6+0303^>rule(s): 9+19ae char. tilde
ǣ00e6+0304Ǣ00c6+0304^>rule(s): 9+19ae char. macon
æ̆00e6+0306Æ̆00c6+0306^>rule(s): 9+19ae char. breve
æ̌00e6+030cÆ̌00c6+030c^>rule(s): 9+19ae char. caron
æ̀00e6+0300Æ̀00c6+0300;>rule(s): 9+18ae char. grave
1E051E04XX;brule(s): 20b underdot
'b+031f'B+031fXX;brule(s): 20b underdot
ɓ0253Ɓ0181XXXXXXXXX@brule(s): 22bent b
'b+0303'B+0303XXXXXXXXX@brule(s): 22bent b
ć0107Ć0106X@crule(s): 17c acute
'c+0301'C+0301X@crule(s): 17c acute
č010DČ010CX^crule(s): 19c caron
1E0F1E0E;drule(s): 20d underbar
1E0D1E0CXXX;drule(s): 20d underdot
'd+031f'D+031fXXX;drule(s): 20d underdot
'd+0303'D+0303XXX@drule(s): 22d tail
ɖ0256Ɖ0189XXXX@drule(s): 22d tail
ɗ0257Ɗ018AXXXXXXX@drule(s): 22d hook
é00e9É00c9@erule(s): 17e acute
'e+0301'E+0301@erule(s): 17e acute
ê00eaÊ00ca^erule(s): 19e circumflex
ë00ebË00cb^erule(s): 19e umlaut
ē0113Ē0112^erule(s): 19e macon
ĕ0115Ĕ0114^erule(s): 19e breve
ě011bĚ011a^erule(s): 19e caron
1ebd1ebc^erule(s): 19e tilde
'e+0302'E+0302^erule(s): 19e circumflex
'e+0303'E+0303^erule(s): 19e tilde
'e+0304'E+0304^erule(s): 19e macon
'e+0306'E+0306^erule(s): 19e breve
'e+030c'E+030c^erule(s): 19e caron
è00e8È00c8;erule(s): 18e grave
'e+0300'E+0300;erule(s): 18e grave
é̟00e9+031fÉ̟x00c9+031f@5rule(s): 2+17e acute underdot
ẹ́00e9+0323Ẹ́x00c9+0323@5rule(s): 2+17e acute underdot
é̱00e9+0331É̱x00c9+0331@5rule(s): 2+17e acute underbar
ê̟00ea+031fÊ̟x00ca+031f^5rule(s): 2+19e circumflex underdot
ệ00ea+0323Ệx00ca+0323^5rule(s): 2+19e circumflex underdot
ê̱00ea+0331Ê̱x00ca+0331^5rule(s): 2+19e circumflex underbar
ë̟00eb+031fË̟x00cb+031f^5rule(s): 2+19e umlaut underdot
ẹ̈00eb+0323Ẹ̈x00cb+0323^5rule(s): 2+19e umlaut underdot
ë̱00eb+0331Ë̱x00cb+0331^5rule(s): 2+19e umlaut underbar
ē̟0113+031fĒ̟x0112+031f^5rule(s): 2+19e macon underdot
ẹ̄0113+0323Ẹ̄x0112+0323^5rule(s): 2+19e macon underdot
ē̱0113+0331Ē̱x0112+0331^5rule(s): 2+19e macon underbar
ĕ̟0115+031fĔ̟x0114+031f^5rule(s): 2+19e breve underdot
ẹ̆0115+0323Ẹ̆x0114+0323^5rule(s): 2+19e breve underdot
ĕ̱0115+0331Ĕ̱x0114+0331^5rule(s): 2+19e breve underbar
ě̟011b+031fĚ̟x011a+031f^5rule(s): 2+19e caron underdot
ẹ̌011b+0323Ẹ̌x011a+0323^5rule(s): 2+19e caron underdot
ě̱011b+0331Ě̱x011a+0331^5rule(s): 2+19e caron underbar
ẽ̟1ebd+031fẼ̟x1ebc+031f^5rule(s): 2+19e tilde underdot
ẹ̃1ebd+0323Ẹ̃x1ebc+0323^5rule(s): 2+19e tilde underdot
ẽ̱1ebd+0331Ẽ̱x1ebc+0331^5rule(s): 2+19e tilde underbar
1eb91eb85rule(s): 2e underdot
'e+031f'E+031f5rule(s): 2e underdot
'e+0323'E+03235rule(s): 2e underdot
'e+0331'E+03315rule(s): 2e underbar
è̟00e8+031fÈ̟x00c8+031f;5rule(s): 2+18e grave underdot
ẹ̀00e8+0323Ẹ̀x00c8+0323;5rule(s): 2+18e grave underdot
è̱00e8+0331È̱x00c8+0331;5rule(s): 2+18e grave underbar
ɛ025BƐ0190XXXXXXXXXXX]rule(s): 11open e
ɛ́025b+0301Ɛ́0190+0301@]rule(s): 11+17open e acute
ɛ̂025b+0302Ɛ̂0190+0302^]rule(s): 11+19open e circumflex
ɛ̃025b+0303Ɛ̃0190+0303^]rule(s): 11+19open e tilde
ɛ̄025b+0304Ɛ̄0190+0304^]rule(s): 11+19open e macon
ɛ̆025b+0306Ɛ̆0190+0306^]rule(s): 11+19open e breve
ɛ̈025b+0308Ɛ̈0190+0308^]rule(s): 11+19open e umlaut
ɛ̌025b+030cƐ̌0190+030c^]rule(s): 11+19open e caron
ɛ̀025b+0300Ɛ̀0190+0300;]rule(s): 11+18open e grave
ə0259Ə018FXXXXXXXX!rule(s): 12schwae
ə́0259+0301Ə́018f+0301@!rule(s): 12+17schwa acute
ə̂0259+0302Ə̂018f+0302^!rule(s): 12+19schwa circumflex
ə̃0259+0303Ə̃018f+0303^!rule(s): 12+19schwa tilde
ə̄0259+0304Ə̄018f+0304^!rule(s): 12+19schwa macon
ə̆0259+0306Ə̆018f+0306^!rule(s): 12+19schwa breve
ə̌0259+030cƏ̌018f+030c^!rule(s): 12+19schwa caron
ə̀0259+0300Ə̀018f+0300;!rule(s): 12+18schwa grave
ǝ01ddƎ018eXXXXXXXX!rule(s): 12schwa
ƒ0192Ƒ0191XX@frule(s): 22f hook
ɡ0261ɢ0262Xgscript g
ɠ0260Ɠ0193X@grule(s): 22g hook
ɣ0263Ɣ0194XXXXX_grule(s): 23small gamma
ɦ0266A7AAX@hrule(s): 22h hook
'h+0303'H+0303X@hrule(s): 22h hook
1E251E24XX;hrule(s): 20h underdot
'h+031f'H+031fXX;hrule(s): 20h underdot
í00edÍ00cd@irule(s): 17i acute
'i+0301'I+0301@irule(s): 17i acute
î00eeÎ00ce^irule(s): 19i circumflex
ï00efÏ00cf^irule(s): 19i umlaut
ĩ0129Ĩ0128^irule(s): 19i tilde
ī012bĪ012a^irule(s): 19i macon
ĭ012dĬ012c^irule(s): 19i breve
ǐ01d0Ǐ01cf^irule(s): 19i caron
'i+0302'I+0302^irule(s): 19i circumflex
'i+0303'I+0303^irule(s): 19i tilde
'i+0304'I+0304^irule(s): 19i macon
'i+0306'I+0306^irule(s): 19i breve
'i+030c'I+030c^irule(s): 19i caron
ì00ecÌ00cc;irule(s): 18i grave
'i+0300'I+0300;irule(s): 18i grave
í̟00ed+031fÍ̟x00cd+031f@9rule(s): 3+17i acute underdot
ị́00ed+0323Ị́x00cd+0323@9rule(s): 3+17i acute underdot
í̱00ed+0331Í̱x00cd+0331@9rule(s): 3+17i acute underbar
î̟00ee+031fÎ̟x00ce+031f^9rule(s): 3+19i circumflex underdot
ị̂00ee+0323Ị̂x00ce+0323^9rule(s): 3+19i circumflex underdot
î̱00ee+0331Î̱x00ce+0331^9rule(s): 3+19i circumflex underbar
ï̟00ef+031fÏ̟x00cf+031f^9rule(s): 3+19i umlaut underdot
ị̈00ef+0323Ị̈x00cf+0323^9rule(s): 3+19i umlaut underdot
ï̱00ef+0331Ï̱x00cf+0331^9rule(s): 3+19i umlaut underbar
ĩ̟0129+031fĨ̟x0128+031f^9rule(s): 3+19i tilde underdot
ị̃0129+0323Ị̃x0128+0323^9rule(s): 3+19i tilde underdot
ĩ̱0129+0331Ĩ̱x0128+0331^9rule(s): 3+19i tilde underbar
ī̟012b+031fĪ̟x012a+031f^9rule(s): 3+19i macon underdot
ị̄012b+0323Ị̄x012a+0323^9rule(s): 3+19i macon underdot
ī̱012b+0331Ī̱x012a+0331^9rule(s): 3+19i macon underbar
ĭ̟012d+031fĬ̟x012c+031f^9rule(s): 3+19i breve underdot
ị̆012d+0323Ị̆x012c+0323^9rule(s): 3+19i breve underdot
ĭ̱012d+0331Ĭ̱x012c+0331^9rule(s): 3+19i breve underbar
ǐ̟01d0+031fǏ̟x01cf+031f^9rule(s): 3+19i caron underdot
ị̌01d0+0323Ị̌x01cf+0323^9rule(s): 3+19i caron underdot
ǐ̱01d0+0331Ǐ̱x01cf+0331^9rule(s): 3+19i caron underbar
1ecb1eca9rule(s): 3i underdot
ị́1ecb+0301Ị́1eca+0301@9rule(s): 3+17i underdot acute
ị̃1ecb+0303Ị̃1eca+0303^9rule(s): 3+19i underdot tilde
'i+031f'I+031f9rule(s): 3i underdot
'i+0323'I+03239rule(s): 3i underdot
'i+0331'I+03319rule(s): 3i underbar
ì̟00ec+031fÌ̟x00cc+031f;9rule(s): 3+18i grave underdot
ị̀00ec+0323Ị̀x00cc+0323;9rule(s): 3+18i grave underdot
ì̱00ec+0331Ì̱x00cc+0331;9rule(s): 3+18i grave underbar
ƙ0199Ƙ0198XX@krule(s): 22k hook
1E371E36XX;lrule(s): 20l underdot
'l+031f'L+031fXX;lrule(s): 20l underdot
ł0142Ł0141XX;lrule(s): 20l stroke
1E471E46X;nrule(s): 20n underdot
'n+031f'N+031fX;nrule(s): 20n underdot
ñ00F1Ñ00D1XXXX^nrule(s): 19n tilde
ń0144Ń0143XXX@nrule(s): 17n acute
'n+0301'N+0301XXX@nrule(s): 17n acute
'n+0300'N+0300XXX"nrule(s): 18n grave
1e451e44;nrule(s): 20n overdot
ň0148Ň0147^nrule(s): 19n caron
ɲ0272Ɲ019DXXX_nrule(s): 23n left hook
ŋ014BŊ014AXXXXXXXXXXXX+rule(s): 13eng
ŋ́014b+0301Ŋ́014a+0301@+rule(s): 13+17eng acute
ŋ̂014b+0302Ŋ̂014a+0302^+rule(s): 13+19eng circumflex
ŋ̃014b+0303Ŋ̃014a+0303^+rule(s): 13+19eng tilde
ŋ̄014b+0304Ŋ̄014a+0304^+rule(s): 13+19eng macon
ŋ̆014b+0306Ŋ̆014a+0306^+rule(s): 13+19eng breve
ŋ̌014b+030cŊ̌014a+030c^+rule(s): 13+19eng caron
ŋ̀014b+0300Ŋ̀014a+0300;+rule(s): 13+18eng grave
ó00f3Ó00d3@orule(s): 17o acute
'o+0301'O+0301@orule(s): 17o acute
ô00f4Ô00d4^orule(s): 19o circumflex
õ00f5Õ00d5^orule(s): 19o tilde
ö00f6Ö00d6^orule(s): 19o umlaut
ō014dŌ014c^orule(s): 19o macon
ŏ014fŎ014e^orule(s): 19o breve
ǒ01d2Ǒ01d1^orule(s): 19o caron
'o+0302'O+0302^orule(s): 19o circumflex
'o+0303'O+0303^orule(s): 19o tilde
'o+0304'O+0304^orule(s): 19o macon
'o+0306'O+0306^orule(s): 19o breve
'o+030c'O+030c^orule(s): 19o caron
ò00f2Ò00d2;orule(s): 18o grave
'o+0300'O+0300;orule(s): 18o grave
ó̟00f3+031fÓ̟x00d3+031f@\rule(s): 4+17o acute underdot
ọ́00f3+0323Ọ́x00d3+0323@\rule(s): 4+17o acute underdot
ó̱00f3+0331Ó̱x00d3+0331@\rule(s): 4+17o acute underbar
ô̟00f4+031fÔ̟x00d4+031f^\rule(s): 4+19o circumflex underdot
ộ00f4+0323Ộx00d4+0323^\rule(s): 4+19o circumflex underdot
ô̱00f4+0331Ô̱x00d4+0331^\rule(s): 4+19o circumflex underbar
õ̟00f5+031fÕ̟x00d5+031f^\rule(s): 4+19o tilde underdot
ọ̃00f5+0323Ọ̃x00d5+0323^\rule(s): 4+19o tilde underdot
õ̱00f5+0331Õ̱x00d5+0331^\rule(s): 4+19o tilde underbar
ö̟00f6+031fÖ̟x00d6+031f^\rule(s): 4+19o umlaut underdot
ọ̈00f6+0323Ọ̈x00d6+0323^\rule(s): 4+19o umlaut underdot
ö̱00f6+0331Ö̱x00d6+0331^\rule(s): 4+19o umlaut underbar
ō̟014d+031fŌ̟x014c+031f^\rule(s): 4+19o macon underdot
ọ̄014d+0323Ọ̄x014c+0323^\rule(s): 4+19o macon underdot
ō̱014d+0331Ō̱x014c+0331^\rule(s): 4+19o macon underbar
ŏ̟014f+031fŎ̟x014e+031f^\rule(s): 4+19o breve underdot
ọ̆014f+0323Ọ̆x014e+0323^\rule(s): 4+19o breve underdot
ŏ̱014f+0331Ŏ̱x014e+0331^\rule(s): 4+19o breve underbar
ǒ̟01d2+031fǑ̟x01d1+031f^\rule(s): 4+19o caron underdot
ọ̌01d2+0323Ọ̌x01d1+0323^\rule(s): 4+19o caron underdot
ǒ̱01d2+0331Ǒ̱x01d1+0331^\rule(s): 4+19o caron underbar
ò̟00f2+031fÒ̟x00d2+031f;\rule(s): 4+18o grave underdot
ọ̀00f2+0323Ọ̀x00d2+0323;\rule(s): 4+18o grave underdot
ò̱00f2+0331Ò̱x00d2+0331;\rule(s): 4+18o grave underbar
ø00F8Ø00D8X\rule(s): 4o slash
1ecd1ecc\rule(s): 4o underdot
ọ́1ecd+0301Ọ́1ecc+0301@\rule(s): 4+17o underdot acute
'o+031f'O+031f\rule(s): 4o underdot
'o+0323'O+0323\rule(s): 4o underdot
'o+0331'O+0331\rule(s): 4o underbar
ɶ0276Œ0152X_orule(s): 22oe character
œ0153Œ0152X_orule(s): 22oe character
ɔ0254Ɔ0186XXXXXXXXXXX[rule(s): 14open o
ɔ́0254+0301Ɔ́0186+0301@[rule(s): 14+17open o acute
ɔ̂0254+0302Ɔ̂0186+0302^[rule(s): 14+19open o circumflex
ɔ̃0254+0303Ɔ̃0186+0303^[rule(s): 14+19open o tilde
ɔ̄0254+0304Ɔ̄0186+0304^[rule(s): 14+19open o macon
ɔ̆0254+0306Ɔ̆0186+0306^[rule(s): 14+19open o breve
ɔ̌0254+030cƆ̌0186+030c^[rule(s): 14+19open o caron
ɔ̀0254+0300Ɔ̀0186+0300;[rule(s): 14+18open o grave
1E551E54X@prule(s): 17p acute
'p+0301'P+0301X@prule(s): 17p acute
ɾ027E X@rrule(s): 22r fishhook
š0161Š0160X^srule(s): 19s caron
1E631E62XXX%rule(s): 6s underdot
's+031f'S+031fXXX%rule(s): 6s underdot
ş015fŞ015eXXX%rule(s): 6s underdotish
ʃ0283Ɖ0189XX@srule(s): 22esh
ß00df1e9fX@%rule(s): 5+17s sharp
ť0165Ť0164X^trule(s): 19t caron
1E6F1E6E;trule(s): 20t underbar
ŧ0167Ŧ0166;trule(s): 20t stroke
1E6D1E6CXX;trule(s): 20t underdot
't+031f'T+031fXX;trule(s): 20t underdot
ţ0163Ţ0162XX;trule(s): 20t underdotish
ú00faÚ00da@urule(s): 17u acute
'u+0301'U+0301@urule(s): 17u acute
ű0171Ű0170@@urule(s): 17u double acute
û00fbÛ00db^urule(s): 19u circumflex
ü00fcÜ00dc^urule(s): 19u umlaut
ũ0169Ũ0168^urule(s): 19u tilde
ū016bŪ016a^urule(s): 19u macon
ŭ016dŬ016c^urule(s): 19u breve
ǔ01d4Ǔ01d3^urule(s): 19u caron
'u+0302'U+0302^urule(s): 19u circumflex
'u+0303'U+0303^urule(s): 19u tilde
'u+0304'U+0304^urule(s): 19u macon
'u+0306'U+0306^urule(s): 19u breve
'u+030c'U+030c^urule(s): 19u caron
ù00f9Ù00d9;urule(s): 18u grave
'u+0300'U+0300;urule(s): 18u grave
ú̟00fa+031fÚ̟x00da+031f@)rule(s): 5+17u acute underdot
ụ́00fa+0323Ụ́x00da+0323@)rule(s): 5+17u acute underdot
ú̱00fa+0331Ú̱x00da+0331@)rule(s): 5+17u acute underbar
û̟00fb+031fÛ̟x00db+031f^)rule(s): 5+19u circumflex underdot
ụ̂00fb+0323Ụ̂x00db+0323^)rule(s): 5+19u circumflex underdot
û̱00fb+0331Û̱x00db+0331^)rule(s): 5+19u circumflex underbar
ü̟00fc+031fÜ̟x00dc+031f^)rule(s): 5+19u umlaut underdot
ụ̈00fc+0323Ụ̈x00dc+0323^)rule(s): 5+19u umlaut underdot
ü̱00fc+0331Ü̱x00dc+0331^)rule(s): 5+19u umlaut underbar
ũ̟0169+031fŨ̟x0168+031f^)rule(s): 5+19u tilde underdot
ụ̃0169+0323Ụ̃x0168+0323^)rule(s): 5+19u tilde underdot
ũ̱0169+0331Ũ̱x0168+0331^)rule(s): 5+19u tilde underbar
ū̟016b+031fŪ̟x016a+031f^)rule(s): 5+19u macon underdot
ụ̄016b+0323Ụ̄x016a+0323^)rule(s): 5+19u macon underdot
ū̱016b+0331Ū̱x016a+0331^)rule(s): 5+19u macon underbar
ŭ̟016d+031fŬ̟x016c+031f^)rule(s): 5+19u breve underdot
ụ̆016d+0323Ụ̆x016c+0323^)rule(s): 5+19u breve underdot
ŭ̱016d+0331Ŭ̱x016c+0331^)rule(s): 5+19u breve underbar
ǔ̟01d4+031fǓ̟x01d3+031f^)rule(s): 5+19u caron underdot
ụ̌01d4+0323Ụ̌x01d3+0323^)rule(s): 5+19u caron underdot
ǔ̱01d4+0331Ǔ̱x01d3+0331^)rule(s): 5+19u caron underbar
1ee51ee4)rule(s): 5u underdot
ụ́1ee5+0301Ụ́1ee4+0301@)rule(s): 5+17u underdot acute
'u+031f'U+031f)rule(s): 5u underdot
'u+0323'U+0323)rule(s): 5u underdot
'u+0331'U+0331)rule(s): 5u underbar
ù̟00f9+031fÙ̟x00d9+031f;)rule(s): 5+18u grave underdot
ụ̀00f9+0323Ụ̀x00d9+0323;)rule(s): 5+18u grave underdot
ù̱00f9+0331Ù̱x00d9+0331;)rule(s): 5+18u grave underbar
ʉ0289Ʉ0244)rule(s): 5u stroke
ʉ́0289+0301Ʉ́044+0301@)rule(s): 5+17u stroke acute
ʉ̄0289+0304Ʉ̄044+0304^)rule(s): 5+19u stroke macron
ʌ028CɅ0245XX@vrule(s): 22turned v
ʋ028BƲ01B2XXXXX_vrule(s): 22v hook
ŵ0175Ŵ0174^wrule(s): 19w caron
1E851E84X^wrule(s): 19w umlaut
ƴ01B4Ƴ01B3XXXXXXX@yrule(s): 22y hook
ƶ01B6Ƶ01B5X;zrule(s): 20z stroke
1E931E92XXX;zrule(s): 20z underdot
'z+031f'Z+031fXXX;zrule(s): 20z underdot
ʒ0292Ʒ01B7XX%rule(s): 10ezh
ʒ́0292+0301Ʒ́01b7+0301@%rule(s): 10+17ezh acute
ʒ̂0292+0302Ʒ̂01b7+0302^%rule(s): 10+19ezh circumflex
ʒ̃0292+0303Ʒ̃01b7+0303^%rule(s): 10+19ezh tilde
ʒ̄0292+0304Ʒ̄01b7+0304^%rule(s): 10+19ezh macon
ʒ̆0292+0306Ʒ̆01b7+0306^%rule(s): 10+19ezh breve
ǯ0292+030cǮ01b7+030c^%rule(s): 10+19ezh caron
ʒ̀0292+0300Ʒ̀01b7+0300;%rule(s): 10+18ezh grave
ʔ0294 XX*rule(s): 15glottal stop
ʕ0295 X*rule(s): 16rev glottal stop
»00bb 0extrado_not_reverse
«00ab 8extrado_not_reverse
̀0300 *0300extramistake
́0301 *0301extramistake
̂0302 *0302extramistake
̃0303 *0303extramistake
̄0304 *0304extramistake
̅0305 *0305extramistake
̆0306 *0306extramistake
̇0307 *0307extramistake
̈0308 *0308extramistake
̝031d *031dextramistake
̞031e *031eextramistake
̟031f *031fextramistake

Duxbury Systems already has braille translators for Hausa, Yoruba, Igbo, and Éwé. Those specific braille translators are still the ones to use for those languages. In fact, the chart above has many conflicts with those braille codes. This chart is meant to suggest a starting point for a regional braille code for other West African languages, many of which are used by small populations.

Original Research: Rhonda L. Hartell ed. 1993, "The Alphabets of Africa", Dakar: UNESCO and Summer Institute of Linguistics. Symbols Inventory: (combining the data into a single chart) by Lee Pearce 2/2003. Adapted for braille: (some reformatting and adding the last three columns) by David Holladay 9/2022.

This chart can be prepared in additional ways: without nation data, and the big chart data sorted by inkprint or braille. On top of that, each of these can be delivered in Word or pdf files upon request.

The most important thing to mention is that this table serves two functions simultaneously. It is designed to be read by people to let them understand that this is a braille system that can be used to produce braille for languages across Africa. The second purpose is to be read by a computer to automatically produce a braille translator for Duxbury DBT. Once this file is changed, a revised translation table can be prepared and tested in minutes. But this has a few consequences.

For example, there are often several ways of writing unusual characters in print. Each of these needs a separate line in this chart. One way of representing an underdot is as a letter followed by Unicode 031f. One sample had a letter followed by two 031f characters. This caused a braille error. Extra rules were added to clean up these extra characters. These rules say "extra" and "mistake" in the table.