Zeichenkodierung

Du hast Probleme mit Deinem eMail-Programm, Webbrowser oder Textprogramm? Dein Lieblingsprogramm streikt?
Antworten
kalamazoo
Beiträge: 288
Registriert: 28.08.2017 11:31:49

Zeichenkodierung

Beitrag von kalamazoo » 09.05.2022 12:28:12

Problem: Globale Anzeige (Darstellung) von Schriftzeichen und Symbolen in KDE

Ausgangslage: Unter Debian Buster wurden auch "exotische" Sonderzeichen in Dateinamen (e.g. U+1F534 Large Red Circle) in Dolphin, Konsole, etc., ohne weiteres richtig dargestellt (ohne je etwas Besonderes eingestellt zu haben). In Bullseye jedoch gelingt das nicht, was auch immer ich bereits versucht habe. Auch die Zeichendarstellung von gespeicherten Datein in Kate und anderen Anwendungen ist davon betroffen, man sieht anstelle der korrekten Glyphen der Fonts lediglich Rechtecke.

Ich habe nun versucht, die einschlägigen Einstellungen meines Desktops (Bullseye - falsche Zeichendarstellung) mit meinem Laptop (Buster - richtige Zeichendarstellung) abzugleichen. Das Ergebnis: jetzt funktioniert es auch in Buster nicht mehr. Die einzige Änderung, die das bewirkt haben könnte, dürfte # dpkg-reconfigure locales sein, die ich trotz Rücksetzung der vorher notierten Werte aber nicht mehr zurücksetzen kann.

Die mittels # fc-query gelisteten darstellbaren Unicode-Zeichen-Bereiche für alle unterstützten Codepoints scheinen okay. # fc-list :charset=1F534 gibt sogar drei Fontsätze aus, die die Glyphe darstellen können (u.a. NotoColorEmoji.ttf), Noto Sans 10 sind auch die global verwendeten Fonts in KDE.

Bin diesbezüglich mittlerweile völlig ratlos, irgendetwas übersehe ich oder verstehe ich da nicht. Hilfe somit erbeten!

eggy
Beiträge: 3331
Registriert: 10.05.2008 11:23:50

Re: Zeichenkodierung

Beitrag von eggy » 09.05.2022 17:22:43

Erstmal was sagt "locale" als root, was als user? Und was sagt "grep -v ^# /etc/locale.gen"?

kalamazoo
Beiträge: 288
Registriert: 28.08.2017 11:31:49

Re: Zeichenkodierung

Beitrag von kalamazoo » 09.05.2022 20:47:49

eggy hat geschrieben: ↑ zum Beitrag ↑
09.05.2022 17:22:43
Erstmal was sagt "locale" als root, was als user?

Code: Alles auswählen

root@hostname# locale
LANG=de_AT.UTF-8
LANGUAGE=
LC_CTYPE="de_AT.UTF-8"
LC_NUMERIC="de_AT.UTF-8"
LC_TIME="de_AT.UTF-8"
LC_COLLATE="de_AT.UTF-8"
LC_MONETARY="de_AT.UTF-8"
LC_MESSAGES="de_AT.UTF-8"
LC_PAPER="de_AT.UTF-8"
LC_NAME="de_AT.UTF-8"
LC_ADDRESS="de_AT.UTF-8"
LC_TELEPHONE="de_AT.UTF-8"
LC_MEASUREMENT="de_AT.UTF-8"
LC_IDENTIFICATION="de_AT.UTF-8"
LC_ALL=

user@hostname$ locale
...
LANGUAGE=en_US:de:he
...
[Rest wie root]
eggy hat geschrieben: ↑ zum Beitrag ↑
09.05.2022 17:22:43
Und was sagt "grep -v ^# /etc/locale.gen"?

Code: Alles auswählen

root@hostname# grep -v ^# /etc/locale.gen
de_AT.UTF-8 UTF-8
en_US.UTF-8 UTF-8

user@hostname$ grep -v ^# /etc/locale.gen
de_AT.UTF-8 UTF-8
en_US.UTF-8 UTF-8

eggy
Beiträge: 3331
Registriert: 10.05.2008 11:23:50

Re: Zeichenkodierung

Beitrag von eggy » 10.05.2022 22:12:40

Tritt das nur als der normale User auf? Oder ist das auch, wenn Du nen komplett neues Testprofil anlegt?
Man könnte auch ausprobieren, ob es evtl an fehlenden xfont-100/75dpi Paketen liegt, aber recht unwahrscheinlich.

kalamazoo
Beiträge: 288
Registriert: 28.08.2017 11:31:49

Re: Zeichenkodierung

Beitrag von kalamazoo » 11.05.2022 02:44:20

eggy hat geschrieben: ↑ zum Beitrag ↑
10.05.2022 22:12:40
Tritt das nur als der normale User auf? Oder ist das auch, wenn Du nen komplett neues Testprofil anlegt?
Bin mir jetzt nicht sicher, ob ich verstehe, was Du meinst.

Root und User teilen sich offensichtlich denselben Zeichensatz: unter Buster wurden -- wie oben erwähnt: bis vor kurzem -- bei allen GUI-Anwendungen (user) sowie Dokumenteninhalten(!), aber auch im Terminal wenn als root eingeloggt, Sonderzeichen richtig dargestellt. Ich erinnere mich nicht, hier je etwas besonders eingestellt zu haben. Ich bin eher zufällig darauf gestossen, und nachdem diese speziellen Glyphen selbst in Dateinamen keine Probleme bereitet haben (was sie jetzt ja auch nicht tun, nur sieht man an ihrer Stelle immer nur ein Rechteck als eine Art Platzhalter), habe ich sukzessive begonnen, diese zu Kennzeichnung besonderer Dateinen zu verwenden (insbesondere U+1F534 🔴 large red circle, U+1F535 🔵 large blue circle, U+1F536 🔶 large orange diamond, U+1F53A 🔺 und U+1F53B 🔻 up- und down-pointing red triangle).

In Bullseye ist mir bei mittlerweile drei Neuinstallationen auf unterschiedlichen Rechnern die Anzeige dieser Fonts jedoch nie gelungen, weshalb ich davon ausgehe, dass sich hier etwas in den Standardeinstellungen geändert hat. Dies ist mit ein Grund, weshalb mein Laptop immer noch mit Buster läuft: solange ich unter Bullseye diverse Einstellungen nicht nachvollziehen kann, bleibe ich zumindest mit einem Rechner noch bei Buster.

-- Frage: wird bei euch bei dem Befehl # unicode U+1F534 in der Konsole u.a. tatsächlich ein roter Kreis 🔴 im CLI dargestellt oder nur ein leeres Rechteck ▭?

eggy hat geschrieben: ↑ zum Beitrag ↑
10.05.2022 22:12:40
Man könnte auch ausprobieren, ob es evtl an fehlenden xfont-100/75dpi Paketen liegt, aber recht unwahrscheinlich.
Die Pakete xfonts-100dpi und xfonts-75dpi sind jeweils in Version: 1:1.0.4+nmu1 installiert, und zwar automatisch. Ich denke auch nicht, dass es an fehlenden Fonts liegt. Der Laptop mit Buster hat laut # fc-list mehr als 2000 Fonts installiert, am Desktop mit Bullseye sollten sogar mehr als 3000 Zeichensätze verfügbar sein.

# fc-list :charset=1F534 zeigt für den Laptop einen Zeichensatz an, der den roten Kreis enthält, und zwar /usr/share/fonts/truetype/noto/NotoColorEmoji.ttf: Noto Color Emoji:style=Regular; am Desktop gibt es sogar drei solche Schriftarten.


Mir ist das Zusammenspiel von Locale, Font Manager, Font-Management in den Systemeinstellungen, etc. ziemlich unklar:

-- # lsof -p <PID> | grep fonts zeigt für die Prozesse von beispielsweise Konsole, Dolphin, Kate und Firefox ähnliche, aber durchaus unterschiedliche verwendete Zeichensätze an. Wer oder was bestimmt welche Fonts von den einzelnen Prozessen verwendet werden? Wie kann man dies ändern?

-- Im Font Manager wird unter "Miscellaneous Symbols and Pictographs" "Noto Color Emoji" exakt jene Zeichenkodierung angezeigt, mittels derer früher die Sonderzeichen am Laptop dargestellt wurden. Im Font Management der KDE-Systemeinstellungen wird unter "Noto Color Emoji" im Sichtfenster gar nichts angezeigt, der betreffende Fontssatz aber als installiert angegeben. Dafür werden "Noto Kufi Arabic" wiedergegeben (ist gleich darunter) und da ist wiederum bei den Zeichen im Font Manager gähnende Leere. ???

-- Nach Durchsicht der Bash-History nehme ich an, dass das Nicht-mehr-Funktionieren der Darstellung der Sonderzeichen durch # dpkg-reconfigure locales verursacht wurde. Mir ist jedoch unerklärlich, welche Veränderungen hier bewirkt wurden (wo wird dies überhaupt gespeichert?). Ich habe mittlerweile die verschiedensten Einstellungen versucht, um dies wieder rückgängig zu machen, leider ohne Erfolg.

eggy
Beiträge: 3331
Registriert: 10.05.2008 11:23:50

Re: Zeichenkodierung

Beitrag von eggy » 11.05.2022 13:29:56

kalamazoo hat geschrieben: ↑ zum Beitrag ↑
11.05.2022 02:44:20
Bin mir jetzt nicht sicher, ob ich verstehe, was Du meinst.
Neuen Debianuser "testuser" via adduser erstellen, als "testuser" einloggen, schauen, ob das Verhalten genauso ist. Ist der einfachste Weg, um rauszufinden, an welcher Stelle man suchen muss.
Was mich bei Deiner Ausgabe gewundert hatte, war das "de:he" bei "LANGUAGE", keine Ahnung, ob das valide ist, ich wollte das noch mal nachlesen, ist dann aber im hiesigen Trouble untergegangen.

Wenn ich bei konsole "touch /tmp/🔴" eingebe, sehe ich auch nur nen Kasten, stell ich die Schrift im Profil dann von monospace auf "Noto Color Emoji" um, gibts den roten Punkt auch in der Konsole.

kalamazoo
Beiträge: 288
Registriert: 28.08.2017 11:31:49

Re: Zeichenkodierung

Beitrag von kalamazoo » 12.05.2022 00:53:42

eggy hat geschrieben: ↑ zum Beitrag ↑
11.05.2022 13:29:56
Neuen Debianuser "testuser" via adduser erstellen, als "testuser" einloggen, schauen, ob das Verhalten genauso ist. Ist der einfachste Weg, um rauszufinden, an welcher Stelle man suchen muss.
Neuer User in Buster, wo es ja mal funktioniert hat, dasselbe Ergebnis: keine Darstellung der Sonderzeichen.

eggy hat geschrieben: ↑ zum Beitrag ↑
11.05.2022 13:29:56
Was mich bei Deiner Ausgabe gewundert hatte, war das "de:he" bei "LANGUAGE", keine Ahnung, ob das valide ist, ich wollte das noch mal nachlesen, ist dann aber im hiesigen Trouble untergegangen.
Das ist okay, ich habe in den Systemeinstellungen neben deutsch und englisch auch irgendwann einmal hebräisch dazugenommen (ebenfalls wegen des Zeichensatzes).
eggy hat geschrieben: ↑ zum Beitrag ↑
11.05.2022 13:29:56
Wenn ich bei konsole "touch /tmp/🔴" eingebe, sehe ich auch nur nen Kasten, stell ich die Schrift im Profil dann von monospace auf "Noto Color Emoji" um, gibts den roten Punkt auch in der Konsole.
D.h. dass in den Standardeinstellungen die Sonderzeichen offenbar nicht angezeigt werden. Mich wundert, dass das bei Dir offenbar auch in der Konsole einstellbar ist. In den Profileinstellungen der Konsole kann ich nur das Encoding umstellen (ist auf UTF-8) und in den Konfigurationseinstellungen finde ich auch kein "monospace". Bei den allgemeinen Systemeinstellungen ist alles auf "Noto Sans 10", nur bei "Fixed width" ist "Hack 9" angegeben. Ich habe das noch nie geändert, werde das aber einmal tun und im Erfolgsfall berichten. In Kate können die Fonts konfiguriert werden, das wirkt sich allerdings (und klarerweise) nur auf die Darstellung der Zeichen in den Dateien aus.

Ich vermute, dass ich früher eine Art Fallback aktiviert hatte, dass auf die "Noto Color Emoji" zurückgegriffen hat, falls die Codepoints von anderen Zeichensätzen nicht dargestellt werden konnten.

Kann man die einschlägigen Systemeinstellungen für die Fonts eigentlich auch über den Terminal vornehmen?

eggy
Beiträge: 3331
Registriert: 10.05.2008 11:23:50

Re: Zeichenkodierung

Beitrag von eggy » 12.05.2022 01:23:51

"dpkg-reconfigure console-setup" ist vielleicht einer der Befehle, die Du suchst. Bei X bzw je nach benutztem Windowmanager könnten andere Sachen greifen. Ich würde "dpkg-reconfigure locales" nochmal durchlaufen lassen, vielleicht bringt das ja doch was, drauf achten, dass die UTF-8 Versionen Deiner Sprachen angewählt sind.

Hier ist Debiankonsole das Alltagsterminal, mit ausgeblendeter Menüzeile. Daher erstmal Strg+Shift+M um die sichtbar zu machen, dann "Einstellungen" -> "Aktuelles Profil bearbeiten...", Reiter "Erscheinungsbild", dann unten bei Schriftart aus "Auswählen" gehen. Kann aber in Deiner Version anders sein, hier 21.12.3 aus sid.

kalamazoo
Beiträge: 288
Registriert: 28.08.2017 11:31:49

Re: Zeichenkodierung

Beitrag von kalamazoo » 12.05.2022 01:47:56

Habe in den allgemeinen Systemeinstellungen die fixed width oder monospace fonts auch auf "Noto Color Emoji" gestellt, jedoch ohne erkennbare Änderungen im Gesamtverhalten. Die Zeichendarstellung in den mit Kate geöffneten Datein ist unter "Noto Color Emoji" etwas eigenartig, insbesondere die Ziffern werden sehr klein und mit großem Abstand zueinander dargestellt, die Sonderzeichen sind aber da. Früher wurden ebenfalls die Glyphen der etwas exotischeren Unicode Blocks dargestellt, der Rest war allerdings "normal".
eggy hat geschrieben: ↑ zum Beitrag ↑
12.05.2022 01:23:51
"dpkg-reconfigure console-setup" ist vielleicht einer der Befehle, die Du suchst. Bei X bzw je nach benutztem Windowmanager könnten andere Sachen greifen. Ich würde "dpkg-reconfigure locales" nochmal durchlaufen lassen, vielleicht bringt das ja doch was, drauf achten, dass die UTF-8 Versionen Deiner Sprachen angewählt sind.
Ich hatte verstanden, dass Du die Fonts der Konsole im Profil einstellen kannst. "dpkg-reconfigure console-setup" bewirkt ja keine globalen Einstellungen, bei mir waren diese Sonderzeichen in allen Programmen und auch der Benutzeroberfläche zu sehen (etwa in den Tabs mit den Dateinamen).
eggy hat geschrieben: ↑ zum Beitrag ↑
12.05.2022 01:23:51
Hier ist Debiankonsole das Alltagsterminal, mit ausgeblendeter Menüzeile. Daher erstmal Strg+Shift+M um die sichtbar zu machen, dann "Einstellungen" -> "Aktuelles Profil bearbeiten...", Reiter "Erscheinungsbild", dann unten bei Schriftart aus "Auswählen" gehen. Kann aber in Deiner Version anders sein, hier 21.12.3 aus sid.
Ich verwende Konsole v.18.04.0 ... Ah ja, das "Select Fonts" unter "Color Scheme & Background" hatte ich übersehen ...

Wahrscheinlich liegt die Anwort doch bei # dpkg-reconfigure locales, es soll sich ja global auswirken. Ich werde hier mal verschiedene Einstellungen durchprobieren.

kalamazoo
Beiträge: 288
Registriert: 28.08.2017 11:31:49

Re: Zeichenkodierung

Beitrag von kalamazoo » 13.05.2022 02:16:05

# dpkg-reconfigure locales bringt nicht viel, es gibt hier ja auch nur zwei Masken mit eher grundlegenden Einstellungen:
1. Locales to be generated und 2. Default locale for the system environment
Unter 1. hatte ich bei den Standorteinstellungen einmal "All Locales" gewählt, was ich mittlerweile wieder auf "de_AT.UTF-8 UTF-8" sowie "en_US.UTF-8 UTF-8" zurückgesetzt habe
Unter 2. habe ich alle verfügbaren Einträge durchprobiert (None, C.UTF-8, de_AT.UTF-8, en_US.UTF-8) -- kein Unterschied

Unter # dpkg-reconfigure fontconfig-config habe ich auch so gut wie alle Einstellungen in allen möglichen Kombinationen durchgespielt (Schriftabgleich-Methode für den Bildschirm (font tuning), Bitmap-Schriften verwenden, etc.) -- nope

# fc-match gibt mir als die besten verfügbaren Fonts "DejaVuSans.ttf: 'DejaVu Sans' 'Book'" aus. Gleichgültig ob monospace, unifont oder Sans als Parameter angegeben werden, Ergebnis ist immer "DejaVuSans". Ich wüsste nicht, wo das eingestellt worden wäre, die Systemeinstellungen zeigen ja "Noto Sans" bzw. "Hack" für Monospace. Kann man dies eigentlich auch mittels Terminal festlegen? In welcher Konfigurationsdatei wird das gespeichert?

whiizy
Beiträge: 672
Registriert: 23.07.2011 22:09:37

Re: Zeichenkodierung

Beitrag von whiizy » 13.05.2022 10:22:19

kalamazoo hat geschrieben: Frage: wird bei euch bei dem Befehl # unicode U+1F534 in der Konsole u.a. tatsächlich ein roter Kreis 🔴 im CLI dargestellt oder nur ein leeres Rechteck ▭?
Nur weil du gefragt hast, zum Vergleich, nicht etwa weil ich das alles durchschaue:

- Das Tool unicode war auf meinem Bullseye (dist-upgrade von Buster) nicht installiert, habe ich nachinstalliert.
- Gehe ich per ssh Konsole auf diesen PC und gebe dein Kommando ein, bekomme ich auch ein Rechteck in der dritten Ausgabezeile.
- Bin ich direkt auf dem KDE-Desktop des PC und gebe im Terminalprogramm "Konsole" dein Kommando ein, erscheint in der dritten Ausgabezeil ein grauer, vertikal gestreifter Kreis :)

Wusste bisher gar nicht, daß farbige Symbole/Icons in Terminalfenstern überhaupt möglich sind, habe ich irgendwie noch nie benötigt. War bisher mit ASCII-Zeichen eigentlich ganz zufrieden.

kalamazoo
Beiträge: 288
Registriert: 28.08.2017 11:31:49

Re: Zeichenkodierung

Beitrag von kalamazoo » 13.05.2022 13:51:01

whiizy hat geschrieben: ↑ zum Beitrag ↑
13.05.2022 10:22:19
Nur weil du gefragt hast, zum Vergleich, nicht etwa weil ich das alles durchschaue:
- Das Tool unicode war auf meinem Bullseye (dist-upgrade von Buster) nicht installiert, habe ich nachinstalliert.
Danke für Deine Antwort und das Ausprobieren, whiizy!

Durchschauen tu ich das Ganze auch nicht. Ich nehme an, ich habe vor Jahren die globale Anzeige von Sonderzeichen, Emojis, etc. zufällig und ungewollt aktiviert. Das war mir am Anfang auch relativ egal. Dann fand ich das optisch sehr angenehm, denn
1. so wie etwa bei Firefox die geöffneten Websites vor ihrem Namen mittels Symbolen erkennbar sind, waren dies für mich wichtige geöffnete Dateien nicht nur in Kate, etc., sondern auch in den aufgelisteten Verzeichnissen von Dolphin (der rote Punkt oder die gelbe Raute fallen bei dutzenden Textdateien mit demselben Liniensymbol einfach optisch schneller ins Auge)
2. zum Markieren von Dateien zu bestimmten Themenbereichen konnte man einfach ein Sonderzeichen in den Dateinamen einfügen und jede Kategorie dann per KFind leicht anzeigen lassen, gleichgültig ob es sich um Text, Spreadsheets, Bilder oder sonstige Formate handelte (also z.B. 🐬 für alle Dateien mit Bezug zu Delphinen, 🏯 Japan, 📇 Büro und 📈 Wertpapiermarkt) [alle Beispiele sind erfunden und dienen nur zur Illustration!]
3. der wichtigste Grund: meine kleine Tochter konnte endgültig davon überzeugen werden, dass Linux das bessere Betriebssystem ist, nachdem ich eine Datei mit einem Teddybär 🐨 abgespeichert habe (man sieht, dass es hier sogar um die Zukunft von Linux geht!)

Bei der Neuinstallation von Bullseye vor mehr als einem halben Jahr dachte ich, dass das irgendwo eine nebbiche Einstellung ist, auf die ich irgendwann draufkommen werde (ich bin auf dem GUI nicht besonders bewandert). Mittlerweile habe ich so ziemlich alles, was ich im Web an CLI-Tools dazu gefunden habe und einigermaßen verstanden habe, installiert und ausprobiert (u.a. unicode) ...
whiizy hat geschrieben: ↑ zum Beitrag ↑
13.05.2022 10:22:19
- Gehe ich per ssh Konsole auf diesen PC und gebe dein Kommando ein, bekomme ich auch ein Rechteck in der dritten Ausgabezeile.
- Bin ich direkt auf dem KDE-Desktop des PC und gebe im Terminalprogramm "Konsole" dein Kommando ein, erscheint in der dritten Ausgabezeil ein grauer, vertikal gestreifter Kreis :)
Ja, da werden die Glyphs verschieden gerendert (was was bewirkt und warum, konnte ich bisher nicht wirklich klären; ich habe oben einige sich offensichtlich widersprechende Ausgaben angeführt). Den zugehörigen Fontsatz festzustellen, ist gar nicht so einfach. Ich habe im Web ein paar Skripts gefunden, mit denen das geht, auch das Kommando # xev ist hilfreich, aber unübersichtlich. KDE Font Management zeigt vieles gar nicht an. Am besten finde ich "Font Manager", der sehr strukturiert aufgebaut ist, und von Basic Latin U+0000 bis Supplementary Private Use Area U+100000 alle Unicode Blocks anführt, die man in allen jeweils installierten Zeichensätzen darstellen kann. Welche installierten Fonts eine bestimmte Glyphe enthalten, kann man durch # fc-list :charset=1f354 herausfinden. # fc-match --format='%{charset}\n' NotoColorEmoji gibt die Bereiche an, die von einer Glyph-Liste abgedeckt werden. # fc-match -s monospace gibt die Fallback Fonts für fehlende Glyphs an (wiederum keine Ahnung, wo das festgelegt ist und wie das funktioniert).

Neben # unicode 🔴 findet auch # printf %s 🔴 | perl -CLS -Mcharnames=:full -lne 'print charnames::viacode(ord) for /./g' die allgemeine Bezeichnung einer bestimmten Glyphe. Eine sehr informative Website ist übrigens https://codepoints.net/
whiizy hat geschrieben: ↑ zum Beitrag ↑
13.05.2022 10:22:19
Wusste bisher gar nicht, daß farbige Symbole/Icons in Terminalfenstern überhaupt möglich sind, habe ich irgendwie noch nie benötigt. War bisher mit ASCII-Zeichen eigentlich ganz zufrieden.
Das kenne ich. Ich fand diese ganzen Emojis in E-Mails, Websites und Foren auch meist unglaublich kindisch. Aber einmal mittels Zeichensätzen probiert, macht es richtiggehend süchtig :D :P :THX:

Antworten