Powerline Patched Fonts บน OSX 10.9.3 - iTerm2 และ Chrome


18

ฉันกำลังมองหาโซลูชันที่ใช้งานได้สำหรับการแสดงตัวละคร Powerline บน OSX ใน iTerm2 และ Chrome มีจำนวนมากของเอกสารรอบฉันได้พยายามที่จะใช้วิธีการหลายวิธีคือไม่มีใครดูเหมือนจะทำงานได้อย่างถูกต้องเพื่อให้ห่างไกล (แม้ว่าอักษร prepatched กับ fontbook บางส่วนทำงาน) รายละเอียดรวมอยู่ด้านล่าง

  1. มีวิธีการทำงานที่ทำให้ร่ายมนตร์สายไฟฟ้าสามารถแสดงผลได้อย่างถูกต้องใน iTerm2 บน OSX 10.9.3 หรือไม่?
  2. ร่ายมนตร์สายไฟฟ้าควรแสดงผลอย่างถูกต้องในหน้าเว็บหรือไม่ ความคิดใด ๆ ว่าทำไมพวกเขาถึงไม่ได้และฉันจะแก้ไขได้อย่างไร

การแสดงผลของตัวละครเหล่านี้ทำงานอย่างไร (ในระดับระบบ / แอปพลิเคชัน) มันแตกต่างจากแอปพลิเคชันไปยังแอปพลิเคชันหรือไม่ ในโครเมี่ยมถ้าแบบอักษรปัจจุบันไม่มีการผูกสำหรับร่ายมนตร์โครเมี่ยมจะพยายามค้นหาการผูกในแบบอักษรอื่นที่มีอยู่ในระบบและใช้งานหรือไม่ มีวิธีใดที่จะให้การเชื่อมโยงสำหรับอักขระยูนิโค้ดนี้ในระดับระบบเพื่อให้พวกเขาแสดงผลโดยใช้แบบอักษรนั้นไม่ว่าแบบอักษรนั้นจะถูกใช้งานหรือไม่?

อักขระส่วนพื้นที่ Unicode

ถ้าฉันเข้าใจวิธีการทำงานของฟอนต์ที่แพตช์เข้ากันได้กับสายไฟฟ้าพวกมันจะผูกกราฟิกที่ปรับขนาดได้กับค่าเฉพาะในพื้นที่ใช้ส่วนตัวของยูนิโค้ด:

U+E0A0     Version control branch
U+E0A1     LN (line) symbol
U+E0A2     Closed padlock
U+E0B0     Rightwards black arrowhead
U+E0B1     Rightwards arrowhead
U+E0B2     Leftwards black arrowhead
U+E0B3     Leftwards arrowhead

เพื่อทดสอบสัญลักษณ์ในเทอร์มินัลฉันได้อ่านว่าสิ่งนี้ควรใช้งานได้:

echo -e "\ue0a0\ue0a1\ue0a2\ue0b0\ue0b1\ue0b2\ue0b3"

อย่างไรก็ตามมันใช้ไม่ได้สำหรับฉัน (OSX 10.9.3, iTerm2, zsh) แม้จะติดตั้งฟอนต์แบบแพตช์แบบสายไฟฟ้าและ iTerm2 ได้รับการกำหนดค่าให้ใช้แบบอักษรตัวใดตัวหนึ่งดังกล่าว

ฉันได้ลองวิธีการหลายวิธีในการติดตั้งฟอนต์ที่แพตช์แล้ว:

แบบอักษรและแบบอักษรที่เตรียมไว้

ฉันดาวน์โหลดฟอนต์จากLocaltog / powerline-fontsและติดตั้งโดยใช้ FontBook ในหน้าเดียวกันร่ายมนตร์บางตัวก็ทำออกมาได้ แต่บางอันก็ทำไม่ได้ ในหน้าอื่นไม่มีร่ายมนตร์แสดงผล:

ธีม Agnoster
(ที่มา: staticflickr.com )

เอกสาร Powerline
(ที่มา: staticflickr.com )

ใน iTerm2 (สิ่งนี้เกิดขึ้นกับแบบอักษรของ Powerline ทั้งหมดที่ฉันทดสอบ) อักขระบางตัวแสดงผล แต่ตัวอักษรอื่น ๆ ไม่ได้:

iTerm2 & zsh
(ที่มา: staticflickr.com )

ใน macvim (เทอร์มินัล) ที่ติดตั้ง vim-airline อักขระบางตัวจะเรนเดอร์ แต่บางตัวเรนเดอร์ไม่ถูกต้อง:

กลุ่มสายการบิน
(ที่มา: staticflickr.com )

fontconfig

ฉันถอนการติดตั้งฟอนต์ power-patched ทั้งหมดติดตั้ง fontconfig ด้วย homebrew ติดตั้งฟอนต์ powerline และสร้างแคชฟอนต์ใหม่:

wget -P ~/.fonts/ https://github.com/Lokaltog/powerline/raw/develop/font/PowerlineSymbols.otf
wget -P ~/.config/fontconfig/conf.d/ https://github.com/Lokaltog/powerline/raw/develop/font/10-powerline-symbols.conf
fc-cache -vf ~/.fonts

ตรวจพบแบบอักษรและ fontconfig บอกว่าติดตั้งแล้ว แต่ไม่ปรากฏใน FontBook และฉันไม่สามารถเลือกได้ใน iTerm2

หลังจากรันสิ่งนี้ฉันจะลบแบบอักษร, รันใหม่ fc-cache และถอนการติดตั้งแบบอักษร

ขณะนี้ฉันกำลังใช้แบบอักษรที่ติดตั้งไว้ล่วงหน้าในแบบอักษรซึ่งทำงานได้บางส่วน แต่ฉันหวังว่าจะมีใครบางคนสามารถช่วยฉันเข้าใจปัญหาได้ดีขึ้นเล็กน้อย

ปรับปรุง

วิธีนี้ดูเหมือนว่าจะทำให้ทุกอย่างทำงานใน iTerm2 ได้ แต่ฉันก็ยังไม่แน่ใจเกี่ยวกับปัญหาการแสดงผลของ Chrome / ระบบ

FontForge

ติดตั้งฟอนต์ฟอร์จด้วยการรวมงูหลาม:

brew install fontforge --with-python

ติดตั้ง powerline-fontpatcher:

mkdir -p ~/.local/src
git clone https://github.com/Lokaltog/powerline-fontpatcher.git ~/.local/src/powerline-fontpatcher
cd ~/.local/src/powerline-fontpatcher && python setup.py install && cd
export powerline_symbols=~/.local/src/powerline-fontpatcher/fonts/powerline-symbols.sfd

ดาวน์โหลดแก้ไขและติดตั้งแบบอักษร:

wget http://sourceforge.net/projects/sourcecodepro.adobe/files/SourceCodePro_FontsOnly-1.017.zip
unzip SourceCodePro_FontsOnly-1.017.zip

find SourceCodePro_FontsOnly-1.017/TTF -name \*.ttf -exec powerline-fontpatcher --source-font=$powerline_symbols --no-rename {} \;
mv *.ttf /Library/Fonts

คำตอบ:


12

เพียงติดตั้งฟอนต์Input Monoมาพร้อมกับการรองรับ powerline อย่างเต็มที่

ในการทำงานดังต่อไปนี้แบบอักษร Input Mono ต้องเป็นเวอร์ชัน 1.1 คุณสามารถตรวจสอบรุ่นตัวอักษรโดยไปที่Font Book → View → Show Font Infoและดูที่หมายเลขรุ่น

ด้วย Terminal.app ใช้งานได้ทันที เพียงเลือกแบบอักษรและคุณพร้อม

ด้วย iTerm2 คุณต้องแก้ไขสองสิ่ง:

  • ไปที่การตั้งค่า→โปรไฟล์→ข้อความและยกเลิกการเลือก `ใช้แบบอักษรอื่นสำหรับข้อความที่ไม่ใช่ ASCII
  • ด้านบนให้คลิกChange Fontและเลือกอินพุตโมโน นอกจากนี้คุณต้องเปลี่ยนCharacter Spacing → Verticalเป็น 110% ดูเหมือนว่า Terminal และ iTerm2 แสดงการเว้นวรรคอักขระในวิธีที่ต่างออกไป

การไม่Use a different font for non-ASCII text.ทำเครื่องหมายต่างกันสำหรับฉัน
camomileCase

2

bashโอกาสที่คุณยังไม่ได้ปรับปรุง OS X มาพร้อมกับbash < 4ดังนั้นคุณไม่สามารถprintfหรือecho -eunicode รหัส

ขั้นตอนในการอัพเดตbashด้วยhomebrew:

  1. brew install bash
  2. ค้นหาคำนำหน้าของbashการติดตั้งโดย homebrew เหมืองเป็นดังนั้นไบนารีทุบตีของฉันคือ/usr/local/Cellar/bash/4.3.30//usr/local/Cellar/bash/4.3.30/bin/bash
  3. sudo (vim|nano|emacs|etc) /etc/shells
  4. รับเส้นทางทุบตีดังกล่าวและเพิ่มลงในส่วนท้ายของรายการ(หรือแทนที่/usr/binถ้าคุณกล้าจริง ๆ )
  5. chsh
  6. เปลี่ยนShell:บรรทัดเพื่อให้ตรงกับbashเส้นทางของคุณ
  7. เริ่มต้นคำศัพท์ของคุณใหม่

และคุณควรได้รับการแก้ไข

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.