saya tidak pernah bisa mendapatkan terminal saya untuk menampilkan simbol unicode. misalnya, sebelum saya memiliki os saya sekarang, saya memetakan ctrl + a ke yunani Anda di vim, dan itu bekerja di komputer lain, tetapi tidak pada xterm saya saat ini. di sini adalah bagian yang relevan dari saya .vimrc
:
set encoding=utf-8
"map control-a to mu
imap <C-a> <C-k>m*
juga, saya perlu menampilkan persamaan sympy di python, dan ini bekerja di komputer lain, tetapi tidak pada xterm saya saat ini. alih-alih ini:
$ python
Python 2.7.3 (default, Mar 14 2014, 11:57:14)
[GCC 4.7.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import sympy
>>> x = sympy.symbols('x')
>>> sympy.init_printing()
>>> (sympy.sqrt(x**3/(x+1)), 1)
⎛ _______ ⎞
⎜ ╱ 3 ⎟
⎜ ╱ x ⎟
⎜ ╱ ───── , 1⎟
⎝╲╱ x + 1 ⎠
saya mendapatkan ini:
>>> (sympy.sqrt(x**3/(x+1)), 1)
n ------- n
n n 3 n
n n x n
n n ───── , 1n
nnnn x + 1 n
Infact tampaknya hanya menggunakan n
karakter setiap kali itu tidak dapat menampilkan karakter unicode.
Aku berlari xterm dari ~/.xinitrc
berkas dan pengaturan beberapa font dan warna untuk terminal di ~/.Xresources
. di sini adalah semua informasi yang relevan yang dapat saya pikirkan:
$ uname -a
Linux mypcname 3.2.0-4-amd64 #1 SMP Debian 3.2.60-1+deb7u3 x86_64 GNU/Linux
$ xterm -version
XTerm(278)
$ cat ~/.xinitrc
#!/bin/bash
#update the xterm colors, font size, etc
[[ -f ~/.Xresources ]] && xrdb -merge ~/.Xresources
# run the window manager in the background first
metacity &
# get the window manager process id
wm_pid=$!
# wait a little while for the window manager to load (extend this if the xterm is not being properly maximised)
sleep 2
# run the xterm in fullscreen
#xterm +u8 -js -fullscreen &
xterm -en en_AU.UTF-8 -js -fullscreen &
# do not let the window manager become a zombie
wait $wm_pid
# this would run xterm first, then the window manager. doesn't maximise properly the first time startx is run
#xterm -fullscreen &
#exec mutter
$ cat ~/.Xresources
! see man xterm under the resources heading for explanations
! run `xrdb -merge ~/.Xresources` after altering this file
! run `xrdb -query -all` to see the current settings
xterm.vt100.faceName: Terminus
xterm.vt100.faceSize: 14
! do not display bold fonts in bold
xterm.vt100.AllowBoldFonts: false
! display bold fonts in a different color to make them stand out
xterm.vt100.colorBDMode: true
! use green as the bold color (same as in ~/.bashrc)
xterm.vt100.colorBD: #98E34D
! cols x lines ... update with values from $(echo $COLUMNS) and $(echo $LINES)
xterm.vt100.geometry: 126x52
! dark green foreground (same as in ~/.bashrc)
*foreground: #4E9A06
! black background
*background: #000000
! scroll quickly
xterm*fastScroll: true
! enable utf-8 encoding
xterm*locale: true
xterm*utf8: 1
! flash the current line instead of making the bell sound
*visualBell: true
*visualBellLine: true
! black
*color0: #2E3436
! darkred
*color1: #CC0000
! dark green
*color2: #4E9A06
! brown
*color3: #C4A000
! darkblue
*color4: #3465A4
! darkmagenta
*color5: #75507B
! darkcyan
*color6: #06989A
! lightgrey
*color7: #D3D7CF
! darkgrey
*color8: #555753
! red
*color9: #EF2929
! green
*colorA: #8AE234
! yellow
*colorB: #FCE94F
! blue
*colorC: #729FCF
! magenta
*colorD: #AD7FA8
! cyan
*colorE: #34E2E2
! white
*colorF: #EEEEEC
$ tail -10 .bashrc
PATH=/usr/local/bin:/usr/bin:/bin:/sbin
export LC_ALL=en_AU.UTF-8
export LANG=en_AU.UTF-8
export LANGUAGE=en_AU.UTF-8
# final logon actions:
# go straight to x on login. only do this for tty1 so that we can still use the other tty consoles without starting x. also only do this when there is not already a display, otherwise the xterm will try and do this after x starts aswell
[[ -z $DISPLAY ]] && [[ $(tty) = /dev/tty1 ]] && startx
$ locale
LANG=en_AU.UTF-8
LANGUAGE=en_AU.UTF-8
LC_CTYPE="en_AU.UTF-8"
LC_NUMERIC="en_AU.UTF-8"
LC_TIME="en_AU.UTF-8"
LC_COLLATE="en_AU.UTF-8"
LC_MONETARY="en_AU.UTF-8"
LC_MESSAGES="en_AU.UTF-8"
LC_PAPER="en_AU.UTF-8"
LC_NAME="en_AU.UTF-8"
LC_ADDRESS="en_AU.UTF-8"
LC_TELEPHONE="en_AU.UTF-8"
LC_MEASUREMENT="en_AU.UTF-8"
LC_IDENTIFICATION="en_AU.UTF-8"
LC_ALL=en_AU.UTF-8
$ printenv XTERM_LOCALE
en_AU.UTF-8
$ xrdb -query -all
*background: #000000
*color0: #2E3436
*color1: #CC0000
*color2: #4E9A06
*color3: #C4A000
*color4: #3465A4
*color5: #75507B
*color6: #06989A
*color7: #D3D7CF
*color8: #555753
*color9: #EF2929
*colorA: #8AE234
*colorB: #FCE94F
*colorC: #729FCF
*colorD: #AD7FA8
*colorE: #34E2E2
*colorF: #EEEEEC
*foreground: #4E9A06
*visualBell: true
*visualBellLine: true
xterm*fastScroll: true
xterm*locale: true
xterm*utf8: 1
xterm.vt100.AllowBoldFonts: false
xterm.vt100.colorBD: #98E34D
xterm.vt100.colorBDMode: true
xterm.vt100.faceName: Terminus
xterm.vt100.faceSize: 14
xterm.vt100.geometry: 126x52
bagaimana saya bisa membuat utf-8 bekerja untuk menampilkan simbol yunani dalam vim dan persamaan dalam sympy
?
informasi tambahan yang diminta
$ echo $TERM
xterm
$ appres XTerm
*form.Thickness: 0
*tekMenu*tekreset*Label: RESET
*tekMenu*tektext2*Label: #2 Size Characters
*tekMenu*tekhide*Label: Hide Tek Window
*tekMenu*tekcopy*Label: COPY
*tekMenu*tektext3*Label: #3 Size Characters
*tekMenu*vtshow*Label: Show VT Window
*tekMenu*tektextsmall*Label: Small Characters
*tekMenu*vtmode*Label: Switch to VT Mode
*tekMenu*tektextlarge*Label: Large Characters
*tekMenu*tekpage*Label: PAGE
*tekMenu.Label: Tek Options
*mainMenu*redraw*Label: Redraw Window
*mainMenu*sunKeyboard*Label: VT220 Keyboard
*mainMenu*terminate*Label: Send TERM Signal
*mainMenu*backarrow key*Label: Backarrow Key (BS/DEL)
*mainMenu*logging*Label: Log to File
*mainMenu*hpFunctionKeys*Label: HP Function-Keys
*mainMenu*kill*Label: Send KILL Signal
*mainMenu*num-lock*Label: Alt/NumLock Modifiers
*mainMenu*print-immediate*Label: Print-All Immediately
*mainMenu*scoFunctionKeys*Label: SCO Function-Keys
*mainMenu*quit*Label: Quit
*mainMenu*alt-esc*Label: Alt Sends Escape
*mainMenu*print-on-error*Label: Print-All on Error
*mainMenu*tcapFunctionKeys*Label: Termcap Function-Keys
*mainMenu*meta-esc*Label: Meta Sends Escape
*mainMenu*toolbar*Label: Toolbar
*mainMenu*print*Label: Print Window
*mainMenu*suspend*Label: Send STOP Signal
*mainMenu*delete-is-del*Label: Delete is DEL
*mainMenu*print-redir*Label: Redirect to Printer
*mainMenu*fullscreen*Label: Full Screen
*mainMenu*continue*Label: Send CONT Signal
*mainMenu*oldFunctionKeys*Label: Old Function-Keys
*mainMenu*securekbd*Label: Secure Keyboard
*mainMenu*interrupt*Label: Send INT Signal
*mainMenu*8-bit control*Label: 8-Bit Controls
*mainMenu*allowsends*Label: Allow SendEvents
*mainMenu*sunFunctionKeys*Label: Sun Function-Keys
*mainMenu*hangup*Label: Send HUP Signal
*mainMenu.Label: Main Options
*VT100.utf8Fonts.font4: -misc-fixed-medium-r-normal--13-120-75-75-c-80-iso10646-1
*VT100.utf8Fonts.font2: -misc-fixed-medium-r-normal--8-80-75-75-c-50-iso10646-1
*VT100.utf8Fonts.font6: -misc-fixed-medium-r-normal--20-200-75-75-c-100-iso10646-1
*VT100.utf8Fonts.font5: -misc-fixed-medium-r-normal--18-120-100-100-c-90-iso10646-1
*VT100.utf8Fonts.font3: -misc-fixed-medium-r-normal--14-130-75-75-c-70-iso10646-1
*VT100.utf8Fonts.font: -misc-fixed-medium-r-semicondensed--13-120-75-75-c-60-iso10646-1
*VT100.font4: 7x13
*VT100.font2: 5x7
*VT100.font6: 10x20
*VT100.font5: 9x15
*VT100.font3: 6x10
*VT100.font1: nil2
*vtMenu*selectToClipboard*Label: Select to Clipboard
*vtMenu*reversewrap*Label: Enable Reverse Wraparound
*vtMenu*softreset*Label: Do Soft Reset
*vtMenu*cursesemul*Label: Enable Curses Emulation
*vtMenu*autolinefeed*Label: Enable Auto Linefeed
*vtMenu*hardreset*Label: Do Full Reset
*vtMenu*visualbell*Label: Enable Visual Bell
*vtMenu*appcursor*Label: Enable Application Cursor Keys
*vtMenu*clearsavedlines*Label: Reset and Clear Saved Lines
*vtMenu*bellIsUrgent*Label: Enable Bell Urgency
*vtMenu*appkeypad*Label: Enable Application Keypad
*vtMenu*tekshow*Label: Show Tek Window
*vtMenu*poponbell*Label: Enable Pop on Bell
*vtMenu*scrollbar*Label: Enable Scrollbar
*vtMenu*scrollkey*Label: Scroll to Bottom on Key Press
*vtMenu*tekmode*Label: Switch to Tek Mode
*vtMenu*scrollttyoutput*Label: Scroll to Bottom on Tty Output
*vtMenu*jumpscroll*Label: Enable Jump Scroll
*vtMenu*cursorblink*Label: Enable Blinking Cursor
*vtMenu*vthide*Label: Hide VT Window
*vtMenu*allow132*Label: Allow 80/132 Column Switching
*vtMenu*reversevideo*Label: Enable Reverse Video
*vtMenu*titeInhibit*Label: Enable Alternate Screen Switching
*vtMenu*altscreen*Label: Show Alternate Screen
*vtMenu*keepSelection*Label: Keep Selection
*vtMenu*autowrap*Label: Enable Auto Wraparound
*vtMenu*activeicon*Label: Enable Active Icon
*vtMenu.Label: VT Options
*SimpleMenu*menuLabel.font: -adobe-helvetica-bold-r-normal--*-120-*-*-*-*-iso8859-*
*SimpleMenu*menuLabel.vertSpace: 100
*SimpleMenu*Sme.height: 16
*SimpleMenu*BackingStore: NotUseful
*SimpleMenu*HorizontalMargins: 16
*SimpleMenu*Cursor: left_ptr
*SimpleMenu*borderWidth: 2
*menubar.borderWidth: 0
*tek4014*fontLarge: 9x15
*tek4014*font2: 8x13
*tek4014*font3: 6x13
*tek4014*fontSmall: 6x10
*MenuButton*borderWidth: 0
*fontMenu*render-font*Label: TrueType Fonts
*fontMenu*fontdefault*Label: Default
*fontMenu*font6*Label: Huge
*fontMenu*allow-window-ops*Label: Allow Window Ops
*fontMenu*utf8-mode*Label: UTF-8 Encoding
*fontMenu*font1*Label: Unreadable
*fontMenu*fontescape*Label: Escape Sequence
*fontMenu*utf8-fonts*Label: UTF-8 Fonts
*fontMenu*fontsel*Label: Selection
*fontMenu*allow-bold-fonts*Label: Bold Fonts
*fontMenu*utf8-title*Label: UTF-8 Titles
*fontMenu*font-linedrawing*Label: Line-Drawing Characters
*fontMenu*font2*Label: Tiny
*fontMenu*allow-color-ops*Label: Allow Color Ops
*fontMenu*font-doublesize*Label: Doublesized Characters
*fontMenu*font3*Label: Small
*fontMenu*allow-font-ops*Label: Allow Font Ops
*fontMenu*font-loadable*Label: VT220 Soft Fonts
*fontMenu*font4*Label: Medium
*fontMenu*allow-tcap-ops*Label: Allow Termcap Ops
*fontMenu*font-packed*Label: Packed Font
*fontMenu*font5*Label: Large
*fontMenu*allow-title-ops*Label: Allow Title Ops
*fontMenu.Label: VT Fonts
*colorD: #AD7FA8
*color5: #75507B
*backarrowKeyIsErase: true
*colorE: #34E2E2
*color6: #06989A
*ptyInitialErase: true
*colorF: #EEEEEC
*background: #000000
*color7: #D3D7CF
*saveLines: 1024
*color8: #555753
*color0: #2E3436
*foreground: #4E9A06
*IconFont: nil2
*color9: #EF2929
*color1: #CC0000
*visualBell: true
*colorA: #8AE234
*color2: #4E9A06
*visualBellLine: true
*colorB: #FCE94F
*color3: #C4A000
*colorC: #729FCF
*color4: #3465A4
$ xterm -u8 -fa "DejaVu Sans Mono"
# the following is typed in the resulting terminal:
$ echo -e "\xE2\x98\xA0"
n
# however when i copy the result from `echo -e "\xE2\x98\xA0"`
# into my browser, i get this: ☠ (a skull) but it does not show
# up as a skull in my xterm
$ lsof -p $PPID | grep fonts
xterm 5990 me mem REG 254,1 4971 13501810 /usr/share/fonts/X11/misc/ter-u18b_iso-8859-1.pcf.gz
xterm 5990 me mem REG 254,1 4897 13505403 /usr/share/fonts/X11/misc/ter-u18n_iso-8859-1.pcf.gz
saya juga berlari $ fc-list
tetapi hasilnya terlalu besar untuk disisipkan ke pertanyaan ini. jadi saya taruh di sini
apa yang ditampilkan di browser saya:
/usr/share/fonts/truetype/freefont/FreeSansBold.ttf: FreeSans:style=Bold,получерен,negreta,tučné,fed,Fett,Έντονα,Negrita,Lihavoitu,Gras,Félkövér,Grassetto,Vet,Halvfet,Pogrubiony,Negrito,gros,Полужирный,Fet,Kalın,huruf tebal,жирний,Krepko,treknraksts,pusjuodis,đậm,Lodia,धृष्ट
apa yang saya lihat di terminal saya:
/usr/share/fonts/truetype/freefont/FreeSansBold.ttf: FreeSans:style=Bold,nnnnnnnnn,negreta,tunné,fed,Fett,nnnnnn,Negrita,Lihavoitu,Gras,Félkövér,Grassetto,Vet,Halvfet,Pogrubiony,Negrito,gros,nnnnnnnnnn,Fet,Kalın,huruf tebal,nnnnnn,Krepko,treknraksts,pusjuodis,nậm,Lodia,nnn
Menariknya, beberapa karakter "spesial" muncul di terminal saya, tetapi sebagian besar dilacak oleh n
. Anda dapat melihat dalam output sebelumnya bahwa tidak ada yang получерен
dapat ditampilkan, tetapi karakter akhir tučné
dapat ditampilkan (sementara tengah č
tidak dapat - itu diganti oleh n
)
sesuai komentar @ apaul tampaknya xterm tidak memuat font yang tepat. cobalah untuk mengatur kelas dummy sehingga tidak memuat sumber daya xterm:
$ xterm -class Foo -name foo -u8 -fa "DejaVu Sans Mono:style=Book"
$ # the following commands are all executed in the resulting terminal:
$ echo -e "\xE2\x98\xA0"
☠
$ # the above skull actually shows up now. and so does the unicode
$ # output from sympy and also vi can display greek symbols now :)
semua yang tersisa adalah mencari tahu mengapa xterm tidak dapat mengatur font menggunakan ~/.Xresoureces
, dan untuk membuatnya bekerja. sepertinya ada sesuatu yang harus mengesampingkan pengaturan font?
sebenarnya saya hanya berpikir untuk mencoba perintah di atas dengan font terminus, dan sepertinya inilah masalahnya:
$ xterm -class Foo -name foo -u8 -fa "Terminus"
$ # the following commands are all executed in the resulting terminal:
$ echo -e "\xE2\x98\xA0"
n
mungkin terminus tidak terpasang dengan benar? atau sedang dipetakan ke sesuatu yang lain. bagaimana saya bisa mengetahuinya?
-fa "DejaVu Sans Mono:size=11:antialias=true"
Namun, saya tidak mengerti Anda-js
dan-fullscreen
opsi. Versi xterm saya tidak memahaminya.xterm -version
Output sayaX.Org 6.8.99.903(253)
.lsof -p $PPID | grep fonts
dan memeriksa daftar font yang dapat dilihat oleh xtermfc-list
.xterm -class Foo -name foo -u8 -fa "DejaVu Sans Mono:style=Book"
? (di sini kita menetapkan kelas dummy dan nama sehingga tidak memuatXTerm*
sumber daya.)Jawaban:
Menulis di 2016, berbicara tentang xterm patch # 278 (dirilis pada 2012):
xterm menggunakan font tunggal, daripada set font yang didukung oleh beberapa terminal lainnya. Karakter pseudo-grafik dalam ini (disisipkan dari xterm):
yang tidak disediakan oleh font TypeType ditentukan di sini:
Terminal lain, mengingat font itu akan menyediakan karakter tersebut dari font lain .
Cara untuk membuat xterm bekerja adalah
Yang terakhir ini ditujukan untuk sebagian besar pengguna dengan pengaturan default
locale
sumber daya: xterm akan (biasanya) menggunakan pengkodean UTF-8. Tetapi perilaku standarnya adalah kompatibel dengan VT100, karenanya penggunaan font yang kompatibel dengan ISO-8859-1.n
adalah U + 239B, U + 239C, U + 239D, U + 239E, U + 23A0.n
seperti yang dijelaskan dalam pertanyaan.Itu terjadi karena (walaupun xterm tahu bahwa mesin terbang hilang), ia telah mencetak string menggunakan font, dengan asumsi bahwa (seperti kebanyakan font lain) entri yang hilang akan ditampilkan sebagai kosong . Dalam hal ini, pustaka freetype tampaknya memetakan byte orde rendah dari nilai Unicode ke dalam rentang yang didukung Terminus. Itu terjadi pada rentang yang ditampilkan font
n
(untuk "tidak ada karakter"):Solusi cepat menggunakan
uxterm
skrip, yang memilih font yang berbeda dan memastikan bahwa pengkodean UTF-8 digunakan.Bacaan lebih lanjut:
uxterm
- Emulator terminal X untuk lingkungan Unicode (UTF-8)uxterm
)Di atas berbicara tentang xterm patch # 278 yang berusia empat tahun pada 2016. Pengembangan xterm sedang berlangsung, dan dimulai dengan patch # 338 (akhir 2018) ada dukungan untuk fontet TrueType. Berikut adalah tangkapan layar menggunakan pengaturan sumber daya OP dari xterm patch # 342 (# 343 mungkin akan keluar "segera"):
Menggunakan
-report-fonts
opsi, saya melihat bahwa itu memuat file font ini (memperlakukan huruf tebal / miring sebagai "sama" seperti biasa , dan menggunakan font kedua untuk karakter khusus):Jumlah font yang sebenarnya tergantung pada apa yang ingin Anda lakukan. Dalam menguji rentang nilai Unicode yang ada, mungkin menggunakan beberapa lusin font.
sumber
Solusi dari komentar:
uxterm
xterm -u8
-iso10646-1
Misalnya, untuk
xterm
(kelas-XXterm
) dan font Terminus, Anda dapat menambahkan ke ~ / .XresourcesUntuk menemukan font dan spesifikasi font mereka diinstal pada sistem Anda, lihat
/usr/share/fonts/*/*.dir
file. Setelah diedit~/.Xresources
, muat denganxrdb -merge ~/.Xresources
.sumber
Sayangnya, saya juga belum bisa mendapatkan dukungan unicode yang terkonfigurasi dengan benar
xterm
. Sebagai solusinya, saya akhirnya menginstalrxvt
, yang tersedia dari rpmforge pada EL distro. Ada juga versi unicode-256color dari program ini, yang sangat bagus untuk saya. Berikut uraiannya:ArchWiki memiliki informasi berguna seperti biasa pada konfigurasi dan kasus penggunaan.
sumber
rxvt-unicode
jugaBagaimana dengan menggunakan font TrueType seperti di bawah ini? Saya tidak bisa mendapatkan
-fn *-*-...
opsi standar dengan xterm, tetapi ini berfungsi dengan baik.Font Inconsolata dapat diunduh di sini
sumber