windows office font ve puntoları nasıl otomatik olarak ayarlıyor?

Başlatan jackal183, 03 Haziran 2013, 15:12:46

jackal183

Arakadaşlar merhaba, başlıkta belirttiğim sorunun cevabını merak ediyorum. office açtınız birşeyler yazdınız, puntoyu 12 seçtiniz, yazıcıdan çıktı aldınız herşey güzel. sonra puntoyu 72ye çektiniz, windows onu saniyesinde büyüttü ve yazıcıdan çıktı aldınız, her iki çıktıyı karşılaştırdınız, kalitesinde hiç bir farklılık hiç bir kötülük yok.

şimdi gelelim bunu gömülü yazılımda nasıl yapacağımıza. elinzide tft lcdniz olduğunu düşünün. bu lcd ekranında 8, 12, 20, 36, 48, 72 gibi puntolarda, yani istediğiniz windows puntosunda karakter bastırmak istiyorsunuz. hepimizin de bildiği gibi, glcdleri ya da tft lcdleri pixel pixel on/off yaparak çalıştırıyoruz. ekranda bir karakter basmak istediğimizde, bu karakterin kendi hafızamızda oluşturduğumuz fontları(bit font creator) üzerinden ilgili pixelleri on/off yapıyoruz. 6x8 font oluşturdunuz, koda gömdünüz bunu, bunun üzerinden bastırıyorsunuz. fontu biraz büyütmek istediğimde x ekseninde ve y ekseninde 6x8 lik fontu çok kaba bir yöntemle büyütüp pixelleri bastırıyorum, ama font büyüdükçe karakterlerin şekilleri git gide daha çirkin olmaya başlıyor(tıpkı paintte resmi büyütmek gibi). bu sorunu nasıl aşarım diye düşündüğümde, acaba windows bunu nasıl yapıyor diye merak ettim. her bir fontun her bir puntosunu üzerine kaydetmiyor herhalde diye düşündüm. kesinlikle bunun için bir algoritma geliştirmişlerdir diye düşünüyorum.

peki bu algoritma nedir? çok fazla matematiksel işlemi var mıdır? basit bir pic16f628a ile bu algoritmayı kullanıp da lcd üzerinde ben de istediğim an istediğim fonta geçerek kaliteli görüntüler karakterler oluşturabilir miyim?

serdararikan

Paint ilkel bir program.yeni programlarda fontu ne kadar büyütür sen büyü t bozulmuyor.cunki vektörel işlemlerle font oluşturuluyor.

fatih6761

Alıntı yapılan: jackal183 - 03 Haziran 2013, 15:12:46
Arakadaşlar merhaba, başlıkta belirttiğim sorunun cevabını merak ediyorum. office açtınız birşeyler yazdınız, puntoyu 12 seçtiniz, yazıcıdan çıktı aldınız herşey güzel. sonra puntoyu 72ye çektiniz, windows onu saniyesinde büyüttü ve yazıcıdan çıktı aldınız, her iki çıktıyı karşılaştırdınız, kalitesinde hiç bir farklılık hiç bir kötülük yok.

şimdi gelelim bunu gömülü yazılımda nasıl yapacağımıza. elinzide tft lcdniz olduğunu düşünün. bu lcd ekranında 8, 12, 20, 36, 48, 72 gibi puntolarda, yani istediğiniz windows puntosunda karakter bastırmak istiyorsunuz. hepimizin de bildiği gibi, glcdleri ya da tft lcdleri pixel pixel on/off yaparak çalıştırıyoruz. ekranda bir karakter basmak istediğimizde, bu karakterin kendi hafızamızda oluşturduğumuz fontları(bit font creator) üzerinden ilgili pixelleri on/off yapıyoruz. 6x8 font oluşturdunuz, koda gömdünüz bunu, bunun üzerinden bastırıyorsunuz. fontu biraz büyütmek istediğimde x ekseninde ve y ekseninde 6x8 lik fontu çok kaba bir yöntemle büyütüp pixelleri bastırıyorum, ama font büyüdükçe karakterlerin şekilleri git gide daha çirkin olmaya başlıyor(tıpkı paintte resmi büyütmek gibi). bu sorunu nasıl aşarım diye düşündüğümde, acaba windows bunu nasıl yapıyor diye merak ettim. her bir fontun her bir puntosunu üzerine kaydetmiyor herhalde diye düşündüm. kesinlikle bunun için bir algoritma geliştirmişlerdir diye düşünüyorum.

peki bu algoritma nedir? çok fazla matematiksel işlemi var mıdır? basit bir pic16f628a ile bu algoritmayı kullanıp da lcd üzerinde ben de istediğim an istediğim fonta geçerek kaliteli görüntüler karakterler oluşturabilir miyim?
Maalesef algoritma yok. Doğrudan fontun standart ölçüleri kayıtlı. Sadece çizilmemiş aralıklarda yüksek kaliteli büyütme işlemi uyguluyor. Ama 8, 9, 10, 12, 14, 16, 24, 36, 72 vs... boyutları çoğunlukla kayıtlı oluyor.

Kabil ATICI

Olay piksel-vektör mantığında yatıyor.

Vektör mantığı ile çalışan programlarda font çizim halindedir. Düz çizgiler ve eğriler halinde. Fontu ne kadar büyütürseniz büyütün kalitesi değişmez.(Neyseki şu anda truetype ve truutype varyantı opentype var. Eğer Postscript fonk kullanırsan eğer ekran görüntüsü yoksa görüntü kalitesinde fark edilir bir bozulma olurdu.

Şimdi işi birde piksel esaslı bir yapı ile bakarsak o zaman sıkıntı görüntüyü büyütmek istediğin zaman çıkar çünkü görüntü tamamen belirlenmiş noktalardan oluşur. Noktaları büyütürsen görüntü kalitesi de bozulacaktır.
O yüzden piksel tabanlı sistemde küçültmek daha iyi sonuç verir. Çünkü büyütme yöntemi aslında var olmayan noktaları eklemektir. Bu durumda ya doğrudan komşu pikselin ortalaması alınarak yapılır veya aynen kopyalanır. Her iki halde görüntü bozulması kaçınılmazdır.
ambar7

jackal183

windowsda yüzlerce farklı fontun yüzlerce farklı puntosu mu var diyorsunuz ? her bir punto için de farklı alfabelerin bütün harfleri rakamları hatta latince simgeler, matematiksel simgeler de kayıtlıysa bu 100x100x100 = 1000000 farklı şeyin office programına gömülmüş olduğu anlamına gelir ki bu çok basit bir değr, gerçek değer daha yüksek çıkacaktır. ne de olsa bu windows office bir hard diske istediğin kadar yaz çiz yer tutmyacaktır. bunu kısmen yapmayı da ben düşünüyorum. kendim en çok kullanılan fontları (12,  14, 24, 36, 48) oluşturup bir flasha ya da bir rame kaydedip ordan çağırmayı düşünüyorum. ama işi de mesele şu ki ben bunun biraz amele tarzı olduğunu düşünüyorum, böyle birşeyin illa ki algoritmasını fonksiyonu formulünü vs. çıkarıp bulmam gerekli diye düşünüyorum.

neyse bunu geçelim de, ambar7 hocam komşu pixelin ortalamasın almak da nedir acep?

Kabil ATICI

Hayır windowsta font sadece çizimdir. Coreldraw'da çizilmiş gibi. Piksel esaslı değil. Sadece eğrilerden oluşan bir çizim. (tel çerçeve şeklinde) Böyle olduğu için istediğin ölçüde kullanabiliyorsun.

Her pikselin RGB olarak bir değeri var.  Yani 8 bit üzerinden düşünürsek (255,255,255) gibi bir değeri. İşte bu pikselin bu değerleri üzerinden matematik işlemleri uygulanır. Bu işlemler çoğunlukla efekt olarak kullanılır. (filtre)
yan yana iki piksel olduğunu (1. piksel ve 2. piksel  RGB olarak düşünüldüğünde elde edilen değer ara değer R1+R2/2,G1+G2/2,B1+B2/2) şeklinde bir değer olur. Tabii burada büyütme genellikle 4 yönde olacağından bu matematik biraz daha artıyor... Aslında bildiğimiz matris oluyor...
ambar7

jackal183

ambar7 hocam valla kafam iyice karıştı ve söyledikleriniz benim için biraz havada gibi. basit ya da gelişmiş herhangi bir pic ile bu dediklerinizi yapabilir miyiz, yapamaz mıyız? yapamayız, çok çok zor olur diyorsanız hiç araştırmaya devam etmeyeceğim

Kabil ATICI

ambar7