freetype-commit
[Top][All Lists]
Advanced

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

[freetype2] ogonek 6cde0b240 1/4: [autofit] Better handling of character


From: Werner Lemberg
Subject: [freetype2] ogonek 6cde0b240 1/4: [autofit] Better handling of characters with attached diacritics. (1/3)
Date: Mon, 5 May 2025 13:46:38 -0400 (EDT)

branch: ogonek
commit 6cde0b240499cf7c3ee35bbfec60e7dea496fb4f
Author: Werner Lemberg <wl@gnu.org>
Commit: Werner Lemberg <wl@gnu.org>

    [autofit] Better handling of characters with attached diacritics. (1/3)
    
    Introduce blue zone properties that will be used to make the auto-hinter
    ignore diacritics attached on the top or the bottom of a base character.
    
    * src/autofit/afblue.hin (AF_BLUE_PROPERTY_LATIN_CAPITAL_BOTTOM,
      AF_BLUE_PROPERTY_LATIN_SMALL_BOTTOM): New properties.
    * src/autofit/afblue.dat: Use them.
    
    * src/autofit/afblue.c, src/autofit/afblue.h: Rengenerated.
    
    * src/autofit/aflatin.h (AF_LATIN_IS_CAPITAL_BOTTOM_BLUE,
      AF_LATIN_IS_SMALL_BOTTOM_BLUE, AF_LATIN_BLUE_BOTTOM,
      AF_LATIN_BLUE_BOTTOM_SMALL): New macros.
    
    * src/autofit/aflatin.c (af_latin_metrics_init_blues)[FT_DEBUG_LEVEL_TRACE]:
      Updated.
---
 src/autofit/afblue.c   | 192 ++++++++++++++++++++++++-------------------------
 src/autofit/afblue.dat | 192 ++++++++++++++++++++++++-------------------------
 src/autofit/afblue.h   |   9 ++-
 src/autofit/afblue.hin |   9 ++-
 src/autofit/aflatin.c  |  18 +++++
 src/autofit/aflatin.h  |  23 ++++--
 6 files changed, 238 insertions(+), 205 deletions(-)

diff --git a/src/autofit/afblue.c b/src/autofit/afblue.c
index ea83969cd..96d8c8185 100644
--- a/src/autofit/afblue.c
+++ b/src/autofit/afblue.c
@@ -467,24 +467,24 @@
   af_blue_stringsets[] =
   {
     /* */
-    { AF_BLUE_STRING_ADLAM_CAPITAL_TOP,    AF_BLUE_PROPERTY_LATIN_TOP        },
-    { AF_BLUE_STRING_ADLAM_CAPITAL_BOTTOM, 0                                 },
+    { AF_BLUE_STRING_ADLAM_CAPITAL_TOP,    AF_BLUE_PROPERTY_LATIN_TOP          
  },
+    { AF_BLUE_STRING_ADLAM_CAPITAL_BOTTOM, 
AF_BLUE_PROPERTY_LATIN_CAPITAL_BOTTOM },
     { AF_BLUE_STRING_ADLAM_SMALL_TOP,      AF_BLUE_PROPERTY_LATIN_TOP      |
-                                           AF_BLUE_PROPERTY_LATIN_X_HEIGHT   },
-    { AF_BLUE_STRING_ADLAM_SMALL_BOTTOM,   0                                 },
-    { AF_BLUE_STRING_MAX,                  0                                 },
+                                           AF_BLUE_PROPERTY_LATIN_X_HEIGHT     
  },
+    { AF_BLUE_STRING_ADLAM_SMALL_BOTTOM,   AF_BLUE_PROPERTY_LATIN_SMALL_BOTTOM 
  },
+    { AF_BLUE_STRING_MAX,                  0                                   
  },
     { AF_BLUE_STRING_ARABIC_TOP,    AF_BLUE_PROPERTY_LATIN_TOP     },
     { AF_BLUE_STRING_ARABIC_BOTTOM, 0                              },
     { AF_BLUE_STRING_ARABIC_JOIN,   AF_BLUE_PROPERTY_LATIN_NEUTRAL },
     { AF_BLUE_STRING_MAX,           0                              },
-    { AF_BLUE_STRING_ARMENIAN_CAPITAL_TOP,     AF_BLUE_PROPERTY_LATIN_TOP      
  },
-    { AF_BLUE_STRING_ARMENIAN_CAPITAL_BOTTOM,  0                               
  },
-    { AF_BLUE_STRING_ARMENIAN_SMALL_ASCENDER,  AF_BLUE_PROPERTY_LATIN_TOP      
  },
+    { AF_BLUE_STRING_ARMENIAN_CAPITAL_TOP,     AF_BLUE_PROPERTY_LATIN_TOP      
      },
+    { AF_BLUE_STRING_ARMENIAN_CAPITAL_BOTTOM,  
AF_BLUE_PROPERTY_LATIN_CAPITAL_BOTTOM },
+    { AF_BLUE_STRING_ARMENIAN_SMALL_ASCENDER,  AF_BLUE_PROPERTY_LATIN_TOP      
      },
     { AF_BLUE_STRING_ARMENIAN_SMALL_TOP,       AF_BLUE_PROPERTY_LATIN_TOP      
|
-                                               AF_BLUE_PROPERTY_LATIN_X_HEIGHT 
  },
-    { AF_BLUE_STRING_ARMENIAN_SMALL_BOTTOM,    0                               
  },
-    { AF_BLUE_STRING_ARMENIAN_SMALL_DESCENDER, 0                               
  },
-    { AF_BLUE_STRING_MAX,                      0                               
  },
+                                               AF_BLUE_PROPERTY_LATIN_X_HEIGHT 
      },
+    { AF_BLUE_STRING_ARMENIAN_SMALL_BOTTOM,    
AF_BLUE_PROPERTY_LATIN_SMALL_BOTTOM   },
+    { AF_BLUE_STRING_ARMENIAN_SMALL_DESCENDER, 0                               
      },
+    { AF_BLUE_STRING_MAX,                      0                               
      },
     { AF_BLUE_STRING_AVESTAN_TOP,    AF_BLUE_PROPERTY_LATIN_TOP },
     { AF_BLUE_STRING_AVESTAN_BOTTOM, 0                          },
     { AF_BLUE_STRING_MAX,            0                          },
@@ -508,14 +508,14 @@
     { AF_BLUE_STRING_CHAKMA_BOTTOM,    0                          },
     { AF_BLUE_STRING_CHAKMA_DESCENDER, 0                          },
     { AF_BLUE_STRING_MAX,              0                          },
-    { AF_BLUE_STRING_CANADIAN_SYLLABICS_TOP,          
AF_BLUE_PROPERTY_LATIN_TOP        },
-    { AF_BLUE_STRING_CANADIAN_SYLLABICS_BOTTOM,       0                        
         },
+    { AF_BLUE_STRING_CANADIAN_SYLLABICS_TOP,          
AF_BLUE_PROPERTY_LATIN_TOP          },
+    { AF_BLUE_STRING_CANADIAN_SYLLABICS_BOTTOM,       0                        
           },
     { AF_BLUE_STRING_CANADIAN_SYLLABICS_SMALL_TOP,    
AF_BLUE_PROPERTY_LATIN_TOP      |
-                                                      
AF_BLUE_PROPERTY_LATIN_X_HEIGHT   },
-    { AF_BLUE_STRING_CANADIAN_SYLLABICS_SMALL_BOTTOM, 0                        
         },
-    { AF_BLUE_STRING_CANADIAN_SYLLABICS_SUPS_TOP,     
AF_BLUE_PROPERTY_LATIN_TOP        },
-    { AF_BLUE_STRING_CANADIAN_SYLLABICS_SUPS_BOTTOM,  0                        
         },
-    { AF_BLUE_STRING_MAX,                             0                        
         },
+                                                      
AF_BLUE_PROPERTY_LATIN_X_HEIGHT     },
+    { AF_BLUE_STRING_CANADIAN_SYLLABICS_SMALL_BOTTOM, 
AF_BLUE_PROPERTY_LATIN_SMALL_BOTTOM },
+    { AF_BLUE_STRING_CANADIAN_SYLLABICS_SUPS_TOP,     
AF_BLUE_PROPERTY_LATIN_TOP          },
+    { AF_BLUE_STRING_CANADIAN_SYLLABICS_SUPS_BOTTOM,  0                        
           },
+    { AF_BLUE_STRING_MAX,                             0                        
           },
     { AF_BLUE_STRING_CARIAN_TOP,    AF_BLUE_PROPERTY_LATIN_TOP },
     { AF_BLUE_STRING_CARIAN_BOTTOM, 0                          },
     { AF_BLUE_STRING_MAX,           0                          },
@@ -527,24 +527,24 @@
     { AF_BLUE_STRING_CHEROKEE_SMALL,           0                               
  },
     { AF_BLUE_STRING_CHEROKEE_SMALL_DESCENDER, 0                               
  },
     { AF_BLUE_STRING_MAX,                      0                               
  },
-    { AF_BLUE_STRING_COPTIC_CAPITAL_TOP,    AF_BLUE_PROPERTY_LATIN_TOP        
},
-    { AF_BLUE_STRING_COPTIC_CAPITAL_BOTTOM, 0                                 
},
+    { AF_BLUE_STRING_COPTIC_CAPITAL_TOP,    AF_BLUE_PROPERTY_LATIN_TOP         
   },
+    { AF_BLUE_STRING_COPTIC_CAPITAL_BOTTOM, 
AF_BLUE_PROPERTY_LATIN_CAPITAL_BOTTOM },
     { AF_BLUE_STRING_COPTIC_SMALL_TOP,      AF_BLUE_PROPERTY_LATIN_TOP      |
-                                            AF_BLUE_PROPERTY_LATIN_X_HEIGHT   
},
-    { AF_BLUE_STRING_COPTIC_SMALL_BOTTOM,   0                                 
},
-    { AF_BLUE_STRING_MAX,                   0                                 
},
+                                            AF_BLUE_PROPERTY_LATIN_X_HEIGHT    
   },
+    { AF_BLUE_STRING_COPTIC_SMALL_BOTTOM,   
AF_BLUE_PROPERTY_LATIN_SMALL_BOTTOM   },
+    { AF_BLUE_STRING_MAX,                   0                                  
   },
     { AF_BLUE_STRING_CYPRIOT_TOP,    AF_BLUE_PROPERTY_LATIN_TOP },
     { AF_BLUE_STRING_CYPRIOT_BOTTOM, 0                          },
     { AF_BLUE_STRING_CYPRIOT_SMALL,  AF_BLUE_PROPERTY_LATIN_TOP },
     { AF_BLUE_STRING_CYPRIOT_SMALL,  0                          },
     { AF_BLUE_STRING_MAX,            0                          },
-    { AF_BLUE_STRING_CYRILLIC_CAPITAL_TOP,     AF_BLUE_PROPERTY_LATIN_TOP      
  },
-    { AF_BLUE_STRING_CYRILLIC_CAPITAL_BOTTOM,  0                               
  },
+    { AF_BLUE_STRING_CYRILLIC_CAPITAL_TOP,     AF_BLUE_PROPERTY_LATIN_TOP      
      },
+    { AF_BLUE_STRING_CYRILLIC_CAPITAL_BOTTOM,  
AF_BLUE_PROPERTY_LATIN_CAPITAL_BOTTOM },
     { AF_BLUE_STRING_CYRILLIC_SMALL,           AF_BLUE_PROPERTY_LATIN_TOP      
|
-                                               AF_BLUE_PROPERTY_LATIN_X_HEIGHT 
  },
-    { AF_BLUE_STRING_CYRILLIC_SMALL,           0                               
  },
-    { AF_BLUE_STRING_CYRILLIC_SMALL_DESCENDER, 0                               
  },
-    { AF_BLUE_STRING_MAX,                      0                               
  },
+                                               AF_BLUE_PROPERTY_LATIN_X_HEIGHT 
      },
+    { AF_BLUE_STRING_CYRILLIC_SMALL,           0                               
      },
+    { AF_BLUE_STRING_CYRILLIC_SMALL_DESCENDER, 0                               
      },
+    { AF_BLUE_STRING_MAX,                      0                               
      },
     { AF_BLUE_STRING_DEVANAGARI_TOP,    AF_BLUE_PROPERTY_LATIN_TOP        },
     { AF_BLUE_STRING_DEVANAGARI_HEAD,   AF_BLUE_PROPERTY_LATIN_TOP        },
     { AF_BLUE_STRING_DEVANAGARI_BASE,   AF_BLUE_PROPERTY_LATIN_TOP      |
@@ -553,12 +553,12 @@
     { AF_BLUE_STRING_DEVANAGARI_BASE,   0                                 },
     { AF_BLUE_STRING_DEVANAGARI_BOTTOM, 0                                 },
     { AF_BLUE_STRING_MAX,               0                                 },
-    { AF_BLUE_STRING_DESERET_CAPITAL_TOP,    AF_BLUE_PROPERTY_LATIN_TOP        
},
-    { AF_BLUE_STRING_DESERET_CAPITAL_BOTTOM, 0                                 
},
+    { AF_BLUE_STRING_DESERET_CAPITAL_TOP,    AF_BLUE_PROPERTY_LATIN_TOP        
    },
+    { AF_BLUE_STRING_DESERET_CAPITAL_BOTTOM, 
AF_BLUE_PROPERTY_LATIN_CAPITAL_BOTTOM },
     { AF_BLUE_STRING_DESERET_SMALL_TOP,      AF_BLUE_PROPERTY_LATIN_TOP      |
-                                             AF_BLUE_PROPERTY_LATIN_X_HEIGHT   
},
-    { AF_BLUE_STRING_DESERET_SMALL_BOTTOM,   0                                 
},
-    { AF_BLUE_STRING_MAX,                    0                                 
},
+                                             AF_BLUE_PROPERTY_LATIN_X_HEIGHT   
    },
+    { AF_BLUE_STRING_DESERET_SMALL_BOTTOM,   
AF_BLUE_PROPERTY_LATIN_SMALL_BOTTOM   },
+    { AF_BLUE_STRING_MAX,                    0                                 
    },
     { AF_BLUE_STRING_ETHIOPIC_TOP,    AF_BLUE_PROPERTY_LATIN_TOP },
     { AF_BLUE_STRING_ETHIOPIC_BOTTOM, 0                          },
     { AF_BLUE_STRING_MAX,             0                          },
@@ -578,23 +578,23 @@
     { AF_BLUE_STRING_GEORGIAN_NUSKHURI_ASCENDER,  AF_BLUE_PROPERTY_LATIN_TOP   
     },
     { AF_BLUE_STRING_GEORGIAN_NUSKHURI_DESCENDER, 0                            
     },
     { AF_BLUE_STRING_MAX,                         0                            
     },
-    { AF_BLUE_STRING_GLAGOLITIC_CAPITAL_TOP,    AF_BLUE_PROPERTY_LATIN_TOP     
   },
-    { AF_BLUE_STRING_GLAGOLITIC_CAPITAL_BOTTOM, 0                              
   },
+    { AF_BLUE_STRING_GLAGOLITIC_CAPITAL_TOP,    AF_BLUE_PROPERTY_LATIN_TOP     
       },
+    { AF_BLUE_STRING_GLAGOLITIC_CAPITAL_BOTTOM, 
AF_BLUE_PROPERTY_LATIN_CAPITAL_BOTTOM },
     { AF_BLUE_STRING_GLAGOLITIC_SMALL_TOP,      AF_BLUE_PROPERTY_LATIN_TOP     
 |
-                                                
AF_BLUE_PROPERTY_LATIN_X_HEIGHT   },
-    { AF_BLUE_STRING_GLAGOLITIC_SMALL_BOTTOM,   0                              
   },
-    { AF_BLUE_STRING_MAX,                       0                              
   },
+                                                
AF_BLUE_PROPERTY_LATIN_X_HEIGHT       },
+    { AF_BLUE_STRING_GLAGOLITIC_SMALL_BOTTOM,   
AF_BLUE_PROPERTY_LATIN_SMALL_BOTTOM   },
+    { AF_BLUE_STRING_MAX,                       0                              
       },
     { AF_BLUE_STRING_GOTHIC_TOP,    AF_BLUE_PROPERTY_LATIN_TOP },
     { AF_BLUE_STRING_GOTHIC_BOTTOM, 0                          },
     { AF_BLUE_STRING_MAX,           0                          },
-    { AF_BLUE_STRING_GREEK_CAPITAL_TOP,     AF_BLUE_PROPERTY_LATIN_TOP        
},
-    { AF_BLUE_STRING_GREEK_CAPITAL_BOTTOM,  0                                 
},
-    { AF_BLUE_STRING_GREEK_SMALL_BETA_TOP,  AF_BLUE_PROPERTY_LATIN_TOP        
},
+    { AF_BLUE_STRING_GREEK_CAPITAL_TOP,     AF_BLUE_PROPERTY_LATIN_TOP         
   },
+    { AF_BLUE_STRING_GREEK_CAPITAL_BOTTOM,  
AF_BLUE_PROPERTY_LATIN_CAPITAL_BOTTOM },
+    { AF_BLUE_STRING_GREEK_SMALL_BETA_TOP,  AF_BLUE_PROPERTY_LATIN_TOP         
   },
     { AF_BLUE_STRING_GREEK_SMALL,           AF_BLUE_PROPERTY_LATIN_TOP      |
-                                            AF_BLUE_PROPERTY_LATIN_X_HEIGHT   
},
-    { AF_BLUE_STRING_GREEK_SMALL,           0                                 
},
-    { AF_BLUE_STRING_GREEK_SMALL_DESCENDER, 0                                 
},
-    { AF_BLUE_STRING_MAX,                   0                                 
},
+                                            AF_BLUE_PROPERTY_LATIN_X_HEIGHT    
   },
+    { AF_BLUE_STRING_GREEK_SMALL,           0                                  
   },
+    { AF_BLUE_STRING_GREEK_SMALL_DESCENDER, 0                                  
   },
+    { AF_BLUE_STRING_MAX,                   0                                  
   },
     { AF_BLUE_STRING_GUJARATI_TOP,       AF_BLUE_PROPERTY_LATIN_TOP      |
                                          AF_BLUE_PROPERTY_LATIN_X_HEIGHT   },
     { AF_BLUE_STRING_GUJARATI_BOTTOM,    0                                 },
@@ -643,45 +643,45 @@
     { AF_BLUE_STRING_LAO_LARGE_ASCENDER, AF_BLUE_PROPERTY_LATIN_TOP        },
     { AF_BLUE_STRING_LAO_DESCENDER,      0                                 },
     { AF_BLUE_STRING_MAX,                0                                 },
-    { AF_BLUE_STRING_LATIN_CAPITAL_TOP,     AF_BLUE_PROPERTY_LATIN_TOP        
},
-    { AF_BLUE_STRING_LATIN_CAPITAL_BOTTOM,  0                                 
},
-    { AF_BLUE_STRING_LATIN_SMALL_F_TOP,     AF_BLUE_PROPERTY_LATIN_TOP        
},
+    { AF_BLUE_STRING_LATIN_CAPITAL_TOP,     AF_BLUE_PROPERTY_LATIN_TOP         
   },
+    { AF_BLUE_STRING_LATIN_CAPITAL_BOTTOM,  
AF_BLUE_PROPERTY_LATIN_CAPITAL_BOTTOM },
+    { AF_BLUE_STRING_LATIN_SMALL_F_TOP,     AF_BLUE_PROPERTY_LATIN_TOP         
   },
     { AF_BLUE_STRING_LATIN_SMALL_TOP,       AF_BLUE_PROPERTY_LATIN_TOP      |
-                                            AF_BLUE_PROPERTY_LATIN_X_HEIGHT   
},
-    { AF_BLUE_STRING_LATIN_SMALL_BOTTOM,    0                                 
},
-    { AF_BLUE_STRING_LATIN_SMALL_DESCENDER, 0                                 
},
-    { AF_BLUE_STRING_MAX,                   0                                 
},
-    { AF_BLUE_STRING_LATIN_SUBS_CAPITAL_TOP,     AF_BLUE_PROPERTY_LATIN_TOP    
    },
-    { AF_BLUE_STRING_LATIN_SUBS_CAPITAL_BOTTOM,  0                             
    },
-    { AF_BLUE_STRING_LATIN_SUBS_SMALL_F_TOP,     AF_BLUE_PROPERTY_LATIN_TOP    
    },
+                                            AF_BLUE_PROPERTY_LATIN_X_HEIGHT    
   },
+    { AF_BLUE_STRING_LATIN_SMALL_BOTTOM,    
AF_BLUE_PROPERTY_LATIN_SMALL_BOTTOM   },
+    { AF_BLUE_STRING_LATIN_SMALL_DESCENDER, 0                                  
   },
+    { AF_BLUE_STRING_MAX,                   0                                  
   },
+    { AF_BLUE_STRING_LATIN_SUBS_CAPITAL_TOP,     AF_BLUE_PROPERTY_LATIN_TOP    
        },
+    { AF_BLUE_STRING_LATIN_SUBS_CAPITAL_BOTTOM,  
AF_BLUE_PROPERTY_LATIN_CAPITAL_BOTTOM },
+    { AF_BLUE_STRING_LATIN_SUBS_SMALL_F_TOP,     AF_BLUE_PROPERTY_LATIN_TOP    
        },
     { AF_BLUE_STRING_LATIN_SUBS_SMALL,           AF_BLUE_PROPERTY_LATIN_TOP    
  |
-                                                 
AF_BLUE_PROPERTY_LATIN_X_HEIGHT   },
-    { AF_BLUE_STRING_LATIN_SUBS_SMALL,           0                             
    },
-    { AF_BLUE_STRING_LATIN_SUBS_SMALL_DESCENDER, 0                             
    },
-    { AF_BLUE_STRING_MAX,                        0                             
    },
-    { AF_BLUE_STRING_LATIN_SUPS_CAPITAL_TOP,     AF_BLUE_PROPERTY_LATIN_TOP    
    },
-    { AF_BLUE_STRING_LATIN_SUPS_CAPITAL_BOTTOM,  0                             
    },
-    { AF_BLUE_STRING_LATIN_SUPS_SMALL_F_TOP,     AF_BLUE_PROPERTY_LATIN_TOP    
    },
+                                                 
AF_BLUE_PROPERTY_LATIN_X_HEIGHT       },
+    { AF_BLUE_STRING_LATIN_SUBS_SMALL,           0                             
        },
+    { AF_BLUE_STRING_LATIN_SUBS_SMALL_DESCENDER, 0                             
        },
+    { AF_BLUE_STRING_MAX,                        0                             
        },
+    { AF_BLUE_STRING_LATIN_SUPS_CAPITAL_TOP,     AF_BLUE_PROPERTY_LATIN_TOP    
        },
+    { AF_BLUE_STRING_LATIN_SUPS_CAPITAL_BOTTOM,  
AF_BLUE_PROPERTY_LATIN_CAPITAL_BOTTOM },
+    { AF_BLUE_STRING_LATIN_SUPS_SMALL_F_TOP,     AF_BLUE_PROPERTY_LATIN_TOP    
        },
     { AF_BLUE_STRING_LATIN_SUPS_SMALL,           AF_BLUE_PROPERTY_LATIN_TOP    
  |
-                                                 
AF_BLUE_PROPERTY_LATIN_X_HEIGHT   },
-    { AF_BLUE_STRING_LATIN_SUPS_SMALL,           0                             
    },
-    { AF_BLUE_STRING_LATIN_SUPS_SMALL_DESCENDER, 0                             
    },
-    { AF_BLUE_STRING_MAX,                        0                             
    },
+                                                 
AF_BLUE_PROPERTY_LATIN_X_HEIGHT       },
+    { AF_BLUE_STRING_LATIN_SUPS_SMALL,           0                             
        },
+    { AF_BLUE_STRING_LATIN_SUPS_SMALL_DESCENDER, 0                             
        },
+    { AF_BLUE_STRING_MAX,                        0                             
        },
     { AF_BLUE_STRING_LISU_TOP,    AF_BLUE_PROPERTY_LATIN_TOP },
     { AF_BLUE_STRING_LISU_BOTTOM, 0                          },
     { AF_BLUE_STRING_MAX,         0                          },
     { AF_BLUE_STRING_MALAYALAM_TOP,    AF_BLUE_PROPERTY_LATIN_TOP },
     { AF_BLUE_STRING_MALAYALAM_BOTTOM, 0                          },
     { AF_BLUE_STRING_MAX,              0                          },
-    { AF_BLUE_STRING_MEDEFAIDRIN_CAPITAL_TOP,     AF_BLUE_PROPERTY_LATIN_TOP   
     },
-    { AF_BLUE_STRING_MEDEFAIDRIN_CAPITAL_BOTTOM,  0                            
     },
-    { AF_BLUE_STRING_MEDEFAIDRIN_SMALL_F_TOP,     AF_BLUE_PROPERTY_LATIN_TOP   
     },
+    { AF_BLUE_STRING_MEDEFAIDRIN_CAPITAL_TOP,     AF_BLUE_PROPERTY_LATIN_TOP   
         },
+    { AF_BLUE_STRING_MEDEFAIDRIN_CAPITAL_BOTTOM,  
AF_BLUE_PROPERTY_LATIN_CAPITAL_BOTTOM },
+    { AF_BLUE_STRING_MEDEFAIDRIN_SMALL_F_TOP,     AF_BLUE_PROPERTY_LATIN_TOP   
         },
     { AF_BLUE_STRING_MEDEFAIDRIN_SMALL_TOP,       AF_BLUE_PROPERTY_LATIN_TOP   
   |
-                                                  
AF_BLUE_PROPERTY_LATIN_X_HEIGHT   },
-    { AF_BLUE_STRING_MEDEFAIDRIN_SMALL_BOTTOM,    0                            
     },
-    { AF_BLUE_STRING_MEDEFAIDRIN_SMALL_DESCENDER, 0                            
     },
-    { AF_BLUE_STRING_MEDEFAIDRIN_DIGIT_TOP,       AF_BLUE_PROPERTY_LATIN_TOP   
     },
-    { AF_BLUE_STRING_MAX,                         0                            
     },
+                                                  
AF_BLUE_PROPERTY_LATIN_X_HEIGHT       },
+    { AF_BLUE_STRING_MEDEFAIDRIN_SMALL_BOTTOM,    
AF_BLUE_PROPERTY_LATIN_SMALL_BOTTOM   },
+    { AF_BLUE_STRING_MEDEFAIDRIN_SMALL_DESCENDER, 0                            
         },
+    { AF_BLUE_STRING_MEDEFAIDRIN_DIGIT_TOP,       AF_BLUE_PROPERTY_LATIN_TOP   
         },
+    { AF_BLUE_STRING_MAX,                         0                            
         },
     { AF_BLUE_STRING_MONGOLIAN_TOP_BASE,    AF_BLUE_PROPERTY_LATIN_TOP },
     { AF_BLUE_STRING_MONGOLIAN_BOTTOM_BASE, 0                          },
     { AF_BLUE_STRING_MAX,                   0                          },
@@ -691,12 +691,12 @@
     { AF_BLUE_STRING_MYANMAR_ASCENDER,  AF_BLUE_PROPERTY_LATIN_TOP        },
     { AF_BLUE_STRING_MYANMAR_DESCENDER, 0                                 },
     { AF_BLUE_STRING_MAX,               0                                 },
-    { AF_BLUE_STRING_NKO_TOP,          AF_BLUE_PROPERTY_LATIN_TOP        },
-    { AF_BLUE_STRING_NKO_BOTTOM,       0                                 },
+    { AF_BLUE_STRING_NKO_TOP,          AF_BLUE_PROPERTY_LATIN_TOP          },
+    { AF_BLUE_STRING_NKO_BOTTOM,       0                                   },
     { AF_BLUE_STRING_NKO_SMALL_TOP,    AF_BLUE_PROPERTY_LATIN_TOP      |
-                                       AF_BLUE_PROPERTY_LATIN_X_HEIGHT   },
-    { AF_BLUE_STRING_NKO_SMALL_BOTTOM, 0                                 },
-    { AF_BLUE_STRING_MAX,              0                                 },
+                                       AF_BLUE_PROPERTY_LATIN_X_HEIGHT     },
+    { AF_BLUE_STRING_NKO_SMALL_BOTTOM, AF_BLUE_PROPERTY_LATIN_SMALL_BOTTOM },
+    { AF_BLUE_STRING_MAX,              0                                   },
     { AF_BLUE_STRING_MAX, 0 },
     { AF_BLUE_STRING_OL_CHIKI, AF_BLUE_PROPERTY_LATIN_TOP },
     { AF_BLUE_STRING_OL_CHIKI, 0                          },
@@ -704,15 +704,15 @@
     { AF_BLUE_STRING_OLD_TURKIC_TOP,    AF_BLUE_PROPERTY_LATIN_TOP },
     { AF_BLUE_STRING_OLD_TURKIC_BOTTOM, 0                          },
     { AF_BLUE_STRING_MAX,               0                          },
-    { AF_BLUE_STRING_OSAGE_CAPITAL_TOP,       AF_BLUE_PROPERTY_LATIN_TOP       
},
-    { AF_BLUE_STRING_OSAGE_CAPITAL_BOTTOM,    0                                
},
-    { AF_BLUE_STRING_OSAGE_CAPITAL_DESCENDER, 0                                
},
-    { AF_BLUE_STRING_OSAGE_SMALL_TOP,         AF_BLUE_PROPERTY_LATIN_TOP     |
-                                              AF_BLUE_PROPERTY_LATIN_X_HEIGHT  
},
-    { AF_BLUE_STRING_OSAGE_SMALL_BOTTOM,      0                                
},
-    { AF_BLUE_STRING_OSAGE_SMALL_ASCENDER,    AF_BLUE_PROPERTY_LATIN_TOP       
},
-    { AF_BLUE_STRING_OSAGE_SMALL_DESCENDER,   0                                
},
-    { AF_BLUE_STRING_MAX,                     0                                
},
+    { AF_BLUE_STRING_OSAGE_CAPITAL_TOP,       AF_BLUE_PROPERTY_LATIN_TOP       
     },
+    { AF_BLUE_STRING_OSAGE_CAPITAL_BOTTOM,    
AF_BLUE_PROPERTY_LATIN_CAPITAL_BOTTOM },
+    { AF_BLUE_STRING_OSAGE_CAPITAL_DESCENDER, 0                                
     },
+    { AF_BLUE_STRING_OSAGE_SMALL_TOP,         AF_BLUE_PROPERTY_LATIN_TOP      |
+                                              AF_BLUE_PROPERTY_LATIN_X_HEIGHT  
     },
+    { AF_BLUE_STRING_OSAGE_SMALL_BOTTOM,      
AF_BLUE_PROPERTY_LATIN_SMALL_BOTTOM   },
+    { AF_BLUE_STRING_OSAGE_SMALL_ASCENDER,    AF_BLUE_PROPERTY_LATIN_TOP       
     },
+    { AF_BLUE_STRING_OSAGE_SMALL_DESCENDER,   0                                
     },
+    { AF_BLUE_STRING_MAX,                     0                                
     },
     { AF_BLUE_STRING_OSMANYA_TOP,    AF_BLUE_PROPERTY_LATIN_TOP },
     { AF_BLUE_STRING_OSMANYA_BOTTOM, 0                          },
     { AF_BLUE_STRING_MAX,            0                          },
@@ -723,13 +723,13 @@
     { AF_BLUE_STRING_SAURASHTRA_TOP,    AF_BLUE_PROPERTY_LATIN_TOP },
     { AF_BLUE_STRING_SAURASHTRA_BOTTOM, 0                          },
     { AF_BLUE_STRING_MAX,               0                          },
-    { AF_BLUE_STRING_SHAVIAN_TOP,          AF_BLUE_PROPERTY_LATIN_TOP        },
-    { AF_BLUE_STRING_SHAVIAN_BOTTOM,       0                                 },
-    { AF_BLUE_STRING_SHAVIAN_DESCENDER,    0                                 },
+    { AF_BLUE_STRING_SHAVIAN_TOP,          AF_BLUE_PROPERTY_LATIN_TOP          
},
+    { AF_BLUE_STRING_SHAVIAN_BOTTOM,       0                                   
},
+    { AF_BLUE_STRING_SHAVIAN_DESCENDER,    0                                   
},
     { AF_BLUE_STRING_SHAVIAN_SMALL_TOP,    AF_BLUE_PROPERTY_LATIN_TOP      |
-                                           AF_BLUE_PROPERTY_LATIN_X_HEIGHT   },
-    { AF_BLUE_STRING_SHAVIAN_SMALL_BOTTOM, 0                                 },
-    { AF_BLUE_STRING_MAX,                  0                                 },
+                                           AF_BLUE_PROPERTY_LATIN_X_HEIGHT     
},
+    { AF_BLUE_STRING_SHAVIAN_SMALL_BOTTOM, AF_BLUE_PROPERTY_LATIN_SMALL_BOTTOM 
},
+    { AF_BLUE_STRING_MAX,                  0                                   
},
     { AF_BLUE_STRING_SINHALA_TOP,       AF_BLUE_PROPERTY_LATIN_TOP },
     { AF_BLUE_STRING_SINHALA_BOTTOM,    0                          },
     { AF_BLUE_STRING_SINHALA_DESCENDER, 0                          },
diff --git a/src/autofit/afblue.dat b/src/autofit/afblue.dat
index 88bab2632..eae39e0eb 100644
--- a/src/autofit/afblue.dat
+++ b/src/autofit/afblue.dat
@@ -699,12 +699,12 @@ AF_BLUE_STRING_ENUM AF_BLUE_STRINGS_ARRAY 
AF_BLUE_STRING_MAX_LEN:
 AF_BLUE_STRINGSET_ENUM AF_BLUE_STRINGSETS_ARRAY AF_BLUE_STRINGSET_MAX_LEN:
 
   AF_BLUE_STRINGSET_ADLM
-    { AF_BLUE_STRING_ADLAM_CAPITAL_TOP,    AF_BLUE_PROPERTY_LATIN_TOP        }
-    { AF_BLUE_STRING_ADLAM_CAPITAL_BOTTOM, 0                                 }
+    { AF_BLUE_STRING_ADLAM_CAPITAL_TOP,    AF_BLUE_PROPERTY_LATIN_TOP          
  }
+    { AF_BLUE_STRING_ADLAM_CAPITAL_BOTTOM, 
AF_BLUE_PROPERTY_LATIN_CAPITAL_BOTTOM }
     { AF_BLUE_STRING_ADLAM_SMALL_TOP,      AF_BLUE_PROPERTY_LATIN_TOP      |
-                                           AF_BLUE_PROPERTY_LATIN_X_HEIGHT   }
-    { AF_BLUE_STRING_ADLAM_SMALL_BOTTOM,   0                                 }
-    { AF_BLUE_STRING_MAX,                  0                                 }
+                                           AF_BLUE_PROPERTY_LATIN_X_HEIGHT     
  }
+    { AF_BLUE_STRING_ADLAM_SMALL_BOTTOM,   AF_BLUE_PROPERTY_LATIN_SMALL_BOTTOM 
  }
+    { AF_BLUE_STRING_MAX,                  0                                   
  }
 
   AF_BLUE_STRINGSET_ARAB
     { AF_BLUE_STRING_ARABIC_TOP,    AF_BLUE_PROPERTY_LATIN_TOP     }
@@ -713,14 +713,14 @@ AF_BLUE_STRINGSET_ENUM AF_BLUE_STRINGSETS_ARRAY 
AF_BLUE_STRINGSET_MAX_LEN:
     { AF_BLUE_STRING_MAX,           0                              }
 
   AF_BLUE_STRINGSET_ARMN
-    { AF_BLUE_STRING_ARMENIAN_CAPITAL_TOP,     AF_BLUE_PROPERTY_LATIN_TOP      
  }
-    { AF_BLUE_STRING_ARMENIAN_CAPITAL_BOTTOM,  0                               
  }
-    { AF_BLUE_STRING_ARMENIAN_SMALL_ASCENDER,  AF_BLUE_PROPERTY_LATIN_TOP      
  }
+    { AF_BLUE_STRING_ARMENIAN_CAPITAL_TOP,     AF_BLUE_PROPERTY_LATIN_TOP      
      }
+    { AF_BLUE_STRING_ARMENIAN_CAPITAL_BOTTOM,  
AF_BLUE_PROPERTY_LATIN_CAPITAL_BOTTOM }
+    { AF_BLUE_STRING_ARMENIAN_SMALL_ASCENDER,  AF_BLUE_PROPERTY_LATIN_TOP      
      }
     { AF_BLUE_STRING_ARMENIAN_SMALL_TOP,       AF_BLUE_PROPERTY_LATIN_TOP      
|
-                                               AF_BLUE_PROPERTY_LATIN_X_HEIGHT 
  }
-    { AF_BLUE_STRING_ARMENIAN_SMALL_BOTTOM,    0                               
  }
-    { AF_BLUE_STRING_ARMENIAN_SMALL_DESCENDER, 0                               
  }
-    { AF_BLUE_STRING_MAX,                      0                               
  }
+                                               AF_BLUE_PROPERTY_LATIN_X_HEIGHT 
      }
+    { AF_BLUE_STRING_ARMENIAN_SMALL_BOTTOM,    
AF_BLUE_PROPERTY_LATIN_SMALL_BOTTOM   }
+    { AF_BLUE_STRING_ARMENIAN_SMALL_DESCENDER, 0                               
      }
+    { AF_BLUE_STRING_MAX,                      0                               
      }
 
   AF_BLUE_STRINGSET_AVST
     { AF_BLUE_STRING_AVESTAN_TOP,    AF_BLUE_PROPERTY_LATIN_TOP }
@@ -756,14 +756,14 @@ AF_BLUE_STRINGSET_ENUM AF_BLUE_STRINGSETS_ARRAY 
AF_BLUE_STRINGSET_MAX_LEN:
     { AF_BLUE_STRING_MAX,              0                          }
 
   AF_BLUE_STRINGSET_CANS
-    { AF_BLUE_STRING_CANADIAN_SYLLABICS_TOP,          
AF_BLUE_PROPERTY_LATIN_TOP        }
-    { AF_BLUE_STRING_CANADIAN_SYLLABICS_BOTTOM,       0                        
         }
+    { AF_BLUE_STRING_CANADIAN_SYLLABICS_TOP,          
AF_BLUE_PROPERTY_LATIN_TOP          }
+    { AF_BLUE_STRING_CANADIAN_SYLLABICS_BOTTOM,       0                        
           }
     { AF_BLUE_STRING_CANADIAN_SYLLABICS_SMALL_TOP,    
AF_BLUE_PROPERTY_LATIN_TOP      |
-                                                      
AF_BLUE_PROPERTY_LATIN_X_HEIGHT   }
-    { AF_BLUE_STRING_CANADIAN_SYLLABICS_SMALL_BOTTOM, 0                        
         }
-    { AF_BLUE_STRING_CANADIAN_SYLLABICS_SUPS_TOP,     
AF_BLUE_PROPERTY_LATIN_TOP        }
-    { AF_BLUE_STRING_CANADIAN_SYLLABICS_SUPS_BOTTOM,  0                        
         }
-    { AF_BLUE_STRING_MAX,                             0                        
         }
+                                                      
AF_BLUE_PROPERTY_LATIN_X_HEIGHT     }
+    { AF_BLUE_STRING_CANADIAN_SYLLABICS_SMALL_BOTTOM, 
AF_BLUE_PROPERTY_LATIN_SMALL_BOTTOM }
+    { AF_BLUE_STRING_CANADIAN_SYLLABICS_SUPS_TOP,     
AF_BLUE_PROPERTY_LATIN_TOP          }
+    { AF_BLUE_STRING_CANADIAN_SYLLABICS_SUPS_BOTTOM,  0                        
           }
+    { AF_BLUE_STRING_MAX,                             0                        
           }
 
   AF_BLUE_STRINGSET_CARI
     { AF_BLUE_STRING_CARIAN_TOP,    AF_BLUE_PROPERTY_LATIN_TOP }
@@ -781,12 +781,12 @@ AF_BLUE_STRINGSET_ENUM AF_BLUE_STRINGSETS_ARRAY 
AF_BLUE_STRINGSET_MAX_LEN:
     { AF_BLUE_STRING_MAX,                      0                               
  }
 
   AF_BLUE_STRINGSET_COPT
-    { AF_BLUE_STRING_COPTIC_CAPITAL_TOP,    AF_BLUE_PROPERTY_LATIN_TOP        }
-    { AF_BLUE_STRING_COPTIC_CAPITAL_BOTTOM, 0                                 }
+    { AF_BLUE_STRING_COPTIC_CAPITAL_TOP,    AF_BLUE_PROPERTY_LATIN_TOP         
   }
+    { AF_BLUE_STRING_COPTIC_CAPITAL_BOTTOM, 
AF_BLUE_PROPERTY_LATIN_CAPITAL_BOTTOM }
     { AF_BLUE_STRING_COPTIC_SMALL_TOP,      AF_BLUE_PROPERTY_LATIN_TOP      |
-                                            AF_BLUE_PROPERTY_LATIN_X_HEIGHT   }
-    { AF_BLUE_STRING_COPTIC_SMALL_BOTTOM,   0                                 }
-    { AF_BLUE_STRING_MAX,                   0                                 }
+                                            AF_BLUE_PROPERTY_LATIN_X_HEIGHT    
   }
+    { AF_BLUE_STRING_COPTIC_SMALL_BOTTOM,   
AF_BLUE_PROPERTY_LATIN_SMALL_BOTTOM   }
+    { AF_BLUE_STRING_MAX,                   0                                  
   }
 
   AF_BLUE_STRINGSET_CPRT
     { AF_BLUE_STRING_CYPRIOT_TOP,    AF_BLUE_PROPERTY_LATIN_TOP }
@@ -796,13 +796,13 @@ AF_BLUE_STRINGSET_ENUM AF_BLUE_STRINGSETS_ARRAY 
AF_BLUE_STRINGSET_MAX_LEN:
     { AF_BLUE_STRING_MAX,            0                          }
 
   AF_BLUE_STRINGSET_CYRL
-    { AF_BLUE_STRING_CYRILLIC_CAPITAL_TOP,     AF_BLUE_PROPERTY_LATIN_TOP      
  }
-    { AF_BLUE_STRING_CYRILLIC_CAPITAL_BOTTOM,  0                               
  }
+    { AF_BLUE_STRING_CYRILLIC_CAPITAL_TOP,     AF_BLUE_PROPERTY_LATIN_TOP      
      }
+    { AF_BLUE_STRING_CYRILLIC_CAPITAL_BOTTOM,  
AF_BLUE_PROPERTY_LATIN_CAPITAL_BOTTOM }
     { AF_BLUE_STRING_CYRILLIC_SMALL,           AF_BLUE_PROPERTY_LATIN_TOP      
|
-                                               AF_BLUE_PROPERTY_LATIN_X_HEIGHT 
  }
-    { AF_BLUE_STRING_CYRILLIC_SMALL,           0                               
  }
-    { AF_BLUE_STRING_CYRILLIC_SMALL_DESCENDER, 0                               
  }
-    { AF_BLUE_STRING_MAX,                      0                               
  }
+                                               AF_BLUE_PROPERTY_LATIN_X_HEIGHT 
      }
+    { AF_BLUE_STRING_CYRILLIC_SMALL,           0                               
      }
+    { AF_BLUE_STRING_CYRILLIC_SMALL_DESCENDER, 0                               
      }
+    { AF_BLUE_STRING_MAX,                      0                               
      }
 
   AF_BLUE_STRINGSET_DEVA
     { AF_BLUE_STRING_DEVANAGARI_TOP,    AF_BLUE_PROPERTY_LATIN_TOP        }
@@ -815,12 +815,12 @@ AF_BLUE_STRINGSET_ENUM AF_BLUE_STRINGSETS_ARRAY 
AF_BLUE_STRINGSET_MAX_LEN:
     { AF_BLUE_STRING_MAX,               0                                 }
 
   AF_BLUE_STRINGSET_DSRT
-    { AF_BLUE_STRING_DESERET_CAPITAL_TOP,    AF_BLUE_PROPERTY_LATIN_TOP        
}
-    { AF_BLUE_STRING_DESERET_CAPITAL_BOTTOM, 0                                 
}
+    { AF_BLUE_STRING_DESERET_CAPITAL_TOP,    AF_BLUE_PROPERTY_LATIN_TOP        
    }
+    { AF_BLUE_STRING_DESERET_CAPITAL_BOTTOM, 
AF_BLUE_PROPERTY_LATIN_CAPITAL_BOTTOM }
     { AF_BLUE_STRING_DESERET_SMALL_TOP,      AF_BLUE_PROPERTY_LATIN_TOP      |
-                                             AF_BLUE_PROPERTY_LATIN_X_HEIGHT   
}
-    { AF_BLUE_STRING_DESERET_SMALL_BOTTOM,   0                                 
}
-    { AF_BLUE_STRING_MAX,                    0                                 
}
+                                             AF_BLUE_PROPERTY_LATIN_X_HEIGHT   
    }
+    { AF_BLUE_STRING_DESERET_SMALL_BOTTOM,   
AF_BLUE_PROPERTY_LATIN_SMALL_BOTTOM   }
+    { AF_BLUE_STRING_MAX,                    0                                 
    }
 
   AF_BLUE_STRINGSET_ETHI
     { AF_BLUE_STRING_ETHIOPIC_TOP,    AF_BLUE_PROPERTY_LATIN_TOP }
@@ -848,12 +848,12 @@ AF_BLUE_STRINGSET_ENUM AF_BLUE_STRINGSETS_ARRAY 
AF_BLUE_STRINGSET_MAX_LEN:
     { AF_BLUE_STRING_MAX,                         0                            
     }
 
   AF_BLUE_STRINGSET_GLAG
-    { AF_BLUE_STRING_GLAGOLITIC_CAPITAL_TOP,    AF_BLUE_PROPERTY_LATIN_TOP     
   }
-    { AF_BLUE_STRING_GLAGOLITIC_CAPITAL_BOTTOM, 0                              
   }
+    { AF_BLUE_STRING_GLAGOLITIC_CAPITAL_TOP,    AF_BLUE_PROPERTY_LATIN_TOP     
       }
+    { AF_BLUE_STRING_GLAGOLITIC_CAPITAL_BOTTOM, 
AF_BLUE_PROPERTY_LATIN_CAPITAL_BOTTOM }
     { AF_BLUE_STRING_GLAGOLITIC_SMALL_TOP,      AF_BLUE_PROPERTY_LATIN_TOP     
 |
-                                                
AF_BLUE_PROPERTY_LATIN_X_HEIGHT   }
-    { AF_BLUE_STRING_GLAGOLITIC_SMALL_BOTTOM,   0                              
   }
-    { AF_BLUE_STRING_MAX,                       0                              
   }
+                                                
AF_BLUE_PROPERTY_LATIN_X_HEIGHT       }
+    { AF_BLUE_STRING_GLAGOLITIC_SMALL_BOTTOM,   
AF_BLUE_PROPERTY_LATIN_SMALL_BOTTOM   }
+    { AF_BLUE_STRING_MAX,                       0                              
       }
 
   AF_BLUE_STRINGSET_GOTH
     { AF_BLUE_STRING_GOTHIC_TOP,    AF_BLUE_PROPERTY_LATIN_TOP }
@@ -861,14 +861,14 @@ AF_BLUE_STRINGSET_ENUM AF_BLUE_STRINGSETS_ARRAY 
AF_BLUE_STRINGSET_MAX_LEN:
     { AF_BLUE_STRING_MAX,           0                          }
 
   AF_BLUE_STRINGSET_GREK
-    { AF_BLUE_STRING_GREEK_CAPITAL_TOP,     AF_BLUE_PROPERTY_LATIN_TOP        }
-    { AF_BLUE_STRING_GREEK_CAPITAL_BOTTOM,  0                                 }
-    { AF_BLUE_STRING_GREEK_SMALL_BETA_TOP,  AF_BLUE_PROPERTY_LATIN_TOP        }
+    { AF_BLUE_STRING_GREEK_CAPITAL_TOP,     AF_BLUE_PROPERTY_LATIN_TOP         
   }
+    { AF_BLUE_STRING_GREEK_CAPITAL_BOTTOM,  
AF_BLUE_PROPERTY_LATIN_CAPITAL_BOTTOM }
+    { AF_BLUE_STRING_GREEK_SMALL_BETA_TOP,  AF_BLUE_PROPERTY_LATIN_TOP         
   }
     { AF_BLUE_STRING_GREEK_SMALL,           AF_BLUE_PROPERTY_LATIN_TOP      |
-                                            AF_BLUE_PROPERTY_LATIN_X_HEIGHT   }
-    { AF_BLUE_STRING_GREEK_SMALL,           0                                 }
-    { AF_BLUE_STRING_GREEK_SMALL_DESCENDER, 0                                 }
-    { AF_BLUE_STRING_MAX,                   0                                 }
+                                            AF_BLUE_PROPERTY_LATIN_X_HEIGHT    
   }
+    { AF_BLUE_STRING_GREEK_SMALL,           0                                  
   }
+    { AF_BLUE_STRING_GREEK_SMALL_DESCENDER, 0                                  
   }
+    { AF_BLUE_STRING_MAX,                   0                                  
   }
 
   AF_BLUE_STRINGSET_GUJR
     { AF_BLUE_STRING_GUJARATI_TOP,       AF_BLUE_PROPERTY_LATIN_TOP      |
@@ -935,34 +935,34 @@ AF_BLUE_STRINGSET_ENUM AF_BLUE_STRINGSETS_ARRAY 
AF_BLUE_STRINGSET_MAX_LEN:
     { AF_BLUE_STRING_MAX,                0                                 }
 
   AF_BLUE_STRINGSET_LATN
-    { AF_BLUE_STRING_LATIN_CAPITAL_TOP,     AF_BLUE_PROPERTY_LATIN_TOP        }
-    { AF_BLUE_STRING_LATIN_CAPITAL_BOTTOM,  0                                 }
-    { AF_BLUE_STRING_LATIN_SMALL_F_TOP,     AF_BLUE_PROPERTY_LATIN_TOP        }
+    { AF_BLUE_STRING_LATIN_CAPITAL_TOP,     AF_BLUE_PROPERTY_LATIN_TOP         
   }
+    { AF_BLUE_STRING_LATIN_CAPITAL_BOTTOM,  
AF_BLUE_PROPERTY_LATIN_CAPITAL_BOTTOM }
+    { AF_BLUE_STRING_LATIN_SMALL_F_TOP,     AF_BLUE_PROPERTY_LATIN_TOP         
   }
     { AF_BLUE_STRING_LATIN_SMALL_TOP,       AF_BLUE_PROPERTY_LATIN_TOP      |
-                                            AF_BLUE_PROPERTY_LATIN_X_HEIGHT   }
-    { AF_BLUE_STRING_LATIN_SMALL_BOTTOM,    0                                 }
-    { AF_BLUE_STRING_LATIN_SMALL_DESCENDER, 0                                 }
-    { AF_BLUE_STRING_MAX,                   0                                 }
+                                            AF_BLUE_PROPERTY_LATIN_X_HEIGHT    
   }
+    { AF_BLUE_STRING_LATIN_SMALL_BOTTOM,    
AF_BLUE_PROPERTY_LATIN_SMALL_BOTTOM   }
+    { AF_BLUE_STRING_LATIN_SMALL_DESCENDER, 0                                  
   }
+    { AF_BLUE_STRING_MAX,                   0                                  
   }
 
   AF_BLUE_STRINGSET_LATB
-    { AF_BLUE_STRING_LATIN_SUBS_CAPITAL_TOP,     AF_BLUE_PROPERTY_LATIN_TOP    
    }
-    { AF_BLUE_STRING_LATIN_SUBS_CAPITAL_BOTTOM,  0                             
    }
-    { AF_BLUE_STRING_LATIN_SUBS_SMALL_F_TOP,     AF_BLUE_PROPERTY_LATIN_TOP    
    }
+    { AF_BLUE_STRING_LATIN_SUBS_CAPITAL_TOP,     AF_BLUE_PROPERTY_LATIN_TOP    
        }
+    { AF_BLUE_STRING_LATIN_SUBS_CAPITAL_BOTTOM,  
AF_BLUE_PROPERTY_LATIN_CAPITAL_BOTTOM }
+    { AF_BLUE_STRING_LATIN_SUBS_SMALL_F_TOP,     AF_BLUE_PROPERTY_LATIN_TOP    
        }
     { AF_BLUE_STRING_LATIN_SUBS_SMALL,           AF_BLUE_PROPERTY_LATIN_TOP    
  |
-                                                 
AF_BLUE_PROPERTY_LATIN_X_HEIGHT   }
-    { AF_BLUE_STRING_LATIN_SUBS_SMALL,           0                             
    }
-    { AF_BLUE_STRING_LATIN_SUBS_SMALL_DESCENDER, 0                             
    }
-    { AF_BLUE_STRING_MAX,                        0                             
    }
+                                                 
AF_BLUE_PROPERTY_LATIN_X_HEIGHT       }
+    { AF_BLUE_STRING_LATIN_SUBS_SMALL,           0                             
        }
+    { AF_BLUE_STRING_LATIN_SUBS_SMALL_DESCENDER, 0                             
        }
+    { AF_BLUE_STRING_MAX,                        0                             
        }
 
   AF_BLUE_STRINGSET_LATP
-    { AF_BLUE_STRING_LATIN_SUPS_CAPITAL_TOP,     AF_BLUE_PROPERTY_LATIN_TOP    
    }
-    { AF_BLUE_STRING_LATIN_SUPS_CAPITAL_BOTTOM,  0                             
    }
-    { AF_BLUE_STRING_LATIN_SUPS_SMALL_F_TOP,     AF_BLUE_PROPERTY_LATIN_TOP    
    }
+    { AF_BLUE_STRING_LATIN_SUPS_CAPITAL_TOP,     AF_BLUE_PROPERTY_LATIN_TOP    
        }
+    { AF_BLUE_STRING_LATIN_SUPS_CAPITAL_BOTTOM,  
AF_BLUE_PROPERTY_LATIN_CAPITAL_BOTTOM }
+    { AF_BLUE_STRING_LATIN_SUPS_SMALL_F_TOP,     AF_BLUE_PROPERTY_LATIN_TOP    
        }
     { AF_BLUE_STRING_LATIN_SUPS_SMALL,           AF_BLUE_PROPERTY_LATIN_TOP    
  |
-                                                 
AF_BLUE_PROPERTY_LATIN_X_HEIGHT   }
-    { AF_BLUE_STRING_LATIN_SUPS_SMALL,           0                             
    }
-    { AF_BLUE_STRING_LATIN_SUPS_SMALL_DESCENDER, 0                             
    }
-    { AF_BLUE_STRING_MAX,                        0                             
    }
+                                                 
AF_BLUE_PROPERTY_LATIN_X_HEIGHT       }
+    { AF_BLUE_STRING_LATIN_SUPS_SMALL,           0                             
        }
+    { AF_BLUE_STRING_LATIN_SUPS_SMALL_DESCENDER, 0                             
        }
+    { AF_BLUE_STRING_MAX,                        0                             
        }
 
   AF_BLUE_STRINGSET_LISU
     { AF_BLUE_STRING_LISU_TOP,    AF_BLUE_PROPERTY_LATIN_TOP }
@@ -975,15 +975,15 @@ AF_BLUE_STRINGSET_ENUM AF_BLUE_STRINGSETS_ARRAY 
AF_BLUE_STRINGSET_MAX_LEN:
     { AF_BLUE_STRING_MAX,              0                          }
 
   AF_BLUE_STRINGSET_MEDF
-    { AF_BLUE_STRING_MEDEFAIDRIN_CAPITAL_TOP,     AF_BLUE_PROPERTY_LATIN_TOP   
     }
-    { AF_BLUE_STRING_MEDEFAIDRIN_CAPITAL_BOTTOM,  0                            
     }
-    { AF_BLUE_STRING_MEDEFAIDRIN_SMALL_F_TOP,     AF_BLUE_PROPERTY_LATIN_TOP   
     }
+    { AF_BLUE_STRING_MEDEFAIDRIN_CAPITAL_TOP,     AF_BLUE_PROPERTY_LATIN_TOP   
         }
+    { AF_BLUE_STRING_MEDEFAIDRIN_CAPITAL_BOTTOM,  
AF_BLUE_PROPERTY_LATIN_CAPITAL_BOTTOM }
+    { AF_BLUE_STRING_MEDEFAIDRIN_SMALL_F_TOP,     AF_BLUE_PROPERTY_LATIN_TOP   
         }
     { AF_BLUE_STRING_MEDEFAIDRIN_SMALL_TOP,       AF_BLUE_PROPERTY_LATIN_TOP   
   |
-                                                  
AF_BLUE_PROPERTY_LATIN_X_HEIGHT   }
-    { AF_BLUE_STRING_MEDEFAIDRIN_SMALL_BOTTOM,    0                            
     }
-    { AF_BLUE_STRING_MEDEFAIDRIN_SMALL_DESCENDER, 0                            
     }
-    { AF_BLUE_STRING_MEDEFAIDRIN_DIGIT_TOP,       AF_BLUE_PROPERTY_LATIN_TOP   
     }
-    { AF_BLUE_STRING_MAX,                         0                            
     }
+                                                  
AF_BLUE_PROPERTY_LATIN_X_HEIGHT       }
+    { AF_BLUE_STRING_MEDEFAIDRIN_SMALL_BOTTOM,    
AF_BLUE_PROPERTY_LATIN_SMALL_BOTTOM   }
+    { AF_BLUE_STRING_MEDEFAIDRIN_SMALL_DESCENDER, 0                            
         }
+    { AF_BLUE_STRING_MEDEFAIDRIN_DIGIT_TOP,       AF_BLUE_PROPERTY_LATIN_TOP   
         }
+    { AF_BLUE_STRING_MAX,                         0                            
         }
 
   AF_BLUE_STRINGSET_MONG
     { AF_BLUE_STRING_MONGOLIAN_TOP_BASE,    AF_BLUE_PROPERTY_LATIN_TOP }
@@ -999,12 +999,12 @@ AF_BLUE_STRINGSET_ENUM AF_BLUE_STRINGSETS_ARRAY 
AF_BLUE_STRINGSET_MAX_LEN:
     { AF_BLUE_STRING_MAX,               0                                 }
 
   AF_BLUE_STRINGSET_NKOO
-    { AF_BLUE_STRING_NKO_TOP,          AF_BLUE_PROPERTY_LATIN_TOP        }
-    { AF_BLUE_STRING_NKO_BOTTOM,       0                                 }
+    { AF_BLUE_STRING_NKO_TOP,          AF_BLUE_PROPERTY_LATIN_TOP          }
+    { AF_BLUE_STRING_NKO_BOTTOM,       0                                   }
     { AF_BLUE_STRING_NKO_SMALL_TOP,    AF_BLUE_PROPERTY_LATIN_TOP      |
-                                       AF_BLUE_PROPERTY_LATIN_X_HEIGHT   }
-    { AF_BLUE_STRING_NKO_SMALL_BOTTOM, 0                                 }
-    { AF_BLUE_STRING_MAX,              0                                 }
+                                       AF_BLUE_PROPERTY_LATIN_X_HEIGHT     }
+    { AF_BLUE_STRING_NKO_SMALL_BOTTOM, AF_BLUE_PROPERTY_LATIN_SMALL_BOTTOM }
+    { AF_BLUE_STRING_MAX,              0                                   }
 
   AF_BLUE_STRINGSET_NONE
     { AF_BLUE_STRING_MAX, 0 }
@@ -1020,15 +1020,15 @@ AF_BLUE_STRINGSET_ENUM AF_BLUE_STRINGSETS_ARRAY 
AF_BLUE_STRINGSET_MAX_LEN:
     { AF_BLUE_STRING_MAX,               0                          }
 
   AF_BLUE_STRINGSET_OSGE
-    { AF_BLUE_STRING_OSAGE_CAPITAL_TOP,       AF_BLUE_PROPERTY_LATIN_TOP       
}
-    { AF_BLUE_STRING_OSAGE_CAPITAL_BOTTOM,    0                                
}
-    { AF_BLUE_STRING_OSAGE_CAPITAL_DESCENDER, 0                                
}
-    { AF_BLUE_STRING_OSAGE_SMALL_TOP,         AF_BLUE_PROPERTY_LATIN_TOP     |
-                                              AF_BLUE_PROPERTY_LATIN_X_HEIGHT  
}
-    { AF_BLUE_STRING_OSAGE_SMALL_BOTTOM,      0                                
}
-    { AF_BLUE_STRING_OSAGE_SMALL_ASCENDER,    AF_BLUE_PROPERTY_LATIN_TOP       
}
-    { AF_BLUE_STRING_OSAGE_SMALL_DESCENDER,   0                                
}
-    { AF_BLUE_STRING_MAX,                     0                                
}
+    { AF_BLUE_STRING_OSAGE_CAPITAL_TOP,       AF_BLUE_PROPERTY_LATIN_TOP       
     }
+    { AF_BLUE_STRING_OSAGE_CAPITAL_BOTTOM,    
AF_BLUE_PROPERTY_LATIN_CAPITAL_BOTTOM }
+    { AF_BLUE_STRING_OSAGE_CAPITAL_DESCENDER, 0                                
     }
+    { AF_BLUE_STRING_OSAGE_SMALL_TOP,         AF_BLUE_PROPERTY_LATIN_TOP      |
+                                              AF_BLUE_PROPERTY_LATIN_X_HEIGHT  
     }
+    { AF_BLUE_STRING_OSAGE_SMALL_BOTTOM,      
AF_BLUE_PROPERTY_LATIN_SMALL_BOTTOM   }
+    { AF_BLUE_STRING_OSAGE_SMALL_ASCENDER,    AF_BLUE_PROPERTY_LATIN_TOP       
     }
+    { AF_BLUE_STRING_OSAGE_SMALL_DESCENDER,   0                                
     }
+    { AF_BLUE_STRING_MAX,                     0                                
     }
 
   AF_BLUE_STRINGSET_OSMA
     { AF_BLUE_STRING_OSMANYA_TOP,    AF_BLUE_PROPERTY_LATIN_TOP }
@@ -1047,13 +1047,13 @@ AF_BLUE_STRINGSET_ENUM AF_BLUE_STRINGSETS_ARRAY 
AF_BLUE_STRINGSET_MAX_LEN:
     { AF_BLUE_STRING_MAX,               0                          }
 
   AF_BLUE_STRINGSET_SHAW
-    { AF_BLUE_STRING_SHAVIAN_TOP,          AF_BLUE_PROPERTY_LATIN_TOP        }
-    { AF_BLUE_STRING_SHAVIAN_BOTTOM,       0                                 }
-    { AF_BLUE_STRING_SHAVIAN_DESCENDER,    0                                 }
+    { AF_BLUE_STRING_SHAVIAN_TOP,          AF_BLUE_PROPERTY_LATIN_TOP          
}
+    { AF_BLUE_STRING_SHAVIAN_BOTTOM,       0                                   
}
+    { AF_BLUE_STRING_SHAVIAN_DESCENDER,    0                                   
}
     { AF_BLUE_STRING_SHAVIAN_SMALL_TOP,    AF_BLUE_PROPERTY_LATIN_TOP      |
-                                           AF_BLUE_PROPERTY_LATIN_X_HEIGHT   }
-    { AF_BLUE_STRING_SHAVIAN_SMALL_BOTTOM, 0                                 }
-    { AF_BLUE_STRING_MAX,                  0                                 }
+                                           AF_BLUE_PROPERTY_LATIN_X_HEIGHT     
}
+    { AF_BLUE_STRING_SHAVIAN_SMALL_BOTTOM, AF_BLUE_PROPERTY_LATIN_SMALL_BOTTOM 
}
+    { AF_BLUE_STRING_MAX,                  0                                   
}
 
   AF_BLUE_STRINGSET_SINH
     { AF_BLUE_STRING_SINHALA_TOP,       AF_BLUE_PROPERTY_LATIN_TOP }
diff --git a/src/autofit/afblue.h b/src/autofit/afblue.h
index 2aa9d0984..0b289eab1 100644
--- a/src/autofit/afblue.h
+++ b/src/autofit/afblue.h
@@ -314,14 +314,17 @@ FT_BEGIN_HEADER
   /* Properties are specific to a writing system.  We assume that a given  */
   /* blue string can't be used in more than a single writing system, which */
   /* is a safe bet.                                                        */
-#define AF_BLUE_PROPERTY_LATIN_TOP       ( 1U << 0 )  /* must have value 1 */
+#define AF_BLUE_PROPERTY_LATIN_TOP       ( 1U << 0 )    /* must be value 1 */
 #define AF_BLUE_PROPERTY_LATIN_SUB_TOP   ( 1U << 1 )
 #define AF_BLUE_PROPERTY_LATIN_NEUTRAL   ( 1U << 2 )
 #define AF_BLUE_PROPERTY_LATIN_X_HEIGHT  ( 1U << 3 )
 #define AF_BLUE_PROPERTY_LATIN_LONG      ( 1U << 4 )
 
-#define AF_BLUE_PROPERTY_CJK_TOP    ( 1U << 0 )       /* must have value 1 */
-#define AF_BLUE_PROPERTY_CJK_HORIZ  ( 1U << 1 )       /* must have value 2 */
+#define AF_BLUE_PROPERTY_LATIN_CAPITAL_BOTTOM  ( 1U << 5 )
+#define AF_BLUE_PROPERTY_LATIN_SMALL_BOTTOM    ( 1U << 6 )
+
+#define AF_BLUE_PROPERTY_CJK_TOP    ( 1U << 0 )         /* must be value 1 */
+#define AF_BLUE_PROPERTY_CJK_HORIZ  ( 1U << 1 )         /* must be value 2 */
 #define AF_BLUE_PROPERTY_CJK_RIGHT  AF_BLUE_PROPERTY_CJK_TOP
 
 
diff --git a/src/autofit/afblue.hin b/src/autofit/afblue.hin
index 38031505a..7bf96c809 100644
--- a/src/autofit/afblue.hin
+++ b/src/autofit/afblue.hin
@@ -99,14 +99,17 @@ FT_BEGIN_HEADER
   /* Properties are specific to a writing system.  We assume that a given  */
   /* blue string can't be used in more than a single writing system, which */
   /* is a safe bet.                                                        */
-#define AF_BLUE_PROPERTY_LATIN_TOP       ( 1U << 0 )  /* must have value 1 */
+#define AF_BLUE_PROPERTY_LATIN_TOP       ( 1U << 0 )    /* must be value 1 */
 #define AF_BLUE_PROPERTY_LATIN_SUB_TOP   ( 1U << 1 )
 #define AF_BLUE_PROPERTY_LATIN_NEUTRAL   ( 1U << 2 )
 #define AF_BLUE_PROPERTY_LATIN_X_HEIGHT  ( 1U << 3 )
 #define AF_BLUE_PROPERTY_LATIN_LONG      ( 1U << 4 )
 
-#define AF_BLUE_PROPERTY_CJK_TOP    ( 1U << 0 )       /* must have value 1 */
-#define AF_BLUE_PROPERTY_CJK_HORIZ  ( 1U << 1 )       /* must have value 2 */
+#define AF_BLUE_PROPERTY_LATIN_CAPITAL_BOTTOM  ( 1U << 5 )
+#define AF_BLUE_PROPERTY_LATIN_SMALL_BOTTOM    ( 1U << 6 )
+
+#define AF_BLUE_PROPERTY_CJK_TOP    ( 1U << 0 )         /* must be value 1 */
+#define AF_BLUE_PROPERTY_CJK_HORIZ  ( 1U << 1 )         /* must be value 2 */
 #define AF_BLUE_PROPERTY_CJK_RIGHT  AF_BLUE_PROPERTY_CJK_TOP
 
 
diff --git a/src/autofit/aflatin.c b/src/autofit/aflatin.c
index 4ccdbd5f9..fadda0a1b 100644
--- a/src/autofit/aflatin.c
+++ b/src/autofit/aflatin.c
@@ -399,6 +399,20 @@
             FT_TRACE5(( "long" ));
           }
 
+          if ( AF_LATIN_IS_CAPITAL_BOTTOM_BLUE( bs ) )
+          {
+            if ( have_flag )
+              FT_TRACE5(( ", " ));
+            FT_TRACE5(( "capital bottom" ));
+          }
+
+          if ( AF_LATIN_IS_SMALL_BOTTOM_BLUE( bs ) )
+          {
+            if ( have_flag )
+              FT_TRACE5(( ", " ));
+            FT_TRACE5(( "small bottom" ));
+          }
+
           FT_TRACE5(( ")" ));
         }
 
@@ -951,6 +965,10 @@
         blue->flags |= AF_LATIN_BLUE_SUB_TOP;
       if ( AF_LATIN_IS_NEUTRAL_BLUE( bs ) )
         blue->flags |= AF_LATIN_BLUE_NEUTRAL;
+      if ( AF_LATIN_IS_CAPITAL_BOTTOM_BLUE( bs ) )
+        blue->flags |= AF_LATIN_BLUE_BOTTOM;
+      if ( AF_LATIN_IS_SMALL_BOTTOM_BLUE( bs ) )
+        blue->flags |= AF_LATIN_BLUE_BOTTOM_SMALL;
 
       /*
        * The following flag is used later to adjust the y and x scales
diff --git a/src/autofit/aflatin.h b/src/autofit/aflatin.h
index 54e506150..cd411a09a 100644
--- a/src/autofit/aflatin.h
+++ b/src/autofit/aflatin.h
@@ -61,17 +61,26 @@ FT_BEGIN_HEADER
           ( (b)->properties & AF_BLUE_PROPERTY_LATIN_X_HEIGHT )
 #define AF_LATIN_IS_LONG_BLUE( b ) \
           ( (b)->properties & AF_BLUE_PROPERTY_LATIN_LONG )
+#define AF_LATIN_IS_CAPITAL_BOTTOM_BLUE( b ) \
+          ( (b)->properties & AF_BLUE_PROPERTY_LATIN_CAPITAL_BOTTOM )
+#define AF_LATIN_IS_SMALL_BOTTOM_BLUE( b ) \
+          ( (b)->properties & AF_BLUE_PROPERTY_LATIN_SMALL_BOTTOM )
 
 #define AF_LATIN_MAX_WIDTHS  16
 
 
-#define AF_LATIN_BLUE_ACTIVE      ( 1U << 0 ) /* zone height is <= 3/4px   */
-#define AF_LATIN_BLUE_TOP         ( 1U << 1 ) /* we have a top blue zone   */
-#define AF_LATIN_BLUE_SUB_TOP     ( 1U << 2 ) /* we have a subscript top   */
-                                              /* blue zone                 */
-#define AF_LATIN_BLUE_NEUTRAL     ( 1U << 3 ) /* we have neutral blue zone */
-#define AF_LATIN_BLUE_ADJUSTMENT  ( 1U << 4 ) /* used for scale adjustment */
-                                              /* optimization              */
+#define AF_LATIN_BLUE_ACTIVE        ( 1U << 0 ) /* zone height is <= 3/4px */
+#define AF_LATIN_BLUE_TOP           ( 1U << 1 ) /* we have a top blue zone */
+#define AF_LATIN_BLUE_SUB_TOP       ( 1U << 2 ) /* we have a subscript     */
+                                                /* top blue zone           */
+#define AF_LATIN_BLUE_NEUTRAL       ( 1U << 3 ) /* we have a neutral blue  */
+                                                /* zone                    */
+#define AF_LATIN_BLUE_ADJUSTMENT    ( 1U << 4 ) /* used for scale adjustm. */
+                                                /* optimization            */
+#define AF_LATIN_BLUE_BOTTOM        ( 1U << 5 ) /* we have a capital       */
+                                                /* letter bottom blue zone */
+#define AF_LATIN_BLUE_BOTTOM_SMALL  ( 1U << 6 ) /* we have a small letter  */
+                                                /* bottom blue zone        */
 
 
   typedef struct  AF_LatinBlueRec_



reply via email to

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