Kuruluş modu tablosundaki sütunları Japonca yazı tipleriyle hizalama


12

Japonca ve İngilizce'yi aynı kuruluş modu tablosunda (sabit genişlikli yazı tipleri kullanan) nasıl karıştırabilirim? Gibi bir şey:

| mmmmmm | |
| は ど う デ シ ウ | |
| ハ ー フ | ハ ー フ |

hizalanmayacak. Emacs, Japonca karakterleri sadece% 10 daha büyük olduklarında bir karakter olarak sayar.

Bir sütunun genişliği piksel olarak ayarlanabilir mi? <10> genişliğini ayarlayacağını biliyorum, ama bu sabit değil genişlik harfleri sayılır çünkü bu yardımcı olmaz.

Sorun temel olarak emacs'ın sütunları nasıl hizaladığıdır (yazı tipi genişliğini kullanarak).


C-c C-cHücrede iken tabloları hizalamayı denediniz mi? Örneğini bir org modu arabelleğine yapıştırdım, vurdum C-c C-cve her şey güzel bir şekilde hizalandı.
elethan

Bu muhtemelen kuruluş moduna eklenmesi gereken bir şeydir. Bunu gnu.org/software/emacs/manual/html_node/elisp/… 'de:align-to açıklanan display özelliğini kullanarak elde etmek mümkün olabilir .
legoscia

@elethan: evet, bazı örnekler Batı yazı tiplerinin, yüz boyutunun ve bazı Japonca metinlerin belirli bir kombinasyonuyla çalışır. Emacs, örnekleri yukarıdaki gibi hizalamaya çalışır ve bazen doğru yapar. Ancak, bu sadece bir şans meselesidir. Genel olarak, emacs bunun için kördür.
Quora Feans

Bunun için tek aralıklı bir yazı tipine ihtiyacınız yok mu? Bu durumda , kullanabileceğiniz tek aralıklı bir Japon yazı tipine sahip olmanız koşuluyla stackoverflow.com/q/3758139/4050592 yardımcı olacaktır.
Andrew Swann

Yanıtlar:


5

Bu, kullandığınız yazı tiplerine bağlıdır. Ve Elisp'in piksel seviyesi hizalama özelliğine sahip olduğunu sanmıyorum.

Kuruluş, string-widthyerine dize genişliğini hesaplar length. string-widthASCII ve Yarım genişlik CJK karakterleri için 1, Tam genişlik karakterleri için 2 değerini döndürür. Aşağıdaki kodu değerlendirin size gösterecektir:

(string-width "m")
1
(string-width "ハ")
1
(string-width "は")
2

Artık, Org modu sting özelliğinden doğru yanıtı almasına ve dizelerin etrafına pedler eklemesine rağmen, Emacs ekran motorunun bu bitlerin ekranda gittiği yere yerleştirilmesidir.

Emacs display engine, temel işletim sisteminden font bilgilerini alır. Karmaşık sorunu basitleştirmek için, yapılandırmanızla birlikte mgenişliğinin 5 piksel ve "は" 10 olduğunu varsayalım. Bu durumda, Org modunun varsayımı ("of" " m "), ekranınızdaki gerçek piksellerle eşleşir.

Bunun yerine, yazı tipi yapılandırmanızda "m" için 7 piksel ve "は" için 10 piksel varsa işler eşleşmez. Ayrıca Org modu veya Ekran motoru yapamaz. Yapılandırmanız gereği söylediklerini yaptılar.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.