enthought / enable

Enable: low-level drawing and interaction
Other
91 stars 45 forks source link

Error log from afmLib.error while parsing font on Linux with X11 font #829

Open kitchoi opened 3 years ago

kitchoi commented 3 years ago

(Reporting traceback from someone's else platform)

Upon creation of the kiva font cache on a Linux platform, one encounters the following logged error message

Could not parse font file /usr/share/fonts/X11/Type1/qhvcr.afm
Traceback (most recent call last):
  File "/home/user/.edm/envs/project-3.6-rh7-x86_64-dev/lib/python3.6/site-packages/kiva/fonttools/font_manager.py", line 354, in _load_from_cache_or_rebuild
    fontManager = _pickle_load(cache_file)
  File "/home/user/.edm/envs/project-3.6-rh7-x86_64-dev/lib/python3.6/site-packages/kiva/fonttools/font_manager.py", line 402, in _pickle_load
    fh = open(filename, "rb")
FileNotFoundError: [Errno 2] No such file or directory: '/home/user/.enthought/kiva/fontList.cache'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/user/.edm/envs/project-3.6-rh7-x86_64-dev/lib/python3.6/site-packages/kiva/fonttools/_scan_parse.py", line 80, in _build_afm_entries
    font = AFM(fpath)
  File "/home/user/.edm/envs/project-3.6-rh7-x86_64-dev/lib/python3.6/site-packages/fontTools/afmLib.py", line 108, in __init__
    self.read(path)
  File "/home/user/.edm/envs/project-3.6-rh7-x86_64-dev/lib/python3.6/site-packages/fontTools/afmLib.py", line 125, in read
    self.parsechar(rest)
  File "/home/user/.edm/envs/project-3.6-rh7-x86_64-dev/lib/python3.6/site-packages/fontTools/afmLib.py", line 136, in parsechar
    raise error("syntax error in AFM file: " + repr(rest))
fontTools.afmLib.error: syntax error in AFM file: '32 ; WX 458.33333 ; N space ; B 0 0 0 0 ;'

Note that this is from logging at the ERROR level.

kitchoi commented 3 years ago

The fontTools here, I believe, is an external dependency. In any case, these logged errors cause alarm, and I wonder how much kiva can deal with this and if it should have been logged at DEBUG level instead.