white scroll down button


exhibition design / environmental design

project overview —

“from i to eye” is an exhibition on visual impairments, the Brailles system and the need for inclusivity in design. This exhibition explores how visually impaired people interact with different principles of design, such as colors, textures, and forms. “from i to eye” also showcases the Brailles system and how it is being used in print publications.

goals —

Through the interactive and informative exhibition environment, “from i to eye” allows its audience to experience the impact that inclusive design can have on people with visual impairments, and spreads information on the Brailles system in the print industry.

from i to eye visual impairments exhibition accessibility inclusive design

idea & concept —

“from i to eye,” from the creation of one person's, to the perception of everybody's. This exhibition focuses on the importance of accessibility in design, and encourages every participant to think in a more inclusive way. The exhibit wall is broken into 3 sections: Alternative Sight: How Visually Impaired People Perceive the World; Visual Sympathy: How Inclusive Thinking in Design Benefits Visually Impaired People and Best Practices in Accessible Design; and Brailles. With the use of primary colors and the circle motif that resembles Brailles characters, the overall branding of the exhibition is simple, straightforward, and accessible.

from i to eye visual impairments exhibition accessibility inclusive design moodboard and objectives




interactive element: braille translator demo —

"from i to eye" offers an Interactive Braille Translator for its audience to learn about grade 2 braille, also known as contracted braille. The literary system of braille for English, French, and many other languages has evolved to develop an extensive array of "short forms" or "contractions" for commonly-occurring words or groups of letters. For example, the word "the" is often represented as a single character.

Try typing an English word or a short English phrase in the text area below, and see how it can be contracted and spelled out in grade 2 braille.


grade 2 braille

from pyscript import document def translate_english(event): input_text = document.querySelector("#english") word = input_text.value alphaword = {'but': 'b', 'can': 'c', 'do': 'd', 'every': 'e', 'from': 'f', 'go': 'g', 'have': 'h', 'just': 'j', 'knowledge': 'k', 'like': 'l', 'more': 'm', 'not': 'n', 'people': 'p', 'quite': 'q', 'rather': 'r', 'so': 's', 'that': 't', 'us': 'u', 'very': 'v', 'will': 'w', 'it': 'x', 'you': 'y', 'as': 'z', 'child': '*', 'shall': '%', 'this': '?', 'which': ':', 'out': '\\', 'still': '/', 'be': '2', 'his': '8', 'in': '9', 'enough': '5', 'was': '0', 'were': '7'} groupsign = {'ing': '+', 'be': '2', 'con': '3', 'dis': '4', 'ea': '1', 'bb': '2', 'cc': '3', 'ff': '6', 'gg': '7', 'ound': '.d', 'ance': '.e', 'sion': '.n', 'less': '.s', 'ount': '.t', 'ence': ';e', 'ong': ';g', 'ful': ';l', 'tion': ';n', 'ness': ';s', 'ment': ';t', 'ity': ';y'} contraction = {'and': '&', 'for': '=', 'of': '(', 'the': '!', 'with': ')', 'ch': '*', 'sh': '%', 'th': '?', 'wh': ':', 'ou': '\\', 'st': '/', 'ar': '>', 'ed': '$', 'er': ']', 'gh': '<', 'ow': '[', 'in': '9', 'en': '5', 'day': '"d', 'ever': '"e', 'father': '"f', 'here': '"h', 'know': '"k', 'lord': '"l', 'mother': '"m', 'name': '"n', 'one': '"o', 'part': '"p', 'question': '"q', 'right': '"r', 'some': '"s', 'time': '"t', 'under': '"u', 'work': '"w', 'young': '"y', 'there': '"!', 'character': '"*', 'through': '"?', 'where': '":', 'ought': '"\\', 'upon': '^u', 'word': '^w', 'these': '^!', 'those': '^?', 'whose': '^:', 'cannot': '_c', 'had': '_h', 'many': '_m', 'spirit': '_s', 'world': '_w', 'their': '_!', 'about': 'ab', 'above': 'abv', 'according': 'ac', 'across': 'acr', 'after': 'af', 'afternoon': 'afn', 'afterward': 'afw', 'again': 'ag', 'against': 'ag/', 'almost': 'alm', 'already': 'alr', 'also': 'al', 'although': 'al?', 'altogether': 'alt', 'always': 'alw', 'because': '2c', 'before': '2f', 'behind': '2h', 'below': '2l', 'beneath': '2n', 'beside': '2s', 'between': '2t', 'beyond': '2y', 'blind': 'bl', 'braille': 'brl', 'children': '*n', 'conceive': '3cv', 'conceiving': '3cvg', 'could': 'cd', 'deceive': 'dcv', 'deceiving': 'dcvg', 'declare': 'dcl', 'declaring': 'dclg', 'either': 'ei', 'first': 'f/', 'friend': 'fr', 'good': 'gd', 'great': 'grt', 'herself': 'h]f', 'him': 'hm', 'himself': 'hmf', 'immediate': 'imm', 'its': 'xs', 'itself': 'xf', 'letter': 'lr', 'little': 'll', 'much': 'm*', 'must': 'm/', 'myself': 'myf', 'necessary': 'nec', 'neither': 'nei', 'oneself': '"of', 'ourselves': '\\rvs', 'paid': 'pd', 'perceive': 'p]cv', 'perceiving': 'p]cvg', 'perhaps': 'p]h', 'quick': 'qk', 'receive': 'rcv', 'receiving': 'rcvg', 'rejoice': 'rjc', 'rejoicing': 'rjcg', 'said': 'sd', 'should': '%d', 'such': 's*', 'themselves': '!mvs', 'thyself': '?yf', 'today': 'td', 'together': 'tgr', 'tomorrow': 'tm', 'tonight': 'tn', 'would': 'wd', 'your': 'yr', 'yourself': 'yrf', 'yourselves': 'yrvs'} braille_dict = {' ': '⠀', '!': '⠮', '"': '⠐', '#': '⠼', '$': '⠫', '%': '⠩', '&': '⠯', '': '⠄', '(': '⠷', ')': '⠾', '*': '⠡', '+': '⠬', ',': '⠠', '-': '⠤', '.': '⠨', '/': '⠌', '0': '⠴', '1': '⠂', '2': '⠆', '3': '⠒', '4': '⠲', '5': '⠢', '6': '⠖', '7': '⠶', '8': '⠦', '9': '⠔', ':': '⠱', ';': '⠰', '<': '⠣', '=': '⠿', '>': '⠜', '?': '⠹', '@': '⠈', 'a': '⠁', 'b': '⠃', 'c': '⠉', 'd': '⠙', 'e': '⠑', 'f': '⠋', 'g': '⠛', 'h': '⠓', 'i': '⠊', 'j': '⠚', 'k': '⠅', 'l': '⠇', 'm': '⠍', 'n': '⠝', 'o': '⠕', 'p': '⠏', 'q': '⠟', 'r': '⠗', 's': '⠎', 't': '⠞', 'u': '⠥', 'v': '⠧', 'w': '⠺', 'x': '⠭', 'y': '⠽', 'z': '⠵', '[': '⠪', '\\': '⠳', ']': '⠻', '^': '⠘', '_': '⠸'} i = 0 res = "" braille = "" prefix = ['be','con','dis'] infix = ['bb', 'cc', 'ff', 'gg', 'ea'] suffix = ['ing','ound', 'ance', 'sion', 'less', 'ount', 'ence', 'ong', 'ful', 'tion', 'ness', 'ment', 'ity'] exception = ['biscuity','dacoity', 'hoity-toity', 'fruity', 'rabbity','bee','conch','disc'] if word in alphaword: res += alphaword[word] else: while i < len(word): temp = {} for j in range(i,len(word)+1): cur = word[i:j] if cur in contraction and (not(cur == 'one' and word[i-1] == 'o') and not (cur == 'under' and word[i-1] in ['o','a'])): temp[cur] = contraction[cur] elif cur in groupsign: if (cur not in infix) and (word not in exception): if (word.startswith(tuple(prefix)) and word not in ['con','dis']) or ((not word.startswith(tuple(suffix))) and (cur not in prefix)): temp[cur] = groupsign[cur] if len(temp) != 0: max_str = max(temp.keys(),key=len) max_len = len(max(temp.keys(),key=len)) res += temp[max_str] else: max_len = 1 res += word[i] i += max_len if not res.startswith(tuple(infix)) and not res.endswith(tuple(infix)): for c in infix: if c in res: res = res.replace(c,groupsign[c]) for char in res: braille += braille_dict[char] output_div1 = document.querySelector("#output1") output_div2 = document.querySelector("#output2") output_div1.innerText = res output_div2.innerText = braille return('/n')

This translator was developed using Python, with references to the Unified English Braille (UEB) Chart. Contractions are defined in terms of sequences of letters, and generally are used without respect to pronunciation, meaning, or sublexical structure, unless the rulebook specifies otherwise (Englebretson et al., “The Primacy of Morphology in English Braille Spelling: An Analysis of Bridging Contractions”). Because of this, a 100% correct braille translation can only be done by a human, as this requires an understanding of the text content.
Englebretson, R., Holbrook, M.C., Treiman, R. et al. The primacy of morphology in English braille spelling: an analysis of bridging contractions. Morphology (2023). https://doi.org/10.1007/s11525-023-09413-8