Perfect Bangla/Bengali text rendering on images/video with correct vowel positioning and joint letter
Project description
Bangla Text Renderer
Perfect Bangla/Bengali text rendering on images with correct vowel positioning and joint letter handling.
Problem
When using PIL/Pillow to render Bangla text on images, vowel marks (কার) like ি, ে, ৈ often appear in the wrong position - one letter behind where they should be. This package fixes that issue.
Installation
pip install bangla-text-renderer
Quick Start
from bangla_text_renderer import BanglaTextRenderer
from PIL import Image
# Create renderer with your Bangla font
renderer = BanglaTextRenderer(
font_path='NotoSansBengali-Bold.ttf', # give your font name here /// download your font .ttf file and put on windows\fonts directory
font_size=48,
color=(255, 255, 255, 255) # White
)
# Render text
text = "বাংলা লেখা সঠিকভাবে"
img = renderer.render_text(text, width=800)
# Save image
img.save('output.png')
Features
- ✅ Perfect vowel positioning - Fixes misplaced vowel marks (ি, ী, ে, ৈ, etc.)
- ✅ Joint letter support - Handles যুক্তাক্ষর correctly
- ✅ Text wrapping - Automatic word wrapping
- ✅ Multiple alignments - Left, center, right
- ✅ Shadow effects - Built-in text shadow
- ✅ Unicode normalization - Proper NFC normalization
Advanced Usage
Text with Shadow
img = renderer.render_text_with_shadow(
text="বাংলা টেক্সট",
width=800,
shadow_offset=3,
shadow_color=(0, 0, 0, 180)
)
Custom Alignment and Line Spacing
img = renderer.render_text(
text="বাংলা লেখা",
width=800,
max_lines=3,
line_spacing=15,
align='center', # 'left', 'center', or 'right'
background=(255, 255, 255, 255) # White background
)
Integration with Existing Images
from PIL import Image
# Load base image
base_img = Image.open('background.jpg').convert('RGBA')
# Render Bangla text
text_img = renderer.render_text("বাংলা", width=500)
# Paste text on base image
base_img.paste(text_img, (100, 100), text_img)
base_img.save('result.png')
How It Works
The package implements proper Bangla text shaping by:
- Normalizing text to Unicode NFC form
- Splitting combined vowel signs (ো, ৌ)
- Reordering pre-base vowels to appear before consonants
- Processing joint letters (যুক্তাক্ষর) with virama (্)
This ensures text renders exactly as it should appear visually.
Supported Fonts
Works with any Unicode Bangla font:
- Noto Sans Bengali
- Noto Serif Bengali
- Kalpurush
- SolaimanLipi
- Vrinda
- And more...
Requirements
- Python 3.7+
- Pillow 8.0.0+
License
MIT License
Contributing
Contributions welcome! Please feel free to submit a Pull Request.
Support
If you encounter any issues, please open an issue on GitHub.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file bangla_text_renderer-1.4.1.tar.gz.
File metadata
- Download URL: bangla_text_renderer-1.4.1.tar.gz
- Upload date:
- Size: 5.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.0.1 CPython/3.14.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d283fd8bb1f8aeb1a37c67bb78c4e4fe96093788f03ce430fea60210bdb75e20
|
|
| MD5 |
c479a4fa27bc860876fb885e63fc44bf
|
|
| BLAKE2b-256 |
51c821c71eb8c9d7bb7a082a97801fb7ec1705a40b4451868ed670fe73b57086
|
File details
Details for the file bangla_text_renderer-1.4.1-py3-none-any.whl.
File metadata
- Download URL: bangla_text_renderer-1.4.1-py3-none-any.whl
- Upload date:
- Size: 6.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.0.1 CPython/3.14.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1664f48abcabfa4125d14d538bd964c4345c209f16fff5f6eec13c769183451d
|
|
| MD5 |
a77febd89650c4c3d1706b94c8cbba65
|
|
| BLAKE2b-256 |
7093cbb626b296b65420c69d4f1ed5604eaea9bda2ce32adf31a39ab8a1e5386
|