Python unicode rendering: cómo saber si falta un carácter Unicode en la fuente

En Python cuando represento un carácter Unicode, por ejemplo, un carácter chino, con una fuente seleccionada, a veces la fuente está incompleta con respecto a los caracteres comunes de Unicode y no puede representar el carácter Unicode en cuestión. En esos casos, si llamo a la función “imprimir”, la salida generalmente se ve como una caja cuadrada, sin importar cómo debe verse el carácter Unicode subyacente.

Por supuesto, una vez que imprimo el carácter Unicode, puedo ver la salida y luego determinar que la fuente elegida pierde el carácter Unicode en particular. Pero, ¿hay una forma de saberlo antes de imprimir, automáticamente, sin tener que recurrir a mis propios ojos humanos para determinar si un personaje está incluido en la fuente?

También aclararía que sé de fonts que son más completas que otras. Mi pregunta NO es qué fuente puedo usar, por lo que si llamo “imprimir”, generalmente tendré una salida razonable. También ignore la pregunta de cómo imprimo el carácter o si realmente quiero imprimir un carácter. Mi pregunta es sencillamente, para cualquier fuente dada, ¿cómo puedo saber si falta un carácter Unicode en la fuente, sin utilizar ningún proceso manual que se base en el criterio humano de la salida?

Consulte https://unix.stackexchange.com/questions/247108/how-to-find-out-which-unicode-codepoints-are-defined-in-a-ttf-file

En resumen, uno puede instalar el paquete fonttools, suministrarlo con la ruta de acceso a cualquier archivo de fonts .ttf de interés y verificar si la forma larga del carácter Unicode de interés se incluye en la tabla de mapas Unicode del archivo de fonts.

 from fontTools.ttLib import TTFont font = TTFont(fontpath) # specify the path to the font in question def char_in_font(unicode_char, font): for cmap in font['cmap'].tables: if cmap.isUnicode(): if ord(unicode_char) in cmap.cmap: return True return False 

Luego simplemente llame a la función char_in_font para verificar si el carácter Unicode está incluido en la fuente.