Kullanıcı metin yazdığında, karakterlerin karakter dizisine göre otomatik karakter aralığını hesaplayacak bir algoritma biliyor mu?
İlerleme genişliklerinin veya benzerlerinin önemsiz bir şekilde hesaplanması demek istemiyorum, yani karakterler arasındaki görsel olarak en uygun mesafeyi tahmin etmek için gliflerin şeklini analiz etmek. Örneğin, bir satıra sırayla üç karakter yerleştirirsek, karakterin şekillerine rağmen orta karakterin satırın ortasında olması gerekir. Bir örnek, anında karakter aralığı işlevini aydınlatır:
Anında karakter aralığı örneği:
Yukarıdaki görüntüde a
çok doğru görünüyor. Bu bir kaydırılması gereken miktar doğru T
o ortasında gibi görünüyor böylece T
ve g
. Algoritma T
ve a
(ve muhtemelen diğer harflerin) şekillerini incelemeli ve ne kadarının a
sola kaydırılması gerektiğine karar vermelidir . Bu belirli miktar , algoritmanın hesaplaması gereken şeydir - YAZI TİPİNİN OLASI KERNING ÇİFTLERİNİ İNCELEMEKTEDİR.
Elle çizilmiş yazı tiplerini kullanan ve birçoğu karakter çiftleri eksik olan bir javascript (+ svg + html) programı kodlamayı düşünüyorum. Metin alanları düzenlenebilir ve birden çok yazı tipinden oluşan metin içerebilir. Bence anında karakter aralığı, bu durumda ortalama metin akışını sağlamanın bir yolu olabilir.
EDIT: Bunun bir başlangıç noktası svg yazı tipi kullanmak olabilir, bu nedenle yol değerleri almak kolaydır. Svg fontunda yol şu şekilde tanımlanır:
<glyph glyph-name="T" unicode="T" horiz-adv-x="1251" d="M531 0v1293h
-483v173h1162v-173h-485v-1293h-194z"/>
<glyph glyph-name="a" unicode="a" horiz-adv-x="1139" d="M828 131q-100 -85
-192.5 -120t-198.5 -35q-175 0 -269 85.5t-94 218.5q0 78 35.5 142.5t93
103.5t129.5 59q53 14 160 27q218 26 321 62q1 37 1 47q0 110 -51 155q-69 61
-205 61q-127 0 -187.5 -44.5t-89.5 -157.5l-176 24q24 113 79 182.5t159
107t241 37.5 q136 0 221 -32t125 -80.5t56 -122.5q9 -46 9 -166v-240q0
-251 11.5 -317.5t45.5 -127.5h-188q-28 56 -36 131zM813 533q-98 -40 -294
-68q-111 -16 -157 -36t-71 -58.5t-25 -85.5q0 -72 54.5 -120t159.5 -48q104
0 185 45.5t119 124.5q29 61 29 180v66z"/>
Algoritma (veya javascript kodu) bu yolları bir şekilde incelemeli ve aralarındaki en uygun mesafeyi belirlemelidir.