Farklı Genişlikteki karakterler

Başlatan Mucit23, 21 Eylül 2017, 18:10:13

Mucit23

Selamlar

Ne zamandır P10 Paneller üzerinde Font optimizasyonu üzerine uğraşıyordum. Bi yazılım buldum tam istediğim formatta font dönüşümü yapıyor. Bende P10 kütüphanemin alt yapısını bu yazılıma göre güncelledim.

Güzel oldu aslında Program benim ayarlamama göre farklı genişlikte karakterler üretiyordu. Yani Karakter genişliği sabit değil karaktere göre değişkendi. Karakter genişlikleri ise ayrı bir dizide tutuluyordu.

Burada o işi çözmüştük.
https://www.picproje.org/index.php/topic,70697.0.html

Şöyle bir sıkıntı ortaya çıktı

Diyelimki 13 pixel genişliğinde bir karakter bastık ekrana. '0' karakteri 13 pixel genişliğe sahip. Ekranda aşağıdaki gibi bir görüntü var.

00:00

'1' karakteri ise 11 pixel genişliğe sahip. 0 karakterinin üzerine 1 karakterini basınca ekranda bazı yerlerde 0 karakterinden pixeller yanık kalmış oluyor. Çünkü en boy olarak aynı boyutta değiller.

Bu sorun nasıl aşılabilir? Fikri olan varmı? Benim aklımda şöyle bir yöntem geldi. Ekranda ne kadarlık bir alan kullanılacaksa ilk önce o boyutta bir kutucuk belirlemek(sanal olarak) Sonra bu kutucuk içine birşey yazılacağı zaman kutucuğun tamamını silip içine güncel veriyi basmak

2. olarakta Sabit genişlik yöntemine dönmeyi düşündüm.

Hangisi mantıklı olur? Daha iyi bir önerisi olan varmı?

JOKERAS

Her Karakter,sayı veya objenin genişliğinin,yüksekliğinin farklı olduğunu biliyorsunuz.

Her obje için Offset noktası oluşturacaksınız.
Mesela X ve Y şu noktadan başlasın, Objenin genişliği şu,yüksekliğide şu ise
X ve Y Video haritasında o noktalara kadar ilerlesin.
X ve Y'nin sonu,yeni obje için başlangıç noktası olacak.
Yani her objeyi bağımsız olarak basmış olacaksınız.
Tabii burada Video Matrisin başı sonu bilinerek hareket edilmeli.
Matrisin eni boyu bilinmezse yazı kaydırmada animasyonda sorun olmaz ama sabit font basmada taşmalar olur.


Farklı boyutlardaki objeleri basmada şöyle bir sıkıntıda olur.
Her karakter veya obje veya sayı farklı olacağı için işlemci her bir çevrimi farklı zaman aralığında yapacak.
Bu yazı kaydırma animasyon gibi işlemlerde hız farkı oluşturur.
Boyutları geniş olanlarda animasyon yavaşlar.
Bunun için şöyle bir yöntem yapılabilinir.
Karakter tablosundaki en büyük karakterin basma zamanı referans alınıp,
en büyük karakter veya objeden daha küçük bir obje basılması icab ettiğinde
bir Timer Delay otomatik yüklenir.Tüm zamanlar eşitlenmiş olur.


Ben olsam yazılımın içine bir yazılım gömer,her veri girişinde matrisin nasıl davranması gerektiğini
bilmesini sağlardım.Sağlayabilirmiydim o ayrı mesele:)













~ENES~

@Mucit23  hocam en geniş karakterli sayının veya harfin ölçülerini referans alarak diğer harfleri düzenleyin boş kalan yerlere boş piksel bastırın kısa yoldan çözüm olur .Ben glcd de yapmıştım güzel bir çözüm olmuşu  :)