Portál AbcLinuxu, 26. dubna 2024 09:31


Dotaz: Fonty a jeho informace

18.6.2005 21:06 Jindřich 'GoldenShit' Plešinger | skóre: 16 | blog: Nevěřící | Dolní Bousov
Fonty a jeho informace
Přečteno: 54×
Odpovědět | Admin
Hoj
Mám malinkatel dotaz. Stáhnul jsem si z netu několik fontů (Type1, TrueType, OpenType) a docela rád bych je roztřídil. Potřeboval bych jakýkoli konzolový nástroj, která by ze souboru (font.ttf ...) dokázal vytáhnout informace jako je: celý název, autor, kódování, ... .
Díky za kařdou radu.

www.xplesa.wz.cz
LINUKS = Lidová Nacionálně Ultralevicová Komunistická Strana
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

18.6.2005 21:19 #Tom
Rozbalit Rozbalit vše Re: Fonty a jeho informace
Odpovědět | | Sbalit | Link | Blokovat | Admin
Daly by se využít služby knihovny freetype. Toto je malá ukázka:
#include <stdio.h>
#include <string.h>
#include <ft2build.h>
#include FT_FREETYPE_H

FT_Library ftlib;
int ftlib_init() {
  return (FT_Init_FreeType(&ftlib) == 0);
}
int ftlib_done() {
  FT_Done_FreeType(ftlib);
  return 0;
}
char *yesno[2] = { "no", "yes" };
int main(int argc, char **argv) {
  int ft_error;
  FT_Face ftface;
  int i;
  if (argc < 2) {
    printf("syntax: fn_info font(s)\n");
    return 0;
  }
  if (!ftlib_init()) {
    printf("ERROR: can't initialize FreeType library.\n");
  }
  for (i = 1; i < argc; i++) {
    ft_error = FT_New_Face(ftlib, argv[i], 0, &ftface);
    printf("Loading '%s': ", argv[i]);
    if (ft_error != 0) {
      if (ft_error == FT_Err_Unknown_File_Format) {
        printf("Incorrect font format.\n");
      } else {
        printf("The font file can't be loaded.\n");
      }
    } else {
      printf("OK.\n");
      printf("Font information:\n");
      printf("\tname: '%s'\n", ftface->family_name);
      printf("\ttype: '%s'\n", ftface->style_name);
      printf("\tnumber of faces: %lu\n", ftface->num_faces);
      printf("\tnumber of glyphs in current face: %lu\n", ftface->num_glyphs);
      printf("\tscalable font: %s\n", yesno[(ftface->face_flags & FT_FACE_FLAG_SCALABLE) != 0]);

      FT_Done_Face(ftface);
    
      printf("\n");
    }  
  }
  ftlib_done();
  return 0;
}
Přeloží se to třeba takto:
gcc -s -o fn_info -I/usr/include/freetype2 fn_info.c -lfreetype
Další informace lze přidat snadno podle dokumentace freetype.
18.6.2005 22:02 Jindřich 'GoldenShit' Plešinger | skóre: 16 | blog: Nevěřící | Dolní Bousov
Rozbalit Rozbalit vše Re: Fonty a jeho informace
Díky moc.
Funguje to dobře. Asi se budu mudet naučit programovat. Vyplatí se to, jak tak koukám. Jen jestli by jsi byl tak hodnej a napsal by si prográmek pro vypsání kompletních informací o fontu. Házev fontu funguje. Ještě autora, licenci a kodování (mkfontscale), abych je mohl rozdělit a legalizovat. Díky moc.
LINUKS = Lidová Nacionálně Ultralevicová Komunistická Strana
18.6.2005 22:22 #Tom
Rozbalit Rozbalit vše Re: Fonty a jeho informace
Bohužel nemám čas teďka hledat, v kterých strukturách se tohleto nachází. :-( Toto byl jen výcuc z jednoho malýho prográmku, kterej jsem napsal asi před 2-3 roky.
18.6.2005 22:26 Jindřich 'GoldenShit' Plešinger | skóre: 16 | blog: Nevěřící | Dolní Bousov
Rozbalit Rozbalit vše Re: Fonty a jeho informace
To neva. Moc jsi mi pomohl. Programek funguje a tak budu moct alespoň přepsat názvy fontů na ty správné. Roztřídění podle legality (lecence) se udělá jinak.
LINUKS = Lidová Nacionálně Ultralevicová Komunistická Strana

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.