PHP ile imagettftext kareler olarak işlenir Doğu Asya Karakterler ()

3 Cevap php

Ben PHP imagettftext fonksiyonunu kullanarak verdana metin görüntüleri işlemek çalışıyorum. Ancak, tüm Doğu Asya karakterleri doğru işlenir değil. Ben Tahoma ve Lucida Grande gibi diğer tiplerini kullanarak çalıştı, ama ne işleri. Arial Unicode, ancak mükemmel çalışıyor.

Sorun benim yazı tipi olarak Arial kullanmak istemiyorum olmasıdır. Ben Verdana gibi bir yazı tipini kullanarak render herhangi bir yolu var mı?

(Bir unicode ve / veya yazı uzmanı; böylece sorunun açıklanması yararlı olacaktır)

3 Cevap

Onlar "doğru" bunları işlemek mümkün olmayacak yani Verdana, Tahoma veya Lucida Grande hiçbiri Çince / Japonca / Korece karakterler içeriyor. Hiçbir yazı every Unicode kod noktası motifi içerir, bu nedenle size bir noktada eksik gliflerle ile sonuna kadar gidiyoruz almak hangisi.

Orada Verdana gibi ve bazı CJK karakterler içerir is bir yazı - özellikle Japon kanji. Belki de yapmak için çalışıyoruz ne karşılamak için yeterli mi? Bu Meiryo denir ve Windows Vista / 7 ile birlikte gelir oluyor. Sen de onu almak here. Olabilir Ancak PHP / GD doğrudan işleyebilir eğer ben emin değilim, bir TrueType Collection (. TTC) dosyası ise; birçok Doğu Asya yazı tipleri olarak gelir. Ttc dosyaları, bunlar genellikle aynı kabartma şekillere dayalı hem oransal ve monospace yazı tiplerini içerir çünkü.

PHP. TTK ile baş edemez, bir yazı editörü, veya gelen basit bir 'breakttc.exe' komut satırı aracını kullanarak, ayrı bir. Ttf dosyasının içine bunun dışında Meiryo-orantılı yazı dönüştürmek gerekebilir TrueType SDK (ttsdk.zip, Google'ı kullanarak esrarengiz microsoft.com kayboldu, ancak kolayca bulunamaması).

IIRC TrueType yazı içindeki unicode karakter olmalıdır.

Belirli bir yazı windows Karakter Harita aracında kaç karakter görebilirsiniz.

Ben doğrudan Doğu Asya yazı tipi kullanılarak, önce imagettftext ile Japonca karakter render ettik. Windows ile paketlenmiş geliyor birkaç hangi vardır: "SimSun" (Çin) "MS Gothic" (Japonca) "Ms Minço" (Japonca) son iki sans eşdeğer serif ve Japon metin için serif. Ben Çin olanları da hem stilleri var. Benim eski php kodunda bir ". Ttc" uzantısı, değil emin niçin ile yazı dosyalarını kullanır. Belki TTF tanımı ve gerçek yazı tipi bir TTC dosyası nedir? (Uzun zaman önce oldu)

Neyse, Arial vb kullanma gibi, Windows üzerinde çalışır azından yolu sistemi "Batılı" Unicode aralığı dışında karakterler detectes ve otomatik olarak varsayılan birine bu işlemek için "Asya" yazı kurulu geçmek olacaktır. Bu karakterlerin çoğu aynı unicode aralığını paylaşan çünkü diğer şeyler arasında Thise nedeni, bazı kullanıcılar, bunun yerine Japon ya da tam tersi çince karakterleri almak, ancak yazı tipi kullanılır bağlı olan, sen "çince" stlye veya Japon tarzı EGT.

Her iki yazı Karıştırma büyük görünmüyor. Tamamen bir Japon yazı tipini kullanarak çok iyi görünmüyor, "aralıklı" yazı içinde alfabetik karakterler verecek.

Bütün bunlardan başarısız olursa, ayrı batı, doğu / karakter aralığı altdizgelerin (karakter ve test unicode aralığında döngü) içine dize bölmek için deneyin ve sonra uygun yazı tipi ile her parçayı render olabilir. (En azından japon / çinli, ben, kore hakkında vb bilmiyorum) Doğu fontlar eşaralıklı akılda tutun.