freetype-commit
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[freetype2-demos] master ca8621d: * src/ftdump.c (Print_Charmaps): Add P


From: Werner Lemberg
Subject: [freetype2-demos] master ca8621d: * src/ftdump.c (Print_Charmaps): Add PCF/BDF/FNT charset info.
Date: Fri, 30 Apr 2021 23:41:58 -0400 (EDT)

branch: master
commit ca8621d1570a6d46aab37874366f5d41744fe1d2
Author: Alexei Podtelezhnikov <apodtele@gmail.com>
Commit: Alexei Podtelezhnikov <apodtele@gmail.com>

    * src/ftdump.c (Print_Charmaps): Add PCF/BDF/FNT charset info.
---
 ChangeLog    |  4 ++++
 src/ftdump.c | 52 ++++++++++++++++++++++++++++++----------------------
 2 files changed, 34 insertions(+), 22 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index a58f6a2..76c086a 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2021-04-30  Alexei Podtelezhnikov  <apodtele@gmail.com>
+
+       * src/ftdump.c (Print_Charmaps): Add PCF/BDF/FNT charset info.
+
 2021-04-10  Alexei Podtelezhnikov  <apodtele@gmail.com>
 
        * graph/rules.mk: Warn about missing graphics driver.
diff --git a/src/ftdump.c b/src/ftdump.c
index 8da7b09..0519cc4 100644
--- a/src/ftdump.c
+++ b/src/ftdump.c
@@ -15,6 +15,8 @@
 #include FT_TRUETYPE_TABLES_H
 #include FT_TRUETYPE_TAGS_H
 #include FT_MULTIPLE_MASTERS_H
+#include FT_BDF_H
+#include FT_WINFONTS_H
 
   /* showing driver name */
 #include FT_MODULE_H
@@ -503,30 +505,36 @@
 
     for( i = 0; i < face->num_charmaps; i++ )
     {
-      FT_Long   format  = FT_Get_CMap_Format( face->charmaps[i] );
-      FT_ULong  lang_id = FT_Get_CMap_Language_ID( face->charmaps[i] );
+      FT_CharMap   cmap = face->charmaps[i];
+      FT_Long      format  = FT_Get_CMap_Format( cmap );
+      FT_ULong     lang_id = FT_Get_CMap_Language_ID( cmap );
+      const char*  encoding;
+      const char*  registry;
 
+      FT_WinFNT_HeaderRec  header;
 
-      if ( format >= 0 )
-        printf( "  %2d: format %2ld, platform %u, encoding %2u",
-                i,
-                format,
-                face->charmaps[i]->platform_id,
-                face->charmaps[i]->encoding_id );
-      else
-        printf( "  %2d: synthetic, platform %u, encoding %2u",
-                i,
-                face->charmaps[i]->platform_id,
-                face->charmaps[i]->encoding_id );
 
-      if ( lang_id == 0xFFFFFFFFUL )
-        printf( "   (Unicode Variation Sequences)" );
-      else
-        printf( "   language %lu",
-                lang_id );
+      printf( cmap->encoding ? " %c%2d: %c%c%c%c"
+                             : " %c%2d: none",
+              i == active ? '*' : ' ',
+              i,
+              cmap->encoding >> 24,
+              cmap->encoding >> 16,
+              cmap->encoding >> 8,
+              cmap->encoding );
 
-      if ( i == active )
-        printf( " (active)" );
+      printf( ", platform %u, encoding %2u",
+              cmap->platform_id,
+              cmap->encoding_id );
+
+      if ( format >= 0 )
+        printf( lang_id != 0xFFFFFFFFUL ? ", format %2lu, language %lu "
+                                        : ", format %2lu, UVS",
+                format, lang_id );
+      else if ( !FT_Get_BDF_Charset_ID( face, &encoding, &registry ) )
+        printf( ", charset %s-%s", registry, encoding );
+      else if ( !FT_Get_WinFNT_Header( face, &header ) )
+        printf( ", charset %d", header.charset );
 
       printf ( "\n" );
 
@@ -537,7 +545,7 @@
         FT_String  buf[32];
 
 
-        FT_Set_Charmap( face, face->charmaps[i] );
+        FT_Set_Charmap( face, cmap );
 
         charcode = FT_Get_First_Char( face, &gindex );
         while ( gindex )
@@ -562,7 +570,7 @@
         const char*  f3 = "";
 
 
-        FT_Set_Charmap( face, face->charmaps[i] );
+        FT_Set_Charmap( face, cmap );
 
         next = FT_Get_First_Char( face, &gindex );
         while ( gindex )



reply via email to

[Prev in Thread] Current Thread [Next in Thread]