shithub: freetype+ttf2subf

ref: f0a46def9d584291b3b70322227084ca64cb9d85
dir: /docs/essai/

View raw version
Un apercu du layout des fichiers sources de FreeType 2:

  docs/            - documentation
      html/        - documentation au format html
      
      txt/         - documentation au format texte
    
    
  include/         - les headers publiques de la librairie, ce sont ceux
                     qui sont installes avec le paquet freetype-devel.rpm

  config/          - le repertoire de configuration.
      ansi/       
        ft_conf.h  - fichier de configuration
	ftsys.c    - fichier implementation bas-niveau

      unix/
      
      os2/
      
      dos/
      
      amiga/
      
      debug/
      
      
  src/              - sources de la librairie
      base/         - couche de base (services generiques + API)
      
      truetype/     - pilote truetype
          options/  - options du pilote truetype
          extend/   - extensions du pilote truetype
      
      type1/        - pilote type 1
          options/  - options du pilote type 1
	  extend/   - extensions du pilote type 1
      
      type2/        - pilote type 2
      
      speedo/       - pilote speedo
      
      shared/       - sources partagees par plusieurs pilotes
      

  tests/            - programmes de test
      data/         - donnees des tests = fichiers de police => copies dans bin
      test1/        - source du test numero 1
      test2/        - source du test numero 2
      test3/        - ...
      ...

  obj/              - emplacement des fichiers objets compiles + librairie ?
  bin/              - emplacement des executables (demos+tests)
  
  demos/            - programmes de demonstration
      graph/        - sous-systeme graphique des programmes de demo
      
  
  contrib/          - contributions de toutes sortes..


=============================================================================
Quelques autres idees au hasard :

- virer le controle des threads, on s'en tape magistralement

- separer l'allocation memoire de l'acces disque (+flexible)

- l'api de base doit permettre "d'ouvrir" un fichier de police se trouvant
  deja en memoire..  
  
- expliquer les differents types de dictionnaires :

    char_code    ->  glyph_index         charmap    (truetype)
    char_code    ->  glyph_name          encoding   (type 1)
    glyph_index  ->  glyph_name          repertoire (...)

- plusieurs "raster" possibles (le raster par defaut peut etre d�termin� � la compilation,
  sinon l'ajout se fait simplement en passant un pointeur d'interface..)


- l'api de base doit etre simplifiee. La plupart des developpeurs ne veulent
  pas savoir ce qu'est une "size", un "glyph_slot", etc.., on conseille donc
  d'en creer une par defaut, lors de l'appel de :
  
     ------------------- initialisation et lecture des polices ------------
  
     FT_Init_FreeType( &library );
     
     FT_Set_Memory_Manager( library, &mem_manager_rec );
     
     FT_Set_IO_Manager( library, &io_manager_rec );
  
  
     FT_New_Face( library, file_pathname, face_index, &face );
     
     FT_New_Memory_Face( library, first_byte, length, face_index, &face );

     ou encore:
     
       FT_New_Face( library, &new_face_rec, &face );
       
       avec new_face_rec ::
       
          face_index
       
          pathname
	  
	  memory_address
	  bytes_size
     

     FT_Flush_Face( face );   // ferme le stream correspondant..


     ------------------------------------------ changement de taille ------
     
     FT_Set_Size( face, &face_size_rec );
     
       face_size_rec ::
         char_height
	 char_width
	 horz_resolution
	 vert_resolution
     
     FT_Set_Pixel_Sizes( face, 64, 64 );


     ----------------------------------------- selection de la charmap ----
     
     FT_Select_Charmap( face, ft_charmap_unicode );
     
     FT_Select_Charmap_Index( face, index );
     
     FT_List_Charmaps( face, buffer, max, first );

     face->charmap => pointe vers la charmap actuelle..


     -------------------------------------- chargement des glyphes --------
     
     FT_Load_Glyph( face, glyph_index ); 
     
     FT_Load_Char( face, char_code );
     
     FT_Transform_Glyph( face->glyph, &trans );
     
     
     ---------------------------------------------- rendu final -----------
     
     FT_Get_Outline_Bitmap( library, face->glyph, &bit );
     
     FT_Set_Raster( library, "default" );
     
     FT_Set_Raster_Mode( library, major_mode, minor_mode );
     
     
     
     
=======================================================================================

Syst�me de configuration automatique

 freetype2/
     Makefile
     config/
         ansi/
            config.mk

  make setup  => autodetection du syst�me + copie de fichier include ???

  make