lørdag 24. juli 2021

Hvorfor mangler det frakturbokstaver i Unicode?
Why are there missing Fraktur letters in Unicode?

Jeg skulle til å skrive dette spørsmålet på StackOverflow, men så fant jeg svaret; så da var det nyttigere å skrive det her i stedet. Posten er tospråklig, slik at andre kan finne svaret på engelsk òg.
I was going to write this question on StackOverflow, but then I found the answer; so I then found it more useful to write it here instead. The post is bilingual, to enable others to find the answer in English as well.

Norsk

Da jeg listet opp fraktursymbolene, ble jeg overrasket over å oppdage at det finnes en 𝔷 (U+1d537: mathematical fraktur small z), en 𝖅 (U+1d585: mathematical bold fraktur capital z), og en 𝖟 (U+1d59f: mathematical bold fraktur small z). Når jeg leter etter U+1d51d får jeg ingen treff, og når jeg lister alle fraktursymbolene eller lister alle z-ene får jeg det samme problemet, som vist nedenfor.

English

Listing the Fraktur symbols, I was surprised to learn that there is a 𝔷 (U+1d537: mathematical fraktur small z), a 𝖅 (U+1d585: mathematical bold fraktur capital z), and a 𝖟 (U+1d59f: mathematical bold fraktur small z). Searching for U+1d51d yields no matches, and listing all Fraktur symbols or listing all zeds yields the same problem, as depicted below.

Bilde fra amp-what.com når man søker på U+1d51d
Bilde fra &what; når man søker på U+1d51d: Ingen treff.
Image from &what; when searching for U+1d51d: No hits.
Bilde fra amp-what.com når man søker på bokstaven Z.
Bilde fra &what; når man søker på bokstaven Z. Ingen matematisk fraktur stor Z å finne, selv om den lille bokstaven er der, samt de feite partypene. Søket skiller ikke på store og små bokstaver, så alle potensielle treff (inkludert den store Z-en) skulle ha vært å finne.
Image from &what; when searching for the letter Z. No mathemical fraktur capital Z is to be found, even though the small letter is there, as well as the bold font pairs. The search is case insensitive, so all potential hits (including the capital Z) should have been found.

I søkene mine over, hadde jeg alle tegn lastet på &what;. Dette er særlig underlig når man ser på U+1d51x-rekka og oppdager at plassen er tom.

For my above searches, I had all characters loaded at &what;. It is particularly odd when viewing the U+1d51x range, and realising that the space is empty.

Bilde fra amp-what.com for rekka 1d51x.
Resultat for U+1d51x-rekka; merk hvordan den hopper over plassen mellom U+1d51c og U+1d51e.
Result for the U+1d51x range; notice how it skips the space between U+1d51c and U+1d51e.

Derav følger spørsmålet mitt:
Hvorfor er dette symbolet – matematisk fraktur majuskel Z – ikke inkludert?

And thus my question:
Why is this symbol – mathematical fraktur capital Z – not included?

Løsning

Det skulle vise seg at svaret var å finne via et annet lignende spørsmål. Jeg leste svaret der, fant dermed et pdf-dokument som lister hele U+1d400-rekka, og der dukker det opp noen interessante svar. Ta dog først en titt på bildet under:

Solution

It turned out that the answer was to be found via another similar question. I read the answer there, and thus found a pdf document listing the entire U+1d400 range, wherein some interesting answers showed up. But first have a look at the image below:

Bilde fra amp-what.com for hele frakturrekka
Bildeutdrag av hele frakturrekka.
Image excerpt of the entire fraktur range.

Den observante merker seg at det ikke bare er Z som mangler, men faktisk alle bokstavene C, H, I, R og Z.

The observant will have noticed that not only is Z missing, but in fact all the letters C, H, I, R and Z.

CHIRZ: Catch Him Instigating Rioting Zulus.

Og i dokumentet lenket til over er svarene å finne:

And in the document linked above, the answers are found:

  1. 1D506 ▩ <reserved>
    → 212D ℭ black-letter capital c
  2. 1D50B ▩ <reserved>
    → 210C ℌ black-letter capital h
  3. 1D50C ▩ <reserved>
    → 2111 ℑ black-letter capital i
  4. 1D515 ▩ <reserved>
    → 211C ℜ black-letter capital r
  5. 1D51D ▩ <reserved>
    → 2128 ℨ black-letter capital z

Men hvorfor? Dokumentet besvarer dette:

But why? The document answers this:

Fraktur symbols

This style is sometimes known as black-letter. Black-letter symbols already encoded in the Letterlike Symbols block are omitted here to avoid duplicate encoding.

Så der har vi svaret: Unicode dobbelkoder faktisk aldri symboler lenger. Når nye blokker klargjøres, blir dermed plassene til tidligere kodede symbol reservert, slik at man finner dem andre plasser og den interne logikken og strukturen beholdes. I dette tilfellet var problemet at søket på fraktur ikke tok hensyn til at noen av tegnene kunne være kodet som black-letter. Og nå vet du òg svaret.

So there you have the answer: Unicode never double encodes symbols anymore. When new blocks are prepared, the code points for previously encoded symbols are reserved, such that one can find them in other places and the internal logic and structure is preserved. In this case the problem was that searching for fraktur didn’t consider that some of the characters could be encoded as black-letter. And now you too know the answer.

Ingen kommentarer :

Legg inn en kommentar

Jeg har nå valgt å ta sjansen på å la alle som ønsker få kommentere. For å forhindre uønskede robotkommentarer, har jeg valgt å slå på kommentarmoderering.

Ta hensyn og les over det du har skrevet før du sender det; et lite øyeblikk ekstra kan ofte gjøre verden et lite knepp bedre.