2012-07-10 13 views
8

का उपयोग कर बहुभाषी पाठ ड्राइंग मुझे पीआईएल का उपयोग करके बहुभाषी पाठ ड्राइंग में परेशानी हो रही है। मान लें कि मैं पाठ खींचना चाहता हूं - "ひ ら が な - हिरगाना, 히라가나"। लेकिन पीआईएल की ImageDraw.text() फ़ंक्शन एक समय में केवल एक फ़ॉन्ट लेता है, इसलिए मैं इस पाठ को सही तरीके से नहीं खींच सकता, क्योंकि इसे सभी अंग्रेजी, जापानी और कोरियाई फोंट की आवश्यकता होती है।पीआईएल

अब तक, मुझे कोई आसान भाग नहीं मिला है जैसे कि पीआईएल को एकाधिक फोंट पास करना, ताकि यह प्रत्येक यूनिकोड चरित्र (आधुनिक एसडीके या वेब ब्राउजर की तरह) के लिए उपयुक्त फ़ॉन्ट चुन सके।

जो मैं सोच रहा हूं वह है, मुझे प्रत्येक चरित्र पर पुनरावृत्ति करना चाहिए, और यह निर्धारित करना चाहिए कि प्रत्येक चरित्र के लिए कौन सा फ़ॉन्ट उपयोग करना है। लेकिन मैं यह सोचने में मदद नहीं कर सकता कि ऐसा करने का एक आसान तरीका होना चाहिए।

क्या मैं सही दिशा में जा रहा हूं? क्या कोई आसान तरीका नहीं है?

पीएस) यदि कोई बेहतर समाधान है तो दूसरी भाषा या अन्य इमेजिंग लाइब्रेरी का उपयोग करना ठीक है।

उत्तर

9

आपको बस एक यूनिकोड फ़ॉन्ट चुनने की आवश्यकता है। उदाहरण:

import Image 
import ImageFont, ImageDraw 
image=Image.new("RGB",[320,320]) 
draw = ImageDraw.Draw(image) 
a=u"ひらがな - Hiragana, 히라가나" 
font=ImageFont.truetype("/Library/Fonts/Arial Unicode.ttf",14) 
draw.text((50, 50), a, font=font) 
image.save("a.png") 

Outputs this

+1

हाँ, मैं सिर्फ पता लगा वहाँ फोंट जो कई यूनिकोड ग्लिफ़ कवर कर सकते हैं कर रहे हैं कि। लेकिन मैं वास्तव में क्या करना चाहता था विभिन्न भाषाओं के लिए अलग-अलग फोंट लगा रहा था। (प्रत्येक भाषा के लिए सबसे अच्छा चुना गया फ़ॉन्ट) अभी के लिए, मैं यह जांचने के लिए [ttfquery] (http://ttfquery.sourceforge.net/) का उपयोग कर रहा हूं कि प्रत्येक यूनिकोड का ग्लिफ किसी निश्चित फ़ॉन्ट में निहित है या नहीं। आपके उत्तर के लिए धन्यवाद। – redism

+0

आप शायद चीजों को तेज़ी से बढ़ा सकते हैं - यदि आपके पास आकर्षित करने के लिए बहुत सारे पाठ हैं - भाषा तारों को अपने तारों से निकालने और प्रत्येक भाषा परिवार के लिए एक चरित्र से पूछताछ करके। – dda

+0

मुझे यह जानने के लिए धन्यवाद कि मुझे क्या पता नहीं था। :) – redism