福野泰介の一日一創 - create every day

点字ファイルをユニコード点字に変換するプログラム

2018/02/12
#js #tenji 

6つの点で文字を表す点字は、つまり一文字6bit。コンピューターと相性が良いです。
2進数とプログラミングで解く点字

点字を表すファイル形式として使われているBES/BSE/BET/NABフォーマットなど。現代では世界共通で使われる文字コード「ユニコード」に点字が含まれるので、普通のテキストファイルでもやりとりできますが、いままで作られた点字ファイルには変換が必要です。

公表された著作物は点字への翻訳は無許諾で可能という、著作権法で特例があります。

第三十七条 公表された著作物は、点字により複製することができる。
2 公表された著作物については、電子計算機を用いて点字を処理する方式により、記録媒体に記録し、又は公衆送信(放送又は有線放送を除き、自動公衆送信の場合にあつては送信可能化を含む。)を行うことができる。
著作権法より)

音楽教育と特別支援学校から辿ったところ、点字楽譜というIchigoJamのMMLのような音楽表記方法を発見。視覚障害者の方向けに楽曲が点訳されているサイトがありました。
点字楽譜のページ

こちらで使われているファイルなどを、点字に変換するコンバーターを作成。

tenji converter - 点字変換」 CC BYのオープンソースです

プログラミングや電子工作が活躍できそうな予感はしますが、あまり点字に触れる機会がないので、どういうニーズがあるか分かっていません。 よかったらリクエスト、お送りください!

links
- 点字リーダー 一日一創2012
- 点字ライター 一日一創2012
- 2進数とプログラミングで解く点字 - IchigoJam

2進数とプログラミングで解く点字

2017/07/27
#IchigoJam #KidsIT #tenji 

身の回りに潜む2進数。
エレベーターの階数の隣、駅、公園で見かける点字をプログラミングしてみましょう。
点字 - Wikipedia

6つの点が一塊になっている点字。「⠼」で始まるのは数。
4桁の数を画面に点字で表示するプログラムをつくってみます。


まずは点字で使うキャラクターをIchigoJam文字の中から探します。

FOR I=0 TO 31:?224+I;CHR$(224+I);" ";:NEXT


232が穴なし、232を穴ありとするとちょうど良さそうです。

6つの穴があるかないかは6桁の2進数で表せます。
* 2進数について「じぶんだけのキャラをつくる - はじめてのプログラミング」「指二進数

左上を32の桁、一つ右が16の桁、順にいって右下が1の桁としました。
変数Mに表示したい点字をいれて、座標X、Yに表示するプログラム。

200 FOR I=0 TO 5 210 LC X+I%2,Y+I/2 220 F=M&(32>>I)>0 230 ?CHR$(232+F); 240 NEXT

32の桁から順に穴がある(F=1)か、ない(F=0)かで上から順に表示します。

続く点字が数であることを示す数符「⠼」に続けて「⠚⠁⠃⠉⠙⠑⠋⠛⠓⠊」で0〜9を表します。
上位4bitに収まっているので、それぞれ10進数で、表すことにします。

LET[0],7,8,10,12,13,9,14,15,11,6

例えば、5を表示したいときは、次のプログラムで5の点字が表示されます!

M=[5]<<2:RUN

これらをまとめた、4桁の数を点字にするプログラムがこちら

10 CLS:LC 8,3:?"TENJI NUM" 20 N=1234:X=8:Y=6:GSB 100 30 N=5678:X=8:Y=12:GSB 100 40 N=9000:X=8:Y=18:GSB 100 50 CONT 100 LET[0],7,8,10,12,13,9,14,15,11,6 110 M=23:GSB200:L=1000 120 X=X+3:M=N/L%10:LC X,Y-1:?M 130 M=[M]<<2:GSB200 140 L=L/10:IF L=0 RTN 150 GOTO 120 200 FOR I=0 TO 5 210 LC X+I%2,Y+I/2 220 F=M&(32>>I)>0 230 ?CHR$(232+F) 240 NEXT 250 RTN

カナやアルファベットに対応してゲームにしたり、点字解読プログラムを作ってみたりしてみましょう!

Tweet
クリエイティブ・コモンズ・ライセンス
この作品は「Creative Commons — CC BY 4.0」の下に提供されています。
CC BY 福野泰介 - Taisuke Fukuno / @taisukef / high-res profile image