fontforge EnvironmentError: не удалось загрузить файл изображения

Я пытаюсь создать шрифт из отдельных файлов SVG. Вот образец:

#!/usr/local/bin/fontforge
# file test.py

import fontforge;

font=fontforge.font();
glyph = font.createChar(65);
glyph.importOutlines("/home/user/guitar.svg");
# or glyph.importOutlines("~/guitar.svg");
# or glyph.importOutlines("./guitar.svg");
# or glyph.importOutlines("guitar.svg");

Любые попытки загрузить один файл SVG вызывают ту же ошибку:

Traceback (most recent call last):
    File "test.py", line 8, in <module>
    glyph.importOutlines("/home/user/guitar.svg");

Где я не прав?


Окружающая среда:

права на файлы

ls -la /home/user/guitar.svg -rwxrwxrwx 1 user user 3728 Jun 30 20:46 guitar.svg

OS

$ uname -a Linux servername 2.6.32-431.11.2.el6.i686 #1 SMP Tue Mar 25 17:17:46 UTC 2014 i686 i686 i386 GNU/Linux

$ cat /etc/centos-release CentOS release 6.5 (Final)

версия Python

$ python --version Python 2.7.7

Версия Fontforge

$ fontforge --version Copyright (c) 2000-2012 by George Williams. Executable based on sources from 14:57 GMT 31-Jul-2012-TtfDb. Library based on sources from 14:57 GMT 31-Jul-2012. fontforge 20120731 libfontforge 11524617


P.S. Тот же тест работает в Ubuntu 12.04, но версия fontforge другая.

$ fontforge --version Copyright (c) 2000-2011 by George Williams. Executable based on sources from 13:48 GMT 22-Feb-2011-ML. Library based on sources from 13:48 GMT 22-Feb-2011. fontforge 20110222 libfontforge 20110222-ML


person pvolyntsev    schedule 02.07.2014    source источник
comment
образец SVG-файла /home/user/guitar.svg   -  person pvolyntsev    schedule 02.07.2014
comment
Я сменил сервер, обновил python и fontforge. Проблема решена.   -  person pvolyntsev    schedule 15.08.2014


Ответы (1)


Получил ту же проблему.

Внутри исходного файла fontforge Python.c код для загрузки изображения

    GImage *image = GImageRead(locfilename);
    int ly = ((PyFF_Glyph *) self)->layer;
    if ( image==NULL ) {
        PyErr_Format(PyExc_EnvironmentError, "Could not load image file %s", locfilename );
return(NULL);
    }

А еще есть ошибка в переключении на SVG, просто загляните внутрь GImageReader.c и попробуйте найти SVG :)

GImage *GImageRead(char * filename) {
    char *pt;

    if ( filename==NULL )
return( NULL );

    pt = strrchr(filename,'.');
    if ( pt==NULL )
    pt = "";
    if ( strmatch(pt,".bmp")==0 )
return( GImageReadBmp(filename));
    else if ( strmatch(pt,".xbm")==0 )
return( GImageReadXbm(filename));
    else if ( strmatch(pt,".xpm")==0 )
return( GImageReadXpm(filename));
#ifndef _NO_LIBTIFF
    else if ( strmatch(pt,".tiff")==0 || strmatch(pt,".tif")==0 )
return( GImageReadTiff(filename));
#endif
#ifndef _NO_LIBJPEG
    else if ( strmatch(pt,".jpeg")==0 || strmatch(pt,".jpg")==0 )
return( GImageReadJpeg(filename));
#endif
#ifndef _NO_LIBPNG
    else if ( strmatch(pt,".png")==0 )
return( GImageReadPng(filename));
#endif
#ifndef _NO_LIBUNGIF
    else if ( strmatch(pt,".gif")==0 )
return( GImageReadGif(filename));
#endif
    else if ( strmatch(pt,".ras")==0 )
return( GImageReadRas(filename));       /* Sun raster */
    else if ( strmatch(pt,".rgb")==0 )
return( GImageReadRgb(filename));       /* SGI format */

return( NULL );
}
person Artru    schedule 16.07.2014
comment
Да, я тоже проверял исходники, но не решился изменить даже одну строчку ;) Поэтому я сменил сервер, переустановил и обновил fontforge - person pvolyntsev; 15.08.2014