can reproduce this.
probably a bug in how opencv uses the results from freetype.
you should open an issue on opencv’s github about this.
#!/usr/bin/env python3
import numpy as np
import cv2 as cv
ft = cv.freetype.createFreeType2()
#ft.loadFontData(R"C:\Windows\Fonts\Tahoma.ttf", 0)
ft.loadFontData(R"C:\Windows\Fonts\Calibri.ttf", 0)
canvas = np.empty((400, 600, 3), np.uint8)
canvas[:] = (179, 222, 245)
text = "سلام = HI"
text = "\u0633\u0644\u0627\u0645 = HI"
ft.putText(
img=canvas,
text=text,
org=(100, 200),
fontHeight=100,
color=(0, 0, 255),
thickness=cv.FILLED,
line_type=cv.LINE_AA,
bottomLeftOrigin=True
)
cv.imshow("canvas", canvas)
cv.waitKey()
cv.destroyAllWindows()