1

Нужно иметь возможность выводить на картинках текст.
В документации к Magick++ говорится про некие "fully qualified X font names", и эти строки, большая часть содержания которых мне не ясна, используются для указания какой шрифт использовать при отрисовке надписи.

Вот кусок из руководства:

Magick++ tutorial пишет:

DrawableFont::DrawableFont(const string& font_name) // 'font_name' is a string containing
                                                                                                    // a fully qualified X font name
// Following is a listing of several font names generally available on Linux systems
// (fully qualified X font names)
// "-*-helvetica-[medium/bold]-[r/o]-normal-*-*-[80/100/120/140/180]-75-75-*-*-iso8859-1"
//
» typical usage size is 120
// "-misc-fixed-[medium/bold]-[r/o]-[normal/semicondensed]-*-*-[100/120/140/200]-75-75-*-*-iso8859-1";
//
» typical usage size is 120, and for this size all combinations are valid
//
» for all other sizes the combinations are restricted, but the ...-medium-r-normal-...
//

font variants work for all sizes
// Example of setting up a DrawableFont object
DrawableFont("-*-helvetica-medium-r-normal-*-*-120-*-*-*-*-iso8859-1");

Проблема в том что, я не могу выяснить какие "fully qualified X font names" доступны в моей системе.
Если я использую настройки из приведенного фрагмента, текст не отрисовывается. Если я просто закомментирую строку с этой настройкой - отрисовывается, видимо каким-то стандартным шрифтом.

identify -list font

выдает довольно обширный список, но как из него получить "fully qualified X font names"?

2

в сторону xfontsel стоит подумать...

95% процентов проблем находятся между клавиатурой и стулом.

3

Выбираю в ней шрифт, использую его в исходнике, в результате ошибки

Resource temporarily unavailable @ error/xwindow.c/XBestFont/831

нет, но и текст на картинке не отрисовывается.

4

шут его знает...
если выложишь минимальный компилируемый пример - могу посмотреть...

95% процентов проблем находятся между клавиатурой и стулом.

5

#include <cstdlib>
#include <list>
#include <iostream>
using namespace std;

#include <Magick++.h>
using namespace Magick;

/*
 * 
 */
int main (int argc, char** argv)
{
    InitializeMagick(*argv);
    
    Image image = Image("180x100", "white");
    
    list<Drawable> draw_list;
    
    // set the text font: the font is specified via a string representing
    // a fully qualified X font name (wildcards '*' are allowed)
    
    //draw_list.push_back(DrawableFont("-*-droid sans-*-*-*-*-*-*-*-*-*-*-*-ru"));  //    <=--  настройка шрифта
    
    // -misc-fixed-medium-o-semicondensed—13-*-*-*-c-60-iso8859-1
    // -*-droid sans-*-*-*-*-*-*-*-*-*-*-*-ru    
    
    // set the text to be drawn at specified position
    draw_list.push_back(DrawableText(10, 10, "Один два три"));

    // set the text color (the fill color must be set to transparent)
    draw_list.push_back(DrawableStrokeColor(Color("black")));
    draw_list.push_back(DrawableFillColor(Color(0, 0, 0, MaxRGB)));

    image.draw(draw_list);

    try
    {
        image.write("output_image.png");
    }
    catch (Exception &error_)
    {
        cout << "Caught exception: " << error_.what() << endl;
        return 1;
    }

    return 0;
}
g++ -c -g -I/usr/include/ImageMagick -I. -MMD -MP -MF main.o.d -o main.o main.cpp
g++ `Magick++-config --cppflags --cxxflags --ldflags --libs` -o grm main.o

6

для списка шрифтов пользуй: convert -list font
никакие «fully qualified X font names» указывать не надо... просто обычное название, что после Font: стоит...
видать доки писались в те времена, когда шрифты были глупые, растровые и ни кто окромя иксов о них ничего поведать не мог...
отрендарил пару картинок с:

// отрендерил пару картинок с:
    draw_list.push_back(DrawableFont("Dejavu-Sans-Mono-Book"));
    draw_list.push_back(DrawablePointSize(20));

// и с:
    draw_list.push_back(DrawableFont("Dejavu", NormalStyle, 400, NormalStretch));


ЗЫ: если и правда так правильно, то с тебя пиво...

95% процентов проблем находятся между клавиатурой и стулом.

7

:facepalm: по локоть...
Я истерзал гугл и оф. сайт, но не обратил внимания на второй конструктор...

Большое спасибо! Какой формат пива предпочтителен?  ab