3 ms·
Note the limitations section: > Unifont Limitations > Unifont only stores one glyph per printable Unicode code point. This means that complex scripts with spe
by yorwba 5y ago
Note the limitations section:
> Unifont Limitations
> Unifont only stores one glyph per printable Unicode code point. This means that complex scripts with special forms for letter combinations including consonant combinations and floating vowel marks such as with Indic scripts (Devanagari, Bengali, Tamil, etc.) or letters that change shape depending upon their position in a word (Indic and Arabic scripts) will not render well in Unifont. In those cases, Unifont is only suitable as a font of last resort. Users wishing to properly render such complex scripts should use full OpenType fonts that faithfully display such alternate forms.
So if your intention when choosing unifont was to support all of Unicode, it would be good to make it not too difficult to add more fonts.
- akkartik 5y agoI definitely prioritize supporting all languages. (I don't care about flags and emoji and crap like that.) However I don't know enough yet. The current list of supported languages is enumerated at http://akkartik.github.io/mu/html/103glyph.subx.html#L98 http://akkartik.github.io/mu/html/103glyph.subx.html#L98 It's not just a matter of supporting more fonts. I need to support smarter fonts with ligatures and more. I think we could preserve the constraint of a single font and just make it smarter. But it'll take me some time to learn enough to do that.
- yorwba 5y agoYeah, ligatures are required for many languages. E.g. you list Myanmar, where it's possible to construct something like င်္င္င္င္ငြေေေေေေေောာာာာာာာ, which has "nga" င, "asat" ်, "virama" ္ combined to put င်္ on the following consonant, which in this case is four "nga" င separated by three "virama" ္ to form a cluster င္င္င္င (Noto Sans Myanmar apparently supports stacking up to height 3, the fourth "nga" င awkwardly overlaps), then there's a "medial ra" ြ which puts a box around the preceding consonant without overlapping, then 8 copies of "e" ေ which should be rendered to the left of the consonant it follows and then 8 copies of "aa" ာ which attach to the right. You're not going to encounter something crazy like this in the wild (in Burmese, there's at most one of each vowel sign on a consonant, and I don't think stacking four consonants is ever necessary) but it serves as a demonstration of the edge cases that a font needs to handle. The lookup tables end up getting quite large, which I think is one of the reasons Noto isn't usually used as one file with all scripts.
- akkartik 5y agoYes, the vowel diacritics are definitely an issue. I'm familiar with Hindi and Tamil. Hindi's _matras_ are pretty regular, and Unifont is designed so you can just type a single diacritic in the same spot as a consonant and have the thing look right (albeit terrible). Tamil, however, doesn't have this property. Does Myanmar? At the moment a single diacritic is the extent of my ambition.
- yorwba 5y agoThere are vowel signs that attach to the left, right, top, bottom or wrap around the preceding consonant. You could maybe emulate it by manually placing characters into a grid, but that would be very much not Unicode. Anyways, if you could get Tamil to work with a generic approach, I guess most of the edge cases for Myanmar would be covered by that as well. (Edit: seems like Tamil only has at most one diacritic, so it would have to be more general for Myanmar still.)
- akkartik 5y agoYeah, that does sound like Tamil. Ligatures become necessary even for combining just 2 code points.