ReportLab: trabalhando com caracteres chineses / Unicode

TL; DR:Existe alguma maneira de dizer ao ReportLab para usar uma fonte específica e fazer fallback para outra se faltarem glifos para alguns caracteres? Alternativamente,Você conhece uma fonte TrueType condensada que contém os glifos para todos os idiomas europeus, hebraico, russo, chinês, japonês e árabe?

Criei relatórios com o ReportLab e encontrei problemas ao renderizar cadeias contendo caracteres chineses. A fonte que eu uso é o DejaVu Sans Condensed, que não contém os glifos para o chinês (no entanto, contém cirílico, hebraico, árabe e todos os tipos de trema para suporte ao idioma europeu - o que o torna bastante versátil e preciso de vez em quando)

O chinês, no entanto, não é compatível com a fonte, e não consegui encontrar uma fonte TrueType que ofereça suporte a TODOS os idiomas e atenda aos nossos requisitos de design gráfico. Como solução temporária, fiz com que os relatórios para clientes chineses usassem uma fonte totalmente diferente, contendo apenas glifos em inglês e chinês, esperando que caracteres em outros idiomas não estivessem presentes nas strings. No entanto, isso é, por razões óbvias, desajeitado e quebra o design gráfico, já que não é o DejaVu Sans, em torno do qual toda a aparência foi projetada.

Então a questão é, como você lidaria com a necessidade de oferecer suporte a vários idiomas em um documento e manter o uso de uma fonte especificada para cada idioma. Isso se torna mais complicado devido ao fato de que algumas vezes as strings contêm uma mistura de idiomas, portanto, determinar qual fonte ONE deve ser usada para cada string não é uma opção.

Existe alguma maneira de dizer ao ReportLab para usar uma fonte específica e fazer fallback para outra se faltarem glifos para alguns caracteres? Encontrei dicas vagas nos documentos de que isso deveria ser possível, embora eu possa entendê-lo incorretamente.

Como alternativa, você conhece uma fonte TrueType condensada que contém os glifos para todos os idiomas europeus, hebraico, russo, chinês, japonês e árabe?

Obrigado.

questionAnswers(2)

yourAnswerToTheQuestion