diff --git a/python/louis/__init__.py.in b/python/louis/__init__.py.in index 99ed32d1..25307b47 100644 --- a/python/louis/__init__.py.in +++ b/python/louis/__init__.py.in @@ -120,7 +120,7 @@ def charSize(): """ return liblouis.lou_charSize() -def translate(tableList, inbuf, typeform=None, cursorPos=0, mode=0): +def translate(tableList, inbuf, typeform=None, cursorPos=0, mode=0, outLen=0): """Translate a string of characters, providing position information. @param tableList: A list of translation tables. @type tableList: list of str @@ -133,6 +133,8 @@ def translate(tableList, inbuf, typeform=None, cursorPos=0, mode=0): @type cursorPos: int @param mode: The translation mode; add multiple values for a combined mode. @type mode: int + @param outLen: desired output buffer lenght in characters - typically corresponding with a braille display line length + @type outLen: int @return: A tuple of: the translated string, a list of input positions for each position in the output, a list of output positions for each position in the input, and @@ -144,7 +146,10 @@ def translate(tableList, inbuf, typeform=None, cursorPos=0, mode=0): tablesString = _createTablesString(tableList) inbuf = createStr(inbuf) inlen = c_int(len(inbuf)) - outlen = c_int(inlen.value*outlenMultiplier) + if outLen >0: + outlen = c_int(outLen*outlenMultiplier) + else: + outlen = c_int(inlen.value*outlenMultiplier) outbuf = create_unicode_buffer(outlen.value) typeformbuf = None if typeform: