Saturday, June 27, 2026

newsletters - What is BrailleBase #0001

BrailleBase

What is BrailleBase

  • BrailleBase is an algorithm that translates characters into Braille.
  • Today, each country uses different Braille rules, and there is no universal standard for developers. This makes it almost impossible to create tools that are compatible with each other.
  • BrailleBase creates a universal layer that standardizes the logic, allowing any tool — from screen readers to Braille embossers — to speak the same language.
  • As a result, learning languages, accessing culture, and integrating devices becomes more accessible for millions of people.

Beyond translation

  • BrailleBase provides the number of dots in each Braille symbol. Example: the character '⠼', which indicates that a number follows, contains 4 dots.

  • It also provides the numeric position of each dot and the corresponding binary pattern.  For '⠼', the positions are 3‑4‑5‑6 and the binary is 001111.

  • These data can be accessed directly through methods that return dot counts, positions, binary patterns, and other metadata.

  • For integration with other tools, the output methods generate a complete map of each symbol in formats such as JSON, XML, YAML, and more.

  • The library is still under development, so method signatures may change. We are working to release a stable version as soon as possible.

Purpose of BrailleBase

Standardized Technology

  • Many companies and developers who want to create tools and technologies for blind people face a major barrier: integrating their microsystems with other equipment.
  • BrailleBase is the first library that combines translation, complete metadata, and multiple output formats without external dependencies.

Challenges to Be Addressed

  • Many countries do not have a well‑structured Braille system or documented rules.
  • Understanding these rules, standardizing them, and converting them into a base algorithm usable by subclasses is one of the biggest challenges.
  • Presenting BrailleBase to companies in the accessibility sector is another area we need to improve, especially in communicating the value of the tool.
  • It is also essential to produce educational material and clear documentation, ensuring that both beginners and experienced developers can use BrailleBase without difficulty.

Final Statement

  • This is the first official text of the BrailleBase tool.
  • The system currently includes the Japanese, Portuguese, Arabic, and English alphabets.
  • All letters have been individually verified, but the second‑level rules are still under development.
  • There is still no support for full‑word translation, but this feature is already planned.
  • We are preparing a draft of the Pinyin class.
  • Once the English documentation is completed, the Pinyin class finalized, and the known bugs fixed, we will release the first usable version of the package.
  • From that release onward, the method signatures will become stable, ensuring that updates do not break dependent applications.
  • We do not use external dependencies beyond those provided by default in each programming language.
  • The classes braille, braillebase, braillebasejapanese, braillebaseportuguese, braillebasearabic, and braillebaseenglish have (or will have) CC0, MIT, or Apache 2.0 licenses.

Get in touch through GitHub: https://github.com/DukaCrazy

My name is Duka — and if a project isn’t crazy enough to change the world, it’s probably not mine.

  • 2026/06/24

Friday, June 26, 2026

READ ME | Braille Base

BrailleBase

Custom Language and Mapping Implementation

This code snippet demonstrates how to extend the core BrailleBase class to create a custom translator using Object-Oriented Programming (OOP) inheritance. By inheriting from BrailleBase and leveraging the append_braille_letter() method, you can map any custom character or language symbol to its corresponding Braille unicode character.

Step-by-step breakdown:

Class Inheritance: Defines BrailleBaseAnyLanguage, which inherits all core functionality from BrailleBase.

Character Mapping: Inside the constructor (init), it registers custom symbols (hieroglyphs in this example) alongside their corresponding Braille dots.

Execution: Instantiates the custom class (bbal) and translates the input string into Braille text output via output_braille_txt().

Key Technical Takeaways Design Pattern: Class Inheritance and Extensibility.

Core Advantage: Demonstrates that the library is not restricted to pre-packaged languages, allowing developers to define custom Braille lookup tables for any writing system.

from braillebase import BrailleBase

class BrailleBaseAnyLanguage(BrailleBase):
    def __init__(self):
        super().__init__()
        self.append_braille_letter("𓃒", ["⠁"]) 
        self.append_braille_letter("𓃖", ["⠃"]) 
        self.append_braille_letter("𓃯", ["⠉"]) 
        self.append_braille_letter("𓅅", ["⠙"]) 
        self.append_braille_letter("𓅼", ["⠑"]) 

bbal = BrailleBaseAnyLanguage()
print("𓃒 𓃖 𓃯 𓅅 𓅼")
print(bbal.output_braille_txt("𓃒 𓃖 𓃯 𓅅 𓅼"))

Output

𓃒 𓃖 𓃯 𓅅 𓅼

⠁⠀⠃⠀⠉⠀⠙⠀⠑

Generating Full HTML Reports and Alternative Data Formats

This code snippet illustrates how to process Japanese text using a pre-configured language module (BrailleBaseJapanese) and export a comprehensive HTML report containing detailed Braille character metadata.

Step-by-step breakdown:

from braille import *

bbj = BrailleBaseJapanese()
print(bbj.output_all_html("おはよう"))

Language Module Import: Imports the library components and instantiates the BrailleBaseJapanese parser.

HTML Document Generation: The output_all_html() method converts the input string (e.g., "おはよう") into a complete, structured HTML document.

Structured Metadata Display: The generated HTML provides detailed character breakdown tables, including:

Reading vs. Writing Braille: Visual representations for reading and writing modes.

Encoding & Metrics: Binary representations, standard cell numbering (dot positions 1 through 6), and Unicode values (e.g., U+280a) for each character.

Multi-Format Export Support: In addition to HTML output, the library provides built-in serializers for JSON, YAML, XML, and other data formats for integration with web APIs and external applications.

Key Technical Takeaways Primary Function: Comprehensive document and dataset generation for language-specific Braille conversion.

Core Advantage: Provides full character inspection (binary, cell dot numbering, Unicode hex) alongside visual Braille characters, making it ideal for rendering in web browsers or exporting to data pipelines.

<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
  <title>Braille Base - HTML Generate</title>
  <style>
    table {      border-collapse: collapse;      width: 400px;      font-family: sans-serif;    }
    td {      border: 1px solid #000;      padding: 6px 10px;    }
    .cell-letter {      font-size: 48px;      text-align: center;      vertical-align: middle;      width: 100px;    }
  </style>
</head>
<body>
<div class="text-output">
<h2>Text</h2>
<p>おはよう</p>
</div>
<div class="read-braille-output">
<h2>Read Braille</h2>
<p>['⠊', '⠥', '⠜', '⠉']</p>
</div>
<div class="read-braille-output">
<h2>Write Braille</h2>
<p>['⠉', '⠣', '⠬', '⠑']</p>
</div>
<div class="braille-table-output">
    <h3>Letter 1</h3>
<table>
    <tr>    <td class="cell-letter" rowspan="10"></td>
      <td colspan="2"><b>Read Braille</b></td>
      <tr>    <td>Braille:</td><td></td>  </tr>
      <tr>    <td>Binary:</td><td>001010</td>  </tr>
      <tr>    <td>Numbering:</td><td>2-4</td>  </tr>
      <tr>    <td>Unicode:</td><td>U+280a</td>  </tr>
      <tr>    <td colspan="2"><b>Write Braille</b></td>  </tr>
      <tr>    <td>Braille:</td><td></td>  </tr>
      <tr>    <td>Binary:</td><td>010001</td>  </tr>
      <tr>    <td>Numbering:</td><td>1-5</td>  </tr>
      <tr>    <td>Unicode:</td><td>U+2811</td>  </tr>
</table>
<br>
    <h3>Letter 2</h3>
<table>
    <tr>    <td class="cell-letter" rowspan="10"></td>
      <td colspan="2"><b>Read Braille</b></td>
      <tr>    <td>Braille:</td><td></td>  </tr>
      <tr>    <td>Binary:</td><td>100101</td>  </tr>
      <tr>    <td>Numbering:</td><td>1-3-6</td>  </tr>
      <tr>    <td>Unicode:</td><td>U+2825</td>  </tr>
      <tr>    <td colspan="2"><b>Write Braille</b></td>  </tr>
      <tr>    <td>Braille:</td><td></td>  </tr>
      <tr>    <td>Binary:</td><td>101100</td>  </tr>
      <tr>    <td>Numbering:</td><td>3-4-6</td>  </tr>
      <tr>    <td>Unicode:</td><td>U+282c</td>  </tr>
</table>
<br>
    <h3>Letter 3</h3>
<table>
    <tr>    <td class="cell-letter" rowspan="10"></td>
      <td colspan="2"><b>Read Braille</b></td>
      <tr>    <td>Braille:</td><td></td>  </tr>
      <tr>    <td>Binary:</td><td>011100</td>  </tr>
      <tr>    <td>Numbering:</td><td>3-4-5</td>  </tr>
      <tr>    <td>Unicode:</td><td>U+281c</td>  </tr>
      <tr>    <td colspan="2"><b>Write Braille</b></td>  </tr>
      <tr>    <td>Braille:</td><td></td>  </tr>
      <tr>    <td>Binary:</td><td>100011</td>  </tr>
      <tr>    <td>Numbering:</td><td>1-2-6</td>  </tr>
      <tr>    <td>Unicode:</td><td>U+2823</td>  </tr>
</table>
<br>
    <h3>Letter 4</h3>
<table>
    <tr>    <td class="cell-letter" rowspan="10"></td>
      <td colspan="2"><b>Read Braille</b></td>
      <tr>    <td>Braille:</td><td></td>  </tr>
      <tr>    <td>Binary:</td><td>001001</td>  </tr>
      <tr>    <td>Numbering:</td><td>1-4</td>  </tr>
      <tr>    <td>Unicode:</td><td>U+2809</td>  </tr>
      <tr>    <td colspan="2"><b>Write Braille</b></td>  </tr>
      <tr>    <td>Braille:</td><td></td>  </tr>
      <tr>    <td>Binary:</td><td>001001</td>  </tr>
      <tr>    <td>Numbering:</td><td>1-4</td>  </tr>
      <tr>    <td>Unicode:</td><td>U+2809</td>  </tr>
</table>
<br>
</div>
<footer><p>Thank you for using Braille Base.</p></footer>
</body>
</html>

Thanks

The tool is still in development, but it's fully usable and we’d love your opinion. Thanks for reading this far. Cheers.

License | Braille Base

 MIT License


Copyright (c) 2026 Nagao Yuji


Permission is hereby granted, free of charge, to any person obtaining a copy

of this software and associated documentation files (the “Software”), to deal

in the Software without restriction, including without limitation the rights

to use, copy, modify, merge, publish, distribute, sublicense, and/or sell

copies of the Software, and to permit persons to whom the Software is

furnished to do so, subject to the following conditions:


The above copyright notice and this permission notice shall be included in all

copies or substantial portions of the Software.


THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR

IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,

FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE

AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER

LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,

OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE

SOFTWARE.

Change Log | Braille Base

 

2026/06/23 - Version 0.0.15 Summary

  • Invocation of the special append methods via the simple append method using the third argument.

2026/06/22 - Version 0.0.14 Summary

  • Separating the RTL module for languages like Arabic, Hebrew, and Persian.
  • Specific rules for uppercase Latin letters.
  • Spelling fix in method names: lettr -> letter

2026/06/14 - Version 0.0.13 Summary

  • Scope Optimization for Latin Characters: Updated internal variables within the methods responsible for parsing and validating Latin alphabet rules.
  • Modularization and Isolation of the CJK Block: Segregated the processing pipeline for CJK languages (Chinese, Japanese, and Korean).
  • This behavior was isolated from both the generic rules_02 method and the non-special character flow, ensuring exclusive and specialized handling for this linguistic group. Code Refactoring and Cleanup: Removed structural redundancies to improve system readability and maintainability.
  • Performance Optimization: Updated the methods responsible for managing Braille character lists and their respective dependencies, reducing computational overhead.

2026/06/07 — Version 0.0.12 Summary

  • Updated documentation.
  • Updated dependence/ def __constructor_all_table(self): [brailletable 1.0.0 -> brailletable 1.0.1].
  • New paramether in Prepare Special 01: Roma Letter/ def setting_braille_rules01(self, braille_uppercase: str, braille_lowercase: str): [Only Uppercase -> Uppercase and Lowercase]

2026/05/17 — Version 0.0.8 Summary

    1. Mapping group (0003) Add: def get_index_to_braille(self, index: int) -> str: 0003-C
    1. All class members became instance members
  • Constructor Add: def __constructor_all_table(self):
  • a) Tables group (0004): All methods of group 4 receive the private lists.

2026/05/13 — Version 0.0.7 Summary

  • Improved support for Latin letters compared to previous versions.

2026/05/10 — Version 0.0.6 Summary

  • Updated documentation.
  • Fixed internal bugs.
  • Added new output methods.

2026/05/08 — Version 0.0.5 Summary

  • Added automatic registration of all 64 Unicode braille cells as default keys in the internal map.
  • Added support for handling text that contains numbers (using the number‑processing method we implemented).
  • Updated and expanded documentation to reflect the new initialization behavior and numeric‑handling support.

newsletters - What is BrailleBase #0001

BrailleBase What is BrailleBase BrailleBase is an algorithm that translates characters into Braille. Today, each country uses different Brai...