Virtuella: Zwei Sonderzeichen sollen nicht durch Zeilenumbruch getrennt werden können

Hallo, ich möchte bei einem Text verhindern, dass Sonderzeichen wie diese ♂♀ nicht durch einen Zeilenumbruch auseinandergerissen werden. Geht das mit

<nobr>♂♀</nobr>

? Das ist das einzige, was ich gefunden habe. Gibt es noch anderen Möglichkeiten?

Grüßlis

  1. ♂&nbsp;♀

    1. Danke für deine schnelle Antwort! Aber dann ist ein Leerzeichen dazwischen, oder? Das will ich nicht.

      1. Hi,

        Danke für deine schnelle Antwort! Aber dann ist ein Leerzeichen dazwischen, oder? Das will ich nicht.

        Dann nimm einen Zero-Width-Joiner statt des non-breaking-space.

        cu,
        Andreas a/k/a MudGuard

  2. Hallo Virtuella,

    wenn deine Zeichenfolge ♂♀ in Leerstellen eingeschlossen ist, sollte sie als Wort betrachtet werden und beisammen bleiben. Das Problem stellt sich in normalem Text eigentlich gar nicht. Selbst, wenn ich Silbentrennung einschalte, reißt er mir das „Wort“ ♂♀♂♀♂♀♂♀♂♀♂♀ nicht auseinander (und ja, ich habe lang="de" gesetzt - ein anderes Testwort trennt er).

    Welche spezielle Situation hast Du, dass er Dir das zerreißt? Sind die beiden Zeichen direkt nebeneinander im HTML? Ist zufällig an dieser Stelle die CSS Eigenschaft word-break: break-all; aktiv? Kannst Du die durch word-break: break-word; ersetzen?

    Rolf

    --
    sumpsi - posui - obstruxi
  3. @@Virtuella

    ich möchte bei einem Text verhindern, dass Sonderzeichen wie diese ♂♀

    Das sind keine Sonderzeichen.

    Sonderzeichen sind Zeichen, die in einem bestimmten Kontext ein besondere Funktion haben und deshalb gesondert behandelt werden müssen.

    Im HTML-Kontext betrifft das bspw. die Zeichen <, &, die ggfs. als &lt; bzw. &amp; zu notieren wären.

    nicht durch einen Zeilenumbruch auseinandergerissen werden.

    Wie hast du es geschafft, dass ♂♀ auseinandergerissen werden? Oder heißt „wie diese“, dass es bei dir um ganz andere Zeichen geht?

    Im Gegensatz zu ♂♀ werden bspw. 🧐🤨 auseinandergerissen, was sich – wie @MudGuard schon sagte – durch einen zero-width joiner verhindern ließe. Auch den gibt es in HTML als benannte Entity: &zwj;.

    Codepen

    😷 LLAP

    --
    „Dann ist ja auch schrecklich, dass wir in einem Land leben, in dem nicht nur Bildungswillige leben, sondern auch hinreichende Zahlen von Bekloppten. Das darf ich so locker formulieren, ich bin ja jetzt Rentner und muss nicht mehr auf jedes Wort achten.“
    — Joachim Gauck über Impfgegner
    1. Hallo Gunnar,

      Sonderzeichen sind Zeichen, die in einem bestimmten Kontext ein besondere Funktion haben und deshalb gesondert behandelt werden müssen.

      Das stimmt nicht - oder ist zumindest Ansichtssache. Die Wikipedia und die von ihr verlinkten Quellen vertreten eine andere Ansicht. Was Du ansprichst, sind Zeichen mit syntaktischer Funktion, oder reservierte Zeichen, die man kontextgerecht maskieren muss, wenn sie diese Funktion nicht wahrnehmen sollen.

      (Was die Menge der Zeichen mit syntaktischer Funktion und die Menge der Zeichen, die man maskieren muss, nicht gleichsetzt.)

      Sonderzeichen sind ein Sammelbegriff für alle Zeichen außerhalb des normalen Alphabets (wobei "normal" natürlich eine Funktion der verwendeten Sprache ist). Ob Ziffern Sonderzeichen sind oder nicht, wird gelegentlich diskutiert; im ASCII Kontext sind es keine. Ob Umlaute Buchstaben sind oder Sonderzeichen, wird im Deutschen auch diskutiert (im Schwedischen bspw. nicht)

      Also: Symbole wie ♂ ♀ sind definitiv Sonderzeichen. Ich kenne keine Sprache, die sie als reguläre Buchstaben nutzt.

      Im Gegensatz zu ♂♀ werden bspw. 🧐🤨 auseinandergerissen

      Huh?! Ja, ist so, aber wie kommt das? Ich weiß, dass Unicode Joining-Regeln für Zeichen hat, aber wenn ich mir die Zeichenbeschreibungen bei compart.com oder graphemica.com anschaue, sehe ich keinen Unterschied bei den Join-Attributen dieser Zeichen (jg, jt, Join_C) - allerdings ist die Anzeige bei graphemica so riesig und unübersichtlich, dass man da was übersehen kann. Dass ♂♀ in der BMP liegen und die Emojis in Plane 1, bzw. dass sich die einen 16-bittig codieren lassen und die anderen nicht, sollte wohl nicht der Auslöser sein dürfen.

      Rolf

      --
      sumpsi - posui - obstruxi
      1. Hallo Rolf,

        Sonderzeichen sind ein Sammelbegriff für alle Zeichen außerhalb des normalen Alphabets (wobei "normal" natürlich eine Funktion der verwendeten Sprache ist).

        das würde ich noch etwas anders formulieren: Sonderzeichen sind Zeichen außerhalb des üblichen alltäglichen Gebrauchs (wobei auch das z.B. je nach Sprache oder beruflicher Tätigkeit[1] unterschiedlich ausfällt). Für mich sind daher Buchstaben, Ziffern, Interpunktionszeichen oder auch der Klammeraffe keine Sonderzeichen; Blockgrafikzeichen und viele mathematische Symbole dagegen schon.

        Ob Ziffern Sonderzeichen sind oder nicht, wird gelegentlich diskutiert

        Ernsthaft??

        im ASCII Kontext sind es keine. Ob Umlaute Buchstaben sind oder Sonderzeichen, wird im Deutschen auch diskutiert (im Schwedischen bspw. nicht)

        Ich würde sagen: Wenn sie intrinsisch zur Sprache gehören, sind es in dieser Sprache normale Buchstaben, keine Sonderzeichen. Wie wir oben schon eingeräumt haben: Diese Differenzierung fällt nicht für alle Menschen gleich aus.

        Live long and pros healthy,
         Martin

        --
        Klein φ macht auch Mist.

        1. Für einen deutschen Ingenieur sind etwa das griechische µ und das Ω völlig normale Zeichen, für den deutschen Bäcker eher nicht. ↩︎

        1. @@Der Martin

          Für einen deutschen Ingenieur sind etwa das griechische µ und das Ω völlig normale Zeichen,

          µΩ – resistance is futile?

          für den deutschen Bäcker eher nicht.

          Der weiß nämlich, dass man das Hufeisen nicht so rum Ω aufhängt, sondern so rum: ℧. Sonst fällt ja das Glück raus.

          😷 LLAP

          --
          „Dann ist ja auch schrecklich, dass wir in einem Land leben, in dem nicht nur Bildungswillige leben, sondern auch hinreichende Zahlen von Bekloppten. Das darf ich so locker formulieren, ich bin ja jetzt Rentner und muss nicht mehr auf jedes Wort achten.“
          — Joachim Gauck über Impfgegner
    2. Wie hast du es geschafft, dass ♂♀ auseinandergerissen werden? Oder heißt „wie diese“, dass es bei dir um ganz andere Zeichen geht?

      Kuckstu: https://www.queermdb.de/schwule-dokumentation/studio-54-2018/

      Unter dem Poster sind die Personen, die im Film zu sehen sind. Je nach Auflösung kommt es vor, dass zb bei "Boy George ♂ ♂, Andy Warhol ♂♂, ..." die beiden Sonderzeichen auseinandergerissen werden.

      Aber wenn ♂&zwj;♂ hilft, ist das Problem ja schon gelöst. Danke!

      1. Der breitenlose Verbinder (♂&zwj;♂) funktioniert leider nicht. 😟

      2. Hallo,

        Kuckstu: https://www.queermdb.de/schwule-dokumentation/studio-54-2018/

        Unter dem Poster sind die Personen, die im Film zu sehen sind. Je nach Auflösung kommt es vor, dass zb bei "Boy George ♂ ♂, Andy Warhol ♂♂, ..." die beiden Sonderzeichen auseinandergerissen werden.

        ja klar, das sind ja auch keine Zeichen, sondern SVG-Grafiken als img-Elemente.
        Und noch dazu mit Whitespace dazwischen.

        Live long and pros healthy,
         Martin

        --
        Klein φ macht auch Mist.
        1. Hallo Martin,

          das ist ziemlich queer (engl. für merkwürdig) - ruft man den Quelltext ab, stehen da die Unicode-Zeichen. Aber im DOM stehen die SVGs. Da ist offenbar eine Komponente im Spiel, die der Meinung ist, diese Zeichen könnten nicht stehen bleiben und sie durch die SVGs ersetzt.

          Es ist nun die Frage, wie man am besten vorgeht. Die Images bleiben naturgemäß nicht beieinander, da hilft nur <nobr>, oder man muss dieser Transformationskomponente den Saft abdrehen. Das Zeichen ist im Unicode-Standard seit 1993 und sollte eigentlich von allen Browsern dargestellt werden können.

          Wenn man natürlich angesichts des Seitenthemas Wert darauf legt, dass diese Zeichen hervorgehoben werden, bleibt nur <nobr> übrig.

          Rolf

          --
          sumpsi - posui - obstruxi
          1. @@Rolf B

            da hilft nur <nobr>

            So ein Element gab es nie im HTML-Standard. Man sollte sich auf die Unterstützung in Browsern nicht verlassen.

            Besser: <span style="white-space: nowrap">. [MDN]

            oder <span class="nowrap"> mit .nowrap { white-space: nowrap } im Stylesheet.

            😷 LLAP

            --
            „Dann ist ja auch schrecklich, dass wir in einem Land leben, in dem nicht nur Bildungswillige leben, sondern auch hinreichende Zahlen von Bekloppten. Das darf ich so locker formulieren, ich bin ja jetzt Rentner und muss nicht mehr auf jedes Wort achten.“
            — Joachim Gauck über Impfgegner
  4. <nobr>♂♀</nobr>

    Mit Firefox & Chrome funktioniert das zumindest.

    1. @@Virtuella

      <nobr>♂♀</nobr>

      Mit Firefox & Chrome funktioniert das zumindest.

      Das hatten wir doch schon, dass das keine gute Idee ist.

      😷 LLAP

      --
      „Dann ist ja auch schrecklich, dass wir in einem Land leben, in dem nicht nur Bildungswillige leben, sondern auch hinreichende Zahlen von Bekloppten. Das darf ich so locker formulieren, ich bin ja jetzt Rentner und muss nicht mehr auf jedes Wort achten.“
      — Joachim Gauck über Impfgegner
      1. Was funktioniert, ist gut. Deinen Alternativvorschlag verstehe ich nicht.

        1. @@Virtuella

          Was funktioniert, ist gut.

          Du kannst dich eben nicht drauf verlassen, dass es bei jedem funktioniert, weil <nobr> nie HTML-Standard war.

          Deinen Alternativvorschlag verstehe ich nicht.

          Stattdessen ein span-Element verwenden und den Zeilenumbruch mit der dafür vorgesehenen CSS-Eigenschaft white-space: nowrap vornehmen – entweder gleich inline im style-Attribut oder im Stylesheet.

          Also nicht

          <nobr>
            <svg></svg>
            <svg></svg>
          </nobr>
          

          sondern

          <span style="white-space: nowrap">
            <svg></svg>
            <svg></svg>
          </span>
          

          😷 LLAP

          --
          „Dann ist ja auch schrecklich, dass wir in einem Land leben, in dem nicht nur Bildungswillige leben, sondern auch hinreichende Zahlen von Bekloppten. Das darf ich so locker formulieren, ich bin ja jetzt Rentner und muss nicht mehr auf jedes Wort achten.“
          — Joachim Gauck über Impfgegner