From b0385c82e2e5f319c1ac677ad36dcdfb2bd47f3c Mon Sep 17 00:00:00 2001 From: RubenVerg Date: Tue, 26 Aug 2025 23:45:41 +0200 Subject: [PATCH] Generate braille glyphs (fixes #86) --- APL387.ufo2/features.fea | 4 +- APL387.ufo2/fontinfo.plist | 2 +- APL387.ufo2/glyphs/contents.plist | 16 ++++++ APL387.ufo2/glyphs/part_braille_dot_1.glif | 18 ++++++ APL387.ufo2/glyphs/part_braille_dot_2.glif | 18 ++++++ APL387.ufo2/glyphs/part_braille_dot_3.glif | 67 ++++++++++++++++++++++ APL387.ufo2/glyphs/part_braille_dot_4.glif | 18 ++++++ APL387.ufo2/glyphs/part_braille_dot_5.glif | 18 ++++++ APL387.ufo2/glyphs/part_braille_dot_6.glif | 18 ++++++ APL387.ufo2/glyphs/part_braille_dot_7.glif | 66 +++++++++++++++++++++ APL387.ufo2/glyphs/part_braille_dot_8.glif | 66 +++++++++++++++++++++ APL387.ufo2/glyphs/uni221F_.glif | 2 +- APL387.ufo2/glyphs/uni22B_E_.glif | 2 +- APL387.ufo2/glyphs/uni27C_0.glif | 2 +- APL387.ufo2/glyphs/uni299C_.glif | 2 +- script.py | 18 ++++++ 16 files changed, 331 insertions(+), 6 deletions(-) create mode 100644 APL387.ufo2/glyphs/part_braille_dot_1.glif create mode 100644 APL387.ufo2/glyphs/part_braille_dot_2.glif create mode 100644 APL387.ufo2/glyphs/part_braille_dot_3.glif create mode 100644 APL387.ufo2/glyphs/part_braille_dot_4.glif create mode 100644 APL387.ufo2/glyphs/part_braille_dot_5.glif create mode 100644 APL387.ufo2/glyphs/part_braille_dot_6.glif create mode 100644 APL387.ufo2/glyphs/part_braille_dot_7.glif create mode 100644 APL387.ufo2/glyphs/part_braille_dot_8.glif diff --git a/APL387.ufo2/features.fea b/APL387.ufo2/features.fea index 969679a..d09e46a 100644 --- a/APL387.ufo2/features.fea +++ b/APL387.ufo2/features.fea @@ -971,7 +971,9 @@ feature mkmk { \uni22BF \uni25F8 \uni25F9 \uni25FA \uni25FF \uni29CA \uni29CB \uni1F7D5 \uni25F0 \uni25F1 \uni25F2 \uni25F3 \uni221F \uni2220 \uni2222 \uni22BE \uni27C0 \uni299B \uni299C \uni29A0 \uni29A1 \uni29A2 \uni29A3 \uni29A4 \uni29A5 \uni299F - \uni2BFE \uni2335 ]; + \uni2BFE \uni2335 \part_braille_dot_1 \part_braille_dot_2 + \part_braille_dot_3 \part_braille_dot_4 \part_braille_dot_5 + \part_braille_dot_6 \part_braille_dot_7 \part_braille_dot_8 ]; @GDEF_Mark = [\gravecomb \acutecomb \uni0302 \tildecomb \uni0304 \uni0305 \uni0306 \uni0307 \uni0308 \uni030A \uni030B \uni030C \uni0326 \uni0327 \uni0328 \uni0302.alt01 \uni0304.alt01 \uni0308.case \uni0307.case \gravecomb.case diff --git a/APL387.ufo2/fontinfo.plist b/APL387.ufo2/fontinfo.plist index a684b71..b964221 100644 --- a/APL387.ufo2/fontinfo.plist +++ b/APL387.ufo2/fontinfo.plist @@ -29,7 +29,7 @@ italicAngle 0 openTypeHeadCreated - 2025/08/20 05:54:17 + 2025/08/26 20:25:42 openTypeHheaAscender 910 openTypeHheaDescender diff --git a/APL387.ufo2/glyphs/contents.plist b/APL387.ufo2/glyphs/contents.plist index f9e66cf..9fc3d97 100644 --- a/APL387.ufo2/glyphs/contents.plist +++ b/APL387.ufo2/glyphs/contents.plist @@ -2880,5 +2880,21 @@ uni2B_F_E_.glif uni2335 uni2335.glif + part_braille_dot_1 + part_braille_dot_1.glif + part_braille_dot_2 + part_braille_dot_2.glif + part_braille_dot_3 + part_braille_dot_3.glif + part_braille_dot_4 + part_braille_dot_4.glif + part_braille_dot_5 + part_braille_dot_5.glif + part_braille_dot_6 + part_braille_dot_6.glif + part_braille_dot_7 + part_braille_dot_7.glif + part_braille_dot_8 + part_braille_dot_8.glif diff --git a/APL387.ufo2/glyphs/part_braille_dot_1.glif b/APL387.ufo2/glyphs/part_braille_dot_1.glif new file mode 100644 index 0000000..0fad0b6 --- /dev/null +++ b/APL387.ufo2/glyphs/part_braille_dot_1.glif @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/APL387.ufo2/glyphs/part_braille_dot_2.glif b/APL387.ufo2/glyphs/part_braille_dot_2.glif new file mode 100644 index 0000000..8e99757 --- /dev/null +++ b/APL387.ufo2/glyphs/part_braille_dot_2.glif @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/APL387.ufo2/glyphs/part_braille_dot_3.glif b/APL387.ufo2/glyphs/part_braille_dot_3.glif new file mode 100644 index 0000000..7c6c64d --- /dev/null +++ b/APL387.ufo2/glyphs/part_braille_dot_3.glif @@ -0,0 +1,67 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/APL387.ufo2/glyphs/part_braille_dot_4.glif b/APL387.ufo2/glyphs/part_braille_dot_4.glif new file mode 100644 index 0000000..e44e561 --- /dev/null +++ b/APL387.ufo2/glyphs/part_braille_dot_4.glif @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/APL387.ufo2/glyphs/part_braille_dot_5.glif b/APL387.ufo2/glyphs/part_braille_dot_5.glif new file mode 100644 index 0000000..70d011e --- /dev/null +++ b/APL387.ufo2/glyphs/part_braille_dot_5.glif @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/APL387.ufo2/glyphs/part_braille_dot_6.glif b/APL387.ufo2/glyphs/part_braille_dot_6.glif new file mode 100644 index 0000000..a46c4b5 --- /dev/null +++ b/APL387.ufo2/glyphs/part_braille_dot_6.glif @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/APL387.ufo2/glyphs/part_braille_dot_7.glif b/APL387.ufo2/glyphs/part_braille_dot_7.glif new file mode 100644 index 0000000..5e8f17f --- /dev/null +++ b/APL387.ufo2/glyphs/part_braille_dot_7.glif @@ -0,0 +1,66 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/APL387.ufo2/glyphs/part_braille_dot_8.glif b/APL387.ufo2/glyphs/part_braille_dot_8.glif new file mode 100644 index 0000000..32af308 --- /dev/null +++ b/APL387.ufo2/glyphs/part_braille_dot_8.glif @@ -0,0 +1,66 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/APL387.ufo2/glyphs/uni221F_.glif b/APL387.ufo2/glyphs/uni221F_.glif index 5d62532..917a736 100644 --- a/APL387.ufo2/glyphs/uni221F_.glif +++ b/APL387.ufo2/glyphs/uni221F_.glif @@ -4,7 +4,6 @@ - @@ -21,6 +20,7 @@ + diff --git a/APL387.ufo2/glyphs/uni22B_E_.glif b/APL387.ufo2/glyphs/uni22B_E_.glif index d30794c..0e8013d 100644 --- a/APL387.ufo2/glyphs/uni22B_E_.glif +++ b/APL387.ufo2/glyphs/uni22B_E_.glif @@ -4,7 +4,6 @@ - @@ -29,6 +28,7 @@ + diff --git a/APL387.ufo2/glyphs/uni27C_0.glif b/APL387.ufo2/glyphs/uni27C_0.glif index 17de1e7..85bc176 100644 --- a/APL387.ufo2/glyphs/uni27C_0.glif +++ b/APL387.ufo2/glyphs/uni27C_0.glif @@ -4,7 +4,6 @@ - @@ -53,6 +52,7 @@ + diff --git a/APL387.ufo2/glyphs/uni299C_.glif b/APL387.ufo2/glyphs/uni299C_.glif index 08c5973..99bd1e1 100644 --- a/APL387.ufo2/glyphs/uni299C_.glif +++ b/APL387.ufo2/glyphs/uni299C_.glif @@ -4,7 +4,6 @@ - @@ -28,6 +27,7 @@ + diff --git a/script.py b/script.py index d81d8cc..4a3659a 100644 --- a/script.py +++ b/script.py @@ -17,6 +17,24 @@ apl387.version = commit +braille_dots = [apl387.createMappedChar(f'part_braille_dot_{i+1}') for i in range(8)] + +for braille_index in range(0x100): + glyph = apl387.createChar(0x2800 + braille_index) + apl387.selection.select('space') + apl387.copy() + apl387.selection.select(glyph) + apl387.paste() + bits = [ch == '1' for ch in bin(braille_index)[2:].rjust(8, '0')][::-1] + if braille_index in [0x1b, 0xc0]: + print(bits) + for bit_idx, bit in enumerate(bits): + if bit: + apl387.selection.select(braille_dots[bit_idx]) + apl387.copy() + apl387.selection.select(glyph) + apl387.pasteInto() + try: os.mkdir(f'{path}/output') except: