Monospaced basamaklı ve boşluklu Arial veya Tahoma yazı tipinin bir sürümü var mı?


5

Windows ile birlikte verilen Arial yazı tipindeki rakamlar, her biri aynı yatay alanı kapladıklarından monospaced edilir, ancak boşluk karakterinin "monospaced" sürümünü sağlamayı ihmal etmiş gibi görünürler. Bu, (örneğin) 12 boşlukta haklı bir rakam sütununu formatlayamayacağınız ve sağ kenarı hizalayabileceğiniz anlamına gelir. Örneğin:

         1
        12
       123
      1234
     12345
   1234567
  12345678
 123456789
1234567890 

çalışır çünkü kod örnekleri için kullanılan font, basamaklarla aynı genişliğe sahiptir. Bununla birlikte, aynı metin Arial'de gösteriliyorsa bu işe yaramaz (SU'yu yeniden biçimlendirmeyi şu anda nasıl yeneceğimi çözemiyorum çünkü gösteremem!).

Bu sadece Tahoma 8 puanıyla aldatabileceğiniz anlamına gelir, çünkü bir boşluk rakam olarak piksel sayısının tam yarısı kadardır, ancak bu karışık ve çok özeldir.

Yanıtlar:


6

Orantılı bir fontta bile rakamla aynı genişlikte olması gereken bir rakam alanı kullanmayı deneyin :

Bir şekil uzayı, tek bir tipografik figürün boyutuna eşit (tip veya harf), eksi öncü olan bir tipografik birimdir. Hangi fontun kullanıldığına bağlı olarak boyutu biraz değişebilir. Monospaced basamaklı fontlarda, bir rakamın genişliğine eşittir.


Mükemmel. Güzel bir şekilde hizalanmış para temsilleri elde etmek için bunu 'ince bir alan' ile birleştirdim. Ayrı bir cevapta açıklığa kavuşturmama izin verin.
Timo

2

Evet, bunun için para ödemeye razıysanız , monotipin satılık monospaklı bir arial çeşidi vardır .

Öte yandan, eğer iyi bir şey istiyorsanız, ücretsiz olan ve birçok durumda iyi çalışan bir sans serif fontu varsa, droid sans mono'ya bakmayı öneririm.


Hmm. Sadece rakamları ve uzayı mono istedim - tahoma ve arial orantılı metni çok beğendim. Ayrıca sağladığınız sayfadaki demo 8pt'ye düşmüyor - 12px makinemde 9pt. Ayrıca bazı nedenlerden dolayı
ekranım fontlarla uğraşıyor

2

Rakamları ve ince boşlukları binlerce ayırmak için rakam boşluğunu (kullanıcı tarafından önerilen şekilde 14848424) kullandım .

Örneğin, JavaScript veya C'de, karşılık gelen unicode karakter kodlarını bir dizenin herhangi bir yerine yazabilirsiniz:

  • \u2007: Şekil boşluğu.
  • \u202F: İnce alan.

İnce alanı binlerce ayırıcı olarak kullanmak bazı önemli avantajlara sahiptir:

  • Amaç, a ,veya kullanmanın aksine, hem ABD hem de Avrupalı ​​okuyuculara açıktır ..
  • >= 1000Boşluk gözle görülmediğinden , değerin ne olduğuna bakmaksızın ekleyebilirsiniz .
  • Para birimi işaretini değerden ayıran normal alandan daha incedir ve para birimi işaretinden sonra yalnızca bir boşluk olduğunda daha iyi görünmesini sağlar.

Aşağıda, aşağıdaki formatı elde etmek için ne yaptığımı anlatacağım ( ,bu örnekte Avrupa ondalık ayırıcısı ):

  • 1,75 €
  • 100,00 €
  • 199,97 €
  • 10 € 350,00
  • 21 € 003,18
  • 121 018,33

    1. Giriş olmayan tüm haneli karakterlerin kaldır: price.replace(/[^\d]+/g, '').
    2. 'Eksik karakterler' Sayısı: missingDigits = maxDigits - price.length.
    3. Çıkış değerini olarak ayarlayın '€'.
    4. Eksik her hane için, çıkışa bir rakam alanı ekleyin: '\u2007'.
    5. Son iki, sonra ondalık ayırıcı, sonra girişin son iki basamağı dışındaki tüm giriş basamaklarını ekleyin.
    6. Çıktının '\u202F', son altı karakterin eklediği ince bir boşluk eklenmiş son altı hariç tüm karakterlerini döndür.

Giriş, noktalama işaretleriyle veya geçersiz karakterler içeren veya olmayan bir sayının herhangi bir dize gösterimi olabilir. Çıktı yukarıda görüldüğü gibi olacaktır. İzin verilen maksimum hane sayısını seçmeniz gerekir.


Şekil çizgisi gibi bulunabilecek başka ilginç ilgili karakterlerin olduğunu unutmayın.
Timo

Bu yararlı ekstraları eklemek için orijinal cevabı düzenlemenin daha iyi olabileceğini düşünün. Yine de faydalı.
O'Rooney
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.