I have a file named \"hindi.txt\". It has contents as follows. I\'m using Python3.5.
कामकाजी महिलाओं के लिए देश में दिल्ली असुरक्षित, सिक्किम सबसे बेहतर: रिपोर्ट
There seems an open bug for rendering the hindi (Devanagari font) text.
https://github.com/python-pillow/Pillow/issues/3191
You may try with some other library like: pyvips (I do not find the API very intuitive, but it may work for you)
import pyvips
# To install 'pyvips' refers to https://pypi.org/project/pyvips/
# 1. Intall libvips shared library from https://jcupitt.github.io/libvips/install.html
# 2. Set the PATH variable.
# 3. run pip install pyvips
def generate_tweet_image():
cnum = 1
output_file = "tweet_file.png"
text = u''
with open("hindi.txt", "r", encoding='UTF-8') as filestream:
for l in filestream.readlines():
text = text + f'{cnum}) {l}'
cnum += 1
MAX_W, MAX_H = 1500, 1500
# See for API https://jcupitt.github.io/pyvips/vimage.html#pyvips.Image.text
# font file: ARIALUNI.TTF
image = pyvips.Image.text(text, width=MAX_W, height=MAX_H, font='Arial Unicode MS', dpi=96)
image.write_to_file(output_file)
print(f'File Written at : {output_file}')
generate_tweet_image()
Output:
Hope this helps.
Installing Raqm, is the ultimate clean soon,check following steps
One of the following methods can be used for building Raqm:
FreeType HarfBuzz FriBiDi
To install dependencies on Fedora:
sudo dnf install freetype-devel harfbuzz-devel fribidi-devel gtk-doc
To install dependencies on Ubuntu:
sudo apt-get install libfreetype6-dev libharfbuzz-dev libfribidi-dev \ gtk-doc-tools
On Mac OS X you can use Homebrew:
`export XML_CATALOG_FILES="/usr/local/etc/xml/catalog" # for the docs`
Once you have the source code and the dependencies, you can proceed to build. To do that, run the customary sequence of commands in the source code directory:
To do that, run the customary sequence of commands in the source code directory (configure file is not found in the package, The key was to run autogen.sh before):
$ ./autogen.sh
$ ./configure
$ make
$ make install
To run the tests:
$ make check
sudo ldconfig This step was needed!
Run the following test script: (Make sure the fonts are installed sudo apt install fonts-indic)
from PIL import Image, ImageFont, ImageDraw
im = Image.new("RGB",(160, 160))
draw = ImageDraw.Draw(im)
font_telugu = ImageFont.truetype("/usr/share/fonts/truetype/fonts-telu-extra/Pothana2000.ttf",50)
text_telugu = "నిత్య"
font_hindi = ImageFont.truetype("/usr/share/fonts/truetype/Gargi/Gargi.ttf",50)
text_hindi = "नित्य"
draw.text((10, 10), text_telugu, font=font_telugu)
draw.text((10, 90), text_hindi, font=font_hindi)
im.show()
install tar file from releases
If you downloaded the release tarball, you shouldn’t run ./autogen.sh
at all, just run steps ./configure
directly.
for ubuntu >=18.04, you can install package directly- The requirements for libraqm are:
libc6 >= 2.14
libfreetype6 >= 2.4.2
libfribidi0 >= 1.0.0
libharfbuzz0b >= 2.1.1
Install the raqm package Update the package index:
sudo apt-get update
Install libraqm0 deb package:
sudo apt-get install libraqm0
You can test your installation by:
from PIL import features
print(features.check("raqm"))
# you should get True now
Pillow 7.0.0 provides support for rendering complex font with raqm library
To check for support:
>>> from PIL import features
>>> print(features.check("raqm"))
True
If it returns False check if library is installed:
/sbin/ldconfig -p | grep raqm
libraqm.so.0 (libc6,x86-64) => /usr/lib/libraqm.so.0
libraqm.so (libc6,x86-64) => /usr/lib/libraqm.so
To Install raqm in debian based distros:
sudo apt-get install libraqm-dev
To use raqm as layout engine add layout_engine option while initializing font:
font = ImageFont.truetype("foo.ttf", size=90, layout_engine=ImageFont.LAYOUT_RAQM)
The above code is tested for: Hindi, Marathi, Gujrati and Telugu fonts.