def drawText(canvas, x, y, text, en = False, bold = False, size = 12): wrkText = text isArabic = False isBidi = False for c in wrkText: cat = unicodedata.bidirectional(c) if cat == "AL" or cat == "AN" or cat == "FA": isArabic = True isBidi = True break elif cat == "R" or cat == "RLE" or cat == "RLO": isBidi = True if isArabic: wrkText = a_forms.fuse(wrkText) wrkText = a_process.shape(wrkText) if isBidi: wrkText = get_display(wrkText) if bold: canvas.setFont('BNazanin', size) else: canvas.setFont('Nazanin', size) canvas.drawRightString(x, canvas._pagesize[1] - y, wrkText)
def rtlize_line(string): """Process a single-line string""" string = forms.fuse(string) string = shape(string) string = mirror(string) return string