tôi chưa bao giờ có thể làm cho thiết bị đầu cuối của tôi hiển thị các ký hiệu unicode. ví dụ, trước khi tôi có hệ điều hành hiện tại, tôi đã ánh xạ ctrl + a sang tiếng Hy Lạp mu trong vim và nó hoạt động trên các máy tính khác, nhưng không phải trên xterm hiện tại của tôi. đây là phần có liên quan của tôi .vimrc
:
set encoding=utf-8
"map control-a to mu
imap <C-a> <C-k>m*
Ngoài ra, tôi cần xuất các phương trình sympy trong python và nó hoạt động trên các máy tính khác, nhưng không phải trên xterm hiện tại của tôi. thay vì điều này:
$ 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 ⎠
tôi hiểu rồi
>>> (sympy.sqrt(x**3/(x+1)), 1)
n ------- n
n n 3 n
n n x n
n n ───── , 1n
nnnn x + 1 n
thực ra nó dường như chỉ sử dụng n
ký tự bất cứ khi nào nó không thể hiển thị một ký tự unicode.
Tôi đang chạy xterm từ một ~/.xinitrc
tệp và đặt một số phông chữ và màu cho thiết bị đầu cuối ~/.Xresources
. đây là tất cả các thông tin liên quan tôi có thể nghĩ ra:
$ 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
Làm thế nào tôi có thể làm cho utf-8 hoạt động để hiển thị các biểu tượng Hy Lạp trong vim và phương trình trong sympy
?
yêu cầu thêm thông tin
$ 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
tôi cũng đã chạy $ fc-list
nhưng đầu ra quá lớn để dán vào câu hỏi này. vì vậy tôi đã đặt nó ở đây
những gì nó hiển thị trong trình duyệt của tôi:
/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,धृष्ट
những gì tôi thấy trong thiết bị đầu cuối của tôi:
/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
thú vị thay, một số nhân vật "đặc biệt" xuất hiện trong thiết bị đầu cuối của tôi, nhưng hầu hết đều được thay thế bởi n
. bạn có thể thấy trong đầu ra trước đó không ai получерен
có thể hiển thị, nhưng ký tự cuối cùng tučné
có thể được hiển thị (trong khi ở giữa č
không thể - nó được thay thế bằng n
)
theo nhận xét của @ apaul, có vẻ như xterm không tải đúng phông chữ. hãy thử thiết lập một lớp giả để nó không tải tài nguyên 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 :)
tất cả những gì còn lại là tìm hiểu tại sao xterm không thể thiết lập phông chữ bằng cách sử dụng ~/.Xresoureces
và để nó hoạt động. Có vẻ như một cái gì đó phải được ghi đè cài đặt phông chữ?
Trên thực tế, tôi chỉ nghĩ sẽ thử lệnh trên với phông chữ cuối, và có vẻ như đây là vấn đề:
$ xterm -class Foo -name foo -u8 -fa "Terminus"
$ # the following commands are all executed in the resulting terminal:
$ echo -e "\xE2\x98\xA0"
n
có lẽ ga cuối không được cài đặt đúng cách? hoặc đang được ánh xạ tới một cái gì đó khác. Làm thế nào tôi có thể tìm ra điều đó?
-fa "DejaVu Sans Mono:size=11:antialias=true"
Tuy nhiên, tôi không hiểu các tùy chọn -js
và của bạn -fullscreen
. Phiên bản xterm của tôi không hiểu chúng. xterm -version
Đầu ra của tôi X.Org 6.8.99.903(253)
.
lsof -p $PPID | grep fonts
và kiểm tra danh sách các phông chữ mà xterm có thể nhìn thấy fc-list
.
xterm -class Foo -name foo -u8 -fa "DejaVu Sans Mono:style=Book"
không (ở đây chúng tôi đặt một lớp giả và tên để nó không tải XTerm*
tài nguyên.)