Bir fontu nasıl aralıklı hale getirebilirim?


14

Ben alçakgönüllülükle popüler formatta (bir yazı olduğunu varsayalım .ttf, .otfvs.), ve bunu değiştirmek için yasal haklara sahiptir. Haliyle, bu ise , normal farklı charaters ile yazı (glif?) Genişlik ve aralıkları içinde değişen. Bahsedilen yazı tipini tek aralıklı yazı tipine dönüştürmeye nasıl devam edebilirim (örneğin, tüm karakterler aynı boyuttadır, vb.)?

Mümkünse, bazı tahminleri sizin için yapabilen otomatik araçlar var mı? (Sonuçların mükemmel olması gerekmez .) Yazı tipi büyük olabilir (birçok karakter) ve düzenleme sıkıcı olabilir.

Soruna ilişkin herhangi bir öneri çok takdir edilmektedir! :)


Feragatname: Bunun basit bir howto olduğu düşünülürse üzgünüz , ancak Google'ın konu hakkında çok az bilgisi vardır ve grafik veya yazı tipleriyle fazla ilgilenmeyen bir programcı için basit değildir . Ayrıca, terminolojim kapalıysa özür dilerim ...: P


Varsa hangi yazı tipi yazılımını kullanıyorsunuz? Fontlab? Fontforge?
thomasrutter

Yanıtlar:


12

Henüz yazı tipi düzenleme yazılımınız yoksa, iyi haber, Fontforge'un ücretsiz ve açık kaynak olmasıdır. Kötü haber, nispeten yüksek bir öğrenme eğrisine ve biraz alışılmadık bir kullanıcı arayüzüne sahip olmasıdır.

Temel olarak, bir yazı tipinin tek aralık olarak kabul edilmesi için, her glifin tam olarak aynı sayıda birime kadar aynı genişlikte olması gerekir. Bu, normalde sıfır genişlik veya belirli bir genişlik (em boşlukları, kısa çizgiler vb.) Olması gereken glifleri de içerir.

"Bir yazı tipini tek aralıklı olarak nasıl işaretlerim?" SSS girişine bakın.

Tüm gliflerin genişliğini bir seferde bir kerede düzenlemek için, menüde "Metrikler" -> "Genişliği Ayarla" ya gidebilirsiniz, ancak tüm karakterler için çalışmasını beklemezdim. Muhtemelen 'W', 'M', '@' gibi tüm geniş karakterleri üst üste binmeyecek şekilde manuel olarak düzenlemeniz gerekir. Ve aksanları birleştirmek (render zamanında harflerle bir araya getirilmesi amaçlanan aksanlar) tüm konumlarını berbat edebilir (Amerikan / İngiliz olup olmadığınızı test etmek zordur).

Yazı tiplerinin nasıl oluşturulacağını ve düzenleneceğini bilen bir kişi bu görevi yerine getirebilir, ancak yine de basit olmaz.


Bir yazı tipini monospace'e dönüştürme konusunda aynı sorum var. Streatching'in kötü olacağını anlıyorum. Gerçekten aradığım şey, 1) en geniş glifi bulacağınız bir araçtır, 2) o zaman glifleri uzatmak yerine, bu genişlikte bir alana ortalanmış olmasını istiyorum. Bunu yapacak araç yok mu?
NJRandy

gnu unifont davasında @thomasrutter? (glifin 8 16 veya 16 16 olduğu bitmap yazı tipi)
user2284570

Mükemmel cevap. FontForge'un kullanıcı arayüzünden doğrudan düzenleme yapmak benim için işe yaramadı (onu öldürmeden önce saatlerce donmuş kaldı). Bunun yerine Python bağlarını kullandım. Amacım tek aralıklı yazı tipini yedek olarak kullanmaktı, bu nedenle kötü karakter aralığı ve kanama büyük sorunlar değildi. Bütün bunları ayrı bir cevapta detaylandırdım.
Clément

1
İlk öğrenirken, ücretsiz fontları düzenleyerek çok sayıda mono yazı tipi yaptım. Herhangi bir otomasyon aracı gibi, bu sadece bir başlangıç ​​noktası olmalıdır: sonuçlar gerektiği gibi ayarlanmalıdır. Fontografçıyı en hızlı öğrenme eğrisine sahip buldum . Gidin gliflere seçin Set Widthaltında Metrics(gerekirse değişiklik sonrası) bir ortalama genişliğe tüm glifleri kurmak ve nihayet şunları seçin: açılır menüden Equalise Sidebearingsaltında da Metricsem-kare motiflerle ortalamak için menü. Tabii ki: başkalarının başarılı sabit genişlikli yazı tiplerini tasarlamadaki zorlukların üstesinden nasıl geldiğini inceleyin.
Moscarda

7

thomasrutter daha fazla teknik cevap sunar; Gerçekten gerekmedikçe yapmak istediğiniz şeyi yapmaktan vazgeçirmek için bazı tipografi ilkelerini göstereceğim.

Consolas veya Courier ve ardından Corbel veya Verdana'da bir 'i' ve bir 'm' yakınlaştırın. Monospace'in çalışması için harflerin ne kadar farklı olması gerektiğine dikkat edin. Bir yazı tipini monospace'e uygun şekilde dönüştürmek çok fazla bilgi ve çalışma gerektirir. Fontları germe genel fikri, tuzlarına değer herhangi bir tasarımcı tarafından kaşlarını çattı, bu yüzden normalden yoğunlaştırılmış bir varyasyona gitmek bile tüm gliflerin yeniden çizilmesini gerektirir.

Bu nedenle, burada Consolas vs. Corbel'e bakın ve yakınlaştırıldığında, 1) harfler arasında boşluk, 2) kontur kalınlığı tutarlılığı ve 3) her harfin kutusuna nasıl oturduğuna bakın. Değişken aralıklı yüze (ikinci) kıyasla tek aralıklı yüze (ilk olarak) bakın, ardından germek ve eşit hale getirmek için boşluk açmaya çalıştığınızda ne olacağını görmek için üçüncü ve dördüncü görün. Dördüncüsü, Bayan'ı kutuya girmek için% 75'e kadar ezdi, ama şimdi Is'den çok daha zayıflar. kullanıldığında farkedilir.

Tek uzay ve değişken uzay yazı tiplerinin karşılaştırılması

Kısacası: yazı karakterleriyle uğraşmayın; beklediğinizden çok daha zorlu!


2
Evet, M gibi geniş glifleri germek, Brendan'ın işaret ettiği nedenden ötürü yeterince iyi bir çözüm değildir: dikey vuruşları diğer harflerden daha dar hale gelir ve bu kötü görünür. Kontrol noktalarını seçip hareket ettirerek glifleri elle düzenlemelisiniz. Umarım bu OP'ye bu doğru (ya da güzel) yapmanın nasıl küçük bir görev olmadığı hakkında bir fikir verir. Özellikle biraz iyi bir glif kapsama alanına sahip olmak istiyorsanız.
thomasrutter

@Brendan Bence sadece iki genişlikte glif bulunan bir bitmap yazı tipi için farklı olmalı (Benim durumumda, glifler 8 veya 16 piksel genişliğinde)
user2284570

+ 1; tam otomatik bir çeviri ummak gerçekçi değildir. Kısıtlı bağlamlarda, üçüncü resimde gösterdikleriniz gerçekten iyi çalışıyor: eksik matematiksel işleçleri bir tek aralıklı yazı tipine aktarmak istiyorsanız, bu çözüm oldukça iyi görünecektir (bunu ayrı bir cevap olarak yapmak için yazılım yayınladım).
Clément

@Brendan katılmıyorum. tüm örneklerinizle ilgili sorun, aynı dönüşümü tüm gliflere uygulamadığınızdır
symbiont

6

Unicode sembollerini yoğun şekilde kullanan kaynak kodunu düzenlemeye çalışırken bu problemle karşılaştım. Bu bağlamda, kaynak kodun çoğu bir tek aralıklı yazı tipinde görüntülenir ve bu yazı tipinin kapsamadığı birkaç sembol hizalamayı bozar.

Tam bir yazı tipinin "tek aralıklı" olarak ayarlanmasının korkunç sonuçlar vereceği doğru olsa da (karakter aralığı, kontur genişlikleri ve genel denge tamamen bozulacaktır). Aşağıdaki animasyon, Consolas + Symbola'nın yedek olarak kullanılmasını gösterirken, Consolas + 'nın Symbola'nın monospacified bir versiyonunu kullanmasını gösterir:

monospasifikasyon öncesi ve sonrası

Bu, gelişmiş tipografi için işe yaramaz, ancak girintiyi bozmadan kaynak kodunuzdaki sembolleri kullanmak istiyorsanız hoş bir uzlaşmadır. Yine de birtakım uyarılar var:

  • Geniş karakterler komşu alanlara biraz kanar (ancak sorunu hafifletmek için biraz daraltılabilirler)
  • Karakter aralığı kötü olur (sadece bir geri dönüş olduğu için çok fazla sorun değil)

Bu tür yazı tipi dönüşümlerini otomatik olarak işlemek için bir GitHub projesi başlattım . Önceden oluşturulmuş fontları ve fontforge'un Python bağlantılarını kullanarak kod içerir.

Ayrıca bu emacs.se sorusuna da bakın .


-1

Kelime işlemcide, I: (1) bir tablo oluşturdu; (2) sütunlara bölün - her harf için bir sütun; (3) harfleri ortalar; ve (4) tüm sınırları, iç ve dış görünmez kılmıştır.


1
Bu soruya cevap vermiyor. Bir yazı tipi oluşturmaya yardımcı olmaz ve zaman kaybı gibi görünür.
Moscarda
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.