Magick++ (GraphicsMagick) problems when using drawing text with DrawableFont() on macOS
2017-06-07 - ⧖ 5.0 minEnvironment
- MacOSX 10.11.6
- GraphicsMagick 1.3.25 (installing with Homebrew)
If you get error when you specify "Arial" or "Microsoft Sans Serif" to font family. For example as following code:
// drawfont.cpp
#include <iostream>
#include <Magick++.h>
using namespace Magick ;
using namespace std ;
int main (int argc , char ** argv )
{
try {
InitializeMagick (* argv );
Color bg_color = Color ("red" );
Image image ("1000x1000" , bg_color );
std::list < Magick ::Drawable > drawList ;
drawList .push_back (DrawablePointSize (200 ));
drawList .push_back (DrawableFont ("Microsoft Sans Serif" , AnyStyle , 400 , AnyStretch ));
//drawList.push_back(DrawableFont("/Library/Fonts/Arial.ttf")); // no problem
drawList .push_back (DrawableText (10 ,150 ,"hello" ));
drawList .push_back (DrawableFont ("Arial" , AnyStyle , 400 , AnyStretch ));
drawList .push_back (DrawableText (10 ,500 ,"hello" ));
image .draw (drawList );
image .write ("out.jpg" );
}
catch (exception & error_ )
{
cout <<"Caught exception : " << error_ .what () << endl ;
}
}
Error Message
I get the following error
$ clang ++ -std=c++11 -L/usr/local/lib -lGraphicsMagick++ -I/usr/local/include/GraphicsMagick -o drawfont drawfont.cpp
$ ./drawfont
Caught exception : Magick: Unable to read font (/usr/local/share/ghostscript/fonts/n019003l.pfb ) reported by magick/annotate.c:1063 (RenderFreetype )
Solution
setup to type.mgk file.
script of generate type.mgk from system_profiler's font list (mgkgen.py)
setup sequence
$ system_profiler -xml SPFontsDataType > fontset.xml
$ python3 mgkgen.py fontset.xml > type.mgk
# backup if you need
$ cp /usr/local/Cellar/graphicsmagick/1.3.25/lib/GraphicsMagick/config/type.mgk /usr/local/Cellar/graphicsmagick/1.3.25/lib/GraphicsMagick/config/type.mgk.bk
$ cp type.mgk /usr/local/Cellar/graphicsmagick/1.3.25/lib/GraphicsMagick/config/type.mgk
check font list
$ gm convert -list font
Path: /usr/local/Cellar/graphicsmagick/1.3.25/lib/GraphicsMagick/config/type.mgk
Name Family Style Stretch Weight
--------------------------------------------------------------------------------
.SFNSDisplay-Ultralight System Font normal normal 400
BigCaslon-Medium Big Caslon normal normal 400
Silom Silom normal normal 400
.SFNSText-Light System Font normal normal 400
Chalkduster Chalkduster normal normal 400
STIXSizeThreeSym-Regular STIXSizeThreeSym normal normal 400
TimesNewRomanPSMT Times New Roman normal normal 400
AppleBraille-Pinpoint8Dot Apple Braille normal normal 400
:
MalayalamMN Malayalam MN normal normal 400
MalayalamMN-Bold Malayalam MN normal normal 400
STIXSizeTwoSym-Regular STIXSizeTwoSym normal normal 400
AlTarikh Al Tarikh normal normal 400
.AlTarikhPUA .Al Tarikh PUA normal normal 400
DecoTypeNaskh DecoType Naskh normal normal 400
.DecoTypeNaskhPUA .DecoType Naskh PUA normal normal 400
Farah Farah normal normal 400
.FarahPUA .Farah PUA normal normal 400
try again
$ ./drawfont
$ ls
out.jpg