HT_lz_cont_head
 



================

Unicode-Zeichen im CSS und anderswo ...

02.07.2023 13:00
avatar  AdMini
#1 Unicode-Zeichen im CSS und anderswo ...
Ad

Inhalt


das Problem



vor einiger Zeit hatte ich im Support https://www.hpm-support.de/t546897f11769...vorheben-1.html einen Tipp gegeben, wie man Links per CSS markieren und unterscheiden kann, z.B:

.xquoteable a[href*='search.php']::before { content:'🔎 '} /* Lupe */ um Suchlinks gleich zu erkennen. Speichert man dies ab, erhält man aber:
.xquoteable a[href*='search.php']::before { content:'🔎 '} /* Lupe */ und dieser Textstring 🔎 wird den Links angehängt

die Lösung vorweg, zur Zeit muss das in die Administration eingetragen werden:
.xquoteable a[href*='search.php']::before { content:'\01F50E '} /* Lupe */

damit man das erhoffte Aussehen 🔎 search.php?q=CSS erhält.


jetzt habe ich noch festgestellt, dass z.Z. auch keine Sonderzeichen wie "ä,ö,ü,ß" vorkommen dürfen, weil sonst der CSS-Parser ein Speichern nicht zulässt.
Auch diese Zeichen lassen sich jetzt mit der hier vorgestellten Methode darstellen

Problem im Support https://www.hpm-support.de/t546897f11769...html#msg7344488


Grundlagen



Hilfe findet man wie immer bei SELFMTML
wiki.selfhtml.org/wiki/Zeichencodierung/Unicode_in_der_Praxis#CSS

wiki.selfhtml.org/wiki/Zeichencodierung/Unicode

um Angaben in hex-Schreibweise erhalten zu können, habe ich auf dieser Seite page-utf_convert.html ein Tool gebastelt:

das script


die wichtigsten Elemente hier

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
 
<form id="utf">
<label>Text/Quelltext</label>
<textarea placeholder="Eingabefeld ... z.B.: abc äöü &#x1F600; &#x1F49A;">
</textarea>
 
<div style="text-align:center">
<button type="reset">clear</button>
<button id="go_test">Testbeispiel</button>
<button id="go_encode">encode starten</button>
</div><br>
 
<fieldset><legend>Ergebnisse</legend>
<label>CSS</label>
<textarea placeholder="Ausgabe wird erzeugt ... "></textarea>
 
<label>javascript</label>
<textarea placeholder="Ausgabe wird erzeugt ... "></textarea>
 
<label>encodeURI() javascript</label>
<textarea placeholder="Ausgabe wird erzeugt ... "></textarea>
 
<label>HTML</label>
<textarea placeholder="Ausgabe wird erzeugt ... "></textarea>
</fieldset></form>
 
 



❗❗ Korrektur: für js muss der hex-Code 4-stellig sein, z.B. α β ❗❗ 5.7.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
 
<script>// Version 5.7.
 
const frm=document.getElementById("utf");
const ta_lst=frm.getElementsByTagName("textarea");
 
var encode=function(utf8_string){
const eingabe=0,css=1,js=2,enc=3,html=4;
var c,hi,low;
for (let i=css;i<=html;i++) { ta_lst[i].value=""; }

var uhex=function(number) {return number.toString(16).toUpperCase(); }
 
for (var codepoint of utf8_string) {
let c=codepoint.charCodeAt(0);
if (c <128 ) {
for (let i=css;i<=html;i++) ta_lst[i].value += codepoint;
} else if (0xD800 <= c && c <= 0xDBFF) {
hi = c;
low = codepoint.charCodeAt(1);
// c=((hi - 0xD800) * 0x400) + (low - 0xDC00) + 0x10000;
c= codepoint.codePointAt(0);
ta_lst[css].value += '\\'+uhex(c)+" " ;
ta_lst[js].value += '\\u'+uhex(hi)+'\\u'+uhex(low) ;
ta_lst[html].value += '&#x'+uhex(c)+";" ;
} else {
ta_lst[css].value += '\\'+uhex(c)+" ";
// ta_lst[js].value += c<256 ? ('\\u00'+uhex(c)) : ('\\u'+uhex(c)); // Fehler 5.7.
ta_lst[js].value += c< 0x0100 ? ('\\u00'+uhex(c))
: ( c< 0x1000 ? ('\\u0'+uhex(c)) : ('\\u'+ uhex(c)) ) ;
ta_lst[html].value += '&#x'+uhex(c)+";";
}
} // codepoint

ta_lst[enc].value=encodeURI(utf8_string).replaceAll("%20"," ").replaceAll("%0A","\n");
 
} // encode()
 

if (frm ) {
frm.onsubmit=function(){
encode(ta_lst[0].value);
return false;
}
}
 
document.getElementById("go_test").onclick=function() {
ta_lst[0].value=decodeURI(
"Test: %C3%A4 %C3%B6 %C3%BC %C3%9F %CE%B1 %CE%B2 %CE%B3 - Smileys Emoji: %F0%9F%98%8E %F0%9F%A5%B4 "
+"\na.lupe::before, .xquoteable a%5Bhref*='search.php'%5D::before %7B content:'%F0%9F%94%8E '%7D /* Lupe */ "
+"\na.extern::after, .xquoteable a%5Btarget*='blank'%5D::after %7B content:' %F0%9F%93%8C '%7D /* Sticker */ "
+"\nalert(%22%E2%9D%A4 sei gegr%C3%BC%C3%9Ft %F0%9F%98%80 %22);");
return false;
}
</script>
 


❗ der Fehler für "α β ..." ist korrigiert



... hoffe, ich konnte etwas Klarheit in diese Sache bringen ....


19.01.2022 Test-v6 online

 Antworten

 Beitrag melden
03.07.2023 20:31
#2 RE: Unicode-Zeichen im CSS und anderswo ...
l2

wie immer steckt der Teufel im Detail, aber jetzt ist
das Tool page-utf_convert.html einsetzbar



Anregungen und Fragen (natürlich auch von Gästen) dürfen gerne hier im Thread angefügt werden ...



verwandtes Thema wenn aus 😯 was undefiniertes �� wird ...

~ ~ a smile 😃 says more than 1000 words ~ ~


 Antworten

 Beitrag melden
06.07.2023 12:52
#3 RE: Unicode-Zeichen im CSS und anderswo ...
l2

habe mal nach dem Unicode Link-Symbol gesucht: https://www.compart.com/de/unicode/U+1F517

"🔗“ U+1F517 🔗 U+1F517 leider lässt es sich nicht einfärben oder fett darstellen

vielleicht vergrößern 🔗 U+1F517 oder verkleinern 🔗 U+1F517

🔗 U+1F517 auf hellem Hintergrund gefällt's mir schon besser


... Beitrag noch nicht fertig, zumindest gibt es einen Link zur neueren Version page-utf_convert2.html, die ich noch um einige anschauliche Beispiele erweitern möchte .... gut Ding will Weile haben --- grrrr

~ ~ a smile 😃 says more than 1000 words ~ ~


 Antworten

 Beitrag melden
11.07.2023 16:03
#4 RE: Unicode-Zeichen im CSS und anderswo ...
avatar

kleine Spielerei in Kombination mit dem Layout-Switcher
mit den Optionen: Farbschema und Links markieren, Lupe

interne Links sollen den Einfachpfeil,
externe Links den Doppelpfeil bekommen.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
 

:root { --col_link_b: gold; --col_link: yellow;}
 
[i][url=/search.php?zeit=9999&s=2&forum=0&q=kw%3Anewpostpanel][style=display:none]kw:[/style]#newpostpanel[/url][/i] font a, [i][url=/search.php?zeit=9999&s=2&forum=0&q=kw%3Aeditpostpanel][style=display:none]kw:[/style]#editpostpanel[/url][/i] font a,
[i][url=/search.php?zeit=9999&s=2&forum=0&q=kw%3Aeditpostpanel][style=display:none]kw:[/style]#editpostpanel[/url][/i] a, [i][url=/search.php?zeit=9999&s=2&forum=0&q=kw%3Anewpostpanel][style=display:none]kw:[/style]#newpostpanel[/url][/i] a,
.message_container a, .mcomment a {color: var(--col_link) }
 

body.l2b_scheme_blue { --col_link_b: deepskyblue; }
body.l2b_scheme_red { --col_link_b: orangered; }
body.l2b_scheme_green { --col_link_b: greenyellow; }
 
body.l2b_lupe .xquoteable a:not(.nopad)::before,
body.l2b_lupe [i][url=/search.php?zeit=9999&s=2&forum=0&q=kw%3Anewpostpanel][style=display:none]kw:[/style]#newpostpanel[/url][/i] a::before,
body.l2b_lupe [i][url=/search.php?zeit=9999&s=2&forum=0&q=kw%3Aeditpostpanel][style=display:none]kw:[/style]#editpostpanel[/url][/i] a::before {
content:' \2192 \A0 ';color:var(--col_link_b); font-size:1em} /* 1-Pfeil */
 
body.l2b_lupe .xquoteable a[name]::before {content:''}
body.l2b_lupe .xquoteable a[href*='search.php']:not(.nopad)::before { content:'\01F50E '} /* Lupe */
 
body.l2b_lupe .xquoteable a[target*='blank']::before,
body.l2b_lupe [i][url=/search.php?zeit=9999&s=2&forum=0&q=kw%3Anewpostpanel][style=display:none]kw:[/style]#newpostpanel[/url][/i] a[target*='blank']::before,
body.l2b_lupe [i][url=/search.php?zeit=9999&s=2&forum=0&q=kw%3Aeditpostpanel][style=display:none]kw:[/style]#editpostpanel[/url][/i] a[target*='blank']::before
{ content:' \21D2 \A0 '; color:var(--col_link_b); font-size:1em} /* 2-Pfeil */
 
body.l2b_lupe .xquoteable a[href*='selfhtml.org']::before,
body.l2b_lupe [i][url=/search.php?zeit=9999&s=2&forum=0&q=kw%3Anewpostpanel][style=display:none]kw:[/style]#newpostpanel[/url][/i] a[href*='selfhtml.org']::before,
body.l2b_lupe [i][url=/search.php?zeit=9999&s=2&forum=0&q=kw%3Aeditpostpanel][style=display:none]kw:[/style]#editpostpanel[/url][/i] a[href*='selfhtml.org']::before
{ content:' selfhtml\A0 \21D2 \A0 ';color:var(--col_link_b);font-size:0.6em} /* */
 

body.l2b_lupe .xquoteable a[href*='support.de']::before,
body.l2b_lupe [i][url=/search.php?zeit=9999&s=2&forum=0&q=kw%3Anewpostpanel][style=display:none]kw:[/style]#newpostpanel[/url][/i] a[href*='support.de']::before,
body.l2b_lupe [i][url=/search.php?zeit=9999&s=2&forum=0&q=kw%3Aeditpostpanel][style=display:none]kw:[/style]#editpostpanel[/url][/i] a[href*='support.de']::before
{ content:' support\A0 \21D2 \A0'; color:var(--col_link_b);font-size:0.6em} /* */
 
body.l2b_lupe .xquoteable a[href*='wikipedia.org']::before,
body.l2b_lupe [i][url=/search.php?zeit=9999&s=2&forum=0&q=kw%3Anewpostpanel][style=display:none]kw:[/style]#newpostpanel[/url][/i] a[href*='wikipedia.org']::before,
body.l2b_lupe [i][url=/search.php?zeit=9999&s=2&forum=0&q=kw%3Aeditpostpanel][style=display:none]kw:[/style]#editpostpanel[/url][/i] a[href*='wikipedia.org']::before
{ content:' wikipedia\A0 \21D2 \A0 ';color:var(--col_link_b);font-size:0.6em} /* */
 



mit ".xquoteable a" werden alle Links in den Beiträgen erfasst.
mit ".xquoteable a:not(.nopad)" werden die Links in den Zitat-Headern ausgeschlossen
Mit "body.l2b_lupe" werden die Selektoren durch den Layout-Switcher schaltbar gemacht



Die Selektoren für die Vorschau (#newpostpanel, kw:#editpostpanel) machen das CSS schon recht umfangreich.

ein paar Beispiellinks:
Unicode-Zeichen im CSS und anderswo ... diese Seite
search.php?q=css+unicode
https://www.w3.org/TR/selectors-4/#negation
https://wiki.selfhtml.org/wiki/Zeichenreferenz#Pfeil-Symbole
https://www.hpm-support.de/t546897f11769...html#msg7344521
https://de.wikipedia.org/wiki/Sonderzeichen


[edit_by=Admini|13.7.2023] CSS mehrfach geändert ....[/edit_by]

~ ~ keep cool 😎 ~ ~


 Antworten

 Beitrag melden
13.07.2023 13:30
#5 RE: Unicode-Zeichen im CSS und anderswo ...
l2

will man die Link-Dekoration auch in FrageForen, wird dass CSS noch umfangreicher, weil es dort die Klasse "xquoteable" nicht gibt.

Um mir die Sache einfacher zu machen, füge ich die Klasse in die Beiträge der Frageforen per Script ein.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
 
var ff_xquote=function(){
// .message_container .mcomment
const xq="xquoteable";
let mcs=document.querySelectorAll(".message_container div.row div:nth-child(2) "); // Frage und Antworten
if (mcs) {
if (document.querySelector("."+xq) ) return; // kein Frageforum
console.log("Fuss: Decor für FrageForum "+xq);
 
for (let mc of mcs) {
mc.classList.add(xq);
}
mcs=document.querySelectorAll(".mcomment"); // Kommentare
if (mcs) for (let mc of mcs) {
mc.classList.add(xq);
}
}
} // func
ff_xquote();
 



hier ein Testthread: Frage eines Mitglieds im FrageForum
und dann ein Zitat:
Zitat von ageNT_😎 im Beitrag #4

ein paar Beispiellinks:
Unicode-Zeichen im CSS und anderswo ... diese Seite
search.php?q=css+unicode
https://www.w3.org/TR/selectors-4/#negation
https://wiki.selfhtml.org/wiki/Zeichenreferenz#Pfeil-Symbole
https://www.hpm-support.de/t546897f11769...html#msg7344521
https://de.wikipedia.org/wiki/Sonderzeichen

~ ~ a smile 😃 says more than 1000 words ~ ~


 Antworten

 Beitrag melden
Bereits Mitglied?
Jetzt anmelden!
Mitglied werden?
Jetzt registrieren!
Beiträge dieses Themas (vers 8.5.) V4 V6 [ ✖ ]
    Statistik der gezeigten Beiträge
        sessionStorage-Daten verwalten

        zusätzlich Beitragstexte speichern.

        mehr ...(Kontrolle)

        hier können die sessionStorage-Daten einzelner Threads gelöscht werden
        und festgelegt werden, ob die Beitragstexte gecacht/gebuffert werden sollen.

        Den Standardwert legt der Admin fest, hier wird nicht standardmäßig gebuffert. Man muß also jeden einzelnen Wert festlegen.

        mit schließen des BrowserTabs werden diese sessionStorage-Daten komplett gelöscht. Sie enthalten die eingelesenen "Verzeichnisse" und die Textbeiträge. wikipedia.org/wiki/Web_Storage

        • Threadkbsdelbuff Thema

        die Kontrolldaten werden permanent im Browser gespeichert (localStorage)