Wusstet ihr, dass man Bildschriftzeichen kombinieren kann?

Die offizielle Zweigstelle von ich_iel im Fediversum.
Alle Pfosten müssen den Titel 'ich_iel' haben, der Unterstrich darf durch ein beliebiges Symbol oder Bildschriftzeichen ersetzt werden. Ihr dürft euch frei entfalten!
📱 Empfohlene Schlaufon-Applikationen für Lassmich
Befreundete Kommunen:
Sonstiges:
Regeln:
1. Seid nett zueinander
Diskriminierung anderer Benutzer, Beleidigungen und Provokationen sind verboten.
2. Pfosten müssen den Titel 'ich_iel' oder 'ich iel' haben
Nur Pfosten mit dem Titel 'ich_iel' oder 'ich iel' sind zugelassen. Alle anderen werden automatisch entfernt.
Unterstrich oder Abstand dürfen durch ein beliebiges Textsymbol oder bis zu drei beliebige Emojis ersetzt werden.
3. Keine Hochwähl-Maimais oder (Eigen)werbung
Alle Pfosten, die um Hochwählis bitten oder Werbung beinhalten werden entfernt. Hiermit ist auch Eigenwerbung gemeint, z.b. für andere Gemeinschaften.
4. Keine Bildschirmschüsse von Unterhaltungen
Alle Pfosten, die Bildschirmschüsse von Unterhaltungen, wie beispielsweise aus WasistApplikaton oder Zwietracht zeigen, sind nicht erlaubt. Hierzu zählen auch Unterhaltungen mit KIs.
5. Keine kantigen Beiträge oder Meta-Beiträge
ich_iel ist kein kantiges Maimai-Brett. Meta-Beiträge, insbesondere über gelöschte oder gesperrte Beiträge, sind nicht erlaubt.
6. Keine Überfälle
Wer einen Überfall auf eine andere Gemeinschaft plant, muss diesen zuerst mit den Mods abklären. Brigadieren ist strengstens verboten.
7. Keine Ü40-Maimais
Maimais, die es bereits in die WasistApplikation-Familienplauderei geschafft haben oder von Rüdiger beim letzten Stammtisch herumgezeigt wurden, sind besser auf /c/ichbin40undlustig aufgehoben.
8. ich_iel ist eine humoristische Plattform
Alle Pfosten auf ich_iel müssen humorvoll gestaltet sein. Humor ist subjektiv, aber ein Pfosten muss zumindest einen humoristischen Anspruch haben. Die Atmosphäre auf ich_iel soll humorvoll und locker gehalten werden.
9. Keine Polemik, keine Köderbeiträge, keine Falschmeldungen
Beiträge, die wegen Polemik negativ auffallen, sind nicht gestattet. Desweiteren sind Pfosten nicht gestattet, die primär Empörung, Aufregung, Wut o.Ä. über ein (insbesonders, aber nicht nur) politisches Thema hervorrufen sollen. Die Verbreitung von Falschmeldungen ist bei uns nicht erlaubt.

Bitte beachtet auch die Regeln von Feddit.org
Wusstet ihr, dass man Bildschriftzeichen kombinieren kann?

Unter welchem OS?
Vermutlich unter keinem.
Aber prinzipiell kann man beliebige Bilder mit dem Zero-width joiner (0x200D) zusammenkleben.
https://blog.emojipedia.org/emoji-zwj-sequences-three-letters-many-possibilities/
Bzw unter jedem OS und in jedem Programm kann man dies anfragen mit dem ZWJ, aber das ist halt Implementierungsabhängig ob da irgendwas passiert.
Damit hatte Micro$lop zwischenzeitlich die Ninja-Katze/Okto-Katze oder die (irgendwas mit GitHub, Ninja und Raketen) in windows ermöglicht. Aber das galt halt nicht automatisch für alle anderen Programme die auf windows liefen 😑.
Acht? Warum?
Wir reden von diesem Post: https://feddit.org/post/21517777
Die Sprache meiner Wahl ist JavaScript. Ich habe in _t den Teil des Titels geladen, der nicht „ich” oder „iel“ ist. Zuerst fällt auf, dass die Längenangabe von JavaScript völlig nutzlos ist:
_t.length
> 13
Wie kommt das Zustande? @Ephera@lemmy.ml kommt der Sache schon nahe. JS benutzt intern 16-bit-Zeichen und zählt die, um die Länge dieses Strings zu ermitteln. Die Emoji in dem Titel haben aber teilweise eine Repräsentation, die mehr als 16 Bit braucht. Schauen wir uns die Unicode Code Points von _t an:
[..._t].map(c => `${c} (0x${c.codePointAt(0).toString(16)})`)
> ['👩 (0x1f469)', '🏻 (0x1f3fb)', '🛒 (0x1f6d2)', '💂 (0x1f482)',
> '🏻 (0x1f3fb)', ' (0x200d)', '♀ (0x2640)', '️ (0xfe0f)']
Alles, was größer ist als 0xFFFF passt nicht in ein 16-bit-Zeichen. Das sind die ersten 5 Zeichen. Die zählen also für die Länge doppelt. So kommt zumindest JavaScript auf 13.
Aber wir wollen ja nicht die Anzahl der 16-bit-Zeichen zählen. Also weiter im Text. Im letzten Code-Block siehst du schon, dass es 8 Unicode-Codepunkte sind, die dieser String repräsentiert. Das ist meine „naive” Zählung. Aber die ist natürlich auch falsch.
Unicode erlaubt sogenannte Modifier an Emoji. Das zweite Zeichen (0x1f3fb) wird nicht selbst angezeigt, sondern verändert nur das vorangegangene Zeichen. In dem Fall macht es aus dem generischen “Woman Emoji” eine hellhäutige Frau. Das ist so ähnlich wie mit Akzent-Zeichen. Wenn auf ein „`“ ein „a“ folgt, sind das auch nicht zwei Zeichen, sondern das Zeichen „à“. Modifier darf man also nicht zählen. Dadurch fallen schon einmal 2 Codepunkte weg. Wir haben also jetzt eine hellhäutige Frau, einen Einkaufswagen und eine hellhäutige Wache. Was geht jetzt bei den letzten drei Zeichen ab?
0x200d ist ein Arschloch. Es handelt sich um den Zero Width Joiner (ZWJ). Der hat den Effekt, dass das nächste Zeichen, selbst wenn es eigentlich alleine stehen könnte, mit dem vorherigen kombiniert wird. Wir haben als nächstes Zeichen den Spiegel der Venus. Der ZWJ sorgt nun dafür, dass der auch nicht angzeigt wird, sondern wie ein Modifier auf die hellhäutige Wache wirkt. Die wird dadurch zur weiblichen, hellhäutigen Wache. Weder der ZWJ noch das zum Modifier erklärte Zeichen dürfen gezählt werden.
Es bleibt das letzte Zeichen, 0xFE0F. Wenn man Unicode fragt, sagen die einem, dass das der Variant Selector 16 ist. Variant Selectors kommen nur in asiatischen Sprachen vor. Da kann es für dasselbe Zeichen mehrere verschiedene Arten geben, es zu schreiben, die die Bedeutung des Zeichens aber nicht verändern. Die Variant Selectors erlauben es dem Schreiber eines Textes, zu bestimmen, wie ein Zeichen zu malen ist.
Emoji haben diese Variant Selectors gekapert. Variante 15 sorgt dafür, dass ein Zeichen, das eigentlich ein Emoji ist (d.h. bunt angezeigt wird), wie eine Text-Glyphe dargestellt wird. Aus
wird so ♥. Variante 16 (die wir hier vorliegen haben) macht das Gegenteil und sorgt dafür, dass ein „normales” Zeichen emojisiert (bunt) wird.
Anscheinend (ich bin mir wirklich nicht sicher, weil der Unterschied nur ca. 6 Pixel sind) muss der Spiegel der Venus emojisiert werden, damit der ZWJ ihn an die Wache kleben kann. Hier der Vergleich: 💂🏻ohne den Variantenselektor; 💂🏻♀️ mit).
Was zählt, ist aber dass die Variantenselektoren auch niemals abgebildet werden und deshalb nicht als Bildzeichen zählen.
So werden aus 13 Doppelbytes 8 Zeichen und 3 Bilder.
Acht meine Eier haaaaaha
Persönlich liebe ich ja Raku, auch weil alles mit Unicode da von Haus aus so funktioniert wie es soll:
$ echo 'ich👩🏻🛒💂🏻♀️iel' | raku -ne 'say .chars'
9
Aber danke für die gute Erklärung oben!
Dann muss man halt UTF-32 verwenden.
Aber die 8 Vereintkodierungskodepunkte ergeben nur 3 Schreibdingsklumpen und darauf kommt es doch im Titel an, oder?
Ja. Das rauszufinden ist ja der Witz.