Wie lässt man gnome-terminal eine bestimmte Schriftart verwenden, um Interpunktionen in ihrer vollen Breite anzuzeigen? (· '' “”)


1

Ich möchte SimSun (宋体) verwenden , um Interpunkt / ·Mittelpunkt , einfache Anführungszeichen (geschweift) ‘’und doppelte Anführungszeichen (geschweift)“” in ihrer vollen Breite anzuzeigen , da es einfach ist, sie von .(Punkt) zu unterscheiden '(einfaches Anführungszeichen). "(doppeltes Anführungszeichen), und eine solche unterscheidbare Sichtbarkeit ist besonders nützlich, wenn Code mit der Eingabemethode eingegeben wird, da mit der Eingabemethode Zeichen leicht eingegeben werden können und der Code nicht kompiliert werden kann ( char *str=“will not compile”;).

Wenn Sie in gedit und geany und leafpad editor die Schriftart auf SimSun setzen, funktioniert sie wie erwartet.

Geany-Editor, SimSun-Schriftart, Formulare in voller Breite

Wenn Sie jedoch in gnome-terminal die Schriftart auf SimSun setzen, wird das erwartete Ergebnis nicht erzielt. Es scheint, dass Gnome-Terminal eine andere Schriftart verwendet, um ihre halbbreiten Formen anzuzeigen, oder es scheint, dass sie nur zusammengedrängt sind.

Gnome-Terminal, SimSun-Schriftart, halbbreite Formulare

Ich habe auch lxterminal (LXDE) und Terminal (xfce) und ROXTerm ausprobiert.

Wie können diese Terminalemulatoren Interpunktionen in ihrer gesamten Breite anzeigen, wie dies Geany tut?

Beispieltext

1234567890
·“”‘’

Unicode-Codepunkte (HEX)

   UTF16  UTF8
· 00B7   C2B7
‘ 2018   E28098
’ 2019   E28099
“ 201C   E2809C
” 201D   E2809D

Antworten:


1

Bei älteren Versionen von gnome-terminal sollten Sie eine VTE_CJK_WIDTH=wideVariable exportieren , bevor Sie die erste Instanz von gnome-terminal starten.

Neuere Versionen von gnome-terminal (wahrscheinlich ab 3.12 oder 3.14) haben dies in eine UI-Einstellung verschoben: Profileinstellungen -> Kompatibilität -> Zeichen mit mehrdeutiger Breite: Schmal (Standard) oder Breit (was Sie suchen).

Beachten Sie, dass jede komplexe Anwendung (z. B. Texteditor), die Sie in Ihrem Terminal ausführen, auch über diese Änderung benachrichtigt werden sollte, da sonst falsche Aussagen über die Position des Cursors gemacht werden und die Anzeige wahrscheinlich auseinander fällt. Mir ist keine generische Methode dafür bekannt (es könnte / sollte ein Gebietsschema geben, in dem wcwidth () 2 für diese Zeichen anstelle von 1 zurückgibt, aber ich glaube, es gibt keine), daher müssen Sie jede konfigurieren App separat (wenn sie überhaupt eine solche Konfigurationsoption haben). Einfache Dienstprogramme, die sich nicht um den Cursor kümmern, z. B. ein catBefehl, sollten ohne Änderung funktionieren.


Und um es zu verdeutlichen: Im Gnome-Terminal wird die Breite eines Zeichens (ob es eine oder zwei Zellen belegt) niemals von der Schriftart abgeleitet.
egmont

Danke vielmals!!! Die UI-Einstellung in der neueren Version von gnome-terminalfunktioniert gut (obwohl das Öffnen einer neuen Instanz erforderlich ist). VTE_CJK_WIDTH=widefunktioniert für einige andere Terminals, einschließlich lxterminal lilyterm, aber nicht mate-terminal- das von MATE Desktop (das von GNOME2 abgeleitet ist).
LiuYan 刘 研

Es sieht so aus, als ob es einen Fehler in Bash gibt, wenn VTE_CJK_WIDTH = wide: Wenn ich ·“”‘’in die Bash-Befehlszeile eingefügt habe , kann ich den Cursor nicht zum Ausgangspunkt der Befehlszeileneingabe zurückbewegen,·“”‘’
sondern

Dies ist kein Fehler in der Bash per se. Jede Anwendung, die die Cursorpositionierung ausführt, muss über die Änderung informiert sein. Vielleicht haben Sie dies in meiner Antwort verpasst, oder Sie haben nicht gedacht, dass Bash auch zu dieser Kategorie gehört. Ich glaube nicht, dass Bash dies unterstützt, und ich bin mir nicht sicher, ob dieses Feature zu Bash oder dem Gebietsschemasystem gehören sollte. Mit diesen Einstellungen sind Sie leider auf Dienstprogramme beschränkt, die einen kontinuierlichen Ausgabefluss ohne Berücksichtigung der Cursorposition erzeugen, und auf Apps, die Cursorbewegungen ausführen, jedoch Zeichen mit doppelter Breite verarbeiten können.
Egmont

Wenn ich vimvon der Bash-Befehlszeile aus laufe , kann vim das Formular in voller Breite korrekt verarbeiten (sowohl das Anzeigen als auch das Bewegen des Cursors) und verhält sich catwie Bash.
LiuYan 刘 研
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.