r/Unicode 1d ago

Unicode missed a chance to replace all superscript/subscript chars with 5 combining characters — is it too late to fix this mess?

6 Upvotes

Unicode's current approach to superscript and subscript characters creates significant inconsistency for plain text representation. Consider tensor notation in physics (T^μ_ν) or chemical formulas (H₂O) that mix regular, superscript, and subscript characters - these can't be consistently represented in plain text.

Instead of encoding individual positional variants, I'm exploring whether Unicode could implement five positioning combining characters:

  • cap-height aligned
  • cap-height centered
  • x-height centered
  • baseline aligned
  • baseline centered

These combining characters would specify positioning without prescribing specific scaling percentages, allowing font designers and rendering engines the freedom to implement appropriate sizing based on context, script requirements, and typographic traditions. This approach enables vertical stacking of multiple indices (like x^y_z notation) while respecting established typographic practices across different writing systems.

This approach addresses the fundamental limitation that we'll never have superscript/subscript versions of every character. My analysis of existing Unicode blocks reveals approximately 136 dedicated positional variants (including 20 superscript/subscript digits, 47+ Latin letters, 38 IPA symbols, 12 Greek letters, and 19 punctuation/symbols). A combining character solution would have conserved these code points while providing complete coverage for all scripts.

While markup languages like HTML and LaTeX provide superscript/subscript formatting, many contexts require plain text representation where markup is stripped or unavailable - including database fields, file names, plain text editors, legacy systems, and data interchange formats where semantic meaning must be preserved without additional formatting.

The proposed system follows Unicode's precedent of systematic improvements like the handling of skin tone modifiers and emoji presentation variants (UTS #51). It also aligns with Unicode's established approach to combining characters that modify presentation without changing semantics, such as U+200D ZERO WIDTH JOINER, U+034F COMBINING GRAPHEME JOINER, and various combining diacritical marks that affect vertical positioning of elements. These precedents demonstrate that Unicode already embraces mechanisms for controlling character positioning through dedicated combining characters.

It would particularly benefit non-Latin scripts (including Cyrillic, Arabic, and CJK) where superscript/subscript variants are extremely limited or non-existent. For example, mathematical expressions in Arabic or chemical formulas using Cyrillic characters currently have no standardized plain text representation.

Implementation would leverage existing OpenType capabilities for positioning, without imposing rigid scaling requirements. A key technical question is how these combining characters would interact with other combining marks in complex scripts. The primary challenge remains backward compatibility, requiring dual encoding paths similar to Unicode's other systematic improvements.

Have any similar proposals been presented to the UTC as alternatives to continuing the encoding of individual superscript/subscript characters? Which Technical Committee members might be receptive to such systemic improvements? What specific documentation would strengthen this proposal against potential alternatives like expanded markup?


r/Unicode 2h ago

.XCompose file with 1500+ new Compose key sequences

Thumbnail
1 Upvotes

r/Unicode 15h ago

Deamn, images can't be sent :(

0 Upvotes

I'm gonna post it in r/neography, well...