2010-03-11 19 views
7

İki veya daha fazla komut dosyasında metin içeren bir diziniz olduğunu varsayalım. TextOut gibi bir GDI işlevini kullandığınızda, (modern sürümleri) Windows "font-linking" yapar. Yani, GDI seçtiğiniz yazı tipiyle neleri çekecek ve gerisini otomatik olarak seçtiği uygun bir yazı tipinde çizecektir. Örneğin, metninizin bir kısmı İngilizce (Roma alfabesi kullanılarak) ise ve bunun bir kısmı Çince (CJK karakterleri kullanılarak) ise ve Arial seçtiğinizde, İngilizce bölümü Arial'de çekilecek ve Çince bölümü CJK glifleri olan başka bir yazı tipinde çizilmelidir.Windows'un yazı tipi bağlama için seçtiği yazı tiplerini belirlemek mümkün mü?

Soruma göre, yazı tipi bağlaması için TextOut yazı tiplerinin hangisini seçeceğini (veya seçtiğini) belirlemenin bir yolu var mı?

Otomatik yazı tipi bağlantısı yapmayan düşük seviyeli Uniscribe API'sine sahip bir metin çizmek zorundayım. Kendi font-linklememi uyguladım, fakat bazen algoritmamm aynı metin için TextOut'dan farklı bir font seçiyor. Windows algoritmasını daha iyi anlamaya çalışıyorum, ancak görüntümdeki yazı tiplerini tanımlamamda gerçekten iyi değilim (özellikle bilinmeyen komut dosyalarında).

cevap

2

Yazı tipi bir kayıt defteri girdisi tarafından seçilir. font bağlantı sizin cihazda etkindir

varsa, Microsoft \ HKEY_LOCAL_MACHINE \ SOFTWARE \ de kayıt anahtarın alt anahtarlarını numaralandırma tarafından kayıt inceleyebilirsiniz: İyi ilgili kısmını aktaran this article. açıklanan Yazı tipleri için bağlantılı yazı tiplerinin eşleşmelerini belirlemek için Windows NT \ CurrentVersion \ FontLink \ SystemLink . bağlantılarını alt anahtarları oluşturmak için Regedit'i kullanarak ekleyebilirsiniz.

+3

Teşekkürler, bu mükemmel bir kaynak. Ama ben başka bir blogda okudum ki, bu kayıt defteri anahtarları sadece geriye dönük uyumluluk için var ve artık yazı tipi bağlamayı gerçekten sürmüyorlar. Örneğin, makinemde TextOut, kayıt defterinin o kısmında bulunmayan temel yazı tipleri için yazı tipi bağlantısı yapar. Ve diğer yazı tipleri için seçilen yazı tipleri, temel yazı tipine bağlı olarak farklı olduğu için yazı tipi geri dönüşü de değildir. –

+0

IMLangFontLink'e göz atın: http://msdn.microsoft.com/en-us/library/aa767872%28v=VS.85%29.aspx –

+0

IMLangFontLink2'yi daha önceki bir yinelemede kullandım, ancak LTR komut dosyalarını karıştırdığımda sorunlara neden oldu RTL betikleri ile. Bence bu oldukça eski bir çözüm ve muhtemelen geriye dönük uyumluluk için geçerli. –