Portál AbcLinuxu, 9. května 2025 06:27

Dotaz: Vypisování informací o fontech TrueType

Jiří Poláček avatar 23.10.2007 15:14 Jiří Poláček | skóre: 47 | blog: naopak | Sivice
Vypisování informací o fontech TrueType
Přečteno: 154×
Odpovědět | Admin
Přeci jen mi to nedá, abych se nezeptal – existuje nějaký prográmek pro příkazový řádek na vypisování informací o fontech TrueType? Tj. to, co se mi vypíše, pokud v KDE ve složce fonts:/System najedu myší nad nějaký soubor?

Pro generování vzorníků jsem potřeboval získat názvy všech rodin fontů z jednoho adresáře … no nakonec jsem si pomohl programem ttftool z balíku abiword (převod na afm + grep + sed apod.), bohužel takto jsem získal jen názvu řezů, nikoliv rodin, a výsledek si tak žádal značných ručních úprav.

Přeci musí existovat něco přímočarého, když k tomuto seznamu má přístup de facto každý dialog nastavující písmo v aplikaci …
Sudoku omrzelo? Zkuste bobblemaze! | Statistiky jsou jak bikiny. Napoví hodně, všechno ale neukážou.
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

23.10.2007 15:34 Andrej Herceg | skóre: 43
Rozbalit Rozbalit vše Re: Vypisování informací o fontech TrueType
Odpovědět | | Sbalit | Link | Blokovat | Admin
Pred nejakým časom som niečo podobné potreboval, ale nič sa mi nedarilo nájsť, tak som si naprogramoval jednoduchý program využívajúci knižnicu FreeType.
#include	<stdlib.h>

#include	<ft2build.h>
#include	FT_FREETYPE_H

void show_font_info(FT_Library library, char *dir, char *fontname)
{
	FT_Error	error;
	FT_Face		face;

	error = FT_New_Face(library, fontname, 0, &face);
	if (error == FT_Err_Unknown_File_Format) {
		fprintf(stderr, "Unknown file format \"%s\"\n",
			fontname);
		return;
	} else if (error) {
		fprintf(stderr, "Unable to read font \"%s\"\n",
			fontname);
		return;
	}

	fprintf(stdout, "FileName: '%s'\n"
		"FamilyName: '%s'\n"
		"StyleName: '%s'\n\n",
		fontname,
		face->family_name,
		face->style_name);
	FT_Done_Face(face);
}

int main(int argc, char *argv[])
{
	int		i;
	char		*dir;
	FT_Library	library;
	FT_Error	error;

	if (argc < 2) return EXIT_FAILURE;
	dir = argv[1];


	error = FT_Init_FreeType(&library);
	if (error) {
		fprintf(stderr, "Unable to init FreeType\n");
		return EXIT_FAILURE;;
	}

	for (i = 1; i < argc; i++) {
		show_font_info(library, dir, argv[i]);
	}

	FT_Done_FreeType(library);

	return EXIT_SUCCESS;
}
Jiří Poláček avatar 23.10.2007 15:57 Jiří Poláček | skóre: 47 | blog: naopak | Sivice
Rozbalit Rozbalit vše Re: Vypisování informací o fontech TrueType
… nič sa mi nedarilo nájsť, tak som si naprogramoval jednoduchý program …
Ano, tak se pozná geek :-)

Díky za zajímavé řešení.
Sudoku omrzelo? Zkuste bobblemaze! | Statistiky jsou jak bikiny. Napoví hodně, všechno ale neukážou.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.