Project

General

Profile

Bug #16927

Updated by sawa (Tsuyoshi Sawada) almost 4 years ago

# Context 

 Not much interest for the bug here, but I always appreciate to be given more context. So, as part of a larger project, I needed came with the need to be able to utter every number from zero to 255 with a single syllable written as a consonant-vowel-consonant consonnant-vowel-consonnant (CVC) in IPA. To avoid any ambiguity, the nomenclature should not collide also had to avoid collision with existing numerical terms terms, like "six" six and "ten" in any language ten, but for all languages for which the documentation was found. As it was not enough nerdy, I came with the idea to mark    with diacritics primes and congruence with 2, 8, 12, 16 (optionally (optional and without intended phonological alteration though). If you are curious about it, you can look at [the algorithm](https://gitlab.com/psychoslave/isotopy/-/blob/master/tool/combinations/trigrams.rb) I used to build the nomenclature matching [the specification](https://gitlab.com/psychoslave/isotopy/-/issues/4).   

 # Code to reproduce the bug  

 ``` ruby 
 #!/bin/env ruby 
 translated = 'aeiou'.tr('aeiou', 'ą̂ę̂į̂ǫ̂ų̂') 
 substitued = 'aeiou'.sub(/aeiou/, 'ą̂ę̂į̂ǫ̂ų̂') 
 puts `ruby -v`, translated == substitued, translated, substitued 

 # Actual result 

 ``` 

 On my box, box this outputs: 

 ``` 
 ruby 2.7.0p0 (2019-12-25 revision 647ee6f091) [x86_64-linux] 
 false 
 ą̂ę̂į 
 ą̂ę̂į̂ǫ̂ų̂ 
 ``` 

 # Expected result 


 `tr` should return a congruent result: either it should fail for all signs with similar diacritics, or (preferably) return the specified Unicode glyph. That is, in the code above, above `translated == substitued` should be `true`. true. 

 # Remarks 

 I am not a Unicode Guru: maybe the missing signs generating the difference comes from the way they are encoded. I am aware that some glyphs come in duplicates: duplicates, as solo code points vs. combined combining code point sequences. However I'm cannot tell not able to precise if the above code uses use a mixture of both.

Back