Skip to content

Instantly share code, notes, and snippets.

@frankrolf
Created September 10, 2018 15:43
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save frankrolf/0460b7292d20670d04ddebc4935749ac to your computer and use it in GitHub Desktop.
Save frankrolf/0460b7292d20670d04ddebc4935749ac to your computer and use it in GitHub Desktop.
Test IPA coverage in Robofont 3
# IPA
( 0028
) 0029
. 002E
/ 002F
[ 005B
] 005D
a 0061
b 0062
c 0063
d 0064
e 0065
f 0066
g 0067
h 0068
i 0069
j 006A
k 006B
l 006C
m 006D
n 006E
o 006F
p 0070
q 0071
r 0072
s 0073
t 0074
u 0075
v 0076
w 0077
x 0078
y 0079
z 007A
{ 007B
| 007C
} 007D
æ 00E6
ç 00E7
ð 00F0
ø 00F8
ħ 0127
ŋ 014B
œ 0153
ǀ 01C0
ǁ 01C1
ǂ 01C2
ǃ 01C3
ɐ 0250
ɑ 0251
ɒ 0252
ɓ 0253
ɔ 0254
ɕ 0255
ɖ 0256
ɗ 0257
ɘ 0258
ə 0259
ɛ 025B
ɜ 025C
ɞ 025E
ɟ 025F
ɡ 0261
ɢ 0262
ɣ 0263
ɤ 0264
ɥ 0265
ɦ 0266
ɧ 0267
ɨ 0268
ɪ 026A
ɫ 026B
ɬ 026C
ɭ 026D
ɮ 026E
ɯ 026F
ɰ 0270
ɱ 0271
ɲ 0272
ɳ 0273
ɴ 0274
ɵ 0275
ɶ 0276
ɸ 0278
ɹ 0279
ɺ 027A
ɻ 027B
ɽ 027D
ɾ 027E
ʀ 0280
ʁ 0281
ʂ 0282
ʃ 0283
ʄ 0284
ʈ 0288
ʉ 0289
ʊ 028A
ʋ 028B
ʌ 028C
ʍ 028D
ʎ 028E
ʏ 028F
ʐ 0290
ʑ 0291
ʒ 0292
ʔ 0294
ʕ 0295
ʘ 0298
ʙ 0299
ʛ 029B
ʜ 029C
ʝ 029D
ʟ 029F
ʡ 02A1
ʢ 02A2
ʰ 02B0
ʲ 02B2
ʷ 02B7
ʼ 02BC
ˈ 02C8
ˌ 02CC
ː 02D0
ˑ 02D1
˞ 02DE
ˠ 02E0
ˡ 02E1
ˣ 02E3
ˤ 02E4
˥ 02E5
˦ 02E6
˧ 02E7
˨ 02E8
˩ 02E9
̀ 0300
́ 0301
̂ 0302
̃ 0303
̄ 0304
̆ 0306
̈ 0308
̊ 030A
̋ 030B
̌ 030C
̍ 030D
̏ 030F
̑ 0311
̘ 0318
̙ 0319
̚ 031A
̜ 031C
̝ 031D
̞ 031E
̟ 031F
̠ 0320
̤ 0324
̥ 0325
̩ 0329
̪ 032A
̬ 032C
̯ 032F
̰ 0330
̴ 0334
̹ 0339
̺ 033A
̻ 033B
̼ 033C
̽ 033D
͜ 035C
͡ 0361
β 03B2
θ 03B8
χ 03C7
ᵊ 1D4A
ᵬ 1D6C
ᵭ 1D6D
ᵮ 1D6E
ᵯ 1D6F
ᵰ 1D70
ᵱ 1D71
ᵲ 1D72
ᵳ 1D73
ᵴ 1D74
ᵵ 1D75
ᵶ 1D76
ᶿ 1DBF
᷄ 1DC4
᷅ 1DC5
᷈ 1DC8
‖ 2016
‿ 203F
ⁿ 207F
↗ 2197
↘ 2198
ⱱ 2C71
⸨ 2E28
⸩ 2E29
ꜛ A71B
ꜜ A71C
# ExtIPA
! 0021
* 002A
¡ 00A1
ʞ 029E
ʩ 02A9
ʪ 02AA
ʫ 02AB
ʬ 02AC
ʭ 02AD
ʰ 02B0
ˬ 02EC
˭ 02ED
̪ 032A
̼ 033C
͆ 0346
͇ 0347
͈ 0348
͉ 0349
͊ 034A
͋ 034B
͌ 034C
͍ 034D
͎ 034E
͢ 0362
₍ 208D
₎ 208E
↑ 2191
↓ 2193
◌ 25CC
ꟸ A7F8
ꟹ A7F9
# SupersededIPA
ƈ 0188
ƍ 018D
ƙ 0199
ƞ 019E
ƥ 01A5
ƪ 01AA
ƫ 01AB
ƭ 01AD
ƺ 01BA
ƻ 01BB
ƾ 01BE
ɩ 0269
ɷ 0277
ɼ 027C
ʆ 0286
ʇ 0287
ʓ 0293
ʖ 0296
ʗ 0297
ʚ 029A
ʞ 029E
ʠ 02A0
ʣ 02A3
ʤ 02A4
ʥ 02A5
ʦ 02A6
ʧ 02A7
ʨ 02A8
ʻ 02BB
ˆ 02C6
ˇ 02C7
ˎ 02CE
ˏ 02CF
˖ 02D6
˗ 02D7
ˢ 02E2
̇ 0307
̖ 0316
̗ 0317
̡ 0321
̢ 0322
̣ 0323
̫ 032B
σ 03C3
ᴀ 1D00
ᶏ 1D8F
ᶐ 1D90
ᶒ 1D92
ᶓ 1D93
ᶔ 1D94
ᶕ 1D95
ᶖ 1D96
ᶗ 1D97
ᶙ 1D99
◌ 25CC
# NonStandardIPA
, 002C
č 010D
đ 0111
ı 0131
š 0161
ž 017E
ƀ 0180
ƛ 019B
ǧ 01E7
ǰ 01F0
ȡ 0221
ȴ 0234
ȵ 0235
ɿ 027F
ʅ 0285
ʸ 02B8
˹ 02F9
̈ 0308
̑ 0311
λ 03BB
ᴀ 1D00
ᴜ 1D1C
ᵃ 1D43
ᵄ 1D44
ᵅ 1D45
ᵆ 1D46
ᵇ 1D47
ᵈ 1D48
ᵉ 1D49
ᵋ 1D4B
ᵍ 1D4D
ᵏ 1D4F
ᵐ 1D50
ᵑ 1D51
ᵒ 1D52
ᵓ 1D53
ᵖ 1D56
ᵗ 1D57
ᵘ 1D58
ᵚ 1D5A
ᵻ 1D7B
ᵽ 1D7D
ᵾ 1D7E
ᶑ 1D91
ᶛ 1D9B
ᶜ 1D9C
ᶝ 1D9D
ᶞ 1D9E
ᶟ 1D9F
ᶠ 1DA0
ᶡ 1DA1
ᶢ 1DA2
ᶣ 1DA3
ᶤ 1DA4
ᶥ 1DA5
ᶦ 1DA6
ᶧ 1DA7
ᶨ 1DA8
ᶩ 1DA9
ᶪ 1DAA
ᶫ 1DAB
ᶬ 1DAC
ᶭ 1DAD
ᶮ 1DAE
ᶯ 1DAF
ᶰ 1DB0
ᶱ 1DB1
ᶲ 1DB2
ᶳ 1DB3
ᶴ 1DB4
ᶵ 1DB5
ᶶ 1DB6
ᶷ 1DB7
ᶸ 1DB8
ᶹ 1DB9
ᶺ 1DBA
ᶻ 1DBB
ᶼ 1DBC
ᶽ 1DBD
ᶾ 1DBE
ⁱ 2071
⌜ 231C
◌ 25CC
꜀ A700
꜁ A701
꜂ A702
꜃ A703
꜄ A704
꜅ A705
꜆ A706
꜇ A707
꜈ A708
꜉ A709
꜊ A70A
꜋ A70B
꜌ A70C
꜍ A70D
꜎ A70E
꜏ A70F
꜐ A710
꜑ A711
꜒ A712
꜓ A713
꜔ A714
꜕ A715
꜖ A716
ꜝ A71D
ꜞ A71E
ꜟ A71F
# coding: utf-8
import unicodedata
def print_charlist(charlist):
for uc_value in charlist:
char = chr(int(uc_value, 16))
try:
print(
char,
unicodedata.name(char),
uc_value)
except ValueError:
print(char, uc_value)
f = CurrentFont()
with open('ipa_characters.txt', 'r', encoding='utf-8') as ipa_file:
ipa_raw = ipa_file.read().splitlines()
uc_dict = {g.unicode: g.name for g in f if g.unicode}
supported = []
unsupported = []
for line in ipa_raw:
if '\t' in line:
_, uc_value = line.split('\t')
if uc_dict.get(int(uc_value, 16)):
supported.append(uc_value)
else:
unsupported.append(uc_value)
print('SUPPORTED CHARACTERS:')
print_charlist(supported)
print()
print('UNSUPPORTED CHARACTERS:')
print_charlist(unsupported)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment